summaryrefslogtreecommitdiff
path: root/devel
diff options
context:
space:
mode:
Diffstat (limited to 'devel')
-rw-r--r--devel/Makefile35
-rw-r--r--devel/bzr/Makefile40
-rw-r--r--devel/bzr/distinfo3
-rw-r--r--devel/bzr/files/patch-ssh_hostname167
-rw-r--r--devel/bzr/pkg-descr7
-rw-r--r--devel/chromium-gn/Makefile30
-rw-r--r--devel/chromium-gn/pkg-descr4
-rw-r--r--devel/electron4/Makefile287
-rw-r--r--devel/electron4/Makefile.tests49
-rw-r--r--devel/electron4/Makefile.version4
-rw-r--r--devel/electron4/distinfo15
-rw-r--r--devel/electron4/files/apply-electron-patches.sh20
-rw-r--r--devel/electron4/files/package-lock.json12235
-rw-r--r--devel/electron4/files/package.json76
-rw-r--r--devel/electron4/files/patch-BUILD.gn87
-rw-r--r--devel/electron4/files/patch-apps_ui_views_app__window__frame__view.cc11
-rw-r--r--devel/electron4/files/patch-ash_display_mirror__window__controller.cc14
-rw-r--r--devel/electron4/files/patch-base_BUILD.gn67
-rw-r--r--devel/electron4/files/patch-base_allocator_allocator__shim.cc11
-rw-r--r--devel/electron4/files/patch-base_allocator_allocator__shim__default__dispatch__to__glibc.cc77
-rw-r--r--devel/electron4/files/patch-base_allocator_allocator__shim__override__libc__symbols.h11
-rw-r--r--devel/electron4/files/patch-base_allocator_allocator__shim__unittest.cc36
-rw-r--r--devel/electron4/files/patch-base_allocator_partition__allocator_partition__alloc__unittest.cc11
-rw-r--r--devel/electron4/files/patch-base_debug_debugger__posix.cc57
-rw-r--r--devel/electron4/files/patch-base_debug_elf__reader__linux.cc13
-rw-r--r--devel/electron4/files/patch-base_debug_proc__maps__linux.cc11
-rw-r--r--devel/electron4/files/patch-base_debug_stack__trace.h10
-rw-r--r--devel/electron4/files/patch-base_debug_stack__trace__posix.cc40
-rw-r--r--devel/electron4/files/patch-base_debug_thread__heap__usage__tracker.cc15
-rw-r--r--devel/electron4/files/patch-base_files_file__path__unittest.cc11
-rw-r--r--devel/electron4/files/patch-base_files_file__path__watcher__kqueue.h13
-rw-r--r--devel/electron4/files/patch-base_files_file__path__watcher__stub.cc51
-rw-r--r--devel/electron4/files/patch-base_files_file__path__watcher__unittest.cc11
-rw-r--r--devel/electron4/files/patch-base_files_file__util.h11
-rw-r--r--devel/electron4/files/patch-base_files_memory__mapped__file__posix.cc11
-rw-r--r--devel/electron4/files/patch-base_i18n_icu__util.cc20
-rw-r--r--devel/electron4/files/patch-base_linux__util.cc18
-rw-r--r--devel/electron4/files/patch-base_logging__unittest.cc11
-rw-r--r--devel/electron4/files/patch-base_native__library__posix.cc11
-rw-r--r--devel/electron4/files/patch-base_native__library__unittest.cc11
-rw-r--r--devel/electron4/files/patch-base_posix_unix__domain__socket.cc49
-rw-r--r--devel/electron4/files/patch-base_posix_unix__domain__socket__unittest.cc12
-rw-r--r--devel/electron4/files/patch-base_process_internal__linux.cc16
-rw-r--r--devel/electron4/files/patch-base_process_internal__linux.h11
-rw-r--r--devel/electron4/files/patch-base_process_kill.h11
-rw-r--r--devel/electron4/files/patch-base_process_kill__posix.cc11
-rw-r--r--devel/electron4/files/patch-base_process_launch.cc11
-rw-r--r--devel/electron4/files/patch-base_process_launch.h20
-rw-r--r--devel/electron4/files/patch-base_process_launch__posix.cc10
-rw-r--r--devel/electron4/files/patch-base_process_memory.cc20
-rw-r--r--devel/electron4/files/patch-base_process_memory.h11
-rw-r--r--devel/electron4/files/patch-base_process_memory__unittest.cc18
-rw-r--r--devel/electron4/files/patch-base_process_process__handle.cc11
-rw-r--r--devel/electron4/files/patch-base_process_process__handle.h11
-rw-r--r--devel/electron4/files/patch-base_process_process__handle__freebsd.cc17
-rw-r--r--devel/electron4/files/patch-base_process_process__info__linux.cc39
-rw-r--r--devel/electron4/files/patch-base_process_process__iterator__freebsd.cc45
-rw-r--r--devel/electron4/files/patch-base_process_process__metrics.h112
-rw-r--r--devel/electron4/files/patch-base_process_process__metrics__freebsd.cc85
-rw-r--r--devel/electron4/files/patch-base_process_process__metrics__posix.cc20
-rw-r--r--devel/electron4/files/patch-base_profiler_stack__sampling__profiler__unittest.cc11
-rw-r--r--devel/electron4/files/patch-base_security__unittest.cc11
-rw-r--r--devel/electron4/files/patch-base_strings_safe__sprintf__unittest.cc18
-rw-r--r--devel/electron4/files/patch-base_sys__info__freebsd.cc71
-rw-r--r--devel/electron4/files/patch-base_sys__info__posix.cc38
-rw-r--r--devel/electron4/files/patch-base_test_launcher_test__launcher.cc10
-rw-r--r--devel/electron4/files/patch-base_test_test__file__util__linux.cc13
-rw-r--r--devel/electron4/files/patch-base_test_test__file__util__posix.cc11
-rw-r--r--devel/electron4/files/patch-base_third__party_libevent_BUILD.gn24
-rw-r--r--devel/electron4/files/patch-base_threading_platform__thread.h11
-rw-r--r--devel/electron4/files/patch-base_threading_platform__thread__linux.cc21
-rw-r--r--devel/electron4/files/patch-base_threading_platform__thread__posix.cc11
-rw-r--r--devel/electron4/files/patch-base_threading_thread__local__storage__unittest.cc11
-rw-r--r--devel/electron4/files/patch-base_threading_thread__task__runner__handle.cc26
-rw-r--r--devel/electron4/files/patch-base_trace__event_malloc__dump__provider.cc21
-rw-r--r--devel/electron4/files/patch-base_trace__event_process__memory__dump.cc11
-rw-r--r--devel/electron4/files/patch-base_trace__event_process__memory__dump.h11
-rw-r--r--devel/electron4/files/patch-build_config_BUILD.gn30
-rw-r--r--devel/electron4/files/patch-build_config_BUILDCONFIG.gn119
-rw-r--r--devel/electron4/files/patch-build_config_allocator.gni20
-rw-r--r--devel/electron4/files/patch-build_config_compiler_BUILD.gn89
-rw-r--r--devel/electron4/files/patch-build_config_compiler_compiler.gni11
-rw-r--r--devel/electron4/files/patch-build_config_features.gni11
-rw-r--r--devel/electron4/files/patch-build_config_linux_BUILD.gn11
-rw-r--r--devel/electron4/files/patch-build_config_linux_pkg-config.py26
-rw-r--r--devel/electron4/files/patch-build_config_sysroot.gni15
-rw-r--r--devel/electron4/files/patch-build_gn__run__binary.py11
-rw-r--r--devel/electron4/files/patch-build_linux_chrome.map29
-rw-r--r--devel/electron4/files/patch-build_linux_libpci_BUILD.gn53
-rw-r--r--devel/electron4/files/patch-build_linux_unbundle_libusb.gn27
-rw-r--r--devel/electron4/files/patch-build_linux_unbundle_replace__gn__files.py10
-rw-r--r--devel/electron4/files/patch-build_toolchain_gcc__toolchain.gni45
-rw-r--r--devel/electron4/files/patch-build_toolchain_get__concurrent__links.py17
-rw-r--r--devel/electron4/files/patch-build_toolchain_linux_BUILD.gn10
-rw-r--r--devel/electron4/files/patch-cc_BUILD.gn11
-rw-r--r--devel/electron4/files/patch-cc_layers_scrollbar__layer__impl__base.cc13
-rw-r--r--devel/electron4/files/patch-cc_trees_property__tree.cc20
-rw-r--r--devel/electron4/files/patch-chrome_app_chrome__command__ids.h11
-rw-r--r--devel/electron4/files/patch-chrome_app_chrome__main.cc19
-rw-r--r--devel/electron4/files/patch-chrome_app_chrome__main__delegate.cc74
-rw-r--r--devel/electron4/files/patch-chrome_app_chromium__strings.grd11
-rw-r--r--devel/electron4/files/patch-chrome_app_generated__resources.grd20
-rw-r--r--devel/electron4/files/patch-chrome_app_google__chrome__strings.grd11
-rw-r--r--devel/electron4/files/patch-chrome_app_settings__strings.grdp20
-rw-r--r--devel/electron4/files/patch-chrome_app_shutdown__signal__handlers__posix.cc15
-rw-r--r--devel/electron4/files/patch-chrome_app_theme_chrome__unscaled__resources.grd11
-rw-r--r--devel/electron4/files/patch-chrome_browser_about__flags.cc72
-rw-r--r--devel/electron4/files/patch-chrome_browser_after__startup__task__utils.cc11
-rw-r--r--devel/electron4/files/patch-chrome_browser_autocomplete_chrome__autocomplete__scheme__classifier.cc11
-rw-r--r--devel/electron4/files/patch-chrome_browser_background_background__mode__optimizer.cc15
-rw-r--r--devel/electron4/files/patch-chrome_browser_browser__resources.grd11
-rw-r--r--devel/electron4/files/patch-chrome_browser_chrome__browser__main.cc42
-rw-r--r--devel/electron4/files/patch-chrome_browser_chrome__browser__main__linux.cc27
-rw-r--r--devel/electron4/files/patch-chrome_browser_chrome__browser__main__posix.cc11
-rw-r--r--devel/electron4/files/patch-chrome_browser_chrome__content__browser__client.cc83
-rw-r--r--devel/electron4/files/patch-chrome_browser_chrome__content__browser__client.h17
-rw-r--r--devel/electron4/files/patch-chrome_browser_defaults.cc11
-rw-r--r--devel/electron4/files/patch-chrome_browser_devtools_devtools__eye__dropper.cc11
-rw-r--r--devel/electron4/files/patch-chrome_browser_diagnostics_diagnostics__writer.h11
-rw-r--r--devel/electron4/files/patch-chrome_browser_download_chrome__download__manager__delegate.cc20
-rw-r--r--devel/electron4/files/patch-chrome_browser_download_download__commands.cc20
-rw-r--r--devel/electron4/files/patch-chrome_browser_download_download__commands.h11
-rw-r--r--devel/electron4/files/patch-chrome_browser_download_download__prefs.cc65
-rw-r--r--devel/electron4/files/patch-chrome_browser_download_download__prefs.h20
-rw-r--r--devel/electron4/files/patch-chrome_browser_download_download__query.cc14
-rw-r--r--devel/electron4/files/patch-chrome_browser_download_download__shelf__context__menu.cc11
-rw-r--r--devel/electron4/files/patch-chrome_browser_download_download__status__updater.cc20
-rw-r--r--devel/electron4/files/patch-chrome_browser_extensions_BUILD.gn15
-rw-r--r--devel/electron4/files/patch-chrome_browser_extensions_activity__log_activity__log.cc14
-rw-r--r--devel/electron4/files/patch-chrome_browser_extensions_api_image__writer__private_removable__storage__provider.cc20
-rw-r--r--devel/electron4/files/patch-chrome_browser_extensions_api_input__ime_input__ime__api.h11
-rw-r--r--devel/electron4/files/patch-chrome_browser_extensions_api_runtime_chrome__runtime__api__delegate.cc11
-rw-r--r--devel/electron4/files/patch-chrome_browser_extensions_api_settings__private_prefs__util.cc20
-rw-r--r--devel/electron4/files/patch-chrome_browser_extensions_bookmark__app__helper.cc11
-rw-r--r--devel/electron4/files/patch-chrome_browser_extensions_browser__context__keyed__service__factories.cc20
-rw-r--r--devel/electron4/files/patch-chrome_browser_extensions_external__provider__impl.cc20
-rw-r--r--devel/electron4/files/patch-chrome_browser_first__run_first__run__internal__posix.cc20
-rw-r--r--devel/electron4/files/patch-chrome_browser_flag__descriptions.cc36
-rw-r--r--devel/electron4/files/patch-chrome_browser_flag__descriptions.h35
-rw-r--r--devel/electron4/files/patch-chrome_browser_media__galleries_fileapi_mtp__device__map__service.cc15
-rw-r--r--devel/electron4/files/patch-chrome_browser_media__galleries_media__file__system__registry.cc14
-rw-r--r--devel/electron4/files/patch-chrome_browser_media_router_discovery_discovery__network__list__posix.cc28
-rw-r--r--devel/electron4/files/patch-chrome_browser_media_router_discovery_discovery__network__list__wifi__linux.cc27
-rw-r--r--devel/electron4/files/patch-chrome_browser_media_router_providers_wired__display_wired__display__media__route__provider.cc23
-rw-r--r--devel/electron4/files/patch-chrome_browser_media_webrtc_webrtc__event__log__uploader.cc11
-rw-r--r--devel/electron4/files/patch-chrome_browser_media_webrtc_webrtc__log__uploader.cc11
-rw-r--r--devel/electron4/files/patch-chrome_browser_memory__details.cc20
-rw-r--r--devel/electron4/files/patch-chrome_browser_memory__details__linux.cc13
-rw-r--r--devel/electron4/files/patch-chrome_browser_metrics_chrome__browser__main__extra__parts__metrics.cc21
-rw-r--r--devel/electron4/files/patch-chrome_browser_net_system__network__context__manager.cc20
-rw-r--r--devel/electron4/files/patch-chrome_browser_password__manager_chrome__password__manager__client.cc14
-rw-r--r--devel/electron4/files/patch-chrome_browser_password__manager_password__store__factory.cc11
-rw-r--r--devel/electron4/files/patch-chrome_browser_platform__util.h11
-rw-r--r--devel/electron4/files/patch-chrome_browser_plugins_plugins__resource__service.cc11
-rw-r--r--devel/electron4/files/patch-chrome_browser_policy_policy__prefs__browsertest.cc11
-rw-r--r--devel/electron4/files/patch-chrome_browser_process__singleton__posix.cc34
-rw-r--r--devel/electron4/files/patch-chrome_browser_profiles_chrome__browser__main__extra__parts__profiles.cc11
-rw-r--r--devel/electron4/files/patch-chrome_browser_renderer__context__menu_render__view__context__menu.cc29
-rw-r--r--devel/electron4/files/patch-chrome_browser_renderer__preferences__util.cc38
-rw-r--r--devel/electron4/files/patch-chrome_browser_resources_safe__browsing_gen__file__type__proto.py19
-rw-r--r--devel/electron4/files/patch-chrome_browser_resources_settings_appearance__page_appearance__browser__proxy.js20
-rw-r--r--devel/electron4/files/patch-chrome_browser_resources_settings_appearance__page_appearance__page.html29
-rw-r--r--devel/electron4/files/patch-chrome_browser_resources_settings_appearance__page_appearance__page.js33
-rw-r--r--devel/electron4/files/patch-chrome_browser_safe__browsing_incident__reporting_incident__handler__util.cc15
-rw-r--r--devel/electron4/files/patch-chrome_browser_safe__browsing_incident__reporting_incident__reporting__service.cc11
-rw-r--r--devel/electron4/files/patch-chrome_browser_search_local__files__ntp__source.cc16
-rw-r--r--devel/electron4/files/patch-chrome_browser_speech_tts__controller__impl.cc16
-rw-r--r--devel/electron4/files/patch-chrome_browser_ssl_ssl__error__controller__client.cc20
-rw-r--r--devel/electron4/files/patch-chrome_browser_sync_chrome__sync__client.cc19
-rw-r--r--devel/electron4/files/patch-chrome_browser_task__manager_sampling_task__group.cc56
-rw-r--r--devel/electron4/files/patch-chrome_browser_task__manager_sampling_task__group.h39
-rw-r--r--devel/electron4/files/patch-chrome_browser_task__manager_sampling_task__group__sampler.cc44
-rw-r--r--devel/electron4/files/patch-chrome_browser_task__manager_sampling_task__group__sampler.h50
-rw-r--r--devel/electron4/files/patch-chrome_browser_task__manager_sampling_task__manager__impl.cc16
-rw-r--r--devel/electron4/files/patch-chrome_browser_task__manager_task__manager__observer.h16
-rw-r--r--devel/electron4/files/patch-chrome_browser_tracing_crash__service__uploader.cc11
-rw-r--r--devel/electron4/files/patch-chrome_browser_ui_browser__command__controller.cc38
-rw-r--r--devel/electron4/files/patch-chrome_browser_ui_exclusive__access_exclusive__access__bubble.cc11
-rw-r--r--devel/electron4/files/patch-chrome_browser_ui_input__method_input__method__engine.h11
-rw-r--r--devel/electron4/files/patch-chrome_browser_ui_input__method_input__method__engine__base.cc11
-rw-r--r--devel/electron4/files/patch-chrome_browser_ui_libgtkui_print__dialog__gtk.cc10
-rw-r--r--devel/electron4/files/patch-chrome_browser_ui_sad__tab.cc11
-rw-r--r--devel/electron4/files/patch-chrome_browser_ui_startup_bad__flags__prompt.cc11
-rw-r--r--devel/electron4/files/patch-chrome_browser_ui_startup_startup__browser__creator.cc22
-rw-r--r--devel/electron4/files/patch-chrome_browser_ui_tab__helpers.cc11
-rw-r--r--devel/electron4/files/patch-chrome_browser_ui_task__manager_task__manager__columns.cc15
-rw-r--r--devel/electron4/files/patch-chrome_browser_ui_task__manager_task__manager__table__model.cc50
-rw-r--r--devel/electron4/files/patch-chrome_browser_ui_toolbar_app__menu__model.cc11
-rw-r--r--devel/electron4/files/patch-chrome_browser_ui_views_accelerator__table.cc29
-rw-r--r--devel/electron4/files/patch-chrome_browser_ui_views_chrome__browser__main__extra__parts__views.cc38
-rw-r--r--devel/electron4/files/patch-chrome_browser_ui_views_chrome__views__delegate.h11
-rw-r--r--devel/electron4/files/patch-chrome_browser_ui_views_first__run__dialog.cc24
-rw-r--r--devel/electron4/files/patch-chrome_browser_ui_views_frame_browser__frame.cc20
-rw-r--r--devel/electron4/files/patch-chrome_browser_ui_views_frame_browser__non__client__frame__view__factory__views.cc11
-rw-r--r--devel/electron4/files/patch-chrome_browser_ui_views_frame_opaque__browser__frame__view.cc20
-rw-r--r--devel/electron4/files/patch-chrome_browser_ui_views_frame_opaque__browser__frame__view__layout.cc11
-rw-r--r--devel/electron4/files/patch-chrome_browser_ui_views_frame_opaque__browser__frame__view__platform__specific.cc11
-rw-r--r--devel/electron4/files/patch-chrome_browser_ui_views_frame_system__menu__model__builder.cc20
-rw-r--r--devel/electron4/files/patch-chrome_browser_ui_views_frame_system__menu__model__delegate.cc20
-rw-r--r--devel/electron4/files/patch-chrome_browser_ui_views_tabs_new__tab__button.cc11
-rw-r--r--devel/electron4/files/patch-chrome_browser_ui_views_tabs_tab__drag__controller.cc29
-rw-r--r--devel/electron4/files/patch-chrome_browser_ui_webui_about__ui.cc20
-rw-r--r--devel/electron4/files/patch-chrome_browser_ui_webui_chrome__web__ui__controller__factory.cc49
-rw-r--r--devel/electron4/files/patch-chrome_browser_ui_webui_settings_appearance__handler.cc20
-rw-r--r--devel/electron4/files/patch-chrome_browser_ui_webui_settings_appearance__handler.h11
-rw-r--r--devel/electron4/files/patch-chrome_browser_ui_webui_settings_md__settings__localized__strings__provider.cc20
-rw-r--r--devel/electron4/files/patch-chrome_common_BUILD.gn13
-rw-r--r--devel/electron4/files/patch-chrome_common_chrome__features.cc45
-rw-r--r--devel/electron4/files/patch-chrome_common_chrome__features.h20
-rw-r--r--devel/electron4/files/patch-chrome_common_chrome__paths.cc97
-rw-r--r--devel/electron4/files/patch-chrome_common_chrome__paths.h29
-rw-r--r--devel/electron4/files/patch-chrome_common_chrome__paths__internal.h11
-rw-r--r--devel/electron4/files/patch-chrome_common_chrome__switches.cc17
-rw-r--r--devel/electron4/files/patch-chrome_common_chrome__switches.h17
-rw-r--r--devel/electron4/files/patch-chrome_common_extensions_api_api__sources.gni11
-rw-r--r--devel/electron4/files/patch-chrome_common_extensions_command.cc11
-rw-r--r--devel/electron4/files/patch-chrome_common_features.gni14
-rw-r--r--devel/electron4/files/patch-chrome_common_pref__names.cc29
-rw-r--r--devel/electron4/files/patch-chrome_common_pref__names.h38
-rw-r--r--devel/electron4/files/patch-chrome_common_webui__url__constants.cc41
-rw-r--r--devel/electron4/files/patch-chrome_common_webui__url__constants.h25
-rw-r--r--devel/electron4/files/patch-chrome_renderer_pepper_pepper__flash__font__file__host.cc29
-rw-r--r--devel/electron4/files/patch-chrome_renderer_pepper_pepper__flash__font__file__host.h20
-rw-r--r--devel/electron4/files/patch-chrome_service_cloud__print_print__system.cc11
-rw-r--r--devel/electron4/files/patch-chrome_test_base_in__process__browser__test.cc22
-rw-r--r--devel/electron4/files/patch-chrome_test_base_testing__browser__process.h13
-rw-r--r--devel/electron4/files/patch-chrome_test_chromedriver_chrome_chrome__finder.cc20
-rw-r--r--devel/electron4/files/patch-chromecast_browser_cast__browser__main__parts.cc29
-rw-r--r--devel/electron4/files/patch-chromecast_browser_cast__content__browser__client.cc11
-rw-r--r--devel/electron4/files/patch-components_autofill__strings.grdp11
-rw-r--r--devel/electron4/files/patch-components_autofill_content_renderer_password__form__conversion__utils.cc14
-rw-r--r--devel/electron4/files/patch-components_autofill_core_browser_autofill__experiments.cc20
-rw-r--r--devel/electron4/files/patch-components_autofill_core_common_autofill__util.cc11
-rw-r--r--devel/electron4/files/patch-components_content__settings_core_browser_website__settings__registry.cc11
-rw-r--r--devel/electron4/files/patch-components_cookie__config_cookie__store__util.cc24
-rw-r--r--devel/electron4/files/patch-components_crash_content_app_BUILD.gn20
-rw-r--r--devel/electron4/files/patch-components_crash_content_app_crashpad.cc43
-rw-r--r--devel/electron4/files/patch-components_crash_content_browser_BUILD.gn23
-rw-r--r--devel/electron4/files/patch-components_crash_core_common_BUILD.gn28
-rw-r--r--devel/electron4/files/patch-components_download_internal_common_base__file.cc11
-rw-r--r--devel/electron4/files/patch-components_download_quarantine_quarantine__linux.cc49
-rw-r--r--devel/electron4/files/patch-components_feature__engagement_public_event__constants.cc14
-rw-r--r--devel/electron4/files/patch-components_feature__engagement_public_event__constants.h20
-rw-r--r--devel/electron4/files/patch-components_feedback_anonymizer__tool.cc14
-rw-r--r--devel/electron4/files/patch-components_flags__ui_flags__state.cc11
-rw-r--r--devel/electron4/files/patch-components_gcm__driver_gcm__client.h10
-rw-r--r--devel/electron4/files/patch-components_gcm__driver_gcm__client__impl.cc12
-rw-r--r--devel/electron4/files/patch-components_keyed__service_core_dependency__graph__unittest.cc14
-rw-r--r--devel/electron4/files/patch-components_metrics_BUILD.gn14
-rw-r--r--devel/electron4/files/patch-components_metrics_drive__metrics__provider__linux.cc16
-rw-r--r--devel/electron4/files/patch-components_metrics_system__memory__stats__recorder__linux.cc18
-rw-r--r--devel/electron4/files/patch-components_neterror_resources_neterror.js11
-rw-r--r--devel/electron4/files/patch-components_network__session__configurator_browser_network__session__configurator.cc11
-rw-r--r--devel/electron4/files/patch-components_new__or__sad__tab__strings.grdp38
-rw-r--r--devel/electron4/files/patch-components_os__crypt_os__crypt.h29
-rw-r--r--devel/electron4/files/patch-components_os__crypt_os__crypt__unittest.cc11
-rw-r--r--devel/electron4/files/patch-components_password__manager_core_browser_import_csv__reader.cc14
-rw-r--r--devel/electron4/files/patch-components_plugins_renderer_plugin__placeholder.cc14
-rw-r--r--devel/electron4/files/patch-components_policy_core_common_schema.cc14
-rw-r--r--devel/electron4/files/patch-components_policy_resources_policy__templates.json83
-rw-r--r--devel/electron4/files/patch-components_policy_tools_generate__policy__source.py20
-rw-r--r--devel/electron4/files/patch-components_previews_core_previews__features.cc11
-rw-r--r--devel/electron4/files/patch-components_services_filesystem_file__system__app.cc20
-rw-r--r--devel/electron4/files/patch-components_services_font_font__service__app.cc11
-rw-r--r--devel/electron4/files/patch-components_storage__monitor_BUILD.gn20
-rw-r--r--devel/electron4/files/patch-components_storage__monitor_removable__device__constants.cc11
-rw-r--r--devel/electron4/files/patch-components_storage__monitor_removable__device__constants.h11
-rw-r--r--devel/electron4/files/patch-components_storage__monitor_storage__monitor__freebsd.cc57
-rw-r--r--devel/electron4/files/patch-components_storage__monitor_storage__monitor__freebsd.h48
-rw-r--r--devel/electron4/files/patch-components_sync_base_get__session__name.cc20
-rw-r--r--devel/electron4/files/patch-components_sync_base_get__session__name__linux.cc14
-rw-r--r--devel/electron4/files/patch-components_update__client_update__query__params.cc11
-rw-r--r--devel/electron4/files/patch-components_url__matcher_regex__set__matcher.cc16
-rw-r--r--devel/electron4/files/patch-components_url__matcher_url__matcher__factory.cc14
-rw-r--r--devel/electron4/files/patch-components_webcrypto_algorithms_test__helpers.cc14
-rw-r--r--devel/electron4/files/patch-content_app_content__main__runner__impl.cc29
-rw-r--r--devel/electron4/files/patch-content_browser_BUILD.gn14
-rw-r--r--devel/electron4/files/patch-content_browser_browser__main__loop.cc28
-rw-r--r--devel/electron4/files/patch-content_browser_child__process__launcher__helper__linux.cc76
-rw-r--r--devel/electron4/files/patch-content_browser_media_media__internals.cc11
-rw-r--r--devel/electron4/files/patch-content_browser_memory_memory__monitor.cc11
-rw-r--r--devel/electron4/files/patch-content_browser_memory_swap__metrics__driver__impl__linux.cc16
-rw-r--r--devel/electron4/files/patch-content_browser_renderer__host_input_input__device__change__observer.cc29
-rw-r--r--devel/electron4/files/patch-content_browser_renderer__host_render__message__filter.cc29
-rw-r--r--devel/electron4/files/patch-content_browser_renderer__host_render__message__filter.h19
-rw-r--r--devel/electron4/files/patch-content_browser_renderer__host_render__process__host__impl.h15
-rw-r--r--devel/electron4/files/patch-content_browser_renderer__host_render__view__host__impl.cc11
-rw-r--r--devel/electron4/files/patch-content_browser_renderer__host_render__widget__host__view__aura.cc29
-rw-r--r--devel/electron4/files/patch-content_browser_renderer__host_render__widget__host__view__event__handler.cc11
-rw-r--r--devel/electron4/files/patch-content_browser_service__worker_service__worker__fetch__dispatcher.cc11
-rw-r--r--devel/electron4/files/patch-content_browser_webui_web__ui__data__source__impl.cc69
-rw-r--r--devel/electron4/files/patch-content_browser_webui_web__ui__data__source__impl.h25
-rw-r--r--devel/electron4/files/patch-content_common_BUILD.gn15
-rw-r--r--devel/electron4/files/patch-content_common_common__sandbox__support__linux.cc10
-rw-r--r--devel/electron4/files/patch-content_common_user__agent.cc17
-rw-r--r--devel/electron4/files/patch-content_gpu_BUILD.gn11
-rw-r--r--devel/electron4/files/patch-content_gpu_gpu__main.cc47
-rw-r--r--devel/electron4/files/patch-content_gpu_gpu__sandbox__hook__linux.cc11
-rw-r--r--devel/electron4/files/patch-content_ppapi__plugin_ppapi__blink__platform__impl.cc29
-rw-r--r--devel/electron4/files/patch-content_ppapi__plugin_ppapi__blink__platform__impl.h20
-rw-r--r--devel/electron4/files/patch-content_ppapi__plugin_ppapi__plugin__main.cc11
-rw-r--r--devel/electron4/files/patch-content_public_browser_web__ui__data__source.h51
-rw-r--r--devel/electron4/files/patch-content_public_common_child__process__host.h20
-rw-r--r--devel/electron4/files/patch-content_public_common_content__switches.cc11
-rw-r--r--devel/electron4/files/patch-content_public_common_content__switches.h11
-rw-r--r--devel/electron4/files/patch-content_public_common_renderer__preferences.h11
-rw-r--r--devel/electron4/files/patch-content_public_common_use__zoom__for__dsf__policy.cc11
-rw-r--r--devel/electron4/files/patch-content_public_test_browser__test__base.cc13
-rw-r--r--devel/electron4/files/patch-content_renderer_media_stream_processed__local__audio__source.cc11
-rw-r--r--devel/electron4/files/patch-content_renderer_render__thread__impl.cc56
-rw-r--r--devel/electron4/files/patch-content_renderer_renderer__blink__platform__impl.cc56
-rw-r--r--devel/electron4/files/patch-content_renderer_renderer__blink__platform__impl.h11
-rw-r--r--devel/electron4/files/patch-content_renderer_renderer__main__platform__delegate__linux.cc19
-rw-r--r--devel/electron4/files/patch-content_shell_browser_shell__browser__context.cc20
-rw-r--r--devel/electron4/files/patch-content_shell_browser_shell__browser__main__parts.cc20
-rw-r--r--devel/electron4/files/patch-content_test_content__test__suite.cc18
-rw-r--r--devel/electron4/files/patch-content_utility_utility__main.cc11
-rw-r--r--devel/electron4/files/patch-device_bluetooth_BUILD.gn11
-rw-r--r--devel/electron4/files/patch-device_gamepad_gamepad__provider.cc11
-rw-r--r--devel/electron4/files/patch-device_serial_BUILD.gn25
-rw-r--r--devel/electron4/files/patch-device_serial_serial__io__handler__posix.cc11
-rw-r--r--devel/electron4/files/patch-device_usb_BUILD.gn21
-rw-r--r--devel/electron4/files/patch-device_usb_usb__context.cc12
-rw-r--r--devel/electron4/files/patch-device_usb_usb__error.cc11
-rw-r--r--devel/electron4/files/patch-device_usb_usb__service__impl.cc45
-rw-r--r--devel/electron4/files/patch-device_usb_usb__service__impl.h26
-rw-r--r--devel/electron4/files/patch-electron_BUILD.gn27
-rw-r--r--devel/electron4/files/patch-electron_atom_app_atom__main.cc35
-rw-r--r--devel/electron4/files/patch-electron_atom_app_atom__main__delegate.cc11
-rw-r--r--devel/electron4/files/patch-electron_atom_browser_api_atom__api__app.cc29
-rw-r--r--devel/electron4/files/patch-electron_atom_browser_api_atom__api__web__contents.cc20
-rw-r--r--devel/electron4/files/patch-electron_atom_browser_atom__browser__main__parts__posix.cc20
-rw-r--r--devel/electron4/files/patch-electron_atom_browser_browser.h15
-rw-r--r--devel/electron4/files/patch-electron_atom_browser_io__thread.cc29
-rw-r--r--devel/electron4/files/patch-electron_atom_browser_relauncher__linux.cc32
-rw-r--r--devel/electron4/files/patch-electron_atom_browser_ui_views_submenu__button.cc11
-rw-r--r--devel/electron4/files/patch-electron_atom_common_api_atom__api__crash__reporter.cc42
-rw-r--r--devel/electron4/files/patch-electron_atom_common_atom__command__line.cc11
-rw-r--r--devel/electron4/files/patch-electron_atom_common_atom__command__line.h11
-rw-r--r--devel/electron4/files/patch-electron_atom_common_crash__reporter_crash__reporter.cc14
-rw-r--r--devel/electron4/files/patch-electron_atom_common_node__bindings.cc11
-rw-r--r--devel/electron4/files/patch-electron_atom_common_node__bindings__linux.cc69
-rw-r--r--devel/electron4/files/patch-electron_brightray_browser_brightray__paths.h11
-rw-r--r--devel/electron4/files/patch-electron_brightray_browser_browser__main__parts.cc29
-rw-r--r--devel/electron4/files/patch-electron_brightray_browser_views_views__delegate.cc38
-rw-r--r--devel/electron4/files/patch-electron_brightray_browser_views_views__delegate.h11
-rw-r--r--devel/electron4/files/patch-electron_brightray_common_platform__util.h11
-rw-r--r--devel/electron4/files/patch-electron_chromium__src_chrome_browser_process__singleton__posix.cc20
-rw-r--r--devel/electron4/files/patch-electron_chromium__src_chrome_renderer_spellchecker_spellcheck__worditerator.cc17
-rw-r--r--devel/electron4/files/patch-electron_chromium__src_chrome_renderer_spellchecker_spellcheck__worditerator.h11
-rw-r--r--devel/electron4/files/patch-electron_lib_browser_api_app.js11
-rw-r--r--devel/electron4/files/patch-electron_lib_browser_api_dialog.js11
-rw-r--r--devel/electron4/files/patch-electron_lib_browser_api_menu-item-roles.js11
-rw-r--r--devel/electron4/files/patch-electron_lib_browser_api_power-monitor.js11
-rw-r--r--devel/electron4/files/patch-electron_lib_browser_init.js11
-rw-r--r--devel/electron4/files/patch-electron_lib_common_api_clipboard.js10
-rw-r--r--devel/electron4/files/patch-electron_script_lib_utils.js10
-rw-r--r--devel/electron4/files/patch-electron_spec_api-app-spec.js75
-rw-r--r--devel/electron4/files/patch-electron_spec_api-auto-updater-spec.js11
-rw-r--r--devel/electron4/files/patch-electron_spec_api-browser-window-spec.js38
-rw-r--r--devel/electron4/files/patch-electron_spec_api-clipboard-spec.js38
-rw-r--r--devel/electron4/files/patch-electron_spec_api-crash-reporter-spec.js11
-rw-r--r--devel/electron4/files/patch-electron_spec_api-net-log-spec.js29
-rw-r--r--devel/electron4/files/patch-electron_spec_api-notification-dbus-spec.js11
-rw-r--r--devel/electron4/files/patch-electron_spec_api-power-monitor-spec.js11
-rw-r--r--devel/electron4/files/patch-electron_spec_chromium-spec.js11
-rw-r--r--devel/electron4/files/patch-extensions_browser_api_declarative__webrequest_webrequest__action.cc14
-rw-r--r--devel/electron4/files/patch-extensions_browser_api_messaging_message__service.cc20
-rw-r--r--devel/electron4/files/patch-extensions_browser_api_networking__private_networking__private__delegate__factory.cc20
-rw-r--r--devel/electron4/files/patch-extensions_browser_api_web__request_form__data__parser.cc14
-rw-r--r--devel/electron4/files/patch-extensions_browser_browser__context__keyed__service__factories.cc11
-rw-r--r--devel/electron4/files/patch-extensions_common_api___permission__features.json29
-rw-r--r--devel/electron4/files/patch-extensions_common_api_runtime.json11
-rw-r--r--devel/electron4/files/patch-extensions_common_feature__switch.cc14
-rw-r--r--devel/electron4/files/patch-extensions_common_features_feature.cc11
-rw-r--r--devel/electron4/files/patch-extensions_common_image__util.cc14
-rw-r--r--devel/electron4/files/patch-extensions_common_stack__frame.cc14
-rw-r--r--devel/electron4/files/patch-extensions_renderer_bindings_api__binding__util.cc11
-rw-r--r--devel/electron4/files/patch-extensions_shell_app_shell__main__delegate.cc29
-rw-r--r--devel/electron4/files/patch-gpu_command__buffer_service_program__manager.cc14
-rw-r--r--devel/electron4/files/patch-gpu_config_gpu__control__list.cc32
-rw-r--r--devel/electron4/files/patch-gpu_config_gpu__test__config.cc11
-rw-r--r--devel/electron4/files/patch-gpu_ipc_common_gpu__memory__buffer__support.cc54
-rw-r--r--devel/electron4/files/patch-gpu_ipc_common_gpu__memory__buffer__support.h38
-rw-r--r--devel/electron4/files/patch-gpu_ipc_service_gpu__init.cc29
-rw-r--r--devel/electron4/files/patch-gpu_ipc_service_gpu__memory__buffer__factory.cc20
-rw-r--r--devel/electron4/files/patch-headless_lib_browser_headless__content__browser__client.cc20
-rw-r--r--devel/electron4/files/patch-headless_lib_browser_headless__content__browser__client.h11
-rw-r--r--devel/electron4/files/patch-headless_lib_headless__macros.h13
-rw-r--r--devel/electron4/files/patch-ipc_ipc__channel.h11
-rw-r--r--devel/electron4/files/patch-ipc_ipc__channel__common.cc11
-rw-r--r--devel/electron4/files/patch-ipc_ipc__channel__mojo.cc11
-rw-r--r--devel/electron4/files/patch-ipc_ipc__message__utils.cc11
-rw-r--r--devel/electron4/files/patch-ipc_ipc__message__utils.h11
-rw-r--r--devel/electron4/files/patch-media_BUILD.gn12
-rw-r--r--devel/electron4/files/patch-media_audio_BUILD.gn31
-rw-r--r--devel/electron4/files/patch-media_audio_alsa_audio__manager__alsa.cc54
-rw-r--r--devel/electron4/files/patch-media_audio_audio__manager.cc29
-rw-r--r--devel/electron4/files/patch-media_audio_audio__manager.h11
-rw-r--r--devel/electron4/files/patch-media_audio_audio__output__proxy__unittest.cc11
-rw-r--r--devel/electron4/files/patch-media_audio_pulse_pulse.sigs143
-rw-r--r--devel/electron4/files/patch-media_base_audio__latency.cc11
-rw-r--r--devel/electron4/files/patch-media_base_scopedfd__helper.h19
-rw-r--r--devel/electron4/files/patch-media_base_video__frame.cc47
-rw-r--r--devel/electron4/files/patch-media_base_video__frame.h38
-rw-r--r--devel/electron4/files/patch-media_capture_video_create__video__capture__device__factory.cc20
-rw-r--r--devel/electron4/files/patch-media_capture_video_fake__video__capture__device__factory.cc11
-rw-r--r--devel/electron4/files/patch-media_capture_video_file__video__capture__device__factory.cc11
-rw-r--r--devel/electron4/files/patch-media_capture_video_linux_v4l2__capture__delegate.cc26
-rw-r--r--devel/electron4/files/patch-media_capture_video_linux_video__capture__device__factory__linux.cc32
-rw-r--r--devel/electron4/files/patch-media_capture_video_linux_video__capture__device__linux.cc60
-rw-r--r--devel/electron4/files/patch-media_capture_video_video__capture__device__client.cc11
-rw-r--r--devel/electron4/files/patch-media_filters_vp9__parser.h10
-rw-r--r--devel/electron4/files/patch-media_formats_common_offset__byte__queue.cc20
-rw-r--r--devel/electron4/files/patch-media_formats_common_offset__byte__queue.h22
-rw-r--r--devel/electron4/files/patch-media_formats_mp2t_es__parser__adts.cc26
-rw-r--r--devel/electron4/files/patch-media_formats_mp2t_es__parser__mpeg1audio.cc26
-rw-r--r--devel/electron4/files/patch-media_media__options.gni12
-rw-r--r--devel/electron4/files/patch-mojo_core_options__validation__unittest.cc11
-rw-r--r--devel/electron4/files/patch-mojo_public_c_system_buffer.h11
-rw-r--r--devel/electron4/files/patch-mojo_public_c_system_data__pipe.h11
-rw-r--r--devel/electron4/files/patch-mojo_public_c_system_message__pipe.h11
-rw-r--r--devel/electron4/files/patch-mojo_public_c_system_thunks.cc47
-rw-r--r--devel/electron4/files/patch-net_BUILD.gn29
-rw-r--r--devel/electron4/files/patch-net_base_address__tracker__linux.cc259
-rw-r--r--devel/electron4/files/patch-net_base_address__tracker__linux.h12
-rw-r--r--devel/electron4/files/patch-net_base_address__tracker__linux__unittest.cc14
-rw-r--r--devel/electron4/files/patch-net_base_network__change__notifier.cc10
-rw-r--r--devel/electron4/files/patch-net_base_network__interfaces__freebsd.cc243
-rw-r--r--devel/electron4/files/patch-net_base_network__interfaces__freebsd.h47
-rw-r--r--devel/electron4/files/patch-net_base_network__interfaces__posix.h11
-rw-r--r--devel/electron4/files/patch-net_disk__cache_blockfile_disk__format.h12
-rw-r--r--devel/electron4/files/patch-net_dns_address__sorter__posix.cc12
-rw-r--r--devel/electron4/files/patch-net_dns_dns__config__service__posix__unittest.cc11
-rw-r--r--devel/electron4/files/patch-net_dns_dns__reloader.cc13
-rw-r--r--devel/electron4/files/patch-net_dns_dns__util.cc11
-rw-r--r--devel/electron4/files/patch-net_dns_host__resolver__proc.cc11
-rw-r--r--devel/electron4/files/patch-net_features.gni11
-rw-r--r--devel/electron4/files/patch-net_http_http__auth__gssapi__posix.cc14
-rw-r--r--devel/electron4/files/patch-net_http_http__network__session.cc12
-rw-r--r--devel/electron4/files/patch-net_proxy__resolution_proxy__config__service__linux.cc39
-rw-r--r--devel/electron4/files/patch-net_proxy__resolution_proxy__resolution__service.cc29
-rw-r--r--devel/electron4/files/patch-net_socket_socks5__client__socket.cc13
-rw-r--r--devel/electron4/files/patch-net_socket_udp__socket__posix.cc96
-rw-r--r--devel/electron4/files/patch-net_third__party_quic_platform_impl_quic__ip__address__impl.cc10
-rw-r--r--devel/electron4/files/patch-net_tools_cert__verify__tool_cert__verify__tool.cc20
-rw-r--r--devel/electron4/files/patch-net_url__request_url__request__context__builder.cc11
-rw-r--r--devel/electron4/files/patch-pdf_pdfium_pdfium__engine.cc65
-rw-r--r--devel/electron4/files/patch-ppapi_proxy_file__io__resource.cc48
-rw-r--r--devel/electron4/files/patch-printing_backend_print__backend__cups.h11
-rw-r--r--devel/electron4/files/patch-printing_cups__config__helper.py11
-rw-r--r--devel/electron4/files/patch-remoting_base_chromoting__event.cc11
-rw-r--r--devel/electron4/files/patch-remoting_client_display_sys__opengl.h11
-rw-r--r--devel/electron4/files/patch-remoting_host_evaluate__capability.cc11
-rw-r--r--devel/electron4/files/patch-remoting_host_host__attributes.cc11
-rw-r--r--devel/electron4/files/patch-remoting_host_host__details.cc11
-rw-r--r--devel/electron4/files/patch-remoting_host_it2me_it2me__native__messaging__host__main.cc20
-rw-r--r--devel/electron4/files/patch-remoting_host_me2me__desktop__environment.cc11
-rw-r--r--devel/electron4/files/patch-remoting_host_remoting__me2me__host.cc108
-rw-r--r--devel/electron4/files/patch-remoting_webapp_base_js_platform.js17
-rw-r--r--devel/electron4/files/patch-sandbox_features.gni10
-rw-r--r--devel/electron4/files/patch-sandbox_linux_BUILD.gn47
-rw-r--r--devel/electron4/files/patch-sandbox_linux_services_init__process__reaper.cc15
-rw-r--r--devel/electron4/files/patch-sandbox_linux_services_libc__interceptor.cc21
-rw-r--r--devel/electron4/files/patch-services_catalog_public_cpp_manifest__parsing__util.cc21
-rw-r--r--devel/electron4/files/patch-services_catalog_store.cc10
-rw-r--r--devel/electron4/files/patch-services_catalog_store.h10
-rw-r--r--devel/electron4/files/patch-services_content_simple__browser_simple__browser__service.h20
-rw-r--r--devel/electron4/files/patch-services_device_geolocation_location__arbitrator.cc11
-rw-r--r--devel/electron4/files/patch-services_device_hid_BUILD.gn22
-rw-r--r--devel/electron4/files/patch-services_device_hid_hid__connection__freebsd.cc194
-rw-r--r--devel/electron4/files/patch-services_device_hid_hid__connection__freebsd.h73
-rw-r--r--devel/electron4/files/patch-services_device_hid_hid__service.cc20
-rw-r--r--devel/electron4/files/patch-services_device_hid_hid__service__freebsd.cc374
-rw-r--r--devel/electron4/files/patch-services_device_hid_hid__service__freebsd.h51
-rw-r--r--devel/electron4/files/patch-services_device_time__zone__monitor_time__zone__monitor.cc11
-rw-r--r--devel/electron4/files/patch-services_device_time__zone__monitor_time__zone__monitor__linux.cc14
-rw-r--r--devel/electron4/files/patch-services_network_BUILD.gn10
-rw-r--r--devel/electron4/files/patch-services_network_network__context.cc38
-rw-r--r--devel/electron4/files/patch-services_network_network__sandbox__hook__linux.cc18
-rw-r--r--devel/electron4/files/patch-services_network_network__service.cc20
-rw-r--r--devel/electron4/files/patch-services_network_network__service.h11
-rw-r--r--devel/electron4/files/patch-services_resource__coordinator_public_cpp_memory__instrumentation_os__metrics.h11
-rw-r--r--devel/electron4/files/patch-services_resource__coordinator_public_cpp_memory__instrumentation_os__metrics__linux.cc40
-rw-r--r--devel/electron4/files/patch-services_service__manager_embedder_main.cc11
-rw-r--r--devel/electron4/files/patch-services_service__manager_embedder_set__process__title__linux.cc19
-rw-r--r--devel/electron4/files/patch-services_service__manager_embedder_set__process__title__linux.h20
-rw-r--r--devel/electron4/files/patch-services_service__manager_public_cpp_standalone__service_BUILD.gn11
-rw-r--r--devel/electron4/files/patch-services_service__manager_public_cpp_standalone__service_standalone__service.cc11
-rw-r--r--devel/electron4/files/patch-services_service__manager_runner_host_BUILD.gn11
-rw-r--r--devel/electron4/files/patch-services_service__manager_sandbox_BUILD.gn11
-rw-r--r--devel/electron4/files/patch-services_service__manager_zygote_common_zygote__features.gni8
-rw-r--r--devel/electron4/files/patch-services_service__manager_zygote_host_zygote__host__impl__linux.cc40
-rw-r--r--devel/electron4/files/patch-services_service__manager_zygote_host_zygote__host__impl__linux.h13
-rw-r--r--devel/electron4/files/patch-services_service__manager_zygote_zygote__host__linux.h16
-rw-r--r--devel/electron4/files/patch-services_service__manager_zygote_zygote__linux.cc15
-rw-r--r--devel/electron4/files/patch-services_service__manager_zygote_zygote__main__linux.cc48
-rw-r--r--devel/electron4/files/patch-services_tracing_public_cpp_trace__event__agent.cc11
-rw-r--r--devel/electron4/files/patch-services_tracing_tracing__service.h11
-rw-r--r--devel/electron4/files/patch-skia_ext_SkMemory__new__handler.cpp20
-rw-r--r--devel/electron4/files/patch-third__party_angle_BUILD.gn21
-rw-r--r--devel/electron4/files/patch-third__party_angle_src_gpu__info__util_SystemInfo__internal.h16
-rw-r--r--devel/electron4/files/patch-third__party_angle_src_gpu__info__util_SystemInfo__libpci.cpp90
-rw-r--r--devel/electron4/files/patch-third__party_angle_src_gpu__info__util_SystemInfo__linux.cpp21
-rw-r--r--devel/electron4/files/patch-third__party_angle_src_gpu__info__util_SystemInfo__x11.cpp55
-rw-r--r--devel/electron4/files/patch-third__party_angle_src_libANGLE_Display.cpp20
-rw-r--r--devel/electron4/files/patch-third__party_angle_src_libANGLE_renderer_gl_renderergl__utils.cpp11
-rw-r--r--devel/electron4/files/patch-third__party_angle_third__party_glslang_src_glslang_Include_PoolAlloc.h10
-rw-r--r--devel/electron4/files/patch-third__party_angle_third__party_vulkan-loader_src_loader_loader.c11
-rw-r--r--devel/electron4/files/patch-third__party_angle_third__party_vulkan-loader_src_loader_vk__loader__platform.h11
-rw-r--r--devel/electron4/files/patch-third__party_angle_third__party_vulkan-validation-layers_src_layers_vk__loader__platform.h11
-rw-r--r--devel/electron4/files/patch-third__party_blink_renderer_core_editing_editing__behavior.cc11
-rw-r--r--devel/electron4/files/patch-third__party_blink_renderer_core_html_canvas_canvas__async__blob__creator.cc11
-rw-r--r--devel/electron4/files/patch-third__party_blink_renderer_core_html_forms_internal__popup__menu.cc11
-rw-r--r--devel/electron4/files/patch-third__party_blink_renderer_core_inspector_inspector__memory__agent.cc11
-rw-r--r--devel/electron4/files/patch-third__party_blink_renderer_platform_BUILD.gn10
-rw-r--r--devel/electron4/files/patch-third__party_blink_renderer_platform_fonts_font__cache.cc20
-rw-r--r--devel/electron4/files/patch-third__party_blink_renderer_platform_fonts_font__cache.h38
-rw-r--r--devel/electron4/files/patch-third__party_blink_renderer_platform_fonts_font__description.cc20
-rw-r--r--devel/electron4/files/patch-third__party_blink_renderer_platform_fonts_font__metrics.cc29
-rw-r--r--devel/electron4/files/patch-third__party_blink_renderer_platform_fonts_skia_font__cache__skia.cc20
-rw-r--r--devel/electron4/files/patch-third__party_blink_renderer_platform_heap_stack__frame__depth.cc14
-rw-r--r--devel/electron4/files/patch-third__party_blink_renderer_platform_wtf_BUILD.gn16
-rw-r--r--devel/electron4/files/patch-third__party_blink_renderer_platform_wtf_assertions.cc11
-rw-r--r--devel/electron4/files/patch-third__party_blink_renderer_platform_wtf_atomics.h11
-rw-r--r--devel/electron4/files/patch-third__party_blink_renderer_platform_wtf_container__annotations.h11
-rw-r--r--devel/electron4/files/patch-third__party_blink_renderer_platform_wtf_stack__util.cc14
-rw-r--r--devel/electron4/files/patch-third__party_blink_renderer_platform_wtf_threading__pthreads.cc22
-rw-r--r--devel/electron4/files/patch-third__party_boringssl_BUILD.gn36
-rw-r--r--devel/electron4/files/patch-third__party_boringssl_src_crypto_cpu-aarch64-linux.c54
-rw-r--r--devel/electron4/files/patch-third__party_boringssl_src_crypto_ex__data.c13
-rw-r--r--devel/electron4/files/patch-third__party_breakpad_breakpad_src_common_simple__string__dictionary.h11
-rw-r--r--devel/electron4/files/patch-third__party_cacheinvalidation_src_google_cacheinvalidation_include_types.h11
-rw-r--r--devel/electron4/files/patch-third__party_crashpad_crashpad_build_crashpad__buildconfig.gni11
-rw-r--r--devel/electron4/files/patch-third__party_crashpad_crashpad_util_misc_address__types.h20
-rw-r--r--devel/electron4/files/patch-third__party_crashpad_crashpad_util_misc_capture__context.h20
-rw-r--r--devel/electron4/files/patch-third__party_crashpad_crashpad_util_misc_metrics.cc11
-rw-r--r--devel/electron4/files/patch-third__party_crashpad_crashpad_util_misc_uuid.cc11
-rw-r--r--devel/electron4/files/patch-third__party_crashpad_crashpad_util_posix_close__multiple.cc11
-rw-r--r--devel/electron4/files/patch-third__party_crashpad_crashpad_util_posix_drop__privileges.cc11
-rw-r--r--devel/electron4/files/patch-third__party_crashpad_crashpad_util_posix_signals.cc33
-rw-r--r--devel/electron4/files/patch-third__party_crashpad_crashpad_util_posix_symbolic__constants__posix.cc20
-rw-r--r--devel/electron4/files/patch-third__party_crc32c_src_src_crc32c__arm64__linux__check.h19
-rw-r--r--devel/electron4/files/patch-third__party_electron__node_common.gypi18
-rw-r--r--devel/electron4/files/patch-third__party_electron__node_deps_uv_BUILD.gn44
-rw-r--r--devel/electron4/files/patch-third__party_ffmpeg_libavutil_mem.c12
-rw-r--r--devel/electron4/files/patch-third__party_googletest_src_googletest_include_gtest_internal_gtest-port.h11
-rw-r--r--devel/electron4/files/patch-third__party_googletest_src_googletest_src_gtest-port.cc43
-rw-r--r--devel/electron4/files/patch-third__party_googletest_src_googletest_src_gtest.cc10
-rw-r--r--devel/electron4/files/patch-third__party_leveldatabase_env__chromium.cc14
-rw-r--r--devel/electron4/files/patch-third__party_libXNVCtrl_NVCtrl.c25
-rw-r--r--devel/electron4/files/patch-third__party_libjingle__xmpp_task__runner_taskrunner.cc11
-rw-r--r--devel/electron4/files/patch-third__party_libphonenumber_dist_cpp_src_phonenumbers_base_memory_singleton.h11
-rw-r--r--devel/electron4/files/patch-third__party_libphonenumber_dist_cpp_src_phonenumbers_base_synchronization_lock.h11
-rw-r--r--devel/electron4/files/patch-third__party_libphonenumber_dist_cpp_src_phonenumbers_base_thread__checker.h19
-rw-r--r--devel/electron4/files/patch-third__party_libyuv_include_libyuv_row.h37
-rw-r--r--devel/electron4/files/patch-third__party_node_node.py10
-rw-r--r--devel/electron4/files/patch-third__party_pdfium_core_fxcrt_fx__system.h11
-rw-r--r--devel/electron4/files/patch-third__party_pdfium_core_fxge_fx__ge__linux.cpp14
-rw-r--r--devel/electron4/files/patch-third__party_pdfium_fxjs_cjs__publicmethods.cpp106
-rw-r--r--devel/electron4/files/patch-third__party_pdfium_fxjs_js__define.cpp22
-rw-r--r--devel/electron4/files/patch-third__party_pdfium_third__party_base_logging.h11
-rw-r--r--devel/electron4/files/patch-third__party_perfetto_include_perfetto_base_build__config.h37
-rw-r--r--devel/electron4/files/patch-third__party_perfetto_include_perfetto_base_watchdog__posix.h11
-rw-r--r--devel/electron4/files/patch-third__party_perfetto_src_base_unix__task__runner.cc11
-rw-r--r--devel/electron4/files/patch-third__party_perfetto_src_tracing_core_tracing__service__impl.cc12
-rw-r--r--devel/electron4/files/patch-third__party_protobuf_src_google_protobuf_stubs_platform__macros.h11
-rw-r--r--devel/electron4/files/patch-third__party_sfntly_src_cpp_src_sfntly_table_core_cmap__table.cc47
-rw-r--r--devel/electron4/files/patch-third__party_skia_src_core_SkCpu.cpp19
-rw-r--r--devel/electron4/files/patch-third__party_skia_src_gpu_GrAutoLocaleSetter.h11
-rw-r--r--devel/electron4/files/patch-third__party_skia_src_images_SkJpegEncoder.cpp41
-rw-r--r--devel/electron4/files/patch-third__party_skia_src_opts_SkRasterPipeline__opts.h20
-rw-r--r--devel/electron4/files/patch-third__party_skia_src_ports_SkFontHost__FreeType.cpp77
-rw-r--r--devel/electron4/files/patch-third__party_skia_src_ports_SkOSFile__stdio.cpp11
-rw-r--r--devel/electron4/files/patch-third__party_skia_src_sksl_SkSLString.h11
-rw-r--r--devel/electron4/files/patch-third__party_skia_third__party_vulkanmemoryallocator_include_vk__mem__alloc.h11
-rw-r--r--devel/electron4/files/patch-third__party_snappy_src_snappy.h20
-rw-r--r--devel/electron4/files/patch-third__party_sqlite_BUILD.gn11
-rw-r--r--devel/electron4/files/patch-third__party_swiftshader_BUILD.gn10
-rw-r--r--devel/electron4/files/patch-third__party_swiftshader_src_Common_Configurator.cpp12
-rw-r--r--devel/electron4/files/patch-third__party_swiftshader_src_Common_MutexLock.hpp11
-rw-r--r--devel/electron4/files/patch-third__party_swiftshader_src_Common_SharedLibrary.hpp11
-rw-r--r--devel/electron4/files/patch-third__party_swiftshader_src_Main_SwiftConfig.cpp14
-rw-r--r--devel/electron4/files/patch-third__party_swiftshader_src_OpenGL_libEGL_libEGL.cpp29
-rw-r--r--devel/electron4/files/patch-third__party_swiftshader_src_OpenGL_libEGL_libEGL.hpp11
-rw-r--r--devel/electron4/files/patch-third__party_swiftshader_src_OpenGL_libGLES__CM_libGLES__CM.hpp11
-rw-r--r--devel/electron4/files/patch-third__party_swiftshader_src_OpenGL_libGLESv2_libGLESv2.hpp11
-rw-r--r--devel/electron4/files/patch-third__party_swiftshader_third__party_llvm-subzero_build_Linux_include_llvm_Config_config.h29
-rw-r--r--devel/electron4/files/patch-third__party_swiftshader_third__party_llvm-subzero_lib_Support_Unix_Process.inc11
-rw-r--r--devel/electron4/files/patch-third__party_usrsctp_BUILD.gn20
-rw-r--r--devel/electron4/files/patch-third__party_webrtc_BUILD.gn12
-rw-r--r--devel/electron4/files/patch-third__party_webrtc_modules_audio__device_BUILD.gn11
-rw-r--r--devel/electron4/files/patch-third__party_webrtc_modules_rtp__rtcp_source_forward__error__correction.cc10
-rw-r--r--devel/electron4/files/patch-third__party_webrtc_rtc__base_BUILD.gn20
-rw-r--r--devel/electron4/files/patch-third__party_webrtc_rtc__base_byteorder.h11
-rw-r--r--devel/electron4/files/patch-third__party_webrtc_rtc__base_httpcommon.cc11
-rw-r--r--devel/electron4/files/patch-third__party_webrtc_rtc__base_ifaddrs__converter.h11
-rw-r--r--devel/electron4/files/patch-third__party_webrtc_rtc__base_ipaddress.h13
-rw-r--r--devel/electron4/files/patch-third__party_webrtc_rtc__base_network.cc29
-rw-r--r--devel/electron4/files/patch-third__party_webrtc_rtc__base_network.h13
-rw-r--r--devel/electron4/files/patch-third__party_webrtc_rtc__base_physicalsocketserver.cc56
-rw-r--r--devel/electron4/files/patch-third__party_webrtc_rtc__base_physicalsocketserver.h11
-rw-r--r--devel/electron4/files/patch-third__party_webrtc_rtc__base_platform__thread.cc12
-rw-r--r--devel/electron4/files/patch-third__party_webrtc_rtc__base_platform__thread__types.cc40
-rw-r--r--devel/electron4/files/patch-third__party_webrtc_rtc__base_stringutils.h17
-rw-r--r--devel/electron4/files/patch-third__party_webrtc_system__wrappers_BUILD.gn11
-rw-r--r--devel/electron4/files/patch-third__party_webrtc_webrtc.gni11
-rw-r--r--devel/electron4/files/patch-third__party_yasm_BUILD.gn16
-rw-r--r--devel/electron4/files/patch-third__party_zlib_BUILD.gn20
-rw-r--r--devel/electron4/files/patch-third__party_zlib_arm__features.c29
-rw-r--r--devel/electron4/files/patch-tools_gn_base_files_file__posix.cc11
-rw-r--r--devel/electron4/files/patch-tools_gn_base_files_file__util.h11
-rw-r--r--devel/electron4/files/patch-tools_gn_base_files_file__util__posix.cc11
-rw-r--r--devel/electron4/files/patch-tools_gn_base_files_scoped__file.cc11
-rw-r--r--devel/electron4/files/patch-tools_gn_build_gen.py33
-rw-r--r--devel/electron4/files/patch-tools_gn_tools_gn_exec__process.cc13
-rw-r--r--devel/electron4/files/patch-tools_gn_util_sys__info.cc11
-rw-r--r--devel/electron4/files/patch-tools_json__schema__compiler_feature__compiler.py10
-rw-r--r--devel/electron4/files/patch-tools_json__schema__compiler_model.py11
-rw-r--r--devel/electron4/files/patch-tools_perf_chrome__telemetry__build_BUILD.gn11
-rw-r--r--devel/electron4/files/patch-tools_variations_fieldtrial__to__struct.py10
-rw-r--r--devel/electron4/files/patch-ui_base_dragdrop_os__exchange__data__provider__factory.cc20
-rw-r--r--devel/electron4/files/patch-ui_base_ime_ime__engine__handler__interface.h11
-rw-r--r--devel/electron4/files/patch-ui_base_ime_input__method__initializer.cc38
-rw-r--r--devel/electron4/files/patch-ui_base_resource_resource__bundle.cc20
-rw-r--r--devel/electron4/files/patch-ui_base_resource_resource__bundle__freebsd.cc24
-rw-r--r--devel/electron4/files/patch-ui_base_ui__base__features.cc20
-rw-r--r--devel/electron4/files/patch-ui_base_ui__base__features.h14
-rw-r--r--devel/electron4/files/patch-ui_base_webui_web__ui__util.cc11
-rw-r--r--devel/electron4/files/patch-ui_events_devices_x11_device__data__manager__x11.cc19
-rw-r--r--devel/electron4/files/patch-ui_events_event__switches.cc11
-rw-r--r--devel/electron4/files/patch-ui_events_event__switches.h11
-rw-r--r--devel/electron4/files/patch-ui_events_keycodes_dom_keycode__converter.cc11
-rw-r--r--devel/electron4/files/patch-ui_gfx_BUILD.gn11
-rw-r--r--devel/electron4/files/patch-ui_gfx_canvas__skia.cc11
-rw-r--r--devel/electron4/files/patch-ui_gfx_codec_jpeg__codec.cc20
-rw-r--r--devel/electron4/files/patch-ui_gfx_font__fallback__linux.cc13
-rw-r--r--devel/electron4/files/patch-ui_gfx_font__list.cc11
-rw-r--r--devel/electron4/files/patch-ui_gfx_font__render__params.h18
-rw-r--r--devel/electron4/files/patch-ui_gfx_gpu__memory__buffer.h20
-rw-r--r--devel/electron4/files/patch-ui_gfx_ipc_gfx__param__traits__macros.h29
-rw-r--r--devel/electron4/files/patch-ui_gfx_linux_client__native__pixmap__dmabuf.cc25
-rw-r--r--devel/electron4/files/patch-ui_gfx_mojo_buffer__types__struct__traits.cc42
-rw-r--r--devel/electron4/files/patch-ui_gfx_mojo_buffer__types__struct__traits.h11
-rw-r--r--devel/electron4/files/patch-ui_gfx_native__pixmap__handle.cc28
-rw-r--r--devel/electron4/files/patch-ui_gfx_native__pixmap__handle.h28
-rw-r--r--devel/electron4/files/patch-ui_gfx_render__text.cc46
-rw-r--r--devel/electron4/files/patch-ui_gl_BUILD.gn11
-rw-r--r--devel/electron4/files/patch-ui_gl_generate__bindings.py12
-rw-r--r--devel/electron4/files/patch-ui_gl_gl__bindings__api__autogen__glx.h10
-rw-r--r--devel/electron4/files/patch-ui_gl_gl__bindings__autogen__glx.cc61
-rw-r--r--devel/electron4/files/patch-ui_gl_gl__bindings__autogen__glx.h43
-rw-r--r--devel/electron4/files/patch-ui_gl_gl__fence.cc11
-rw-r--r--devel/electron4/files/patch-ui_gl_sync__control__vsync__provider.cc43
-rw-r--r--devel/electron4/files/patch-ui_gl_sync__control__vsync__provider.h34
-rw-r--r--devel/electron4/files/patch-ui_message__center_public_cpp_message__center__constants.h11
-rw-r--r--devel/electron4/files/patch-ui_native__theme_native__theme.h11
-rw-r--r--devel/electron4/files/patch-ui_native__theme_native__theme__base.cc11
-rw-r--r--devel/electron4/files/patch-ui_strings_app__locale__settings.grd11
-rw-r--r--devel/electron4/files/patch-ui_views_controls_label.cc20
-rw-r--r--devel/electron4/files/patch-ui_views_controls_textfield_textfield.cc73
-rw-r--r--devel/electron4/files/patch-ui_views_corewm_tooltip__aura.cc11
-rw-r--r--devel/electron4/files/patch-ui_views_examples_widget__example.cc11
-rw-r--r--devel/electron4/files/patch-ui_views_selection__controller.cc11
-rw-r--r--devel/electron4/files/patch-ui_views_style_platform__style.cc11
-rw-r--r--devel/electron4/files/patch-ui_views_views__delegate.cc11
-rw-r--r--devel/electron4/files/patch-ui_views_views__delegate.h11
-rw-r--r--devel/electron4/files/patch-ui_views_window_custom__frame__view.cc11
-rw-r--r--devel/electron4/files/patch-ui_views_window_dialog__delegate.cc11
-rw-r--r--devel/electron4/files/patch-ui_views_window_frame__background.cc11
-rw-r--r--devel/electron4/files/patch-ui_webui_resources_js_cr.js14
-rw-r--r--devel/electron4/files/patch-ui_webui_resources_js_icon.js11
-rw-r--r--devel/electron4/files/patch-v8_BUILD.gn41
-rw-r--r--devel/electron4/files/patch-v8_src_base_cpu.cc18
-rw-r--r--devel/electron4/files/patch-v8_src_base_platform_platform-posix.cc15
-rw-r--r--devel/electron4/files/patch-v8_src_log-utils.h11
-rw-r--r--devel/electron4/pkg-descr10
-rw-r--r--devel/electron4/pkg-plist122
-rw-r--r--devel/electron5/Makefile302
-rw-r--r--devel/electron5/Makefile.tests55
-rw-r--r--devel/electron5/Makefile.version4
-rw-r--r--devel/electron5/distinfo15
-rw-r--r--devel/electron5/files/apply-electron-patches.sh20
-rw-r--r--devel/electron5/files/package-lock.json13356
-rw-r--r--devel/electron5/files/package.json88
-rw-r--r--devel/electron5/files/patch-BUILD.gn87
-rw-r--r--devel/electron5/files/patch-apps_ui_views_app__window__frame__view.cc11
-rw-r--r--devel/electron5/files/patch-ash_display_mirror__window__controller.cc14
-rw-r--r--devel/electron5/files/patch-base_BUILD.gn67
-rw-r--r--devel/electron5/files/patch-base_allocator_allocator__shim.cc11
-rw-r--r--devel/electron5/files/patch-base_allocator_allocator__shim__default__dispatch__to__glibc.cc77
-rw-r--r--devel/electron5/files/patch-base_allocator_allocator__shim__override__libc__symbols.h11
-rw-r--r--devel/electron5/files/patch-base_allocator_allocator__shim__unittest.cc36
-rw-r--r--devel/electron5/files/patch-base_allocator_partition__allocator_page__allocator.cc11
-rw-r--r--devel/electron5/files/patch-base_allocator_partition__allocator_page__allocator__internals__posix.h38
-rw-r--r--devel/electron5/files/patch-base_debug_debugger__posix.cc56
-rw-r--r--devel/electron5/files/patch-base_debug_elf__reader__linux.cc13
-rw-r--r--devel/electron5/files/patch-base_debug_proc__maps__linux.cc11
-rw-r--r--devel/electron5/files/patch-base_debug_stack__trace.cc11
-rw-r--r--devel/electron5/files/patch-base_debug_stack__trace.h10
-rw-r--r--devel/electron5/files/patch-base_debug_stack__trace__posix.cc31
-rw-r--r--devel/electron5/files/patch-base_files_file__path__unittest.cc11
-rw-r--r--devel/electron5/files/patch-base_files_file__path__watcher__kqueue.h13
-rw-r--r--devel/electron5/files/patch-base_files_file__path__watcher__stub.cc51
-rw-r--r--devel/electron5/files/patch-base_files_file__path__watcher__unittest.cc11
-rw-r--r--devel/electron5/files/patch-base_files_file__util.h11
-rw-r--r--devel/electron5/files/patch-base_files_file__util__posix.cc11
-rw-r--r--devel/electron5/files/patch-base_files_memory__mapped__file__posix.cc11
-rw-r--r--devel/electron5/files/patch-base_i18n_icu__util.cc20
-rw-r--r--devel/electron5/files/patch-base_linux__util.cc18
-rw-r--r--devel/electron5/files/patch-base_logging__unittest.cc11
-rw-r--r--devel/electron5/files/patch-base_native__library__posix.cc11
-rw-r--r--devel/electron5/files/patch-base_native__library__unittest.cc11
-rw-r--r--devel/electron5/files/patch-base_numerics_safe__math__shared__impl.h13
-rw-r--r--devel/electron5/files/patch-base_posix_can__lower__nice__to.cc20
-rw-r--r--devel/electron5/files/patch-base_posix_unix__domain__socket.cc49
-rw-r--r--devel/electron5/files/patch-base_posix_unix__domain__socket__unittest.cc12
-rw-r--r--devel/electron5/files/patch-base_process_internal__linux.cc16
-rw-r--r--devel/electron5/files/patch-base_process_internal__linux.h11
-rw-r--r--devel/electron5/files/patch-base_process_kill.h11
-rw-r--r--devel/electron5/files/patch-base_process_kill__posix.cc11
-rw-r--r--devel/electron5/files/patch-base_process_launch.cc11
-rw-r--r--devel/electron5/files/patch-base_process_launch.h20
-rw-r--r--devel/electron5/files/patch-base_process_launch__posix.cc10
-rw-r--r--devel/electron5/files/patch-base_process_memory.cc20
-rw-r--r--devel/electron5/files/patch-base_process_memory.h11
-rw-r--r--devel/electron5/files/patch-base_process_memory__unittest.cc18
-rw-r--r--devel/electron5/files/patch-base_process_process__handle.cc11
-rw-r--r--devel/electron5/files/patch-base_process_process__handle.h11
-rw-r--r--devel/electron5/files/patch-base_process_process__handle__freebsd.cc17
-rw-r--r--devel/electron5/files/patch-base_process_process__iterator__freebsd.cc44
-rw-r--r--devel/electron5/files/patch-base_process_process__linux.cc18
-rw-r--r--devel/electron5/files/patch-base_process_process__metrics.cc20
-rw-r--r--devel/electron5/files/patch-base_process_process__metrics.h112
-rw-r--r--devel/electron5/files/patch-base_process_process__metrics__freebsd.cc122
-rw-r--r--devel/electron5/files/patch-base_process_process__metrics__posix.cc20
-rw-r--r--devel/electron5/files/patch-base_process_process__unittest.cc11
-rw-r--r--devel/electron5/files/patch-base_profiler_stack__sampling__profiler__unittest.cc11
-rw-r--r--devel/electron5/files/patch-base_security__unittest.cc11
-rw-r--r--devel/electron5/files/patch-base_strings_safe__sprintf__unittest.cc18
-rw-r--r--devel/electron5/files/patch-base_system_sys__info__freebsd.cc71
-rw-r--r--devel/electron5/files/patch-base_system_sys__info__posix.cc38
-rw-r--r--devel/electron5/files/patch-base_task_task__scheduler_scheduler__single__thread__task__runner__manager__unittest.cc12
-rw-r--r--devel/electron5/files/patch-base_test_generate__fontconfig__caches.cc17
-rw-r--r--devel/electron5/files/patch-base_test_launcher_test__launcher.cc10
-rw-r--r--devel/electron5/files/patch-base_test_test__file__util__linux.cc13
-rw-r--r--devel/electron5/files/patch-base_test_test__file__util__posix.cc11
-rw-r--r--devel/electron5/files/patch-base_third__party_libevent_BUILD.gn24
-rw-r--r--devel/electron5/files/patch-base_threading_platform__thread.h11
-rw-r--r--devel/electron5/files/patch-base_threading_platform__thread__linux.cc30
-rw-r--r--devel/electron5/files/patch-base_threading_platform__thread__posix.cc11
-rw-r--r--devel/electron5/files/patch-base_threading_thread__local__storage__unittest.cc11
-rw-r--r--devel/electron5/files/patch-base_threading_thread__task__runner__handle.cc26
-rw-r--r--devel/electron5/files/patch-base_trace__event_malloc__dump__provider.cc21
-rw-r--r--devel/electron5/files/patch-base_trace__event_process__memory__dump.cc11
-rw-r--r--devel/electron5/files/patch-base_trace__event_process__memory__dump.h11
-rw-r--r--devel/electron5/files/patch-build_config_BUILD.gn30
-rw-r--r--devel/electron5/files/patch-build_config_BUILDCONFIG.gn48
-rw-r--r--devel/electron5/files/patch-build_config_allocator.gni20
-rw-r--r--devel/electron5/files/patch-build_config_compiler_BUILD.gn83
-rw-r--r--devel/electron5/files/patch-build_config_compiler_compiler.gni11
-rw-r--r--devel/electron5/files/patch-build_config_features.gni11
-rw-r--r--devel/electron5/files/patch-build_config_freetype_freetype.gni9
-rw-r--r--devel/electron5/files/patch-build_config_linux_BUILD.gn11
-rw-r--r--devel/electron5/files/patch-build_config_linux_pkg-config.py26
-rw-r--r--devel/electron5/files/patch-build_config_sysroot.gni15
-rw-r--r--devel/electron5/files/patch-build_detect__host__arch.py11
-rw-r--r--devel/electron5/files/patch-build_gn__run__binary.py11
-rw-r--r--devel/electron5/files/patch-build_linux_chrome.map29
-rw-r--r--devel/electron5/files/patch-build_linux_libpci_BUILD.gn53
-rw-r--r--devel/electron5/files/patch-build_linux_unbundle_libusb.gn27
-rw-r--r--devel/electron5/files/patch-build_linux_unbundle_replace__gn__files.py10
-rw-r--r--devel/electron5/files/patch-build_toolchain_gcc__toolchain.gni45
-rw-r--r--devel/electron5/files/patch-build_toolchain_get__concurrent__links.py17
-rw-r--r--devel/electron5/files/patch-build_toolchain_linux_BUILD.gn10
-rw-r--r--devel/electron5/files/patch-cc_BUILD.gn21
-rw-r--r--devel/electron5/files/patch-cc_layers_scrollbar__layer__impl__base.cc13
-rw-r--r--devel/electron5/files/patch-cc_trees_property__tree.cc20
-rw-r--r--devel/electron5/files/patch-chrome_app_chrome__command__ids.h11
-rw-r--r--devel/electron5/files/patch-chrome_app_chrome__main.cc16
-rw-r--r--devel/electron5/files/patch-chrome_app_chrome__main__delegate.cc128
-rw-r--r--devel/electron5/files/patch-chrome_app_chromium__strings.grd20
-rw-r--r--devel/electron5/files/patch-chrome_app_generated__resources.grd29
-rw-r--r--devel/electron5/files/patch-chrome_app_google__chrome__strings.grd20
-rw-r--r--devel/electron5/files/patch-chrome_app_settings__strings.grdp20
-rw-r--r--devel/electron5/files/patch-chrome_app_shutdown__signal__handlers__posix.cc21
-rw-r--r--devel/electron5/files/patch-chrome_app_theme_chrome__unscaled__resources.grd11
-rw-r--r--devel/electron5/files/patch-chrome_browser_about__flags.cc120
-rw-r--r--devel/electron5/files/patch-chrome_browser_after__startup__task__utils.cc38
-rw-r--r--devel/electron5/files/patch-chrome_browser_apps_platform__apps_api_music__manager__private_device__id__linux.cc70
-rw-r--r--devel/electron5/files/patch-chrome_browser_autocomplete_chrome__autocomplete__scheme__classifier.cc11
-rw-r--r--devel/electron5/files/patch-chrome_browser_background_background__mode__optimizer.cc15
-rw-r--r--devel/electron5/files/patch-chrome_browser_browser__resources.grd11
-rw-r--r--devel/electron5/files/patch-chrome_browser_chrome__browser__main.cc72
-rw-r--r--devel/electron5/files/patch-chrome_browser_chrome__browser__main__linux.cc27
-rw-r--r--devel/electron5/files/patch-chrome_browser_chrome__browser__main__posix.cc11
-rw-r--r--devel/electron5/files/patch-chrome_browser_chrome__content__browser__client.cc97
-rw-r--r--devel/electron5/files/patch-chrome_browser_chrome__content__browser__client.h17
-rw-r--r--devel/electron5/files/patch-chrome_browser_custom__handlers_protocol__handler__registry.cc11
-rw-r--r--devel/electron5/files/patch-chrome_browser_defaults.cc11
-rw-r--r--devel/electron5/files/patch-chrome_browser_devtools_devtools__eye__dropper.cc11
-rw-r--r--devel/electron5/files/patch-chrome_browser_diagnostics_diagnostics__writer.h11
-rw-r--r--devel/electron5/files/patch-chrome_browser_download_chrome__download__manager__delegate.cc20
-rw-r--r--devel/electron5/files/patch-chrome_browser_download_download__commands.cc20
-rw-r--r--devel/electron5/files/patch-chrome_browser_download_download__commands.h11
-rw-r--r--devel/electron5/files/patch-chrome_browser_download_download__item__model.cc20
-rw-r--r--devel/electron5/files/patch-chrome_browser_download_download__prefs.cc65
-rw-r--r--devel/electron5/files/patch-chrome_browser_download_download__prefs.h20
-rw-r--r--devel/electron5/files/patch-chrome_browser_download_download__query.cc14
-rw-r--r--devel/electron5/files/patch-chrome_browser_download_download__shelf__context__menu.cc11
-rw-r--r--devel/electron5/files/patch-chrome_browser_download_download__status__updater.cc20
-rw-r--r--devel/electron5/files/patch-chrome_browser_extensions_BUILD.gn15
-rw-r--r--devel/electron5/files/patch-chrome_browser_extensions_activity__log_activity__log.cc14
-rw-r--r--devel/electron5/files/patch-chrome_browser_extensions_api_image__writer__private_removable__storage__provider.cc20
-rw-r--r--devel/electron5/files/patch-chrome_browser_extensions_api_input__ime_input__ime__api.h11
-rw-r--r--devel/electron5/files/patch-chrome_browser_extensions_api_runtime_chrome__runtime__api__delegate.cc11
-rw-r--r--devel/electron5/files/patch-chrome_browser_extensions_api_settings__private_prefs__util.cc20
-rw-r--r--devel/electron5/files/patch-chrome_browser_extensions_bookmark__app__helper.cc11
-rw-r--r--devel/electron5/files/patch-chrome_browser_extensions_browser__context__keyed__service__factories.cc20
-rw-r--r--devel/electron5/files/patch-chrome_browser_extensions_external__provider__impl.cc20
-rw-r--r--devel/electron5/files/patch-chrome_browser_extensions_install__signer.cc18
-rw-r--r--devel/electron5/files/patch-chrome_browser_first__run_first__run__internal__posix.cc20
-rw-r--r--devel/electron5/files/patch-chrome_browser_flag__descriptions.cc34
-rw-r--r--devel/electron5/files/patch-chrome_browser_flag__descriptions.h32
-rw-r--r--devel/electron5/files/patch-chrome_browser_media__galleries_fileapi_mtp__device__map__service.cc15
-rw-r--r--devel/electron5/files/patch-chrome_browser_media__galleries_media__file__system__registry.cc14
-rw-r--r--devel/electron5/files/patch-chrome_browser_media_router_discovery_discovery__network__list__posix.cc28
-rw-r--r--devel/electron5/files/patch-chrome_browser_media_router_discovery_discovery__network__list__wifi__linux.cc27
-rw-r--r--devel/electron5/files/patch-chrome_browser_media_router_providers_wired__display_wired__display__media__route__provider.cc23
-rw-r--r--devel/electron5/files/patch-chrome_browser_media_webrtc_webrtc__event__log__uploader.cc11
-rw-r--r--devel/electron5/files/patch-chrome_browser_media_webrtc_webrtc__log__uploader.cc11
-rw-r--r--devel/electron5/files/patch-chrome_browser_media_webrtc_webrtc__logging__handler__host.cc33
-rw-r--r--devel/electron5/files/patch-chrome_browser_media_webrtc_webrtc__logging__handler__host.h36
-rw-r--r--devel/electron5/files/patch-chrome_browser_memory__details.cc20
-rw-r--r--devel/electron5/files/patch-chrome_browser_memory__details__linux.cc13
-rw-r--r--devel/electron5/files/patch-chrome_browser_metrics_bluetooth__available__utility.cc13
-rw-r--r--devel/electron5/files/patch-chrome_browser_metrics_chrome__browser__main__extra__parts__metrics.cc21
-rw-r--r--devel/electron5/files/patch-chrome_browser_net_system__network__context__manager.cc26
-rw-r--r--devel/electron5/files/patch-chrome_browser_password__manager_chrome__password__manager__client.cc14
-rw-r--r--devel/electron5/files/patch-chrome_browser_password__manager_password__store__factory.cc11
-rw-r--r--devel/electron5/files/patch-chrome_browser_platform__util.h11
-rw-r--r--devel/electron5/files/patch-chrome_browser_plugins_plugins__resource__service.cc11
-rw-r--r--devel/electron5/files/patch-chrome_browser_policy_configuration__policy__handler__list__factory.cc20
-rw-r--r--devel/electron5/files/patch-chrome_browser_policy_machine__level__user__cloud__policy__controller.cc20
-rw-r--r--devel/electron5/files/patch-chrome_browser_policy_policy__prefs__browsertest.cc11
-rw-r--r--devel/electron5/files/patch-chrome_browser_prefs_browser__prefs.cc20
-rw-r--r--devel/electron5/files/patch-chrome_browser_prefs_pref__service__incognito__whitelist.cc11
-rw-r--r--devel/electron5/files/patch-chrome_browser_process__singleton__posix.cc34
-rw-r--r--devel/electron5/files/patch-chrome_browser_profiles_chrome__browser__main__extra__parts__profiles.cc11
-rw-r--r--devel/electron5/files/patch-chrome_browser_profiles_profile__attributes__entry.cc11
-rw-r--r--devel/electron5/files/patch-chrome_browser_renderer__context__menu_render__view__context__menu.cc29
-rw-r--r--devel/electron5/files/patch-chrome_browser_renderer__preferences__util.cc29
-rw-r--r--devel/electron5/files/patch-chrome_browser_resources_safe__browsing_gen__file__type__proto.py19
-rw-r--r--devel/electron5/files/patch-chrome_browser_resources_settings_appearance__page_appearance__browser__proxy.js20
-rw-r--r--devel/electron5/files/patch-chrome_browser_resources_settings_appearance__page_appearance__page.html29
-rw-r--r--devel/electron5/files/patch-chrome_browser_resources_settings_appearance__page_appearance__page.js33
-rw-r--r--devel/electron5/files/patch-chrome_browser_safe__browsing_incident__reporting_incident__handler__util.cc15
-rw-r--r--devel/electron5/files/patch-chrome_browser_safe__browsing_incident__reporting_incident__reporting__service.cc11
-rw-r--r--devel/electron5/files/patch-chrome_browser_search_local__files__ntp__source.cc16
-rw-r--r--devel/electron5/files/patch-chrome_browser_signin_signin__util.cc11
-rw-r--r--devel/electron5/files/patch-chrome_browser_ssl_ssl__error__controller__client.cc20
-rw-r--r--devel/electron5/files/patch-chrome_browser_sync_chrome__sync__client.cc20
-rw-r--r--devel/electron5/files/patch-chrome_browser_task__manager_sampling_task__group.cc56
-rw-r--r--devel/electron5/files/patch-chrome_browser_task__manager_sampling_task__group.h39
-rw-r--r--devel/electron5/files/patch-chrome_browser_task__manager_sampling_task__group__sampler.cc72
-rw-r--r--devel/electron5/files/patch-chrome_browser_task__manager_sampling_task__group__sampler.h50
-rw-r--r--devel/electron5/files/patch-chrome_browser_task__manager_sampling_task__manager__impl.cc16
-rw-r--r--devel/electron5/files/patch-chrome_browser_task__manager_task__manager__observer.h16
-rw-r--r--devel/electron5/files/patch-chrome_browser_tracing_crash__service__uploader.cc11
-rw-r--r--devel/electron5/files/patch-chrome_browser_ui_browser__command__controller.cc38
-rw-r--r--devel/electron5/files/patch-chrome_browser_ui_browser__view__prefs.cc20
-rw-r--r--devel/electron5/files/patch-chrome_browser_ui_browser__window.h11
-rw-r--r--devel/electron5/files/patch-chrome_browser_ui_exclusive__access_exclusive__access__bubble.cc11
-rw-r--r--devel/electron5/files/patch-chrome_browser_ui_input__method_input__method__engine.h11
-rw-r--r--devel/electron5/files/patch-chrome_browser_ui_input__method_input__method__engine__base.cc11
-rw-r--r--devel/electron5/files/patch-chrome_browser_ui_libgtkui_print__dialog__gtk.cc10
-rw-r--r--devel/electron5/files/patch-chrome_browser_ui_sad__tab.cc11
-rw-r--r--devel/electron5/files/patch-chrome_browser_ui_startup_bad__flags__prompt.cc11
-rw-r--r--devel/electron5/files/patch-chrome_browser_ui_startup_startup__browser__creator.cc22
-rw-r--r--devel/electron5/files/patch-chrome_browser_ui_tab__helpers.cc25
-rw-r--r--devel/electron5/files/patch-chrome_browser_ui_task__manager_task__manager__columns.cc15
-rw-r--r--devel/electron5/files/patch-chrome_browser_ui_task__manager_task__manager__table__model.cc50
-rw-r--r--devel/electron5/files/patch-chrome_browser_ui_toolbar_app__menu__model.cc11
-rw-r--r--devel/electron5/files/patch-chrome_browser_ui_views_accelerator__table.cc46
-rw-r--r--devel/electron5/files/patch-chrome_browser_ui_views_chrome__browser__main__extra__parts__views.cc38
-rw-r--r--devel/electron5/files/patch-chrome_browser_ui_views_chrome__views__delegate.h11
-rw-r--r--devel/electron5/files/patch-chrome_browser_ui_views_first__run__dialog.cc24
-rw-r--r--devel/electron5/files/patch-chrome_browser_ui_views_frame_browser__frame.cc29
-rw-r--r--devel/electron5/files/patch-chrome_browser_ui_views_frame_browser__non__client__frame__view__factory__views.cc20
-rw-r--r--devel/electron5/files/patch-chrome_browser_ui_views_frame_browser__view.cc29
-rw-r--r--devel/electron5/files/patch-chrome_browser_ui_views_frame_browser__view.h20
-rw-r--r--devel/electron5/files/patch-chrome_browser_ui_views_frame_opaque__browser__frame__view.cc29
-rw-r--r--devel/electron5/files/patch-chrome_browser_ui_views_frame_opaque__browser__frame__view__platform__specific.cc11
-rw-r--r--devel/electron5/files/patch-chrome_browser_ui_views_frame_system__menu__model__builder.cc29
-rw-r--r--devel/electron5/files/patch-chrome_browser_ui_views_frame_system__menu__model__delegate.cc20
-rw-r--r--devel/electron5/files/patch-chrome_browser_ui_views_hung__renderer__view.cc11
-rw-r--r--devel/electron5/files/patch-chrome_browser_ui_views_tabs_new__tab__button.cc11
-rw-r--r--devel/electron5/files/patch-chrome_browser_ui_views_tabs_tab__drag__controller.cc29
-rw-r--r--devel/electron5/files/patch-chrome_browser_ui_webui_about__ui.cc20
-rw-r--r--devel/electron5/files/patch-chrome_browser_ui_webui_chrome__web__ui__controller__factory.cc49
-rw-r--r--devel/electron5/files/patch-chrome_browser_ui_webui_settings_appearance__handler.cc20
-rw-r--r--devel/electron5/files/patch-chrome_browser_ui_webui_settings_appearance__handler.h11
-rw-r--r--devel/electron5/files/patch-chrome_browser_ui_webui_settings_md__settings__localized__strings__provider.cc20
-rw-r--r--devel/electron5/files/patch-chrome_browser_web__applications_extensions_web__app__extension__shortcut.cc11
-rw-r--r--devel/electron5/files/patch-chrome_common_BUILD.gn13
-rw-r--r--devel/electron5/files/patch-chrome_common_chrome__features.cc36
-rw-r--r--devel/electron5/files/patch-chrome_common_chrome__features.h24
-rw-r--r--devel/electron5/files/patch-chrome_common_chrome__paths.cc114
-rw-r--r--devel/electron5/files/patch-chrome_common_chrome__paths.h42
-rw-r--r--devel/electron5/files/patch-chrome_common_chrome__paths__internal.h11
-rw-r--r--devel/electron5/files/patch-chrome_common_chrome__switches.cc17
-rw-r--r--devel/electron5/files/patch-chrome_common_chrome__switches.h17
-rw-r--r--devel/electron5/files/patch-chrome_common_extensions_api_api__sources.gni11
-rw-r--r--devel/electron5/files/patch-chrome_common_extensions_command.cc11
-rw-r--r--devel/electron5/files/patch-chrome_common_features.gni14
-rw-r--r--devel/electron5/files/patch-chrome_common_pref__names.cc29
-rw-r--r--devel/electron5/files/patch-chrome_common_pref__names.h29
-rw-r--r--devel/electron5/files/patch-chrome_common_webui__url__constants.cc41
-rw-r--r--devel/electron5/files/patch-chrome_common_webui__url__constants.h25
-rw-r--r--devel/electron5/files/patch-chrome_renderer_chrome__content__renderer__client.cc11
-rw-r--r--devel/electron5/files/patch-chrome_renderer_pepper_pepper__flash__font__file__host.cc29
-rw-r--r--devel/electron5/files/patch-chrome_renderer_pepper_pepper__flash__font__file__host.h20
-rw-r--r--devel/electron5/files/patch-chrome_service_cloud__print_print__system.cc11
-rw-r--r--devel/electron5/files/patch-chrome_test_BUILD.gn11
-rw-r--r--devel/electron5/files/patch-chrome_test_base_in__process__browser__test.cc22
-rw-r--r--devel/electron5/files/patch-chrome_test_base_testing__browser__process.h13
-rw-r--r--devel/electron5/files/patch-chrome_test_chromedriver_chrome_chrome__finder.cc20
-rw-r--r--devel/electron5/files/patch-chromecast_browser_cast__browser__main__parts.cc29
-rw-r--r--devel/electron5/files/patch-chromecast_browser_cast__content__browser__client.cc11
-rw-r--r--devel/electron5/files/patch-chromecast_browser_tts_tts__controller__impl.cc14
-rw-r--r--devel/electron5/files/patch-chromecast_media_cma_backend_media__pipeline__backend__for__mixer.cc23
-rw-r--r--devel/electron5/files/patch-components_autofill__strings.grdp11
-rw-r--r--devel/electron5/files/patch-components_autofill_content_renderer_password__form__conversion__utils.cc14
-rw-r--r--devel/electron5/files/patch-components_autofill_core_browser_autofill__experiments.cc46
-rw-r--r--devel/electron5/files/patch-components_autofill_core_browser_autofill__experiments.h36
-rw-r--r--devel/electron5/files/patch-components_autofill_core_common_autofill__util.cc11
-rw-r--r--devel/electron5/files/patch-components_content__settings_core_browser_website__settings__registry.cc11
-rw-r--r--devel/electron5/files/patch-components_cookie__config_cookie__store__util.cc24
-rw-r--r--devel/electron5/files/patch-components_crash_content_app_BUILD.gn29
-rw-r--r--devel/electron5/files/patch-components_crash_content_app_crashpad.cc43
-rw-r--r--devel/electron5/files/patch-components_crash_content_browser_BUILD.gn27
-rw-r--r--devel/electron5/files/patch-components_crash_core_common_BUILD.gn28
-rw-r--r--devel/electron5/files/patch-components_download_internal_common_base__file.cc11
-rw-r--r--devel/electron5/files/patch-components_download_quarantine_quarantine__linux.cc36
-rw-r--r--devel/electron5/files/patch-components_download_quarantine_test__support__linux.cc20
-rw-r--r--devel/electron5/files/patch-components_feature__engagement_public_event__constants.cc14
-rw-r--r--devel/electron5/files/patch-components_feature__engagement_public_event__constants.h20
-rw-r--r--devel/electron5/files/patch-components_feedback_anonymizer__tool.cc14
-rw-r--r--devel/electron5/files/patch-components_flags__ui_flags__state.cc11
-rw-r--r--devel/electron5/files/patch-components_gcm__driver_gcm__client.h10
-rw-r--r--devel/electron5/files/patch-components_gcm__driver_gcm__client__impl.cc12
-rw-r--r--devel/electron5/files/patch-components_keyed__service_core_dependency__graph__unittest.cc14
-rw-r--r--devel/electron5/files/patch-components_metrics_BUILD.gn14
-rw-r--r--devel/electron5/files/patch-components_metrics_drive__metrics__provider__linux.cc16
-rw-r--r--devel/electron5/files/patch-components_metrics_metrics__log.cc11
-rw-r--r--devel/electron5/files/patch-components_metrics_system__memory__stats__recorder__linux.cc18
-rw-r--r--devel/electron5/files/patch-components_neterror_resources_neterror.js11
-rw-r--r--devel/electron5/files/patch-components_network__session__configurator_browser_network__session__configurator.cc11
-rw-r--r--devel/electron5/files/patch-components_new__or__sad__tab__strings.grdp38
-rw-r--r--devel/electron5/files/patch-components_os__crypt_os__crypt.h48
-rw-r--r--devel/electron5/files/patch-components_os__crypt_os__crypt__unittest.cc11
-rw-r--r--devel/electron5/files/patch-components_plugins_renderer_plugin__placeholder.cc14
-rw-r--r--devel/electron5/files/patch-components_policy_core_common_cloud_cloud__policy__util.cc73
-rw-r--r--devel/electron5/files/patch-components_policy_core_common_schema.cc14
-rw-r--r--devel/electron5/files/patch-components_policy_resources_policy__templates.json83
-rw-r--r--devel/electron5/files/patch-components_policy_tools_generate__policy__source.py20
-rw-r--r--devel/electron5/files/patch-components_previews_core_previews__features.cc18
-rw-r--r--devel/electron5/files/patch-components_services_filesystem_file__system__app.cc20
-rw-r--r--devel/electron5/files/patch-components_services_font_font__service__app.cc11
-rw-r--r--devel/electron5/files/patch-components_startup__metric__utils_browser_startup__metric__utils.cc20
-rw-r--r--devel/electron5/files/patch-components_storage__monitor_BUILD.gn20
-rw-r--r--devel/electron5/files/patch-components_storage__monitor_removable__device__constants.cc11
-rw-r--r--devel/electron5/files/patch-components_storage__monitor_removable__device__constants.h11
-rw-r--r--devel/electron5/files/patch-components_storage__monitor_storage__monitor__freebsd.cc57
-rw-r--r--devel/electron5/files/patch-components_storage__monitor_storage__monitor__freebsd.h48
-rw-r--r--devel/electron5/files/patch-components_sync_base_get__session__name.cc20
-rw-r--r--devel/electron5/files/patch-components_sync_base_get__session__name__linux.cc14
-rw-r--r--devel/electron5/files/patch-components_sync_device__info_local__device__info__provider__impl.cc11
-rw-r--r--devel/electron5/files/patch-components_update__client_update__query__params.cc11
-rw-r--r--devel/electron5/files/patch-components_url__matcher_regex__set__matcher.cc16
-rw-r--r--devel/electron5/files/patch-components_url__matcher_url__matcher__factory.cc14
-rw-r--r--devel/electron5/files/patch-components_webcrypto_algorithms_test__helpers.cc14
-rw-r--r--devel/electron5/files/patch-content_app_content__main__runner__impl.cc73
-rw-r--r--devel/electron5/files/patch-content_browser_BUILD.gn14
-rw-r--r--devel/electron5/files/patch-content_browser_browser__main__loop.cc46
-rw-r--r--devel/electron5/files/patch-content_browser_child__process__launcher__helper__linux.cc76
-rw-r--r--devel/electron5/files/patch-content_browser_media_media__internals.cc11
-rw-r--r--devel/electron5/files/patch-content_browser_memory_memory__monitor.cc11
-rw-r--r--devel/electron5/files/patch-content_browser_memory_swap__metrics__driver__impl__linux.cc27
-rw-r--r--devel/electron5/files/patch-content_browser_renderer__host_input_input__device__change__observer.cc29
-rw-r--r--devel/electron5/files/patch-content_browser_renderer__host_render__message__filter.cc29
-rw-r--r--devel/electron5/files/patch-content_browser_renderer__host_render__message__filter.h19
-rw-r--r--devel/electron5/files/patch-content_browser_renderer__host_render__process__host__impl.h15
-rw-r--r--devel/electron5/files/patch-content_browser_renderer__host_render__view__host__impl.cc11
-rw-r--r--devel/electron5/files/patch-content_browser_renderer__host_render__widget__host__view__aura.cc29
-rw-r--r--devel/electron5/files/patch-content_browser_renderer__host_render__widget__host__view__event__handler.cc11
-rw-r--r--devel/electron5/files/patch-content_browser_scheduler_responsiveness_native__event__observer.cc29
-rw-r--r--devel/electron5/files/patch-content_browser_scheduler_responsiveness_native__event__observer.h47
-rw-r--r--devel/electron5/files/patch-content_browser_service__manager_service__manager__context.cc35
-rw-r--r--devel/electron5/files/patch-content_browser_storage__partition__impl.cc11
-rw-r--r--devel/electron5/files/patch-content_browser_storage__partition__impl__map.cc11
-rw-r--r--devel/electron5/files/patch-content_browser_webui_shared__resources__data__source.cc14
-rw-r--r--devel/electron5/files/patch-content_common_BUILD.gn15
-rw-r--r--devel/electron5/files/patch-content_common_common__sandbox__support__linux.cc10
-rw-r--r--devel/electron5/files/patch-content_common_user__agent.cc17
-rw-r--r--devel/electron5/files/patch-content_gpu_BUILD.gn11
-rw-r--r--devel/electron5/files/patch-content_gpu_gpu__main.cc47
-rw-r--r--devel/electron5/files/patch-content_gpu_gpu__sandbox__hook__linux.cc58
-rw-r--r--devel/electron5/files/patch-content_ppapi__plugin_ppapi__blink__platform__impl.cc38
-rw-r--r--devel/electron5/files/patch-content_ppapi__plugin_ppapi__blink__platform__impl.h25
-rw-r--r--devel/electron5/files/patch-content_public_app_content__packaged__services__manifest.cc20
-rw-r--r--devel/electron5/files/patch-content_public_app_v8__snapshot__overlay__manifest.cc11
-rw-r--r--devel/electron5/files/patch-content_public_common_child__process__host.h20
-rw-r--r--devel/electron5/files/patch-content_public_common_common__param__traits__macros.h11
-rw-r--r--devel/electron5/files/patch-content_public_common_content__features.cc11
-rw-r--r--devel/electron5/files/patch-content_public_common_content__switches.cc11
-rw-r--r--devel/electron5/files/patch-content_public_common_content__switches.h11
-rw-r--r--devel/electron5/files/patch-content_public_common_renderer__preferences.h11
-rw-r--r--devel/electron5/files/patch-content_public_common_use__zoom__for__dsf__policy.cc11
-rw-r--r--devel/electron5/files/patch-content_public_test_browser__test__base.cc13
-rw-r--r--devel/electron5/files/patch-content_public_test_mock__render__thread.cc11
-rw-r--r--devel/electron5/files/patch-content_renderer_media_audio_audio__device__factory.cc11
-rw-r--r--devel/electron5/files/patch-content_renderer_media_stream_processed__local__audio__source.cc20
-rw-r--r--devel/electron5/files/patch-content_renderer_media_webrtc_webrtc__audio__renderer__unittest.cc11
-rw-r--r--devel/electron5/files/patch-content_renderer_render__thread__impl.cc56
-rw-r--r--devel/electron5/files/patch-content_renderer_renderer__blink__platform__impl.cc56
-rw-r--r--devel/electron5/files/patch-content_renderer_renderer__blink__platform__impl.h29
-rw-r--r--devel/electron5/files/patch-content_renderer_renderer__main__platform__delegate__linux.cc19
-rw-r--r--devel/electron5/files/patch-content_shell_BUILD.gn11
-rw-r--r--devel/electron5/files/patch-content_shell_browser_shell__browser__context.cc20
-rw-r--r--devel/electron5/files/patch-content_shell_browser_shell__browser__main__parts.cc20
-rw-r--r--devel/electron5/files/patch-content_shell_test__runner_test__runner.cc29
-rw-r--r--devel/electron5/files/patch-content_test_content__test__suite.cc18
-rw-r--r--devel/electron5/files/patch-content_utility_utility__blink__platform__with__sandbox__support__impl.cc29
-rw-r--r--devel/electron5/files/patch-content_utility_utility__blink__platform__with__sandbox__support__impl.h24
-rw-r--r--devel/electron5/files/patch-device_bluetooth_BUILD.gn11
-rw-r--r--devel/electron5/files/patch-device_gamepad_gamepad__provider.cc11
-rw-r--r--devel/electron5/files/patch-device_usb_BUILD.gn21
-rw-r--r--devel/electron5/files/patch-device_usb_usb__context.cc12
-rw-r--r--devel/electron5/files/patch-device_usb_usb__error.cc11
-rw-r--r--devel/electron5/files/patch-device_usb_usb__service__impl.cc45
-rw-r--r--devel/electron5/files/patch-device_usb_usb__service__impl.h26
-rw-r--r--devel/electron5/files/patch-electron_BUILD.gn36
-rw-r--r--devel/electron5/files/patch-electron_atom_app_atom__main.cc35
-rw-r--r--devel/electron5/files/patch-electron_atom_app_atom__main__delegate.cc29
-rw-r--r--devel/electron5/files/patch-electron_atom_browser_api_atom__api__app.cc38
-rw-r--r--devel/electron5/files/patch-electron_atom_browser_api_atom__api__web__contents.cc34
-rw-r--r--devel/electron5/files/patch-electron_atom_browser_atom__browser__main__parts.cc11
-rw-r--r--devel/electron5/files/patch-electron_atom_browser_atom__browser__main__parts__posix.cc20
-rw-r--r--devel/electron5/files/patch-electron_atom_browser_atom__paths.h11
-rw-r--r--devel/electron5/files/patch-electron_atom_browser_browser.h33
-rw-r--r--devel/electron5/files/patch-electron_atom_browser_native__window__views.cc47
-rw-r--r--devel/electron5/files/patch-electron_atom_browser_native__window__views.h11
-rw-r--r--devel/electron5/files/patch-electron_atom_browser_relauncher__linux.cc32
-rw-r--r--devel/electron5/files/patch-electron_atom_browser_ui_views_atom__views__delegate.cc38
-rw-r--r--devel/electron5/files/patch-electron_atom_browser_ui_views_atom__views__delegate.h11
-rw-r--r--devel/electron5/files/patch-electron_atom_browser_ui_views_submenu__button.cc11
-rw-r--r--devel/electron5/files/patch-electron_atom_common_api_atom__api__crash__reporter.cc42
-rw-r--r--devel/electron5/files/patch-electron_atom_common_api_atom__bindings.cc11
-rw-r--r--devel/electron5/files/patch-electron_atom_common_atom__command__line.cc11
-rw-r--r--devel/electron5/files/patch-electron_atom_common_atom__command__line.h11
-rw-r--r--devel/electron5/files/patch-electron_atom_common_crash__reporter_crash__reporter.cc14
-rw-r--r--devel/electron5/files/patch-electron_atom_common_node__bindings.cc11
-rw-r--r--devel/electron5/files/patch-electron_atom_common_node__bindings__linux.cc69
-rw-r--r--devel/electron5/files/patch-electron_atom_common_platform__util.h11
-rw-r--r--devel/electron5/files/patch-electron_chromium__src_chrome_browser_process__singleton__posix.cc20
-rw-r--r--devel/electron5/files/patch-electron_default__app_default__app.js11
-rw-r--r--devel/electron5/files/patch-electron_lib_browser_api_app.js11
-rw-r--r--devel/electron5/files/patch-electron_lib_browser_api_dialog.js11
-rw-r--r--devel/electron5/files/patch-electron_lib_browser_api_menu-item-roles.js11
-rw-r--r--devel/electron5/files/patch-electron_lib_browser_api_power-monitor.js11
-rw-r--r--devel/electron5/files/patch-electron_lib_browser_init.js11
-rw-r--r--devel/electron5/files/patch-electron_lib_common_api_clipboard.js10
-rw-r--r--devel/electron5/files/patch-electron_script_lib_config.py11
-rw-r--r--devel/electron5/files/patch-electron_script_lib_utils.js11
-rw-r--r--devel/electron5/files/patch-electron_script_spec-runner.js11
-rw-r--r--devel/electron5/files/patch-electron_spec_api-app-spec.js83
-rw-r--r--devel/electron5/files/patch-electron_spec_api-auto-updater-spec.js11
-rw-r--r--devel/electron5/files/patch-electron_spec_api-browser-window-spec.js47
-rw-r--r--devel/electron5/files/patch-electron_spec_api-clipboard-spec.js38
-rw-r--r--devel/electron5/files/patch-electron_spec_api-content-tracing-spec.js11
-rw-r--r--devel/electron5/files/patch-electron_spec_api-crash-reporter-spec.js11
-rw-r--r--devel/electron5/files/patch-electron_spec_api-net-log-spec.js29
-rw-r--r--devel/electron5/files/patch-electron_spec_api-notification-dbus-spec.js11
-rw-r--r--devel/electron5/files/patch-electron_spec_api-power-monitor-spec.js11
-rw-r--r--devel/electron5/files/patch-electron_spec_api-process-spec.js11
-rw-r--r--devel/electron5/files/patch-electron_spec_api-shell-spec.js42
-rw-r--r--devel/electron5/files/patch-electron_spec_chromium-spec.js27
-rw-r--r--devel/electron5/files/patch-electron_spec_version-bump-spec.js11
-rw-r--r--devel/electron5/files/patch-extensions_browser_api_declarative__webrequest_webrequest__action.cc14
-rw-r--r--devel/electron5/files/patch-extensions_browser_api_messaging_message__service.cc35
-rw-r--r--devel/electron5/files/patch-extensions_browser_api_networking__private_networking__private__delegate__factory.cc20
-rw-r--r--devel/electron5/files/patch-extensions_browser_api_web__request_form__data__parser.cc14
-rw-r--r--devel/electron5/files/patch-extensions_browser_browser__context__keyed__service__factories.cc11
-rw-r--r--devel/electron5/files/patch-extensions_common_api___permission__features.json29
-rw-r--r--devel/electron5/files/patch-extensions_common_api_runtime.json11
-rw-r--r--devel/electron5/files/patch-extensions_common_feature__switch.cc14
-rw-r--r--devel/electron5/files/patch-extensions_common_features_feature.cc11
-rw-r--r--devel/electron5/files/patch-extensions_common_image__util.cc14
-rw-r--r--devel/electron5/files/patch-extensions_common_stack__frame.cc14
-rw-r--r--devel/electron5/files/patch-extensions_renderer_bindings_api__binding__util.cc11
-rw-r--r--devel/electron5/files/patch-extensions_shell_app_shell__main__delegate.cc29
-rw-r--r--devel/electron5/files/patch-gpu_command__buffer_common_gpu__memory__buffer__support.cc11
-rw-r--r--devel/electron5/files/patch-gpu_command__buffer_service_program__manager.cc14
-rw-r--r--devel/electron5/files/patch-gpu_command__buffer_tests_gl__copy__texture__CHROMIUM__unittest.cc11
-rw-r--r--devel/electron5/files/patch-gpu_command__buffer_tests_gl__test__utils.cc20
-rw-r--r--devel/electron5/files/patch-gpu_command__buffer_tests_gl__test__utils.h11
-rw-r--r--devel/electron5/files/patch-gpu_config_gpu__control__list.cc32
-rw-r--r--devel/electron5/files/patch-gpu_config_gpu__test__config.cc11
-rw-r--r--devel/electron5/files/patch-gpu_ipc_common_gpu__memory__buffer__support.cc47
-rw-r--r--devel/electron5/files/patch-gpu_ipc_common_gpu__memory__buffer__support.h29
-rw-r--r--devel/electron5/files/patch-gpu_ipc_service_gpu__init.cc29
-rw-r--r--devel/electron5/files/patch-gpu_ipc_service_gpu__memory__buffer__factory.cc20
-rw-r--r--devel/electron5/files/patch-gpu_ipc_service_gpu__watchdog__thread.cc73
-rw-r--r--devel/electron5/files/patch-gpu_ipc_service_gpu__watchdog__thread.h13
-rw-r--r--devel/electron5/files/patch-headless_lib_browser_headless__content__browser__client.cc20
-rw-r--r--devel/electron5/files/patch-headless_lib_browser_headless__content__browser__client.h11
-rw-r--r--devel/electron5/files/patch-headless_lib_browser_headless__request__context__manager.cc38
-rw-r--r--devel/electron5/files/patch-headless_lib_browser_headless__request__context__manager.h11
-rw-r--r--devel/electron5/files/patch-headless_lib_headless__macros.h13
-rw-r--r--devel/electron5/files/patch-ipc_ipc__channel.h11
-rw-r--r--devel/electron5/files/patch-ipc_ipc__channel__common.cc11
-rw-r--r--devel/electron5/files/patch-ipc_ipc__channel__mojo.cc11
-rw-r--r--devel/electron5/files/patch-ipc_ipc__message__utils.cc11
-rw-r--r--devel/electron5/files/patch-ipc_ipc__message__utils.h11
-rw-r--r--devel/electron5/files/patch-media_BUILD.gn12
-rw-r--r--devel/electron5/files/patch-media_audio_BUILD.gn22
-rw-r--r--devel/electron5/files/patch-media_audio_alsa_audio__manager__alsa.cc54
-rw-r--r--devel/electron5/files/patch-media_audio_audio__input__device.cc11
-rw-r--r--devel/electron5/files/patch-media_audio_audio__manager.cc29
-rw-r--r--devel/electron5/files/patch-media_audio_audio__manager.h11
-rw-r--r--devel/electron5/files/patch-media_audio_audio__output__proxy__unittest.cc11
-rw-r--r--devel/electron5/files/patch-media_base_audio__latency.cc11
-rw-r--r--devel/electron5/files/patch-media_base_scopedfd__helper.h19
-rw-r--r--devel/electron5/files/patch-media_base_video__frame.cc47
-rw-r--r--devel/electron5/files/patch-media_base_video__frame.h38
-rw-r--r--devel/electron5/files/patch-media_capture_video_create__video__capture__device__factory.cc20
-rw-r--r--devel/electron5/files/patch-media_capture_video_fake__video__capture__device__factory.cc11
-rw-r--r--devel/electron5/files/patch-media_capture_video_file__video__capture__device__factory.cc11
-rw-r--r--devel/electron5/files/patch-media_capture_video_linux_v4l2__capture__delegate.cc26
-rw-r--r--devel/electron5/files/patch-media_capture_video_linux_video__capture__device__factory__linux.cc32
-rw-r--r--devel/electron5/files/patch-media_capture_video_linux_video__capture__device__linux.cc60
-rw-r--r--devel/electron5/files/patch-media_capture_video_mock__gpu__memory__buffer__manager.cc11
-rw-r--r--devel/electron5/files/patch-media_capture_video_shared__memory__handle__provider.cc11
-rw-r--r--devel/electron5/files/patch-media_capture_video_shared__memory__handle__provider.h11
-rw-r--r--devel/electron5/files/patch-media_capture_video_video__capture__device__client.cc11
-rw-r--r--devel/electron5/files/patch-media_filters_vp9__parser.h10
-rw-r--r--devel/electron5/files/patch-media_formats_common_offset__byte__queue.cc20
-rw-r--r--devel/electron5/files/patch-media_formats_common_offset__byte__queue.h22
-rw-r--r--devel/electron5/files/patch-media_formats_mp2t_es__parser__adts.cc26
-rw-r--r--devel/electron5/files/patch-media_formats_mp2t_es__parser__mpeg1audio.cc26
-rw-r--r--devel/electron5/files/patch-media_media__options.gni12
-rw-r--r--devel/electron5/files/patch-media_mojo_services_gpu__mojo__media__client.cc20
-rw-r--r--devel/electron5/files/patch-media_video_gpu__memory__buffer__video__frame__pool.cc11
-rw-r--r--devel/electron5/files/patch-mojo_public_c_system_thunks.cc47
-rw-r--r--devel/electron5/files/patch-mojo_public_js_mojo__bindings__resources.grd11
-rw-r--r--devel/electron5/files/patch-net_BUILD.gn37
-rw-r--r--devel/electron5/files/patch-net_base_address__tracker__linux.cc360
-rw-r--r--devel/electron5/files/patch-net_base_address__tracker__linux.h12
-rw-r--r--devel/electron5/files/patch-net_base_address__tracker__linux__unittest.cc14
-rw-r--r--devel/electron5/files/patch-net_base_network__change__notifier.cc10
-rw-r--r--devel/electron5/files/patch-net_base_network__interfaces__posix.h11
-rw-r--r--devel/electron5/files/patch-net_disk__cache_blockfile_disk__format.h12
-rw-r--r--devel/electron5/files/patch-net_dns_address__sorter__posix.cc12
-rw-r--r--devel/electron5/files/patch-net_dns_dns__config__service__posix__unittest.cc47
-rw-r--r--devel/electron5/files/patch-net_dns_dns__reloader.cc13
-rw-r--r--devel/electron5/files/patch-net_dns_dns__util.cc11
-rw-r--r--devel/electron5/files/patch-net_dns_host__resolver__proc.cc11
-rw-r--r--devel/electron5/files/patch-net_features.gni11
-rw-r--r--devel/electron5/files/patch-net_http_http__auth__gssapi__posix.cc14
-rw-r--r--devel/electron5/files/patch-net_http_http__network__session.cc12
-rw-r--r--devel/electron5/files/patch-net_nqe_network__quality__estimator.cc11
-rw-r--r--devel/electron5/files/patch-net_nqe_network__quality__estimator__unittest.cc11
-rw-r--r--devel/electron5/files/patch-net_proxy__resolution_proxy__config__service__linux.cc39
-rw-r--r--devel/electron5/files/patch-net_proxy__resolution_proxy__resolution__service.cc29
-rw-r--r--devel/electron5/files/patch-net_socket_socket__posix.cc11
-rw-r--r--devel/electron5/files/patch-net_socket_socks5__client__socket.cc13
-rw-r--r--devel/electron5/files/patch-net_socket_tcp__socket__posix.cc20
-rw-r--r--devel/electron5/files/patch-net_socket_udp__socket__posix.cc115
-rw-r--r--devel/electron5/files/patch-net_third__party_quic_platform_impl_quic__ip__address__impl.cc10
-rw-r--r--devel/electron5/files/patch-net_tools_cert__verify__tool_cert__verify__tool.cc20
-rw-r--r--devel/electron5/files/patch-net_tools_quic_quic__http__proxy__backend.cc11
-rw-r--r--devel/electron5/files/patch-net_url__request_url__request__context__builder.cc11
-rw-r--r--devel/electron5/files/patch-pdf_pdfium_pdfium__engine.cc74
-rw-r--r--devel/electron5/files/patch-ppapi_proxy_file__io__resource.cc48
-rw-r--r--devel/electron5/files/patch-printing_backend_print__backend__cups.h11
-rw-r--r--devel/electron5/files/patch-printing_cups__config__helper.py11
-rw-r--r--devel/electron5/files/patch-remoting_base_chromoting__event.cc11
-rw-r--r--devel/electron5/files/patch-remoting_client_display_sys__opengl.h11
-rw-r--r--devel/electron5/files/patch-remoting_host_evaluate__capability.cc11
-rw-r--r--devel/electron5/files/patch-remoting_host_host__attributes.cc11
-rw-r--r--devel/electron5/files/patch-remoting_host_host__details.cc11
-rw-r--r--devel/electron5/files/patch-remoting_host_it2me_it2me__native__messaging__host__main.cc35
-rw-r--r--devel/electron5/files/patch-remoting_host_me2me__desktop__environment.cc11
-rw-r--r--devel/electron5/files/patch-remoting_host_remoting__me2me__host.cc108
-rw-r--r--devel/electron5/files/patch-remoting_webapp_base_js_platform.js17
-rw-r--r--devel/electron5/files/patch-sandbox_features.gni10
-rw-r--r--devel/electron5/files/patch-sandbox_linux_BUILD.gn47
-rw-r--r--devel/electron5/files/patch-sandbox_linux_services_init__process__reaper.cc15
-rw-r--r--devel/electron5/files/patch-sandbox_linux_services_libc__interceptor.cc21
-rw-r--r--devel/electron5/files/patch-services_audio_BUILD.gn11
-rw-r--r--devel/electron5/files/patch-services_catalog_store.cc10
-rw-r--r--devel/electron5/files/patch-services_catalog_store.h10
-rw-r--r--devel/electron5/files/patch-services_content_simple__browser_simple__browser__service.h20
-rw-r--r--devel/electron5/files/patch-services_device_device__service.h11
-rw-r--r--devel/electron5/files/patch-services_device_geolocation_location__arbitrator.cc11
-rw-r--r--devel/electron5/files/patch-services_device_hid_BUILD.gn22
-rw-r--r--devel/electron5/files/patch-services_device_hid_hid__connection__freebsd.cc243
-rw-r--r--devel/electron5/files/patch-services_device_hid_hid__connection__freebsd.h71
-rw-r--r--devel/electron5/files/patch-services_device_hid_hid__service.cc20
-rw-r--r--devel/electron5/files/patch-services_device_hid_hid__service__freebsd.cc376
-rw-r--r--devel/electron5/files/patch-services_device_hid_hid__service__freebsd.h51
-rw-r--r--devel/electron5/files/patch-services_device_serial_BUILD.gn11
-rw-r--r--devel/electron5/files/patch-services_device_serial_serial__io__handler__posix.cc11
-rw-r--r--devel/electron5/files/patch-services_device_time__zone__monitor_time__zone__monitor.cc20
-rw-r--r--devel/electron5/files/patch-services_device_time__zone__monitor_time__zone__monitor__linux.cc14
-rw-r--r--devel/electron5/files/patch-services_network_BUILD.gn10
-rw-r--r--devel/electron5/files/patch-services_network_network__context.cc38
-rw-r--r--devel/electron5/files/patch-services_network_network__sandbox__hook__linux.cc18
-rw-r--r--devel/electron5/files/patch-services_network_network__service.cc20
-rw-r--r--devel/electron5/files/patch-services_network_network__service.h11
-rw-r--r--devel/electron5/files/patch-services_resource__coordinator_public_cpp_memory__instrumentation_os__metrics.h14
-rw-r--r--devel/electron5/files/patch-services_resource__coordinator_public_cpp_memory__instrumentation_os__metrics__linux.cc80
-rw-r--r--devel/electron5/files/patch-services_service__manager_embedder_main.cc11
-rw-r--r--devel/electron5/files/patch-services_service__manager_embedder_set__process__title__linux.cc19
-rw-r--r--devel/electron5/files/patch-services_service__manager_embedder_set__process__title__linux.h20
-rw-r--r--devel/electron5/files/patch-services_service__manager_public_cpp_service__executable_BUILD.gn14
-rw-r--r--devel/electron5/files/patch-services_service__manager_runner_host_BUILD.gn11
-rw-r--r--devel/electron5/files/patch-services_service__manager_sandbox_BUILD.gn11
-rw-r--r--devel/electron5/files/patch-services_service__manager_sandbox_sandbox__type.cc11
-rw-r--r--devel/electron5/files/patch-services_service__manager_zygote_common_zygote__features.gni8
-rw-r--r--devel/electron5/files/patch-services_service__manager_zygote_host_zygote__host__impl__linux.cc40
-rw-r--r--devel/electron5/files/patch-services_service__manager_zygote_host_zygote__host__impl__linux.h13
-rw-r--r--devel/electron5/files/patch-services_service__manager_zygote_zygote__host__linux.h16
-rw-r--r--devel/electron5/files/patch-services_service__manager_zygote_zygote__linux.cc15
-rw-r--r--devel/electron5/files/patch-services_service__manager_zygote_zygote__main__linux.cc48
-rw-r--r--devel/electron5/files/patch-skia_ext_SkMemory__new__handler.cpp20
-rw-r--r--devel/electron5/files/patch-third__party_angle_BUILD.gn21
-rw-r--r--devel/electron5/files/patch-third__party_angle_src_gpu__info__util_SystemInfo__internal.h16
-rw-r--r--devel/electron5/files/patch-third__party_angle_src_gpu__info__util_SystemInfo__libpci.cpp90
-rw-r--r--devel/electron5/files/patch-third__party_angle_src_gpu__info__util_SystemInfo__linux.cpp21
-rw-r--r--devel/electron5/files/patch-third__party_angle_src_gpu__info__util_SystemInfo__x11.cpp55
-rw-r--r--devel/electron5/files/patch-third__party_angle_src_libANGLE_Display.cpp20
-rw-r--r--devel/electron5/files/patch-third__party_angle_src_libANGLE_renderer_driver__utils.h11
-rw-r--r--devel/electron5/files/patch-third__party_angle_third__party_glslang_src_glslang_Include_PoolAlloc.h10
-rw-r--r--devel/electron5/files/patch-third__party_angle_third__party_vulkan-loader_src_loader_loader.c11
-rw-r--r--devel/electron5/files/patch-third__party_angle_third__party_vulkan-loader_src_loader_vk__loader__platform.h11
-rw-r--r--devel/electron5/files/patch-third__party_angle_third__party_vulkan-validation-layers_src_layers_vk__loader__platform.h11
-rw-r--r--devel/electron5/files/patch-third__party_blink_renderer_core_editing_editing__behavior.cc11
-rw-r--r--devel/electron5/files/patch-third__party_blink_renderer_core_html_canvas_canvas__async__blob__creator.cc11
-rw-r--r--devel/electron5/files/patch-third__party_blink_renderer_core_html_forms_internal__popup__menu.cc11
-rw-r--r--devel/electron5/files/patch-third__party_blink_renderer_core_inspector_inspector__memory__agent.cc11
-rw-r--r--devel/electron5/files/patch-third__party_blink_renderer_core_layout_layout__view.cc20
-rw-r--r--devel/electron5/files/patch-third__party_blink_renderer_core_paint_paint__layer.cc11
-rw-r--r--devel/electron5/files/patch-third__party_blink_renderer_core_scroll_scrollbar__theme__aura.cc11
-rw-r--r--devel/electron5/files/patch-third__party_blink_renderer_platform_BUILD.gn10
-rw-r--r--devel/electron5/files/patch-third__party_blink_renderer_platform_fonts_font__cache.cc20
-rw-r--r--devel/electron5/files/patch-third__party_blink_renderer_platform_fonts_font__cache.h53
-rw-r--r--devel/electron5/files/patch-third__party_blink_renderer_platform_fonts_font__description.cc20
-rw-r--r--devel/electron5/files/patch-third__party_blink_renderer_platform_fonts_font__metrics.cc29
-rw-r--r--devel/electron5/files/patch-third__party_blink_renderer_platform_fonts_font__unique__name__lookup.cc20
-rw-r--r--devel/electron5/files/patch-third__party_blink_renderer_platform_fonts_skia_font__cache__skia.cc38
-rw-r--r--devel/electron5/files/patch-third__party_blink_renderer_platform_heap_stack__frame__depth.cc14
-rw-r--r--devel/electron5/files/patch-third__party_blink_renderer_platform_wtf_BUILD.gn16
-rw-r--r--devel/electron5/files/patch-third__party_blink_renderer_platform_wtf_assertions.cc11
-rw-r--r--devel/electron5/files/patch-third__party_blink_renderer_platform_wtf_container__annotations.h11
-rw-r--r--devel/electron5/files/patch-third__party_blink_renderer_platform_wtf_stack__util.cc14
-rw-r--r--devel/electron5/files/patch-third__party_blink_renderer_platform_wtf_threading.cc29
-rw-r--r--devel/electron5/files/patch-third__party_blink_renderer_platform_wtf_threading__pthreads.cc22
-rw-r--r--devel/electron5/files/patch-third__party_boringssl_BUILD.gn36
-rw-r--r--devel/electron5/files/patch-third__party_boringssl_src_crypto_cpu-aarch64-linux.c63
-rw-r--r--devel/electron5/files/patch-third__party_boringssl_src_crypto_ex__data.c13
-rw-r--r--devel/electron5/files/patch-third__party_breakpad_breakpad_src_common_simple__string__dictionary.h11
-rw-r--r--devel/electron5/files/patch-third__party_cacheinvalidation_src_google_cacheinvalidation_include_types.h11
-rw-r--r--devel/electron5/files/patch-third__party_crashpad_crashpad_build_crashpad__buildconfig.gni11
-rw-r--r--devel/electron5/files/patch-third__party_crashpad_crashpad_client_BUILD.gn15
-rw-r--r--devel/electron5/files/patch-third__party_crashpad_crashpad_client_crashpad__client__posix.cc41
-rw-r--r--devel/electron5/files/patch-third__party_crashpad_crashpad_util_misc_address__types.h20
-rw-r--r--devel/electron5/files/patch-third__party_crashpad_crashpad_util_misc_capture__context.h20
-rw-r--r--devel/electron5/files/patch-third__party_crashpad_crashpad_util_misc_metrics.cc11
-rw-r--r--devel/electron5/files/patch-third__party_crashpad_crashpad_util_misc_uuid.cc11
-rw-r--r--devel/electron5/files/patch-third__party_crashpad_crashpad_util_posix_close__multiple.cc29
-rw-r--r--devel/electron5/files/patch-third__party_crashpad_crashpad_util_posix_drop__privileges.cc11
-rw-r--r--devel/electron5/files/patch-third__party_crashpad_crashpad_util_posix_signals.cc40
-rw-r--r--devel/electron5/files/patch-third__party_crashpad_crashpad_util_posix_symbolic__constants__posix.cc20
-rw-r--r--devel/electron5/files/patch-third__party_crc32c_src_src_crc32c__arm64__linux__check.h53
-rw-r--r--devel/electron5/files/patch-third__party_electron__node_deps_uv_BUILD.gn45
-rw-r--r--devel/electron5/files/patch-third__party_ffmpeg_libavutil_mem.c12
-rw-r--r--devel/electron5/files/patch-third__party_googletest_src_googletest_include_gtest_internal_gtest-port.h11
-rw-r--r--devel/electron5/files/patch-third__party_googletest_src_googletest_src_gtest-port.cc43
-rw-r--r--devel/electron5/files/patch-third__party_googletest_src_googletest_src_gtest.cc10
-rw-r--r--devel/electron5/files/patch-third__party_googletest_src_googletest_test_googletest-port-test.cc11
-rw-r--r--devel/electron5/files/patch-third__party_leveldatabase_env__chromium.cc14
-rw-r--r--devel/electron5/files/patch-third__party_libXNVCtrl_NVCtrl.c25
-rw-r--r--devel/electron5/files/patch-third__party_libjingle__xmpp_task__runner_taskrunner.cc11
-rw-r--r--devel/electron5/files/patch-third__party_libphonenumber_dist_cpp_src_phonenumbers_base_memory_singleton.h11
-rw-r--r--devel/electron5/files/patch-third__party_libphonenumber_dist_cpp_src_phonenumbers_base_synchronization_lock.h11
-rw-r--r--devel/electron5/files/patch-third__party_libphonenumber_dist_cpp_src_phonenumbers_base_thread__checker.h19
-rw-r--r--devel/electron5/files/patch-third__party_libyuv_include_libyuv_row.h37
-rw-r--r--devel/electron5/files/patch-third__party_node_node.py10
-rw-r--r--devel/electron5/files/patch-third__party_pdfium_core_fxcrt_fx__system.h11
-rw-r--r--devel/electron5/files/patch-third__party_pdfium_core_fxge_fx__ge__linux.cpp14
-rw-r--r--devel/electron5/files/patch-third__party_pdfium_fxjs_cjs__publicmethods.cpp106
-rw-r--r--devel/electron5/files/patch-third__party_pdfium_fxjs_fx__date__helpers.cpp22
-rw-r--r--devel/electron5/files/patch-third__party_pdfium_xfa_fgas_font_cfx__fontsourceenum__file.cpp14
-rw-r--r--devel/electron5/files/patch-third__party_perfetto_include_perfetto_base_build__config.h51
-rw-r--r--devel/electron5/files/patch-third__party_perfetto_include_perfetto_base_event.h14
-rw-r--r--devel/electron5/files/patch-third__party_perfetto_include_perfetto_base_time.h20
-rw-r--r--devel/electron5/files/patch-third__party_perfetto_include_perfetto_base_watchdog__posix.h11
-rw-r--r--devel/electron5/files/patch-third__party_perfetto_src_base_unix__socket.cc12
-rw-r--r--devel/electron5/files/patch-third__party_perfetto_src_tracing_core_tracing__service__impl.cc22
-rw-r--r--devel/electron5/files/patch-third__party_protobuf_src_google_protobuf_stubs_platform__macros.h11
-rw-r--r--devel/electron5/files/patch-third__party_sfntly_src_cpp_src_sfntly_table_core_cmap__table.cc47
-rw-r--r--devel/electron5/files/patch-third__party_skia_src_core_SkCpu.cpp19
-rw-r--r--devel/electron5/files/patch-third__party_skia_src_gpu_GrAutoLocaleSetter.h11
-rw-r--r--devel/electron5/files/patch-third__party_skia_src_images_SkJpegEncoder.cpp41
-rw-r--r--devel/electron5/files/patch-third__party_skia_src_opts_SkRasterPipeline__opts.h20
-rw-r--r--devel/electron5/files/patch-third__party_skia_src_ports_SkFontHost__FreeType.cpp77
-rw-r--r--devel/electron5/files/patch-third__party_skia_src_ports_SkOSFile__stdio.cpp11
-rw-r--r--devel/electron5/files/patch-third__party_skia_src_sksl_SkSLString.h11
-rw-r--r--devel/electron5/files/patch-third__party_skia_third__party_vulkanmemoryallocator_include_vk__mem__alloc.h11
-rw-r--r--devel/electron5/files/patch-third__party_snappy_src_snappy.h20
-rw-r--r--devel/electron5/files/patch-third__party_sqlite_BUILD.gn11
-rw-r--r--devel/electron5/files/patch-third__party_swiftshader_BUILD.gn24
-rw-r--r--devel/electron5/files/patch-third__party_swiftshader_src_Common_Configurator.cpp12
-rw-r--r--devel/electron5/files/patch-third__party_swiftshader_src_Common_MutexLock.hpp11
-rw-r--r--devel/electron5/files/patch-third__party_swiftshader_src_Common_SharedLibrary.hpp11
-rw-r--r--devel/electron5/files/patch-third__party_swiftshader_src_Main_SwiftConfig.cpp14
-rw-r--r--devel/electron5/files/patch-third__party_swiftshader_src_OpenGL_libEGL_Display.cpp20
-rw-r--r--devel/electron5/files/patch-third__party_swiftshader_src_OpenGL_libEGL_Surface.cpp11
-rw-r--r--devel/electron5/files/patch-third__party_swiftshader_src_OpenGL_libEGL_libEGL.cpp29
-rw-r--r--devel/electron5/files/patch-third__party_swiftshader_src_OpenGL_libEGL_libEGL.hpp11
-rw-r--r--devel/electron5/files/patch-third__party_swiftshader_src_OpenGL_libGLES__CM_libGLES__CM.hpp11
-rw-r--r--devel/electron5/files/patch-third__party_swiftshader_src_OpenGL_libGLESv2_libGLESv2.hpp11
-rw-r--r--devel/electron5/files/patch-third__party_swiftshader_third__party_llvm-7.0_configs_linux_include_llvm_Config_config.h152
-rw-r--r--devel/electron5/files/patch-third__party_swiftshader_third__party_llvm-7.0_configs_linux_include_llvm_Config_llvm-config.h20
-rw-r--r--devel/electron5/files/patch-third__party_swiftshader_third__party_llvm-subzero_build_Linux_include_llvm_Config_config.h29
-rw-r--r--devel/electron5/files/patch-third__party_swiftshader_third__party_llvm-subzero_lib_Support_Unix_Process.inc11
-rw-r--r--devel/electron5/files/patch-third__party_usrsctp_BUILD.gn20
-rw-r--r--devel/electron5/files/patch-third__party_webrtc_BUILD.gn12
-rw-r--r--devel/electron5/files/patch-third__party_webrtc_modules_audio__device_BUILD.gn11
-rw-r--r--devel/electron5/files/patch-third__party_webrtc_modules_rtp__rtcp_source_forward__error__correction.cc10
-rw-r--r--devel/electron5/files/patch-third__party_webrtc_rtc__base_BUILD.gn20
-rw-r--r--devel/electron5/files/patch-third__party_webrtc_rtc__base_byte__order.h11
-rw-r--r--devel/electron5/files/patch-third__party_webrtc_rtc__base_ifaddrs__converter.h11
-rw-r--r--devel/electron5/files/patch-third__party_webrtc_rtc__base_ip__address.cc12
-rw-r--r--devel/electron5/files/patch-third__party_webrtc_rtc__base_ip__address.h13
-rw-r--r--devel/electron5/files/patch-third__party_webrtc_rtc__base_network.cc29
-rw-r--r--devel/electron5/files/patch-third__party_webrtc_rtc__base_network.h13
-rw-r--r--devel/electron5/files/patch-third__party_webrtc_rtc__base_physical__socket__server.cc56
-rw-r--r--devel/electron5/files/patch-third__party_webrtc_rtc__base_physical__socket__server.h11
-rw-r--r--devel/electron5/files/patch-third__party_webrtc_rtc__base_platform__thread__types.cc40
-rw-r--r--devel/electron5/files/patch-third__party_webrtc_rtc__base_string__utils.h17
-rw-r--r--devel/electron5/files/patch-third__party_webrtc_system__wrappers_BUILD.gn11
-rw-r--r--devel/electron5/files/patch-third__party_yasm_yasm__assemble.gni159
-rw-r--r--devel/electron5/files/patch-third__party_zlib_arm__features.c97
-rw-r--r--devel/electron5/files/patch-tools_gn_base_files_file__posix.cc11
-rw-r--r--devel/electron5/files/patch-tools_gn_base_files_file__util.h11
-rw-r--r--devel/electron5/files/patch-tools_gn_base_files_file__util__posix.cc11
-rw-r--r--devel/electron5/files/patch-tools_gn_base_files_scoped__file.cc11
-rw-r--r--devel/electron5/files/patch-tools_gn_build_gen.py33
-rw-r--r--devel/electron5/files/patch-tools_gn_tools_gn_exec__process.cc13
-rw-r--r--devel/electron5/files/patch-tools_gn_util_sys__info.cc11
-rw-r--r--devel/electron5/files/patch-tools_json__schema__compiler_feature__compiler.py10
-rw-r--r--devel/electron5/files/patch-tools_json__schema__compiler_model.py11
-rw-r--r--devel/electron5/files/patch-tools_perf_chrome__telemetry__build_BUILD.gn11
-rw-r--r--devel/electron5/files/patch-tools_variations_fieldtrial__to__struct.py10
-rw-r--r--devel/electron5/files/patch-ui_base_dragdrop_os__exchange__data__provider__factory.cc20
-rw-r--r--devel/electron5/files/patch-ui_base_ime_ime__engine__handler__interface.h11
-rw-r--r--devel/electron5/files/patch-ui_base_ime_input__method__initializer.cc38
-rw-r--r--devel/electron5/files/patch-ui_base_resource_resource__bundle.cc20
-rw-r--r--devel/electron5/files/patch-ui_base_resource_resource__bundle__freebsd.cc24
-rw-r--r--devel/electron5/files/patch-ui_base_ui__base__features.cc20
-rw-r--r--devel/electron5/files/patch-ui_base_ui__base__features.h14
-rw-r--r--devel/electron5/files/patch-ui_base_webui_web__ui__util.cc11
-rw-r--r--devel/electron5/files/patch-ui_events_devices_x11_device__data__manager__x11.cc19
-rw-r--r--devel/electron5/files/patch-ui_events_event__switches.cc11
-rw-r--r--devel/electron5/files/patch-ui_events_event__switches.h11
-rw-r--r--devel/electron5/files/patch-ui_events_keycodes_dom_keycode__converter.cc11
-rw-r--r--devel/electron5/files/patch-ui_gfx_BUILD.gn11
-rw-r--r--devel/electron5/files/patch-ui_gfx_canvas__skia.cc11
-rw-r--r--devel/electron5/files/patch-ui_gfx_codec_jpeg__codec.cc20
-rw-r--r--devel/electron5/files/patch-ui_gfx_font__fallback__linux.cc13
-rw-r--r--devel/electron5/files/patch-ui_gfx_font__list.cc11
-rw-r--r--devel/electron5/files/patch-ui_gfx_font__render__params.h18
-rw-r--r--devel/electron5/files/patch-ui_gfx_gpu__memory__buffer.h20
-rw-r--r--devel/electron5/files/patch-ui_gfx_ipc_gfx__param__traits__macros.h29
-rw-r--r--devel/electron5/files/patch-ui_gfx_linux_client__native__pixmap__dmabuf.cc25
-rw-r--r--devel/electron5/files/patch-ui_gfx_mojo_buffer__types__struct__traits.cc38
-rw-r--r--devel/electron5/files/patch-ui_gfx_mojo_buffer__types__struct__traits.h20
-rw-r--r--devel/electron5/files/patch-ui_gfx_native__pixmap__handle.cc28
-rw-r--r--devel/electron5/files/patch-ui_gfx_native__pixmap__handle.h28
-rw-r--r--devel/electron5/files/patch-ui_gfx_render__text.cc46
-rw-r--r--devel/electron5/files/patch-ui_gl_BUILD.gn11
-rw-r--r--devel/electron5/files/patch-ui_gl_generate__bindings.py12
-rw-r--r--devel/electron5/files/patch-ui_gl_gl__bindings__api__autogen__glx.h10
-rw-r--r--devel/electron5/files/patch-ui_gl_gl__bindings__autogen__glx.cc61
-rw-r--r--devel/electron5/files/patch-ui_gl_gl__bindings__autogen__glx.h43
-rw-r--r--devel/electron5/files/patch-ui_gl_gl__fence.cc11
-rw-r--r--devel/electron5/files/patch-ui_gl_sync__control__vsync__provider.cc43
-rw-r--r--devel/electron5/files/patch-ui_gl_sync__control__vsync__provider.h34
-rw-r--r--devel/electron5/files/patch-ui_message__center_public_cpp_message__center__constants.h11
-rw-r--r--devel/electron5/files/patch-ui_message__center_views_message__popup__view.cc11
-rw-r--r--devel/electron5/files/patch-ui_native__theme_native__theme.h11
-rw-r--r--devel/electron5/files/patch-ui_native__theme_native__theme__base.cc11
-rw-r--r--devel/electron5/files/patch-ui_strings_app__locale__settings.grd11
-rw-r--r--devel/electron5/files/patch-ui_views_bubble_bubble__dialog__delegate__view.cc11
-rw-r--r--devel/electron5/files/patch-ui_views_controls_label.cc20
-rw-r--r--devel/electron5/files/patch-ui_views_controls_textfield_textfield.cc73
-rw-r--r--devel/electron5/files/patch-ui_views_corewm_tooltip__aura.cc11
-rw-r--r--devel/electron5/files/patch-ui_views_examples_widget__example.cc11
-rw-r--r--devel/electron5/files/patch-ui_views_selection__controller.cc11
-rw-r--r--devel/electron5/files/patch-ui_views_style_platform__style.cc11
-rw-r--r--devel/electron5/files/patch-ui_views_views__delegate.cc11
-rw-r--r--devel/electron5/files/patch-ui_views_views__delegate.h11
-rw-r--r--devel/electron5/files/patch-ui_views_widget_desktop__aura_desktop__window__tree__host__platform.cc20
-rw-r--r--devel/electron5/files/patch-ui_views_widget_desktop__aura_desktop__window__tree__host__platform.h11
-rw-r--r--devel/electron5/files/patch-ui_views_window_custom__frame__view.cc11
-rw-r--r--devel/electron5/files/patch-ui_views_window_dialog__delegate.cc11
-rw-r--r--devel/electron5/files/patch-ui_views_window_frame__background.cc11
-rw-r--r--devel/electron5/files/patch-ui_webui_resources_js_cr.js14
-rw-r--r--devel/electron5/files/patch-ui_webui_resources_js_icon.js11
-rw-r--r--devel/electron5/files/patch-v8_BUILD.gn32
-rw-r--r--devel/electron5/files/patch-v8_src_api.cc20
-rw-r--r--devel/electron5/files/patch-v8_src_base_cpu.cc18
-rw-r--r--devel/electron5/files/patch-v8_src_base_platform_platform-posix.cc24
-rw-r--r--devel/electron5/files/patch-v8_src_external-reference-table.cc11
-rw-r--r--devel/electron5/files/patch-v8_src_log-utils.h11
-rw-r--r--devel/electron5/files/patch-v8_src_trap-handler_handler-inside-posix.cc20
-rw-r--r--devel/electron5/files/patch-v8_src_trap-handler_handler-inside-posix.h11
-rw-r--r--devel/electron5/files/patch-v8_src_trap-handler_trap-handler.h11
-rw-r--r--devel/electron5/pkg-descr10
-rw-r--r--devel/electron5/pkg-plist124
-rw-r--r--devel/electron6/Makefile302
-rw-r--r--devel/electron6/Makefile.version4
-rw-r--r--devel/electron6/distinfo15
-rw-r--r--devel/electron6/files/apply-electron-patches.sh20
-rw-r--r--devel/electron6/files/package.json135
-rw-r--r--devel/electron6/files/patch-BUILD.gn95
-rw-r--r--devel/electron6/files/patch-apps_ui_views_app__window__frame__view.cc11
-rw-r--r--devel/electron6/files/patch-ash_display_mirror__window__controller.cc14
-rw-r--r--devel/electron6/files/patch-base_BUILD.gn67
-rw-r--r--devel/electron6/files/patch-base_allocator_allocator__shim.cc11
-rw-r--r--devel/electron6/files/patch-base_allocator_allocator__shim__default__dispatch__to__glibc.cc76
-rw-r--r--devel/electron6/files/patch-base_allocator_allocator__shim__override__libc__symbols.h11
-rw-r--r--devel/electron6/files/patch-base_allocator_allocator__shim__unittest.cc36
-rw-r--r--devel/electron6/files/patch-base_allocator_partition__allocator_page__allocator__internals__posix.h11
-rw-r--r--devel/electron6/files/patch-base_base__switches.cc20
-rw-r--r--devel/electron6/files/patch-base_base__switches.h20
-rw-r--r--devel/electron6/files/patch-base_cpu.cc38
-rw-r--r--devel/electron6/files/patch-base_debug_debugger__posix.cc56
-rw-r--r--devel/electron6/files/patch-base_debug_elf__reader.cc18
-rw-r--r--devel/electron6/files/patch-base_debug_proc__maps__linux.cc11
-rw-r--r--devel/electron6/files/patch-base_debug_stack__trace.cc11
-rw-r--r--devel/electron6/files/patch-base_debug_stack__trace.h10
-rw-r--r--devel/electron6/files/patch-base_debug_stack__trace__posix.cc31
-rw-r--r--devel/electron6/files/patch-base_files_file__path__unittest.cc11
-rw-r--r--devel/electron6/files/patch-base_files_file__path__watcher.cc11
-rw-r--r--devel/electron6/files/patch-base_files_file__path__watcher__kqueue.h13
-rw-r--r--devel/electron6/files/patch-base_files_file__path__watcher__stub.cc51
-rw-r--r--devel/electron6/files/patch-base_files_file__path__watcher__unittest.cc11
-rw-r--r--devel/electron6/files/patch-base_files_file__util.h11
-rw-r--r--devel/electron6/files/patch-base_files_file__util__posix.cc11
-rw-r--r--devel/electron6/files/patch-base_files_scoped__file.cc11
-rw-r--r--devel/electron6/files/patch-base_i18n_icu__util.cc20
-rw-r--r--devel/electron6/files/patch-base_linux__util.cc18
-rw-r--r--devel/electron6/files/patch-base_logging__unittest.cc11
-rw-r--r--devel/electron6/files/patch-base_memory_protected__memory__posix.cc31
-rw-r--r--devel/electron6/files/patch-base_native__library__posix.cc11
-rw-r--r--devel/electron6/files/patch-base_native__library__unittest.cc11
-rw-r--r--devel/electron6/files/patch-base_numerics_safe__math__shared__impl.h13
-rw-r--r--devel/electron6/files/patch-base_posix_can__lower__nice__to.cc20
-rw-r--r--devel/electron6/files/patch-base_posix_unix__domain__socket.cc49
-rw-r--r--devel/electron6/files/patch-base_posix_unix__domain__socket__unittest.cc12
-rw-r--r--devel/electron6/files/patch-base_process_internal__linux.cc16
-rw-r--r--devel/electron6/files/patch-base_process_internal__linux.h11
-rw-r--r--devel/electron6/files/patch-base_process_kill.h16
-rw-r--r--devel/electron6/files/patch-base_process_kill__posix.cc20
-rw-r--r--devel/electron6/files/patch-base_process_launch.cc11
-rw-r--r--devel/electron6/files/patch-base_process_launch.h20
-rw-r--r--devel/electron6/files/patch-base_process_launch__posix.cc10
-rw-r--r--devel/electron6/files/patch-base_process_memory.cc20
-rw-r--r--devel/electron6/files/patch-base_process_memory.h11
-rw-r--r--devel/electron6/files/patch-base_process_memory__unittest.cc18
-rw-r--r--devel/electron6/files/patch-base_process_process__handle.cc11
-rw-r--r--devel/electron6/files/patch-base_process_process__handle.h11
-rw-r--r--devel/electron6/files/patch-base_process_process__handle__freebsd.cc17
-rw-r--r--devel/electron6/files/patch-base_process_process__iterator__freebsd.cc44
-rw-r--r--devel/electron6/files/patch-base_process_process__linux.cc18
-rw-r--r--devel/electron6/files/patch-base_process_process__metrics.cc38
-rw-r--r--devel/electron6/files/patch-base_process_process__metrics.h131
-rw-r--r--devel/electron6/files/patch-base_process_process__metrics__freebsd.cc259
-rw-r--r--devel/electron6/files/patch-base_process_process__metrics__posix.cc20
-rw-r--r--devel/electron6/files/patch-base_process_process__unittest.cc11
-rw-r--r--devel/electron6/files/patch-base_profiler_stack__sampling__profiler__unittest.cc11
-rw-r--r--devel/electron6/files/patch-base_sampling__heap__profiler_sampling__heap__profiler.cc24
-rw-r--r--devel/electron6/files/patch-base_security__unittest.cc11
-rw-r--r--devel/electron6/files/patch-base_strings_safe__sprintf__unittest.cc18
-rw-r--r--devel/electron6/files/patch-base_syslog__logging.cc20
-rw-r--r--devel/electron6/files/patch-base_system_sys__info.h11
-rw-r--r--devel/electron6/files/patch-base_system_sys__info__freebsd.cc71
-rw-r--r--devel/electron6/files/patch-base_system_sys__info__posix.cc38
-rw-r--r--devel/electron6/files/patch-base_task_thread__pool_environment__config__unittest.cc11
-rw-r--r--devel/electron6/files/patch-base_test_fontconfig__util__linux.cc408
-rw-r--r--devel/electron6/files/patch-base_test_generate__fontconfig__caches.cc25
-rw-r--r--devel/electron6/files/patch-base_test_launcher_test__launcher.cc10
-rw-r--r--devel/electron6/files/patch-base_test_test__file__util__linux.cc13
-rw-r--r--devel/electron6/files/patch-base_test_test__file__util__posix.cc11
-rw-r--r--devel/electron6/files/patch-base_third__party_libevent_BUILD.gn24
-rw-r--r--devel/electron6/files/patch-base_threading_platform__thread.h11
-rw-r--r--devel/electron6/files/patch-base_threading_platform__thread__linux.cc30
-rw-r--r--devel/electron6/files/patch-base_threading_platform__thread__posix.cc11
-rw-r--r--devel/electron6/files/patch-base_threading_thread__local__storage__unittest.cc11
-rw-r--r--devel/electron6/files/patch-base_threading_thread__task__runner__handle.cc26
-rw-r--r--devel/electron6/files/patch-base_trace__event_malloc__dump__provider.cc21
-rw-r--r--devel/electron6/files/patch-base_trace__event_process__memory__dump.cc11
-rw-r--r--devel/electron6/files/patch-base_trace__event_process__memory__dump.h11
-rw-r--r--devel/electron6/files/patch-build_config_BUILD.gn30
-rw-r--r--devel/electron6/files/patch-build_config_BUILDCONFIG.gn48
-rw-r--r--devel/electron6/files/patch-build_config_allocator.gni20
-rw-r--r--devel/electron6/files/patch-build_config_compiler_BUILD.gn92
-rw-r--r--devel/electron6/files/patch-build_config_compiler_compiler.gni11
-rw-r--r--devel/electron6/files/patch-build_config_features.gni11
-rw-r--r--devel/electron6/files/patch-build_config_freetype_freetype.gni9
-rw-r--r--devel/electron6/files/patch-build_config_linux_BUILD.gn11
-rw-r--r--devel/electron6/files/patch-build_config_linux_pkg-config.py26
-rw-r--r--devel/electron6/files/patch-build_config_sysroot.gni15
-rw-r--r--devel/electron6/files/patch-build_detect__host__arch.py11
-rw-r--r--devel/electron6/files/patch-build_gn__run__binary.py11
-rw-r--r--devel/electron6/files/patch-build_linux_chrome.map29
-rw-r--r--devel/electron6/files/patch-build_linux_libpci_BUILD.gn53
-rw-r--r--devel/electron6/files/patch-build_linux_unbundle_libusb.gn27
-rw-r--r--devel/electron6/files/patch-build_linux_unbundle_replace__gn__files.py10
-rw-r--r--devel/electron6/files/patch-build_toolchain_gcc__toolchain.gni45
-rw-r--r--devel/electron6/files/patch-build_toolchain_get__concurrent__links.py17
-rw-r--r--devel/electron6/files/patch-build_toolchain_linux_BUILD.gn10
-rw-r--r--devel/electron6/files/patch-cc_BUILD.gn21
-rw-r--r--devel/electron6/files/patch-cc_layers_scrollbar__layer__impl__base.cc13
-rw-r--r--devel/electron6/files/patch-cc_trees_property__tree.cc20
-rw-r--r--devel/electron6/files/patch-chrome_app_chrome__command__ids.h11
-rw-r--r--devel/electron6/files/patch-chrome_app_chrome__content__browser__overlay__manifest.cc20
-rw-r--r--devel/electron6/files/patch-chrome_app_chrome__main.cc16
-rw-r--r--devel/electron6/files/patch-chrome_app_chrome__main__delegate.cc137
-rw-r--r--devel/electron6/files/patch-chrome_app_chromium__strings.grd29
-rw-r--r--devel/electron6/files/patch-chrome_app_generated__resources.grd29
-rw-r--r--devel/electron6/files/patch-chrome_app_google__chrome__strings.grd29
-rw-r--r--devel/electron6/files/patch-chrome_app_settings__strings.grdp20
-rw-r--r--devel/electron6/files/patch-chrome_app_shutdown__signal__handlers__posix.cc21
-rw-r--r--devel/electron6/files/patch-chrome_app_theme_chrome__unscaled__resources.grd20
-rw-r--r--devel/electron6/files/patch-chrome_browser_about__flags.cc183
-rw-r--r--devel/electron6/files/patch-chrome_browser_after__startup__task__utils.cc38
-rw-r--r--devel/electron6/files/patch-chrome_browser_apps_platform__apps_api_music__manager__private_device__id__linux.cc70
-rw-r--r--devel/electron6/files/patch-chrome_browser_autocomplete_chrome__autocomplete__scheme__classifier.cc17
-rw-r--r--devel/electron6/files/patch-chrome_browser_background_background__mode__optimizer.cc15
-rw-r--r--devel/electron6/files/patch-chrome_browser_browser__resources.grd20
-rw-r--r--devel/electron6/files/patch-chrome_browser_chrome__browser__main.cc75
-rw-r--r--devel/electron6/files/patch-chrome_browser_chrome__browser__main__linux.cc27
-rw-r--r--devel/electron6/files/patch-chrome_browser_chrome__browser__main__posix.cc20
-rw-r--r--devel/electron6/files/patch-chrome_browser_chrome__content__browser__client.cc92
-rw-r--r--devel/electron6/files/patch-chrome_browser_chrome__content__browser__client.h17
-rw-r--r--devel/electron6/files/patch-chrome_browser_custom__handlers_protocol__handler__registry.cc11
-rw-r--r--devel/electron6/files/patch-chrome_browser_defaults.cc11
-rw-r--r--devel/electron6/files/patch-chrome_browser_devtools_devtools__eye__dropper.cc11
-rw-r--r--devel/electron6/files/patch-chrome_browser_diagnostics_diagnostics__writer.h11
-rw-r--r--devel/electron6/files/patch-chrome_browser_download_chrome__download__manager__delegate.cc20
-rw-r--r--devel/electron6/files/patch-chrome_browser_download_download__commands.cc35
-rw-r--r--devel/electron6/files/patch-chrome_browser_download_download__commands.h11
-rw-r--r--devel/electron6/files/patch-chrome_browser_download_download__item__model.cc20
-rw-r--r--devel/electron6/files/patch-chrome_browser_download_download__prefs.cc65
-rw-r--r--devel/electron6/files/patch-chrome_browser_download_download__prefs.h20
-rw-r--r--devel/electron6/files/patch-chrome_browser_download_download__query.cc14
-rw-r--r--devel/electron6/files/patch-chrome_browser_download_download__shelf__context__menu.cc11
-rw-r--r--devel/electron6/files/patch-chrome_browser_download_download__status__updater.cc20
-rw-r--r--devel/electron6/files/patch-chrome_browser_extensions_BUILD.gn15
-rw-r--r--devel/electron6/files/patch-chrome_browser_extensions_activity__log_activity__log.cc14
-rw-r--r--devel/electron6/files/patch-chrome_browser_extensions_api_image__writer__private_removable__storage__provider.cc20
-rw-r--r--devel/electron6/files/patch-chrome_browser_extensions_api_input__ime_input__ime__api.h11
-rw-r--r--devel/electron6/files/patch-chrome_browser_extensions_api_runtime_chrome__runtime__api__delegate.cc11
-rw-r--r--devel/electron6/files/patch-chrome_browser_extensions_api_settings__private_prefs__util.cc20
-rw-r--r--devel/electron6/files/patch-chrome_browser_extensions_api_webrtc__logging__private_webrtc__logging__private__api.cc43
-rw-r--r--devel/electron6/files/patch-chrome_browser_extensions_bookmark__app__extension__util.cc11
-rw-r--r--devel/electron6/files/patch-chrome_browser_extensions_browser__context__keyed__service__factories.cc20
-rw-r--r--devel/electron6/files/patch-chrome_browser_extensions_external__provider__impl.cc20
-rw-r--r--devel/electron6/files/patch-chrome_browser_extensions_install__signer.cc18
-rw-r--r--devel/electron6/files/patch-chrome_browser_first__run_first__run__dialog.h11
-rw-r--r--devel/electron6/files/patch-chrome_browser_first__run_first__run__internal.h18
-rw-r--r--devel/electron6/files/patch-chrome_browser_first__run_first__run__internal__posix.cc20
-rw-r--r--devel/electron6/files/patch-chrome_browser_flag__descriptions.cc28
-rw-r--r--devel/electron6/files/patch-chrome_browser_flag__descriptions.h26
-rw-r--r--devel/electron6/files/patch-chrome_browser_media__galleries_fileapi_mtp__device__map__service.cc15
-rw-r--r--devel/electron6/files/patch-chrome_browser_media__galleries_media__file__system__registry.cc14
-rw-r--r--devel/electron6/files/patch-chrome_browser_media_router_discovery_discovery__network__list__posix.cc28
-rw-r--r--devel/electron6/files/patch-chrome_browser_media_router_discovery_discovery__network__list__wifi__linux.cc27
-rw-r--r--devel/electron6/files/patch-chrome_browser_media_router_providers_wired__display_wired__display__media__route__provider.cc23
-rw-r--r--devel/electron6/files/patch-chrome_browser_media_webrtc_webrtc__event__log__uploader.cc11
-rw-r--r--devel/electron6/files/patch-chrome_browser_media_webrtc_webrtc__log__uploader.cc11
-rw-r--r--devel/electron6/files/patch-chrome_browser_media_webrtc_webrtc__logging__handler__host.cc33
-rw-r--r--devel/electron6/files/patch-chrome_browser_media_webrtc_webrtc__logging__handler__host.h36
-rw-r--r--devel/electron6/files/patch-chrome_browser_memory__details.cc20
-rw-r--r--devel/electron6/files/patch-chrome_browser_memory__details__linux.cc13
-rw-r--r--devel/electron6/files/patch-chrome_browser_metrics_bluetooth__available__utility.cc13
-rw-r--r--devel/electron6/files/patch-chrome_browser_metrics_chrome__browser__main__extra__parts__metrics.cc21
-rw-r--r--devel/electron6/files/patch-chrome_browser_metrics_chrome__metrics__service__client.cc11
-rw-r--r--devel/electron6/files/patch-chrome_browser_metrics_process__memory__metrics__emitter.cc20
-rw-r--r--devel/electron6/files/patch-chrome_browser_net_system__network__context__manager.cc65
-rw-r--r--devel/electron6/files/patch-chrome_browser_notifications_notification__display__service__impl.cc20
-rw-r--r--devel/electron6/files/patch-chrome_browser_password__manager_chrome__password__manager__client.cc14
-rw-r--r--devel/electron6/files/patch-chrome_browser_password__manager_password__store__factory.cc11
-rw-r--r--devel/electron6/files/patch-chrome_browser_performance__monitor_process__metrics__history.cc38
-rw-r--r--devel/electron6/files/patch-chrome_browser_performance__monitor_process__metrics__history.h11
-rw-r--r--devel/electron6/files/patch-chrome_browser_platform__util.h11
-rw-r--r--devel/electron6/files/patch-chrome_browser_plugins_plugin__info__host__impl.cc11
-rw-r--r--devel/electron6/files/patch-chrome_browser_plugins_plugins__resource__service.cc11
-rw-r--r--devel/electron6/files/patch-chrome_browser_policy_configuration__policy__handler__list__factory.cc34
-rw-r--r--devel/electron6/files/patch-chrome_browser_policy_policy__prefs__browsertest.cc11
-rw-r--r--devel/electron6/files/patch-chrome_browser_prefs_browser__prefs.cc20
-rw-r--r--devel/electron6/files/patch-chrome_browser_prefs_pref__service__incognito__whitelist.cc11
-rw-r--r--devel/electron6/files/patch-chrome_browser_process__singleton__posix.cc34
-rw-r--r--devel/electron6/files/patch-chrome_browser_profiles_chrome__browser__main__extra__parts__profiles.cc11
-rw-r--r--devel/electron6/files/patch-chrome_browser_profiles_profile__attributes__entry.cc11
-rw-r--r--devel/electron6/files/patch-chrome_browser_renderer__context__menu_render__view__context__menu.cc29
-rw-r--r--devel/electron6/files/patch-chrome_browser_renderer__preferences__util.cc29
-rw-r--r--devel/electron6/files/patch-chrome_browser_resources_safe__browsing_gen__file__type__proto.py19
-rw-r--r--devel/electron6/files/patch-chrome_browser_resources_settings_appearance__page_appearance__browser__proxy.js20
-rw-r--r--devel/electron6/files/patch-chrome_browser_resources_settings_appearance__page_appearance__page.html29
-rw-r--r--devel/electron6/files/patch-chrome_browser_resources_settings_appearance__page_appearance__page.js33
-rw-r--r--devel/electron6/files/patch-chrome_browser_safe__browsing_incident__reporting_incident__handler__util.cc15
-rw-r--r--devel/electron6/files/patch-chrome_browser_safe__browsing_incident__reporting_incident__reporting__service.cc11
-rw-r--r--devel/electron6/files/patch-chrome_browser_search_local__files__ntp__source.cc16
-rw-r--r--devel/electron6/files/patch-chrome_browser_send__tab__to__self_receiving__ui__handler__registry.cc20
-rw-r--r--devel/electron6/files/patch-chrome_browser_send__tab__to__self_send__tab__to__self__client__service.cc11
-rw-r--r--devel/electron6/files/patch-chrome_browser_signin_signin__util.cc20
-rw-r--r--devel/electron6/files/patch-chrome_browser_ssl_captive__portal__blocking__page.cc11
-rw-r--r--devel/electron6/files/patch-chrome_browser_ssl_ssl__error__controller__client.cc20
-rw-r--r--devel/electron6/files/patch-chrome_browser_sync_chrome__sync__client.cc20
-rw-r--r--devel/electron6/files/patch-chrome_browser_task__manager_sampling_task__group.cc56
-rw-r--r--devel/electron6/files/patch-chrome_browser_task__manager_sampling_task__group.h48
-rw-r--r--devel/electron6/files/patch-chrome_browser_task__manager_sampling_task__group__sampler.cc72
-rw-r--r--devel/electron6/files/patch-chrome_browser_task__manager_sampling_task__group__sampler.h50
-rw-r--r--devel/electron6/files/patch-chrome_browser_task__manager_sampling_task__manager__impl.cc16
-rw-r--r--devel/electron6/files/patch-chrome_browser_task__manager_task__manager__observer.h16
-rw-r--r--devel/electron6/files/patch-chrome_browser_tracing_crash__service__uploader.cc11
-rw-r--r--devel/electron6/files/patch-chrome_browser_ui_browser__command__controller.cc38
-rw-r--r--devel/electron6/files/patch-chrome_browser_ui_browser__view__prefs.cc20
-rw-r--r--devel/electron6/files/patch-chrome_browser_ui_browser__window.h11
-rw-r--r--devel/electron6/files/patch-chrome_browser_ui_exclusive__access_exclusive__access__bubble.cc11
-rw-r--r--devel/electron6/files/patch-chrome_browser_ui_input__method_input__method__engine__base.cc11
-rw-r--r--devel/electron6/files/patch-chrome_browser_ui_libgtkui_print__dialog__gtk.cc10
-rw-r--r--devel/electron6/files/patch-chrome_browser_ui_sad__tab.cc11
-rw-r--r--devel/electron6/files/patch-chrome_browser_ui_startup_bad__flags__prompt.cc11
-rw-r--r--devel/electron6/files/patch-chrome_browser_ui_startup_startup__browser__creator.cc22
-rw-r--r--devel/electron6/files/patch-chrome_browser_ui_tab__helpers.cc25
-rw-r--r--devel/electron6/files/patch-chrome_browser_ui_task__manager_task__manager__columns.cc15
-rw-r--r--devel/electron6/files/patch-chrome_browser_ui_task__manager_task__manager__table__model.cc50
-rw-r--r--devel/electron6/files/patch-chrome_browser_ui_toolbar_app__menu__model.cc11
-rw-r--r--devel/electron6/files/patch-chrome_browser_ui_views_accelerator__table.cc46
-rw-r--r--devel/electron6/files/patch-chrome_browser_ui_views_chrome__browser__main__extra__parts__views.cc38
-rw-r--r--devel/electron6/files/patch-chrome_browser_ui_views_chrome__views__delegate.h11
-rw-r--r--devel/electron6/files/patch-chrome_browser_ui_views_first__run__dialog.cc24
-rw-r--r--devel/electron6/files/patch-chrome_browser_ui_views_frame_browser__frame.cc29
-rw-r--r--devel/electron6/files/patch-chrome_browser_ui_views_frame_browser__non__client__frame__view__factory__views.cc20
-rw-r--r--devel/electron6/files/patch-chrome_browser_ui_views_frame_browser__view.cc11
-rw-r--r--devel/electron6/files/patch-chrome_browser_ui_views_frame_opaque__browser__frame__view.cc29
-rw-r--r--devel/electron6/files/patch-chrome_browser_ui_views_frame_opaque__browser__frame__view__platform__specific.cc11
-rw-r--r--devel/electron6/files/patch-chrome_browser_ui_views_frame_system__menu__model__builder.cc29
-rw-r--r--devel/electron6/files/patch-chrome_browser_ui_views_frame_system__menu__model__delegate.cc29
-rw-r--r--devel/electron6/files/patch-chrome_browser_ui_views_hung__renderer__view.cc11
-rw-r--r--devel/electron6/files/patch-chrome_browser_ui_views_tabs_new__tab__button.cc11
-rw-r--r--devel/electron6/files/patch-chrome_browser_ui_views_tabs_tab.cc20
-rw-r--r--devel/electron6/files/patch-chrome_browser_ui_views_tabs_tab__drag__controller.cc29
-rw-r--r--devel/electron6/files/patch-chrome_browser_ui_webui_about__ui.cc20
-rw-r--r--devel/electron6/files/patch-chrome_browser_ui_webui_chrome__web__ui__controller__factory.cc55
-rw-r--r--devel/electron6/files/patch-chrome_browser_ui_webui_settings_appearance__handler.cc20
-rw-r--r--devel/electron6/files/patch-chrome_browser_ui_webui_settings_appearance__handler.h11
-rw-r--r--devel/electron6/files/patch-chrome_browser_ui_webui_settings_settings__localized__strings__provider.cc20
-rw-r--r--devel/electron6/files/patch-chrome_browser_web__applications_extensions_web__app__extension__shortcut.cc11
-rw-r--r--devel/electron6/files/patch-chrome_common_BUILD.gn13
-rw-r--r--devel/electron6/files/patch-chrome_common_chrome__features.cc27
-rw-r--r--devel/electron6/files/patch-chrome_common_chrome__features.h24
-rw-r--r--devel/electron6/files/patch-chrome_common_chrome__paths.cc113
-rw-r--r--devel/electron6/files/patch-chrome_common_chrome__paths.h42
-rw-r--r--devel/electron6/files/patch-chrome_common_chrome__paths__internal.h11
-rw-r--r--devel/electron6/files/patch-chrome_common_chrome__switches.cc11
-rw-r--r--devel/electron6/files/patch-chrome_common_chrome__switches.h11
-rw-r--r--devel/electron6/files/patch-chrome_common_extensions_api_api__sources.gni11
-rw-r--r--devel/electron6/files/patch-chrome_common_extensions_command.cc11
-rw-r--r--devel/electron6/files/patch-chrome_common_features.gni14
-rw-r--r--devel/electron6/files/patch-chrome_common_pref__names.cc44
-rw-r--r--devel/electron6/files/patch-chrome_common_pref__names.h41
-rw-r--r--devel/electron6/files/patch-chrome_common_webui__url__constants.cc48
-rw-r--r--devel/electron6/files/patch-chrome_common_webui__url__constants.h32
-rw-r--r--devel/electron6/files/patch-chrome_renderer_chrome__content__renderer__client.cc11
-rw-r--r--devel/electron6/files/patch-chrome_renderer_pepper_pepper__flash__font__file__host.cc29
-rw-r--r--devel/electron6/files/patch-chrome_renderer_pepper_pepper__flash__font__file__host.h20
-rw-r--r--devel/electron6/files/patch-chrome_service_cloud__print_print__system.cc11
-rw-r--r--devel/electron6/files/patch-chrome_test_BUILD.gn11
-rw-r--r--devel/electron6/files/patch-chrome_test_base_in__process__browser__test.cc22
-rw-r--r--devel/electron6/files/patch-chrome_test_base_testing__browser__process.h13
-rw-r--r--devel/electron6/files/patch-chrome_test_chromedriver_chrome__launcher.cc13
-rw-r--r--devel/electron6/files/patch-chrome_test_chromedriver_chrome_chrome__finder.cc20
-rw-r--r--devel/electron6/files/patch-chromecast_browser_cast__browser__main__parts.cc38
-rw-r--r--devel/electron6/files/patch-chromecast_browser_cast__content__browser__client.cc11
-rw-r--r--devel/electron6/files/patch-chromecast_browser_metrics_BUILD.gn11
-rw-r--r--devel/electron6/files/patch-chromecast_browser_tts_tts__controller__impl.cc14
-rw-r--r--devel/electron6/files/patch-chromecast_media_cma_backend_media__pipeline__backend__for__mixer.cc23
-rw-r--r--devel/electron6/files/patch-components_autofill_content_renderer_password__form__conversion__utils.cc14
-rw-r--r--devel/electron6/files/patch-components_autofill_core_browser_autofill__experiments.cc11
-rw-r--r--devel/electron6/files/patch-components_autofill_core_browser_personal__data__manager.cc15
-rw-r--r--devel/electron6/files/patch-components_autofill_core_common_autofill__util.cc11
-rw-r--r--devel/electron6/files/patch-components_content__settings_core_browser_website__settings__registry.cc11
-rw-r--r--devel/electron6/files/patch-components_cookie__config_cookie__store__util.cc24
-rw-r--r--devel/electron6/files/patch-components_crash_content_app_BUILD.gn20
-rw-r--r--devel/electron6/files/patch-components_crash_content_app_crashpad.cc43
-rw-r--r--devel/electron6/files/patch-components_crash_content_browser_BUILD.gn27
-rw-r--r--devel/electron6/files/patch-components_crash_core_common_BUILD.gn28
-rw-r--r--devel/electron6/files/patch-components_discardable__memory_service_discardable__shared__memory__manager.cc20
-rw-r--r--devel/electron6/files/patch-components_download_internal_common_base__file.cc20
-rw-r--r--devel/electron6/files/patch-components_feature__engagement_public_event__constants.cc14
-rw-r--r--devel/electron6/files/patch-components_feature__engagement_public_event__constants.h20
-rw-r--r--devel/electron6/files/patch-components_feedback_anonymizer__tool.cc14
-rw-r--r--devel/electron6/files/patch-components_flags__ui_flags__state.cc11
-rw-r--r--devel/electron6/files/patch-components_gcm__driver_gcm__client.h10
-rw-r--r--devel/electron6/files/patch-components_gcm__driver_gcm__client__impl.cc12
-rw-r--r--devel/electron6/files/patch-components_keyed__service_core_dependency__graph__unittest.cc14
-rw-r--r--devel/electron6/files/patch-components_metrics_BUILD.gn14
-rw-r--r--devel/electron6/files/patch-components_metrics_drive__metrics__provider__linux.cc16
-rw-r--r--devel/electron6/files/patch-components_metrics_metrics__log.cc11
-rw-r--r--devel/electron6/files/patch-components_metrics_system__memory__stats__recorder__linux.cc18
-rw-r--r--devel/electron6/files/patch-components_neterror_resources_neterror.js11
-rw-r--r--devel/electron6/files/patch-components_network__session__configurator_browser_network__session__configurator.cc11
-rw-r--r--devel/electron6/files/patch-components_new__or__sad__tab__strings.grdp38
-rw-r--r--devel/electron6/files/patch-components_os__crypt_os__crypt.h48
-rw-r--r--devel/electron6/files/patch-components_os__crypt_os__crypt__unittest.cc11
-rw-r--r--devel/electron6/files/patch-components_plugins_renderer_plugin__placeholder.cc14
-rw-r--r--devel/electron6/files/patch-components_policy_core_common_cloud_cloud__policy__util.cc73
-rw-r--r--devel/electron6/files/patch-components_policy_core_common_schema.cc14
-rw-r--r--devel/electron6/files/patch-components_policy_resources_policy__templates.json83
-rw-r--r--devel/electron6/files/patch-components_policy_tools_generate__policy__source.py20
-rw-r--r--devel/electron6/files/patch-components_previews_core_previews__features.cc18
-rw-r--r--devel/electron6/files/patch-components_services_filesystem_file__system__app.cc20
-rw-r--r--devel/electron6/files/patch-components_startup__metric__utils_browser_startup__metric__utils.cc20
-rw-r--r--devel/electron6/files/patch-components_storage__monitor_BUILD.gn20
-rw-r--r--devel/electron6/files/patch-components_storage__monitor_removable__device__constants.cc11
-rw-r--r--devel/electron6/files/patch-components_storage__monitor_removable__device__constants.h11
-rw-r--r--devel/electron6/files/patch-components_storage__monitor_storage__monitor__freebsd.cc57
-rw-r--r--devel/electron6/files/patch-components_storage__monitor_storage__monitor__freebsd.h48
-rw-r--r--devel/electron6/files/patch-components_sync__device__info_local__device__info__util__linux.cc26
-rw-r--r--devel/electron6/files/patch-components_update__client_update__query__params.cc11
-rw-r--r--devel/electron6/files/patch-components_url__matcher_regex__set__matcher.cc16
-rw-r--r--devel/electron6/files/patch-components_url__matcher_url__matcher__factory.cc14
-rw-r--r--devel/electron6/files/patch-components_webcrypto_algorithms_test__helpers.cc14
-rw-r--r--devel/electron6/files/patch-content_app_content__main__runner__impl.cc73
-rw-r--r--devel/electron6/files/patch-content_browser_BUILD.gn11
-rw-r--r--devel/electron6/files/patch-content_browser_browser__main__loop.cc46
-rw-r--r--devel/electron6/files/patch-content_browser_builtin__service__manifests.cc20
-rw-r--r--devel/electron6/files/patch-content_browser_child__process__launcher__helper__linux.cc92
-rw-r--r--devel/electron6/files/patch-content_browser_devtools_protocol_system__info__handler.cc11
-rw-r--r--devel/electron6/files/patch-content_browser_gpu_gpu__process__host.cc11
-rw-r--r--devel/electron6/files/patch-content_browser_media_media__internals.cc11
-rw-r--r--devel/electron6/files/patch-content_browser_memory_memory__monitor.cc11
-rw-r--r--devel/electron6/files/patch-content_browser_memory_swap__metrics__driver__impl__linux.cc27
-rw-r--r--devel/electron6/files/patch-content_browser_ppapi__plugin__process__host.cc11
-rw-r--r--devel/electron6/files/patch-content_browser_renderer__host_input_input__device__change__observer.cc29
-rw-r--r--devel/electron6/files/patch-content_browser_renderer__host_pepper_pepper__file__io__host.cc20
-rw-r--r--devel/electron6/files/patch-content_browser_renderer__host_render__message__filter.cc29
-rw-r--r--devel/electron6/files/patch-content_browser_renderer__host_render__message__filter.h19
-rw-r--r--devel/electron6/files/patch-content_browser_renderer__host_render__process__host__impl.cc38
-rw-r--r--devel/electron6/files/patch-content_browser_renderer__host_render__process__host__impl.h15
-rw-r--r--devel/electron6/files/patch-content_browser_renderer__host_render__view__host__impl.cc11
-rw-r--r--devel/electron6/files/patch-content_browser_renderer__host_render__widget__host__view__aura.cc29
-rw-r--r--devel/electron6/files/patch-content_browser_renderer__host_render__widget__host__view__event__handler.cc11
-rw-r--r--devel/electron6/files/patch-content_browser_scheduler_responsiveness_native__event__observer.cc29
-rw-r--r--devel/electron6/files/patch-content_browser_scheduler_responsiveness_native__event__observer.h47
-rw-r--r--devel/electron6/files/patch-content_browser_service__manager_service__manager__context.cc35
-rw-r--r--devel/electron6/files/patch-content_browser_utility__process__host.cc11
-rw-r--r--devel/electron6/files/patch-content_browser_webui_shared__resources__data__source.cc17
-rw-r--r--devel/electron6/files/patch-content_common_BUILD.gn15
-rw-r--r--devel/electron6/files/patch-content_common_common__sandbox__support__linux.cc10
-rw-r--r--devel/electron6/files/patch-content_common_user__agent.cc17
-rw-r--r--devel/electron6/files/patch-content_gpu_BUILD.gn11
-rw-r--r--devel/electron6/files/patch-content_gpu_gpu__main.cc47
-rw-r--r--devel/electron6/files/patch-content_gpu_gpu__sandbox__hook__linux.cc58
-rw-r--r--devel/electron6/files/patch-content_ppapi__plugin_ppapi__blink__platform__impl.cc38
-rw-r--r--devel/electron6/files/patch-content_ppapi__plugin_ppapi__blink__platform__impl.h25
-rw-r--r--devel/electron6/files/patch-content_public_app_v8__snapshot__overlay__manifest.cc11
-rw-r--r--devel/electron6/files/patch-content_public_common_child__process__host.h11
-rw-r--r--devel/electron6/files/patch-content_public_common_common__param__traits__macros.h11
-rw-r--r--devel/electron6/files/patch-content_public_common_content__features.cc20
-rw-r--r--devel/electron6/files/patch-content_public_common_content__switches.cc11
-rw-r--r--devel/electron6/files/patch-content_public_common_content__switches.h11
-rw-r--r--devel/electron6/files/patch-content_public_common_use__zoom__for__dsf__policy.cc11
-rw-r--r--devel/electron6/files/patch-content_public_test_browser__test__base.cc13
-rw-r--r--devel/electron6/files/patch-content_public_test_mock__render__thread.cc11
-rw-r--r--devel/electron6/files/patch-content_renderer_media_audio_audio__device__factory.cc11
-rw-r--r--devel/electron6/files/patch-content_renderer_media_stream_processed__local__audio__source.cc20
-rw-r--r--devel/electron6/files/patch-content_renderer_media_webrtc_webrtc__audio__renderer__unittest.cc11
-rw-r--r--devel/electron6/files/patch-content_renderer_render__process__impl.cc11
-rw-r--r--devel/electron6/files/patch-content_renderer_render__thread__impl.cc51
-rw-r--r--devel/electron6/files/patch-content_renderer_renderer__blink__platform__impl.cc56
-rw-r--r--devel/electron6/files/patch-content_renderer_renderer__blink__platform__impl.h29
-rw-r--r--devel/electron6/files/patch-content_renderer_renderer__main__platform__delegate__linux.cc19
-rw-r--r--devel/electron6/files/patch-content_shell_BUILD.gn11
-rw-r--r--devel/electron6/files/patch-content_shell_app_shell__main__delegate.cc20
-rw-r--r--devel/electron6/files/patch-content_shell_browser_shell__browser__context.cc20
-rw-r--r--devel/electron6/files/patch-content_shell_browser_shell__browser__main__parts.cc20
-rw-r--r--devel/electron6/files/patch-content_shell_browser_web__test_web__test__browser__context.cc11
-rw-r--r--devel/electron6/files/patch-content_shell_browser_web__test_web__test__browser__main__parts.cc11
-rw-r--r--devel/electron6/files/patch-content_shell_test__runner_test__runner.cc29
-rw-r--r--devel/electron6/files/patch-content_test_content__test__suite.cc18
-rw-r--r--devel/electron6/files/patch-content_utility_utility__blink__platform__with__sandbox__support__impl.cc29
-rw-r--r--devel/electron6/files/patch-content_utility_utility__blink__platform__with__sandbox__support__impl.h24
-rw-r--r--devel/electron6/files/patch-device_bluetooth_BUILD.gn11
-rw-r--r--devel/electron6/files/patch-device_gamepad_gamepad__provider.cc11
-rw-r--r--devel/electron6/files/patch-electron_BUILD.gn53
-rw-r--r--devel/electron6/files/patch-electron_atom_app_atom__main.cc35
-rw-r--r--devel/electron6/files/patch-electron_atom_app_atom__main__delegate.cc29
-rw-r--r--devel/electron6/files/patch-electron_atom_browser_api_atom__api__app.cc38
-rw-r--r--devel/electron6/files/patch-electron_atom_browser_api_atom__api__web__contents.cc34
-rw-r--r--devel/electron6/files/patch-electron_atom_browser_atom__browser__main__parts.cc11
-rw-r--r--devel/electron6/files/patch-electron_atom_browser_atom__browser__main__parts__posix.cc20
-rw-r--r--devel/electron6/files/patch-electron_atom_browser_atom__paths.h11
-rw-r--r--devel/electron6/files/patch-electron_atom_browser_browser.h33
-rw-r--r--devel/electron6/files/patch-electron_atom_browser_native__window__views.cc47
-rw-r--r--devel/electron6/files/patch-electron_atom_browser_native__window__views.h11
-rw-r--r--devel/electron6/files/patch-electron_atom_browser_relauncher__linux.cc32
-rw-r--r--devel/electron6/files/patch-electron_atom_browser_ui_views_atom__views__delegate.cc38
-rw-r--r--devel/electron6/files/patch-electron_atom_browser_ui_views_atom__views__delegate.h11
-rw-r--r--devel/electron6/files/patch-electron_atom_browser_ui_views_submenu__button.cc11
-rw-r--r--devel/electron6/files/patch-electron_atom_common_api_atom__api__crash__reporter.cc42
-rw-r--r--devel/electron6/files/patch-electron_atom_common_api_electron__bindings.cc11
-rw-r--r--devel/electron6/files/patch-electron_atom_common_atom__command__line.cc11
-rw-r--r--devel/electron6/files/patch-electron_atom_common_atom__command__line.h11
-rw-r--r--devel/electron6/files/patch-electron_atom_common_crash__reporter_crash__reporter.cc14
-rw-r--r--devel/electron6/files/patch-electron_atom_common_node__bindings.cc11
-rw-r--r--devel/electron6/files/patch-electron_atom_common_node__bindings__linux.cc69
-rw-r--r--devel/electron6/files/patch-electron_atom_common_platform__util.h11
-rw-r--r--devel/electron6/files/patch-electron_chromium__src_chrome_browser_process__singleton__posix.cc20
-rw-r--r--devel/electron6/files/patch-electron_default__app_default__app.ts11
-rw-r--r--devel/electron6/files/patch-electron_lib_browser_api_dialog.js11
-rw-r--r--devel/electron6/files/patch-electron_lib_browser_api_menu-item-roles.js11
-rw-r--r--devel/electron6/files/patch-electron_lib_browser_api_power-monitor.js11
-rw-r--r--devel/electron6/files/patch-electron_lib_browser_init.ts11
-rw-r--r--devel/electron6/files/patch-electron_lib_browser_rpc-server.js11
-rw-r--r--devel/electron6/files/patch-electron_lib_common_api_clipboard.js11
-rw-r--r--devel/electron6/files/patch-electron_script_lib_config.py12
-rw-r--r--devel/electron6/files/patch-electron_script_lib_utils.js11
-rw-r--r--devel/electron6/files/patch-electron_script_spec-runner.js11
-rw-r--r--devel/electron6/files/patch-electron_spec-main_api-app-spec.ts83
-rw-r--r--devel/electron6/files/patch-electron_spec_api-auto-updater-spec.js11
-rw-r--r--devel/electron6/files/patch-electron_spec_api-browser-window-spec.js56
-rw-r--r--devel/electron6/files/patch-electron_spec_api-clipboard-spec.js38
-rw-r--r--devel/electron6/files/patch-electron_spec_api-content-tracing-spec.js11
-rw-r--r--devel/electron6/files/patch-electron_spec_api-crash-reporter-spec.js92
-rw-r--r--devel/electron6/files/patch-electron_spec_api-net-log-spec.js29
-rw-r--r--devel/electron6/files/patch-electron_spec_api-notification-dbus-spec.js11
-rw-r--r--devel/electron6/files/patch-electron_spec_api-power-monitor-spec.js11
-rw-r--r--devel/electron6/files/patch-electron_spec_api-process-spec.js11
-rw-r--r--devel/electron6/files/patch-electron_spec_api-screen-spec.js38
-rw-r--r--devel/electron6/files/patch-electron_spec_api-shell-spec.js34
-rw-r--r--devel/electron6/files/patch-electron_spec_chromium-spec.js27
-rw-r--r--devel/electron6/files/patch-electron_spec_fixtures_api_crash-restart.html11
-rw-r--r--devel/electron6/files/patch-electron_spec_node-spec.js11
-rw-r--r--devel/electron6/files/patch-electron_spec_version-bump-spec.js11
-rw-r--r--devel/electron6/files/patch-extensions_browser_api_declarative__webrequest_webrequest__action.cc14
-rw-r--r--devel/electron6/files/patch-extensions_browser_api_messaging_message__service.cc34
-rw-r--r--devel/electron6/files/patch-extensions_browser_api_networking__private_networking__private__delegate__factory.cc20
-rw-r--r--devel/electron6/files/patch-extensions_browser_api_web__request_form__data__parser.cc14
-rw-r--r--devel/electron6/files/patch-extensions_browser_browser__context__keyed__service__factories.cc11
-rw-r--r--devel/electron6/files/patch-extensions_common_api___permission__features.json29
-rw-r--r--devel/electron6/files/patch-extensions_common_api_runtime.json11
-rw-r--r--devel/electron6/files/patch-extensions_common_feature__switch.cc14
-rw-r--r--devel/electron6/files/patch-extensions_common_features_feature.cc11
-rw-r--r--devel/electron6/files/patch-extensions_common_image__util.cc14
-rw-r--r--devel/electron6/files/patch-extensions_common_stack__frame.cc14
-rw-r--r--devel/electron6/files/patch-extensions_renderer_bindings_api__binding__util.cc11
-rw-r--r--devel/electron6/files/patch-extensions_shell_app_shell__main__delegate.cc29
-rw-r--r--devel/electron6/files/patch-extensions_shell_browser_shell__extensions__api__client.cc20
-rw-r--r--devel/electron6/files/patch-extensions_shell_browser_shell__extensions__api__client.h19
-rw-r--r--devel/electron6/files/patch-google__apis_gcm_engine_heartbeat__manager.cc53
-rw-r--r--devel/electron6/files/patch-gpu_command__buffer_common_gpu__memory__buffer__support.cc11
-rw-r--r--devel/electron6/files/patch-gpu_command__buffer_service_external__vk__image__backing.cc29
-rw-r--r--devel/electron6/files/patch-gpu_command__buffer_service_external__vk__image__gl__representation.cc20
-rw-r--r--devel/electron6/files/patch-gpu_command__buffer_service_program__manager.cc14
-rw-r--r--devel/electron6/files/patch-gpu_command__buffer_tests_gl__copy__texture__CHROMIUM__unittest.cc11
-rw-r--r--devel/electron6/files/patch-gpu_command__buffer_tests_gl__test__utils.cc20
-rw-r--r--devel/electron6/files/patch-gpu_command__buffer_tests_gl__test__utils.h11
-rw-r--r--devel/electron6/files/patch-gpu_config_gpu__control__list.cc32
-rw-r--r--devel/electron6/files/patch-gpu_config_gpu__test__config.cc11
-rw-r--r--devel/electron6/files/patch-gpu_ipc_common_gpu__memory__buffer__support.cc56
-rw-r--r--devel/electron6/files/patch-gpu_ipc_common_gpu__memory__buffer__support.h29
-rw-r--r--devel/electron6/files/patch-gpu_ipc_service_gpu__init.cc83
-rw-r--r--devel/electron6/files/patch-gpu_ipc_service_gpu__memory__buffer__factory.cc20
-rw-r--r--devel/electron6/files/patch-gpu_ipc_service_gpu__watchdog__thread.cc73
-rw-r--r--devel/electron6/files/patch-gpu_ipc_service_gpu__watchdog__thread.h13
-rw-r--r--devel/electron6/files/patch-gpu_vulkan_vulkan__function__pointers.cc20
-rw-r--r--devel/electron6/files/patch-gpu_vulkan_vulkan__function__pointers.h35
-rw-r--r--devel/electron6/files/patch-headless_lib_browser_headless__content__browser__client.cc20
-rw-r--r--devel/electron6/files/patch-headless_lib_browser_headless__content__browser__client.h11
-rw-r--r--devel/electron6/files/patch-headless_lib_browser_headless__request__context__manager.cc38
-rw-r--r--devel/electron6/files/patch-headless_lib_browser_headless__request__context__manager.h11
-rw-r--r--devel/electron6/files/patch-headless_lib_headless__macros.h13
-rw-r--r--devel/electron6/files/patch-ipc_ipc__channel.h11
-rw-r--r--devel/electron6/files/patch-ipc_ipc__channel__common.cc20
-rw-r--r--devel/electron6/files/patch-ipc_ipc__channel__mojo.cc15
-rw-r--r--devel/electron6/files/patch-ipc_ipc__message__utils.cc11
-rw-r--r--devel/electron6/files/patch-ipc_ipc__message__utils.h11
-rw-r--r--devel/electron6/files/patch-media_BUILD.gn12
-rw-r--r--devel/electron6/files/patch-media_audio_BUILD.gn22
-rw-r--r--devel/electron6/files/patch-media_audio_alsa_audio__manager__alsa.cc54
-rw-r--r--devel/electron6/files/patch-media_audio_audio__input__device.cc11
-rw-r--r--devel/electron6/files/patch-media_audio_audio__manager.cc29
-rw-r--r--devel/electron6/files/patch-media_audio_audio__manager.h11
-rw-r--r--devel/electron6/files/patch-media_audio_audio__output__proxy__unittest.cc11
-rw-r--r--devel/electron6/files/patch-media_audio_pulse_pulse.sigs46
-rw-r--r--devel/electron6/files/patch-media_base_audio__latency.cc11
-rw-r--r--devel/electron6/files/patch-media_base_scopedfd__helper.h19
-rw-r--r--devel/electron6/files/patch-media_base_video__frame.cc47
-rw-r--r--devel/electron6/files/patch-media_base_video__frame.h38
-rw-r--r--devel/electron6/files/patch-media_capture_video_create__video__capture__device__factory.cc20
-rw-r--r--devel/electron6/files/patch-media_capture_video_fake__video__capture__device__factory.cc11
-rw-r--r--devel/electron6/files/patch-media_capture_video_file__video__capture__device__factory.cc11
-rw-r--r--devel/electron6/files/patch-media_capture_video_linux_v4l2__capture__delegate.cc26
-rw-r--r--devel/electron6/files/patch-media_capture_video_linux_video__capture__device__factory__linux.cc32
-rw-r--r--devel/electron6/files/patch-media_capture_video_linux_video__capture__device__linux.cc61
-rw-r--r--devel/electron6/files/patch-media_capture_video_mock__gpu__memory__buffer__manager.cc11
-rw-r--r--devel/electron6/files/patch-media_capture_video_shared__memory__handle__provider.cc20
-rw-r--r--devel/electron6/files/patch-media_capture_video_shared__memory__handle__provider.h15
-rw-r--r--devel/electron6/files/patch-media_capture_video_video__capture__buffer__pool__impl.cc11
-rw-r--r--devel/electron6/files/patch-media_capture_video_video__capture__device__client.cc11
-rw-r--r--devel/electron6/files/patch-media_filters_vp9__parser.h10
-rw-r--r--devel/electron6/files/patch-media_formats_common_offset__byte__queue.cc20
-rw-r--r--devel/electron6/files/patch-media_formats_common_offset__byte__queue.h22
-rw-r--r--devel/electron6/files/patch-media_formats_mp2t_es__parser__adts.cc26
-rw-r--r--devel/electron6/files/patch-media_formats_mp2t_es__parser__mpeg1audio.cc26
-rw-r--r--devel/electron6/files/patch-media_gpu_libyuv__image__processor.cc38
-rw-r--r--devel/electron6/files/patch-media_gpu_linux_platform__video__frame__utils.cc20
-rw-r--r--devel/electron6/files/patch-media_gpu_vaapi_vaapi__dmabuf__video__frame__mapper.cc20
-rw-r--r--devel/electron6/files/patch-media_gpu_vaapi_vaapi__video__encode__accelerator.cc20
-rw-r--r--devel/electron6/files/patch-media_gpu_video__frame__mapper__factory.cc51
-rw-r--r--devel/electron6/files/patch-media_media__options.gni12
-rw-r--r--devel/electron6/files/patch-media_mojo_services_gpu__mojo__media__client.cc20
-rw-r--r--devel/electron6/files/patch-media_video_gpu__memory__buffer__video__frame__pool.cc11
-rw-r--r--devel/electron6/files/patch-mojo_public_c_system_thunks.cc58
-rw-r--r--devel/electron6/files/patch-mojo_public_js_mojo__bindings__resources.grd11
-rw-r--r--devel/electron6/files/patch-net_BUILD.gn37
-rw-r--r--devel/electron6/files/patch-net_base_address__tracker__linux.cc177
-rw-r--r--devel/electron6/files/patch-net_base_address__tracker__linux.h12
-rw-r--r--devel/electron6/files/patch-net_base_address__tracker__linux__unittest.cc14
-rw-r--r--devel/electron6/files/patch-net_base_network__change__notifier.cc10
-rw-r--r--devel/electron6/files/patch-net_base_network__interfaces__posix.h11
-rw-r--r--devel/electron6/files/patch-net_disk__cache_blockfile_disk__format.h12
-rw-r--r--devel/electron6/files/patch-net_dns_address__sorter__posix.cc12
-rw-r--r--devel/electron6/files/patch-net_dns_dns__config__service__posix__unittest.cc47
-rw-r--r--devel/electron6/files/patch-net_dns_dns__reloader.cc13
-rw-r--r--devel/electron6/files/patch-net_dns_dns__util.cc11
-rw-r--r--devel/electron6/files/patch-net_dns_host__resolver__proc.cc11
-rw-r--r--devel/electron6/files/patch-net_features.gni11
-rw-r--r--devel/electron6/files/patch-net_http_http__auth__gssapi__posix.cc14
-rw-r--r--devel/electron6/files/patch-net_http_http__auth__gssapi__posix.h12
-rw-r--r--devel/electron6/files/patch-net_nqe_network__quality__estimator.cc11
-rw-r--r--devel/electron6/files/patch-net_nqe_network__quality__estimator__unittest.cc11
-rw-r--r--devel/electron6/files/patch-net_proxy__resolution_proxy__config__service__linux.cc39
-rw-r--r--devel/electron6/files/patch-net_proxy__resolution_proxy__resolution__service.cc29
-rw-r--r--devel/electron6/files/patch-net_quic_platform_impl_quic__ip__address__impl.cc10
-rw-r--r--devel/electron6/files/patch-net_socket_socket__posix.cc11
-rw-r--r--devel/electron6/files/patch-net_socket_socks5__client__socket.cc13
-rw-r--r--devel/electron6/files/patch-net_socket_tcp__socket__posix.cc20
-rw-r--r--devel/electron6/files/patch-net_socket_udp__socket__posix.cc108
-rw-r--r--devel/electron6/files/patch-net_socket_udp__socket__posix.h11
-rw-r--r--devel/electron6/files/patch-net_socket_unix__domain__client__socket__posix.cc11
-rw-r--r--devel/electron6/files/patch-net_tools_cert__verify__tool_cert__verify__tool.cc20
-rw-r--r--devel/electron6/files/patch-net_tools_quic_quic__http__proxy__backend.cc11
-rw-r--r--devel/electron6/files/patch-net_url__request_url__request__context__builder.cc20
-rw-r--r--devel/electron6/files/patch-pdf_pdfium_pdfium__engine.cc74
-rw-r--r--devel/electron6/files/patch-ppapi_proxy_file__io__resource.cc48
-rw-r--r--devel/electron6/files/patch-printing_backend_print__backend__cups.h11
-rw-r--r--devel/electron6/files/patch-printing_cups__config__helper.py11
-rw-r--r--devel/electron6/files/patch-remoting_base_chromoting__event.cc11
-rw-r--r--devel/electron6/files/patch-remoting_client_display_sys__opengl.h11
-rw-r--r--devel/electron6/files/patch-remoting_host_evaluate__capability.cc11
-rw-r--r--devel/electron6/files/patch-remoting_host_host__attributes.cc11
-rw-r--r--devel/electron6/files/patch-remoting_host_host__details.cc11
-rw-r--r--devel/electron6/files/patch-remoting_host_it2me_it2me__native__messaging__host__main.cc35
-rw-r--r--devel/electron6/files/patch-remoting_host_me2me__desktop__environment.cc11
-rw-r--r--devel/electron6/files/patch-remoting_host_remoting__me2me__host.cc108
-rw-r--r--devel/electron6/files/patch-remoting_webapp_base_js_platform.js17
-rw-r--r--devel/electron6/files/patch-sandbox_features.gni10
-rw-r--r--devel/electron6/files/patch-sandbox_linux_BUILD.gn47
-rw-r--r--devel/electron6/files/patch-sandbox_linux_services_init__process__reaper.cc15
-rw-r--r--devel/electron6/files/patch-sandbox_linux_services_libc__interceptor.cc21
-rw-r--r--devel/electron6/files/patch-services_audio_BUILD.gn11
-rw-r--r--devel/electron6/files/patch-services_content_simple__browser_simple__browser__service.cc20
-rw-r--r--devel/electron6/files/patch-services_content_simple__browser_simple__browser__service.h20
-rw-r--r--devel/electron6/files/patch-services_device_geolocation_location__arbitrator.cc11
-rw-r--r--devel/electron6/files/patch-services_device_hid_BUILD.gn22
-rw-r--r--devel/electron6/files/patch-services_device_hid_hid__connection__freebsd.cc243
-rw-r--r--devel/electron6/files/patch-services_device_hid_hid__connection__freebsd.h71
-rw-r--r--devel/electron6/files/patch-services_device_hid_hid__service.cc20
-rw-r--r--devel/electron6/files/patch-services_device_hid_hid__service__freebsd.cc377
-rw-r--r--devel/electron6/files/patch-services_device_hid_hid__service__freebsd.h51
-rw-r--r--devel/electron6/files/patch-services_device_serial_BUILD.gn11
-rw-r--r--devel/electron6/files/patch-services_device_serial_serial__io__handler__posix.cc11
-rw-r--r--devel/electron6/files/patch-services_device_time__zone__monitor_time__zone__monitor.cc20
-rw-r--r--devel/electron6/files/patch-services_device_time__zone__monitor_time__zone__monitor__linux.cc14
-rw-r--r--devel/electron6/files/patch-services_device_usb_BUILD.gn11
-rw-r--r--devel/electron6/files/patch-services_network_BUILD.gn10
-rw-r--r--devel/electron6/files/patch-services_network_network__context.cc11
-rw-r--r--devel/electron6/files/patch-services_network_network__sandbox__hook__linux.cc18
-rw-r--r--devel/electron6/files/patch-services_network_network__service.cc20
-rw-r--r--devel/electron6/files/patch-services_network_network__service.h11
-rw-r--r--devel/electron6/files/patch-services_resource__coordinator_memory__instrumentation_queued__request__dispatcher.cc20
-rw-r--r--devel/electron6/files/patch-services_resource__coordinator_public_cpp_memory__instrumentation_os__metrics.h32
-rw-r--r--devel/electron6/files/patch-services_resource__coordinator_public_cpp_memory__instrumentation_os__metrics__linux.cc103
-rw-r--r--devel/electron6/files/patch-services_service__manager_embedder_main.cc11
-rw-r--r--devel/electron6/files/patch-services_service__manager_embedder_set__process__title__linux.cc19
-rw-r--r--devel/electron6/files/patch-services_service__manager_embedder_set__process__title__linux.h20
-rw-r--r--devel/electron6/files/patch-services_service__manager_public_cpp_service__executable_BUILD.gn14
-rw-r--r--devel/electron6/files/patch-services_service__manager_sandbox_BUILD.gn11
-rw-r--r--devel/electron6/files/patch-services_service__manager_sandbox_sandbox__type.cc11
-rw-r--r--devel/electron6/files/patch-services_service__manager_zygote_common_zygote__features.gni8
-rw-r--r--devel/electron6/files/patch-services_service__manager_zygote_host_zygote__host__impl__linux.cc40
-rw-r--r--devel/electron6/files/patch-services_service__manager_zygote_host_zygote__host__impl__linux.h13
-rw-r--r--devel/electron6/files/patch-services_service__manager_zygote_zygote__host__linux.h16
-rw-r--r--devel/electron6/files/patch-services_service__manager_zygote_zygote__linux.cc15
-rw-r--r--devel/electron6/files/patch-services_service__manager_zygote_zygote__main__linux.cc48
-rw-r--r--devel/electron6/files/patch-services_video__capture_broadcasting__receiver.cc20
-rw-r--r--devel/electron6/files/patch-skia_ext_SkMemory__new__handler.cpp20
-rw-r--r--devel/electron6/files/patch-third__party_angle_BUILD.gn21
-rw-r--r--devel/electron6/files/patch-third__party_angle_src_gpu__info__util_SystemInfo__internal.h16
-rw-r--r--devel/electron6/files/patch-third__party_angle_src_gpu__info__util_SystemInfo__libpci.cpp90
-rw-r--r--devel/electron6/files/patch-third__party_angle_src_gpu__info__util_SystemInfo__linux.cpp21
-rw-r--r--devel/electron6/files/patch-third__party_angle_src_gpu__info__util_SystemInfo__x11.cpp55
-rw-r--r--devel/electron6/files/patch-third__party_angle_src_libANGLE_Display.cpp20
-rw-r--r--devel/electron6/files/patch-third__party_angle_src_libANGLE_renderer_driver__utils.h11
-rw-r--r--devel/electron6/files/patch-third__party_angle_third__party_vulkan-loader_src_loader_loader.c11
-rw-r--r--devel/electron6/files/patch-third__party_angle_third__party_vulkan-loader_src_loader_vk__loader__platform.h11
-rw-r--r--devel/electron6/files/patch-third__party_angle_third__party_vulkan-validation-layers_src_layers_vk__loader__platform.h11
-rw-r--r--devel/electron6/files/patch-third__party_blink_renderer_BUILD.gn13
-rw-r--r--devel/electron6/files/patch-third__party_blink_renderer_core_editing_editing__behavior.cc11
-rw-r--r--devel/electron6/files/patch-third__party_blink_renderer_core_html_canvas_canvas__async__blob__creator.cc11
-rw-r--r--devel/electron6/files/patch-third__party_blink_renderer_core_html_forms_internal__popup__menu.cc11
-rw-r--r--devel/electron6/files/patch-third__party_blink_renderer_core_inspector_inspector__memory__agent.cc11
-rw-r--r--devel/electron6/files/patch-third__party_blink_renderer_core_layout_layout__view.cc20
-rw-r--r--devel/electron6/files/patch-third__party_blink_renderer_core_paint_paint__layer.cc11
-rw-r--r--devel/electron6/files/patch-third__party_blink_renderer_core_scroll_scrollbar__theme__aura.cc20
-rw-r--r--devel/electron6/files/patch-third__party_blink_renderer_platform_BUILD.gn10
-rw-r--r--devel/electron6/files/patch-third__party_blink_renderer_platform_fonts_font__cache.cc20
-rw-r--r--devel/electron6/files/patch-third__party_blink_renderer_platform_fonts_font__cache.h53
-rw-r--r--devel/electron6/files/patch-third__party_blink_renderer_platform_fonts_font__description.cc20
-rw-r--r--devel/electron6/files/patch-third__party_blink_renderer_platform_fonts_font__metrics.cc29
-rw-r--r--devel/electron6/files/patch-third__party_blink_renderer_platform_fonts_font__unique__name__lookup.cc20
-rw-r--r--devel/electron6/files/patch-third__party_blink_renderer_platform_fonts_shaping_shape__result__inline__headers.h78
-rw-r--r--devel/electron6/files/patch-third__party_blink_renderer_platform_fonts_skia_font__cache__skia.cc38
-rw-r--r--devel/electron6/files/patch-third__party_blink_renderer_platform_wtf_container__annotations.h27
-rw-r--r--devel/electron6/files/patch-third__party_blink_renderer_platform_wtf_stack__util.cc14
-rw-r--r--devel/electron6/files/patch-third__party_blink_renderer_platform_wtf_threading__pthreads.cc22
-rw-r--r--devel/electron6/files/patch-third__party_boringssl_BUILD.gn36
-rw-r--r--devel/electron6/files/patch-third__party_boringssl_src_crypto_cpu-aarch64-linux.c63
-rw-r--r--devel/electron6/files/patch-third__party_boringssl_src_crypto_ex__data.c13
-rw-r--r--devel/electron6/files/patch-third__party_breakpad_breakpad_src_common_simple__string__dictionary.h11
-rw-r--r--devel/electron6/files/patch-third__party_cacheinvalidation_src_google_cacheinvalidation_include_types.h11
-rw-r--r--devel/electron6/files/patch-third__party_crashpad_crashpad_build_crashpad__buildconfig.gni11
-rw-r--r--devel/electron6/files/patch-third__party_crashpad_crashpad_client_BUILD.gn15
-rw-r--r--devel/electron6/files/patch-third__party_crashpad_crashpad_client_crashpad__client__posix.cc41
-rw-r--r--devel/electron6/files/patch-third__party_crashpad_crashpad_util_misc_address__types.h20
-rw-r--r--devel/electron6/files/patch-third__party_crashpad_crashpad_util_misc_capture__context.h20
-rw-r--r--devel/electron6/files/patch-third__party_crashpad_crashpad_util_misc_metrics.cc11
-rw-r--r--devel/electron6/files/patch-third__party_crashpad_crashpad_util_misc_uuid.cc11
-rw-r--r--devel/electron6/files/patch-third__party_crashpad_crashpad_util_posix_close__multiple.cc29
-rw-r--r--devel/electron6/files/patch-third__party_crashpad_crashpad_util_posix_drop__privileges.cc11
-rw-r--r--devel/electron6/files/patch-third__party_crashpad_crashpad_util_posix_signals.cc40
-rw-r--r--devel/electron6/files/patch-third__party_crashpad_crashpad_util_posix_symbolic__constants__posix.cc20
-rw-r--r--devel/electron6/files/patch-third__party_crc32c_src_src_crc32c__arm64__linux__check.h53
-rw-r--r--devel/electron6/files/patch-third__party_electron__node_deps_uv_BUILD.gn45
-rw-r--r--devel/electron6/files/patch-third__party_ffmpeg_libavutil_mem.c12
-rw-r--r--devel/electron6/files/patch-third__party_glslang_src_glslang_Include_PoolAlloc.h10
-rw-r--r--devel/electron6/files/patch-third__party_googletest_src_googletest_src_gtest-port.cc43
-rw-r--r--devel/electron6/files/patch-third__party_googletest_src_googletest_src_gtest.cc10
-rw-r--r--devel/electron6/files/patch-third__party_harfbuzz-ng_harfbuzz.gni20
-rw-r--r--devel/electron6/files/patch-third__party_leveldatabase_env__chromium.cc14
-rw-r--r--devel/electron6/files/patch-third__party_libXNVCtrl_NVCtrl.c25
-rw-r--r--devel/electron6/files/patch-third__party_libphonenumber_dist_cpp_src_phonenumbers_base_memory_singleton.h11
-rw-r--r--devel/electron6/files/patch-third__party_libphonenumber_dist_cpp_src_phonenumbers_base_synchronization_lock.h11
-rw-r--r--devel/electron6/files/patch-third__party_libphonenumber_dist_cpp_src_phonenumbers_base_thread__checker.h19
-rw-r--r--devel/electron6/files/patch-third__party_libyuv_include_libyuv_row.h37
-rw-r--r--devel/electron6/files/patch-third__party_nasm_config_config-linux.h29
-rw-r--r--devel/electron6/files/patch-third__party_node_node.py10
-rw-r--r--devel/electron6/files/patch-third__party_pdfium_core_fxcrt_cfx__datetime.cpp11
-rw-r--r--devel/electron6/files/patch-third__party_pdfium_core_fxcrt_fx__system.h11
-rw-r--r--devel/electron6/files/patch-third__party_pdfium_core_fxge_fx__ge__linux.cpp14
-rw-r--r--devel/electron6/files/patch-third__party_pdfium_fxjs_cjs__publicmethods.cpp106
-rw-r--r--devel/electron6/files/patch-third__party_pdfium_fxjs_fx__date__helpers.cpp22
-rw-r--r--devel/electron6/files/patch-third__party_pdfium_third__party_base_allocator_partition__allocator_page__allocator.cc11
-rw-r--r--devel/electron6/files/patch-third__party_pdfium_third__party_base_allocator_partition__allocator_page__allocator__internals__posix.h38
-rw-r--r--devel/electron6/files/patch-third__party_pdfium_xfa_fgas_font_cfx__fontsourceenum__file.cpp14
-rw-r--r--devel/electron6/files/patch-third__party_pdfium_xfa_fwl_cfwl__notedriver.cpp19
-rw-r--r--devel/electron6/files/patch-third__party_perfetto_include_perfetto_base_build__config.h51
-rw-r--r--devel/electron6/files/patch-third__party_perfetto_include_perfetto_base_event.h14
-rw-r--r--devel/electron6/files/patch-third__party_perfetto_include_perfetto_base_thread__utils.h25
-rw-r--r--devel/electron6/files/patch-third__party_perfetto_include_perfetto_base_time.h20
-rw-r--r--devel/electron6/files/patch-third__party_perfetto_include_perfetto_base_watchdog__posix.h11
-rw-r--r--devel/electron6/files/patch-third__party_perfetto_src_base_unix__socket.cc12
-rw-r--r--devel/electron6/files/patch-third__party_perfetto_src_tracing_core_tracing__service__impl.cc22
-rw-r--r--devel/electron6/files/patch-third__party_perfetto_src_tracing_core_virtual__destructors.cc28
-rw-r--r--devel/electron6/files/patch-third__party_protobuf_src_google_protobuf_stubs_platform__macros.h11
-rw-r--r--devel/electron6/files/patch-third__party_sfntly_src_cpp_src_sfntly_table_core_cmap__table.cc47
-rw-r--r--devel/electron6/files/patch-third__party_skia_src_core_SkCpu.cpp19
-rw-r--r--devel/electron6/files/patch-third__party_skia_src_gpu_GrAutoLocaleSetter.h11
-rw-r--r--devel/electron6/files/patch-third__party_skia_src_images_SkJpegEncoder.cpp41
-rw-r--r--devel/electron6/files/patch-third__party_skia_src_opts_SkRasterPipeline__opts.h20
-rw-r--r--devel/electron6/files/patch-third__party_skia_src_ports_SkOSFile__stdio.cpp11
-rw-r--r--devel/electron6/files/patch-third__party_skia_src_sksl_SkSLString.h11
-rw-r--r--devel/electron6/files/patch-third__party_skia_third__party_vulkanmemoryallocator_include_vk__mem__alloc.h11
-rw-r--r--devel/electron6/files/patch-third__party_snappy_src_snappy.h20
-rw-r--r--devel/electron6/files/patch-third__party_sqlite_BUILD.gn11
-rw-r--r--devel/electron6/files/patch-third__party_swiftshader_BUILD.gn24
-rw-r--r--devel/electron6/files/patch-third__party_swiftshader_src_Common_Configurator.cpp12
-rw-r--r--devel/electron6/files/patch-third__party_swiftshader_src_Common_MutexLock.hpp11
-rw-r--r--devel/electron6/files/patch-third__party_swiftshader_src_Common_SharedLibrary.hpp11
-rw-r--r--devel/electron6/files/patch-third__party_swiftshader_src_Main_SwiftConfig.cpp14
-rw-r--r--devel/electron6/files/patch-third__party_swiftshader_src_OpenGL_libEGL_Display.cpp20
-rw-r--r--devel/electron6/files/patch-third__party_swiftshader_src_OpenGL_libEGL_Surface.cpp11
-rw-r--r--devel/electron6/files/patch-third__party_swiftshader_src_OpenGL_libEGL_libEGL.cpp29
-rw-r--r--devel/electron6/files/patch-third__party_swiftshader_src_OpenGL_libEGL_libEGL.hpp11
-rw-r--r--devel/electron6/files/patch-third__party_swiftshader_src_OpenGL_libGLES__CM_libGLES__CM.hpp11
-rw-r--r--devel/electron6/files/patch-third__party_swiftshader_src_OpenGL_libGLESv2_libGLESv2.hpp11
-rw-r--r--devel/electron6/files/patch-third__party_swiftshader_third__party_llvm-7.0_configs_linux_include_llvm_Config_config.h152
-rw-r--r--devel/electron6/files/patch-third__party_swiftshader_third__party_llvm-7.0_configs_linux_include_llvm_Config_llvm-config.h20
-rw-r--r--devel/electron6/files/patch-third__party_swiftshader_third__party_llvm-subzero_build_Linux_include_llvm_Config_config.h29
-rw-r--r--devel/electron6/files/patch-third__party_swiftshader_third__party_llvm-subzero_lib_Support_Unix_Process.inc11
-rw-r--r--devel/electron6/files/patch-third__party_usrsctp_BUILD.gn20
-rw-r--r--devel/electron6/files/patch-third__party_webrtc_BUILD.gn12
-rw-r--r--devel/electron6/files/patch-third__party_webrtc_modules_audio__device_BUILD.gn11
-rw-r--r--devel/electron6/files/patch-third__party_webrtc_modules_rtp__rtcp_source_forward__error__correction.cc10
-rw-r--r--devel/electron6/files/patch-third__party_webrtc_rtc__base_BUILD.gn20
-rw-r--r--devel/electron6/files/patch-third__party_webrtc_rtc__base_byte__order.h11
-rw-r--r--devel/electron6/files/patch-third__party_webrtc_rtc__base_ifaddrs__converter.h11
-rw-r--r--devel/electron6/files/patch-third__party_webrtc_rtc__base_ip__address.cc12
-rw-r--r--devel/electron6/files/patch-third__party_webrtc_rtc__base_ip__address.h13
-rw-r--r--devel/electron6/files/patch-third__party_webrtc_rtc__base_network.cc29
-rw-r--r--devel/electron6/files/patch-third__party_webrtc_rtc__base_network.h13
-rw-r--r--devel/electron6/files/patch-third__party_webrtc_rtc__base_physical__socket__server.cc65
-rw-r--r--devel/electron6/files/patch-third__party_webrtc_rtc__base_physical__socket__server.h11
-rw-r--r--devel/electron6/files/patch-third__party_webrtc_rtc__base_platform__thread__types.cc40
-rw-r--r--devel/electron6/files/patch-third__party_webrtc_system__wrappers_BUILD.gn11
-rw-r--r--devel/electron6/files/patch-third__party_yasm_yasm__assemble.gni159
-rw-r--r--devel/electron6/files/patch-third__party_zlib_arm__features.c46
-rw-r--r--devel/electron6/files/patch-tools_gn_base_files_file__posix.cc11
-rw-r--r--devel/electron6/files/patch-tools_gn_base_files_file__util.h11
-rw-r--r--devel/electron6/files/patch-tools_gn_base_files_file__util__posix.cc11
-rw-r--r--devel/electron6/files/patch-tools_gn_base_files_scoped__file.cc11
-rw-r--r--devel/electron6/files/patch-tools_gn_build_gen.py33
-rw-r--r--devel/electron6/files/patch-tools_gn_tools_gn_exec__process.cc13
-rw-r--r--devel/electron6/files/patch-tools_gn_util_sys__info.cc11
-rw-r--r--devel/electron6/files/patch-tools_json__schema__compiler_feature__compiler.py10
-rw-r--r--devel/electron6/files/patch-tools_json__schema__compiler_model.py11
-rw-r--r--devel/electron6/files/patch-tools_perf_chrome__telemetry__build_BUILD.gn11
-rw-r--r--devel/electron6/files/patch-tools_variations_fieldtrial__to__struct.py10
-rw-r--r--devel/electron6/files/patch-ui_base_dragdrop_os__exchange__data__provider__factory.cc20
-rw-r--r--devel/electron6/files/patch-ui_base_ime_init_input__method__initializer.cc38
-rw-r--r--devel/electron6/files/patch-ui_base_resource_resource__bundle.cc20
-rw-r--r--devel/electron6/files/patch-ui_base_resource_resource__bundle__freebsd.cc24
-rw-r--r--devel/electron6/files/patch-ui_base_ui__base__features.cc20
-rw-r--r--devel/electron6/files/patch-ui_base_ui__base__features.h15
-rw-r--r--devel/electron6/files/patch-ui_base_webui_web__ui__util.cc11
-rw-r--r--devel/electron6/files/patch-ui_events_devices_x11_device__data__manager__x11.cc19
-rw-r--r--devel/electron6/files/patch-ui_events_event__switches.cc11
-rw-r--r--devel/electron6/files/patch-ui_events_event__switches.h11
-rw-r--r--devel/electron6/files/patch-ui_events_keycodes_dom_keycode__converter.cc11
-rw-r--r--devel/electron6/files/patch-ui_gfx_BUILD.gn11
-rw-r--r--devel/electron6/files/patch-ui_gfx_canvas__skia.cc11
-rw-r--r--devel/electron6/files/patch-ui_gfx_codec_jpeg__codec.cc20
-rw-r--r--devel/electron6/files/patch-ui_gfx_font__fallback__linux.cc13
-rw-r--r--devel/electron6/files/patch-ui_gfx_font__list.cc11
-rw-r--r--devel/electron6/files/patch-ui_gfx_font__render__params.h18
-rw-r--r--devel/electron6/files/patch-ui_gfx_gpu__memory__buffer.h20
-rw-r--r--devel/electron6/files/patch-ui_gfx_ipc_gfx__param__traits__macros.h35
-rw-r--r--devel/electron6/files/patch-ui_gfx_linux_client__native__pixmap__dmabuf.cc25
-rw-r--r--devel/electron6/files/patch-ui_gfx_mojo_buffer__types__struct__traits.cc66
-rw-r--r--devel/electron6/files/patch-ui_gfx_mojo_buffer__types__struct__traits.h20
-rw-r--r--devel/electron6/files/patch-ui_gfx_native__pixmap__handle.cc47
-rw-r--r--devel/electron6/files/patch-ui_gfx_native__pixmap__handle.h29
-rw-r--r--devel/electron6/files/patch-ui_gfx_render__text.cc46
-rw-r--r--devel/electron6/files/patch-ui_gl_BUILD.gn11
-rw-r--r--devel/electron6/files/patch-ui_gl_generate__bindings.py12
-rw-r--r--devel/electron6/files/patch-ui_gl_gl__bindings__api__autogen__glx.h10
-rw-r--r--devel/electron6/files/patch-ui_gl_gl__bindings__autogen__glx.cc61
-rw-r--r--devel/electron6/files/patch-ui_gl_gl__bindings__autogen__glx.h43
-rw-r--r--devel/electron6/files/patch-ui_gl_gl__fence.cc11
-rw-r--r--devel/electron6/files/patch-ui_gl_gl__surface__glx.cc14
-rw-r--r--devel/electron6/files/patch-ui_gl_sync__control__vsync__provider.cc43
-rw-r--r--devel/electron6/files/patch-ui_gl_sync__control__vsync__provider.h34
-rw-r--r--devel/electron6/files/patch-ui_message__center_public_cpp_message__center__constants.h11
-rw-r--r--devel/electron6/files/patch-ui_message__center_views_message__popup__view.cc11
-rw-r--r--devel/electron6/files/patch-ui_native__theme_native__theme.h11
-rw-r--r--devel/electron6/files/patch-ui_native__theme_native__theme__base.cc11
-rw-r--r--devel/electron6/files/patch-ui_strings_app__locale__settings.grd11
-rw-r--r--devel/electron6/files/patch-ui_views_bubble_bubble__dialog__delegate__view.cc11
-rw-r--r--devel/electron6/files/patch-ui_views_controls_label.cc20
-rw-r--r--devel/electron6/files/patch-ui_views_controls_textfield_textfield.cc73
-rw-r--r--devel/electron6/files/patch-ui_views_corewm_tooltip__aura.cc11
-rw-r--r--devel/electron6/files/patch-ui_views_examples_widget__example.cc11
-rw-r--r--devel/electron6/files/patch-ui_views_selection__controller.cc11
-rw-r--r--devel/electron6/files/patch-ui_views_style_platform__style.cc11
-rw-r--r--devel/electron6/files/patch-ui_views_views__delegate.cc11
-rw-r--r--devel/electron6/files/patch-ui_views_views__delegate.h11
-rw-r--r--devel/electron6/files/patch-ui_views_widget_desktop__aura_desktop__window__tree__host__platform.cc20
-rw-r--r--devel/electron6/files/patch-ui_views_widget_desktop__aura_desktop__window__tree__host__platform.h11
-rw-r--r--devel/electron6/files/patch-ui_views_widget_desktop__aura_desktop__window__tree__host__x11.cc32
-rw-r--r--devel/electron6/files/patch-ui_views_window_custom__frame__view.cc11
-rw-r--r--devel/electron6/files/patch-ui_views_window_dialog__delegate.cc11
-rw-r--r--devel/electron6/files/patch-ui_views_window_frame__background.cc11
-rw-r--r--devel/electron6/files/patch-ui_webui_resources_js_cr.js14
-rw-r--r--devel/electron6/files/patch-ui_webui_resources_js_icon.js11
-rw-r--r--devel/electron6/files/patch-v8_BUILD.gn32
-rw-r--r--devel/electron6/files/patch-v8_src_api_api.cc20
-rw-r--r--devel/electron6/files/patch-v8_src_base_cpu.cc18
-rw-r--r--devel/electron6/files/patch-v8_src_base_platform_platform-posix.cc24
-rw-r--r--devel/electron6/files/patch-v8_src_trap-handler_handler-inside-posix.cc20
-rw-r--r--devel/electron6/files/patch-v8_src_trap-handler_handler-inside-posix.h11
-rw-r--r--devel/electron6/files/patch-v8_src_trap-handler_trap-handler.h11
-rw-r--r--devel/electron6/files/yarn.lock8581
-rw-r--r--devel/electron6/pkg-descr10
-rw-r--r--devel/electron6/pkg-plist124
-rw-r--r--devel/electron7/Makefile305
-rw-r--r--devel/electron7/Makefile.version4
-rw-r--r--devel/electron7/distinfo17
-rw-r--r--devel/electron7/files/apply-electron-patches.sh20
-rw-r--r--devel/electron7/files/package.json129
-rw-r--r--devel/electron7/files/patch-BUILD.gn95
-rw-r--r--devel/electron7/files/patch-apps_ui_views_app__window__frame__view.cc11
-rw-r--r--devel/electron7/files/patch-ash_display_mirror__window__controller.cc14
-rw-r--r--devel/electron7/files/patch-base_BUILD.gn67
-rw-r--r--devel/electron7/files/patch-base_allocator_allocator__shim.cc11
-rw-r--r--devel/electron7/files/patch-base_allocator_allocator__shim__default__dispatch__to__glibc.cc76
-rw-r--r--devel/electron7/files/patch-base_allocator_allocator__shim__override__libc__symbols.h11
-rw-r--r--devel/electron7/files/patch-base_allocator_allocator__shim__unittest.cc36
-rw-r--r--devel/electron7/files/patch-base_allocator_partition__allocator_page__allocator__internals__posix.h11
-rw-r--r--devel/electron7/files/patch-base_base__switches.cc20
-rw-r--r--devel/electron7/files/patch-base_base__switches.h20
-rw-r--r--devel/electron7/files/patch-base_cpu.cc38
-rw-r--r--devel/electron7/files/patch-base_debug_debugger__posix.cc56
-rw-r--r--devel/electron7/files/patch-base_debug_elf__reader.cc18
-rw-r--r--devel/electron7/files/patch-base_debug_proc__maps__linux.cc11
-rw-r--r--devel/electron7/files/patch-base_debug_stack__trace.cc11
-rw-r--r--devel/electron7/files/patch-base_debug_stack__trace.h10
-rw-r--r--devel/electron7/files/patch-base_debug_stack__trace__posix.cc31
-rw-r--r--devel/electron7/files/patch-base_files_file__path__unittest.cc11
-rw-r--r--devel/electron7/files/patch-base_files_file__path__watcher.cc11
-rw-r--r--devel/electron7/files/patch-base_files_file__path__watcher__kqueue.h13
-rw-r--r--devel/electron7/files/patch-base_files_file__path__watcher__stub.cc51
-rw-r--r--devel/electron7/files/patch-base_files_file__path__watcher__unittest.cc11
-rw-r--r--devel/electron7/files/patch-base_files_file__util.h11
-rw-r--r--devel/electron7/files/patch-base_files_file__util__posix.cc11
-rw-r--r--devel/electron7/files/patch-base_files_scoped__file.cc11
-rw-r--r--devel/electron7/files/patch-base_i18n_icu__util.cc20
-rw-r--r--devel/electron7/files/patch-base_linux__util.cc18
-rw-r--r--devel/electron7/files/patch-base_logging__unittest.cc11
-rw-r--r--devel/electron7/files/patch-base_memory_platform__shared__memory__region.h29
-rw-r--r--devel/electron7/files/patch-base_memory_platform__shared__memory__region__posix.cc38
-rw-r--r--devel/electron7/files/patch-base_memory_protected__memory__posix.cc31
-rw-r--r--devel/electron7/files/patch-base_native__library__posix.cc11
-rw-r--r--devel/electron7/files/patch-base_native__library__unittest.cc11
-rw-r--r--devel/electron7/files/patch-base_numerics_safe__math__shared__impl.h12
-rw-r--r--devel/electron7/files/patch-base_posix_can__lower__nice__to.cc20
-rw-r--r--devel/electron7/files/patch-base_posix_unix__domain__socket.cc49
-rw-r--r--devel/electron7/files/patch-base_posix_unix__domain__socket__unittest.cc12
-rw-r--r--devel/electron7/files/patch-base_process_internal__linux.cc16
-rw-r--r--devel/electron7/files/patch-base_process_internal__linux.h11
-rw-r--r--devel/electron7/files/patch-base_process_kill.h16
-rw-r--r--devel/electron7/files/patch-base_process_kill__posix.cc20
-rw-r--r--devel/electron7/files/patch-base_process_launch.cc11
-rw-r--r--devel/electron7/files/patch-base_process_launch.h20
-rw-r--r--devel/electron7/files/patch-base_process_launch__posix.cc10
-rw-r--r--devel/electron7/files/patch-base_process_memory.cc20
-rw-r--r--devel/electron7/files/patch-base_process_memory.h11
-rw-r--r--devel/electron7/files/patch-base_process_memory__unittest.cc18
-rw-r--r--devel/electron7/files/patch-base_process_process__handle.cc11
-rw-r--r--devel/electron7/files/patch-base_process_process__handle.h11
-rw-r--r--devel/electron7/files/patch-base_process_process__handle__freebsd.cc17
-rw-r--r--devel/electron7/files/patch-base_process_process__iterator__freebsd.cc44
-rw-r--r--devel/electron7/files/patch-base_process_process__linux.cc18
-rw-r--r--devel/electron7/files/patch-base_process_process__metrics.cc38
-rw-r--r--devel/electron7/files/patch-base_process_process__metrics.h131
-rw-r--r--devel/electron7/files/patch-base_process_process__metrics__freebsd.cc259
-rw-r--r--devel/electron7/files/patch-base_process_process__metrics__posix.cc20
-rw-r--r--devel/electron7/files/patch-base_process_process__unittest.cc11
-rw-r--r--devel/electron7/files/patch-base_profiler_stack__sampling__profiler__unittest.cc11
-rw-r--r--devel/electron7/files/patch-base_sampling__heap__profiler_sampling__heap__profiler.cc24
-rw-r--r--devel/electron7/files/patch-base_security__unittest.cc11
-rw-r--r--devel/electron7/files/patch-base_strings_safe__sprintf__unittest.cc18
-rw-r--r--devel/electron7/files/patch-base_syslog__logging.cc20
-rw-r--r--devel/electron7/files/patch-base_system_sys__info.h11
-rw-r--r--devel/electron7/files/patch-base_system_sys__info__freebsd.cc59
-rw-r--r--devel/electron7/files/patch-base_system_sys__info__posix.cc11
-rw-r--r--devel/electron7/files/patch-base_task_thread__pool_environment__config__unittest.cc11
-rw-r--r--devel/electron7/files/patch-base_test_fontconfig__util__linux.cc408
-rw-r--r--devel/electron7/files/patch-base_test_generate__fontconfig__caches.cc25
-rw-r--r--devel/electron7/files/patch-base_test_launcher_test__launcher.cc10
-rw-r--r--devel/electron7/files/patch-base_test_test__file__util__linux.cc13
-rw-r--r--devel/electron7/files/patch-base_test_test__file__util__posix.cc11
-rw-r--r--devel/electron7/files/patch-base_third__party_libevent_BUILD.gn24
-rw-r--r--devel/electron7/files/patch-base_threading_platform__thread.h11
-rw-r--r--devel/electron7/files/patch-base_threading_platform__thread__linux.cc30
-rw-r--r--devel/electron7/files/patch-base_threading_platform__thread__posix.cc11
-rw-r--r--devel/electron7/files/patch-base_threading_thread__local__storage__unittest.cc11
-rw-r--r--devel/electron7/files/patch-base_threading_thread__task__runner__handle.cc26
-rw-r--r--devel/electron7/files/patch-base_trace__event_malloc__dump__provider.cc21
-rw-r--r--devel/electron7/files/patch-base_trace__event_process__memory__dump.cc11
-rw-r--r--devel/electron7/files/patch-base_trace__event_process__memory__dump.h11
-rw-r--r--devel/electron7/files/patch-build_config_BUILD.gn30
-rw-r--r--devel/electron7/files/patch-build_config_BUILDCONFIG.gn48
-rw-r--r--devel/electron7/files/patch-build_config_compiler_BUILD.gn92
-rw-r--r--devel/electron7/files/patch-build_config_compiler_compiler.gni11
-rw-r--r--devel/electron7/files/patch-build_config_features.gni11
-rw-r--r--devel/electron7/files/patch-build_config_freetype_freetype.gni9
-rw-r--r--devel/electron7/files/patch-build_config_linux_BUILD.gn11
-rw-r--r--devel/electron7/files/patch-build_config_linux_pkg-config.py26
-rw-r--r--devel/electron7/files/patch-build_config_sysroot.gni15
-rw-r--r--devel/electron7/files/patch-build_detect__host__arch.py11
-rw-r--r--devel/electron7/files/patch-build_gn__run__binary.py11
-rw-r--r--devel/electron7/files/patch-build_linux_chrome.map29
-rw-r--r--devel/electron7/files/patch-build_linux_libpci_BUILD.gn53
-rw-r--r--devel/electron7/files/patch-build_linux_unbundle_libusb.gn27
-rw-r--r--devel/electron7/files/patch-build_linux_unbundle_replace__gn__files.py10
-rw-r--r--devel/electron7/files/patch-build_toolchain_gcc__toolchain.gni45
-rw-r--r--devel/electron7/files/patch-build_toolchain_get__concurrent__links.py17
-rw-r--r--devel/electron7/files/patch-build_toolchain_linux_BUILD.gn10
-rw-r--r--devel/electron7/files/patch-cc_BUILD.gn21
-rw-r--r--devel/electron7/files/patch-cc_layers_scrollbar__layer__impl__base.cc13
-rw-r--r--devel/electron7/files/patch-cc_trees_property__tree.cc20
-rw-r--r--devel/electron7/files/patch-chrome_app_chrome__command__ids.h11
-rw-r--r--devel/electron7/files/patch-chrome_app_chrome__content__browser__overlay__manifest.cc20
-rw-r--r--devel/electron7/files/patch-chrome_app_chrome__main.cc16
-rw-r--r--devel/electron7/files/patch-chrome_app_chrome__main__delegate.cc144
-rw-r--r--devel/electron7/files/patch-chrome_app_chromium__strings.grd29
-rw-r--r--devel/electron7/files/patch-chrome_app_generated__resources.grd29
-rw-r--r--devel/electron7/files/patch-chrome_app_google__chrome__strings.grd29
-rw-r--r--devel/electron7/files/patch-chrome_app_settings__strings.grdp20
-rw-r--r--devel/electron7/files/patch-chrome_app_shutdown__signal__handlers__posix.cc21
-rw-r--r--devel/electron7/files/patch-chrome_app_theme_chrome__unscaled__resources.grd20
-rw-r--r--devel/electron7/files/patch-chrome_app_theme_theme__resources.grd11
-rw-r--r--devel/electron7/files/patch-chrome_browser_about__flags.cc285
-rw-r--r--devel/electron7/files/patch-chrome_browser_after__startup__task__utils.cc38
-rw-r--r--devel/electron7/files/patch-chrome_browser_apps_platform__apps_api_music__manager__private_device__id__linux.cc70
-rw-r--r--devel/electron7/files/patch-chrome_browser_autocomplete_chrome__autocomplete__scheme__classifier.cc17
-rw-r--r--devel/electron7/files/patch-chrome_browser_background_background__mode__manager.cc11
-rw-r--r--devel/electron7/files/patch-chrome_browser_background_background__mode__optimizer.cc15
-rw-r--r--devel/electron7/files/patch-chrome_browser_browser__features.cc14
-rw-r--r--devel/electron7/files/patch-chrome_browser_browser__features.h14
-rw-r--r--devel/electron7/files/patch-chrome_browser_browser__resources.grd20
-rw-r--r--devel/electron7/files/patch-chrome_browser_chrome__browser__main.cc75
-rw-r--r--devel/electron7/files/patch-chrome_browser_chrome__browser__main__linux.cc27
-rw-r--r--devel/electron7/files/patch-chrome_browser_chrome__browser__main__posix.cc20
-rw-r--r--devel/electron7/files/patch-chrome_browser_chrome__content__browser__client.cc83
-rw-r--r--devel/electron7/files/patch-chrome_browser_chrome__content__browser__client.h17
-rw-r--r--devel/electron7/files/patch-chrome_browser_custom__handlers_protocol__handler__registry.cc11
-rw-r--r--devel/electron7/files/patch-chrome_browser_defaults.cc11
-rw-r--r--devel/electron7/files/patch-chrome_browser_devtools_devtools__eye__dropper.cc11
-rw-r--r--devel/electron7/files/patch-chrome_browser_diagnostics_diagnostics__writer.h11
-rw-r--r--devel/electron7/files/patch-chrome_browser_download_chrome__download__manager__delegate.cc20
-rw-r--r--devel/electron7/files/patch-chrome_browser_download_download__commands.cc35
-rw-r--r--devel/electron7/files/patch-chrome_browser_download_download__commands.h11
-rw-r--r--devel/electron7/files/patch-chrome_browser_download_download__item__model.cc20
-rw-r--r--devel/electron7/files/patch-chrome_browser_download_download__prefs.cc65
-rw-r--r--devel/electron7/files/patch-chrome_browser_download_download__prefs.h20
-rw-r--r--devel/electron7/files/patch-chrome_browser_download_download__query.cc14
-rw-r--r--devel/electron7/files/patch-chrome_browser_download_download__shelf__context__menu.cc11
-rw-r--r--devel/electron7/files/patch-chrome_browser_download_download__status__updater.cc20
-rw-r--r--devel/electron7/files/patch-chrome_browser_extensions_BUILD.gn15
-rw-r--r--devel/electron7/files/patch-chrome_browser_extensions_activity__log_activity__log.cc14
-rw-r--r--devel/electron7/files/patch-chrome_browser_extensions_api_image__writer__private_removable__storage__provider.cc20
-rw-r--r--devel/electron7/files/patch-chrome_browser_extensions_api_input__ime_input__ime__api.h11
-rw-r--r--devel/electron7/files/patch-chrome_browser_extensions_api_runtime_chrome__runtime__api__delegate.cc11
-rw-r--r--devel/electron7/files/patch-chrome_browser_extensions_api_settings__private_prefs__util.cc20
-rw-r--r--devel/electron7/files/patch-chrome_browser_extensions_api_webrtc__logging__private_webrtc__logging__private__api.cc43
-rw-r--r--devel/electron7/files/patch-chrome_browser_extensions_browser__context__keyed__service__factories.cc20
-rw-r--r--devel/electron7/files/patch-chrome_browser_extensions_external__provider__impl.cc20
-rw-r--r--devel/electron7/files/patch-chrome_browser_extensions_install__signer.cc18
-rw-r--r--devel/electron7/files/patch-chrome_browser_first__run_first__run__dialog.h11
-rw-r--r--devel/electron7/files/patch-chrome_browser_first__run_first__run__internal.h18
-rw-r--r--devel/electron7/files/patch-chrome_browser_first__run_first__run__internal__posix.cc20
-rw-r--r--devel/electron7/files/patch-chrome_browser_flag__descriptions.cc79
-rw-r--r--devel/electron7/files/patch-chrome_browser_flag__descriptions.h87
-rw-r--r--devel/electron7/files/patch-chrome_browser_media__galleries_fileapi_mtp__device__map__service.cc15
-rw-r--r--devel/electron7/files/patch-chrome_browser_media__galleries_media__file__system__registry.cc14
-rw-r--r--devel/electron7/files/patch-chrome_browser_media_router_discovery_discovery__network__list__posix.cc28
-rw-r--r--devel/electron7/files/patch-chrome_browser_media_router_discovery_discovery__network__list__wifi__linux.cc27
-rw-r--r--devel/electron7/files/patch-chrome_browser_media_router_providers_wired__display_wired__display__media__route__provider.cc23
-rw-r--r--devel/electron7/files/patch-chrome_browser_media_webrtc_webrtc__event__log__uploader.cc11
-rw-r--r--devel/electron7/files/patch-chrome_browser_media_webrtc_webrtc__log__uploader.cc11
-rw-r--r--devel/electron7/files/patch-chrome_browser_media_webrtc_webrtc__logging__controller.cc33
-rw-r--r--devel/electron7/files/patch-chrome_browser_media_webrtc_webrtc__logging__controller.h36
-rw-r--r--devel/electron7/files/patch-chrome_browser_memory__details.cc20
-rw-r--r--devel/electron7/files/patch-chrome_browser_memory__details__linux.cc13
-rw-r--r--devel/electron7/files/patch-chrome_browser_metrics_bluetooth__available__utility.cc13
-rw-r--r--devel/electron7/files/patch-chrome_browser_metrics_chrome__browser__main__extra__parts__metrics.cc21
-rw-r--r--devel/electron7/files/patch-chrome_browser_metrics_chrome__metrics__service__client.cc25
-rw-r--r--devel/electron7/files/patch-chrome_browser_metrics_process__memory__metrics__emitter.cc20
-rw-r--r--devel/electron7/files/patch-chrome_browser_native__file__system_chrome__native__file__system__permission__context.cc11
-rw-r--r--devel/electron7/files/patch-chrome_browser_net_system__network__context__manager.cc64
-rw-r--r--devel/electron7/files/patch-chrome_browser_notifications_notification__display__service__impl.cc20
-rw-r--r--devel/electron7/files/patch-chrome_browser_password__manager_chrome__password__manager__client.cc14
-rw-r--r--devel/electron7/files/patch-chrome_browser_password__manager_password__store__factory.cc11
-rw-r--r--devel/electron7/files/patch-chrome_browser_performance__monitor_process__metrics__history.cc38
-rw-r--r--devel/electron7/files/patch-chrome_browser_performance__monitor_process__metrics__history.h11
-rw-r--r--devel/electron7/files/patch-chrome_browser_platform__util.h11
-rw-r--r--devel/electron7/files/patch-chrome_browser_plugins_plugin__info__host__impl.cc11
-rw-r--r--devel/electron7/files/patch-chrome_browser_plugins_plugins__resource__service.cc11
-rw-r--r--devel/electron7/files/patch-chrome_browser_policy_browser__signin__policy__handler.cc11
-rw-r--r--devel/electron7/files/patch-chrome_browser_policy_configuration__policy__handler__list__factory.cc43
-rw-r--r--devel/electron7/files/patch-chrome_browser_policy_policy__prefs__browsertest.cc11
-rw-r--r--devel/electron7/files/patch-chrome_browser_prefs_browser__prefs.cc20
-rw-r--r--devel/electron7/files/patch-chrome_browser_prefs_pref__service__incognito__whitelist.cc11
-rw-r--r--devel/electron7/files/patch-chrome_browser_process__singleton__posix.cc34
-rw-r--r--devel/electron7/files/patch-chrome_browser_profiles_chrome__browser__main__extra__parts__profiles.cc29
-rw-r--r--devel/electron7/files/patch-chrome_browser_profiles_profile__attributes__entry.cc11
-rw-r--r--devel/electron7/files/patch-chrome_browser_renderer__context__menu_render__view__context__menu.cc29
-rw-r--r--devel/electron7/files/patch-chrome_browser_renderer__preferences__util.cc29
-rw-r--r--devel/electron7/files/patch-chrome_browser_resources_safe__browsing_gen__file__type__proto.py19
-rw-r--r--devel/electron7/files/patch-chrome_browser_resources_settings_appearance__page_appearance__browser__proxy.js20
-rw-r--r--devel/electron7/files/patch-chrome_browser_resources_settings_appearance__page_appearance__page.html29
-rw-r--r--devel/electron7/files/patch-chrome_browser_resources_settings_appearance__page_appearance__page.js33
-rw-r--r--devel/electron7/files/patch-chrome_browser_safe__browsing_incident__reporting_incident__handler__util.cc15
-rw-r--r--devel/electron7/files/patch-chrome_browser_safe__browsing_incident__reporting_incident__reporting__service.cc11
-rw-r--r--devel/electron7/files/patch-chrome_browser_search_search__suggest_search__suggest__service.cc14
-rw-r--r--devel/electron7/files/patch-chrome_browser_send__tab__to__self_receiving__ui__handler__registry.cc20
-rw-r--r--devel/electron7/files/patch-chrome_browser_send__tab__to__self_send__tab__to__self__client__service.cc11
-rw-r--r--devel/electron7/files/patch-chrome_browser_sharing_click__to__call_feature.cc17
-rw-r--r--devel/electron7/files/patch-chrome_browser_sharing_click__to__call_feature.h20
-rw-r--r--devel/electron7/files/patch-chrome_browser_signin_signin__util.cc20
-rw-r--r--devel/electron7/files/patch-chrome_browser_ssl_captive__portal__blocking__page.cc11
-rw-r--r--devel/electron7/files/patch-chrome_browser_ssl_ssl__error__controller__client.cc20
-rw-r--r--devel/electron7/files/patch-chrome_browser_sync_chrome__sync__client.cc20
-rw-r--r--devel/electron7/files/patch-chrome_browser_task__manager_sampling_task__group.cc56
-rw-r--r--devel/electron7/files/patch-chrome_browser_task__manager_sampling_task__group.h48
-rw-r--r--devel/electron7/files/patch-chrome_browser_task__manager_sampling_task__group__sampler.cc72
-rw-r--r--devel/electron7/files/patch-chrome_browser_task__manager_sampling_task__group__sampler.h50
-rw-r--r--devel/electron7/files/patch-chrome_browser_task__manager_sampling_task__manager__impl.cc16
-rw-r--r--devel/electron7/files/patch-chrome_browser_task__manager_task__manager__observer.h16
-rw-r--r--devel/electron7/files/patch-chrome_browser_themes_theme__service__factory.cc29
-rw-r--r--devel/electron7/files/patch-chrome_browser_tracing_crash__service__uploader.cc11
-rw-r--r--devel/electron7/files/patch-chrome_browser_ui_browser__command__controller.cc38
-rw-r--r--devel/electron7/files/patch-chrome_browser_ui_browser__view__prefs.cc20
-rw-r--r--devel/electron7/files/patch-chrome_browser_ui_exclusive__access_exclusive__access__bubble.cc11
-rw-r--r--devel/electron7/files/patch-chrome_browser_ui_input__method_input__method__engine__base.cc11
-rw-r--r--devel/electron7/files/patch-chrome_browser_ui_libgtkui_print__dialog__gtk.cc10
-rw-r--r--devel/electron7/files/patch-chrome_browser_ui_sad__tab.cc11
-rw-r--r--devel/electron7/files/patch-chrome_browser_ui_startup_bad__flags__prompt.cc11
-rw-r--r--devel/electron7/files/patch-chrome_browser_ui_startup_startup__browser__creator.cc31
-rw-r--r--devel/electron7/files/patch-chrome_browser_ui_tab__helpers.cc25
-rw-r--r--devel/electron7/files/patch-chrome_browser_ui_task__manager_task__manager__columns.cc15
-rw-r--r--devel/electron7/files/patch-chrome_browser_ui_task__manager_task__manager__table__model.cc50
-rw-r--r--devel/electron7/files/patch-chrome_browser_ui_toolbar_app__menu__model.cc11
-rw-r--r--devel/electron7/files/patch-chrome_browser_ui_ui__features.cc11
-rw-r--r--devel/electron7/files/patch-chrome_browser_ui_ui__features.h11
-rw-r--r--devel/electron7/files/patch-chrome_browser_ui_views_accelerator__table.cc46
-rw-r--r--devel/electron7/files/patch-chrome_browser_ui_views_chrome__browser__main__extra__parts__views.cc38
-rw-r--r--devel/electron7/files/patch-chrome_browser_ui_views_chrome__views__delegate.h11
-rw-r--r--devel/electron7/files/patch-chrome_browser_ui_views_first__run__dialog.cc24
-rw-r--r--devel/electron7/files/patch-chrome_browser_ui_views_frame_browser__frame.cc11
-rw-r--r--devel/electron7/files/patch-chrome_browser_ui_views_frame_browser__non__client__frame__view__factory__views.cc20
-rw-r--r--devel/electron7/files/patch-chrome_browser_ui_views_frame_browser__view.cc11
-rw-r--r--devel/electron7/files/patch-chrome_browser_ui_views_frame_opaque__browser__frame__view.cc29
-rw-r--r--devel/electron7/files/patch-chrome_browser_ui_views_frame_opaque__browser__frame__view__platform__specific.cc11
-rw-r--r--devel/electron7/files/patch-chrome_browser_ui_views_frame_system__menu__model__builder.cc29
-rw-r--r--devel/electron7/files/patch-chrome_browser_ui_views_frame_system__menu__model__delegate.cc29
-rw-r--r--devel/electron7/files/patch-chrome_browser_ui_views_hung__renderer__view.cc11
-rw-r--r--devel/electron7/files/patch-chrome_browser_ui_views_tabs_new__tab__button.cc11
-rw-r--r--devel/electron7/files/patch-chrome_browser_ui_views_tabs_tab.cc20
-rw-r--r--devel/electron7/files/patch-chrome_browser_ui_views_tabs_tab__drag__controller.cc29
-rw-r--r--devel/electron7/files/patch-chrome_browser_ui_webui_about__ui.cc20
-rw-r--r--devel/electron7/files/patch-chrome_browser_ui_webui_chrome__web__ui__controller__factory.cc55
-rw-r--r--devel/electron7/files/patch-chrome_browser_ui_webui_settings_appearance__handler.cc20
-rw-r--r--devel/electron7/files/patch-chrome_browser_ui_webui_settings_appearance__handler.h11
-rw-r--r--devel/electron7/files/patch-chrome_browser_ui_webui_settings_settings__localized__strings__provider.cc20
-rw-r--r--devel/electron7/files/patch-chrome_browser_web__applications_extensions_bookmark__app__finalizer__utils.cc11
-rw-r--r--devel/electron7/files/patch-chrome_browser_web__applications_extensions_web__app__extension__shortcut.cc11
-rw-r--r--devel/electron7/files/patch-chrome_common_BUILD.gn13
-rw-r--r--devel/electron7/files/patch-chrome_common_chrome__features.cc27
-rw-r--r--devel/electron7/files/patch-chrome_common_chrome__features.h24
-rw-r--r--devel/electron7/files/patch-chrome_common_chrome__paths.cc101
-rw-r--r--devel/electron7/files/patch-chrome_common_chrome__paths.h42
-rw-r--r--devel/electron7/files/patch-chrome_common_chrome__paths__internal.h11
-rw-r--r--devel/electron7/files/patch-chrome_common_chrome__switches.cc11
-rw-r--r--devel/electron7/files/patch-chrome_common_chrome__switches.h11
-rw-r--r--devel/electron7/files/patch-chrome_common_extensions_api_api__sources.gni11
-rw-r--r--devel/electron7/files/patch-chrome_common_extensions_command.cc11
-rw-r--r--devel/electron7/files/patch-chrome_common_features.gni14
-rw-r--r--devel/electron7/files/patch-chrome_common_pref__names.cc44
-rw-r--r--devel/electron7/files/patch-chrome_common_pref__names.h41
-rw-r--r--devel/electron7/files/patch-chrome_common_webui__url__constants.cc48
-rw-r--r--devel/electron7/files/patch-chrome_common_webui__url__constants.h32
-rw-r--r--devel/electron7/files/patch-chrome_renderer_chrome__content__renderer__client.cc45
-rw-r--r--devel/electron7/files/patch-chrome_renderer_pepper_pepper__flash__font__file__host.cc29
-rw-r--r--devel/electron7/files/patch-chrome_renderer_pepper_pepper__flash__font__file__host.h20
-rw-r--r--devel/electron7/files/patch-chrome_service_cloud__print_print__system.cc11
-rw-r--r--devel/electron7/files/patch-chrome_test_BUILD.gn11
-rw-r--r--devel/electron7/files/patch-chrome_test_base_in__process__browser__test.cc22
-rw-r--r--devel/electron7/files/patch-chrome_test_base_testing__browser__process.h13
-rw-r--r--devel/electron7/files/patch-chrome_test_chromedriver_chrome__launcher.cc13
-rw-r--r--devel/electron7/files/patch-chrome_test_chromedriver_chrome_chrome__finder.cc20
-rw-r--r--devel/electron7/files/patch-chromecast_browser_cast__browser__main__parts.cc38
-rw-r--r--devel/electron7/files/patch-chromecast_browser_cast__content__browser__client.cc11
-rw-r--r--devel/electron7/files/patch-chromecast_browser_metrics_BUILD.gn11
-rw-r--r--devel/electron7/files/patch-chromecast_browser_tts_tts__controller__impl.cc14
-rw-r--r--devel/electron7/files/patch-chromecast_media_base_monotonic__clock.cc23
-rw-r--r--devel/electron7/files/patch-components_autofill_content_renderer_password__form__conversion__utils.cc14
-rw-r--r--devel/electron7/files/patch-components_autofill_core_browser_autofill__experiments.cc11
-rw-r--r--devel/electron7/files/patch-components_autofill_core_browser_personal__data__manager.cc15
-rw-r--r--devel/electron7/files/patch-components_autofill_core_common_autofill__payments__features.cc11
-rw-r--r--devel/electron7/files/patch-components_autofill_core_common_autofill__util.cc11
-rw-r--r--devel/electron7/files/patch-components_content__settings_core_browser_website__settings__registry.cc11
-rw-r--r--devel/electron7/files/patch-components_cookie__config_cookie__store__util.cc24
-rw-r--r--devel/electron7/files/patch-components_crash_content_app_BUILD.gn20
-rw-r--r--devel/electron7/files/patch-components_crash_content_app_crashpad.cc43
-rw-r--r--devel/electron7/files/patch-components_crash_content_browser_BUILD.gn27
-rw-r--r--devel/electron7/files/patch-components_crash_core_common_BUILD.gn28
-rw-r--r--devel/electron7/files/patch-components_discardable__memory_service_discardable__shared__memory__manager.cc20
-rw-r--r--devel/electron7/files/patch-components_download_internal_common_base__file.cc20
-rw-r--r--devel/electron7/files/patch-components_feature__engagement_public_event__constants.cc27
-rw-r--r--devel/electron7/files/patch-components_feature__engagement_public_event__constants.h30
-rw-r--r--devel/electron7/files/patch-components_feature__engagement_public_feature__constants.cc20
-rw-r--r--devel/electron7/files/patch-components_feature__engagement_public_feature__constants.h20
-rw-r--r--devel/electron7/files/patch-components_feature__engagement_public_feature__list.cc20
-rw-r--r--devel/electron7/files/patch-components_feature__engagement_public_feature__list.h38
-rw-r--r--devel/electron7/files/patch-components_feedback_anonymizer__tool.cc14
-rw-r--r--devel/electron7/files/patch-components_flags__ui_flags__state.cc11
-rw-r--r--devel/electron7/files/patch-components_gcm__driver_gcm__client.h10
-rw-r--r--devel/electron7/files/patch-components_gcm__driver_gcm__client__impl.cc12
-rw-r--r--devel/electron7/files/patch-components_keyed__service_core_dependency__graph__unittest.cc14
-rw-r--r--devel/electron7/files/patch-components_metrics_BUILD.gn14
-rw-r--r--devel/electron7/files/patch-components_metrics_drive__metrics__provider__linux.cc16
-rw-r--r--devel/electron7/files/patch-components_metrics_metrics__log.cc11
-rw-r--r--devel/electron7/files/patch-components_metrics_system__memory__stats__recorder__linux.cc18
-rw-r--r--devel/electron7/files/patch-components_neterror_resources_neterror.js11
-rw-r--r--devel/electron7/files/patch-components_network__session__configurator_browser_network__session__configurator.cc11
-rw-r--r--devel/electron7/files/patch-components_new__or__sad__tab__strings.grdp38
-rw-r--r--devel/electron7/files/patch-components_os__crypt_os__crypt.h48
-rw-r--r--devel/electron7/files/patch-components_os__crypt_os__crypt__unittest.cc11
-rw-r--r--devel/electron7/files/patch-components_plugins_renderer_plugin__placeholder.cc14
-rw-r--r--devel/electron7/files/patch-components_policy_core_common_cloud_cloud__policy__util.cc73
-rw-r--r--devel/electron7/files/patch-components_policy_core_common_schema.cc14
-rw-r--r--devel/electron7/files/patch-components_policy_resources_policy__templates.json83
-rw-r--r--devel/electron7/files/patch-components_policy_tools_generate__policy__source.py19
-rw-r--r--devel/electron7/files/patch-components_previews_core_previews__features.cc18
-rw-r--r--devel/electron7/files/patch-components_storage__monitor_BUILD.gn16
-rw-r--r--devel/electron7/files/patch-components_storage__monitor_removable__device__constants.cc11
-rw-r--r--devel/electron7/files/patch-components_storage__monitor_removable__device__constants.h11
-rw-r--r--devel/electron7/files/patch-components_storage__monitor_storage__monitor__freebsd.cc57
-rw-r--r--devel/electron7/files/patch-components_storage__monitor_storage__monitor__freebsd.h48
-rw-r--r--devel/electron7/files/patch-components_sync__device__info_local__device__info__util__linux.cc26
-rw-r--r--devel/electron7/files/patch-components_update__client_update__query__params.cc11
-rw-r--r--devel/electron7/files/patch-components_url__matcher_regex__set__matcher.cc16
-rw-r--r--devel/electron7/files/patch-components_url__matcher_url__matcher__factory.cc14
-rw-r--r--devel/electron7/files/patch-components_webcrypto_algorithms_test__helpers.cc14
-rw-r--r--devel/electron7/files/patch-content_app_content__main__runner__impl.cc73
-rw-r--r--devel/electron7/files/patch-content_browser_browser__main__loop.cc46
-rw-r--r--devel/electron7/files/patch-content_browser_child__process__launcher__helper__linux.cc92
-rw-r--r--devel/electron7/files/patch-content_browser_devtools_protocol_system__info__handler.cc11
-rw-r--r--devel/electron7/files/patch-content_browser_gpu_gpu__process__host.cc11
-rw-r--r--devel/electron7/files/patch-content_browser_media_media__internals.cc11
-rw-r--r--devel/electron7/files/patch-content_browser_memory_swap__metrics__driver__impl__linux.cc27
-rw-r--r--devel/electron7/files/patch-content_browser_ppapi__plugin__process__host.cc11
-rw-r--r--devel/electron7/files/patch-content_browser_renderer__host_input_input__device__change__observer.cc29
-rw-r--r--devel/electron7/files/patch-content_browser_renderer__host_pepper_pepper__file__io__host.cc20
-rw-r--r--devel/electron7/files/patch-content_browser_renderer__host_render__message__filter.cc29
-rw-r--r--devel/electron7/files/patch-content_browser_renderer__host_render__message__filter.h19
-rw-r--r--devel/electron7/files/patch-content_browser_renderer__host_render__process__host__impl.cc47
-rw-r--r--devel/electron7/files/patch-content_browser_renderer__host_render__process__host__impl.h15
-rw-r--r--devel/electron7/files/patch-content_browser_renderer__host_render__view__host__impl.cc11
-rw-r--r--devel/electron7/files/patch-content_browser_renderer__host_render__widget__host__view__aura.cc29
-rw-r--r--devel/electron7/files/patch-content_browser_renderer__host_render__widget__host__view__event__handler.cc11
-rw-r--r--devel/electron7/files/patch-content_browser_scheduler_responsiveness_jank__monitor.cc11
-rw-r--r--devel/electron7/files/patch-content_browser_scheduler_responsiveness_native__event__observer.cc29
-rw-r--r--devel/electron7/files/patch-content_browser_scheduler_responsiveness_native__event__observer.h47
-rw-r--r--devel/electron7/files/patch-content_browser_scheduler_responsiveness_watcher.cc20
-rw-r--r--devel/electron7/files/patch-content_browser_utility__process__host.cc29
-rw-r--r--devel/electron7/files/patch-content_browser_webui_shared__resources__data__source.cc17
-rw-r--r--devel/electron7/files/patch-content_common_BUILD.gn15
-rw-r--r--devel/electron7/files/patch-content_common_common__sandbox__support__linux.cc10
-rw-r--r--devel/electron7/files/patch-content_common_user__agent.cc17
-rw-r--r--devel/electron7/files/patch-content_gpu_BUILD.gn11
-rw-r--r--devel/electron7/files/patch-content_gpu_gpu__main.cc56
-rw-r--r--devel/electron7/files/patch-content_gpu_gpu__sandbox__hook__linux.cc58
-rw-r--r--devel/electron7/files/patch-content_ppapi__plugin_ppapi__blink__platform__impl.cc38
-rw-r--r--devel/electron7/files/patch-content_ppapi__plugin_ppapi__blink__platform__impl.h25
-rw-r--r--devel/electron7/files/patch-content_public_app_content__main__delegate.cc18
-rw-r--r--devel/electron7/files/patch-content_public_app_content__main__delegate.h20
-rw-r--r--devel/electron7/files/patch-content_public_app_v8__snapshot__overlay__manifest.cc11
-rw-r--r--devel/electron7/files/patch-content_public_common_child__process__host.h11
-rw-r--r--devel/electron7/files/patch-content_public_common_common__param__traits__macros.h11
-rw-r--r--devel/electron7/files/patch-content_public_common_content__features.cc29
-rw-r--r--devel/electron7/files/patch-content_public_common_content__switches.cc11
-rw-r--r--devel/electron7/files/patch-content_public_common_content__switches.h11
-rw-r--r--devel/electron7/files/patch-content_public_common_use__zoom__for__dsf__policy.cc11
-rw-r--r--devel/electron7/files/patch-content_public_test_browser__test__base.cc13
-rw-r--r--devel/electron7/files/patch-content_public_test_mock__render__thread.cc11
-rw-r--r--devel/electron7/files/patch-content_renderer_media_audio_audio__device__factory.cc11
-rw-r--r--devel/electron7/files/patch-content_renderer_media_webrtc_webrtc__audio__renderer__unittest.cc11
-rw-r--r--devel/electron7/files/patch-content_renderer_render__process__impl.cc20
-rw-r--r--devel/electron7/files/patch-content_renderer_render__thread__impl.cc51
-rw-r--r--devel/electron7/files/patch-content_renderer_renderer__blink__platform__impl.cc56
-rw-r--r--devel/electron7/files/patch-content_renderer_renderer__blink__platform__impl.h29
-rw-r--r--devel/electron7/files/patch-content_renderer_renderer__main__platform__delegate__linux.cc19
-rw-r--r--devel/electron7/files/patch-content_shell_BUILD.gn11
-rw-r--r--devel/electron7/files/patch-content_shell_app_shell__main__delegate.cc20
-rw-r--r--devel/electron7/files/patch-content_shell_browser_shell__browser__context.cc20
-rw-r--r--devel/electron7/files/patch-content_shell_browser_shell__browser__main__parts.cc20
-rw-r--r--devel/electron7/files/patch-content_shell_browser_web__test_web__test__browser__context.cc11
-rw-r--r--devel/electron7/files/patch-content_shell_browser_web__test_web__test__browser__main__parts.cc11
-rw-r--r--devel/electron7/files/patch-content_shell_test__runner_test__runner.cc29
-rw-r--r--devel/electron7/files/patch-content_test_content__test__suite.cc18
-rw-r--r--devel/electron7/files/patch-content_utility_utility__blink__platform__with__sandbox__support__impl.cc29
-rw-r--r--devel/electron7/files/patch-content_utility_utility__blink__platform__with__sandbox__support__impl.h24
-rw-r--r--devel/electron7/files/patch-device_bluetooth_BUILD.gn11
-rw-r--r--devel/electron7/files/patch-device_gamepad_gamepad__provider.cc11
-rw-r--r--devel/electron7/files/patch-device_gamepad_hid__writer__linux.cc11
-rw-r--r--devel/electron7/files/patch-electron_BUILD.gn40
-rw-r--r--devel/electron7/files/patch-electron_chromium__src_chrome_browser_process__singleton__posix.cc20
-rw-r--r--devel/electron7/files/patch-electron_default__app_default__app.ts11
-rw-r--r--devel/electron7/files/patch-electron_lib_browser_api_app.ts11
-rw-r--r--devel/electron7/files/patch-electron_lib_browser_api_dialog.js11
-rw-r--r--devel/electron7/files/patch-electron_lib_browser_api_menu-item-roles.js11
-rw-r--r--devel/electron7/files/patch-electron_lib_browser_init.ts11
-rw-r--r--devel/electron7/files/patch-electron_lib_browser_rpc-server.js11
-rw-r--r--devel/electron7/files/patch-electron_lib_common_api_clipboard.js11
-rw-r--r--devel/electron7/files/patch-electron_script_lib_config.py12
-rw-r--r--devel/electron7/files/patch-electron_script_lib_utils.js11
-rw-r--r--devel/electron7/files/patch-electron_script_spec-runner.js11
-rw-r--r--devel/electron7/files/patch-electron_shell_app_atom__main.cc35
-rw-r--r--devel/electron7/files/patch-electron_shell_app_atom__main__delegate.cc29
-rw-r--r--devel/electron7/files/patch-electron_shell_app_node__main.cc20
-rw-r--r--devel/electron7/files/patch-electron_shell_browser_api_atom__api__app.cc47
-rw-r--r--devel/electron7/files/patch-electron_shell_browser_api_atom__api__web__contents.cc34
-rw-r--r--devel/electron7/files/patch-electron_shell_browser_api_process__metric.h20
-rw-r--r--devel/electron7/files/patch-electron_shell_browser_atom__browser__main__parts.cc11
-rw-r--r--devel/electron7/files/patch-electron_shell_browser_atom__browser__main__parts__posix.cc20
-rw-r--r--devel/electron7/files/patch-electron_shell_browser_atom__paths.h18
-rw-r--r--devel/electron7/files/patch-electron_shell_browser_browser.h33
-rw-r--r--devel/electron7/files/patch-electron_shell_browser_native__window__views.cc47
-rw-r--r--devel/electron7/files/patch-electron_shell_browser_native__window__views.h11
-rw-r--r--devel/electron7/files/patch-electron_shell_browser_relauncher__linux.cc32
-rw-r--r--devel/electron7/files/patch-electron_shell_browser_ui_views_atom__views__delegate.cc38
-rw-r--r--devel/electron7/files/patch-electron_shell_browser_ui_views_atom__views__delegate.h11
-rw-r--r--devel/electron7/files/patch-electron_shell_browser_ui_views_submenu__button.cc11
-rw-r--r--devel/electron7/files/patch-electron_shell_common_api_atom__api__crash__reporter.cc18
-rw-r--r--devel/electron7/files/patch-electron_shell_common_api_electron__bindings.cc11
-rw-r--r--devel/electron7/files/patch-electron_shell_common_atom__command__line.cc11
-rw-r--r--devel/electron7/files/patch-electron_shell_common_atom__command__line.h11
-rw-r--r--devel/electron7/files/patch-electron_shell_common_crash__reporter_crash__reporter.cc14
-rw-r--r--devel/electron7/files/patch-electron_shell_common_node__bindings.cc11
-rw-r--r--devel/electron7/files/patch-electron_shell_common_node__bindings__linux.cc69
-rw-r--r--devel/electron7/files/patch-electron_shell_common_platform__util.h11
-rw-r--r--devel/electron7/files/patch-electron_spec-main_api-app-spec.ts100
-rw-r--r--devel/electron7/files/patch-electron_spec-main_api-browser-window-spec.ts74
-rw-r--r--devel/electron7/files/patch-electron_spec-main_api-content-tracing-spec.ts11
-rw-r--r--devel/electron7/files/patch-electron_spec-main_api-net-log-spec.js29
-rw-r--r--devel/electron7/files/patch-electron_spec-main_api-screen-spec.ts38
-rw-r--r--devel/electron7/files/patch-electron_spec-main_api-tray-spec.ts11
-rw-r--r--devel/electron7/files/patch-electron_spec-main_api-web-contents-spec.ts11
-rw-r--r--devel/electron7/files/patch-electron_spec-main_version-bump-spec.ts18
-rw-r--r--devel/electron7/files/patch-electron_spec-main_visibility-state-spec.ts11
-rw-r--r--devel/electron7/files/patch-electron_spec_api-clipboard-spec.js38
-rw-r--r--devel/electron7/files/patch-electron_spec_api-crash-reporter-spec.js101
-rw-r--r--devel/electron7/files/patch-electron_spec_api-notification-dbus-spec.js10
-rw-r--r--devel/electron7/files/patch-electron_spec_api-power-monitor-spec.js11
-rw-r--r--devel/electron7/files/patch-electron_spec_api-process-spec.js11
-rw-r--r--devel/electron7/files/patch-electron_spec_api-shell-spec.js23
-rw-r--r--devel/electron7/files/patch-electron_spec_api-subframe-spec.js11
-rw-r--r--devel/electron7/files/patch-electron_spec_chromium-spec.js27
-rw-r--r--devel/electron7/files/patch-electron_spec_fixtures_api_crash-restart.html11
-rw-r--r--devel/electron7/files/patch-electron_spec_fixtures_module_crash.js11
-rw-r--r--devel/electron7/files/patch-electron_spec_node-spec.js11
-rw-r--r--devel/electron7/files/patch-extensions_browser_api_declarative__webrequest_webrequest__action.cc14
-rw-r--r--devel/electron7/files/patch-extensions_browser_api_messaging_message__service.cc34
-rw-r--r--devel/electron7/files/patch-extensions_browser_api_networking__private_networking__private__delegate__factory.cc20
-rw-r--r--devel/electron7/files/patch-extensions_browser_api_web__request_form__data__parser.cc14
-rw-r--r--devel/electron7/files/patch-extensions_browser_browser__context__keyed__service__factories.cc11
-rw-r--r--devel/electron7/files/patch-extensions_common_api___permission__features.json29
-rw-r--r--devel/electron7/files/patch-extensions_common_api_runtime.json11
-rw-r--r--devel/electron7/files/patch-extensions_common_feature__switch.cc16
-rw-r--r--devel/electron7/files/patch-extensions_common_features_feature.cc11
-rw-r--r--devel/electron7/files/patch-extensions_common_image__util.cc14
-rw-r--r--devel/electron7/files/patch-extensions_common_stack__frame.cc14
-rw-r--r--devel/electron7/files/patch-extensions_renderer_bindings_api__binding__util.cc11
-rw-r--r--devel/electron7/files/patch-extensions_shell_app_shell__main__delegate.cc20
-rw-r--r--devel/electron7/files/patch-extensions_shell_browser_api_runtime_shell__runtime__api__delegate.cc11
-rw-r--r--devel/electron7/files/patch-extensions_shell_browser_shell__extensions__api__client.cc20
-rw-r--r--devel/electron7/files/patch-extensions_shell_browser_shell__extensions__api__client.h19
-rw-r--r--devel/electron7/files/patch-google__apis_gcm_engine_heartbeat__manager.cc53
-rw-r--r--devel/electron7/files/patch-gpu_command__buffer_common_gpu__memory__buffer__support.cc11
-rw-r--r--devel/electron7/files/patch-gpu_command__buffer_service_external__vk__image__backing.cc65
-rw-r--r--devel/electron7/files/patch-gpu_command__buffer_service_external__vk__image__backing.h11
-rw-r--r--devel/electron7/files/patch-gpu_command__buffer_service_external__vk__image__gl__representation.cc20
-rw-r--r--devel/electron7/files/patch-gpu_command__buffer_service_program__manager.cc14
-rw-r--r--devel/electron7/files/patch-gpu_command__buffer_tests_gl__copy__texture__CHROMIUM__unittest.cc11
-rw-r--r--devel/electron7/files/patch-gpu_command__buffer_tests_gl__test__utils.cc20
-rw-r--r--devel/electron7/files/patch-gpu_command__buffer_tests_gl__test__utils.h11
-rw-r--r--devel/electron7/files/patch-gpu_config_gpu__control__list.cc32
-rw-r--r--devel/electron7/files/patch-gpu_config_gpu__test__config.cc11
-rw-r--r--devel/electron7/files/patch-gpu_ipc_common_gpu__memory__buffer__support.cc56
-rw-r--r--devel/electron7/files/patch-gpu_ipc_common_gpu__memory__buffer__support.h29
-rw-r--r--devel/electron7/files/patch-gpu_ipc_service_gpu__init.cc118
-rw-r--r--devel/electron7/files/patch-gpu_ipc_service_gpu__memory__buffer__factory.cc20
-rw-r--r--devel/electron7/files/patch-gpu_ipc_service_gpu__watchdog__thread.cc76
-rw-r--r--devel/electron7/files/patch-gpu_ipc_service_gpu__watchdog__thread.h13
-rw-r--r--devel/electron7/files/patch-gpu_vulkan_vulkan__function__pointers.cc32
-rw-r--r--devel/electron7/files/patch-gpu_vulkan_vulkan__function__pointers.h42
-rw-r--r--devel/electron7/files/patch-headless_lib_browser_headless__content__browser__client.cc20
-rw-r--r--devel/electron7/files/patch-headless_lib_browser_headless__content__browser__client.h11
-rw-r--r--devel/electron7/files/patch-headless_lib_browser_headless__request__context__manager.cc29
-rw-r--r--devel/electron7/files/patch-headless_lib_headless__content__main__delegate.cc20
-rw-r--r--devel/electron7/files/patch-headless_lib_headless__content__main__delegate.h11
-rw-r--r--devel/electron7/files/patch-headless_lib_headless__macros.h13
-rw-r--r--devel/electron7/files/patch-ipc_ipc__channel.h11
-rw-r--r--devel/electron7/files/patch-ipc_ipc__channel__common.cc20
-rw-r--r--devel/electron7/files/patch-ipc_ipc__channel__mojo.cc15
-rw-r--r--devel/electron7/files/patch-ipc_ipc__message__utils.cc11
-rw-r--r--devel/electron7/files/patch-ipc_ipc__message__utils.h11
-rw-r--r--devel/electron7/files/patch-media_BUILD.gn12
-rw-r--r--devel/electron7/files/patch-media_audio_BUILD.gn22
-rw-r--r--devel/electron7/files/patch-media_audio_alsa_audio__manager__alsa.cc54
-rw-r--r--devel/electron7/files/patch-media_audio_audio__input__device.cc11
-rw-r--r--devel/electron7/files/patch-media_audio_audio__manager.cc29
-rw-r--r--devel/electron7/files/patch-media_audio_audio__manager.h11
-rw-r--r--devel/electron7/files/patch-media_audio_audio__output__proxy__unittest.cc11
-rw-r--r--devel/electron7/files/patch-media_audio_pulse_pulse.sigs46
-rw-r--r--devel/electron7/files/patch-media_base_audio__latency.cc11
-rw-r--r--devel/electron7/files/patch-media_base_scopedfd__helper.h23
-rw-r--r--devel/electron7/files/patch-media_base_video__frame.cc74
-rw-r--r--devel/electron7/files/patch-media_base_video__frame.h50
-rw-r--r--devel/electron7/files/patch-media_capture_video_create__video__capture__device__factory.cc20
-rw-r--r--devel/electron7/files/patch-media_capture_video_fake__video__capture__device__factory.cc11
-rw-r--r--devel/electron7/files/patch-media_capture_video_file__video__capture__device__factory.cc11
-rw-r--r--devel/electron7/files/patch-media_capture_video_linux_v4l2__capture__delegate.cc26
-rw-r--r--devel/electron7/files/patch-media_capture_video_linux_video__capture__device__factory__linux.cc32
-rw-r--r--devel/electron7/files/patch-media_capture_video_linux_video__capture__device__linux.cc61
-rw-r--r--devel/electron7/files/patch-media_capture_video_mock__gpu__memory__buffer__manager.cc11
-rw-r--r--devel/electron7/files/patch-media_capture_video_video__capture__buffer__pool__impl.cc11
-rw-r--r--devel/electron7/files/patch-media_capture_video_video__capture__device__client.cc11
-rw-r--r--devel/electron7/files/patch-media_filters_vp9__parser.h10
-rw-r--r--devel/electron7/files/patch-media_formats_common_offset__byte__queue.cc20
-rw-r--r--devel/electron7/files/patch-media_formats_common_offset__byte__queue.h22
-rw-r--r--devel/electron7/files/patch-media_formats_mp2t_es__parser__adts.cc26
-rw-r--r--devel/electron7/files/patch-media_formats_mp2t_es__parser__mpeg1audio.cc26
-rw-r--r--devel/electron7/files/patch-media_gpu_libyuv__image__processor.cc38
-rw-r--r--devel/electron7/files/patch-media_gpu_linux_platform__video__frame__utils.cc20
-rw-r--r--devel/electron7/files/patch-media_media__options.gni12
-rw-r--r--devel/electron7/files/patch-media_mojo_clients_mojo__video__encode__accelerator.cc11
-rw-r--r--devel/electron7/files/patch-media_mojo_mojom_video__frame__mojom__traits.cc20
-rw-r--r--devel/electron7/files/patch-media_mojo_services_gpu__mojo__media__client.cc20
-rw-r--r--devel/electron7/files/patch-media_video_gpu__memory__buffer__video__frame__pool.cc11
-rw-r--r--devel/electron7/files/patch-mojo_public_c_system_thunks.cc58
-rw-r--r--devel/electron7/files/patch-mojo_public_js_mojo__bindings__resources.grd11
-rw-r--r--devel/electron7/files/patch-net_BUILD.gn46
-rw-r--r--devel/electron7/files/patch-net_base_address__tracker__linux.cc177
-rw-r--r--devel/electron7/files/patch-net_base_address__tracker__linux.h12
-rw-r--r--devel/electron7/files/patch-net_base_address__tracker__linux__unittest.cc14
-rw-r--r--devel/electron7/files/patch-net_base_network__change__notifier.cc19
-rw-r--r--devel/electron7/files/patch-net_base_network__interfaces__posix.h11
-rw-r--r--devel/electron7/files/patch-net_disk__cache_blockfile_disk__format.h12
-rw-r--r--devel/electron7/files/patch-net_dns_address__sorter__posix.cc12
-rw-r--r--devel/electron7/files/patch-net_dns_dns__config__service__posix__unittest.cc47
-rw-r--r--devel/electron7/files/patch-net_dns_dns__reloader.cc13
-rw-r--r--devel/electron7/files/patch-net_dns_dns__util.cc11
-rw-r--r--devel/electron7/files/patch-net_dns_host__resolver__proc.cc11
-rw-r--r--devel/electron7/files/patch-net_features.gni11
-rw-r--r--devel/electron7/files/patch-net_http_http__auth__gssapi__posix.cc14
-rw-r--r--devel/electron7/files/patch-net_http_http__auth__gssapi__posix.h12
-rw-r--r--devel/electron7/files/patch-net_nqe_network__quality__estimator.cc11
-rw-r--r--devel/electron7/files/patch-net_nqe_network__quality__estimator__unittest.cc11
-rw-r--r--devel/electron7/files/patch-net_proxy__resolution_proxy__config__service__linux.cc39
-rw-r--r--devel/electron7/files/patch-net_proxy__resolution_proxy__resolution__service.cc29
-rw-r--r--devel/electron7/files/patch-net_socket_socket__posix.cc11
-rw-r--r--devel/electron7/files/patch-net_socket_socks5__client__socket.cc13
-rw-r--r--devel/electron7/files/patch-net_socket_tcp__socket__posix.cc20
-rw-r--r--devel/electron7/files/patch-net_socket_udp__socket__posix.cc108
-rw-r--r--devel/electron7/files/patch-net_socket_udp__socket__posix.h11
-rw-r--r--devel/electron7/files/patch-net_socket_unix__domain__client__socket__posix.cc11
-rw-r--r--devel/electron7/files/patch-net_tools_cert__verify__tool_cert__verify__tool.cc20
-rw-r--r--devel/electron7/files/patch-net_tools_quic_quic__http__proxy__backend.cc11
-rw-r--r--devel/electron7/files/patch-net_traffic__annotation_network__traffic__annotation.h20
-rw-r--r--devel/electron7/files/patch-net_url__request_url__fetcher.cc11
-rw-r--r--devel/electron7/files/patch-net_url__request_url__fetcher.h11
-rw-r--r--devel/electron7/files/patch-net_url__request_url__request__context.cc11
-rw-r--r--devel/electron7/files/patch-net_url__request_url__request__context.h11
-rw-r--r--devel/electron7/files/patch-net_url__request_url__request__context__builder.cc20
-rw-r--r--devel/electron7/files/patch-pdf_pdfium_pdfium__engine.cc56
-rw-r--r--devel/electron7/files/patch-ppapi_proxy_file__io__resource.cc48
-rw-r--r--devel/electron7/files/patch-ppapi_proxy_flash__resource.cc11
-rw-r--r--devel/electron7/files/patch-printing_cups__config__helper.py11
-rw-r--r--devel/electron7/files/patch-remoting_base_chromoting__event.cc11
-rw-r--r--devel/electron7/files/patch-remoting_client_display_sys__opengl.h11
-rw-r--r--devel/electron7/files/patch-remoting_host_evaluate__capability.cc11
-rw-r--r--devel/electron7/files/patch-remoting_host_host__attributes.cc11
-rw-r--r--devel/electron7/files/patch-remoting_host_host__details.cc11
-rw-r--r--devel/electron7/files/patch-remoting_host_host__main.cc27
-rw-r--r--devel/electron7/files/patch-remoting_host_it2me_it2me__native__messaging__host__main.cc35
-rw-r--r--devel/electron7/files/patch-remoting_host_me2me__desktop__environment.cc11
-rw-r--r--devel/electron7/files/patch-remoting_host_remoting__me2me__host.cc108
-rw-r--r--devel/electron7/files/patch-remoting_host_switches.cc14
-rw-r--r--devel/electron7/files/patch-remoting_host_switches.h14
-rw-r--r--devel/electron7/files/patch-remoting_resources_remoting__strings.grd20
-rw-r--r--devel/electron7/files/patch-remoting_webapp_base_js_platform.js17
-rw-r--r--devel/electron7/files/patch-sandbox_features.gni10
-rw-r--r--devel/electron7/files/patch-sandbox_linux_BUILD.gn47
-rw-r--r--devel/electron7/files/patch-sandbox_linux_services_init__process__reaper.cc15
-rw-r--r--devel/electron7/files/patch-sandbox_linux_services_libc__interceptor.cc21
-rw-r--r--devel/electron7/files/patch-services_audio_BUILD.gn11
-rw-r--r--devel/electron7/files/patch-services_device_geolocation_location__arbitrator.cc11
-rw-r--r--devel/electron7/files/patch-services_device_hid_BUILD.gn22
-rw-r--r--devel/electron7/files/patch-services_device_hid_hid__connection__freebsd.cc243
-rw-r--r--devel/electron7/files/patch-services_device_hid_hid__connection__freebsd.h71
-rw-r--r--devel/electron7/files/patch-services_device_hid_hid__service.cc20
-rw-r--r--devel/electron7/files/patch-services_device_hid_hid__service__freebsd.cc378
-rw-r--r--devel/electron7/files/patch-services_device_hid_hid__service__freebsd.h51
-rw-r--r--devel/electron7/files/patch-services_device_serial_BUILD.gn11
-rw-r--r--devel/electron7/files/patch-services_device_serial_serial__io__handler__posix.cc11
-rw-r--r--devel/electron7/files/patch-services_device_time__zone__monitor_time__zone__monitor.cc20
-rw-r--r--devel/electron7/files/patch-services_device_time__zone__monitor_time__zone__monitor__linux.cc14
-rw-r--r--devel/electron7/files/patch-services_device_usb_BUILD.gn11
-rw-r--r--devel/electron7/files/patch-services_network_BUILD.gn10
-rw-r--r--devel/electron7/files/patch-services_network_network__context.cc11
-rw-r--r--devel/electron7/files/patch-services_network_network__sandbox__hook__linux.cc18
-rw-r--r--devel/electron7/files/patch-services_network_network__service.cc20
-rw-r--r--devel/electron7/files/patch-services_network_network__service.h11
-rw-r--r--devel/electron7/files/patch-services_resource__coordinator_memory__instrumentation_queued__request__dispatcher.cc20
-rw-r--r--devel/electron7/files/patch-services_resource__coordinator_public_cpp_memory__instrumentation_os__metrics.h32
-rw-r--r--devel/electron7/files/patch-services_resource__coordinator_public_cpp_memory__instrumentation_os__metrics__linux.cc103
-rw-r--r--devel/electron7/files/patch-services_service__manager_embedder_main.cc11
-rw-r--r--devel/electron7/files/patch-services_service__manager_embedder_set__process__title__linux.cc19
-rw-r--r--devel/electron7/files/patch-services_service__manager_embedder_set__process__title__linux.h20
-rw-r--r--devel/electron7/files/patch-services_service__manager_public_cpp_service__executable_BUILD.gn14
-rw-r--r--devel/electron7/files/patch-services_service__manager_sandbox_BUILD.gn11
-rw-r--r--devel/electron7/files/patch-services_service__manager_sandbox_sandbox__type.cc11
-rw-r--r--devel/electron7/files/patch-services_service__manager_zygote_common_zygote__features.gni8
-rw-r--r--devel/electron7/files/patch-services_service__manager_zygote_host_zygote__host__impl__linux.cc40
-rw-r--r--devel/electron7/files/patch-services_service__manager_zygote_host_zygote__host__impl__linux.h13
-rw-r--r--devel/electron7/files/patch-services_service__manager_zygote_zygote__host__linux.h16
-rw-r--r--devel/electron7/files/patch-services_service__manager_zygote_zygote__linux.cc15
-rw-r--r--devel/electron7/files/patch-services_service__manager_zygote_zygote__main__linux.cc48
-rw-r--r--devel/electron7/files/patch-services_video__capture_broadcasting__receiver.cc20
-rw-r--r--devel/electron7/files/patch-skia_ext_SkMemory__new__handler.cpp20
-rw-r--r--devel/electron7/files/patch-third__party_angle_BUILD.gn21
-rw-r--r--devel/electron7/files/patch-third__party_angle_src_gpu__info__util_SystemInfo__internal.h16
-rw-r--r--devel/electron7/files/patch-third__party_angle_src_gpu__info__util_SystemInfo__libpci.cpp90
-rw-r--r--devel/electron7/files/patch-third__party_angle_src_gpu__info__util_SystemInfo__linux.cpp21
-rw-r--r--devel/electron7/files/patch-third__party_angle_src_gpu__info__util_SystemInfo__x11.cpp55
-rw-r--r--devel/electron7/files/patch-third__party_angle_src_libANGLE_Display.cpp20
-rw-r--r--devel/electron7/files/patch-third__party_angle_src_libANGLE_renderer_driver__utils.h11
-rw-r--r--devel/electron7/files/patch-third__party_angle_third__party_vulkan-loader_src_loader_loader.c11
-rw-r--r--devel/electron7/files/patch-third__party_angle_third__party_vulkan-loader_src_loader_vk__loader__platform.h11
-rw-r--r--devel/electron7/files/patch-third__party_angle_third__party_vulkan-validation-layers_src_layers_vk__loader__platform.h11
-rw-r--r--devel/electron7/files/patch-third__party_blink_renderer_BUILD.gn13
-rw-r--r--devel/electron7/files/patch-third__party_blink_renderer_core_editing_editing__behavior.cc11
-rw-r--r--devel/electron7/files/patch-third__party_blink_renderer_core_html_canvas_canvas__async__blob__creator.cc11
-rw-r--r--devel/electron7/files/patch-third__party_blink_renderer_core_html_forms_internal__popup__menu.cc11
-rw-r--r--devel/electron7/files/patch-third__party_blink_renderer_core_inspector_inspector__memory__agent.cc11
-rw-r--r--devel/electron7/files/patch-third__party_blink_renderer_core_layout_layout__view.cc20
-rw-r--r--devel/electron7/files/patch-third__party_blink_renderer_core_paint_paint__layer.cc11
-rw-r--r--devel/electron7/files/patch-third__party_blink_renderer_core_scroll_scrollbar__theme__aura.cc20
-rw-r--r--devel/electron7/files/patch-third__party_blink_renderer_modules_mediastream_processed__local__audio__source.cc20
-rw-r--r--devel/electron7/files/patch-third__party_blink_renderer_platform_BUILD.gn10
-rw-r--r--devel/electron7/files/patch-third__party_blink_renderer_platform_fonts_font__cache.cc20
-rw-r--r--devel/electron7/files/patch-third__party_blink_renderer_platform_fonts_font__cache.h53
-rw-r--r--devel/electron7/files/patch-third__party_blink_renderer_platform_fonts_font__description.cc20
-rw-r--r--devel/electron7/files/patch-third__party_blink_renderer_platform_fonts_font__metrics.cc29
-rw-r--r--devel/electron7/files/patch-third__party_blink_renderer_platform_fonts_font__unique__name__lookup.cc20
-rw-r--r--devel/electron7/files/patch-third__party_blink_renderer_platform_fonts_skia_font__cache__skia.cc38
-rw-r--r--devel/electron7/files/patch-third__party_blink_renderer_platform_wtf_container__annotations.h27
-rw-r--r--devel/electron7/files/patch-third__party_blink_renderer_platform_wtf_stack__util.cc14
-rw-r--r--devel/electron7/files/patch-third__party_blink_renderer_platform_wtf_threading__pthreads.cc22
-rw-r--r--devel/electron7/files/patch-third__party_boringssl_BUILD.gn36
-rw-r--r--devel/electron7/files/patch-third__party_boringssl_src_crypto_cpu-aarch64-linux.c63
-rw-r--r--devel/electron7/files/patch-third__party_boringssl_src_crypto_ex__data.c13
-rw-r--r--devel/electron7/files/patch-third__party_breakpad_breakpad_src_common_simple__string__dictionary.h11
-rw-r--r--devel/electron7/files/patch-third__party_cacheinvalidation_src_google_cacheinvalidation_include_types.h11
-rw-r--r--devel/electron7/files/patch-third__party_crashpad_crashpad_build_crashpad__buildconfig.gni11
-rw-r--r--devel/electron7/files/patch-third__party_crashpad_crashpad_client_BUILD.gn15
-rw-r--r--devel/electron7/files/patch-third__party_crashpad_crashpad_client_crashpad__client__posix.cc41
-rw-r--r--devel/electron7/files/patch-third__party_crashpad_crashpad_util_misc_address__types.h20
-rw-r--r--devel/electron7/files/patch-third__party_crashpad_crashpad_util_misc_capture__context.h20
-rw-r--r--devel/electron7/files/patch-third__party_crashpad_crashpad_util_misc_metrics.cc11
-rw-r--r--devel/electron7/files/patch-third__party_crashpad_crashpad_util_misc_uuid.cc11
-rw-r--r--devel/electron7/files/patch-third__party_crashpad_crashpad_util_posix_close__multiple.cc29
-rw-r--r--devel/electron7/files/patch-third__party_crashpad_crashpad_util_posix_drop__privileges.cc11
-rw-r--r--devel/electron7/files/patch-third__party_crashpad_crashpad_util_posix_signals.cc40
-rw-r--r--devel/electron7/files/patch-third__party_crashpad_crashpad_util_posix_symbolic__constants__posix.cc20
-rw-r--r--devel/electron7/files/patch-third__party_crc32c_src_src_crc32c__arm64__linux__check.h53
-rw-r--r--devel/electron7/files/patch-third__party_electron__node_deps_uv_BUILD.gn45
-rw-r--r--devel/electron7/files/patch-third__party_ffmpeg_libavutil_mem.c12
-rw-r--r--devel/electron7/files/patch-third__party_glslang_src_glslang_Include_PoolAlloc.h10
-rw-r--r--devel/electron7/files/patch-third__party_googletest_src_googletest_src_gtest-port.cc43
-rw-r--r--devel/electron7/files/patch-third__party_googletest_src_googletest_src_gtest.cc10
-rw-r--r--devel/electron7/files/patch-third__party_leveldatabase_env__chromium.cc14
-rw-r--r--devel/electron7/files/patch-third__party_libXNVCtrl_NVCtrl.c25
-rw-r--r--devel/electron7/files/patch-third__party_libphonenumber_dist_cpp_src_phonenumbers_base_memory_singleton.h11
-rw-r--r--devel/electron7/files/patch-third__party_libphonenumber_dist_cpp_src_phonenumbers_base_synchronization_lock.h11
-rw-r--r--devel/electron7/files/patch-third__party_libphonenumber_dist_cpp_src_phonenumbers_base_thread__checker.h19
-rw-r--r--devel/electron7/files/patch-third__party_libyuv_include_libyuv_row.h37
-rw-r--r--devel/electron7/files/patch-third__party_nasm_config_config-linux.h29
-rw-r--r--devel/electron7/files/patch-third__party_node_node.py10
-rw-r--r--devel/electron7/files/patch-third__party_pdfium_core_fxcrt_cfx__datetime.cpp11
-rw-r--r--devel/electron7/files/patch-third__party_pdfium_core_fxcrt_fx__system.h11
-rw-r--r--devel/electron7/files/patch-third__party_pdfium_core_fxge_fx__ge__linux.cpp14
-rw-r--r--devel/electron7/files/patch-third__party_pdfium_fxjs_cjs__publicmethods.cpp106
-rw-r--r--devel/electron7/files/patch-third__party_pdfium_fxjs_fx__date__helpers.cpp22
-rw-r--r--devel/electron7/files/patch-third__party_pdfium_third__party_base_allocator_partition__allocator_page__allocator.cc11
-rw-r--r--devel/electron7/files/patch-third__party_pdfium_third__party_base_allocator_partition__allocator_page__allocator__internals__posix.h38
-rw-r--r--devel/electron7/files/patch-third__party_pdfium_xfa_fgas_font_cfx__fontsourceenum__file.cpp14
-rw-r--r--devel/electron7/files/patch-third__party_perfetto_include_perfetto_base_build__config.h51
-rw-r--r--devel/electron7/files/patch-third__party_perfetto_include_perfetto_base_time.h20
-rw-r--r--devel/electron7/files/patch-third__party_perfetto_include_perfetto_ext_base_event__fd.h13
-rw-r--r--devel/electron7/files/patch-third__party_perfetto_include_perfetto_ext_base_thread__utils.h24
-rw-r--r--devel/electron7/files/patch-third__party_perfetto_src_base_unix__socket.cc12
-rw-r--r--devel/electron7/files/patch-third__party_perfetto_src_tracing_core_tracing__service__impl.cc12
-rw-r--r--devel/electron7/files/patch-third__party_perfetto_src_tracing_core_virtual__destructors.cc28
-rw-r--r--devel/electron7/files/patch-third__party_protobuf_src_google_protobuf_stubs_platform__macros.h11
-rw-r--r--devel/electron7/files/patch-third__party_sfntly_src_cpp_src_sfntly_table_core_cmap__table.cc47
-rw-r--r--devel/electron7/files/patch-third__party_skia_src_core_SkCpu.cpp19
-rw-r--r--devel/electron7/files/patch-third__party_skia_src_gpu_GrAutoLocaleSetter.h11
-rw-r--r--devel/electron7/files/patch-third__party_skia_src_images_SkJpegEncoder.cpp41
-rw-r--r--devel/electron7/files/patch-third__party_skia_src_ports_SkOSFile__stdio.cpp11
-rw-r--r--devel/electron7/files/patch-third__party_skia_src_sksl_SkSLString.h11
-rw-r--r--devel/electron7/files/patch-third__party_skia_third__party_vulkanmemoryallocator_include_vk__mem__alloc.h11
-rw-r--r--devel/electron7/files/patch-third__party_snappy_src_snappy.h20
-rw-r--r--devel/electron7/files/patch-third__party_sqlite_BUILD.gn11
-rw-r--r--devel/electron7/files/patch-third__party_swiftshader_BUILD.gn24
-rw-r--r--devel/electron7/files/patch-third__party_swiftshader_src_Common_Configurator.cpp12
-rw-r--r--devel/electron7/files/patch-third__party_swiftshader_src_Common_MutexLock.hpp11
-rw-r--r--devel/electron7/files/patch-third__party_swiftshader_src_Common_SharedLibrary.hpp11
-rw-r--r--devel/electron7/files/patch-third__party_swiftshader_src_Main_SwiftConfig.cpp14
-rw-r--r--devel/electron7/files/patch-third__party_swiftshader_src_OpenGL_libEGL_Display.cpp20
-rw-r--r--devel/electron7/files/patch-third__party_swiftshader_src_OpenGL_libEGL_Surface.cpp11
-rw-r--r--devel/electron7/files/patch-third__party_swiftshader_src_OpenGL_libEGL_libEGL.cpp29
-rw-r--r--devel/electron7/files/patch-third__party_swiftshader_src_OpenGL_libEGL_libEGL.hpp11
-rw-r--r--devel/electron7/files/patch-third__party_swiftshader_src_OpenGL_libGLES__CM_libGLES__CM.hpp11
-rw-r--r--devel/electron7/files/patch-third__party_swiftshader_src_OpenGL_libGLESv2_libGLESv2.hpp11
-rw-r--r--devel/electron7/files/patch-third__party_swiftshader_src_Yarn_Thread.cpp22
-rw-r--r--devel/electron7/files/patch-third__party_swiftshader_third__party_llvm-7.0_configs_linux_include_llvm_Config_config.h152
-rw-r--r--devel/electron7/files/patch-third__party_swiftshader_third__party_llvm-7.0_configs_linux_include_llvm_Config_llvm-config.h20
-rw-r--r--devel/electron7/files/patch-third__party_swiftshader_third__party_llvm-subzero_build_Linux_include_llvm_Config_config.h29
-rw-r--r--devel/electron7/files/patch-third__party_swiftshader_third__party_llvm-subzero_lib_Support_Unix_Process.inc11
-rw-r--r--devel/electron7/files/patch-third__party_usrsctp_BUILD.gn20
-rw-r--r--devel/electron7/files/patch-third__party_webrtc_BUILD.gn12
-rw-r--r--devel/electron7/files/patch-third__party_webrtc_modules_audio__device_BUILD.gn11
-rw-r--r--devel/electron7/files/patch-third__party_webrtc_modules_rtp__rtcp_source_forward__error__correction.cc10
-rw-r--r--devel/electron7/files/patch-third__party_webrtc_rtc__base_byte__order.h11
-rw-r--r--devel/electron7/files/patch-third__party_webrtc_rtc__base_ifaddrs__converter.h11
-rw-r--r--devel/electron7/files/patch-third__party_webrtc_rtc__base_ip__address.cc12
-rw-r--r--devel/electron7/files/patch-third__party_webrtc_rtc__base_ip__address.h13
-rw-r--r--devel/electron7/files/patch-third__party_webrtc_rtc__base_network.cc29
-rw-r--r--devel/electron7/files/patch-third__party_webrtc_rtc__base_network.h13
-rw-r--r--devel/electron7/files/patch-third__party_webrtc_rtc__base_physical__socket__server.cc65
-rw-r--r--devel/electron7/files/patch-third__party_webrtc_rtc__base_physical__socket__server.h11
-rw-r--r--devel/electron7/files/patch-third__party_webrtc_rtc__base_platform__thread__types.cc39
-rw-r--r--devel/electron7/files/patch-third__party_webrtc_system__wrappers_BUILD.gn11
-rw-r--r--devel/electron7/files/patch-third__party_zlib_arm__features.c46
-rw-r--r--devel/electron7/files/patch-tools_gn_base_files_file__posix.cc11
-rw-r--r--devel/electron7/files/patch-tools_gn_base_files_file__util.h11
-rw-r--r--devel/electron7/files/patch-tools_gn_base_files_file__util__posix.cc11
-rw-r--r--devel/electron7/files/patch-tools_gn_base_files_scoped__file.cc11
-rw-r--r--devel/electron7/files/patch-tools_gn_build_gen.py24
-rw-r--r--devel/electron7/files/patch-tools_gn_tools_gn_exec__process.cc13
-rw-r--r--devel/electron7/files/patch-tools_gn_util_sys__info.cc11
-rw-r--r--devel/electron7/files/patch-tools_json__schema__compiler_feature__compiler.py10
-rw-r--r--devel/electron7/files/patch-tools_json__schema__compiler_model.py11
-rw-r--r--devel/electron7/files/patch-tools_perf_chrome__telemetry__build_BUILD.gn11
-rw-r--r--devel/electron7/files/patch-tools_variations_fieldtrial__to__struct.py10
-rw-r--r--devel/electron7/files/patch-ui_base_dragdrop_os__exchange__data__provider__factory.cc20
-rw-r--r--devel/electron7/files/patch-ui_base_ime_init_input__method__initializer.cc38
-rw-r--r--devel/electron7/files/patch-ui_base_resource_resource__bundle.cc20
-rw-r--r--devel/electron7/files/patch-ui_base_resource_resource__bundle__freebsd.cc24
-rw-r--r--devel/electron7/files/patch-ui_base_ui__base__features.cc20
-rw-r--r--devel/electron7/files/patch-ui_base_ui__base__features.h15
-rw-r--r--devel/electron7/files/patch-ui_base_webui_web__ui__util.cc11
-rw-r--r--devel/electron7/files/patch-ui_events_devices_x11_device__data__manager__x11.cc19
-rw-r--r--devel/electron7/files/patch-ui_events_event__switches.cc11
-rw-r--r--devel/electron7/files/patch-ui_events_event__switches.h11
-rw-r--r--devel/electron7/files/patch-ui_events_keycodes_dom_keycode__converter.cc11
-rw-r--r--devel/electron7/files/patch-ui_gfx_BUILD.gn11
-rw-r--r--devel/electron7/files/patch-ui_gfx_canvas__skia.cc11
-rw-r--r--devel/electron7/files/patch-ui_gfx_codec_jpeg__codec.cc20
-rw-r--r--devel/electron7/files/patch-ui_gfx_font__fallback__linux.cc13
-rw-r--r--devel/electron7/files/patch-ui_gfx_font__list.cc11
-rw-r--r--devel/electron7/files/patch-ui_gfx_font__render__params.h18
-rw-r--r--devel/electron7/files/patch-ui_gfx_gpu__memory__buffer.h20
-rw-r--r--devel/electron7/files/patch-ui_gfx_ipc_gfx__param__traits__macros.h44
-rw-r--r--devel/electron7/files/patch-ui_gfx_linux_client__native__pixmap__dmabuf.cc25
-rw-r--r--devel/electron7/files/patch-ui_gfx_mojom_buffer__types__mojom__traits.cc75
-rw-r--r--devel/electron7/files/patch-ui_gfx_mojom_buffer__types__mojom__traits.h29
-rw-r--r--devel/electron7/files/patch-ui_gfx_native__pixmap__handle.cc56
-rw-r--r--devel/electron7/files/patch-ui_gfx_native__pixmap__handle.h38
-rw-r--r--devel/electron7/files/patch-ui_gfx_render__text.cc46
-rw-r--r--devel/electron7/files/patch-ui_gl_BUILD.gn11
-rw-r--r--devel/electron7/files/patch-ui_gl_generate__bindings.py12
-rw-r--r--devel/electron7/files/patch-ui_gl_gl__bindings__api__autogen__glx.h10
-rw-r--r--devel/electron7/files/patch-ui_gl_gl__bindings__autogen__glx.cc61
-rw-r--r--devel/electron7/files/patch-ui_gl_gl__bindings__autogen__glx.h43
-rw-r--r--devel/electron7/files/patch-ui_gl_gl__fence.cc11
-rw-r--r--devel/electron7/files/patch-ui_gl_gl__surface__glx.cc14
-rw-r--r--devel/electron7/files/patch-ui_gl_sync__control__vsync__provider.cc43
-rw-r--r--devel/electron7/files/patch-ui_gl_sync__control__vsync__provider.h34
-rw-r--r--devel/electron7/files/patch-ui_message__center_public_cpp_message__center__constants.h11
-rw-r--r--devel/electron7/files/patch-ui_message__center_views_message__popup__view.cc11
-rw-r--r--devel/electron7/files/patch-ui_native__theme_native__theme.h11
-rw-r--r--devel/electron7/files/patch-ui_native__theme_native__theme__base.cc11
-rw-r--r--devel/electron7/files/patch-ui_platform__window_platform__window__delegate.h20
-rw-r--r--devel/electron7/files/patch-ui_platform__window_platform__window__init__properties.h11
-rw-r--r--devel/electron7/files/patch-ui_strings_app__locale__settings.grd11
-rw-r--r--devel/electron7/files/patch-ui_views_bubble_bubble__dialog__delegate__view.cc11
-rw-r--r--devel/electron7/files/patch-ui_views_controls_label.cc20
-rw-r--r--devel/electron7/files/patch-ui_views_controls_textfield_textfield.cc73
-rw-r--r--devel/electron7/files/patch-ui_views_corewm_tooltip__aura.cc11
-rw-r--r--devel/electron7/files/patch-ui_views_examples_widget__example.cc11
-rw-r--r--devel/electron7/files/patch-ui_views_selection__controller.cc11
-rw-r--r--devel/electron7/files/patch-ui_views_style_platform__style.cc11
-rw-r--r--devel/electron7/files/patch-ui_views_views__delegate.cc11
-rw-r--r--devel/electron7/files/patch-ui_views_views__delegate.h11
-rw-r--r--devel/electron7/files/patch-ui_views_widget_desktop__aura_desktop__window__tree__host__platform.cc20
-rw-r--r--devel/electron7/files/patch-ui_views_widget_desktop__aura_desktop__window__tree__host__platform.h11
-rw-r--r--devel/electron7/files/patch-ui_views_window_custom__frame__view.cc11
-rw-r--r--devel/electron7/files/patch-ui_views_window_dialog__delegate.cc11
-rw-r--r--devel/electron7/files/patch-ui_views_window_frame__background.cc11
-rw-r--r--devel/electron7/files/patch-ui_webui_resources_js_cr.js14
-rw-r--r--devel/electron7/files/patch-ui_webui_resources_js_icon.js11
-rw-r--r--devel/electron7/files/patch-v8_BUILD.gn32
-rw-r--r--devel/electron7/files/patch-v8_src_api_api.cc20
-rw-r--r--devel/electron7/files/patch-v8_src_base_cpu.cc18
-rw-r--r--devel/electron7/files/patch-v8_src_base_platform_platform-posix.cc24
-rw-r--r--devel/electron7/files/patch-v8_src_trap-handler_handler-inside-posix.cc20
-rw-r--r--devel/electron7/files/patch-v8_src_trap-handler_handler-inside-posix.h11
-rw-r--r--devel/electron7/files/patch-v8_src_trap-handler_trap-handler.h11
-rw-r--r--devel/electron7/files/patch-weblayer_browser_browser__main__parts__impl.cc20
-rw-r--r--devel/electron7/files/patch-weblayer_shell_app_shell__main.cc20
-rw-r--r--devel/electron7/files/yarn.lock7925
-rw-r--r--devel/electron7/pkg-descr10
-rw-r--r--devel/electron7/pkg-plist124
-rw-r--r--devel/gnatpython/Makefile19
-rw-r--r--devel/gnatpython/distinfo2
-rw-r--r--devel/gnatpython/files/patch-setup__helpers.py11
-rw-r--r--devel/gnatpython/pkg-descr5
-rw-r--r--devel/godot2-tools/Makefile13
-rw-r--r--devel/godot2-tools/pkg-message11
-rw-r--r--devel/godot2/Makefile111
-rw-r--r--devel/godot2/distinfo5
-rw-r--r--devel/godot2/files/patch-SConstruct36
-rw-r--r--devel/godot2/files/patch-drivers_SCsub11
-rw-r--r--devel/godot2/files/patch-drivers_rtaudio_audio__driver__rtaudio.cpp18
-rw-r--r--devel/godot2/files/patch-drivers_unix_os__unix.cpp54
-rw-r--r--devel/godot2/files/patch-modules_speex_audio__stream__speex.cpp11
-rw-r--r--devel/godot2/files/patch-modules_squish_SCsub11
-rw-r--r--devel/godot2/files/patch-platform_x11_detect.py94
-rw-r--r--devel/godot2/files/patch-thirdparty_glew_glew.c11
-rw-r--r--devel/godot2/files/patch-thirdparty_rtaudio_RtAudio.cpp89
-rw-r--r--devel/godot2/files/patch-thirdparty_rtaudio_RtAudio.h16
-rw-r--r--devel/godot2/pkg-descr9
-rw-r--r--devel/libhid/Makefile31
-rw-r--r--devel/libhid/distinfo2
-rw-r--r--devel/libhid/files/extra-patch-usb12
-rw-r--r--devel/libhid/files/patch-Makefile.in11
-rw-r--r--devel/libhid/files/patch-configure31
-rw-r--r--devel/libhid/files/patch-hidparser-hidtypes.h11
-rw-r--r--devel/libhid/files/patch-src_hid_initialisation.c10
-rw-r--r--devel/libhid/files/patch-src_hid_opening.c9
-rw-r--r--devel/libhid/files/patch-src_hid_parsing.c9
-rw-r--r--devel/libhid/files/patch-test_lshid.c10
-rw-r--r--devel/libhid/files/patch-test_test_libhid.c9
-rw-r--r--devel/libhid/pkg-descr9
-rw-r--r--devel/libhid/pkg-plist23
-rw-r--r--devel/libosmocore/Makefile50
-rw-r--r--devel/libosmocore/distinfo3
-rw-r--r--devel/libosmocore/files/patch-src_gb_gprs__ns__sns.c11
-rw-r--r--devel/libosmocore/files/patch-src_sockaddr__str.c11
-rw-r--r--devel/libosmocore/files/patch-src_timer__clockgettime.c27
-rw-r--r--devel/libosmocore/pkg-descr7
-rw-r--r--devel/libosmocore/pkg-plist185
-rw-r--r--devel/llvm60/Makefile459
-rw-r--r--devel/llvm60/Makefile.COMMANDS90
-rw-r--r--devel/llvm60/distinfo15
-rw-r--r--devel/llvm60/files/clang/patch-fformat_extensions.diff44
-rw-r--r--devel/llvm60/files/clang/patch-fopenmp.diff14
-rw-r--r--devel/llvm60/files/clang/patch-head-r331066.diff40
-rw-r--r--devel/llvm60/files/clang/patch-head-r336227.diff42
-rw-r--r--devel/llvm60/files/clang/patch-head-r338697.diff104
-rw-r--r--devel/llvm60/files/clang/patch-head-r339019.diff30
-rw-r--r--devel/llvm60/files/clang/patch-stable12-r342281.diff834
-rw-r--r--devel/llvm60/files/clang/patch-tools_clang_lib_Headers_CMakeLists.txt32
-rw-r--r--devel/llvm60/files/clang/patch-tools_clang_tools_clang-format_clang-format-sublime.py14
-rw-r--r--devel/llvm60/files/clang/patch-tools_clang_tools_clang-format_clang-format.py11
-rw-r--r--devel/llvm60/files/clang/patch-tools_clang_tools_clang-format_git-clang-format32
-rw-r--r--devel/llvm60/files/clang/patch-tools_clang_tools_scan-build_libexec_ccc-analyzer12
-rw-r--r--devel/llvm60/files/lld/patch-head-r331731.diff67
-rw-r--r--devel/llvm60/files/lld/patch-head-r333401.diff34
-rw-r--r--devel/llvm60/files/lld/patch-head-r336664.diff52
-rw-r--r--devel/llvm60/files/lld/patch-head-r336972.diff146
-rw-r--r--devel/llvm60/files/lld/patch-head-r337282.diff39
-rw-r--r--devel/llvm60/files/lld/patch-head-r338251.diff123
-rw-r--r--devel/llvm60/files/lld/patch-head-r338682.diff55
-rw-r--r--devel/llvm60/files/lld/patch-head-r339013.diff39
-rw-r--r--devel/llvm60/files/lld/patch-head-r339304.diff37
-rw-r--r--devel/llvm60/files/lldb/patch-head-r332849.diff38
-rw-r--r--devel/llvm60/files/lldb/patch-head-r332965.diff22
-rw-r--r--devel/llvm60/files/llvm-wrapper.sh.in12
-rw-r--r--devel/llvm60/files/openmp/patch-bug3227929
-rw-r--r--devel/llvm60/files/openmp/patch-i38611
-rw-r--r--devel/llvm60/files/patch-cmake_modules_AddSphinxTarget.cmake11
-rw-r--r--devel/llvm60/files/patch-head-r308867.diff33
-rw-r--r--devel/llvm60/files/patch-head-r330686.diff80
-rw-r--r--devel/llvm60/files/patch-head-r331065.diff88
-rw-r--r--devel/llvm60/files/patch-head-r331366.diff609
-rw-r--r--devel/llvm60/files/patch-head-r336969.diff32
-rw-r--r--devel/llvm60/files/patch-head-r336970.diff24
-rw-r--r--devel/llvm60/files/patch-head-r337615.diff64
-rw-r--r--devel/llvm60/files/patch-head-r338689.diff32
-rw-r--r--devel/llvm60/files/patch-svn-r3223251589
-rw-r--r--devel/llvm60/pkg-descr8
-rw-r--r--devel/llvm60/pkg-plist2899
-rw-r--r--devel/mongo-cxx-driver/Makefile47
-rw-r--r--devel/mongo-cxx-driver/distinfo3
-rw-r--r--devel/mongo-cxx-driver/files/patch-SConstruct33
-rw-r--r--devel/mongo-cxx-driver/files/patch-boost-1.6726
-rw-r--r--devel/mongo-cxx-driver/pkg-descr7
-rw-r--r--devel/mongo-cxx-driver/pkg-plist112
-rw-r--r--devel/p5-Log-Any-Adapter-Callback/Makefile26
-rw-r--r--devel/p5-Log-Any-Adapter-Callback/distinfo3
-rw-r--r--devel/p5-Log-Any-Adapter-Callback/pkg-descr3
-rw-r--r--devel/p5-Log-Any-Adapter-Callback/pkg-plist2
-rw-r--r--devel/py-backports.functools_lru_cache/Makefile29
-rw-r--r--devel/py-backports.functools_lru_cache/distinfo3
-rw-r--r--devel/py-backports.functools_lru_cache/pkg-descr5
-rw-r--r--devel/py-backports.os/Makefile35
-rw-r--r--devel/py-backports.os/distinfo3
-rw-r--r--devel/py-backports.os/pkg-descr9
-rw-r--r--devel/py-backports.shutil_get_terminal_size/Makefile32
-rw-r--r--devel/py-backports.shutil_get_terminal_size/distinfo2
-rw-r--r--devel/py-backports.shutil_get_terminal_size/pkg-descr3
-rw-r--r--devel/py-backports_abc/Makefile20
-rw-r--r--devel/py-backports_abc/distinfo3
-rw-r--r--devel/py-backports_abc/pkg-descr3
-rw-r--r--devel/py-cheetah/Makefile23
-rw-r--r--devel/py-cheetah/distinfo2
-rw-r--r--devel/py-cheetah/pkg-descr7
-rw-r--r--devel/py-dis3/Makefile25
-rw-r--r--devel/py-dis3/distinfo3
-rw-r--r--devel/py-dis3/pkg-descr4
-rw-r--r--devel/py-enum34/Makefile32
-rw-r--r--devel/py-enum34/distinfo3
-rw-r--r--devel/py-enum34/pkg-descr5
-rw-r--r--devel/py-functools32/Makefile25
-rw-r--r--devel/py-functools32/distinfo2
-rw-r--r--devel/py-functools32/pkg-descr5
-rw-r--r--devel/py-futures/Makefile27
-rw-r--r--devel/py-futures/distinfo3
-rw-r--r--devel/py-futures/pkg-descr8
-rw-r--r--devel/py-more-itertools5/Makefile30
-rw-r--r--devel/py-more-itertools5/distinfo3
-rw-r--r--devel/py-more-itertools5/pkg-descr7
-rw-r--r--devel/py-pathlib/Makefile33
-rw-r--r--devel/py-pathlib/distinfo2
-rw-r--r--devel/py-pathlib/pkg-descr4
-rw-r--r--devel/py-selectors2/Makefile22
-rw-r--r--devel/py-selectors2/distinfo3
-rw-r--r--devel/py-selectors2/pkg-descr4
-rw-r--r--devel/py-should_dsl/Makefile19
-rw-r--r--devel/py-should_dsl/distinfo2
-rw-r--r--devel/py-should_dsl/pkg-descr3
-rw-r--r--devel/py-singledispatch/Makefile23
-rw-r--r--devel/py-singledispatch/distinfo2
-rw-r--r--devel/py-singledispatch/pkg-descr10
-rw-r--r--devel/py-subprocess32/Makefile24
-rw-r--r--devel/py-subprocess32/distinfo3
-rw-r--r--devel/py-subprocess32/pkg-descr9
-rw-r--r--devel/py-total-ordering/Makefile16
-rw-r--r--devel/py-total-ordering/distinfo2
-rw-r--r--devel/py-total-ordering/pkg-descr3
-rw-r--r--devel/py-typing/Makefile23
-rw-r--r--devel/py-typing/distinfo3
-rw-r--r--devel/py-typing/pkg-descr8
-rw-r--r--devel/py-weakrefmethod/Makefile23
-rw-r--r--devel/py-weakrefmethod/distinfo3
-rw-r--r--devel/py-weakrefmethod/pkg-descr3
-rw-r--r--devel/rbtools/Makefile25
-rw-r--r--devel/rbtools/distinfo3
-rw-r--r--devel/rbtools/pkg-descr4
-rw-r--r--devel/subversion-lts/Makefile227
-rw-r--r--devel/subversion-lts/Makefile.common115
-rw-r--r--devel/subversion-lts/distinfo3
-rw-r--r--devel/subversion-lts/files/220_subversion.conf.sample.in104
-rw-r--r--devel/subversion-lts/files/build-outputs.mk.addons3684
-rw-r--r--devel/subversion-lts/files/extra-patch-build.conf11
-rw-r--r--devel/subversion-lts/files/extra-patch-fbsd-template164
-rw-r--r--devel/subversion-lts/files/extra-patch-svnserve-wrapper11
-rw-r--r--devel/subversion-lts/files/patch-Makefile.in11
-rw-r--r--devel/subversion-lts/files/patch-build-outputs.mk17
-rw-r--r--devel/subversion-lts/files/pkg-message.in8
-rw-r--r--devel/subversion-lts/files/svnserve.in40
-rw-r--r--devel/subversion-lts/files/svnserve.wrapper9
-rw-r--r--devel/subversion-lts/pkg-descr6
-rw-r--r--devel/subversion-lts/pkg-plist472
-rw-r--r--devel/viewvc/Makefile70
-rw-r--r--devel/viewvc/distinfo3
-rw-r--r--devel/viewvc/files/pkg-message.in74
-rw-r--r--devel/viewvc/files/viewvc.in70
-rw-r--r--devel/viewvc/pkg-descr8
-rw-r--r--devel/viewvc/pkg-plist178
3207 files changed, 132603 insertions, 0 deletions
diff --git a/devel/Makefile b/devel/Makefile
index 37fa5eebe753..2f1f62c9d309 100644
--- a/devel/Makefile
+++ b/devel/Makefile
@@ -269,6 +269,7 @@
SUBDIR += busybee
SUBDIR += byacc
SUBDIR += byaccj
+ SUBDIR += bzr
SUBDIR += c2mdoc
SUBDIR += caf
SUBDIR += calibrator
@@ -308,6 +309,7 @@
SUBDIR += checkbashisms
SUBDIR += checkheaders
SUBDIR += chroma
+ SUBDIR += chromium-gn
SUBDIR += chrpath
SUBDIR += chruby
SUBDIR += cil
@@ -520,6 +522,10 @@
SUBDIR += efl
SUBDIR += egypt
SUBDIR += eiffelstudio
+ SUBDIR += electron4
+ SUBDIR += electron5
+ SUBDIR += electron6
+ SUBDIR += electron7
SUBDIR += elf
SUBDIR += elfio
SUBDIR += elfkickers
@@ -821,6 +827,7 @@
SUBDIR += glui
SUBDIR += gmake
SUBDIR += gn
+ SUBDIR += gnatpython
SUBDIR += gnome-builder
SUBDIR += gnome-common
SUBDIR += gnome-vfs
@@ -842,6 +849,8 @@
SUBDIR += godep
SUBDIR += godot
SUBDIR += godot-tools
+ SUBDIR += godot2
+ SUBDIR += godot2-tools
SUBDIR += goffice
SUBDIR += gogs
SUBDIR += golangci-lint
@@ -1196,6 +1205,7 @@
SUBDIR += libgudev
SUBDIR += libgutenfetch
SUBDIR += libhash
+ SUBDIR += libhid
SUBDIR += libhoard
SUBDIR += libhtp
SUBDIR += libhyve-remote
@@ -1249,6 +1259,7 @@
SUBDIR += liborcus
SUBDIR += libosinfo
SUBDIR += libosmo-abis
+ SUBDIR += libosmocore
SUBDIR += libowfat
SUBDIR += libpafe
SUBDIR += libpafe-ruby
@@ -1397,6 +1408,7 @@
SUBDIR += llvm-devel
SUBDIR += llvm10
SUBDIR += llvm11
+ SUBDIR += llvm60
SUBDIR += llvm70
SUBDIR += llvm80
SUBDIR += llvm90
@@ -1499,6 +1511,7 @@
SUBDIR += mm-common
SUBDIR += modd
SUBDIR += mongo-c-driver
+ SUBDIR += mongo-cxx-driver
SUBDIR += mono-addins
SUBDIR += monodevelop
SUBDIR += monotone
@@ -2624,6 +2637,7 @@
SUBDIR += p5-Log-Agent
SUBDIR += p5-Log-Agent-Logger
SUBDIR += p5-Log-Any
+ SUBDIR += p5-Log-Any-Adapter-Callback
SUBDIR += p5-Log-Any-Adapter-Dispatch
SUBDIR += p5-Log-Any-Adapter-Log4perl
SUBDIR += p5-Log-Any-App
@@ -4145,6 +4159,10 @@
SUBDIR += py-backcall
SUBDIR += py-backports
SUBDIR += py-backports.csv
+ SUBDIR += py-backports.functools_lru_cache
+ SUBDIR += py-backports.os
+ SUBDIR += py-backports.shutil_get_terminal_size
+ SUBDIR += py-backports_abc
SUBDIR += py-banal
SUBDIR += py-bandit
SUBDIR += py-bcdoc
@@ -4203,6 +4221,7 @@
SUBDIR += py-chainmap
SUBDIR += py-characteristic
SUBDIR += py-check-manifest
+ SUBDIR += py-cheetah
SUBDIR += py-cheetah3
SUBDIR += py-circuits
SUBDIR += py-cld
@@ -4304,6 +4323,7 @@
SUBDIR += py-diazo
SUBDIR += py-dill
SUBDIR += py-dirspec
+ SUBDIR += py-dis3
SUBDIR += py-distlib
SUBDIR += py-distributed
SUBDIR += py-dj31-django-rq
@@ -4326,6 +4346,7 @@
SUBDIR += py-enlighten
SUBDIR += py-entrypoints
SUBDIR += py-enum-compat
+ SUBDIR += py-enum34
SUBDIR += py-envisage
SUBDIR += py-epdb
SUBDIR += py-epsilon
@@ -4385,10 +4406,12 @@
SUBDIR += py-fudge
SUBDIR += py-funcparserlib
SUBDIR += py-funcsigs
+ SUBDIR += py-functools32
SUBDIR += py-funcy
SUBDIR += py-furl
SUBDIR += py-fusepy
SUBDIR += py-future
+ SUBDIR += py-futures
SUBDIR += py-futurist
SUBDIR += py-futurist1
SUBDIR += py-fuzzywuzzy
@@ -4595,6 +4618,7 @@
SUBDIR += py-monotonic
SUBDIR += py-monty
SUBDIR += py-more-itertools
+ SUBDIR += py-more-itertools5
SUBDIR += py-moto
SUBDIR += py-mox
SUBDIR += py-mox3
@@ -4714,6 +4738,7 @@
SUBDIR += py-patch
SUBDIR += py-patch-ng
SUBDIR += py-path.py
+ SUBDIR += py-pathlib
SUBDIR += py-pathlib2
SUBDIR += py-pathspec
SUBDIR += py-pathtools
@@ -5005,6 +5030,7 @@
SUBDIR += py-scikit-build
SUBDIR += py-scripttest
SUBDIR += py-selection
+ SUBDIR += py-selectors2
SUBDIR += py-semantic-version
SUBDIR += py-semver
SUBDIR += py-sentry-sdk
@@ -5021,12 +5047,14 @@
SUBDIR += py-sh
SUBDIR += py-shapely
SUBDIR += py-shellingham
+ SUBDIR += py-should_dsl
SUBDIR += py-simpleeval
SUBDIR += py-simplegeneric
SUBDIR += py-simplejson
SUBDIR += py-simpleparse
SUBDIR += py-simpletal
SUBDIR += py-simpy
+ SUBDIR += py-singledispatch
SUBDIR += py-sip
SUBDIR += py-six
SUBDIR += py-smmap
@@ -5052,6 +5080,7 @@
SUBDIR += py-stringcase
SUBDIR += py-structlog
SUBDIR += py-stsci.distutils
+ SUBDIR += py-subprocess32
SUBDIR += py-subversion
SUBDIR += py-sure
SUBDIR += py-swagger-spec-validator
@@ -5094,6 +5123,7 @@
SUBDIR += py-tooz
SUBDIR += py-tooz1
SUBDIR += py-toposort
+ SUBDIR += py-total-ordering
SUBDIR += py-tox
SUBDIR += py-traceback2
SUBDIR += py-traitlets
@@ -5113,6 +5143,7 @@
SUBDIR += py-txaio
SUBDIR += py-typechecks
SUBDIR += py-typed-ast
+ SUBDIR += py-typing
SUBDIR += py-typing-extensions
SUBDIR += py-typing-inspect
SUBDIR += py-tzlocal
@@ -5157,6 +5188,7 @@
SUBDIR += py-watchdog
SUBDIR += py-watchgod
SUBDIR += py-wcwidth
+ SUBDIR += py-weakrefmethod
SUBDIR += py-weblib
SUBDIR += py-websockets
SUBDIR += py-websockify
@@ -5327,6 +5359,7 @@
SUBDIR += rapidjson
SUBDIR += raylib
SUBDIR += rbenv
+ SUBDIR += rbtools
SUBDIR += rclint
SUBDIR += rcs
SUBDIR += rcs57
@@ -6715,6 +6748,7 @@
SUBDIR += stxxl
SUBDIR += subversion
SUBDIR += subversion-book
+ SUBDIR += subversion-lts
SUBDIR += subversive
SUBDIR += svk
SUBDIR += svn2git
@@ -6819,6 +6853,7 @@
SUBDIR += vcglib
SUBDIR += vera++
SUBDIR += vexcl
+ SUBDIR += viewvc
SUBDIR += viewvc-devel
SUBDIR += violet
SUBDIR += vitables
diff --git a/devel/bzr/Makefile b/devel/bzr/Makefile
new file mode 100644
index 000000000000..06318a137342
--- /dev/null
+++ b/devel/bzr/Makefile
@@ -0,0 +1,40 @@
+# Created by: Ulf Lilleengen
+# $FreeBSD$
+
+PORTNAME= bzr
+PORTVERSION= 2.7.0.6622
+CATEGORIES= devel
+MASTER_SITES= https://distfiles.over-yonder.net/bzr/
+
+MAINTAINER= fullermd@over-yonder.net
+COMMENT= Distributed version control system by Canonical
+
+LICENSE= GPLv2+
+LICENSE_FILE= ${WRKSRC}/COPYING.txt
+
+TEST_DEPENDS= ${PYTHON_PKGNAMEPREFIX}testtools>=0:devel/py-testtools@${PY_FLAVOR}
+
+OPTIONS_DEFINE= SFTP CA_BUNDLE
+SFTP_DESC= Paramiko for SFTP support
+CA_BUNDLE_DESC= Include CA bundle for SSL cert validation
+OPTIONS_DEFAULT= SFTP CA_BUNDLE
+
+SFTP_RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}paramiko>=0:security/py-paramiko@${PY_FLAVOR}
+CA_BUNDLE_RUN_DEPENDS= ${LOCALBASE}/share/certs/ca-root-nss.crt:security/ca_root_nss
+
+USES= gettext python:2.7 shebangfix tar:xz
+SHEBANG_FILES= bzr
+USE_PYTHON= distutils cython autoplist
+PYDISTUTILS_PKGNAME= bzr
+MAKE_ENV= BZR_LOG=/dev/null
+
+WRKSRC= ${WRKDIR}/bzr-2.7.1dev
+
+post-install:
+ ${INSTALL_MAN} ${WRKSRC}/bzr.1 ${STAGEDIR}${MAN1PREFIX}/man/man1
+ ${STRIP_CMD} ${STAGEDIR}${PYTHONPREFIX_SITELIBDIR}/bzrlib/*.so
+
+do-test:
+ cd ${WRKSRC} && ./bzr selftest
+
+.include <bsd.port.mk>
diff --git a/devel/bzr/distinfo b/devel/bzr/distinfo
new file mode 100644
index 000000000000..2cf2821b7312
--- /dev/null
+++ b/devel/bzr/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1567646065
+SHA256 (bzr-2.7.0.6622.tar.xz) = 9aafabb8984c4c962526e150a2dfbf2908462df6c64ae7f0c2d26e58e3c59637
+SIZE (bzr-2.7.0.6622.tar.xz) = 5840088
diff --git a/devel/bzr/files/patch-ssh_hostname b/devel/bzr/files/patch-ssh_hostname
new file mode 100644
index 000000000000..46eb86bfcbf5
--- /dev/null
+++ b/devel/bzr/files/patch-ssh_hostname
@@ -0,0 +1,167 @@
+Source: https://launchpadlibrarian.net/370632961/24_ssh_hostnames-lp1710979
+Description: Refuse to connect to ssh hostnames starting with a dash. Fixes LP:1710979
+Author: Jelmer Vernooij <jelmer@jelmer.uk>
+Origin: commit, Revision ID: jelmer@jelmer.uk-20170819145828-qk2p7qlg5j2fbsiz
+
+* Security fix: hostnames starting with a dash in bzr+ssh URLs
+ are now filtered out when using a subprocess SSH client.
+ .
+ Thanks to Augie Fackler for reporting.
+ (Jelmer Vernooij, #1710979)
+
+
+=== modified file 'bzrlib/tests/test_ssh_transport.py'
+---
+ bzrlib/tests/test_ssh_transport.py | 38 ++++++++++++++++++++++++++++++++++++-
+ bzrlib/transport/ssh.py | 16 +++++++++++++--
+ 2 files changed, 51 insertions(+), 3 deletions(-)
+
+Index: bzrlib/tests/test_ssh_transport.py
+===================================================================
+--- bzrlib/tests/test_ssh_transport.py
++++ bzrlib/tests/test_ssh_transport.py
+@@ -22,6 +22,7 @@ from bzrlib.transport.ssh import (
+ SSHCorpSubprocessVendor,
+ LSHSubprocessVendor,
+ SSHVendorManager,
++ StrangeHostname,
+ )
+
+
+@@ -161,6 +162,19 @@ class SSHVendorManagerTests(TestCase):
+
+ class SubprocessVendorsTests(TestCase):
+
++ def test_openssh_command_tricked(self):
++ vendor = OpenSSHSubprocessVendor()
++ self.assertEqual(
++ vendor._get_vendor_specific_argv(
++ "user", "-oProxyCommand=blah", 100, command=["bzr"]),
++ ["ssh", "-oForwardX11=no", "-oForwardAgent=no",
++ "-oClearAllForwardings=yes",
++ "-oNoHostAuthenticationForLocalhost=yes",
++ "-p", "100",
++ "-l", "user",
++ "--",
++ "-oProxyCommand=blah", "bzr"])
++
+ def test_openssh_command_arguments(self):
+ vendor = OpenSSHSubprocessVendor()
+ self.assertEqual(
+@@ -171,6 +185,7 @@ class SubprocessVendorsTests(TestCase):
+ "-oNoHostAuthenticationForLocalhost=yes",
+ "-p", "100",
+ "-l", "user",
++ "--",
+ "host", "bzr"]
+ )
+
+@@ -184,9 +199,16 @@ class SubprocessVendorsTests(TestCase):
+ "-oNoHostAuthenticationForLocalhost=yes",
+ "-p", "100",
+ "-l", "user",
+- "-s", "host", "sftp"]
++ "-s", "--", "host", "sftp"]
+ )
+
++ def test_openssh_command_tricked(self):
++ vendor = SSHCorpSubprocessVendor()
++ self.assertRaises(
++ StrangeHostname,
++ vendor._get_vendor_specific_argv,
++ "user", "-oProxyCommand=host", 100, command=["bzr"])
++
+ def test_sshcorp_command_arguments(self):
+ vendor = SSHCorpSubprocessVendor()
+ self.assertEqual(
+@@ -209,6 +231,13 @@ class SubprocessVendorsTests(TestCase):
+ "-s", "sftp", "host"]
+ )
+
++ def test_lsh_command_tricked(self):
++ vendor = LSHSubprocessVendor()
++ self.assertRaises(
++ StrangeHostname,
++ vendor._get_vendor_specific_argv,
++ "user", "-oProxyCommand=host", 100, command=["bzr"])
++
+ def test_lsh_command_arguments(self):
+ vendor = LSHSubprocessVendor()
+ self.assertEqual(
+@@ -231,6 +260,13 @@ class SubprocessVendorsTests(TestCase):
+ "--subsystem", "sftp", "host"]
+ )
+
++ def test_plink_command_tricked(self):
++ vendor = PLinkSubprocessVendor()
++ self.assertRaises(
++ StrangeHostname,
++ vendor._get_vendor_specific_argv,
++ "user", "-oProxyCommand=host", 100, command=["bzr"])
++
+ def test_plink_command_arguments(self):
+ vendor = PLinkSubprocessVendor()
+ self.assertEqual(
+Index: bzrlib/transport/ssh.py
+===================================================================
+--- bzrlib/transport/ssh.py
++++ bzrlib/transport/ssh.py
+@@ -46,6 +46,10 @@ else:
+ from paramiko.sftp_client import SFTPClient
+
+
++class StrangeHostname(errors.BzrError):
++ _fmt = "Refusing to connect to strange SSH hostname %(hostname)s"
++
++
+ SYSTEM_HOSTKEYS = {}
+ BZR_HOSTKEYS = {}
+
+@@ -360,6 +364,11 @@ class SubprocessVendor(SSHVendor):
+ # tests, but beware of using PIPE which may hang due to not being read.
+ _stderr_target = None
+
++ @staticmethod
++ def _check_hostname(arg):
++ if arg.startswith('-'):
++ raise StrangeHostname(hostname=arg)
++
+ def _connect(self, argv):
+ # Attempt to make a socketpair to use as stdin/stdout for the SSH
+ # subprocess. We prefer sockets to pipes because they support
+@@ -424,9 +433,9 @@ class OpenSSHSubprocessVendor(Subprocess
+ if username is not None:
+ args.extend(['-l', username])
+ if subsystem is not None:
+- args.extend(['-s', host, subsystem])
++ args.extend(['-s', '--', host, subsystem])
+ else:
+- args.extend([host] + command)
++ args.extend(['--', host] + command)
+ return args
+
+ register_ssh_vendor('openssh', OpenSSHSubprocessVendor())
+@@ -439,6 +448,7 @@ class SSHCorpSubprocessVendor(Subprocess
+
+ def _get_vendor_specific_argv(self, username, host, port, subsystem=None,
+ command=None):
++ self._check_hostname(host)
+ args = [self.executable_path, '-x']
+ if port is not None:
+ args.extend(['-p', str(port)])
+@@ -460,6 +470,7 @@ class LSHSubprocessVendor(SubprocessVend
+
+ def _get_vendor_specific_argv(self, username, host, port, subsystem=None,
+ command=None):
++ self._check_hostname(host)
+ args = [self.executable_path]
+ if port is not None:
+ args.extend(['-p', str(port)])
+@@ -481,6 +492,7 @@ class PLinkSubprocessVendor(SubprocessVe
+
+ def _get_vendor_specific_argv(self, username, host, port, subsystem=None,
+ command=None):
++ self._check_hostname(host)
+ args = [self.executable_path, '-x', '-a', '-ssh', '-2', '-batch']
+ if port is not None:
+ args.extend(['-P', str(port)])
diff --git a/devel/bzr/pkg-descr b/devel/bzr/pkg-descr
new file mode 100644
index 000000000000..3639a9d555a1
--- /dev/null
+++ b/devel/bzr/pkg-descr
@@ -0,0 +1,7 @@
+Bazaar (bzr) is a decentralized revision control system, designed to be
+easy for developers and end users alike. Bazaar is part of the GNU
+project to develop a complete free operating systemand a project of
+Canonical. Bazaar directly supports both central version control (like
+cvs/svn) and distributed version control (like git/hg).
+
+WWW: http://bazaar.canonical.com/
diff --git a/devel/chromium-gn/Makefile b/devel/chromium-gn/Makefile
new file mode 100644
index 000000000000..32a5b13c4118
--- /dev/null
+++ b/devel/chromium-gn/Makefile
@@ -0,0 +1,30 @@
+# $FreeBSD$
+
+CATEGORIES= devel www
+PKGNAMESUFFIX= -gn
+
+MAINTAINER= pizzamig@FreeBSD.org
+COMMENT= Gn meta build framework
+
+DEPRECATED= Uses deprecated version of python, use devel/gn instead
+EXPIRATION_DATE= 2020-12-31
+
+MASTERDIR= ${.CURDIR}/../../www/chromium
+
+BROKEN_FreeBSD_11_powerpc64= fails to compile: safe_math_clang_gcc_impl.h:132:45: '__builtin_subcb' was not declared in this scope
+BROKEN_FreeBSD_12_powerpc64= fails to compile: safe_math_clang_gcc_impl.h:132:45: '__builtin_subcb' was not declared in this scope
+
+BUILDTYPE= Release
+NO_BUILD= yes
+
+PLIST= ${.CURDIR}/pkg-plist
+PKGMESSAGE= ${.CURDIR}/pkg-message
+DESCR= ${.CURDIR}/pkg-descr
+PLIST_FILES= bin/gn
+
+GN_ONLY= yes
+
+do-install:
+ ${INSTALL_PROGRAM} ${WRKSRC}/out/${BUILDTYPE}/gn ${STAGEDIR}${PREFIX}/bin
+
+.include "${MASTERDIR}/Makefile"
diff --git a/devel/chromium-gn/pkg-descr b/devel/chromium-gn/pkg-descr
new file mode 100644
index 000000000000..17c2b7485725
--- /dev/null
+++ b/devel/chromium-gn/pkg-descr
@@ -0,0 +1,4 @@
+GN is a meta-build system that generates NinjaBuild files so that you can build
+Chromium with Ninja.
+
+WWW: https://chromium.googlesource.com/chromium/src/tools/gn/
diff --git a/devel/electron4/Makefile b/devel/electron4/Makefile
new file mode 100644
index 000000000000..d776ab38c90b
--- /dev/null
+++ b/devel/electron4/Makefile
@@ -0,0 +1,287 @@
+# $FreeBSD$
+
+PORTNAME= electron
+DISTVERSIONPREFIX= v
+DISTVERSION= ${ELECTRON_VER:S/-beta./.b/}
+PORTREVISION= 4
+CATEGORIES= devel
+MASTER_SITES= https://github.com/tagattie/FreeBSD-Electron/releases/download/v4.1.0/:chromium \
+ https://commondatastorage.googleapis.com/chromium-browser-official/:chromium_official \
+ https://commondatastorage.googleapis.com/chromium-nodejs/:chromium_node \
+ https://commondatastorage.googleapis.com/chromium-fonts/:chromium_testfonts
+PKGNAMESUFFIX= ${ELECTRON_VER_MAJOR}
+DISTFILES= chromium-${CHROMIUM_VER}${EXTRACT_SUFX}:chromium \
+ chromium-${CHROMIUM_OFFICIAL_VER}${EXTRACT_SUFX}:chromium_official \
+ ${CHROMIUM_NODE_MODULES_HASH}:chromium_node \
+ ${CHROMIUM_TEST_FONTS_HASH}:chromium_testfonts \
+ electron-npm-modules-${ELECTRON_VER}${EXTRACT_SUFX}:prefetch
+DIST_SUBDIR= ${PORTNAME}
+
+MAINTAINER= tagattie@FreeBSD.org
+COMMENT= Build cross-platform desktop apps with JavaScript, HTML, and CSS
+
+LICENSE= MIT
+LICENSE_FILE= ${WRKSRC}/electron/LICENSE
+
+FETCH_DEPENDS= npm-node10>0:www/npm-node10
+PATCH_DEPENDS= git:devel/git
+BUILD_DEPENDS= ${LOCALBASE}/bin/ar:devel/binutils \
+ gperf:devel/gperf \
+ yasm:devel/yasm \
+ ${LOCALBASE}/include/linux/videodev2.h:multimedia/v4l_compat \
+ node10>0:www/node10 \
+ npm-node10>0:www/npm-node10
+LIB_DEPENDS= libatk-bridge-2.0.so:accessibility/at-spi2-atk \
+ libsnappy.so:archivers/snappy \
+ libFLAC.so:audio/flac \
+ libopus.so:audio/opus \
+ libdbus-1.so:devel/dbus \
+ libnotify.so:devel/libnotify \
+ libpci.so:devel/libpci \
+ libnspr4.so:devel/nspr \
+ libdrm.so:graphics/libdrm \
+ libwebp.so:graphics/webp \
+ libavcodec.so:multimedia/ffmpeg \
+ libopenh264.so:multimedia/openh264 \
+ libfreetype.so:print/freetype2 \
+ libharfbuzz.so:print/harfbuzz \
+ libsecret-1.so:security/libsecret \
+ libnss3.so:security/nss \
+ libexpat.so:textproc/expat2 \
+ libfontconfig.so:x11-fonts/fontconfig
+RUN_DEPENDS= xdg-open:devel/xdg-utils
+TEST_DEPENDS= ${PYTHON_PKGNAMEPREFIX}python-dbusmock>0:devel/py-python-dbusmock@${PY_FLAVOR} \
+ npm-node10>0:www/npm-node10
+
+USES= bison dos2unix gettext-tools gl gnome jpeg localbase:ldflags \
+ ninja pkgconfig python:2.7,build,test tar:xz xorg
+
+USE_GITHUB= yes
+GH_TAGNAME= ${DISTVERSIONPREFIX}${ELECTRON_VER}
+# See ${WRKSRC}/electron/DEPS for GH_TAGNAME_node
+GH_TUPLE= electron:node:8bc5d171a0873c0ba49f9433798bc8b67399788c:node
+
+# Official chromium version containing "gn" which is known to work
+CHROMIUM_OFFICIAL_VER= 76.0.3809.132
+# See ${WRKSRC}/electron/DEPS for CHROMIUM_VER
+CHROMIUM_VER= 69.0.3497.128
+# See ${WRKSRC}/third_party/node/node_modules.tar.gz.sha1 for CHROMIUM_NODE_MODULES_HASH
+CHROMIUM_NODE_MODULES_HASH= 050c85d20f7cedd7f5c39533c1ba89dcdfa56a08
+# See ${WRKSRC}/third_party/test_fonts/test_fonts.tar.gz.sha1 for CHROMIUM_TEST_FONTS_HASH
+CHROMIUM_TEST_FONTS_HASH= a22de844e32a3f720d219e3911c3da3478039f89
+
+NO_WRKSUBDIR= yes
+WRKSRC_SUBDIR= src
+
+DATADIR= ${PREFIX}/share/${PORTNAME}${PKGNAMESUFFIX}
+
+DOS2UNIX_FILES= third_party/skia/third_party/vulkanmemoryallocator/include/vk_mem_alloc.h
+BINARY_ALIAS= python=${PYTHON_CMD}
+
+USE_XORG= x11 xcb xcomposite xcursor xdamage xext xfixes xi xrandr \
+ xrender xscrnsaver xtst
+USE_GL= gl glesv2
+USE_GNOME= atk cairo pango gdkpixbuf2 gtk30 libxml2 libxslt
+USE_LDCONFIG= ${DATADIR}
+
+GN_ARGS+= clang_use_chrome_plugins=false \
+ enable_hangout_services_extension=true \
+ enable_nacl=false \
+ enable_remoting=false \
+ fieldtrial_testing_like_official_build=true \
+ is_clang=true \
+ jumbo_file_merge_limit=8 \
+ toolkit_views=true \
+ treat_warnings_as_errors=false \
+ use_allocator="none" \
+ use_allocator_shim=false \
+ use_aura=true \
+ use_bundled_fontconfig=false \
+ use_custom_libcxx=false \
+ use_gnome_keyring=false \
+ use_jumbo_build=true \
+ use_lld=true \
+ use_sysroot=false \
+ use_system_freetype=true \
+ use_system_harfbuzz=true \
+ use_system_libjpeg=true \
+ extra_cxxflags="${CXXFLAGS}" \
+ extra_ldflags="${LDFLAGS}"
+GN_BOOTSTRAP_FLAGS= --no-clean --no-rebuild --skip-generate-buildfiles
+
+ALL_TARGET= electron third_party/electron_node:headers
+MAKE_ARGS= -C out/${BUILDTYPE}
+MAKE_ENV+= C_INCLUDE_PATH=${LOCALBASE}/include \
+ CPLUS_INCLUDE_PATH=${LOCALBASE}/include
+
+OPTIONS_DEFINE= CUPS DEBUG DIST DRIVER KERBEROS
+DIST_DESC= Build distribution zip files
+DRIVER_DESC= Install chromedriver
+OPTIONS_GROUP= AUDIO
+OPTIONS_GROUP_AUDIO= ALSA PULSEAUDIO
+OPTIONS_DEFAULT= CUPS DRIVER KERBEROS ALSA
+OPTIONS_SUB= yes
+
+ALSA_LIB_DEPENDS= libasound.so:audio/alsa-lib
+ALSA_RUN_DEPENDS= ${LOCALBASE}/lib/alsa-lib/libasound_module_pcm_oss.so:audio/alsa-plugins
+ALSA_VARS= GN_ARGS+=use_alsa=true
+ALSA_VARS_OFF= GN_ARGS+=use_alsa=false
+
+CUPS_LIB_DEPENDS= libcups.so:print/cups
+CUPS_VARS= GN_ARGS+=use_cups=true
+CUPS_VARS_OFF= GN_ARGS+=use_cups=false
+
+DEBUG_VARS= BUILDTYPE=Debug \
+ GN_ARGS+=is_component_build=false
+DEBUG_VARS_OFF= BUILDTYPE=Release
+
+DIST_IMPLIES= DRIVER
+
+DRIVER_ALL_TARGET= chromedriver
+
+KERBEROS_VARS= GN_ARGS+=use_kerberos=true
+KERBEROS_VARS_OFF= GN_ARGS+=use_kerberos=false
+
+PULSEAUDIO_LIB_DEPENDS= libpulse.so:audio/pulseaudio
+PULSEAUDIO_VARS= GN_ARGS+=use_pulseaudio=true
+PULSEAUDIO_VARS_OFF= GN_ARGS+=use_pulseaudio=false
+
+POST_BUILD_TARGETS= licenses version
+POST_BUILD_DIST_TARGETS= electron_dist_zip electron_chromedriver_zip electron_mksnapshot_zip
+
+NPM_TIMESTAMP= 1573298347
+
+PLIST_SUB= ELECTRON_VER=${ELECTRON_VER} \
+ ELECTRON_VER_MAJOR=${ELECTRON_VER_MAJOR}
+
+.include "Makefile.version"
+.include "Makefile.tests"
+.include <bsd.port.pre.mk>
+
+.if ${ARCH} == "amd64"
+PLIST_SUB+= AMD64=""
+.else
+PLIST_SUB+= AMD64="@comment "
+.endif
+
+.if ${ARCH} == "i386"
+PLIST_SUB+= I386=""
+.else
+PLIST_SUB+= I386="@comment "
+.endif
+
+pre-fetch:
+ @${MKDIR} ${DISTDIR}/${DIST_SUBDIR}
+ if [ ! -f ${DISTDIR}/${DIST_SUBDIR}/electron-npm-modules-${ELECTRON_VER}${EXTRACT_SUFX} ]; \
+ then ${MKDIR} ${WRKDIR}/npm-cache; \
+ ${CP} ${FILESDIR}/package.json \
+ ${FILESDIR}/package-lock.json ${WRKDIR}/npm-cache; \
+ cd ${WRKDIR}/npm-cache && \
+ ${SETENV} HOME=${WRKDIR} npm ci --verbose --no-progress && \
+ ${MV} node_modules npm_modules; \
+ ${MTREE_CMD} -cbnSp npm_modules | ${MTREE_CMD} -C | ${SED} \
+ -e 's:time=[0-9.]*:time=${NPM_TIMESTAMP}.000000000:' \
+ -e 's:\([gu]id\)=[0-9]*:\1=0:g' \
+ -e 's:flags=.*:flags=none:' \
+ -e 's:^\.:./npm_modules:' > npm_modules.mtree; \
+ ${TAR} cJf ${DISTDIR}/${DIST_SUBDIR}/electron-npm-modules-${ELECTRON_VER}${EXTRACT_SUFX} \
+ @npm_modules.mtree; \
+ ${RM} -r ${WRKDIR}/npm-cache; \
+ fi
+
+post-extract:
+ ${MV} ${WRKDIR}/${PORTNAME}-${ELECTRON_VER}/chromium-${CHROMIUM_VER} ${WRKSRC}
+ ${RM} -r ${WRKSRC}/tools/gn
+ ${MV} ${WRKDIR}/${PORTNAME}-${ELECTRON_VER}/chromium-${CHROMIUM_OFFICIAL_VER}/tools/gn \
+ ${WRKSRC}/tools/gn
+ ${MV} ${WRKDIR}/${PORTNAME}-${ELECTRON_VER}/${PORTNAME}-${ELECTRON_VER} ${WRKSRC}/electron
+ ${MV} ${WRKDIR}/${PORTNAME}-${ELECTRON_VER}/${GH_PROJECT_node}-${GH_TAGNAME_node} \
+ ${WRKSRC}/third_party/${GH_ACCOUNT_node}_${GH_PROJECT_node}
+ ${MV} ${WRKDIR}/${PORTNAME}-${ELECTRON_VER}/node_modules ${WRKSRC}/third_party/node
+ ${MV} ${WRKDIR}/${PORTNAME}-${ELECTRON_VER}/test_fonts ${WRKSRC}/third_party/test_fonts
+ ${MV} ${WRKDIR}/${PORTNAME}-${ELECTRON_VER}/npm_modules ${WRKSRC}/electron/node_modules
+
+pre-patch:
+ ${SH} ${FILESDIR}/apply-electron-patches.sh ${WRKSRC}
+ # ${FIND} ${WRKSRC} -type f -name '*.orig' -print -delete
+ # ${FIND} ${WRKSRC} -type f -name '*~' -print -delete
+
+pre-configure:
+ # We used to remove bundled libraries to be sure that chromium uses
+ # system libraries and not shipped ones.
+ # cd ${WRKSRC} && ${PYTHON_CMD} \
+ #./build/linux/unbundle/remove_bundled_libraries.py [list of preserved]
+ cd ${WRKSRC} && ${SETENV} ${CONFIGURE_ENV} ${PYTHON_CMD} \
+ ./build/linux/unbundle/replace_gn_files.py --system-libraries \
+ ffmpeg flac freetype harfbuzz-ng libdrm libusb libwebp libxml \
+ libxslt openh264 opus snappy yasm || ${FALSE}
+
+do-configure:
+ # GN generator bootstrapping and generating ninja files
+ cd ${WRKSRC} && ${SETENV} ${CONFIGURE_ENV} CC=${CC} CXX=${CXX} LD=${CXX} \
+ READELF=${READELF} AR=${AR} NM=${NM} ${PYTHON_CMD} \
+ ./tools/gn/bootstrap/bootstrap.py ${GN_BOOTSTRAP_FLAGS}
+ cd ${WRKSRC} && ${SETENV} ${CONFIGURE_ENV} ./out/${BUILDTYPE}/gn gen out/${BUILDTYPE} \
+ --args='import("//electron/build/args/${BUILDTYPE:tl}.gn") ${GN_ARGS}'
+ # Setup nodejs dependency
+ ${MKDIR} ${WRKSRC}/third_party/node/freebsd/node-freebsd-x64/bin
+ ${LN} -sf ${LOCALBASE}/bin/node ${WRKSRC}/third_party/node/freebsd/node-freebsd-x64/bin/node
+
+post-build:
+ cd ${WRKSRC} && ${SETENV} ${MAKE_ENV} \
+ ${MAKE_CMD} ${MAKE_ARGS} ${POST_BUILD_TARGETS}
+
+post-build-DIST-on:
+ cd ${WRKSRC} && ${SETENV} ${MAKE_ENV} \
+ ${MAKE_CMD} ${MAKE_ARGS} ${POST_BUILD_DIST_TARGETS}
+ cd ${WRKSRC}/out/${BUILDTYPE} && \
+ ${CP} chromedriver.zip chromedriver-v${ELECTRON_VER}-freebsd-${ARCH:S/amd64/x64/:S/i386/ia32/}.zip && \
+ ${CP} dist.zip electron-v${ELECTRON_VER}-freebsd-${ARCH:S/amd64/x64/:S/i386/ia32/}.zip && \
+ ${CP} mksnapshot.zip mksnapshot-v${ELECTRON_VER}-freebsd-${ARCH:S/amd64/x64/:S/i386/ia32/}.zip && \
+ ${SHA256} -r *-v${ELECTRON_VER}-freebsd-*.zip | ${SED} -e 's/ / */' > SHASUMS256.txt
+
+do-install:
+ ${MKDIR} ${STAGEDIR}${DATADIR}
+.for f in electron mksnapshot v8_context_snapshot_generator
+ ${INSTALL_PROGRAM} ${WRKSRC}/out/${BUILDTYPE}/${f} ${STAGEDIR}${DATADIR}
+.endfor
+.for f in libEGL.so libGLESv2.so
+ ${INSTALL_LIB} ${WRKSRC}/out/${BUILDTYPE}/${f} ${STAGEDIR}${DATADIR}
+.endfor
+ ${MKDIR} ${STAGEDIR}${DATADIR}/swiftshader
+.for f in libEGL.so libGLESv2.so
+ ${INSTALL_LIB} ${WRKSRC}/out/${BUILDTYPE}/swiftshader/${f} ${STAGEDIR}${DATADIR}/swiftshader
+.endfor
+.for f in LICENSE LICENSES.chromium.html icudtl.dat natives_blob.bin snapshot_blob.bin v8_context_snapshot.bin version
+ ${INSTALL_DATA} ${WRKSRC}/out/${BUILDTYPE}/${f} ${STAGEDIR}${DATADIR}
+.endfor
+.for f in chrome_100_percent.pak chrome_200_percent.pak resources.pak
+ ${INSTALL_DATA} ${WRKSRC}/out/${BUILDTYPE}/${f} ${STAGEDIR}${DATADIR}
+.endfor
+ ${MKDIR} ${STAGEDIR}${DATADIR}/locales
+ ${INSTALL_DATA} ${WRKSRC}/out/${BUILDTYPE}/locales/*.pak ${STAGEDIR}${DATADIR}/locales
+ ${MKDIR} ${STAGEDIR}${DATADIR}/resources
+.for f in default_app.asar electron.asar
+ ${INSTALL_DATA} ${WRKSRC}/out/${BUILDTYPE}/resources/${f} ${STAGEDIR}${DATADIR}/resources
+.endfor
+ cd ${WRKSRC}/out/${BUILDTYPE}/gen && ${COPYTREE_SHARE} node_headers ${STAGEDIR}${DATADIR}
+ ${RLN} ${STAGEDIR}${DATADIR}/electron ${STAGEDIR}${PREFIX}/bin/electron${PKGNAMESUFFIX}
+
+post-install-DIST-on:
+ ${MKDIR} ${STAGEDIR}${DATADIR}/releases
+ ${INSTALL_DATA} ${WRKSRC}/out/${BUILDTYPE}/SHASUMS256.txt ${STAGEDIR}${DATADIR}/releases
+ ${INSTALL_DATA} ${WRKSRC}/out/${BUILDTYPE}/*-v${ELECTRON_VER}-freebsd-*.zip ${STAGEDIR}${DATADIR}/releases
+
+post-install-DRIVER-on:
+ ${INSTALL_PROGRAM} ${WRKSRC}/out/${BUILDTYPE}/chromedriver ${STAGEDIR}${DATADIR}
+
+do-test:
+ # Note 1: "npm install" will run before actual tests are executed
+ # Note 2: Xvfb or something similar is necessary for headless testing
+.for t in ${TEST_MODULES}
+ cd ${WRKSRC}/electron && \
+ ${SETENV} ${TEST_ENV} ELECTRON_OUT_DIR=${BUILDTYPE} \
+ npm run test -- --ci -g '${t}' || ${TRUE}
+.endfor
+
+.include <bsd.port.post.mk>
diff --git a/devel/electron4/Makefile.tests b/devel/electron4/Makefile.tests
new file mode 100644
index 000000000000..1fab96da0380
--- /dev/null
+++ b/devel/electron4/Makefile.tests
@@ -0,0 +1,49 @@
+# $FreeBSD$
+
+TEST_MODULES= electron\ module \
+ app\ module \
+ autoUpdater\ module \
+ BrowserView\ module \
+ BrowserWindow\ with\ affinity\ module \
+ BrowserWindow\ module \
+ CallbacksRegistry\ module \
+ clipboard\ module \
+ contentTracing \
+ debugger\ module \
+ deprecations \
+ desktopCapturer \
+ dialog\ module \
+ globalShortcut\ module \
+ ipc\ main\ module \
+ ipc\ renderer\ module \
+ MenuItems \
+ Menu\ module \
+ nativeImage\ module \
+ netLog\ module \
+ net\ module \
+ Notification\ module \
+ powerMonitor \
+ powerSaveBlocker\ module \
+ process\ module \
+ protocol\ module \
+ remote\ module \
+ screen\ module \
+ session\ module \
+ shell\ module \
+ systemPreferences\ module \
+ TouchBar\ module \
+ tray\ module \
+ View \
+ webContents\ module \
+ WebContentsView \
+ webFrame\ module \
+ webRequest\ module \
+ asar\ package \
+ chromium\ feature \
+ modules\ support \
+ node\ feature \
+ security\ warnings \
+ <webview>\ tag
+
+# crashReporter\ module \
+# inAppPurchase\ module \
diff --git a/devel/electron4/Makefile.version b/devel/electron4/Makefile.version
new file mode 100644
index 000000000000..71adc1e98875
--- /dev/null
+++ b/devel/electron4/Makefile.version
@@ -0,0 +1,4 @@
+# $FreeBSD$
+
+ELECTRON_VER= 4.2.12
+ELECTRON_VER_MAJOR= ${ELECTRON_VER:C/\..*//}
diff --git a/devel/electron4/distinfo b/devel/electron4/distinfo
new file mode 100644
index 000000000000..093dd4f754ac
--- /dev/null
+++ b/devel/electron4/distinfo
@@ -0,0 +1,15 @@
+TIMESTAMP = 1573298479
+SHA256 (electron/chromium-69.0.3497.128.tar.xz) = af2b0ee2d16255fd28c3ef23a1481eebe58d6604f238b154594072e17ac643ed
+SIZE (electron/chromium-69.0.3497.128.tar.xz) = 1363607512
+SHA256 (electron/chromium-76.0.3809.132.tar.xz) = d54e4640b5e399d170dffbc5bcff65157eb1b29314b94b5d808f727d9ce45241
+SIZE (electron/chromium-76.0.3809.132.tar.xz) = 728899912
+SHA256 (electron/050c85d20f7cedd7f5c39533c1ba89dcdfa56a08) = d2e12fe5e144628f70536d1fea30fa817b7639f067e69f6a9e926f7311c9ec00
+SIZE (electron/050c85d20f7cedd7f5c39533c1ba89dcdfa56a08) = 4535767
+SHA256 (electron/electron-npm-modules-4.2.12.tar.xz) = b738e5394f47902a5a3f37303c32e838541707b38e4cdb8d29691c582280b809
+SIZE (electron/electron-npm-modules-4.2.12.tar.xz) = 15031340
+SHA256 (electron/a22de844e32a3f720d219e3911c3da3478039f89) = 6e331676d098a57c53c1250821dc47ed84c47f823901bf30c4704df90d8a34be
+SIZE (electron/a22de844e32a3f720d219e3911c3da3478039f89) = 17469927
+SHA256 (electron/electron-electron-v4.2.12_GH0.tar.gz) = cb8f69579f0db819756d931f2d1dc4fedc6469a5496ff7684d1bd699534618a9
+SIZE (electron/electron-electron-v4.2.12_GH0.tar.gz) = 6531419
+SHA256 (electron/electron-node-8bc5d171a0873c0ba49f9433798bc8b67399788c_GH0.tar.gz) = bc94083d3904643f17181c83db83a1c7d6557044e957185d0d73d88e82472b90
+SIZE (electron/electron-node-8bc5d171a0873c0ba49f9433798bc8b67399788c_GH0.tar.gz) = 56885474
diff --git a/devel/electron4/files/apply-electron-patches.sh b/devel/electron4/files/apply-electron-patches.sh
new file mode 100644
index 000000000000..300c8166f223
--- /dev/null
+++ b/devel/electron4/files/apply-electron-patches.sh
@@ -0,0 +1,20 @@
+#! /bin/sh
+
+PATH=/bin:/usr/bin:/usr/local/bin
+
+PATCH_CMD="git apply"
+#PATCH_FLAGS="--numstat --check" # for debugging
+PATCH_FLAGS="--verbose --reject"
+
+WRKSRC=$1
+PATCH_CONF=${WRKSRC}/electron/patches/common/config.json
+
+PATCHD_REPOD_PAIRS=$(sed -e '1d; $d; /^$/d; s/[",]//g; s/: */:/' "${PATCH_CONF}")
+for prp in ${PATCHD_REPOD_PAIRS}; do
+ pd=$(echo "${prp}" | awk -F: '{print $1}' | sed -e 's/src/./')
+ rd=$(echo "${prp}" | awk -F: '{print $2}' | sed -e 's/src/./')
+ (cd "${WRKSRC}/${rd}" && \
+ while read -r p; do
+ ${PATCH_CMD} ${PATCH_FLAGS} "${WRKSRC}/${pd}/${p}"
+ done < "${WRKSRC}/${pd}/.patches")
+done
diff --git a/devel/electron4/files/package-lock.json b/devel/electron4/files/package-lock.json
new file mode 100644
index 000000000000..56b3f51b7254
--- /dev/null
+++ b/devel/electron4/files/package-lock.json
@@ -0,0 +1,12235 @@
+{
+ "name": "electron",
+ "version": "4.2.12",
+ "lockfileVersion": 1,
+ "requires": true,
+ "dependencies": {
+ "@babel/code-frame": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0.tgz",
+ "integrity": "sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA==",
+ "dev": true,
+ "requires": {
+ "@babel/highlight": "^7.0.0"
+ }
+ },
+ "@babel/highlight": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0.tgz",
+ "integrity": "sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw==",
+ "dev": true,
+ "requires": {
+ "chalk": "^2.0.0",
+ "esutils": "^2.0.2",
+ "js-tokens": "^4.0.0"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "dev": true,
+ "requires": {
+ "color-convert": "^1.9.0"
+ }
+ },
+ "chalk": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz",
+ "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ }
+ },
+ "has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
+ "dev": true
+ },
+ "js-tokens": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
+ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^3.0.0"
+ }
+ }
+ }
+ },
+ "@mrmlnc/readdir-enhanced": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz",
+ "integrity": "sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==",
+ "dev": true,
+ "requires": {
+ "call-me-maybe": "^1.0.1",
+ "glob-to-regexp": "^0.3.0"
+ }
+ },
+ "@nodelib/fs.stat": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.2.tgz",
+ "integrity": "sha512-yprFYuno9FtNsSHVlSWd+nRlmGoAbqbeCwOryP6sC/zoCjhpArcRMYp19EvpSUSizJAlsXEwJv+wcWS9XaXdMw==",
+ "dev": true
+ },
+ "@types/node": {
+ "version": "7.0.70",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-7.0.70.tgz",
+ "integrity": "sha512-bAcW/1aM8/s5iFKhRpu/YJiQf/b1ZwnMRqqsWRCmAqEDQF2zY8Ez3Iu9AcZKFKc3vCJc8KJVpJ6Pn54sJ1BvXQ==",
+ "dev": true
+ },
+ "JSONStream": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.2.tgz",
+ "integrity": "sha1-wQI3G27Dp887hHygDCC7D85Mbeo=",
+ "dev": true,
+ "requires": {
+ "jsonparse": "^1.2.0",
+ "through": ">=2.2.7 <3"
+ }
+ },
+ "abab": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/abab/-/abab-1.0.4.tgz",
+ "integrity": "sha1-X6rZwsB/YN12dw9xzwJbYqY8/U4=",
+ "dev": true,
+ "optional": true
+ },
+ "abbrev": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
+ "integrity": "sha1-+PLIh60Qv2f2NPAFtph/7TF5qsg=",
+ "dev": true
+ },
+ "accepts": {
+ "version": "1.3.5",
+ "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.5.tgz",
+ "integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I=",
+ "dev": true,
+ "requires": {
+ "mime-types": "~2.1.18",
+ "negotiator": "0.6.1"
+ }
+ },
+ "acorn": {
+ "version": "4.0.13",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz",
+ "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=",
+ "dev": true
+ },
+ "acorn-globals": {
+ "version": "1.0.9",
+ "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-1.0.9.tgz",
+ "integrity": "sha1-VbtemGkVB7dFedBRNBMhfDgMVM8=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "acorn": "^2.1.0"
+ },
+ "dependencies": {
+ "acorn": {
+ "version": "2.7.0",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-2.7.0.tgz",
+ "integrity": "sha1-q259nYhqrKiwhbwzEreaGYQz8Oc=",
+ "dev": true,
+ "optional": true
+ }
+ }
+ },
+ "acorn-jsx": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-4.1.1.tgz",
+ "integrity": "sha512-JY+iV6r+cO21KtntVvFkD+iqjtdpRUpGqKWgfkCdZq1R+kbreEl8EcdcJR4SmiIgsIQT33s6QzheQ9a275Q8xw==",
+ "dev": true,
+ "requires": {
+ "acorn": "^5.0.3"
+ },
+ "dependencies": {
+ "acorn": {
+ "version": "5.7.3",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.3.tgz",
+ "integrity": "sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==",
+ "dev": true
+ }
+ }
+ },
+ "acorn-node": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/acorn-node/-/acorn-node-1.3.0.tgz",
+ "integrity": "sha512-efP54n3d1aLfjL2UMdaXa6DsswwzJeI5rqhbFvXMrKiJ6eJFpf+7R0zN7t8IC+XKn2YOAFAv6xbBNgHUkoHWLw==",
+ "dev": true,
+ "requires": {
+ "acorn": "^5.4.1",
+ "xtend": "^4.0.1"
+ },
+ "dependencies": {
+ "acorn": {
+ "version": "5.5.3",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.5.3.tgz",
+ "integrity": "sha512-jd5MkIUlbbmb07nXH0DT3y7rDVtkzDi4XZOUVWAer8ajmF/DTSSbl5oNFyDOl/OXA33Bl79+ypHhl2pN20VeOQ==",
+ "dev": true
+ }
+ }
+ },
+ "add-stream": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/add-stream/-/add-stream-1.0.0.tgz",
+ "integrity": "sha1-anmQQ3ynNtXhKI25K9MmbV9csqo=",
+ "dev": true
+ },
+ "address": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/address/-/address-1.0.3.tgz",
+ "integrity": "sha512-z55ocwKBRLryBs394Sm3ushTtBeg6VAeuku7utSoSnsJKvKcnXFIyC6vh27n3rXyxSgkJBBCAvyOn7gSUcTYjg==",
+ "dev": true
+ },
+ "agent-base": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-2.1.1.tgz",
+ "integrity": "sha1-1t4Q1a9hMtW9aSQn1G/FOFOQlMc=",
+ "dev": true,
+ "requires": {
+ "extend": "~3.0.0",
+ "semver": "~5.0.1"
+ },
+ "dependencies": {
+ "semver": {
+ "version": "5.0.3",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.0.3.tgz",
+ "integrity": "sha1-d0Zt5YnNXTyV8TiqeLxWmjy10no=",
+ "dev": true
+ }
+ }
+ },
+ "ajv": {
+ "version": "5.5.2",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz",
+ "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=",
+ "dev": true,
+ "requires": {
+ "co": "^4.6.0",
+ "fast-deep-equal": "^1.0.0",
+ "fast-json-stable-stringify": "^2.0.0",
+ "json-schema-traverse": "^0.3.0"
+ }
+ },
+ "ajv-keywords": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.2.0.tgz",
+ "integrity": "sha1-6GuBnGAs+IIa1jdBNpjx3sAhhHo=",
+ "dev": true
+ },
+ "aliasify": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/aliasify/-/aliasify-2.1.0.tgz",
+ "integrity": "sha1-fDCCW5RQueYYW6J1M+r24gZ9S0I=",
+ "dev": true,
+ "requires": {
+ "browserify-transform-tools": "~1.7.0"
+ }
+ },
+ "align-text": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz",
+ "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "kind-of": "^3.0.2",
+ "longest": "^1.0.1",
+ "repeat-string": "^1.5.2"
+ }
+ },
+ "amdefine": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz",
+ "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=",
+ "dev": true
+ },
+ "ansi-align": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-2.0.0.tgz",
+ "integrity": "sha1-w2rsy6VjuJzrVW82kPCx2eNUf38=",
+ "dev": true,
+ "requires": {
+ "string-width": "^2.0.0"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
+ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
+ "dev": true
+ },
+ "is-fullwidth-code-point": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+ "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
+ "dev": true
+ },
+ "string-width": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
+ "integrity": "sha1-q5Pyeo3BPSjKyBXEYhQ6bZASrp4=",
+ "dev": true,
+ "requires": {
+ "is-fullwidth-code-point": "^2.0.0",
+ "strip-ansi": "^4.0.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
+ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^3.0.0"
+ }
+ }
+ }
+ },
+ "ansi-escapes": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.1.0.tgz",
+ "integrity": "sha512-UgAb8H9D41AQnu/PbWlCofQVcnV4Gs2bBJi9eZPxfU/hgglFh3SMDMENRIqdr7H6XFnXdoknctFByVsCOotTVw==",
+ "dev": true
+ },
+ "ansi-regex": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
+ "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
+ "dev": true
+ },
+ "ansi-styles": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
+ "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
+ "dev": true
+ },
+ "anymatch": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz",
+ "integrity": "sha1-VT3Lj5HjyImEXf26NMd3IbkLnXo=",
+ "dev": true,
+ "requires": {
+ "micromatch": "^2.1.5",
+ "normalize-path": "^2.0.0"
+ }
+ },
+ "arch": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/arch/-/arch-2.1.1.tgz",
+ "integrity": "sha512-BLM56aPo9vLLFVa8+/+pJLnrZ7QGGTVHWsCwieAWT9o9K8UeGaQbzZbGoabWLOo2ksBCztoXdqBZBplqLDDCSg==",
+ "dev": true
+ },
+ "arg": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/arg/-/arg-2.0.0.tgz",
+ "integrity": "sha512-XxNTUzKnz1ctK3ZIcI2XUPlD96wbHP2nGqkPKpvk/HNRlPveYrXIVSTk9m3LcqOgDPg3B1nMvdV/K8wZd7PG4w==",
+ "dev": true
+ },
+ "argparse": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
+ "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
+ "dev": true,
+ "requires": {
+ "sprintf-js": "~1.0.2"
+ }
+ },
+ "args": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/args/-/args-4.0.0.tgz",
+ "integrity": "sha512-4b7lVF58nlo7sNtq8s2OueroOY/UHn0Nt/NVjsx9zn28u6yDVb9bQ/uy/5jKtHCbUDil4MlMyDLF5+OHEgnTug==",
+ "dev": true,
+ "requires": {
+ "camelcase": "5.0.0",
+ "chalk": "2.3.2",
+ "leven": "2.1.0",
+ "mri": "1.1.0"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "dev": true,
+ "requires": {
+ "color-convert": "^1.9.0"
+ }
+ },
+ "camelcase": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.0.0.tgz",
+ "integrity": "sha512-faqwZqnWxbxn+F1d399ygeamQNy3lPp/H9H6rNrqYh4FSVCtcY+3cub1MxA8o9mDd55mM8Aghuu/kuyYA6VTsA==",
+ "dev": true
+ },
+ "chalk": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.2.tgz",
+ "integrity": "sha512-ZM4j2/ld/YZDc3Ma8PgN7gyAk+kHMMMyzLNryCPGhWrsfAuDVeuid5bpRFTDgMH9JBK2lA4dyyAkkZYF/WcqDQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ }
+ },
+ "has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "5.4.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz",
+ "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^3.0.0"
+ }
+ }
+ }
+ },
+ "arr-diff": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz",
+ "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=",
+ "dev": true,
+ "requires": {
+ "arr-flatten": "^1.0.1"
+ }
+ },
+ "arr-flatten": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz",
+ "integrity": "sha1-NgSLv/TntH4TZkQxbJlmnqWukfE=",
+ "dev": true
+ },
+ "arr-union": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz",
+ "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=",
+ "dev": true
+ },
+ "array-filter": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-0.0.1.tgz",
+ "integrity": "sha1-fajPLiZijtcygDWB/SH2fKzS7uw=",
+ "dev": true
+ },
+ "array-find-index": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz",
+ "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=",
+ "dev": true
+ },
+ "array-ify": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz",
+ "integrity": "sha1-nlKHYrSpBmrRY6aWKjZEGOlibs4=",
+ "dev": true
+ },
+ "array-includes": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.0.3.tgz",
+ "integrity": "sha1-GEtI9i2S10UrsxsyMWXH+L0CJm0=",
+ "dev": true,
+ "requires": {
+ "define-properties": "^1.1.2",
+ "es-abstract": "^1.7.0"
+ }
+ },
+ "array-iterate": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/array-iterate/-/array-iterate-1.1.2.tgz",
+ "integrity": "sha512-1hWSHTIlG/8wtYD+PPX5AOBtKWngpDFjrsrHgZpe+JdgNGz0udYu6ZIkAa/xuenIUEqFv7DvE2Yr60jxweJSrQ==",
+ "dev": true
+ },
+ "array-map": {
+ "version": "0.0.0",
+ "resolved": "https://registry.npmjs.org/array-map/-/array-map-0.0.0.tgz",
+ "integrity": "sha1-iKK6tz0c97zVwbEYoAP2b2ZfpmI=",
+ "dev": true
+ },
+ "array-reduce": {
+ "version": "0.0.0",
+ "resolved": "https://registry.npmjs.org/array-reduce/-/array-reduce-0.0.0.tgz",
+ "integrity": "sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys=",
+ "dev": true
+ },
+ "array-union": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz",
+ "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=",
+ "dev": true,
+ "requires": {
+ "array-uniq": "^1.0.1"
+ }
+ },
+ "array-uniq": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz",
+ "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=",
+ "dev": true
+ },
+ "array-unique": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz",
+ "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=",
+ "dev": true
+ },
+ "arrify": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz",
+ "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=",
+ "dev": true
+ },
+ "asar": {
+ "version": "0.11.0",
+ "resolved": "https://registry.npmjs.org/asar/-/asar-0.11.0.tgz",
+ "integrity": "sha1-uSbnksMV+MBIxDNx4yWwnJenZGQ=",
+ "dev": true,
+ "requires": {
+ "chromium-pickle-js": "^0.1.0",
+ "commander": "^2.9.0",
+ "cuint": "^0.2.1",
+ "glob": "^6.0.4",
+ "minimatch": "^3.0.0",
+ "mkdirp": "^0.5.0",
+ "mksnapshot": "^0.3.0"
+ }
+ },
+ "asn1": {
+ "version": "0.2.4",
+ "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz",
+ "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==",
+ "dev": true,
+ "requires": {
+ "safer-buffer": "~2.1.0"
+ }
+ },
+ "asn1.js": {
+ "version": "4.10.1",
+ "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz",
+ "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==",
+ "dev": true,
+ "requires": {
+ "bn.js": "^4.0.0",
+ "inherits": "^2.0.1",
+ "minimalistic-assert": "^1.0.0"
+ }
+ },
+ "assert": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz",
+ "integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=",
+ "dev": true,
+ "requires": {
+ "util": "0.10.3"
+ }
+ },
+ "assert-plus": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
+ "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
+ "dev": true
+ },
+ "assign-symbols": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz",
+ "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=",
+ "dev": true
+ },
+ "astw": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/astw/-/astw-2.2.0.tgz",
+ "integrity": "sha1-e9QXhNMkk5h66yOba04cV6hzuRc=",
+ "dev": true,
+ "requires": {
+ "acorn": "^4.0.3"
+ }
+ },
+ "async": {
+ "version": "1.5.2",
+ "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz",
+ "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=",
+ "dev": true
+ },
+ "async-each": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz",
+ "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=",
+ "dev": true
+ },
+ "asynckit": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
+ "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=",
+ "dev": true
+ },
+ "atob": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz",
+ "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==",
+ "dev": true
+ },
+ "aws-sign2": {
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",
+ "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=",
+ "dev": true
+ },
+ "aws4": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz",
+ "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==",
+ "dev": true
+ },
+ "babel-code-frame": {
+ "version": "6.26.0",
+ "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz",
+ "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=",
+ "dev": true,
+ "requires": {
+ "chalk": "^1.1.3",
+ "esutils": "^2.0.2",
+ "js-tokens": "^3.0.2"
+ }
+ },
+ "bail": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/bail/-/bail-1.0.3.tgz",
+ "integrity": "sha512-1X8CnjFVQ+a+KW36uBNMTU5s8+v5FzeqrP7hTG5aTb4aPreSbZJlhwPon9VKMuEVgV++JM+SQrALY3kr7eswdg==",
+ "dev": true
+ },
+ "balanced-match": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
+ "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
+ "dev": true
+ },
+ "base": {
+ "version": "0.11.2",
+ "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz",
+ "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==",
+ "dev": true,
+ "requires": {
+ "cache-base": "^1.0.1",
+ "class-utils": "^0.3.5",
+ "component-emitter": "^1.2.1",
+ "define-property": "^1.0.0",
+ "isobject": "^3.0.1",
+ "mixin-deep": "^1.2.0",
+ "pascalcase": "^0.1.1"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
+ "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "^1.0.0"
+ }
+ },
+ "is-accessor-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
+ "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^6.0.0"
+ }
+ },
+ "is-data-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
+ "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^6.0.0"
+ }
+ },
+ "is-descriptor": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
+ "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+ "dev": true,
+ "requires": {
+ "is-accessor-descriptor": "^1.0.0",
+ "is-data-descriptor": "^1.0.0",
+ "kind-of": "^6.0.2"
+ }
+ },
+ "isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
+ "dev": true
+ },
+ "kind-of": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
+ "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==",
+ "dev": true
+ }
+ }
+ },
+ "base64-js": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.0.tgz",
+ "integrity": "sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw==",
+ "dev": true
+ },
+ "basic-auth": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.0.tgz",
+ "integrity": "sha1-AV2z81PgLlY3d1X5YnQuiYHnu7o=",
+ "dev": true,
+ "requires": {
+ "safe-buffer": "5.1.1"
+ },
+ "dependencies": {
+ "safe-buffer": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz",
+ "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==",
+ "dev": true
+ }
+ }
+ },
+ "bcrypt-pbkdf": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
+ "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "tweetnacl": "^0.14.3"
+ }
+ },
+ "binary": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/binary/-/binary-0.3.0.tgz",
+ "integrity": "sha1-n2BVO8XOjDOG87VTz/R0Yq3sqnk=",
+ "dev": true,
+ "requires": {
+ "buffers": "~0.1.1",
+ "chainsaw": "~0.1.0"
+ }
+ },
+ "binary-extensions": {
+ "version": "1.11.0",
+ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.11.0.tgz",
+ "integrity": "sha1-RqoXUftqL5PuXmibsQh9SxTGwgU=",
+ "dev": true
+ },
+ "bl": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.2.tgz",
+ "integrity": "sha512-e8tQYnZodmebYDWGH7KMRvtzKXaJHx3BbilrgZCfvyLUYdKpK1t5PSPmpkny/SgiTSCnjfLW7v5rlONXVFkQEA==",
+ "dev": true,
+ "requires": {
+ "readable-stream": "^2.3.5",
+ "safe-buffer": "^5.1.1"
+ },
+ "dependencies": {
+ "isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
+ "dev": true
+ },
+ "readable-stream": {
+ "version": "2.3.6",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
+ "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
+ "dev": true,
+ "requires": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
+ }
+ },
+ "string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "dev": true,
+ "requires": {
+ "safe-buffer": "~5.1.0"
+ }
+ }
+ }
+ },
+ "bluebird": {
+ "version": "3.5.1",
+ "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz",
+ "integrity": "sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA==",
+ "dev": true
+ },
+ "bn.js": {
+ "version": "4.11.8",
+ "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz",
+ "integrity": "sha1-LN4J617jQfSEdGuwMJsyU7GxRC8=",
+ "dev": true
+ },
+ "boolbase": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
+ "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=",
+ "dev": true
+ },
+ "boxen": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/boxen/-/boxen-1.3.0.tgz",
+ "integrity": "sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw==",
+ "dev": true,
+ "requires": {
+ "ansi-align": "^2.0.0",
+ "camelcase": "^4.0.0",
+ "chalk": "^2.0.1",
+ "cli-boxes": "^1.0.0",
+ "string-width": "^2.0.0",
+ "term-size": "^1.2.0",
+ "widest-line": "^2.0.0"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
+ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
+ "dev": true
+ },
+ "ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "dev": true,
+ "requires": {
+ "color-convert": "^1.9.0"
+ }
+ },
+ "camelcase": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz",
+ "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=",
+ "dev": true
+ },
+ "chalk": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz",
+ "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ }
+ },
+ "has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
+ "dev": true
+ },
+ "is-fullwidth-code-point": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+ "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
+ "dev": true
+ },
+ "string-width": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
+ "integrity": "sha1-q5Pyeo3BPSjKyBXEYhQ6bZASrp4=",
+ "dev": true,
+ "requires": {
+ "is-fullwidth-code-point": "^2.0.0",
+ "strip-ansi": "^4.0.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
+ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^3.0.0"
+ }
+ },
+ "supports-color": {
+ "version": "5.4.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz",
+ "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^3.0.0"
+ }
+ }
+ }
+ },
+ "brace-expansion": {
+ "version": "1.1.11",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "dev": true,
+ "requires": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "braces": {
+ "version": "1.8.5",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz",
+ "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=",
+ "dev": true,
+ "requires": {
+ "expand-range": "^1.8.1",
+ "preserve": "^0.2.0",
+ "repeat-element": "^1.1.2"
+ }
+ },
+ "brorand": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz",
+ "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=",
+ "dev": true
+ },
+ "browser-pack": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/browser-pack/-/browser-pack-6.1.0.tgz",
+ "integrity": "sha512-erYug8XoqzU3IfcU8fUgyHqyOXqIE4tUTTQ+7mqUjQlvnXkOO6OlT9c/ZoJVHYoAaqGxr09CN53G7XIsO4KtWA==",
+ "dev": true,
+ "requires": {
+ "JSONStream": "^1.0.3",
+ "combine-source-map": "~0.8.0",
+ "defined": "^1.0.0",
+ "safe-buffer": "^5.1.1",
+ "through2": "^2.0.0",
+ "umd": "^3.0.0"
+ }
+ },
+ "browser-resolve": {
+ "version": "1.11.2",
+ "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.2.tgz",
+ "integrity": "sha1-j/CbCixCFxihBRwmCzLkj0QpOM4=",
+ "dev": true,
+ "requires": {
+ "resolve": "1.1.7"
+ },
+ "dependencies": {
+ "resolve": {
+ "version": "1.1.7",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz",
+ "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=",
+ "dev": true
+ }
+ }
+ },
+ "browserify": {
+ "version": "13.3.0",
+ "resolved": "https://registry.npmjs.org/browserify/-/browserify-13.3.0.tgz",
+ "integrity": "sha1-tanJAgJD8McORnW+yCI7xifkFc4=",
+ "dev": true,
+ "requires": {
+ "JSONStream": "^1.0.3",
+ "assert": "^1.4.0",
+ "browser-pack": "^6.0.1",
+ "browser-resolve": "^1.11.0",
+ "browserify-zlib": "~0.1.2",
+ "buffer": "^4.1.0",
+ "cached-path-relative": "^1.0.0",
+ "concat-stream": "~1.5.1",
+ "console-browserify": "^1.1.0",
+ "constants-browserify": "~1.0.0",
+ "crypto-browserify": "^3.0.0",
+ "defined": "^1.0.0",
+ "deps-sort": "^2.0.0",
+ "domain-browser": "~1.1.0",
+ "duplexer2": "~0.1.2",
+ "events": "~1.1.0",
+ "glob": "^7.1.0",
+ "has": "^1.0.0",
+ "htmlescape": "^1.1.0",
+ "https-browserify": "~0.0.0",
+ "inherits": "~2.0.1",
+ "insert-module-globals": "^7.0.0",
+ "labeled-stream-splicer": "^2.0.0",
+ "module-deps": "^4.0.8",
+ "os-browserify": "~0.1.1",
+ "parents": "^1.0.1",
+ "path-browserify": "~0.0.0",
+ "process": "~0.11.0",
+ "punycode": "^1.3.2",
+ "querystring-es3": "~0.2.0",
+ "read-only-stream": "^2.0.0",
+ "readable-stream": "^2.0.2",
+ "resolve": "^1.1.4",
+ "shasum": "^1.0.0",
+ "shell-quote": "^1.6.1",
+ "stream-browserify": "^2.0.0",
+ "stream-http": "^2.0.0",
+ "string_decoder": "~0.10.0",
+ "subarg": "^1.0.0",
+ "syntax-error": "^1.1.1",
+ "through2": "^2.0.0",
+ "timers-browserify": "^1.0.1",
+ "tty-browserify": "~0.0.0",
+ "url": "~0.11.0",
+ "util": "~0.10.1",
+ "vm-browserify": "~0.0.1",
+ "xtend": "^4.0.0"
+ },
+ "dependencies": {
+ "glob": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
+ "integrity": "sha1-wZyd+aAocC1nhhI4SmVSQExjbRU=",
+ "dev": true,
+ "requires": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.0.4",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ }
+ },
+ "isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
+ "dev": true
+ },
+ "readable-stream": {
+ "version": "2.3.6",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
+ "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
+ "dev": true,
+ "requires": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
+ },
+ "dependencies": {
+ "string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "dev": true,
+ "requires": {
+ "safe-buffer": "~5.1.0"
+ }
+ }
+ }
+ }
+ }
+ },
+ "browserify-aes": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz",
+ "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==",
+ "dev": true,
+ "requires": {
+ "buffer-xor": "^1.0.3",
+ "cipher-base": "^1.0.0",
+ "create-hash": "^1.1.0",
+ "evp_bytestokey": "^1.0.3",
+ "inherits": "^2.0.1",
+ "safe-buffer": "^5.0.1"
+ }
+ },
+ "browserify-cipher": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz",
+ "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==",
+ "dev": true,
+ "requires": {
+ "browserify-aes": "^1.0.4",
+ "browserify-des": "^1.0.0",
+ "evp_bytestokey": "^1.0.0"
+ }
+ },
+ "browserify-des": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.1.tgz",
+ "integrity": "sha512-zy0Cobe3hhgpiOM32Tj7KQ3Vl91m0njwsjzZQK1L+JDf11dzP9qIvjreVinsvXrgfjhStXwUWAEpB9D7Gwmayw==",
+ "dev": true,
+ "requires": {
+ "cipher-base": "^1.0.1",
+ "des.js": "^1.0.0",
+ "inherits": "^2.0.1"
+ }
+ },
+ "browserify-rsa": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz",
+ "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=",
+ "dev": true,
+ "requires": {
+ "bn.js": "^4.1.0",
+ "randombytes": "^2.0.1"
+ }
+ },
+ "browserify-sign": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz",
+ "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=",
+ "dev": true,
+ "requires": {
+ "bn.js": "^4.1.1",
+ "browserify-rsa": "^4.0.0",
+ "create-hash": "^1.1.0",
+ "create-hmac": "^1.1.2",
+ "elliptic": "^6.0.0",
+ "inherits": "^2.0.1",
+ "parse-asn1": "^5.0.0"
+ }
+ },
+ "browserify-transform-tools": {
+ "version": "1.7.0",
+ "resolved": "https://registry.npmjs.org/browserify-transform-tools/-/browserify-transform-tools-1.7.0.tgz",
+ "integrity": "sha1-g+J3Ih9jJZvtLn6yooOpcKUB9MQ=",
+ "dev": true,
+ "requires": {
+ "falafel": "^2.0.0",
+ "through": "^2.3.7"
+ }
+ },
+ "browserify-zlib": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.1.4.tgz",
+ "integrity": "sha1-uzX4pRn2AOD6a4SFJByXnQFB+y0=",
+ "dev": true,
+ "requires": {
+ "pako": "~0.2.0"
+ }
+ },
+ "buffer": {
+ "version": "4.9.1",
+ "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz",
+ "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=",
+ "dev": true,
+ "requires": {
+ "base64-js": "^1.0.2",
+ "ieee754": "^1.1.4",
+ "isarray": "^1.0.0"
+ },
+ "dependencies": {
+ "isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
+ "dev": true
+ }
+ }
+ },
+ "buffer-alloc": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz",
+ "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==",
+ "dev": true,
+ "requires": {
+ "buffer-alloc-unsafe": "^1.1.0",
+ "buffer-fill": "^1.0.0"
+ }
+ },
+ "buffer-alloc-unsafe": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz",
+ "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==",
+ "dev": true
+ },
+ "buffer-fill": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz",
+ "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw=",
+ "dev": true
+ },
+ "buffer-from": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.0.0.tgz",
+ "integrity": "sha512-83apNb8KK0Se60UE1+4Ukbe3HbfELJ6UlI4ldtOGs7So4KD26orJM8hIY9lxdzP+UpItH1Yh/Y8GUvNFWFFRxA==",
+ "dev": true
+ },
+ "buffer-xor": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz",
+ "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=",
+ "dev": true
+ },
+ "buffers": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz",
+ "integrity": "sha1-skV5w77U1tOWru5tmorn9Ugqt7s=",
+ "dev": true
+ },
+ "builtin-modules": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz",
+ "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=",
+ "dev": true
+ },
+ "builtin-status-codes": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz",
+ "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=",
+ "dev": true
+ },
+ "bytes": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz",
+ "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=",
+ "dev": true
+ },
+ "cache-base": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz",
+ "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==",
+ "dev": true,
+ "requires": {
+ "collection-visit": "^1.0.0",
+ "component-emitter": "^1.2.1",
+ "get-value": "^2.0.6",
+ "has-value": "^1.0.0",
+ "isobject": "^3.0.1",
+ "set-value": "^2.0.0",
+ "to-object-path": "^0.3.0",
+ "union-value": "^1.0.0",
+ "unset-value": "^1.0.0"
+ },
+ "dependencies": {
+ "isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
+ "dev": true
+ }
+ }
+ },
+ "cached-path-relative": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/cached-path-relative/-/cached-path-relative-1.0.1.tgz",
+ "integrity": "sha1-0JxLUoAKpMB44t2BqGmqyQ0uVOc=",
+ "dev": true
+ },
+ "call-me-maybe": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz",
+ "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms=",
+ "dev": true
+ },
+ "caller-path": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz",
+ "integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=",
+ "dev": true,
+ "requires": {
+ "callsites": "^0.2.0"
+ }
+ },
+ "callsites": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz",
+ "integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=",
+ "dev": true
+ },
+ "camelcase": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz",
+ "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=",
+ "dev": true,
+ "optional": true
+ },
+ "camelcase-keys": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-4.2.0.tgz",
+ "integrity": "sha1-oqpfsa9oh1glnDLBQUJteJI7m3c=",
+ "dev": true,
+ "requires": {
+ "camelcase": "^4.1.0",
+ "map-obj": "^2.0.0",
+ "quick-lru": "^1.0.0"
+ },
+ "dependencies": {
+ "camelcase": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz",
+ "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=",
+ "dev": true
+ }
+ }
+ },
+ "capture-stack-trace": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.1.tgz",
+ "integrity": "sha512-mYQLZnx5Qt1JgB1WEiMCf2647plpGeQ2NMR/5L0HNZzGQo4fuSPnK+wjfPnKZV0aiJDgzmWqqkV/g7JD+DW0qw==",
+ "dev": true
+ },
+ "caseless": {
+ "version": "0.12.0",
+ "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
+ "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=",
+ "dev": true
+ },
+ "ccount": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/ccount/-/ccount-1.0.3.tgz",
+ "integrity": "sha512-Jt9tIBkRc9POUof7QA/VwWd+58fKkEEfI+/t1/eOlxKM7ZhrczNzMFefge7Ai+39y1pR/pP6cI19guHy3FSLmw==",
+ "dev": true
+ },
+ "center-align": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz",
+ "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "align-text": "^0.1.3",
+ "lazy-cache": "^1.0.3"
+ }
+ },
+ "chainsaw": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/chainsaw/-/chainsaw-0.1.0.tgz",
+ "integrity": "sha1-XqtQsor+WAdNDVgpE4iCi15fvJg=",
+ "dev": true,
+ "requires": {
+ "traverse": ">=0.3.0 <0.4"
+ }
+ },
+ "chalk": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
+ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^2.2.1",
+ "escape-string-regexp": "^1.0.2",
+ "has-ansi": "^2.0.0",
+ "strip-ansi": "^3.0.0",
+ "supports-color": "^2.0.0"
+ },
+ "dependencies": {
+ "supports-color": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
+ "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
+ "dev": true
+ }
+ }
+ },
+ "character-entities": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.2.tgz",
+ "integrity": "sha512-sMoHX6/nBiy3KKfC78dnEalnpn0Az0oSNvqUWYTtYrhRI5iUIYsROU48G+E+kMFQzqXaJ8kHJZ85n7y6/PHgwQ==",
+ "dev": true
+ },
+ "character-entities-html4": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-1.1.2.tgz",
+ "integrity": "sha512-sIrXwyna2+5b0eB9W149izTPJk/KkJTg6mEzDGibwBUkyH1SbDa+nf515Ppdi3MaH35lW0JFJDWeq9Luzes1Iw==",
+ "dev": true
+ },
+ "character-entities-legacy": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.2.tgz",
+ "integrity": "sha512-9NB2VbXtXYWdXzqrvAHykE/f0QJxzaKIpZ5QzNZrrgQ7Iyxr2vnfS8fCBNVW9nUEZE0lo57nxKRqnzY/dKrwlA==",
+ "dev": true
+ },
+ "character-reference-invalid": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.2.tgz",
+ "integrity": "sha512-7I/xceXfKyUJmSAn/jw8ve/9DyOP7XxufNYLI9Px7CmsKgEUaZLUTax6nZxGQtaoiZCjpu6cHPj20xC/vqRReQ==",
+ "dev": true
+ },
+ "chardet": {
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz",
+ "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==",
+ "dev": true
+ },
+ "check-for-leaks": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/check-for-leaks/-/check-for-leaks-1.2.0.tgz",
+ "integrity": "sha1-6jtQFk6XV3kzLGKBMZX/jGr4Jsw=",
+ "dev": true,
+ "requires": {
+ "anymatch": "^1.3.0",
+ "minimist": "^1.2.0",
+ "parse-gitignore": "^0.4.0",
+ "walk-sync": "^0.3.2"
+ }
+ },
+ "checksum": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/checksum/-/checksum-0.1.1.tgz",
+ "integrity": "sha1-3GUn1MkL6FYNvR7Uzs8yl9Uo6ek=",
+ "dev": true,
+ "requires": {
+ "optimist": "~0.3.5"
+ }
+ },
+ "cheerio": {
+ "version": "0.22.0",
+ "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-0.22.0.tgz",
+ "integrity": "sha1-qbqoYKP5tZWmuBsahocxIe06Jp4=",
+ "dev": true,
+ "requires": {
+ "css-select": "~1.2.0",
+ "dom-serializer": "~0.1.0",
+ "entities": "~1.1.1",
+ "htmlparser2": "^3.9.1",
+ "lodash.assignin": "^4.0.9",
+ "lodash.bind": "^4.1.4",
+ "lodash.defaults": "^4.0.1",
+ "lodash.filter": "^4.4.0",
+ "lodash.flatten": "^4.2.0",
+ "lodash.foreach": "^4.3.0",
+ "lodash.map": "^4.4.0",
+ "lodash.merge": "^4.4.0",
+ "lodash.pick": "^4.2.1",
+ "lodash.reduce": "^4.4.0",
+ "lodash.reject": "^4.4.0",
+ "lodash.some": "^4.4.0"
+ }
+ },
+ "chokidar": {
+ "version": "1.7.0",
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz",
+ "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=",
+ "dev": true,
+ "requires": {
+ "anymatch": "^1.3.0",
+ "async-each": "^1.0.0",
+ "fsevents": "^1.0.0",
+ "glob-parent": "^2.0.0",
+ "inherits": "^2.0.1",
+ "is-binary-path": "^1.0.0",
+ "is-glob": "^2.0.0",
+ "path-is-absolute": "^1.0.0",
+ "readdirp": "^2.0.0"
+ }
+ },
+ "chownr": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.0.1.tgz",
+ "integrity": "sha1-4qdQQqlVGQi+vSW4Uj1fl2nXkYE=",
+ "dev": true
+ },
+ "chromium-pickle-js": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/chromium-pickle-js/-/chromium-pickle-js-0.1.0.tgz",
+ "integrity": "sha1-HUixB9ghJqLz4hHC6iX4A7pVGyE=",
+ "dev": true
+ },
+ "ci-info": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.1.3.tgz",
+ "integrity": "sha512-SK/846h/Rcy8q9Z9CAwGBLfCJ6EkjJWdpelWDufQpqVDYq2Wnnv8zlSO6AMQap02jvhVruKKpEtQOufo3pFhLg==",
+ "dev": true
+ },
+ "cipher-base": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz",
+ "integrity": "sha1-h2Dk7MJy9MNjUy+SbYdKriwTl94=",
+ "dev": true,
+ "requires": {
+ "inherits": "^2.0.1",
+ "safe-buffer": "^5.0.1"
+ }
+ },
+ "circular-json": {
+ "version": "0.3.3",
+ "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz",
+ "integrity": "sha1-gVyZ6oT2gJUp0vRXkb34JxE1LWY=",
+ "dev": true
+ },
+ "clang-format": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/clang-format/-/clang-format-1.2.3.tgz",
+ "integrity": "sha512-x90Hac4ERacGDcZSvHKK58Ga0STuMD+Doi5g0iG2zf7wlJef5Huvhs/3BvMRFxwRYyYSdl6mpQNrtfMxE8MQzw==",
+ "dev": true,
+ "requires": {
+ "async": "^1.5.2",
+ "glob": "^7.0.0",
+ "resolve": "^1.1.6"
+ },
+ "dependencies": {
+ "glob": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
+ "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
+ "dev": true,
+ "requires": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.0.4",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ }
+ }
+ }
+ },
+ "class-utils": {
+ "version": "0.3.6",
+ "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz",
+ "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==",
+ "dev": true,
+ "requires": {
+ "arr-union": "^3.1.0",
+ "define-property": "^0.2.5",
+ "isobject": "^3.0.0",
+ "static-extend": "^0.1.1"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "^0.1.0"
+ }
+ },
+ "isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
+ "dev": true
+ }
+ }
+ },
+ "clean-deep": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/clean-deep/-/clean-deep-2.0.2.tgz",
+ "integrity": "sha1-d83ZTmsmZkTw95Cy9XbL7wOOJ8E=",
+ "dev": true,
+ "requires": {
+ "lodash.isempty": "^4.4.0",
+ "lodash.isplainobject": "^4.0.6",
+ "lodash.transform": "^4.6.0"
+ }
+ },
+ "cli-boxes": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-1.0.0.tgz",
+ "integrity": "sha1-T6kXw+WclKAEzWH47lCdplFocUM=",
+ "dev": true
+ },
+ "cli-cursor": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz",
+ "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=",
+ "dev": true,
+ "requires": {
+ "restore-cursor": "^1.0.1"
+ }
+ },
+ "cli-spinners": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-0.1.2.tgz",
+ "integrity": "sha1-u3ZNiOGF+54eaiofGXcjGPYF4xw=",
+ "dev": true
+ },
+ "cli-width": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz",
+ "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=",
+ "dev": true
+ },
+ "clipboardy": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/clipboardy/-/clipboardy-1.2.3.tgz",
+ "integrity": "sha512-2WNImOvCRe6r63Gk9pShfkwXsVtKCroMAevIbiae021mS850UkWPbevxsBz3tnvjZIEGvlwaqCPsw+4ulzNgJA==",
+ "dev": true,
+ "requires": {
+ "arch": "^2.1.0",
+ "execa": "^0.8.0"
+ },
+ "dependencies": {
+ "execa": {
+ "version": "0.8.0",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-0.8.0.tgz",
+ "integrity": "sha1-2NdrvBtVIX7RkP1t1J08d07PyNo=",
+ "dev": true,
+ "requires": {
+ "cross-spawn": "^5.0.1",
+ "get-stream": "^3.0.0",
+ "is-stream": "^1.1.0",
+ "npm-run-path": "^2.0.0",
+ "p-finally": "^1.0.0",
+ "signal-exit": "^3.0.0",
+ "strip-eof": "^1.0.0"
+ }
+ }
+ }
+ },
+ "cliui": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz",
+ "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "center-align": "^0.1.1",
+ "right-align": "^0.1.1",
+ "wordwrap": "0.0.2"
+ },
+ "dependencies": {
+ "wordwrap": {
+ "version": "0.0.2",
+ "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz",
+ "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=",
+ "dev": true,
+ "optional": true
+ }
+ }
+ },
+ "clone": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz",
+ "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=",
+ "dev": true
+ },
+ "co": {
+ "version": "4.6.0",
+ "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
+ "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=",
+ "dev": true
+ },
+ "code-point-at": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
+ "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=",
+ "dev": true
+ },
+ "collapse-white-space": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-1.0.4.tgz",
+ "integrity": "sha512-YfQ1tAUZm561vpYD+5eyWN8+UsceQbSrqqlc/6zDY2gtAE+uZLSdkkovhnGpmCThsvKBFakq4EdY/FF93E8XIw==",
+ "dev": true
+ },
+ "collection-visit": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz",
+ "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=",
+ "dev": true,
+ "requires": {
+ "map-visit": "^1.0.0",
+ "object-visit": "^1.0.0"
+ }
+ },
+ "color-convert": {
+ "version": "1.9.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz",
+ "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==",
+ "dev": true,
+ "requires": {
+ "color-name": "^1.1.1"
+ }
+ },
+ "color-name": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
+ "dev": true
+ },
+ "colors": {
+ "version": "1.2.5",
+ "resolved": "https://registry.npmjs.org/colors/-/colors-1.2.5.tgz",
+ "integrity": "sha512-erNRLao/Y3Fv54qUa0LBB+//Uf3YwMUmdJinN20yMXm9zdKKqH9wt7R9IIVZ+K7ShzfpLV/Zg8+VyrBJYB4lpg==",
+ "dev": true
+ },
+ "combine-source-map": {
+ "version": "0.8.0",
+ "resolved": "https://registry.npmjs.org/combine-source-map/-/combine-source-map-0.8.0.tgz",
+ "integrity": "sha1-pY0N8ELBhvz4IqjoAV9UUNLXmos=",
+ "dev": true,
+ "requires": {
+ "convert-source-map": "~1.1.0",
+ "inline-source-map": "~0.6.0",
+ "lodash.memoize": "~3.0.3",
+ "source-map": "~0.5.3"
+ }
+ },
+ "combined-stream": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz",
+ "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=",
+ "dev": true,
+ "requires": {
+ "delayed-stream": "~1.0.0"
+ }
+ },
+ "commander": {
+ "version": "2.15.1",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz",
+ "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==",
+ "dev": true
+ },
+ "compare-func": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/compare-func/-/compare-func-1.3.2.tgz",
+ "integrity": "sha1-md0LpFfh+bxyKxLAjsM+6rMfpkg=",
+ "dev": true,
+ "requires": {
+ "array-ify": "^1.0.0",
+ "dot-prop": "^3.0.0"
+ }
+ },
+ "component-emitter": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz",
+ "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=",
+ "dev": true
+ },
+ "compressible": {
+ "version": "2.0.14",
+ "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.14.tgz",
+ "integrity": "sha1-MmxfUH+7BV9UEWeCuWmoG2einac=",
+ "dev": true,
+ "requires": {
+ "mime-db": ">= 1.34.0 < 2"
+ },
+ "dependencies": {
+ "mime-db": {
+ "version": "1.35.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.35.0.tgz",
+ "integrity": "sha512-JWT/IcCTsB0Io3AhWUMjRqucrHSPsSf2xKLaRldJVULioggvkJvggZ3VXNNSRkCddE6D+BUI4HEIZIA2OjwIvg==",
+ "dev": true
+ }
+ }
+ },
+ "compression": {
+ "version": "1.7.3",
+ "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.3.tgz",
+ "integrity": "sha512-HSjyBG5N1Nnz7tF2+O7A9XUhyjru71/fwgNb7oIsEVHR0WShfs2tIS/EySLgiTe98aOK18YDlMXpzjCXY/n9mg==",
+ "dev": true,
+ "requires": {
+ "accepts": "~1.3.5",
+ "bytes": "3.0.0",
+ "compressible": "~2.0.14",
+ "debug": "2.6.9",
+ "on-headers": "~1.0.1",
+ "safe-buffer": "5.1.2",
+ "vary": "~1.1.2"
+ }
+ },
+ "concat-map": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+ "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
+ "dev": true
+ },
+ "concat-stream": {
+ "version": "1.5.2",
+ "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.5.2.tgz",
+ "integrity": "sha1-cIl4Yk2FavQaWnQd790mHadSwmY=",
+ "dev": true,
+ "requires": {
+ "inherits": "~2.0.1",
+ "readable-stream": "~2.0.0",
+ "typedarray": "~0.0.5"
+ },
+ "dependencies": {
+ "isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
+ "dev": true
+ },
+ "process-nextick-args": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz",
+ "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=",
+ "dev": true
+ },
+ "readable-stream": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz",
+ "integrity": "sha1-j5A0HmilPMySh4jaz80Rs265t44=",
+ "dev": true,
+ "requires": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.1",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~1.0.6",
+ "string_decoder": "~0.10.x",
+ "util-deprecate": "~1.0.1"
+ }
+ }
+ }
+ },
+ "configstore": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/configstore/-/configstore-3.1.2.tgz",
+ "integrity": "sha512-vtv5HtGjcYUgFrXc6Kx747B83MRRVS5R1VTEQoXvuP+kMI+if6uywV0nDGoiydJRy4yk7h9od5Og0kxx4zUXmw==",
+ "dev": true,
+ "requires": {
+ "dot-prop": "^4.1.0",
+ "graceful-fs": "^4.1.2",
+ "make-dir": "^1.0.0",
+ "unique-string": "^1.0.0",
+ "write-file-atomic": "^2.0.0",
+ "xdg-basedir": "^3.0.0"
+ },
+ "dependencies": {
+ "dot-prop": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.0.tgz",
+ "integrity": "sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ==",
+ "dev": true,
+ "requires": {
+ "is-obj": "^1.0.0"
+ }
+ }
+ }
+ },
+ "console-browserify": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz",
+ "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=",
+ "dev": true,
+ "requires": {
+ "date-now": "^0.1.4"
+ }
+ },
+ "constants-browserify": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz",
+ "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=",
+ "dev": true
+ },
+ "contains-path": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz",
+ "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=",
+ "dev": true
+ },
+ "content-type": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz",
+ "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==",
+ "dev": true
+ },
+ "conventional-changelog": {
+ "version": "1.1.24",
+ "resolved": "https://registry.npmjs.org/conventional-changelog/-/conventional-changelog-1.1.24.tgz",
+ "integrity": "sha512-2WcSUst4Y3Z4hHvoMTWXMJr/DmgVdLiMOVY1Kak2LfFz+GIz2KDp5naqbFesYbfXPmaZ5p491dO0FWZIJoJw1Q==",
+ "dev": true,
+ "requires": {
+ "conventional-changelog-angular": "^1.6.6",
+ "conventional-changelog-atom": "^0.2.8",
+ "conventional-changelog-codemirror": "^0.3.8",
+ "conventional-changelog-core": "^2.0.11",
+ "conventional-changelog-ember": "^0.3.12",
+ "conventional-changelog-eslint": "^1.0.9",
+ "conventional-changelog-express": "^0.3.6",
+ "conventional-changelog-jquery": "^0.1.0",
+ "conventional-changelog-jscs": "^0.1.0",
+ "conventional-changelog-jshint": "^0.3.8",
+ "conventional-changelog-preset-loader": "^1.1.8"
+ }
+ },
+ "conventional-changelog-angular": {
+ "version": "1.6.6",
+ "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-1.6.6.tgz",
+ "integrity": "sha512-suQnFSqCxRwyBxY68pYTsFkG0taIdinHLNEAX5ivtw8bCRnIgnpvcHmlR/yjUyZIrNPYAoXlY1WiEKWgSE4BNg==",
+ "dev": true,
+ "requires": {
+ "compare-func": "^1.3.1",
+ "q": "^1.5.1"
+ }
+ },
+ "conventional-changelog-atom": {
+ "version": "0.2.8",
+ "resolved": "https://registry.npmjs.org/conventional-changelog-atom/-/conventional-changelog-atom-0.2.8.tgz",
+ "integrity": "sha512-8pPZqhMbrnltNBizjoDCb/Sz85KyUXNDQxuAEYAU5V/eHn0okMBVjqc8aHWYpHrytyZWvMGbayOlDv7i8kEf6g==",
+ "dev": true,
+ "requires": {
+ "q": "^1.5.1"
+ }
+ },
+ "conventional-changelog-cli": {
+ "version": "1.3.22",
+ "resolved": "https://registry.npmjs.org/conventional-changelog-cli/-/conventional-changelog-cli-1.3.22.tgz",
+ "integrity": "sha512-pnjdIJbxjkZ5VdAX/H1wndr1G10CY8MuZgnXuJhIHglOXfIrXygb7KZC836GW9uo1u8PjEIvIw/bKX0lOmOzZg==",
+ "dev": true,
+ "requires": {
+ "add-stream": "^1.0.0",
+ "conventional-changelog": "^1.1.24",
+ "lodash": "^4.2.1",
+ "meow": "^4.0.0",
+ "tempfile": "^1.1.1"
+ }
+ },
+ "conventional-changelog-codemirror": {
+ "version": "0.3.8",
+ "resolved": "https://registry.npmjs.org/conventional-changelog-codemirror/-/conventional-changelog-codemirror-0.3.8.tgz",
+ "integrity": "sha512-3HFZKtBXTaUCHvz7ai6nk2+psRIkldDoNzCsom0egDtVmPsvvHZkzjynhdQyULfacRSsBTaiQ0ol6nBOL4dDiQ==",
+ "dev": true,
+ "requires": {
+ "q": "^1.5.1"
+ }
+ },
+ "conventional-changelog-core": {
+ "version": "2.0.11",
+ "resolved": "https://registry.npmjs.org/conventional-changelog-core/-/conventional-changelog-core-2.0.11.tgz",
+ "integrity": "sha512-HvTE6RlqeEZ/NFPtQeFLsIDOLrGP3bXYr7lFLMhCVsbduF1MXIe8OODkwMFyo1i9ku9NWBwVnVn0jDmIFXjDRg==",
+ "dev": true,
+ "requires": {
+ "conventional-changelog-writer": "^3.0.9",
+ "conventional-commits-parser": "^2.1.7",
+ "dateformat": "^3.0.0",
+ "get-pkg-repo": "^1.0.0",
+ "git-raw-commits": "^1.3.6",
+ "git-remote-origin-url": "^2.0.0",
+ "git-semver-tags": "^1.3.6",
+ "lodash": "^4.2.1",
+ "normalize-package-data": "^2.3.5",
+ "q": "^1.5.1",
+ "read-pkg": "^1.1.0",
+ "read-pkg-up": "^1.0.1",
+ "through2": "^2.0.0"
+ }
+ },
+ "conventional-changelog-ember": {
+ "version": "0.3.12",
+ "resolved": "https://registry.npmjs.org/conventional-changelog-ember/-/conventional-changelog-ember-0.3.12.tgz",
+ "integrity": "sha512-mmJzA7uzbrOqeF89dMMi6z17O07ORTXlTMArnLG9ZTX4oLaKNolUlxFUFlFm9JUoVWajVpaHQWjxH1EOQ+ARoQ==",
+ "dev": true,
+ "requires": {
+ "q": "^1.5.1"
+ }
+ },
+ "conventional-changelog-eslint": {
+ "version": "1.0.9",
+ "resolved": "https://registry.npmjs.org/conventional-changelog-eslint/-/conventional-changelog-eslint-1.0.9.tgz",
+ "integrity": "sha512-h87nfVh2fdk9fJIvz26wCBsbDC/KxqCc5wSlNMZbXcARtbgNbNDIF7Y7ctokFdnxkzVdaHsbINkh548T9eBA7Q==",
+ "dev": true,
+ "requires": {
+ "q": "^1.5.1"
+ }
+ },
+ "conventional-changelog-express": {
+ "version": "0.3.6",
+ "resolved": "https://registry.npmjs.org/conventional-changelog-express/-/conventional-changelog-express-0.3.6.tgz",
+ "integrity": "sha512-3iWVtBJZ9RnRnZveNDzOD8QRn6g6vUif0qVTWWyi5nUIAbuN1FfPVyKdAlJJfp5Im+dE8Kiy/d2SpaX/0X678Q==",
+ "dev": true,
+ "requires": {
+ "q": "^1.5.1"
+ }
+ },
+ "conventional-changelog-jquery": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/conventional-changelog-jquery/-/conventional-changelog-jquery-0.1.0.tgz",
+ "integrity": "sha1-Agg5cWLjhGmG5xJztsecW1+A9RA=",
+ "dev": true,
+ "requires": {
+ "q": "^1.4.1"
+ }
+ },
+ "conventional-changelog-jscs": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/conventional-changelog-jscs/-/conventional-changelog-jscs-0.1.0.tgz",
+ "integrity": "sha1-BHnrRDzH1yxYvwvPDvHURKkvDlw=",
+ "dev": true,
+ "requires": {
+ "q": "^1.4.1"
+ }
+ },
+ "conventional-changelog-jshint": {
+ "version": "0.3.8",
+ "resolved": "https://registry.npmjs.org/conventional-changelog-jshint/-/conventional-changelog-jshint-0.3.8.tgz",
+ "integrity": "sha512-hn9QU4ZI/5V50wKPJNPGT4gEWgiBFpV6adieILW4MaUFynuDYOvQ71EMSj3EznJyKi/KzuXpc9dGmX8njZMjig==",
+ "dev": true,
+ "requires": {
+ "compare-func": "^1.3.1",
+ "q": "^1.5.1"
+ }
+ },
+ "conventional-changelog-preset-loader": {
+ "version": "1.1.8",
+ "resolved": "https://registry.npmjs.org/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-1.1.8.tgz",
+ "integrity": "sha512-MkksM4G4YdrMlT2MbTsV2F6LXu/hZR0Tc/yenRrDIKRwBl/SP7ER4ZDlglqJsCzLJi4UonBc52Bkm5hzrOVCcw==",
+ "dev": true
+ },
+ "conventional-changelog-writer": {
+ "version": "3.0.9",
+ "resolved": "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-3.0.9.tgz",
+ "integrity": "sha512-n9KbsxlJxRQsUnK6wIBRnARacvNnN4C/nxnxCkH+B/R1JS2Fa+DiP1dU4I59mEDEjgnFaN2+9wr1P1s7GYB5/Q==",
+ "dev": true,
+ "requires": {
+ "compare-func": "^1.3.1",
+ "conventional-commits-filter": "^1.1.6",
+ "dateformat": "^3.0.0",
+ "handlebars": "^4.0.2",
+ "json-stringify-safe": "^5.0.1",
+ "lodash": "^4.2.1",
+ "meow": "^4.0.0",
+ "semver": "^5.5.0",
+ "split": "^1.0.0",
+ "through2": "^2.0.0"
+ }
+ },
+ "conventional-commits-filter": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-1.1.6.tgz",
+ "integrity": "sha512-KcDgtCRKJCQhyk6VLT7zR+ZOyCnerfemE/CsR3iQpzRRFbLEs0Y6rwk3mpDvtOh04X223z+1xyJ582Stfct/0Q==",
+ "dev": true,
+ "requires": {
+ "is-subset": "^0.1.1",
+ "modify-values": "^1.0.0"
+ }
+ },
+ "conventional-commits-parser": {
+ "version": "2.1.7",
+ "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-2.1.7.tgz",
+ "integrity": "sha512-BoMaddIEJ6B4QVMSDu9IkVImlGOSGA1I2BQyOZHeLQ6qVOJLcLKn97+fL6dGbzWEiqDzfH4OkcveULmeq2MHFQ==",
+ "dev": true,
+ "requires": {
+ "JSONStream": "^1.0.4",
+ "is-text-path": "^1.0.0",
+ "lodash": "^4.2.1",
+ "meow": "^4.0.0",
+ "split2": "^2.0.0",
+ "through2": "^2.0.0",
+ "trim-off-newlines": "^1.0.0"
+ }
+ },
+ "convert-source-map": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.1.3.tgz",
+ "integrity": "sha1-SCnId+n+SbMWHzvzZziI4gRpmGA=",
+ "dev": true
+ },
+ "copy-descriptor": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz",
+ "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=",
+ "dev": true
+ },
+ "core-util-is": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
+ "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
+ "dev": true
+ },
+ "create-ecdh": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz",
+ "integrity": "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==",
+ "dev": true,
+ "requires": {
+ "bn.js": "^4.1.0",
+ "elliptic": "^6.0.0"
+ }
+ },
+ "create-error-class": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz",
+ "integrity": "sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=",
+ "dev": true,
+ "requires": {
+ "capture-stack-trace": "^1.0.0"
+ }
+ },
+ "create-hash": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz",
+ "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==",
+ "dev": true,
+ "requires": {
+ "cipher-base": "^1.0.1",
+ "inherits": "^2.0.1",
+ "md5.js": "^1.3.4",
+ "ripemd160": "^2.0.1",
+ "sha.js": "^2.4.0"
+ }
+ },
+ "create-hmac": {
+ "version": "1.1.7",
+ "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz",
+ "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==",
+ "dev": true,
+ "requires": {
+ "cipher-base": "^1.0.3",
+ "create-hash": "^1.1.0",
+ "inherits": "^2.0.1",
+ "ripemd160": "^2.0.0",
+ "safe-buffer": "^5.0.1",
+ "sha.js": "^2.4.8"
+ }
+ },
+ "cross-spawn": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz",
+ "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=",
+ "dev": true,
+ "requires": {
+ "lru-cache": "^4.0.1",
+ "shebang-command": "^1.2.0",
+ "which": "^1.2.9"
+ }
+ },
+ "crypto-browserify": {
+ "version": "3.12.0",
+ "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz",
+ "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==",
+ "dev": true,
+ "requires": {
+ "browserify-cipher": "^1.0.0",
+ "browserify-sign": "^4.0.0",
+ "create-ecdh": "^4.0.0",
+ "create-hash": "^1.1.0",
+ "create-hmac": "^1.1.0",
+ "diffie-hellman": "^5.0.0",
+ "inherits": "^2.0.1",
+ "pbkdf2": "^3.0.3",
+ "public-encrypt": "^4.0.0",
+ "randombytes": "^2.0.0",
+ "randomfill": "^1.0.3"
+ }
+ },
+ "crypto-random-string": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz",
+ "integrity": "sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4=",
+ "dev": true
+ },
+ "css-select": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz",
+ "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=",
+ "dev": true,
+ "requires": {
+ "boolbase": "~1.0.0",
+ "css-what": "2.1",
+ "domutils": "1.5.1",
+ "nth-check": "~1.0.1"
+ }
+ },
+ "css-what": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.0.tgz",
+ "integrity": "sha1-lGfQMsOM+u+58teVASUwYvh/ob0=",
+ "dev": true
+ },
+ "cssom": {
+ "version": "0.3.4",
+ "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.4.tgz",
+ "integrity": "sha512-+7prCSORpXNeR4/fUP3rL+TzqtiFfhMvTd7uEqMdgPvLPt4+uzFUeufx5RHjGTACCargg/DiEt/moMQmvnfkog==",
+ "dev": true,
+ "optional": true
+ },
+ "cssstyle": {
+ "version": "0.2.37",
+ "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-0.2.37.tgz",
+ "integrity": "sha1-VBCXI0yyUTyDzu06zdwn/yeYfVQ=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "cssom": "0.3.x"
+ }
+ },
+ "cuint": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/cuint/-/cuint-0.2.2.tgz",
+ "integrity": "sha1-QICG1AlVDCYxFVYZ6fp7ytw7mRs=",
+ "dev": true
+ },
+ "currently-unhandled": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz",
+ "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=",
+ "dev": true,
+ "requires": {
+ "array-find-index": "^1.0.1"
+ }
+ },
+ "dargs": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/dargs/-/dargs-4.1.0.tgz",
+ "integrity": "sha1-A6nbtLXC8Tm/FK5T8LiipqhvThc=",
+ "dev": true,
+ "requires": {
+ "number-is-nan": "^1.0.0"
+ }
+ },
+ "dashdash": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
+ "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
+ "dev": true,
+ "requires": {
+ "assert-plus": "^1.0.0"
+ }
+ },
+ "date-now": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz",
+ "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=",
+ "dev": true
+ },
+ "dateformat": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz",
+ "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==",
+ "dev": true
+ },
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=",
+ "dev": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "debug-log": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/debug-log/-/debug-log-1.0.1.tgz",
+ "integrity": "sha1-IwdjLUwEOCuN+KMvcLiVBG1SdF8=",
+ "dev": true
+ },
+ "decamelize": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
+ "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
+ "dev": true
+ },
+ "decamelize-keys": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.0.tgz",
+ "integrity": "sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk=",
+ "dev": true,
+ "requires": {
+ "decamelize": "^1.1.0",
+ "map-obj": "^1.0.0"
+ },
+ "dependencies": {
+ "map-obj": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz",
+ "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=",
+ "dev": true
+ }
+ }
+ },
+ "decode-uri-component": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz",
+ "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=",
+ "dev": true
+ },
+ "decompress-zip": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/decompress-zip/-/decompress-zip-0.3.0.tgz",
+ "integrity": "sha1-rjvLfjTGWHmt/nfhnDD4ZgK0vbA=",
+ "dev": true,
+ "requires": {
+ "binary": "^0.3.0",
+ "graceful-fs": "^4.1.3",
+ "mkpath": "^0.1.0",
+ "nopt": "^3.0.1",
+ "q": "^1.1.2",
+ "readable-stream": "^1.1.8",
+ "touch": "0.0.3"
+ }
+ },
+ "dedent": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.6.0.tgz",
+ "integrity": "sha1-Dm2o8M5Sg471zsXI+TlrDBtko8s=",
+ "dev": true
+ },
+ "deep-extend": {
+ "version": "0.5.1",
+ "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.5.1.tgz",
+ "integrity": "sha512-N8vBdOa+DF7zkRrDCsaOXoCs/E2fJfx9B9MrKnnSiHNh4ws7eSys6YQE4KvT1cecKmOASYQBhbKjeuDD9lT81w==",
+ "dev": true
+ },
+ "deep-is": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz",
+ "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=",
+ "dev": true
+ },
+ "defaults": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz",
+ "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=",
+ "dev": true,
+ "requires": {
+ "clone": "^1.0.2"
+ }
+ },
+ "define-properties": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz",
+ "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==",
+ "dev": true,
+ "requires": {
+ "object-keys": "^1.0.12"
+ },
+ "dependencies": {
+ "object-keys": {
+ "version": "1.0.12",
+ "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.12.tgz",
+ "integrity": "sha512-FTMyFUm2wBcGHnH2eXmz7tC6IwlqQZ6mVZ+6dm6vZ4IQIHjs6FdNsQBuKGPuUUUY6NfJw2PshC08Tn6LzLDOag==",
+ "dev": true
+ }
+ }
+ },
+ "define-property": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz",
+ "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "^1.0.2",
+ "isobject": "^3.0.1"
+ },
+ "dependencies": {
+ "is-accessor-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
+ "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^6.0.0"
+ }
+ },
+ "is-data-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
+ "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^6.0.0"
+ }
+ },
+ "is-descriptor": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
+ "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+ "dev": true,
+ "requires": {
+ "is-accessor-descriptor": "^1.0.0",
+ "is-data-descriptor": "^1.0.0",
+ "kind-of": "^6.0.2"
+ }
+ },
+ "isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
+ "dev": true
+ },
+ "kind-of": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
+ "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==",
+ "dev": true
+ }
+ }
+ },
+ "defined": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz",
+ "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=",
+ "dev": true
+ },
+ "deglob": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/deglob/-/deglob-2.1.1.tgz",
+ "integrity": "sha512-2kjwuGGonL7gWE1XU4Fv79+vVzpoQCl0V+boMwWtOQJV2AGDabCwez++nB1Nli/8BabAfZQ/UuHPlp6AymKdWw==",
+ "dev": true,
+ "requires": {
+ "find-root": "^1.0.0",
+ "glob": "^7.0.5",
+ "ignore": "^3.0.9",
+ "pkg-config": "^1.1.0",
+ "run-parallel": "^1.1.2",
+ "uniq": "^1.0.1"
+ },
+ "dependencies": {
+ "glob": {
+ "version": "7.1.3",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz",
+ "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==",
+ "dev": true,
+ "requires": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.0.4",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ }
+ }
+ }
+ },
+ "del": {
+ "version": "2.2.2",
+ "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz",
+ "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=",
+ "dev": true,
+ "requires": {
+ "globby": "^5.0.0",
+ "is-path-cwd": "^1.0.0",
+ "is-path-in-cwd": "^1.0.0",
+ "object-assign": "^4.0.1",
+ "pify": "^2.0.0",
+ "pinkie-promise": "^2.0.0",
+ "rimraf": "^2.2.8"
+ }
+ },
+ "delayed-stream": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
+ "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=",
+ "dev": true
+ },
+ "depd": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz",
+ "integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k=",
+ "dev": true
+ },
+ "deps-sort": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/deps-sort/-/deps-sort-2.0.0.tgz",
+ "integrity": "sha1-CRckkC6EZYJg65EHSMzNGvbiH7U=",
+ "dev": true,
+ "requires": {
+ "JSONStream": "^1.0.3",
+ "shasum": "^1.0.0",
+ "subarg": "^1.0.0",
+ "through2": "^2.0.0"
+ }
+ },
+ "des.js": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz",
+ "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=",
+ "dev": true,
+ "requires": {
+ "inherits": "^2.0.1",
+ "minimalistic-assert": "^1.0.0"
+ }
+ },
+ "destroy": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz",
+ "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=",
+ "dev": true
+ },
+ "detect-port": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/detect-port/-/detect-port-1.2.3.tgz",
+ "integrity": "sha512-IDbrX6PxqnYy8jV4wSHBaJlErYKTJvW8OQb9F7xivl1iQLqiUYHGa+nZ61Do6+N5uuOn/pReXKNqI9rUn04vug==",
+ "dev": true,
+ "requires": {
+ "address": "^1.0.1",
+ "debug": "^2.6.0"
+ }
+ },
+ "detective": {
+ "version": "4.7.1",
+ "resolved": "https://registry.npmjs.org/detective/-/detective-4.7.1.tgz",
+ "integrity": "sha512-H6PmeeUcZloWtdt4DAkFyzFL94arpHr3NOwwmVILFiy+9Qd4JTxxXrzfyGk/lmct2qVGBwTSwSXagqu2BxmWig==",
+ "dev": true,
+ "requires": {
+ "acorn": "^5.2.1",
+ "defined": "^1.0.0"
+ },
+ "dependencies": {
+ "acorn": {
+ "version": "5.5.3",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.5.3.tgz",
+ "integrity": "sha512-jd5MkIUlbbmb07nXH0DT3y7rDVtkzDi4XZOUVWAer8ajmF/DTSSbl5oNFyDOl/OXA33Bl79+ypHhl2pN20VeOQ==",
+ "dev": true
+ }
+ }
+ },
+ "diff": {
+ "version": "3.5.0",
+ "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz",
+ "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==",
+ "dev": true
+ },
+ "diffie-hellman": {
+ "version": "5.0.3",
+ "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz",
+ "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==",
+ "dev": true,
+ "requires": {
+ "bn.js": "^4.1.0",
+ "miller-rabin": "^4.0.0",
+ "randombytes": "^2.0.0"
+ }
+ },
+ "dir-glob": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.0.0.tgz",
+ "integrity": "sha512-37qirFDz8cA5fimp9feo43fSuRo2gHwaIn6dXL8Ber1dGwUosDrGZeCCXq57WnIqE4aQ+u3eQZzsk1yOzhdwag==",
+ "dev": true,
+ "requires": {
+ "arrify": "^1.0.1",
+ "path-type": "^3.0.0"
+ },
+ "dependencies": {
+ "path-type": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz",
+ "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==",
+ "dev": true,
+ "requires": {
+ "pify": "^3.0.0"
+ }
+ },
+ "pify": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
+ "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
+ "dev": true
+ }
+ }
+ },
+ "doctrine": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz",
+ "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==",
+ "dev": true,
+ "requires": {
+ "esutils": "^2.0.2"
+ }
+ },
+ "dom-serializer": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz",
+ "integrity": "sha1-BzxpdUbOB4DOI75KKOKT5AvDDII=",
+ "dev": true,
+ "requires": {
+ "domelementtype": "~1.1.1",
+ "entities": "~1.1.1"
+ },
+ "dependencies": {
+ "domelementtype": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.1.3.tgz",
+ "integrity": "sha1-vSh3PiZCiBrsUVRJJCmcXNgiGFs=",
+ "dev": true
+ }
+ }
+ },
+ "domain-browser": {
+ "version": "1.1.7",
+ "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.1.7.tgz",
+ "integrity": "sha1-hnqksJP6oF8d4IwG9NeyH9+GmLw=",
+ "dev": true
+ },
+ "domelementtype": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.0.tgz",
+ "integrity": "sha1-sXrtguirWeUt2cGbF1bg/BhyBMI=",
+ "dev": true
+ },
+ "domhandler": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz",
+ "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==",
+ "dev": true,
+ "requires": {
+ "domelementtype": "1"
+ }
+ },
+ "domutils": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz",
+ "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=",
+ "dev": true,
+ "requires": {
+ "dom-serializer": "0",
+ "domelementtype": "1"
+ }
+ },
+ "dot-prop": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-3.0.0.tgz",
+ "integrity": "sha1-G3CK8JSknJoOfbyteQq6U52sEXc=",
+ "dev": true,
+ "requires": {
+ "is-obj": "^1.0.0"
+ }
+ },
+ "dotenv": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-4.0.0.tgz",
+ "integrity": "sha1-hk7xN5rO1Vzm+V3r7NzhefegzR0=",
+ "dev": true
+ },
+ "dotenv-safe": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/dotenv-safe/-/dotenv-safe-4.0.4.tgz",
+ "integrity": "sha1-iw587Y5wsdPF2HTvlCDkBvOUJbM=",
+ "dev": true,
+ "requires": {
+ "dotenv": "^4.0.0"
+ }
+ },
+ "dugite": {
+ "version": "1.63.0",
+ "resolved": "https://registry.npmjs.org/dugite/-/dugite-1.63.0.tgz",
+ "integrity": "sha512-CFd0sWTB2oouat0kJA4/rEQAeh6ZUvCDL9uFOaSBhLX+2CM/YL+ebKJXd8dYVIe8iVXmK5R9P31NVbRw4Ccoxw==",
+ "dev": true,
+ "requires": {
+ "checksum": "^0.1.1",
+ "mkdirp": "^0.5.1",
+ "progress": "^2.0.0",
+ "request": "^2.85.0",
+ "rimraf": "^2.5.4",
+ "tar": "^4.0.2"
+ }
+ },
+ "duplexer2": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz",
+ "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=",
+ "dev": true,
+ "requires": {
+ "readable-stream": "^2.0.2"
+ },
+ "dependencies": {
+ "isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
+ "dev": true
+ },
+ "readable-stream": {
+ "version": "2.3.6",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
+ "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
+ "dev": true,
+ "requires": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
+ }
+ },
+ "string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "dev": true,
+ "requires": {
+ "safe-buffer": "~5.1.0"
+ }
+ }
+ }
+ },
+ "duplexer3": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz",
+ "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=",
+ "dev": true
+ },
+ "duplexify": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.6.0.tgz",
+ "integrity": "sha512-fO3Di4tBKJpYTFHAxTU00BcfWMY9w24r/x21a6rZRbsD/ToUgGxsMbiGRmB7uVAXeGKXD9MwiLZa5E97EVgIRQ==",
+ "dev": true,
+ "requires": {
+ "end-of-stream": "^1.0.0",
+ "inherits": "^2.0.1",
+ "readable-stream": "^2.0.0",
+ "stream-shift": "^1.0.0"
+ },
+ "dependencies": {
+ "isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
+ "dev": true
+ },
+ "readable-stream": {
+ "version": "2.3.6",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
+ "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
+ "dev": true,
+ "requires": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
+ }
+ },
+ "string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "dev": true,
+ "requires": {
+ "safe-buffer": "~5.1.0"
+ }
+ }
+ }
+ },
+ "ecc-jsbn": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
+ "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "jsbn": "~0.1.0",
+ "safer-buffer": "^2.1.0"
+ }
+ },
+ "ee-first": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
+ "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=",
+ "dev": true
+ },
+ "electabul": {
+ "version": "0.0.4",
+ "resolved": "https://registry.npmjs.org/electabul/-/electabul-0.0.4.tgz",
+ "integrity": "sha1-aBO+LTdwciKVrFXxM0/mu5iymsI=",
+ "dev": true,
+ "requires": {
+ "asar": "^0.12.1",
+ "glob": "^7.0.5",
+ "istanbul": "^0.4.4",
+ "mkdirp": "^0.5.1",
+ "rimraf": "^2.5.4",
+ "temp": "^0.8.3",
+ "yargs": "^4.8.1"
+ },
+ "dependencies": {
+ "asar": {
+ "version": "0.12.4",
+ "resolved": "https://registry.npmjs.org/asar/-/asar-0.12.4.tgz",
+ "integrity": "sha1-LdPxFoguq4wPI7dUeSqCp9n84XE=",
+ "dev": true,
+ "requires": {
+ "chromium-pickle-js": "^0.2.0",
+ "commander": "^2.9.0",
+ "cuint": "^0.2.1",
+ "glob": "^6.0.4",
+ "minimatch": "^3.0.3",
+ "mkdirp": "^0.5.0",
+ "mksnapshot": "^0.3.0",
+ "tmp": "0.0.28"
+ },
+ "dependencies": {
+ "glob": {
+ "version": "6.0.4",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz",
+ "integrity": "sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI=",
+ "dev": true,
+ "requires": {
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "2 || 3",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ }
+ }
+ }
+ },
+ "chromium-pickle-js": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/chromium-pickle-js/-/chromium-pickle-js-0.2.0.tgz",
+ "integrity": "sha1-BKEGZywYsIWrd02YPfo+oTjyIgU=",
+ "dev": true
+ },
+ "glob": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
+ "integrity": "sha1-wZyd+aAocC1nhhI4SmVSQExjbRU=",
+ "dev": true,
+ "requires": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.0.4",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ }
+ }
+ }
+ },
+ "electron-docs": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/electron-docs/-/electron-docs-2.0.1.tgz",
+ "integrity": "sha1-ARI6T8y2vieswSgAJ7/LJAxUsdI=",
+ "dev": true,
+ "requires": {
+ "got": "^6.3.0",
+ "gunzip-maybe": "^1.3.1",
+ "node-dir": "^0.1.12",
+ "ora": "^0.2.3",
+ "path-exists": "^3.0.0",
+ "pify": "^2.3.0",
+ "semver": "^5.1.0",
+ "tar-fs": "^1.13.0"
+ },
+ "dependencies": {
+ "ora": {
+ "version": "0.2.3",
+ "resolved": "https://registry.npmjs.org/ora/-/ora-0.2.3.tgz",
+ "integrity": "sha1-N1J9Igrc1Tw5tzVx11QVbV22V6Q=",
+ "dev": true,
+ "requires": {
+ "chalk": "^1.1.1",
+ "cli-cursor": "^1.0.2",
+ "cli-spinners": "^0.1.2",
+ "object-assign": "^4.0.1"
+ }
+ },
+ "path-exists": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
+ "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
+ "dev": true
+ }
+ }
+ },
+ "electron-docs-linter": {
+ "version": "2.4.0",
+ "resolved": "https://registry.npmjs.org/electron-docs-linter/-/electron-docs-linter-2.4.0.tgz",
+ "integrity": "sha512-WvxXsk6kl4x0nrQOqMYAXsMMbSouSwa8VeNd+Bps9HM7QXuNNNVPFB1UEdykq06HWS60lUt4VUiAjQjAJJpcSg==",
+ "dev": true,
+ "requires": {
+ "cheerio": "^0.22.0",
+ "clean-deep": "^2.0.1",
+ "decamelize": "^1.2.0",
+ "dedent": "^0.6.0",
+ "electron-docs": "^2.0.1",
+ "entities": "^1.1.1",
+ "keyed-array": "^2.1.2",
+ "lodash.merge": "^4.6.0",
+ "lodash.pick": "^4.2.1",
+ "marky-markdown-lite": "^1.2.0",
+ "minimist": "^1.2.0",
+ "ora": "^0.3.0",
+ "path-exists": "^3.0.0",
+ "pify": "^2.3.0",
+ "revalidator": "^0.3.1",
+ "semver": "^5.3.0"
+ },
+ "dependencies": {
+ "path-exists": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
+ "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
+ "dev": true
+ }
+ }
+ },
+ "electron-typescript-definitions": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/electron-typescript-definitions/-/electron-typescript-definitions-2.1.1.tgz",
+ "integrity": "sha512-vrEhi3hhPzUEDLwPGOqScYBLefNKH5r9odp3dy/lqE0nhAmUHBkrwnU5jVga3A2pJW22wzCCB1kwkEoPV7Rq4w==",
+ "dev": true,
+ "requires": {
+ "@types/node": "^7.0.18",
+ "colors": "^1.1.2",
+ "debug": "^2.6.3",
+ "electron-docs": "^2.0.0",
+ "electron-docs-linter": "^2.4.0",
+ "lodash": "^4.17.11",
+ "mkdirp": "^0.5.1",
+ "rimraf": "^2.5.4",
+ "tslint": "^4.5.1",
+ "typescript": "^2.2.1"
+ },
+ "dependencies": {
+ "lodash": {
+ "version": "4.17.11",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz",
+ "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==",
+ "dev": true
+ }
+ }
+ },
+ "elliptic": {
+ "version": "6.4.0",
+ "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.0.tgz",
+ "integrity": "sha1-ysmvh2LIWDYYcAPI3+GT5eLq5d8=",
+ "dev": true,
+ "requires": {
+ "bn.js": "^4.4.0",
+ "brorand": "^1.0.1",
+ "hash.js": "^1.0.0",
+ "hmac-drbg": "^1.0.0",
+ "inherits": "^2.0.1",
+ "minimalistic-assert": "^1.0.0",
+ "minimalistic-crypto-utils": "^1.0.0"
+ }
+ },
+ "encodeurl": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
+ "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=",
+ "dev": true
+ },
+ "end-of-stream": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz",
+ "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==",
+ "dev": true,
+ "requires": {
+ "once": "^1.4.0"
+ }
+ },
+ "ensure-posix-path": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/ensure-posix-path/-/ensure-posix-path-1.0.2.tgz",
+ "integrity": "sha1-pls+QtC3HPxYXrd0+ZQ8jZuRsMI=",
+ "dev": true
+ },
+ "entities": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.1.tgz",
+ "integrity": "sha1-blwtClYhtdra7O+AuQ7ftc13cvA=",
+ "dev": true
+ },
+ "error-ex": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz",
+ "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=",
+ "dev": true,
+ "requires": {
+ "is-arrayish": "^0.2.1"
+ }
+ },
+ "es-abstract": {
+ "version": "1.12.0",
+ "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.12.0.tgz",
+ "integrity": "sha512-C8Fx/0jFmV5IPoMOFPA9P9G5NtqW+4cOPit3MIuvR2t7Ag2K15EJTpxnHAYTzL+aYQJIESYeXZmDBfOBE1HcpA==",
+ "dev": true,
+ "requires": {
+ "es-to-primitive": "^1.1.1",
+ "function-bind": "^1.1.1",
+ "has": "^1.0.1",
+ "is-callable": "^1.1.3",
+ "is-regex": "^1.0.4"
+ }
+ },
+ "es-to-primitive": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.1.1.tgz",
+ "integrity": "sha1-RTVSSKiJeQNLZ5Lhm7gfK3l13Q0=",
+ "dev": true,
+ "requires": {
+ "is-callable": "^1.1.1",
+ "is-date-object": "^1.0.1",
+ "is-symbol": "^1.0.1"
+ }
+ },
+ "escape-html": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
+ "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=",
+ "dev": true
+ },
+ "escape-string-regexp": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+ "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
+ "dev": true
+ },
+ "escodegen": {
+ "version": "1.8.1",
+ "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.8.1.tgz",
+ "integrity": "sha1-WltTr0aTEQvrsIZ6o0MN07cKEBg=",
+ "dev": true,
+ "requires": {
+ "esprima": "^2.7.1",
+ "estraverse": "^1.9.1",
+ "esutils": "^2.0.2",
+ "optionator": "^0.8.1",
+ "source-map": "~0.2.0"
+ },
+ "dependencies": {
+ "source-map": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.2.0.tgz",
+ "integrity": "sha1-2rc/vPwrqBm03gO9b26qSBZLP50=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "amdefine": ">=0.0.4"
+ }
+ }
+ }
+ },
+ "eslint": {
+ "version": "5.6.0",
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-5.6.0.tgz",
+ "integrity": "sha512-/eVYs9VVVboX286mBK7bbKnO1yamUy2UCRjiY6MryhQL2PaaXCExsCQ2aO83OeYRhU2eCU/FMFP+tVMoOrzNrA==",
+ "dev": true,
+ "requires": {
+ "@babel/code-frame": "^7.0.0",
+ "ajv": "^6.5.3",
+ "chalk": "^2.1.0",
+ "cross-spawn": "^6.0.5",
+ "debug": "^3.1.0",
+ "doctrine": "^2.1.0",
+ "eslint-scope": "^4.0.0",
+ "eslint-utils": "^1.3.1",
+ "eslint-visitor-keys": "^1.0.0",
+ "espree": "^4.0.0",
+ "esquery": "^1.0.1",
+ "esutils": "^2.0.2",
+ "file-entry-cache": "^2.0.0",
+ "functional-red-black-tree": "^1.0.1",
+ "glob": "^7.1.2",
+ "globals": "^11.7.0",
+ "ignore": "^4.0.6",
+ "imurmurhash": "^0.1.4",
+ "inquirer": "^6.1.0",
+ "is-resolvable": "^1.1.0",
+ "js-yaml": "^3.12.0",
+ "json-stable-stringify-without-jsonify": "^1.0.1",
+ "levn": "^0.3.0",
+ "lodash": "^4.17.5",
+ "minimatch": "^3.0.4",
+ "mkdirp": "^0.5.1",
+ "natural-compare": "^1.4.0",
+ "optionator": "^0.8.2",
+ "path-is-inside": "^1.0.2",
+ "pluralize": "^7.0.0",
+ "progress": "^2.0.0",
+ "regexpp": "^2.0.0",
+ "require-uncached": "^1.0.3",
+ "semver": "^5.5.1",
+ "strip-ansi": "^4.0.0",
+ "strip-json-comments": "^2.0.1",
+ "table": "^4.0.3",
+ "text-table": "^0.2.0"
+ },
+ "dependencies": {
+ "ajv": {
+ "version": "6.5.3",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.3.tgz",
+ "integrity": "sha512-LqZ9wY+fx3UMiiPd741yB2pj3hhil+hQc8taf4o2QGRFpWgZ2V5C8HA165DY9sS3fJwsk7uT7ZlFEyC3Ig3lLg==",
+ "dev": true,
+ "requires": {
+ "fast-deep-equal": "^2.0.1",
+ "fast-json-stable-stringify": "^2.0.0",
+ "json-schema-traverse": "^0.4.1",
+ "uri-js": "^4.2.2"
+ }
+ },
+ "ansi-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
+ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
+ "dev": true
+ },
+ "ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "dev": true,
+ "requires": {
+ "color-convert": "^1.9.0"
+ }
+ },
+ "chalk": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz",
+ "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ }
+ },
+ "cross-spawn": {
+ "version": "6.0.5",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
+ "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
+ "dev": true,
+ "requires": {
+ "nice-try": "^1.0.4",
+ "path-key": "^2.0.1",
+ "semver": "^5.5.0",
+ "shebang-command": "^1.2.0",
+ "which": "^1.2.9"
+ }
+ },
+ "debug": {
+ "version": "3.2.5",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.5.tgz",
+ "integrity": "sha512-D61LaDQPQkxJ5AUM2mbSJRbPkNs/TmdmOeLAi1hgDkpDfIfetSrjmWhccwtuResSwMbACjx/xXQofvM9CE/aeg==",
+ "dev": true,
+ "requires": {
+ "ms": "^2.1.1"
+ }
+ },
+ "esprima": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
+ "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
+ "dev": true
+ },
+ "fast-deep-equal": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz",
+ "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=",
+ "dev": true
+ },
+ "glob": {
+ "version": "7.1.3",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz",
+ "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==",
+ "dev": true,
+ "requires": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.0.4",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ }
+ },
+ "has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
+ "dev": true
+ },
+ "ignore": {
+ "version": "4.0.6",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz",
+ "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==",
+ "dev": true
+ },
+ "js-yaml": {
+ "version": "3.12.0",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.0.tgz",
+ "integrity": "sha512-PIt2cnwmPfL4hKNwqeiuz4bKfnzHTBv6HyVgjahA6mPLwPDzjDWrplJBMjHUFxku/N3FlmrbyPclad+I+4mJ3A==",
+ "dev": true,
+ "requires": {
+ "argparse": "^1.0.7",
+ "esprima": "^4.0.0"
+ }
+ },
+ "json-schema-traverse": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
+ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
+ "dev": true
+ },
+ "ms": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
+ "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==",
+ "dev": true
+ },
+ "semver": {
+ "version": "5.5.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.1.tgz",
+ "integrity": "sha512-PqpAxfrEhlSUWge8dwIp4tZnQ25DIOthpiaHNIthsjEFQD6EvqUKUDM7L8O2rShkFccYo1VjJR0coWfNkCubRw==",
+ "dev": true
+ },
+ "strip-ansi": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
+ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^3.0.0"
+ }
+ },
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^3.0.0"
+ }
+ }
+ }
+ },
+ "eslint-config-standard": {
+ "version": "12.0.0",
+ "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-12.0.0.tgz",
+ "integrity": "sha512-COUz8FnXhqFitYj4DTqHzidjIL/t4mumGZto5c7DrBpvWoie+Sn3P4sLEzUGeYhRElWuFEf8K1S1EfvD1vixCQ==",
+ "dev": true
+ },
+ "eslint-config-standard-jsx": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/eslint-config-standard-jsx/-/eslint-config-standard-jsx-6.0.2.tgz",
+ "integrity": "sha512-D+YWAoXw+2GIdbMBRAzWwr1ZtvnSf4n4yL0gKGg7ShUOGXkSOLerI17K4F6LdQMJPNMoWYqepzQD/fKY+tXNSg==",
+ "dev": true
+ },
+ "eslint-import-resolver-node": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.2.tgz",
+ "integrity": "sha512-sfmTqJfPSizWu4aymbPr4Iidp5yKm8yDkHp+Ir3YiTHiiDfxh69mOUsmiqW6RZ9zRXFaF64GtYmN7e+8GHBv6Q==",
+ "dev": true,
+ "requires": {
+ "debug": "^2.6.9",
+ "resolve": "^1.5.0"
+ }
+ },
+ "eslint-module-utils": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.2.0.tgz",
+ "integrity": "sha1-snA2LNiLGkitMIl2zn+lTphBF0Y=",
+ "dev": true,
+ "requires": {
+ "debug": "^2.6.8",
+ "pkg-dir": "^1.0.0"
+ }
+ },
+ "eslint-plugin-es": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-1.3.1.tgz",
+ "integrity": "sha512-9XcVyZiQRVeFjqHw8qHNDAZcQLqaHlOGGpeYqzYh8S4JYCWTCO3yzyen8yVmA5PratfzTRWDwCOFphtDEG+w/w==",
+ "dev": true,
+ "requires": {
+ "eslint-utils": "^1.3.0",
+ "regexpp": "^2.0.0"
+ }
+ },
+ "eslint-plugin-import": {
+ "version": "2.14.0",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.14.0.tgz",
+ "integrity": "sha512-FpuRtniD/AY6sXByma2Wr0TXvXJ4nA/2/04VPlfpmUDPOpOY264x+ILiwnrk/k4RINgDAyFZByxqPUbSQ5YE7g==",
+ "dev": true,
+ "requires": {
+ "contains-path": "^0.1.0",
+ "debug": "^2.6.8",
+ "doctrine": "1.5.0",
+ "eslint-import-resolver-node": "^0.3.1",
+ "eslint-module-utils": "^2.2.0",
+ "has": "^1.0.1",
+ "lodash": "^4.17.4",
+ "minimatch": "^3.0.3",
+ "read-pkg-up": "^2.0.0",
+ "resolve": "^1.6.0"
+ },
+ "dependencies": {
+ "doctrine": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz",
+ "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=",
+ "dev": true,
+ "requires": {
+ "esutils": "^2.0.2",
+ "isarray": "^1.0.0"
+ }
+ },
+ "find-up": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
+ "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
+ "dev": true,
+ "requires": {
+ "locate-path": "^2.0.0"
+ }
+ },
+ "isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
+ "dev": true
+ },
+ "load-json-file": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz",
+ "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.2",
+ "parse-json": "^2.2.0",
+ "pify": "^2.0.0",
+ "strip-bom": "^3.0.0"
+ }
+ },
+ "path-type": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz",
+ "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=",
+ "dev": true,
+ "requires": {
+ "pify": "^2.0.0"
+ }
+ },
+ "read-pkg": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz",
+ "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=",
+ "dev": true,
+ "requires": {
+ "load-json-file": "^2.0.0",
+ "normalize-package-data": "^2.3.2",
+ "path-type": "^2.0.0"
+ }
+ },
+ "read-pkg-up": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz",
+ "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=",
+ "dev": true,
+ "requires": {
+ "find-up": "^2.0.0",
+ "read-pkg": "^2.0.0"
+ }
+ },
+ "strip-bom": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
+ "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=",
+ "dev": true
+ }
+ }
+ },
+ "eslint-plugin-mocha": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-mocha/-/eslint-plugin-mocha-5.2.0.tgz",
+ "integrity": "sha512-4VTX/qIoxUFRnXLNm6bEhEJyfGnGagmQzV4TWXKzkZgIYyP2FSubEdCjEFTyS/dGwSVRWCWGX7jO7BK8R0kppg==",
+ "dev": true,
+ "requires": {
+ "ramda": "^0.25.0"
+ }
+ },
+ "eslint-plugin-node": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-7.0.1.tgz",
+ "integrity": "sha512-lfVw3TEqThwq0j2Ba/Ckn2ABdwmL5dkOgAux1rvOk6CO7A6yGyPI2+zIxN6FyNkp1X1X/BSvKOceD6mBWSj4Yw==",
+ "dev": true,
+ "requires": {
+ "eslint-plugin-es": "^1.3.1",
+ "eslint-utils": "^1.3.1",
+ "ignore": "^4.0.2",
+ "minimatch": "^3.0.4",
+ "resolve": "^1.8.1",
+ "semver": "^5.5.0"
+ },
+ "dependencies": {
+ "ignore": {
+ "version": "4.0.6",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz",
+ "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==",
+ "dev": true
+ },
+ "resolve": {
+ "version": "1.8.1",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.8.1.tgz",
+ "integrity": "sha512-AicPrAC7Qu1JxPCZ9ZgCZlY35QgFnNqc+0LtbRNxnVw4TXvjQ72wnuL9JQcEBgXkI9JM8MsT9kaQoHcpCRJOYA==",
+ "dev": true,
+ "requires": {
+ "path-parse": "^1.0.5"
+ }
+ }
+ }
+ },
+ "eslint-plugin-promise": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-4.0.1.tgz",
+ "integrity": "sha512-Si16O0+Hqz1gDHsys6RtFRrW7cCTB6P7p3OJmKp3Y3dxpQE2qwOA7d3xnV+0mBmrPoi0RBnxlCKvqu70te6wjg==",
+ "dev": true
+ },
+ "eslint-plugin-react": {
+ "version": "7.11.1",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.11.1.tgz",
+ "integrity": "sha512-cVVyMadRyW7qsIUh3FHp3u6QHNhOgVrLQYdQEB1bPWBsgbNCHdFAeNMquBMCcZJu59eNthX053L70l7gRt4SCw==",
+ "dev": true,
+ "requires": {
+ "array-includes": "^3.0.3",
+ "doctrine": "^2.1.0",
+ "has": "^1.0.3",
+ "jsx-ast-utils": "^2.0.1",
+ "prop-types": "^15.6.2"
+ },
+ "dependencies": {
+ "has": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
+ "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
+ "dev": true,
+ "requires": {
+ "function-bind": "^1.1.1"
+ }
+ }
+ }
+ },
+ "eslint-plugin-standard": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-standard/-/eslint-plugin-standard-4.0.0.tgz",
+ "integrity": "sha512-OwxJkR6TQiYMmt1EsNRMe5qG3GsbjlcOhbGUBY4LtavF9DsLaTcoR+j2Tdjqi23oUwKNUqX7qcn5fPStafMdlA==",
+ "dev": true
+ },
+ "eslint-scope": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.0.tgz",
+ "integrity": "sha512-1G6UTDi7Jc1ELFwnR58HV4fK9OQK4S6N985f166xqXxpjU6plxFISJa2Ba9KCQuFa8RCnj/lSFJbHo7UFDBnUA==",
+ "dev": true,
+ "requires": {
+ "esrecurse": "^4.1.0",
+ "estraverse": "^4.1.1"
+ },
+ "dependencies": {
+ "estraverse": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz",
+ "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=",
+ "dev": true
+ }
+ }
+ },
+ "eslint-utils": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.3.1.tgz",
+ "integrity": "sha512-Z7YjnIldX+2XMcjr7ZkgEsOj/bREONV60qYeB/bjMAqqqZ4zxKyWX+BOUkdmRmA9riiIPVvo5x86m5elviOk0Q==",
+ "dev": true
+ },
+ "eslint-visitor-keys": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz",
+ "integrity": "sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ==",
+ "dev": true
+ },
+ "espree": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/espree/-/espree-4.0.0.tgz",
+ "integrity": "sha512-kapdTCt1bjmspxStVKX6huolXVV5ZfyZguY1lcfhVVZstce3bqxH9mcLzNn3/mlgW6wQ732+0fuG9v7h0ZQoKg==",
+ "dev": true,
+ "requires": {
+ "acorn": "^5.6.0",
+ "acorn-jsx": "^4.1.1"
+ },
+ "dependencies": {
+ "acorn": {
+ "version": "5.7.3",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.3.tgz",
+ "integrity": "sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==",
+ "dev": true
+ }
+ }
+ },
+ "esprima": {
+ "version": "2.7.3",
+ "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz",
+ "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=",
+ "dev": true
+ },
+ "esquery": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.1.tgz",
+ "integrity": "sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==",
+ "dev": true,
+ "requires": {
+ "estraverse": "^4.0.0"
+ },
+ "dependencies": {
+ "estraverse": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz",
+ "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=",
+ "dev": true
+ }
+ }
+ },
+ "esrecurse": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz",
+ "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==",
+ "dev": true,
+ "requires": {
+ "estraverse": "^4.1.0"
+ },
+ "dependencies": {
+ "estraverse": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz",
+ "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=",
+ "dev": true
+ }
+ }
+ },
+ "estraverse": {
+ "version": "1.9.3",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-1.9.3.tgz",
+ "integrity": "sha1-r2fy3JIlgkFZUJJgkaQAXSnJu0Q=",
+ "dev": true
+ },
+ "esutils": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz",
+ "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=",
+ "dev": true
+ },
+ "etag": {
+ "version": "1.8.1",
+ "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
+ "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=",
+ "dev": true
+ },
+ "events": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz",
+ "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=",
+ "dev": true
+ },
+ "evp_bytestokey": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz",
+ "integrity": "sha1-f8vbGY3HGVlDLv4ThCaE4FJaywI=",
+ "dev": true,
+ "requires": {
+ "md5.js": "^1.3.4",
+ "safe-buffer": "^5.1.1"
+ }
+ },
+ "execa": {
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz",
+ "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=",
+ "dev": true,
+ "requires": {
+ "cross-spawn": "^5.0.1",
+ "get-stream": "^3.0.0",
+ "is-stream": "^1.1.0",
+ "npm-run-path": "^2.0.0",
+ "p-finally": "^1.0.0",
+ "signal-exit": "^3.0.0",
+ "strip-eof": "^1.0.0"
+ }
+ },
+ "exit-hook": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/exit-hook/-/exit-hook-1.1.1.tgz",
+ "integrity": "sha1-8FyiM7SMBdVP/wd2XfhQfpXAL/g=",
+ "dev": true
+ },
+ "expand-brackets": {
+ "version": "0.1.5",
+ "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz",
+ "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=",
+ "dev": true,
+ "requires": {
+ "is-posix-bracket": "^0.1.0"
+ }
+ },
+ "expand-range": {
+ "version": "1.8.2",
+ "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz",
+ "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=",
+ "dev": true,
+ "requires": {
+ "fill-range": "^2.1.0"
+ }
+ },
+ "extend": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz",
+ "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=",
+ "dev": true
+ },
+ "extend-shallow": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
+ "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=",
+ "dev": true,
+ "requires": {
+ "assign-symbols": "^1.0.0",
+ "is-extendable": "^1.0.1"
+ },
+ "dependencies": {
+ "is-extendable": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
+ "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
+ "dev": true,
+ "requires": {
+ "is-plain-object": "^2.0.4"
+ }
+ }
+ }
+ },
+ "external-editor": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.0.3.tgz",
+ "integrity": "sha512-bn71H9+qWoOQKyZDo25mOMVpSmXROAsTJVVVYzrrtol3d4y+AsKjf4Iwl2Q+IuT0kFSQ1qo166UuIwqYq7mGnA==",
+ "dev": true,
+ "requires": {
+ "chardet": "^0.7.0",
+ "iconv-lite": "^0.4.24",
+ "tmp": "^0.0.33"
+ },
+ "dependencies": {
+ "iconv-lite": {
+ "version": "0.4.24",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
+ "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
+ "dev": true,
+ "requires": {
+ "safer-buffer": ">= 2.1.2 < 3"
+ }
+ },
+ "tmp": {
+ "version": "0.0.33",
+ "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz",
+ "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==",
+ "dev": true,
+ "requires": {
+ "os-tmpdir": "~1.0.2"
+ }
+ }
+ }
+ },
+ "extglob": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz",
+ "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=",
+ "dev": true,
+ "requires": {
+ "is-extglob": "^1.0.0"
+ }
+ },
+ "extsprintf": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
+ "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=",
+ "dev": true
+ },
+ "falafel": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/falafel/-/falafel-2.1.0.tgz",
+ "integrity": "sha1-lrsXdh2rqU9G0AFzizzt86Z/4Gw=",
+ "dev": true,
+ "requires": {
+ "acorn": "^5.0.0",
+ "foreach": "^2.0.5",
+ "isarray": "0.0.1",
+ "object-keys": "^1.0.6"
+ },
+ "dependencies": {
+ "acorn": {
+ "version": "5.7.3",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.3.tgz",
+ "integrity": "sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==",
+ "dev": true
+ },
+ "object-keys": {
+ "version": "1.0.12",
+ "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.12.tgz",
+ "integrity": "sha512-FTMyFUm2wBcGHnH2eXmz7tC6IwlqQZ6mVZ+6dm6vZ4IQIHjs6FdNsQBuKGPuUUUY6NfJw2PshC08Tn6LzLDOag==",
+ "dev": true
+ }
+ }
+ },
+ "fast-deep-equal": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz",
+ "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=",
+ "dev": true
+ },
+ "fast-glob": {
+ "version": "2.2.2",
+ "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.2.tgz",
+ "integrity": "sha512-TR6zxCKftDQnUAPvkrCWdBgDq/gbqx8A3ApnBrR5rMvpp6+KMJI0Igw7fkWPgeVK0uhRXTXdvO3O+YP0CaUX2g==",
+ "dev": true,
+ "requires": {
+ "@mrmlnc/readdir-enhanced": "^2.2.1",
+ "@nodelib/fs.stat": "^1.0.1",
+ "glob-parent": "^3.1.0",
+ "is-glob": "^4.0.0",
+ "merge2": "^1.2.1",
+ "micromatch": "^3.1.10"
+ },
+ "dependencies": {
+ "arr-diff": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz",
+ "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=",
+ "dev": true
+ },
+ "array-unique": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz",
+ "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=",
+ "dev": true
+ },
+ "braces": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
+ "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
+ "dev": true,
+ "requires": {
+ "arr-flatten": "^1.1.0",
+ "array-unique": "^0.3.2",
+ "extend-shallow": "^2.0.1",
+ "fill-range": "^4.0.0",
+ "isobject": "^3.0.1",
+ "repeat-element": "^1.1.2",
+ "snapdragon": "^0.8.1",
+ "snapdragon-node": "^2.0.1",
+ "split-string": "^3.0.2",
+ "to-regex": "^3.0.1"
+ },
+ "dependencies": {
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ }
+ }
+ },
+ "expand-brackets": {
+ "version": "2.1.4",
+ "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz",
+ "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=",
+ "dev": true,
+ "requires": {
+ "debug": "^2.3.3",
+ "define-property": "^0.2.5",
+ "extend-shallow": "^2.0.1",
+ "posix-character-classes": "^0.1.0",
+ "regex-not": "^1.0.0",
+ "snapdragon": "^0.8.1",
+ "to-regex": "^3.0.1"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "^0.1.0"
+ }
+ },
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ },
+ "is-accessor-descriptor": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
+ "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
+ "dev": true,
+ "requires": {
+ "kind-of": "^3.0.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "is-data-descriptor": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
+ "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
+ "dev": true,
+ "requires": {
+ "kind-of": "^3.0.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "is-descriptor": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
+ "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
+ "dev": true,
+ "requires": {
+ "is-accessor-descriptor": "^0.1.6",
+ "is-data-descriptor": "^0.1.4",
+ "kind-of": "^5.0.0"
+ }
+ },
+ "kind-of": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
+ "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
+ "dev": true
+ }
+ }
+ },
+ "extglob": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz",
+ "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==",
+ "dev": true,
+ "requires": {
+ "array-unique": "^0.3.2",
+ "define-property": "^1.0.0",
+ "expand-brackets": "^2.1.4",
+ "extend-shallow": "^2.0.1",
+ "fragment-cache": "^0.2.1",
+ "regex-not": "^1.0.0",
+ "snapdragon": "^0.8.1",
+ "to-regex": "^3.0.1"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
+ "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "^1.0.0"
+ }
+ },
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ }
+ }
+ },
+ "fill-range": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
+ "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
+ "dev": true,
+ "requires": {
+ "extend-shallow": "^2.0.1",
+ "is-number": "^3.0.0",
+ "repeat-string": "^1.6.1",
+ "to-regex-range": "^2.1.0"
+ },
+ "dependencies": {
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ }
+ }
+ },
+ "glob-parent": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz",
+ "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=",
+ "dev": true,
+ "requires": {
+ "is-glob": "^3.1.0",
+ "path-dirname": "^1.0.0"
+ },
+ "dependencies": {
+ "is-glob": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
+ "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
+ "dev": true,
+ "requires": {
+ "is-extglob": "^2.1.0"
+ }
+ }
+ }
+ },
+ "is-accessor-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
+ "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^6.0.0"
+ }
+ },
+ "is-data-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
+ "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^6.0.0"
+ }
+ },
+ "is-descriptor": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
+ "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+ "dev": true,
+ "requires": {
+ "is-accessor-descriptor": "^1.0.0",
+ "is-data-descriptor": "^1.0.0",
+ "kind-of": "^6.0.2"
+ }
+ },
+ "is-extglob": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+ "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
+ "dev": true
+ },
+ "is-glob": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz",
+ "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=",
+ "dev": true,
+ "requires": {
+ "is-extglob": "^2.1.1"
+ }
+ },
+ "is-number": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
+ "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
+ "dev": true,
+ "requires": {
+ "kind-of": "^3.0.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
+ "dev": true
+ },
+ "kind-of": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
+ "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==",
+ "dev": true
+ },
+ "micromatch": {
+ "version": "3.1.10",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
+ "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
+ "dev": true,
+ "requires": {
+ "arr-diff": "^4.0.0",
+ "array-unique": "^0.3.2",
+ "braces": "^2.3.1",
+ "define-property": "^2.0.2",
+ "extend-shallow": "^3.0.2",
+ "extglob": "^2.0.4",
+ "fragment-cache": "^0.2.1",
+ "kind-of": "^6.0.2",
+ "nanomatch": "^1.2.9",
+ "object.pick": "^1.3.0",
+ "regex-not": "^1.0.0",
+ "snapdragon": "^0.8.1",
+ "to-regex": "^3.0.2"
+ }
+ }
+ }
+ },
+ "fast-json-stable-stringify": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz",
+ "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=",
+ "dev": true
+ },
+ "fast-levenshtein": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
+ "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=",
+ "dev": true
+ },
+ "fault": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/fault/-/fault-1.0.2.tgz",
+ "integrity": "sha512-o2eo/X2syzzERAtN5LcGbiVQ0WwZSlN3qLtadwAz3X8Bu+XWD16dja/KMsjZLiQr+BLGPDnHGkc4yUJf1Xpkpw==",
+ "dev": true,
+ "requires": {
+ "format": "^0.2.2"
+ }
+ },
+ "figures": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz",
+ "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=",
+ "dev": true,
+ "requires": {
+ "escape-string-regexp": "^1.0.5"
+ }
+ },
+ "file-entry-cache": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz",
+ "integrity": "sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=",
+ "dev": true,
+ "requires": {
+ "flat-cache": "^1.2.1",
+ "object-assign": "^4.0.1"
+ }
+ },
+ "filename-regex": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz",
+ "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=",
+ "dev": true
+ },
+ "filesize": {
+ "version": "3.6.1",
+ "resolved": "https://registry.npmjs.org/filesize/-/filesize-3.6.1.tgz",
+ "integrity": "sha512-7KjR1vv6qnicaPMi1iiTcI85CyYwRO/PSFCu6SvqL8jN2Wjt/NIYQTFtFs7fSDCYOstUkEWIQGFUg5YZQfjlcg==",
+ "dev": true
+ },
+ "fill-range": {
+ "version": "2.2.4",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.4.tgz",
+ "integrity": "sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==",
+ "dev": true,
+ "requires": {
+ "is-number": "^2.1.0",
+ "isobject": "^2.0.0",
+ "randomatic": "^3.0.0",
+ "repeat-element": "^1.1.2",
+ "repeat-string": "^1.5.2"
+ }
+ },
+ "find-root": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz",
+ "integrity": "sha1-q8/Iunb3CMQql7PWhbfpRQv7nOQ=",
+ "dev": true
+ },
+ "find-up": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz",
+ "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=",
+ "dev": true,
+ "requires": {
+ "path-exists": "^2.0.0",
+ "pinkie-promise": "^2.0.0"
+ }
+ },
+ "findup-sync": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.3.0.tgz",
+ "integrity": "sha1-N5MKpdgWt3fANEXhlmzGeQpMCxY=",
+ "dev": true,
+ "requires": {
+ "glob": "~5.0.0"
+ },
+ "dependencies": {
+ "glob": {
+ "version": "5.0.15",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz",
+ "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=",
+ "dev": true,
+ "requires": {
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "2 || 3",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ }
+ }
+ }
+ },
+ "flat-cache": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.0.tgz",
+ "integrity": "sha1-0wMLMrOBVPTjt+nHCfSQ9++XxIE=",
+ "dev": true,
+ "requires": {
+ "circular-json": "^0.3.1",
+ "del": "^2.0.2",
+ "graceful-fs": "^4.1.2",
+ "write": "^0.2.1"
+ }
+ },
+ "fn-name": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/fn-name/-/fn-name-2.0.1.tgz",
+ "integrity": "sha1-UhTXU3pNBqSjAcDMJi/rhBiAAuc=",
+ "dev": true
+ },
+ "folder-hash": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/folder-hash/-/folder-hash-2.1.1.tgz",
+ "integrity": "sha512-owr5AVhj+nxnzsyDLOiwSUC6S3mqcxJSfZneFgOYoaScMBwPGt3cz0XiBPRrCIUk2Hs1ucQXFGwfB40JxBqb4w==",
+ "dev": true,
+ "requires": {
+ "debug": "^3.1.0",
+ "graceful-fs": "~4.1.11",
+ "minimatch": "~3.0.4"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "3.2.5",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.5.tgz",
+ "integrity": "sha512-D61LaDQPQkxJ5AUM2mbSJRbPkNs/TmdmOeLAi1hgDkpDfIfetSrjmWhccwtuResSwMbACjx/xXQofvM9CE/aeg==",
+ "dev": true,
+ "requires": {
+ "ms": "^2.1.1"
+ }
+ },
+ "ms": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
+ "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==",
+ "dev": true
+ }
+ }
+ },
+ "follow-redirects": {
+ "version": "0.0.7",
+ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-0.0.7.tgz",
+ "integrity": "sha1-NLkLqyqRGqNHVx2pDyK9NuzYqRk=",
+ "dev": true,
+ "requires": {
+ "debug": "^2.2.0",
+ "stream-consume": "^0.1.0"
+ }
+ },
+ "for-in": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz",
+ "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=",
+ "dev": true
+ },
+ "for-own": {
+ "version": "0.1.5",
+ "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz",
+ "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=",
+ "dev": true,
+ "requires": {
+ "for-in": "^1.0.1"
+ }
+ },
+ "foreach": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz",
+ "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=",
+ "dev": true
+ },
+ "forever-agent": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
+ "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=",
+ "dev": true
+ },
+ "form-data": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz",
+ "integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=",
+ "dev": true,
+ "requires": {
+ "asynckit": "^0.4.0",
+ "combined-stream": "1.0.6",
+ "mime-types": "^2.1.12"
+ }
+ },
+ "format": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/format/-/format-0.2.2.tgz",
+ "integrity": "sha1-1hcBB+nv3E7TDJ3DkBbflCtctYs=",
+ "dev": true
+ },
+ "fragment-cache": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz",
+ "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=",
+ "dev": true,
+ "requires": {
+ "map-cache": "^0.2.2"
+ }
+ },
+ "fresh": {
+ "version": "0.5.2",
+ "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
+ "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=",
+ "dev": true
+ },
+ "fs-constants": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz",
+ "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==",
+ "dev": true
+ },
+ "fs-extra": {
+ "version": "0.26.7",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.26.7.tgz",
+ "integrity": "sha1-muH92UiXeY7at20JGM9C0MMYT6k=",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.2",
+ "jsonfile": "^2.1.0",
+ "klaw": "^1.0.0",
+ "path-is-absolute": "^1.0.0",
+ "rimraf": "^2.2.8"
+ }
+ },
+ "fs-minipass": {
+ "version": "1.2.5",
+ "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.5.tgz",
+ "integrity": "sha512-JhBl0skXjUPCFH7x6x61gQxrKyXsxB5gcgePLZCwfyCGGsTISMoIeObbrvVeP6Xmyaudw4TT43qV2Gz+iyd2oQ==",
+ "dev": true,
+ "requires": {
+ "minipass": "^2.2.1"
+ }
+ },
+ "fs.realpath": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
+ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
+ "dev": true
+ },
+ "fsevents": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.4.tgz",
+ "integrity": "sha512-z8H8/diyk76B7q5wg+Ud0+CqzcAF3mBBI/bA5ne5zrRUUIvNkJY//D3BqyH571KuAC4Nr7Rw7CjWX4r0y9DvNg==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "nan": "^2.9.2",
+ "node-pre-gyp": "^0.10.0"
+ },
+ "dependencies": {
+ "abbrev": {
+ "version": "1.1.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "ansi-regex": {
+ "version": "2.1.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "aproba": {
+ "version": "1.2.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "are-we-there-yet": {
+ "version": "1.1.4",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "delegates": "^1.0.0",
+ "readable-stream": "^2.0.6"
+ }
+ },
+ "balanced-match": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "brace-expansion": {
+ "version": "1.1.11",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "chownr": {
+ "version": "1.0.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "code-point-at": {
+ "version": "1.1.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "concat-map": {
+ "version": "0.0.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "console-control-strings": {
+ "version": "1.1.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "core-util-is": {
+ "version": "1.0.2",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "debug": {
+ "version": "2.6.9",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "deep-extend": {
+ "version": "0.5.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "delegates": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "detect-libc": {
+ "version": "1.0.3",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "fs-minipass": {
+ "version": "1.2.5",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "minipass": "^2.2.1"
+ }
+ },
+ "fs.realpath": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "gauge": {
+ "version": "2.7.4",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "aproba": "^1.0.3",
+ "console-control-strings": "^1.0.0",
+ "has-unicode": "^2.0.0",
+ "object-assign": "^4.1.0",
+ "signal-exit": "^3.0.0",
+ "string-width": "^1.0.1",
+ "strip-ansi": "^3.0.1",
+ "wide-align": "^1.1.0"
+ }
+ },
+ "glob": {
+ "version": "7.1.2",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.0.4",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ }
+ },
+ "has-unicode": {
+ "version": "2.0.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "iconv-lite": {
+ "version": "0.4.21",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "safer-buffer": "^2.1.0"
+ }
+ },
+ "ignore-walk": {
+ "version": "3.0.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "minimatch": "^3.0.4"
+ }
+ },
+ "inflight": {
+ "version": "1.0.6",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "once": "^1.3.0",
+ "wrappy": "1"
+ }
+ },
+ "inherits": {
+ "version": "2.0.3",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "ini": {
+ "version": "1.3.5",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "is-fullwidth-code-point": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "number-is-nan": "^1.0.0"
+ }
+ },
+ "isarray": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "minimatch": {
+ "version": "3.0.4",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "brace-expansion": "^1.1.7"
+ }
+ },
+ "minimist": {
+ "version": "0.0.8",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "minipass": {
+ "version": "2.2.4",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "safe-buffer": "^5.1.1",
+ "yallist": "^3.0.0"
+ }
+ },
+ "minizlib": {
+ "version": "1.1.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "minipass": "^2.2.1"
+ }
+ },
+ "mkdirp": {
+ "version": "0.5.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "minimist": "0.0.8"
+ }
+ },
+ "ms": {
+ "version": "2.0.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "needle": {
+ "version": "2.2.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "debug": "^2.1.2",
+ "iconv-lite": "^0.4.4",
+ "sax": "^1.2.4"
+ }
+ },
+ "node-pre-gyp": {
+ "version": "0.10.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "detect-libc": "^1.0.2",
+ "mkdirp": "^0.5.1",
+ "needle": "^2.2.0",
+ "nopt": "^4.0.1",
+ "npm-packlist": "^1.1.6",
+ "npmlog": "^4.0.2",
+ "rc": "^1.1.7",
+ "rimraf": "^2.6.1",
+ "semver": "^5.3.0",
+ "tar": "^4"
+ }
+ },
+ "nopt": {
+ "version": "4.0.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "abbrev": "1",
+ "osenv": "^0.1.4"
+ }
+ },
+ "npm-bundled": {
+ "version": "1.0.3",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "npm-packlist": {
+ "version": "1.1.10",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "ignore-walk": "^3.0.1",
+ "npm-bundled": "^1.0.1"
+ }
+ },
+ "npmlog": {
+ "version": "4.1.2",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "are-we-there-yet": "~1.1.2",
+ "console-control-strings": "~1.1.0",
+ "gauge": "~2.7.3",
+ "set-blocking": "~2.0.0"
+ }
+ },
+ "number-is-nan": {
+ "version": "1.0.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "object-assign": {
+ "version": "4.1.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "once": {
+ "version": "1.4.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "wrappy": "1"
+ }
+ },
+ "os-homedir": {
+ "version": "1.0.2",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "os-tmpdir": {
+ "version": "1.0.2",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "osenv": {
+ "version": "0.1.5",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "os-homedir": "^1.0.0",
+ "os-tmpdir": "^1.0.0"
+ }
+ },
+ "path-is-absolute": {
+ "version": "1.0.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "process-nextick-args": {
+ "version": "2.0.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "rc": {
+ "version": "1.2.7",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "deep-extend": "^0.5.1",
+ "ini": "~1.3.0",
+ "minimist": "^1.2.0",
+ "strip-json-comments": "~2.0.1"
+ },
+ "dependencies": {
+ "minimist": {
+ "version": "1.2.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ }
+ }
+ },
+ "readable-stream": {
+ "version": "2.3.6",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
+ }
+ },
+ "rimraf": {
+ "version": "2.6.2",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "glob": "^7.0.5"
+ }
+ },
+ "safe-buffer": {
+ "version": "5.1.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "safer-buffer": {
+ "version": "2.1.2",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "sax": {
+ "version": "1.2.4",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "semver": {
+ "version": "5.5.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "set-blocking": {
+ "version": "2.0.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "signal-exit": {
+ "version": "3.0.2",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "string-width": {
+ "version": "1.0.2",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "code-point-at": "^1.0.0",
+ "is-fullwidth-code-point": "^1.0.0",
+ "strip-ansi": "^3.0.0"
+ }
+ },
+ "string_decoder": {
+ "version": "1.1.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "safe-buffer": "~5.1.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "3.0.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "ansi-regex": "^2.0.0"
+ }
+ },
+ "strip-json-comments": {
+ "version": "2.0.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "tar": {
+ "version": "4.4.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "chownr": "^1.0.1",
+ "fs-minipass": "^1.2.5",
+ "minipass": "^2.2.4",
+ "minizlib": "^1.1.0",
+ "mkdirp": "^0.5.0",
+ "safe-buffer": "^5.1.1",
+ "yallist": "^3.0.2"
+ }
+ },
+ "util-deprecate": {
+ "version": "1.0.2",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "wide-align": {
+ "version": "1.1.2",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "string-width": "^1.0.2"
+ }
+ },
+ "wrappy": {
+ "version": "1.0.2",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "yallist": {
+ "version": "3.0.2",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ }
+ }
+ },
+ "function-bind": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
+ "integrity": "sha1-pWiZ0+o8m6uHS7l3O3xe3pL0iV0=",
+ "dev": true
+ },
+ "functional-red-black-tree": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz",
+ "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=",
+ "dev": true
+ },
+ "get-caller-file": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz",
+ "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=",
+ "dev": true
+ },
+ "get-pkg-repo": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/get-pkg-repo/-/get-pkg-repo-1.4.0.tgz",
+ "integrity": "sha1-xztInAbYDMVTbCyFP54FIyBWly0=",
+ "dev": true,
+ "requires": {
+ "hosted-git-info": "^2.1.4",
+ "meow": "^3.3.0",
+ "normalize-package-data": "^2.3.0",
+ "parse-github-repo-url": "^1.3.0",
+ "through2": "^2.0.0"
+ },
+ "dependencies": {
+ "camelcase": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz",
+ "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=",
+ "dev": true
+ },
+ "camelcase-keys": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz",
+ "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=",
+ "dev": true,
+ "requires": {
+ "camelcase": "^2.0.0",
+ "map-obj": "^1.0.0"
+ }
+ },
+ "indent-string": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz",
+ "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=",
+ "dev": true,
+ "requires": {
+ "repeating": "^2.0.0"
+ }
+ },
+ "map-obj": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz",
+ "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=",
+ "dev": true
+ },
+ "meow": {
+ "version": "3.7.0",
+ "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz",
+ "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=",
+ "dev": true,
+ "requires": {
+ "camelcase-keys": "^2.0.0",
+ "decamelize": "^1.1.2",
+ "loud-rejection": "^1.0.0",
+ "map-obj": "^1.0.1",
+ "minimist": "^1.1.3",
+ "normalize-package-data": "^2.3.4",
+ "object-assign": "^4.0.1",
+ "read-pkg-up": "^1.0.1",
+ "redent": "^1.0.0",
+ "trim-newlines": "^1.0.0"
+ }
+ },
+ "redent": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz",
+ "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=",
+ "dev": true,
+ "requires": {
+ "indent-string": "^2.1.0",
+ "strip-indent": "^1.0.1"
+ }
+ },
+ "strip-indent": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz",
+ "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=",
+ "dev": true,
+ "requires": {
+ "get-stdin": "^4.0.1"
+ }
+ },
+ "trim-newlines": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz",
+ "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=",
+ "dev": true
+ }
+ }
+ },
+ "get-stdin": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz",
+ "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=",
+ "dev": true
+ },
+ "get-stream": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz",
+ "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=",
+ "dev": true
+ },
+ "get-value": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz",
+ "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=",
+ "dev": true
+ },
+ "getpass": {
+ "version": "0.1.7",
+ "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
+ "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
+ "dev": true,
+ "requires": {
+ "assert-plus": "^1.0.0"
+ }
+ },
+ "git-raw-commits": {
+ "version": "1.3.6",
+ "resolved": "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-1.3.6.tgz",
+ "integrity": "sha512-svsK26tQ8vEKnMshTDatSIQSMDdz8CxIIqKsvPqbtV23Etmw6VNaFAitu8zwZ0VrOne7FztwPyRLxK7/DIUTQg==",
+ "dev": true,
+ "requires": {
+ "dargs": "^4.0.1",
+ "lodash.template": "^4.0.2",
+ "meow": "^4.0.0",
+ "split2": "^2.0.0",
+ "through2": "^2.0.0"
+ }
+ },
+ "git-remote-origin-url": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/git-remote-origin-url/-/git-remote-origin-url-2.0.0.tgz",
+ "integrity": "sha1-UoJlna4hBxRaERJhEq0yFuxfpl8=",
+ "dev": true,
+ "requires": {
+ "gitconfiglocal": "^1.0.0",
+ "pify": "^2.3.0"
+ }
+ },
+ "git-semver-tags": {
+ "version": "1.3.6",
+ "resolved": "https://registry.npmjs.org/git-semver-tags/-/git-semver-tags-1.3.6.tgz",
+ "integrity": "sha512-2jHlJnln4D/ECk9FxGEBh3k44wgYdWjWDtMmJPaecjoRmxKo3Y1Lh8GMYuOPu04CHw86NTAODchYjC5pnpMQig==",
+ "dev": true,
+ "requires": {
+ "meow": "^4.0.0",
+ "semver": "^5.5.0"
+ }
+ },
+ "gitconfiglocal": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/gitconfiglocal/-/gitconfiglocal-1.0.0.tgz",
+ "integrity": "sha1-QdBF84UaXqiPA/JMocYXgRRGS5s=",
+ "dev": true,
+ "requires": {
+ "ini": "^1.3.2"
+ }
+ },
+ "github": {
+ "version": "9.3.1",
+ "resolved": "https://registry.npmjs.org/github/-/github-9.3.1.tgz",
+ "integrity": "sha1-ajxanMKhzQtdCXpHuu+50Ryu+J4=",
+ "dev": true,
+ "requires": {
+ "follow-redirects": "0.0.7",
+ "https-proxy-agent": "^1.0.0",
+ "mime": "^1.2.11",
+ "netrc": "^0.1.4"
+ }
+ },
+ "glob": {
+ "version": "6.0.4",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz",
+ "integrity": "sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI=",
+ "dev": true,
+ "requires": {
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "2 || 3",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ }
+ },
+ "glob-base": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz",
+ "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=",
+ "dev": true,
+ "requires": {
+ "glob-parent": "^2.0.0",
+ "is-glob": "^2.0.0"
+ }
+ },
+ "glob-parent": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz",
+ "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=",
+ "dev": true,
+ "requires": {
+ "is-glob": "^2.0.0"
+ }
+ },
+ "glob-to-regexp": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz",
+ "integrity": "sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=",
+ "dev": true
+ },
+ "global-dirs": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz",
+ "integrity": "sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU=",
+ "dev": true,
+ "requires": {
+ "ini": "^1.3.4"
+ }
+ },
+ "globals": {
+ "version": "11.7.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-11.7.0.tgz",
+ "integrity": "sha512-K8BNSPySfeShBQXsahYB/AbbWruVOTyVpgoIDnl8odPpeSfP2J5QO2oLFFdl2j7GfDCtZj2bMKar2T49itTPCg==",
+ "dev": true
+ },
+ "globby": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz",
+ "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=",
+ "dev": true,
+ "requires": {
+ "array-union": "^1.0.1",
+ "arrify": "^1.0.0",
+ "glob": "^7.0.3",
+ "object-assign": "^4.0.1",
+ "pify": "^2.0.0",
+ "pinkie-promise": "^2.0.0"
+ },
+ "dependencies": {
+ "glob": {
+ "version": "7.1.3",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz",
+ "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==",
+ "dev": true,
+ "requires": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.0.4",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ }
+ }
+ }
+ },
+ "got": {
+ "version": "6.7.1",
+ "resolved": "https://registry.npmjs.org/got/-/got-6.7.1.tgz",
+ "integrity": "sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA=",
+ "dev": true,
+ "requires": {
+ "create-error-class": "^3.0.0",
+ "duplexer3": "^0.1.4",
+ "get-stream": "^3.0.0",
+ "is-redirect": "^1.0.0",
+ "is-retry-allowed": "^1.0.0",
+ "is-stream": "^1.0.0",
+ "lowercase-keys": "^1.0.0",
+ "safe-buffer": "^5.0.1",
+ "timed-out": "^4.0.0",
+ "unzip-response": "^2.0.1",
+ "url-parse-lax": "^1.0.0"
+ }
+ },
+ "graceful-fs": {
+ "version": "4.1.11",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz",
+ "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=",
+ "dev": true
+ },
+ "gunzip-maybe": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/gunzip-maybe/-/gunzip-maybe-1.4.1.tgz",
+ "integrity": "sha512-qtutIKMthNJJgeHQS7kZ9FqDq59/Wn0G2HYCRNjpup7yKfVI6/eqwpmroyZGFoCYaG+sW6psNVb4zoLADHpp2g==",
+ "dev": true,
+ "requires": {
+ "browserify-zlib": "^0.1.4",
+ "is-deflate": "^1.0.0",
+ "is-gzip": "^1.0.0",
+ "peek-stream": "^1.1.0",
+ "pumpify": "^1.3.3",
+ "through2": "^2.0.3"
+ }
+ },
+ "handlebars": {
+ "version": "4.0.11",
+ "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.11.tgz",
+ "integrity": "sha1-Ywo13+ApS8KB7a5v/F0yn8eYLcw=",
+ "dev": true,
+ "requires": {
+ "async": "^1.4.0",
+ "optimist": "^0.6.1",
+ "source-map": "^0.4.4",
+ "uglify-js": "^2.6"
+ },
+ "dependencies": {
+ "minimist": {
+ "version": "0.0.10",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz",
+ "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=",
+ "dev": true
+ },
+ "optimist": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz",
+ "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=",
+ "dev": true,
+ "requires": {
+ "minimist": "~0.0.1",
+ "wordwrap": "~0.0.2"
+ }
+ },
+ "source-map": {
+ "version": "0.4.4",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz",
+ "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=",
+ "dev": true,
+ "requires": {
+ "amdefine": ">=0.0.4"
+ }
+ }
+ }
+ },
+ "har-schema": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz",
+ "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=",
+ "dev": true
+ },
+ "har-validator": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.0.tgz",
+ "integrity": "sha512-+qnmNjI4OfH2ipQ9VQOw23bBd/ibtfbVdK2fYbY4acTDqKTW/YDp9McimZdDbG8iV9fZizUqQMD5xvriB146TA==",
+ "dev": true,
+ "requires": {
+ "ajv": "^5.3.0",
+ "har-schema": "^2.0.0"
+ }
+ },
+ "has": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/has/-/has-1.0.1.tgz",
+ "integrity": "sha1-hGFzP1OLCDfJNh45qauelwTcLyg=",
+ "dev": true,
+ "requires": {
+ "function-bind": "^1.0.2"
+ }
+ },
+ "has-ansi": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
+ "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^2.0.0"
+ }
+ },
+ "has-flag": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz",
+ "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=",
+ "dev": true
+ },
+ "has-value": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz",
+ "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=",
+ "dev": true,
+ "requires": {
+ "get-value": "^2.0.6",
+ "has-values": "^1.0.0",
+ "isobject": "^3.0.0"
+ },
+ "dependencies": {
+ "isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
+ "dev": true
+ }
+ }
+ },
+ "has-values": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz",
+ "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=",
+ "dev": true,
+ "requires": {
+ "is-number": "^3.0.0",
+ "kind-of": "^4.0.0"
+ },
+ "dependencies": {
+ "is-number": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
+ "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
+ "dev": true,
+ "requires": {
+ "kind-of": "^3.0.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "kind-of": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz",
+ "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "hash-base": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz",
+ "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=",
+ "dev": true,
+ "requires": {
+ "inherits": "^2.0.1",
+ "safe-buffer": "^5.0.1"
+ }
+ },
+ "hash.js": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.3.tgz",
+ "integrity": "sha1-NA3tvmKQGHFRweodd3o0SJNd+EY=",
+ "dev": true,
+ "requires": {
+ "inherits": "^2.0.3",
+ "minimalistic-assert": "^1.0.0"
+ }
+ },
+ "hmac-drbg": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz",
+ "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=",
+ "dev": true,
+ "requires": {
+ "hash.js": "^1.0.3",
+ "minimalistic-assert": "^1.0.0",
+ "minimalistic-crypto-utils": "^1.0.1"
+ }
+ },
+ "hosted-git-info": {
+ "version": "2.6.0",
+ "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.6.0.tgz",
+ "integrity": "sha512-lIbgIIQA3lz5XaB6vxakj6sDHADJiZadYEJB+FgA+C4nubM1NwcuvUr9EJPmnH1skZqpqUzWborWo8EIUi0Sdw==",
+ "dev": true
+ },
+ "html-entities": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.2.1.tgz",
+ "integrity": "sha1-DfKTUfByEWNRXfueVUPl9u7VFi8=",
+ "dev": true
+ },
+ "htmlescape": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/htmlescape/-/htmlescape-1.1.1.tgz",
+ "integrity": "sha1-OgPtwiFLyjtmQko+eVk0lQnLA1E=",
+ "dev": true
+ },
+ "htmlparser2": {
+ "version": "3.9.2",
+ "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.9.2.tgz",
+ "integrity": "sha1-G9+HrMoPP55T+k/M6w9LTLsAszg=",
+ "dev": true,
+ "requires": {
+ "domelementtype": "^1.3.0",
+ "domhandler": "^2.3.0",
+ "domutils": "^1.5.1",
+ "entities": "^1.1.1",
+ "inherits": "^2.0.1",
+ "readable-stream": "^2.0.2"
+ },
+ "dependencies": {
+ "isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
+ "dev": true
+ },
+ "readable-stream": {
+ "version": "2.3.6",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
+ "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
+ "dev": true,
+ "requires": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
+ }
+ },
+ "string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "dev": true,
+ "requires": {
+ "safe-buffer": "~5.1.0"
+ }
+ }
+ }
+ },
+ "http-errors": {
+ "version": "1.6.2",
+ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.2.tgz",
+ "integrity": "sha1-CgAsyFcHGSp+eUbO7cERVfYOxzY=",
+ "dev": true,
+ "requires": {
+ "depd": "1.1.1",
+ "inherits": "2.0.3",
+ "setprototypeof": "1.0.3",
+ "statuses": ">= 1.3.1 < 2"
+ }
+ },
+ "http-signature": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
+ "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=",
+ "dev": true,
+ "requires": {
+ "assert-plus": "^1.0.0",
+ "jsprim": "^1.2.2",
+ "sshpk": "^1.7.0"
+ }
+ },
+ "https-browserify": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-0.0.1.tgz",
+ "integrity": "sha1-P5E2XKvmC3ftDruiS0VOPgnZWoI=",
+ "dev": true
+ },
+ "https-proxy-agent": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-1.0.0.tgz",
+ "integrity": "sha1-NffabEjOTdv6JkiRrFk+5f+GceY=",
+ "dev": true,
+ "requires": {
+ "agent-base": "2",
+ "debug": "2",
+ "extend": "3"
+ }
+ },
+ "husky": {
+ "version": "0.14.3",
+ "resolved": "https://registry.npmjs.org/husky/-/husky-0.14.3.tgz",
+ "integrity": "sha1-xp7XTi0neXaaF7qDmbVM4LY8EsM=",
+ "dev": true,
+ "requires": {
+ "is-ci": "^1.0.10",
+ "normalize-path": "^1.0.0",
+ "strip-indent": "^2.0.0"
+ },
+ "dependencies": {
+ "normalize-path": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-1.0.0.tgz",
+ "integrity": "sha1-MtDkcvkf80VwHBWoMRAY07CpA3k=",
+ "dev": true
+ }
+ }
+ },
+ "iconv-lite": {
+ "version": "0.4.19",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz",
+ "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==",
+ "dev": true
+ },
+ "ieee754": {
+ "version": "1.1.11",
+ "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.11.tgz",
+ "integrity": "sha512-VhDzCKN7K8ufStx/CLj5/PDTMgph+qwN5Pkd5i0sGnVwk56zJ0lkT8Qzi1xqWLS0Wp29DgDtNeS7v8/wMoZeHg==",
+ "dev": true
+ },
+ "ignore": {
+ "version": "3.3.8",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.8.tgz",
+ "integrity": "sha512-pUh+xUQQhQzevjRHHFqqcTy0/dP/kS9I8HSrUydhihjuD09W6ldVWFtIrwhXdUJHis3i2rZNqEHpZH/cbinFbg==",
+ "dev": true
+ },
+ "import-lazy": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz",
+ "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=",
+ "dev": true
+ },
+ "imurmurhash": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
+ "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=",
+ "dev": true
+ },
+ "indent-string": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz",
+ "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=",
+ "dev": true
+ },
+ "indexof": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz",
+ "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=",
+ "dev": true
+ },
+ "inflight": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
+ "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
+ "dev": true,
+ "requires": {
+ "once": "^1.3.0",
+ "wrappy": "1"
+ }
+ },
+ "inherits": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
+ "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
+ "dev": true
+ },
+ "ini": {
+ "version": "1.3.5",
+ "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz",
+ "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==",
+ "dev": true
+ },
+ "inline-source-map": {
+ "version": "0.6.2",
+ "resolved": "https://registry.npmjs.org/inline-source-map/-/inline-source-map-0.6.2.tgz",
+ "integrity": "sha1-+Tk0ccGKedFyT4Y/o4tYY3Ct4qU=",
+ "dev": true,
+ "requires": {
+ "source-map": "~0.5.3"
+ }
+ },
+ "inquirer": {
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.2.0.tgz",
+ "integrity": "sha512-QIEQG4YyQ2UYZGDC4srMZ7BjHOmNk1lR2JQj5UknBapklm6WHA+VVH7N+sUdX3A7NeCfGF8o4X1S3Ao7nAcIeg==",
+ "dev": true,
+ "requires": {
+ "ansi-escapes": "^3.0.0",
+ "chalk": "^2.0.0",
+ "cli-cursor": "^2.1.0",
+ "cli-width": "^2.0.0",
+ "external-editor": "^3.0.0",
+ "figures": "^2.0.0",
+ "lodash": "^4.17.10",
+ "mute-stream": "0.0.7",
+ "run-async": "^2.2.0",
+ "rxjs": "^6.1.0",
+ "string-width": "^2.1.0",
+ "strip-ansi": "^4.0.0",
+ "through": "^2.3.6"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
+ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
+ "dev": true
+ },
+ "ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "dev": true,
+ "requires": {
+ "color-convert": "^1.9.0"
+ }
+ },
+ "chalk": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz",
+ "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ }
+ },
+ "cli-cursor": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz",
+ "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=",
+ "dev": true,
+ "requires": {
+ "restore-cursor": "^2.0.0"
+ }
+ },
+ "has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
+ "dev": true
+ },
+ "is-fullwidth-code-point": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+ "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
+ "dev": true
+ },
+ "onetime": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz",
+ "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=",
+ "dev": true,
+ "requires": {
+ "mimic-fn": "^1.0.0"
+ }
+ },
+ "restore-cursor": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz",
+ "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=",
+ "dev": true,
+ "requires": {
+ "onetime": "^2.0.0",
+ "signal-exit": "^3.0.2"
+ }
+ },
+ "string-width": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
+ "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
+ "dev": true,
+ "requires": {
+ "is-fullwidth-code-point": "^2.0.0",
+ "strip-ansi": "^4.0.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
+ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^3.0.0"
+ }
+ },
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^3.0.0"
+ }
+ }
+ }
+ },
+ "insert-module-globals": {
+ "version": "7.0.6",
+ "resolved": "https://registry.npmjs.org/insert-module-globals/-/insert-module-globals-7.0.6.tgz",
+ "integrity": "sha512-R3sidKJr3SsggqQQ5cEwQb3pWG8RNx0UnpyeiOSR6jorRIeAOzH2gkTWnNdMnyRiVbjrG047K7UCtlMkQ1Mo9w==",
+ "dev": true,
+ "requires": {
+ "JSONStream": "^1.0.3",
+ "combine-source-map": "^0.8.0",
+ "concat-stream": "^1.6.1",
+ "is-buffer": "^1.1.0",
+ "lexical-scope": "^1.2.0",
+ "path-is-absolute": "^1.0.1",
+ "process": "~0.11.0",
+ "through2": "^2.0.0",
+ "xtend": "^4.0.0"
+ },
+ "dependencies": {
+ "concat-stream": {
+ "version": "1.6.2",
+ "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz",
+ "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==",
+ "dev": true,
+ "requires": {
+ "buffer-from": "^1.0.0",
+ "inherits": "^2.0.3",
+ "readable-stream": "^2.2.2",
+ "typedarray": "^0.0.6"
+ }
+ },
+ "isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
+ "dev": true
+ },
+ "readable-stream": {
+ "version": "2.3.6",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
+ "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
+ "dev": true,
+ "requires": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
+ }
+ },
+ "string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "dev": true,
+ "requires": {
+ "safe-buffer": "~5.1.0"
+ }
+ }
+ }
+ },
+ "invert-kv": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz",
+ "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=",
+ "dev": true
+ },
+ "ip": {
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz",
+ "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=",
+ "dev": true
+ },
+ "irregular-plurals": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/irregular-plurals/-/irregular-plurals-1.4.0.tgz",
+ "integrity": "sha1-LKmwM2UREYVUEvFr5dd8YqRYp2Y=",
+ "dev": true
+ },
+ "is-accessor-descriptor": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
+ "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
+ "dev": true,
+ "requires": {
+ "kind-of": "^3.0.2"
+ }
+ },
+ "is-alphabetical": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.2.tgz",
+ "integrity": "sha512-V0xN4BYezDHcBSKb1QHUFMlR4as/XEuCZBzMJUU4n7+Cbt33SmUnSol+pnXFvLxSHNq2CemUXNdaXV6Flg7+xg==",
+ "dev": true
+ },
+ "is-alphanumeric": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-alphanumeric/-/is-alphanumeric-1.0.0.tgz",
+ "integrity": "sha1-Spzvcdr0wAHB2B1j0UDPU/1oifQ=",
+ "dev": true
+ },
+ "is-alphanumerical": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.2.tgz",
+ "integrity": "sha512-pyfU/0kHdISIgslFfZN9nfY1Gk3MquQgUm1mJTjdkEPpkAKNWuBTSqFwewOpR7N351VkErCiyV71zX7mlQQqsg==",
+ "dev": true,
+ "requires": {
+ "is-alphabetical": "^1.0.0",
+ "is-decimal": "^1.0.0"
+ }
+ },
+ "is-arrayish": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
+ "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=",
+ "dev": true
+ },
+ "is-binary-path": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz",
+ "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=",
+ "dev": true,
+ "requires": {
+ "binary-extensions": "^1.0.0"
+ }
+ },
+ "is-buffer": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
+ "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
+ "dev": true
+ },
+ "is-builtin-module": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz",
+ "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=",
+ "dev": true,
+ "requires": {
+ "builtin-modules": "^1.0.0"
+ }
+ },
+ "is-callable": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz",
+ "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==",
+ "dev": true
+ },
+ "is-ci": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.1.0.tgz",
+ "integrity": "sha512-c7TnwxLePuqIlxHgr7xtxzycJPegNHFuIrBkwbf8hc58//+Op1CqFkyS+xnIMkwn9UsJIwc174BIjkyBmSpjKg==",
+ "dev": true,
+ "requires": {
+ "ci-info": "^1.0.0"
+ }
+ },
+ "is-data-descriptor": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
+ "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
+ "dev": true,
+ "requires": {
+ "kind-of": "^3.0.2"
+ }
+ },
+ "is-date-object": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz",
+ "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=",
+ "dev": true
+ },
+ "is-decimal": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.2.tgz",
+ "integrity": "sha512-TRzl7mOCchnhchN+f3ICUCzYvL9ul7R+TYOsZ8xia++knyZAJfv/uA1FvQXsAnYIl1T3B2X5E/J7Wb1QXiIBXg==",
+ "dev": true
+ },
+ "is-deflate": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-deflate/-/is-deflate-1.0.0.tgz",
+ "integrity": "sha1-yGKQHDwWH7CdrHzcfnhPgOmPLxQ=",
+ "dev": true
+ },
+ "is-descriptor": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
+ "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
+ "dev": true,
+ "requires": {
+ "is-accessor-descriptor": "^0.1.6",
+ "is-data-descriptor": "^0.1.4",
+ "kind-of": "^5.0.0"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
+ "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
+ "dev": true
+ }
+ }
+ },
+ "is-dotfile": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz",
+ "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=",
+ "dev": true
+ },
+ "is-empty": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/is-empty/-/is-empty-1.2.0.tgz",
+ "integrity": "sha1-3pu1snhzigWgsJpX4ftNSjQan2s=",
+ "dev": true
+ },
+ "is-equal-shallow": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz",
+ "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=",
+ "dev": true,
+ "requires": {
+ "is-primitive": "^2.0.0"
+ }
+ },
+ "is-extendable": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
+ "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=",
+ "dev": true
+ },
+ "is-extglob": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz",
+ "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=",
+ "dev": true
+ },
+ "is-file": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-file/-/is-file-1.0.0.tgz",
+ "integrity": "sha1-KKRM+9nT2xkwRfIrZfzo7fliBZY=",
+ "dev": true
+ },
+ "is-finite": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz",
+ "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=",
+ "dev": true,
+ "requires": {
+ "number-is-nan": "^1.0.0"
+ }
+ },
+ "is-fullwidth-code-point": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
+ "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
+ "dev": true,
+ "requires": {
+ "number-is-nan": "^1.0.0"
+ }
+ },
+ "is-glob": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz",
+ "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=",
+ "dev": true,
+ "requires": {
+ "is-extglob": "^1.0.0"
+ }
+ },
+ "is-gzip": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-gzip/-/is-gzip-1.0.0.tgz",
+ "integrity": "sha1-bKiwe5nHeZgCWQDlVc7Y7YCHmoM=",
+ "dev": true
+ },
+ "is-hexadecimal": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.2.tgz",
+ "integrity": "sha512-but/G3sapV3MNyqiDBLrOi4x8uCIw0RY3o/Vb5GT0sMFHrVV7731wFSVy41T5FO1og7G0gXLJh0MkgPRouko/A==",
+ "dev": true
+ },
+ "is-hidden": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/is-hidden/-/is-hidden-1.1.1.tgz",
+ "integrity": "sha512-175UKecS8+U4hh2PSY0j4xnm2GKYzvSKnbh+naC93JjuBA7LgIo6YxlbcsSo6seFBdQO3RuIcH980yvqqD/2cA==",
+ "dev": true
+ },
+ "is-installed-globally": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.1.0.tgz",
+ "integrity": "sha1-Df2Y9akRFxbdU13aZJL2e/PSWoA=",
+ "dev": true,
+ "requires": {
+ "global-dirs": "^0.1.0",
+ "is-path-inside": "^1.0.0"
+ }
+ },
+ "is-npm": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-1.0.0.tgz",
+ "integrity": "sha1-8vtjpl5JBbQGyGBydloaTceTufQ=",
+ "dev": true
+ },
+ "is-number": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz",
+ "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=",
+ "dev": true,
+ "requires": {
+ "kind-of": "^3.0.2"
+ }
+ },
+ "is-obj": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz",
+ "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=",
+ "dev": true
+ },
+ "is-object": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-object/-/is-object-1.0.1.tgz",
+ "integrity": "sha1-iVJojF7C/9awPsyF52ngKQMINHA=",
+ "dev": true
+ },
+ "is-path-cwd": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz",
+ "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=",
+ "dev": true
+ },
+ "is-path-in-cwd": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz",
+ "integrity": "sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ==",
+ "dev": true,
+ "requires": {
+ "is-path-inside": "^1.0.0"
+ }
+ },
+ "is-path-inside": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz",
+ "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=",
+ "dev": true,
+ "requires": {
+ "path-is-inside": "^1.0.1"
+ }
+ },
+ "is-plain-obj": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz",
+ "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=",
+ "dev": true
+ },
+ "is-plain-object": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
+ "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
+ "dev": true,
+ "requires": {
+ "isobject": "^3.0.1"
+ },
+ "dependencies": {
+ "isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
+ "dev": true
+ }
+ }
+ },
+ "is-posix-bracket": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz",
+ "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=",
+ "dev": true
+ },
+ "is-primitive": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz",
+ "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=",
+ "dev": true
+ },
+ "is-promise": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz",
+ "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=",
+ "dev": true
+ },
+ "is-redirect": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-redirect/-/is-redirect-1.0.0.tgz",
+ "integrity": "sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ=",
+ "dev": true
+ },
+ "is-regex": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz",
+ "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=",
+ "dev": true,
+ "requires": {
+ "has": "^1.0.1"
+ }
+ },
+ "is-resolvable": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz",
+ "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==",
+ "dev": true
+ },
+ "is-retry-allowed": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz",
+ "integrity": "sha1-EaBgVotnM5REAz0BJaYaINVk+zQ=",
+ "dev": true
+ },
+ "is-stream": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
+ "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=",
+ "dev": true
+ },
+ "is-subset": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/is-subset/-/is-subset-0.1.1.tgz",
+ "integrity": "sha1-ilkRfZMt4d4A8kX83TnOQ/HpOaY=",
+ "dev": true
+ },
+ "is-symbol": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.1.tgz",
+ "integrity": "sha1-PMWfAAJRlLarLjjbrmaJJWtmBXI=",
+ "dev": true
+ },
+ "is-text-path": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-text-path/-/is-text-path-1.0.1.tgz",
+ "integrity": "sha1-Thqg+1G/vLPpJogAE5cgLBd1tm4=",
+ "dev": true,
+ "requires": {
+ "text-extensions": "^1.0.0"
+ }
+ },
+ "is-typedarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
+ "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=",
+ "dev": true
+ },
+ "is-utf8": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz",
+ "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=",
+ "dev": true
+ },
+ "is-whitespace-character": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-whitespace-character/-/is-whitespace-character-1.0.2.tgz",
+ "integrity": "sha512-SzM+T5GKUCtLhlHFKt2SDAX2RFzfS6joT91F2/WSi9LxgFdsnhfPK/UIA+JhRR2xuyLdrCys2PiFDrtn1fU5hQ==",
+ "dev": true
+ },
+ "is-windows": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz",
+ "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==",
+ "dev": true
+ },
+ "is-word-character": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-word-character/-/is-word-character-1.0.2.tgz",
+ "integrity": "sha512-T3FlsX8rCHAH8e7RE7PfOPZVFQlcV3XRF9eOOBQ1uf70OxO7CjjSOjeImMPCADBdYWcStAbVbYvJ1m2D3tb+EA==",
+ "dev": true
+ },
+ "is-wsl": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz",
+ "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=",
+ "dev": true
+ },
+ "isarray": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
+ "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
+ "dev": true
+ },
+ "isexe": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
+ "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
+ "dev": true
+ },
+ "isobject": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz",
+ "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=",
+ "dev": true,
+ "requires": {
+ "isarray": "1.0.0"
+ },
+ "dependencies": {
+ "isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
+ "dev": true
+ }
+ }
+ },
+ "isstream": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
+ "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=",
+ "dev": true
+ },
+ "istanbul": {
+ "version": "0.4.5",
+ "resolved": "https://registry.npmjs.org/istanbul/-/istanbul-0.4.5.tgz",
+ "integrity": "sha1-ZcfXPUxNqE1POsMQuRj7C4Azczs=",
+ "dev": true,
+ "requires": {
+ "abbrev": "1.0.x",
+ "async": "1.x",
+ "escodegen": "1.8.x",
+ "esprima": "2.7.x",
+ "glob": "^5.0.15",
+ "handlebars": "^4.0.1",
+ "js-yaml": "3.x",
+ "mkdirp": "0.5.x",
+ "nopt": "3.x",
+ "once": "1.x",
+ "resolve": "1.1.x",
+ "supports-color": "^3.1.0",
+ "which": "^1.1.1",
+ "wordwrap": "^1.0.0"
+ },
+ "dependencies": {
+ "abbrev": {
+ "version": "1.0.9",
+ "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz",
+ "integrity": "sha1-kbR5JYinc4wl813W9jdSovh3YTU=",
+ "dev": true
+ },
+ "glob": {
+ "version": "5.0.15",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz",
+ "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=",
+ "dev": true,
+ "requires": {
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "2 || 3",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ }
+ },
+ "resolve": {
+ "version": "1.1.7",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz",
+ "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=",
+ "dev": true
+ },
+ "wordwrap": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz",
+ "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=",
+ "dev": true
+ }
+ }
+ },
+ "js-tokens": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz",
+ "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=",
+ "dev": true
+ },
+ "js-yaml": {
+ "version": "3.11.0",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.11.0.tgz",
+ "integrity": "sha512-saJstZWv7oNeOyBh3+Dx1qWzhW0+e6/8eDzo7p5rDFqxntSztloLtuKu+Ejhtq82jsilwOIZYsCz+lIjthg1Hw==",
+ "dev": true,
+ "requires": {
+ "argparse": "^1.0.7",
+ "esprima": "^4.0.0"
+ },
+ "dependencies": {
+ "esprima": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz",
+ "integrity": "sha1-RJnt3NERDgshi6zy+n9/WfVcqAQ=",
+ "dev": true
+ }
+ }
+ },
+ "jsbn": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
+ "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=",
+ "dev": true,
+ "optional": true
+ },
+ "jsdom": {
+ "version": "7.2.2",
+ "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-7.2.2.tgz",
+ "integrity": "sha1-QLQCdwwr2iNGkJa+6Rq2deOx/G4=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "abab": "^1.0.0",
+ "acorn": "^2.4.0",
+ "acorn-globals": "^1.0.4",
+ "cssom": ">= 0.3.0 < 0.4.0",
+ "cssstyle": ">= 0.2.29 < 0.3.0",
+ "escodegen": "^1.6.1",
+ "nwmatcher": ">= 1.3.7 < 2.0.0",
+ "parse5": "^1.5.1",
+ "request": "^2.55.0",
+ "sax": "^1.1.4",
+ "symbol-tree": ">= 3.1.0 < 4.0.0",
+ "tough-cookie": "^2.2.0",
+ "webidl-conversions": "^2.0.0",
+ "whatwg-url-compat": "~0.6.5",
+ "xml-name-validator": ">= 2.0.1 < 3.0.0"
+ },
+ "dependencies": {
+ "acorn": {
+ "version": "2.7.0",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-2.7.0.tgz",
+ "integrity": "sha1-q259nYhqrKiwhbwzEreaGYQz8Oc=",
+ "dev": true,
+ "optional": true
+ }
+ }
+ },
+ "json-parse-better-errors": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz",
+ "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==",
+ "dev": true
+ },
+ "json-schema": {
+ "version": "0.2.3",
+ "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz",
+ "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=",
+ "dev": true
+ },
+ "json-schema-traverse": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz",
+ "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=",
+ "dev": true
+ },
+ "json-stable-stringify": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-0.0.1.tgz",
+ "integrity": "sha1-YRwj6BTbN1Un34URk9tZ3Sryf0U=",
+ "dev": true,
+ "requires": {
+ "jsonify": "~0.0.0"
+ }
+ },
+ "json-stable-stringify-without-jsonify": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
+ "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=",
+ "dev": true
+ },
+ "json-stringify-safe": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
+ "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=",
+ "dev": true
+ },
+ "jsonfile": {
+ "version": "2.4.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz",
+ "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.6"
+ }
+ },
+ "jsonify": {
+ "version": "0.0.0",
+ "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz",
+ "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=",
+ "dev": true
+ },
+ "jsonparse": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz",
+ "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=",
+ "dev": true
+ },
+ "jsprim": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz",
+ "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=",
+ "dev": true,
+ "requires": {
+ "assert-plus": "1.0.0",
+ "extsprintf": "1.3.0",
+ "json-schema": "0.2.3",
+ "verror": "1.10.0"
+ }
+ },
+ "jsx-ast-utils": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-2.0.1.tgz",
+ "integrity": "sha1-6AGxs5mF4g//yHtA43SAgOLcrH8=",
+ "dev": true,
+ "requires": {
+ "array-includes": "^3.0.3"
+ }
+ },
+ "keyed-array": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/keyed-array/-/keyed-array-2.1.2.tgz",
+ "integrity": "sha1-isE3thMi7V7Rx7Qbn5zQZmMcrOA=",
+ "dev": true
+ },
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ },
+ "klaw": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz",
+ "integrity": "sha1-QIhDO0azsbolnXh4XY6W9zugJDk=",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.9"
+ }
+ },
+ "labeled-stream-splicer": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/labeled-stream-splicer/-/labeled-stream-splicer-2.0.1.tgz",
+ "integrity": "sha512-MC94mHZRvJ3LfykJlTUipBqenZz1pacOZEMhhQ8dMGcDHs0SBE5GbsavUXV7YtP3icBW17W0Zy1I0lfASmo9Pg==",
+ "dev": true,
+ "requires": {
+ "inherits": "^2.0.1",
+ "isarray": "^2.0.4",
+ "stream-splicer": "^2.0.0"
+ },
+ "dependencies": {
+ "isarray": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.4.tgz",
+ "integrity": "sha512-GMxXOiUirWg1xTKRipM0Ek07rX+ubx4nNVElTJdNLYmNO/2YrDkgJGw9CljXn+r4EWiDQg/8lsRdHyg2PJuUaA==",
+ "dev": true
+ }
+ }
+ },
+ "latest-version": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-3.1.0.tgz",
+ "integrity": "sha1-ogU4P+oyKzO1rjsYq+4NwvNW7hU=",
+ "dev": true,
+ "requires": {
+ "package-json": "^4.0.0"
+ }
+ },
+ "lazy-cache": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz",
+ "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=",
+ "dev": true,
+ "optional": true
+ },
+ "lcid": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz",
+ "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=",
+ "dev": true,
+ "requires": {
+ "invert-kv": "^1.0.0"
+ }
+ },
+ "leven": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/leven/-/leven-2.1.0.tgz",
+ "integrity": "sha1-wuep93IJTe6dNCAq6KzORoeHVYA=",
+ "dev": true
+ },
+ "levn": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz",
+ "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=",
+ "dev": true,
+ "requires": {
+ "prelude-ls": "~1.1.2",
+ "type-check": "~0.3.2"
+ }
+ },
+ "lexical-scope": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/lexical-scope/-/lexical-scope-1.2.0.tgz",
+ "integrity": "sha1-/Ope3HBKSzqHls3KQZw6CvryLfQ=",
+ "dev": true,
+ "requires": {
+ "astw": "^2.0.0"
+ }
+ },
+ "linkify-it": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-1.2.4.tgz",
+ "integrity": "sha1-B3NSbDF8j9E71TTuHRgP+Iq/iBo=",
+ "dev": true,
+ "requires": {
+ "uc.micro": "^1.0.1"
+ }
+ },
+ "lint": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/lint/-/lint-1.1.2.tgz",
+ "integrity": "sha1-Ne0GTzIlR8MxNY2JmGhmSWi6Nx8=",
+ "dev": true
+ },
+ "load-json-file": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz",
+ "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.2",
+ "parse-json": "^2.2.0",
+ "pify": "^2.0.0",
+ "pinkie-promise": "^2.0.0",
+ "strip-bom": "^2.0.0"
+ }
+ },
+ "load-plugin": {
+ "version": "2.2.2",
+ "resolved": "https://registry.npmjs.org/load-plugin/-/load-plugin-2.2.2.tgz",
+ "integrity": "sha512-FYzamtURIJefQykZGtiClYuZkJBUKzmx8Tc74y8JGAulDzbzVm/C+w/MbAljHRr+REL0cRzy3WgnHE+T8gce5g==",
+ "dev": true,
+ "requires": {
+ "npm-prefix": "^1.2.0",
+ "resolve-from": "^4.0.0"
+ }
+ },
+ "locate-path": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
+ "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=",
+ "dev": true,
+ "requires": {
+ "p-locate": "^2.0.0",
+ "path-exists": "^3.0.0"
+ },
+ "dependencies": {
+ "path-exists": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
+ "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
+ "dev": true
+ }
+ }
+ },
+ "lodash": {
+ "version": "4.17.10",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz",
+ "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==",
+ "dev": true
+ },
+ "lodash._reinterpolate": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz",
+ "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=",
+ "dev": true
+ },
+ "lodash.assign": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz",
+ "integrity": "sha1-DZnzzNem0mHRm9rrkkUAXShYCOc=",
+ "dev": true
+ },
+ "lodash.assignin": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/lodash.assignin/-/lodash.assignin-4.2.0.tgz",
+ "integrity": "sha1-uo31+4QesKPoBEIysOJjqNxqKKI=",
+ "dev": true
+ },
+ "lodash.bind": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/lodash.bind/-/lodash.bind-4.2.1.tgz",
+ "integrity": "sha1-euMBfpOWIqwxt9fX3LGzTbFpDTU=",
+ "dev": true
+ },
+ "lodash.defaults": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz",
+ "integrity": "sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw=",
+ "dev": true
+ },
+ "lodash.filter": {
+ "version": "4.6.0",
+ "resolved": "https://registry.npmjs.org/lodash.filter/-/lodash.filter-4.6.0.tgz",
+ "integrity": "sha1-ZosdSYFgOuHMWm+nYBQ+SAtMSs4=",
+ "dev": true
+ },
+ "lodash.flatten": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz",
+ "integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=",
+ "dev": true
+ },
+ "lodash.foreach": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/lodash.foreach/-/lodash.foreach-4.5.0.tgz",
+ "integrity": "sha1-Gmo16s5AEoDH8G3d7DUWWrJ+PlM=",
+ "dev": true
+ },
+ "lodash.isempty": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/lodash.isempty/-/lodash.isempty-4.4.0.tgz",
+ "integrity": "sha1-b4bL7di+TsmHvpqvM8loTbGzHn4=",
+ "dev": true
+ },
+ "lodash.isplainobject": {
+ "version": "4.0.6",
+ "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz",
+ "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=",
+ "dev": true
+ },
+ "lodash.map": {
+ "version": "4.6.0",
+ "resolved": "https://registry.npmjs.org/lodash.map/-/lodash.map-4.6.0.tgz",
+ "integrity": "sha1-dx7Hg540c9nEzeKLGTlMNWL09tM=",
+ "dev": true
+ },
+ "lodash.memoize": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-3.0.4.tgz",
+ "integrity": "sha1-LcvSwofLwKVcxCMovQxzYVDVPj8=",
+ "dev": true
+ },
+ "lodash.merge": {
+ "version": "4.6.1",
+ "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.1.tgz",
+ "integrity": "sha512-AOYza4+Hf5z1/0Hztxpm2/xiPZgi/cjMqdnKTUWTBSKchJlxXXuUSxCCl8rJlf4g6yww/j6mA8nC8Hw/EZWxKQ==",
+ "dev": true
+ },
+ "lodash.pick": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/lodash.pick/-/lodash.pick-4.4.0.tgz",
+ "integrity": "sha1-UvBWEP/53tQiYRRB7R/BI6AwAbM=",
+ "dev": true
+ },
+ "lodash.range": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/lodash.range/-/lodash.range-3.2.0.tgz",
+ "integrity": "sha1-9GHliPZmg/fq3q3lE+OKaaVloV0=",
+ "dev": true
+ },
+ "lodash.reduce": {
+ "version": "4.6.0",
+ "resolved": "https://registry.npmjs.org/lodash.reduce/-/lodash.reduce-4.6.0.tgz",
+ "integrity": "sha1-8atrg5KZrUj3hKu/R2WW8DuRTTs=",
+ "dev": true
+ },
+ "lodash.reject": {
+ "version": "4.6.0",
+ "resolved": "https://registry.npmjs.org/lodash.reject/-/lodash.reject-4.6.0.tgz",
+ "integrity": "sha1-gNZJLcFHCGS79YNTO2UfQqn1JBU=",
+ "dev": true
+ },
+ "lodash.some": {
+ "version": "4.6.0",
+ "resolved": "https://registry.npmjs.org/lodash.some/-/lodash.some-4.6.0.tgz",
+ "integrity": "sha1-G7nzFO9ri63tE7VJFpsqlF62jk0=",
+ "dev": true
+ },
+ "lodash.template": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.4.0.tgz",
+ "integrity": "sha1-5zoDhcg1VZF0bgILmWecaQ5o+6A=",
+ "dev": true,
+ "requires": {
+ "lodash._reinterpolate": "~3.0.0",
+ "lodash.templatesettings": "^4.0.0"
+ }
+ },
+ "lodash.templatesettings": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.1.0.tgz",
+ "integrity": "sha1-K01OlbpEDZFf8IvImeRVNmZxMxY=",
+ "dev": true,
+ "requires": {
+ "lodash._reinterpolate": "~3.0.0"
+ }
+ },
+ "lodash.transform": {
+ "version": "4.6.0",
+ "resolved": "https://registry.npmjs.org/lodash.transform/-/lodash.transform-4.6.0.tgz",
+ "integrity": "sha1-EjBkIvYzJK7YSD0/ODMrX2cFR6A=",
+ "dev": true
+ },
+ "log-symbols": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-1.0.2.tgz",
+ "integrity": "sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg=",
+ "dev": true,
+ "requires": {
+ "chalk": "^1.0.0"
+ }
+ },
+ "longest": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz",
+ "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=",
+ "dev": true,
+ "optional": true
+ },
+ "longest-streak": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-2.0.2.tgz",
+ "integrity": "sha512-TmYTeEYxiAmSVdpbnQDXGtvYOIRsCMg89CVZzwzc2o7GFL1CjoiRPjH5ec0NFAVlAx3fVof9dX/t6KKRAo2OWA==",
+ "dev": true
+ },
+ "loose-envify": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
+ "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
+ "dev": true,
+ "requires": {
+ "js-tokens": "^3.0.0 || ^4.0.0"
+ }
+ },
+ "loud-rejection": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz",
+ "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=",
+ "dev": true,
+ "requires": {
+ "currently-unhandled": "^0.4.1",
+ "signal-exit": "^3.0.0"
+ }
+ },
+ "lowercase-keys": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz",
+ "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==",
+ "dev": true
+ },
+ "lru-cache": {
+ "version": "4.1.3",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.3.tgz",
+ "integrity": "sha512-fFEhvcgzuIoJVUF8fYr5KR0YqxD238zgObTps31YdADwPPAp82a4M8TrckkWyx7ekNlf9aBcVn81cFwwXngrJA==",
+ "dev": true,
+ "requires": {
+ "pseudomap": "^1.0.2",
+ "yallist": "^2.1.2"
+ },
+ "dependencies": {
+ "yallist": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
+ "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=",
+ "dev": true
+ }
+ }
+ },
+ "make-dir": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz",
+ "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==",
+ "dev": true,
+ "requires": {
+ "pify": "^3.0.0"
+ },
+ "dependencies": {
+ "pify": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
+ "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
+ "dev": true
+ }
+ }
+ },
+ "map-cache": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz",
+ "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=",
+ "dev": true
+ },
+ "map-obj": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-2.0.0.tgz",
+ "integrity": "sha1-plzSkIepJZi4eRJXpSPgISIqwfk=",
+ "dev": true
+ },
+ "map-visit": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz",
+ "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=",
+ "dev": true,
+ "requires": {
+ "object-visit": "^1.0.0"
+ }
+ },
+ "markdown-escapes": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/markdown-escapes/-/markdown-escapes-1.0.2.tgz",
+ "integrity": "sha512-lbRZ2mE3Q9RtLjxZBZ9+IMl68DKIXaVAhwvwn9pmjnPLS0h/6kyBMgNhqi1xFJ/2yv6cSyv0jbiZavZv93JkkA==",
+ "dev": true
+ },
+ "markdown-extensions": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/markdown-extensions/-/markdown-extensions-1.1.1.tgz",
+ "integrity": "sha512-WWC0ZuMzCyDHYCasEGs4IPvLyTGftYwh6wIEOULOF0HXcqZlhwRzrK0w2VUlxWA98xnvb/jszw4ZSkJ6ADpM6Q==",
+ "dev": true
+ },
+ "markdown-it": {
+ "version": "6.1.1",
+ "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-6.1.1.tgz",
+ "integrity": "sha1-ztA39Ec+6fUVOsQU933IPJG6knw=",
+ "dev": true,
+ "requires": {
+ "argparse": "^1.0.7",
+ "entities": "~1.1.1",
+ "linkify-it": "~1.2.2",
+ "mdurl": "~1.0.1",
+ "uc.micro": "^1.0.1"
+ }
+ },
+ "markdown-it-named-headers": {
+ "version": "0.0.4",
+ "resolved": "https://registry.npmjs.org/markdown-it-named-headers/-/markdown-it-named-headers-0.0.4.tgz",
+ "integrity": "sha1-gu/CgyQkCmsed7mq5QF3HV81HB8=",
+ "dev": true,
+ "requires": {
+ "string": "^3.0.1"
+ }
+ },
+ "markdown-table": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-1.1.2.tgz",
+ "integrity": "sha512-NcWuJFHDA8V3wkDgR/j4+gZx+YQwstPgfQDV8ndUeWWzta3dnDTBxpVzqS9lkmJAuV5YX35lmyojl6HO5JXAgw==",
+ "dev": true
+ },
+ "marky-markdown-lite": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/marky-markdown-lite/-/marky-markdown-lite-1.2.0.tgz",
+ "integrity": "sha1-dO2phLgTZVfe4QZO/RXkBhdAaZc=",
+ "dev": true,
+ "requires": {
+ "cheerio": "^0.20.0",
+ "conventional-changelog-cli": "^1.2.0",
+ "is-file": "^1.0.0",
+ "markdown-it": "^6.0.1",
+ "markdown-it-named-headers": "0.0.4"
+ },
+ "dependencies": {
+ "cheerio": {
+ "version": "0.20.0",
+ "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-0.20.0.tgz",
+ "integrity": "sha1-XHEPK6uVZTJyhCugHG6mGzVF7DU=",
+ "dev": true,
+ "requires": {
+ "css-select": "~1.2.0",
+ "dom-serializer": "~0.1.0",
+ "entities": "~1.1.1",
+ "htmlparser2": "~3.8.1",
+ "jsdom": "^7.0.2",
+ "lodash": "^4.1.0"
+ }
+ },
+ "domhandler": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.3.0.tgz",
+ "integrity": "sha1-LeWaCCLVAn+r/28DLCsloqir5zg=",
+ "dev": true,
+ "requires": {
+ "domelementtype": "1"
+ }
+ },
+ "htmlparser2": {
+ "version": "3.8.3",
+ "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.8.3.tgz",
+ "integrity": "sha1-mWwosZFRaovoZQGn15dX5ccMEGg=",
+ "dev": true,
+ "requires": {
+ "domelementtype": "1",
+ "domhandler": "2.3",
+ "domutils": "1.5",
+ "entities": "1.0",
+ "readable-stream": "1.1"
+ },
+ "dependencies": {
+ "entities": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-1.0.0.tgz",
+ "integrity": "sha1-sph6o4ITR/zeZCsk/fyeT7cSvyY=",
+ "dev": true
+ }
+ }
+ }
+ }
+ },
+ "matcher-collection": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/matcher-collection/-/matcher-collection-1.0.5.tgz",
+ "integrity": "sha1-LuCVQ4Nyy4iE8FgjQTjAXGROwzk=",
+ "dev": true,
+ "requires": {
+ "minimatch": "^3.0.2"
+ }
+ },
+ "math-random": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/math-random/-/math-random-1.0.1.tgz",
+ "integrity": "sha1-izqsWIuKZuSXXjzepn97sylgH6w=",
+ "dev": true
+ },
+ "md5.js": {
+ "version": "1.3.4",
+ "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.4.tgz",
+ "integrity": "sha1-6b296UogpawYsENA/Fdk1bCdkB0=",
+ "dev": true,
+ "requires": {
+ "hash-base": "^3.0.0",
+ "inherits": "^2.0.1"
+ }
+ },
+ "mdast-comment-marker": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/mdast-comment-marker/-/mdast-comment-marker-1.0.2.tgz",
+ "integrity": "sha1-Hd8O+BH7UkOQF8jSwLkiA18rp0o=",
+ "dev": true
+ },
+ "mdast-util-compact": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/mdast-util-compact/-/mdast-util-compact-1.0.1.tgz",
+ "integrity": "sha1-zbX4TitqLTEU3zO9BdnLMuPECDo=",
+ "dev": true,
+ "requires": {
+ "unist-util-modify-children": "^1.0.0",
+ "unist-util-visit": "^1.1.0"
+ }
+ },
+ "mdast-util-heading-style": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/mdast-util-heading-style/-/mdast-util-heading-style-1.0.3.tgz",
+ "integrity": "sha1-77OQ28iqAWw89XegNJANsn7nJHw=",
+ "dev": true
+ },
+ "mdast-util-to-string": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-1.0.4.tgz",
+ "integrity": "sha1-XEVch4yTVfDB5/PotxnPWDaRrPs=",
+ "dev": true
+ },
+ "mdurl": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz",
+ "integrity": "sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4=",
+ "dev": true
+ },
+ "meow": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/meow/-/meow-4.0.1.tgz",
+ "integrity": "sha512-xcSBHD5Z86zaOc+781KrupuHAzeGXSLtiAOmBsiLDiPSaYSB6hdew2ng9EBAnZ62jagG9MHAOdxpDi/lWBFJ/A==",
+ "dev": true,
+ "requires": {
+ "camelcase-keys": "^4.0.0",
+ "decamelize-keys": "^1.0.0",
+ "loud-rejection": "^1.0.0",
+ "minimist": "^1.1.3",
+ "minimist-options": "^3.0.1",
+ "normalize-package-data": "^2.3.4",
+ "read-pkg-up": "^3.0.0",
+ "redent": "^2.0.0",
+ "trim-newlines": "^2.0.0"
+ },
+ "dependencies": {
+ "find-up": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
+ "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
+ "dev": true,
+ "requires": {
+ "locate-path": "^2.0.0"
+ }
+ },
+ "load-json-file": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz",
+ "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.2",
+ "parse-json": "^4.0.0",
+ "pify": "^3.0.0",
+ "strip-bom": "^3.0.0"
+ }
+ },
+ "parse-json": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz",
+ "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=",
+ "dev": true,
+ "requires": {
+ "error-ex": "^1.3.1",
+ "json-parse-better-errors": "^1.0.1"
+ }
+ },
+ "path-type": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz",
+ "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==",
+ "dev": true,
+ "requires": {
+ "pify": "^3.0.0"
+ }
+ },
+ "pify": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
+ "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
+ "dev": true
+ },
+ "read-pkg": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz",
+ "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=",
+ "dev": true,
+ "requires": {
+ "load-json-file": "^4.0.0",
+ "normalize-package-data": "^2.3.2",
+ "path-type": "^3.0.0"
+ }
+ },
+ "read-pkg-up": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz",
+ "integrity": "sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=",
+ "dev": true,
+ "requires": {
+ "find-up": "^2.0.0",
+ "read-pkg": "^3.0.0"
+ }
+ },
+ "strip-bom": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
+ "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=",
+ "dev": true
+ }
+ }
+ },
+ "merge2": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.2.2.tgz",
+ "integrity": "sha512-bgM8twH86rWni21thii6WCMQMRMmwqqdW3sGWi9IipnVAszdLXRjwDwAnyrVXo6DuP3AjRMMttZKUB48QWIFGg==",
+ "dev": true
+ },
+ "micro": {
+ "version": "9.3.1",
+ "resolved": "https://registry.npmjs.org/micro/-/micro-9.3.1.tgz",
+ "integrity": "sha512-83uimpPJqfwkfKvJl2WWontBlV3hmzrIgyJ+L2uhDXKNk7Ll+/ezK3zBz7TljubpKPqjM0JdT2Ker4MTPmhjgA==",
+ "dev": true,
+ "requires": {
+ "arg": "2.0.0",
+ "chalk": "2.4.0",
+ "content-type": "1.0.4",
+ "is-stream": "1.1.0",
+ "raw-body": "2.3.2"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "dev": true,
+ "requires": {
+ "color-convert": "^1.9.0"
+ }
+ },
+ "chalk": {
+ "version": "2.4.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.0.tgz",
+ "integrity": "sha512-Wr/w0f4o9LuE7K53cD0qmbAMM+2XNLzR29vFn5hqko4sxGlUsyy363NvmyGIyk5tpe9cjTr9SJYbysEyPkRnFw==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ }
+ },
+ "has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "5.4.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz",
+ "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^3.0.0"
+ }
+ }
+ }
+ },
+ "micro-compress": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/micro-compress/-/micro-compress-1.0.0.tgz",
+ "integrity": "sha1-U/WoC0rQMgyhZaVZtuPfFF1PcE8=",
+ "dev": true,
+ "requires": {
+ "compression": "^1.6.2"
+ }
+ },
+ "micromatch": {
+ "version": "2.3.11",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz",
+ "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=",
+ "dev": true,
+ "requires": {
+ "arr-diff": "^2.0.0",
+ "array-unique": "^0.2.1",
+ "braces": "^1.8.2",
+ "expand-brackets": "^0.1.4",
+ "extglob": "^0.3.1",
+ "filename-regex": "^2.0.0",
+ "is-extglob": "^1.0.0",
+ "is-glob": "^2.0.1",
+ "kind-of": "^3.0.2",
+ "normalize-path": "^2.0.1",
+ "object.omit": "^2.0.0",
+ "parse-glob": "^3.0.4",
+ "regex-cache": "^0.4.2"
+ }
+ },
+ "miller-rabin": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz",
+ "integrity": "sha1-8IA1HIZbDcViqEYpZtqlNUPHik0=",
+ "dev": true,
+ "requires": {
+ "bn.js": "^4.0.0",
+ "brorand": "^1.0.1"
+ }
+ },
+ "mime": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
+ "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
+ "dev": true
+ },
+ "mime-db": {
+ "version": "1.33.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz",
+ "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==",
+ "dev": true
+ },
+ "mime-types": {
+ "version": "2.1.18",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz",
+ "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==",
+ "dev": true,
+ "requires": {
+ "mime-db": "~1.33.0"
+ }
+ },
+ "mimic-fn": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz",
+ "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==",
+ "dev": true
+ },
+ "minimalistic-assert": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz",
+ "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==",
+ "dev": true
+ },
+ "minimalistic-crypto-utils": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz",
+ "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=",
+ "dev": true
+ },
+ "minimatch": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
+ "integrity": "sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM=",
+ "dev": true,
+ "requires": {
+ "brace-expansion": "^1.1.7"
+ }
+ },
+ "minimist": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
+ "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
+ "dev": true
+ },
+ "minimist-options": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-3.0.2.tgz",
+ "integrity": "sha512-FyBrT/d0d4+uiZRbqznPXqw3IpZZG3gl3wKWiX784FycUKVwBt0uLBFkQrtE4tZOrgo78nZp2jnKz3L65T5LdQ==",
+ "dev": true,
+ "requires": {
+ "arrify": "^1.0.1",
+ "is-plain-obj": "^1.1.0"
+ }
+ },
+ "minipass": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.3.0.tgz",
+ "integrity": "sha512-jWC2Eg+Np4bxah7llu1IrUNSJQxtLz/J+pOjTM0nFpJXGAaV18XBWhUn031Q1tAA/TJtA1jgwnOe9S2PQa4Lbg==",
+ "dev": true,
+ "requires": {
+ "safe-buffer": "^5.1.1",
+ "yallist": "^3.0.0"
+ }
+ },
+ "minizlib": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.1.0.tgz",
+ "integrity": "sha512-4T6Ur/GctZ27nHfpt9THOdRZNgyJ9FZchYO1ceg5S8Q3DNLCKYy44nCZzgCJgcvx2UM8czmqak5BCxJMrq37lA==",
+ "dev": true,
+ "requires": {
+ "minipass": "^2.2.1"
+ }
+ },
+ "mixin-deep": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz",
+ "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==",
+ "dev": true,
+ "requires": {
+ "for-in": "^1.0.2",
+ "is-extendable": "^1.0.1"
+ },
+ "dependencies": {
+ "is-extendable": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
+ "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
+ "dev": true,
+ "requires": {
+ "is-plain-object": "^2.0.4"
+ }
+ }
+ }
+ },
+ "mkdirp": {
+ "version": "0.5.1",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
+ "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
+ "dev": true,
+ "requires": {
+ "minimist": "0.0.8"
+ },
+ "dependencies": {
+ "minimist": {
+ "version": "0.0.8",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
+ "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
+ "dev": true
+ }
+ }
+ },
+ "mkpath": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/mkpath/-/mkpath-0.1.0.tgz",
+ "integrity": "sha1-dVSm+Nhxg0zJe1RisSLEwSTW3pE=",
+ "dev": true
+ },
+ "mksnapshot": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/mksnapshot/-/mksnapshot-0.3.1.tgz",
+ "integrity": "sha1-JQHAVldDbXQs6Vik/5LHfkDdN+Y=",
+ "dev": true,
+ "requires": {
+ "decompress-zip": "0.3.0",
+ "fs-extra": "0.26.7",
+ "request": "^2.79.0"
+ }
+ },
+ "modify-values": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/modify-values/-/modify-values-1.0.1.tgz",
+ "integrity": "sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw==",
+ "dev": true
+ },
+ "module-deps": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/module-deps/-/module-deps-4.1.1.tgz",
+ "integrity": "sha1-IyFYM/HaE/1gbMuAh7RIUty4If0=",
+ "dev": true,
+ "requires": {
+ "JSONStream": "^1.0.3",
+ "browser-resolve": "^1.7.0",
+ "cached-path-relative": "^1.0.0",
+ "concat-stream": "~1.5.0",
+ "defined": "^1.0.0",
+ "detective": "^4.0.0",
+ "duplexer2": "^0.1.2",
+ "inherits": "^2.0.1",
+ "parents": "^1.0.0",
+ "readable-stream": "^2.0.2",
+ "resolve": "^1.1.3",
+ "stream-combiner2": "^1.1.1",
+ "subarg": "^1.0.0",
+ "through2": "^2.0.0",
+ "xtend": "^4.0.0"
+ },
+ "dependencies": {
+ "isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
+ "dev": true
+ },
+ "readable-stream": {
+ "version": "2.3.6",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
+ "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
+ "dev": true,
+ "requires": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
+ }
+ },
+ "string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "dev": true,
+ "requires": {
+ "safe-buffer": "~5.1.0"
+ }
+ }
+ }
+ },
+ "mri": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/mri/-/mri-1.1.0.tgz",
+ "integrity": "sha1-XAo/KcjM/7ux7JQdzsCdcfoy82o=",
+ "dev": true
+ },
+ "ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+ "dev": true
+ },
+ "mute-stream": {
+ "version": "0.0.7",
+ "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz",
+ "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=",
+ "dev": true
+ },
+ "nan": {
+ "version": "2.10.0",
+ "resolved": "https://registry.npmjs.org/nan/-/nan-2.10.0.tgz",
+ "integrity": "sha512-bAdJv7fBLhWC+/Bls0Oza+mvTaNQtP+1RyhhhvD95pgUJz6XM5IzgmxOkItJ9tkoCiplvAnXI1tNmmUD/eScyA==",
+ "dev": true,
+ "optional": true
+ },
+ "nanomatch": {
+ "version": "1.2.13",
+ "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz",
+ "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==",
+ "dev": true,
+ "requires": {
+ "arr-diff": "^4.0.0",
+ "array-unique": "^0.3.2",
+ "define-property": "^2.0.2",
+ "extend-shallow": "^3.0.2",
+ "fragment-cache": "^0.2.1",
+ "is-windows": "^1.0.2",
+ "kind-of": "^6.0.2",
+ "object.pick": "^1.3.0",
+ "regex-not": "^1.0.0",
+ "snapdragon": "^0.8.1",
+ "to-regex": "^3.0.1"
+ },
+ "dependencies": {
+ "arr-diff": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz",
+ "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=",
+ "dev": true
+ },
+ "array-unique": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz",
+ "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=",
+ "dev": true
+ },
+ "kind-of": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
+ "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==",
+ "dev": true
+ }
+ }
+ },
+ "natural-compare": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
+ "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=",
+ "dev": true
+ },
+ "negotiator": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz",
+ "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=",
+ "dev": true
+ },
+ "netrc": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/netrc/-/netrc-0.1.4.tgz",
+ "integrity": "sha1-a+lPysqNd63gqWcNxGCRTJRHJEQ=",
+ "dev": true
+ },
+ "nice-try": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz",
+ "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==",
+ "dev": true
+ },
+ "node-dir": {
+ "version": "0.1.17",
+ "resolved": "https://registry.npmjs.org/node-dir/-/node-dir-0.1.17.tgz",
+ "integrity": "sha1-X1Zl2TNRM1yqvvjxxVRRbPXx5OU=",
+ "dev": true,
+ "requires": {
+ "minimatch": "^3.0.2"
+ }
+ },
+ "node-fetch": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.1.2.tgz",
+ "integrity": "sha1-q4hOjn5X44qUR1POxwb3iNF2i7U=",
+ "dev": true
+ },
+ "node-version": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/node-version/-/node-version-1.1.3.tgz",
+ "integrity": "sha512-rEwE51JWn0yN3Wl5BXeGn5d52OGbSXzWiiXRjAQeuyvcGKyvuSILW2rb3G7Xh+nexzLwhTpek6Ehxd6IjvHePg==",
+ "dev": true
+ },
+ "nopt": {
+ "version": "3.0.6",
+ "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz",
+ "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=",
+ "dev": true,
+ "requires": {
+ "abbrev": "1"
+ }
+ },
+ "normalize-package-data": {
+ "version": "2.4.0",
+ "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz",
+ "integrity": "sha1-EvlaMH1YNSB1oEkHuErIvpisAS8=",
+ "dev": true,
+ "requires": {
+ "hosted-git-info": "^2.1.4",
+ "is-builtin-module": "^1.0.0",
+ "semver": "2 || 3 || 4 || 5",
+ "validate-npm-package-license": "^3.0.1"
+ }
+ },
+ "normalize-path": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
+ "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
+ "dev": true,
+ "requires": {
+ "remove-trailing-separator": "^1.0.1"
+ }
+ },
+ "npm-prefix": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/npm-prefix/-/npm-prefix-1.2.0.tgz",
+ "integrity": "sha1-5hlFX3B0ulTMZtbQ033Z8b5ry8A=",
+ "dev": true,
+ "requires": {
+ "rc": "^1.1.0",
+ "shellsubstitute": "^1.1.0",
+ "untildify": "^2.1.0"
+ }
+ },
+ "npm-run-path": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz",
+ "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=",
+ "dev": true,
+ "requires": {
+ "path-key": "^2.0.0"
+ }
+ },
+ "nth-check": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.1.tgz",
+ "integrity": "sha1-mSms32KPwsQQmN6rgqxYDPFJquQ=",
+ "dev": true,
+ "requires": {
+ "boolbase": "~1.0.0"
+ }
+ },
+ "nugget": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/nugget/-/nugget-2.0.1.tgz",
+ "integrity": "sha1-IBCVpIfhrTYIGzQy+jytpPjQcbA=",
+ "dev": true,
+ "requires": {
+ "debug": "^2.1.3",
+ "minimist": "^1.1.0",
+ "pretty-bytes": "^1.0.2",
+ "progress-stream": "^1.1.0",
+ "request": "^2.45.0",
+ "single-line-log": "^1.1.2",
+ "throttleit": "0.0.2"
+ }
+ },
+ "number-is-nan": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
+ "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=",
+ "dev": true
+ },
+ "nwmatcher": {
+ "version": "1.4.4",
+ "resolved": "https://registry.npmjs.org/nwmatcher/-/nwmatcher-1.4.4.tgz",
+ "integrity": "sha512-3iuY4N5dhgMpCUrOVnuAdGrgxVqV2cJpM+XNccjR2DKOB1RUP0aA+wGXEiNziG/UKboFyGBIoKOaNlJxx8bciQ==",
+ "dev": true,
+ "optional": true
+ },
+ "oauth-sign": {
+ "version": "0.9.0",
+ "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz",
+ "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==",
+ "dev": true
+ },
+ "object-assign": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
+ "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
+ "dev": true
+ },
+ "object-copy": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz",
+ "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=",
+ "dev": true,
+ "requires": {
+ "copy-descriptor": "^0.1.0",
+ "define-property": "^0.2.5",
+ "kind-of": "^3.0.3"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "^0.1.0"
+ }
+ }
+ }
+ },
+ "object-keys": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-0.4.0.tgz",
+ "integrity": "sha1-KKaq50KN0sOpLz2V8hM13SBOAzY=",
+ "dev": true
+ },
+ "object-visit": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz",
+ "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=",
+ "dev": true,
+ "requires": {
+ "isobject": "^3.0.0"
+ },
+ "dependencies": {
+ "isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
+ "dev": true
+ }
+ }
+ },
+ "object.omit": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz",
+ "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=",
+ "dev": true,
+ "requires": {
+ "for-own": "^0.1.4",
+ "is-extendable": "^0.1.1"
+ }
+ },
+ "object.pick": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz",
+ "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=",
+ "dev": true,
+ "requires": {
+ "isobject": "^3.0.1"
+ },
+ "dependencies": {
+ "isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
+ "dev": true
+ }
+ }
+ },
+ "octicons": {
+ "version": "7.3.0",
+ "resolved": "https://registry.npmjs.org/octicons/-/octicons-7.3.0.tgz",
+ "integrity": "sha512-UVjlkmUL15Ef/7Rd72Io634Bdl61QgSMasAZpvXPoR2XNFj1RelAyhl4QJuR1hBGlPWFDR7KFj2jEzsFax2IUg==",
+ "dev": true,
+ "requires": {
+ "object-assign": "^4.1.1"
+ }
+ },
+ "on-finished": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
+ "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=",
+ "dev": true,
+ "requires": {
+ "ee-first": "1.1.1"
+ }
+ },
+ "on-headers": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.1.tgz",
+ "integrity": "sha1-ko9dD0cNSTQmUepnlLCFfBAGk/c=",
+ "dev": true
+ },
+ "once": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+ "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
+ "dev": true,
+ "requires": {
+ "wrappy": "1"
+ }
+ },
+ "onetime": {
+ "version": "1.1.0",
+ "resolved": "http://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz",
+ "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=",
+ "dev": true
+ },
+ "openssl-self-signed-certificate": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmjs.org/openssl-self-signed-certificate/-/openssl-self-signed-certificate-1.1.6.tgz",
+ "integrity": "sha1-nTpHdrGlfphHNQOSEUrS+RWoPdQ=",
+ "dev": true
+ },
+ "opn": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/opn/-/opn-5.3.0.tgz",
+ "integrity": "sha512-bYJHo/LOmoTd+pfiYhfZDnf9zekVJrY+cnS2a5F2x+w5ppvTqObojTP7WiFG+kVZs9Inw+qQ/lw7TroWwhdd2g==",
+ "dev": true,
+ "requires": {
+ "is-wsl": "^1.1.0"
+ }
+ },
+ "optimist": {
+ "version": "0.3.7",
+ "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.3.7.tgz",
+ "integrity": "sha1-yQlBrVnkJzMokjB00s8ufLxuwNk=",
+ "dev": true,
+ "requires": {
+ "wordwrap": "~0.0.2"
+ }
+ },
+ "optionator": {
+ "version": "0.8.2",
+ "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz",
+ "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=",
+ "dev": true,
+ "requires": {
+ "deep-is": "~0.1.3",
+ "fast-levenshtein": "~2.0.4",
+ "levn": "~0.3.0",
+ "prelude-ls": "~1.1.2",
+ "type-check": "~0.3.2",
+ "wordwrap": "~1.0.0"
+ },
+ "dependencies": {
+ "wordwrap": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz",
+ "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=",
+ "dev": true
+ }
+ }
+ },
+ "ora": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/ora/-/ora-0.3.0.tgz",
+ "integrity": "sha1-NnoHitJc+wltpQERXrW0AeB9dJU=",
+ "dev": true,
+ "requires": {
+ "chalk": "^1.1.1",
+ "cli-cursor": "^1.0.2",
+ "cli-spinners": "^0.2.0",
+ "log-symbols": "^1.0.2"
+ },
+ "dependencies": {
+ "cli-spinners": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-0.2.0.tgz",
+ "integrity": "sha1-hQeHN5E7iA9uyf/ntl6D7Hd2KE8=",
+ "dev": true
+ }
+ }
+ },
+ "os-browserify": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.1.2.tgz",
+ "integrity": "sha1-ScoCk+CxlZCl9d4Qx/JlphfY/lQ=",
+ "dev": true
+ },
+ "os-homedir": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz",
+ "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=",
+ "dev": true
+ },
+ "os-locale": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz",
+ "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=",
+ "dev": true,
+ "requires": {
+ "lcid": "^1.0.0"
+ }
+ },
+ "os-tmpdir": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
+ "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=",
+ "dev": true
+ },
+ "p-finally": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz",
+ "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=",
+ "dev": true
+ },
+ "p-limit": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.2.0.tgz",
+ "integrity": "sha512-Y/OtIaXtUPr4/YpMv1pCL5L5ed0rumAaAeBSj12F+bSlMdys7i8oQF/GUJmfpTS/QoaRrS/k6pma29haJpsMng==",
+ "dev": true,
+ "requires": {
+ "p-try": "^1.0.0"
+ }
+ },
+ "p-locate": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz",
+ "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=",
+ "dev": true,
+ "requires": {
+ "p-limit": "^1.1.0"
+ }
+ },
+ "p-try": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz",
+ "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=",
+ "dev": true
+ },
+ "package-json": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/package-json/-/package-json-4.0.1.tgz",
+ "integrity": "sha1-iGmgQBJTZhxMTKPabCEh7VVfXu0=",
+ "dev": true,
+ "requires": {
+ "got": "^6.7.1",
+ "registry-auth-token": "^3.0.1",
+ "registry-url": "^3.0.3",
+ "semver": "^5.1.0"
+ }
+ },
+ "pako": {
+ "version": "0.2.9",
+ "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz",
+ "integrity": "sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU=",
+ "dev": true
+ },
+ "parents": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/parents/-/parents-1.0.1.tgz",
+ "integrity": "sha1-/t1NK/GTp3dF/nHjcdc8MwfZx1E=",
+ "dev": true,
+ "requires": {
+ "path-platform": "~0.11.15"
+ }
+ },
+ "parse-asn1": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.1.tgz",
+ "integrity": "sha512-KPx7flKXg775zZpnp9SxJlz00gTd4BmJ2yJufSc44gMCRrRQ7NSzAcSJQfifuOLgW6bEi+ftrALtsgALeB2Adw==",
+ "dev": true,
+ "requires": {
+ "asn1.js": "^4.0.0",
+ "browserify-aes": "^1.0.0",
+ "create-hash": "^1.1.0",
+ "evp_bytestokey": "^1.0.0",
+ "pbkdf2": "^3.0.3"
+ }
+ },
+ "parse-entities": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-1.1.2.tgz",
+ "integrity": "sha512-5N9lmQ7tmxfXf+hO3X6KRG6w7uYO/HL9fHalSySTdyn63C3WNvTM/1R8tn1u1larNcEbo3Slcy2bsVDQqvEpUg==",
+ "dev": true,
+ "requires": {
+ "character-entities": "^1.0.0",
+ "character-entities-legacy": "^1.0.0",
+ "character-reference-invalid": "^1.0.0",
+ "is-alphanumerical": "^1.0.0",
+ "is-decimal": "^1.0.0",
+ "is-hexadecimal": "^1.0.0"
+ }
+ },
+ "parse-github-repo-url": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/parse-github-repo-url/-/parse-github-repo-url-1.4.1.tgz",
+ "integrity": "sha1-nn2LslKmy2ukJZUGC3v23z28H1A=",
+ "dev": true
+ },
+ "parse-gitignore": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/parse-gitignore/-/parse-gitignore-0.4.0.tgz",
+ "integrity": "sha1-q/cC5LkAUk//eQK2g4YoV7Y/k/4=",
+ "dev": true,
+ "requires": {
+ "array-unique": "^0.3.2",
+ "is-glob": "^3.1.0"
+ },
+ "dependencies": {
+ "array-unique": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz",
+ "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=",
+ "dev": true
+ },
+ "is-extglob": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+ "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
+ "dev": true
+ },
+ "is-glob": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
+ "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
+ "dev": true,
+ "requires": {
+ "is-extglob": "^2.1.0"
+ }
+ }
+ }
+ },
+ "parse-glob": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz",
+ "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=",
+ "dev": true,
+ "requires": {
+ "glob-base": "^0.3.0",
+ "is-dotfile": "^1.0.0",
+ "is-extglob": "^1.0.0",
+ "is-glob": "^2.0.0"
+ }
+ },
+ "parse-json": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
+ "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=",
+ "dev": true,
+ "requires": {
+ "error-ex": "^1.2.0"
+ }
+ },
+ "parse5": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/parse5/-/parse5-1.5.1.tgz",
+ "integrity": "sha1-m387DeMr543CQBsXVzzK8Pb1nZQ=",
+ "dev": true,
+ "optional": true
+ },
+ "pascalcase": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz",
+ "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=",
+ "dev": true
+ },
+ "path-browserify": {
+ "version": "0.0.0",
+ "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz",
+ "integrity": "sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo=",
+ "dev": true
+ },
+ "path-dirname": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz",
+ "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=",
+ "dev": true
+ },
+ "path-exists": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz",
+ "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=",
+ "dev": true,
+ "requires": {
+ "pinkie-promise": "^2.0.0"
+ }
+ },
+ "path-is-absolute": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+ "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
+ "dev": true
+ },
+ "path-is-inside": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz",
+ "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=",
+ "dev": true
+ },
+ "path-key": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
+ "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=",
+ "dev": true
+ },
+ "path-parse": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz",
+ "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=",
+ "dev": true
+ },
+ "path-platform": {
+ "version": "0.11.15",
+ "resolved": "https://registry.npmjs.org/path-platform/-/path-platform-0.11.15.tgz",
+ "integrity": "sha1-6GQhf3TDaFDwhSt43Hv31KVyG/I=",
+ "dev": true
+ },
+ "path-type": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz",
+ "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.2",
+ "pify": "^2.0.0",
+ "pinkie-promise": "^2.0.0"
+ }
+ },
+ "pbkdf2": {
+ "version": "3.0.16",
+ "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.16.tgz",
+ "integrity": "sha512-y4CXP3thSxqf7c0qmOF+9UeOTrifiVTIM+u7NWlq+PRsHbr7r7dpCmvzrZxa96JJUNi0Y5w9VqG5ZNeCVMoDcA==",
+ "dev": true,
+ "requires": {
+ "create-hash": "^1.1.2",
+ "create-hmac": "^1.1.4",
+ "ripemd160": "^2.0.1",
+ "safe-buffer": "^5.0.1",
+ "sha.js": "^2.4.8"
+ }
+ },
+ "peek-stream": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/peek-stream/-/peek-stream-1.1.3.tgz",
+ "integrity": "sha512-FhJ+YbOSBb9/rIl2ZeE/QHEsWn7PqNYt8ARAY3kIgNGOk13g9FGyIY6JIl/xB/3TFRVoTv5as0l11weORrTekA==",
+ "dev": true,
+ "requires": {
+ "buffer-from": "^1.0.0",
+ "duplexify": "^3.5.0",
+ "through2": "^2.0.3"
+ }
+ },
+ "performance-now": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
+ "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=",
+ "dev": true
+ },
+ "pify": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+ "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
+ "dev": true
+ },
+ "pinkie": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz",
+ "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=",
+ "dev": true
+ },
+ "pinkie-promise": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
+ "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=",
+ "dev": true,
+ "requires": {
+ "pinkie": "^2.0.0"
+ }
+ },
+ "pkg-conf": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/pkg-conf/-/pkg-conf-2.1.0.tgz",
+ "integrity": "sha1-ISZRTKbyq/69FoWW3xi6V4Z/AFg=",
+ "dev": true,
+ "requires": {
+ "find-up": "^2.0.0",
+ "load-json-file": "^4.0.0"
+ },
+ "dependencies": {
+ "find-up": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
+ "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
+ "dev": true,
+ "requires": {
+ "locate-path": "^2.0.0"
+ }
+ },
+ "load-json-file": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz",
+ "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.2",
+ "parse-json": "^4.0.0",
+ "pify": "^3.0.0",
+ "strip-bom": "^3.0.0"
+ }
+ },
+ "parse-json": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz",
+ "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=",
+ "dev": true,
+ "requires": {
+ "error-ex": "^1.3.1",
+ "json-parse-better-errors": "^1.0.1"
+ }
+ },
+ "pify": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
+ "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
+ "dev": true
+ },
+ "strip-bom": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
+ "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=",
+ "dev": true
+ }
+ }
+ },
+ "pkg-config": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/pkg-config/-/pkg-config-1.1.1.tgz",
+ "integrity": "sha1-VX7yLXPaPIg3EHdmxS6tq94pj+Q=",
+ "dev": true,
+ "requires": {
+ "debug-log": "^1.0.0",
+ "find-root": "^1.0.0",
+ "xtend": "^4.0.1"
+ }
+ },
+ "pkg-dir": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz",
+ "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=",
+ "dev": true,
+ "requires": {
+ "find-up": "^1.0.0"
+ }
+ },
+ "plur": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/plur/-/plur-2.1.2.tgz",
+ "integrity": "sha1-dIJFLBoPUI4+NE6uwxLJHCncZVo=",
+ "dev": true,
+ "requires": {
+ "irregular-plurals": "^1.0.0"
+ }
+ },
+ "pluralize": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-7.0.0.tgz",
+ "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==",
+ "dev": true
+ },
+ "posix-character-classes": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz",
+ "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=",
+ "dev": true
+ },
+ "prelude-ls": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz",
+ "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=",
+ "dev": true
+ },
+ "prepend-http": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz",
+ "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=",
+ "dev": true
+ },
+ "preserve": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz",
+ "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=",
+ "dev": true
+ },
+ "pretty-bytes": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-1.0.4.tgz",
+ "integrity": "sha1-CiLoIQYJrTVUL4yNXSFZr/B1HIQ=",
+ "dev": true,
+ "requires": {
+ "get-stdin": "^4.0.1",
+ "meow": "^3.1.0"
+ },
+ "dependencies": {
+ "camelcase": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz",
+ "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=",
+ "dev": true
+ },
+ "camelcase-keys": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz",
+ "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=",
+ "dev": true,
+ "requires": {
+ "camelcase": "^2.0.0",
+ "map-obj": "^1.0.0"
+ }
+ },
+ "indent-string": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz",
+ "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=",
+ "dev": true,
+ "requires": {
+ "repeating": "^2.0.0"
+ }
+ },
+ "map-obj": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz",
+ "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=",
+ "dev": true
+ },
+ "meow": {
+ "version": "3.7.0",
+ "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz",
+ "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=",
+ "dev": true,
+ "requires": {
+ "camelcase-keys": "^2.0.0",
+ "decamelize": "^1.1.2",
+ "loud-rejection": "^1.0.0",
+ "map-obj": "^1.0.1",
+ "minimist": "^1.1.3",
+ "normalize-package-data": "^2.3.4",
+ "object-assign": "^4.0.1",
+ "read-pkg-up": "^1.0.1",
+ "redent": "^1.0.0",
+ "trim-newlines": "^1.0.0"
+ }
+ },
+ "redent": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz",
+ "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=",
+ "dev": true,
+ "requires": {
+ "indent-string": "^2.1.0",
+ "strip-indent": "^1.0.1"
+ }
+ },
+ "strip-indent": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz",
+ "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=",
+ "dev": true,
+ "requires": {
+ "get-stdin": "^4.0.1"
+ }
+ },
+ "trim-newlines": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz",
+ "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=",
+ "dev": true
+ }
+ }
+ },
+ "process": {
+ "version": "0.11.10",
+ "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
+ "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=",
+ "dev": true
+ },
+ "process-nextick-args": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz",
+ "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==",
+ "dev": true
+ },
+ "progress": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.0.tgz",
+ "integrity": "sha1-ihvjZr+Pwj2yvSPxDG/pILQ4nR8=",
+ "dev": true
+ },
+ "progress-stream": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/progress-stream/-/progress-stream-1.2.0.tgz",
+ "integrity": "sha1-LNPP6jO6OonJwSHsM0er6asSX3c=",
+ "dev": true,
+ "requires": {
+ "speedometer": "~0.1.2",
+ "through2": "~0.2.3"
+ },
+ "dependencies": {
+ "through2": {
+ "version": "0.2.3",
+ "resolved": "https://registry.npmjs.org/through2/-/through2-0.2.3.tgz",
+ "integrity": "sha1-6zKE2k6jEbbMis42U3SKUqvyWj8=",
+ "dev": true,
+ "requires": {
+ "readable-stream": "~1.1.9",
+ "xtend": "~2.1.1"
+ }
+ },
+ "xtend": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/xtend/-/xtend-2.1.2.tgz",
+ "integrity": "sha1-bv7MKk2tjmlixJAbM3znuoe10os=",
+ "dev": true,
+ "requires": {
+ "object-keys": "~0.4.0"
+ }
+ }
+ }
+ },
+ "prop-types": {
+ "version": "15.6.2",
+ "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.6.2.tgz",
+ "integrity": "sha512-3pboPvLiWD7dkI3qf3KbUe6hKFKa52w+AE0VCqECtf+QHAKgOL37tTaNCnuX1nAAQ4ZhyP+kYVKf8rLmJ/feDQ==",
+ "dev": true,
+ "requires": {
+ "loose-envify": "^1.3.1",
+ "object-assign": "^4.1.1"
+ }
+ },
+ "pseudomap": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz",
+ "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=",
+ "dev": true
+ },
+ "psl": {
+ "version": "1.1.29",
+ "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.29.tgz",
+ "integrity": "sha512-AeUmQ0oLN02flVHXWh9sSJF7mcdFq0ppid/JkErufc3hGIV/AMa8Fo9VgDo/cT2jFdOWoFvHp90qqBH54W+gjQ==",
+ "dev": true
+ },
+ "public-encrypt": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.2.tgz",
+ "integrity": "sha512-4kJ5Esocg8X3h8YgJsKAuoesBgB7mqH3eowiDzMUPKiRDDE7E/BqqZD1hnTByIaAFiwAw246YEltSq7tdrOH0Q==",
+ "dev": true,
+ "requires": {
+ "bn.js": "^4.1.0",
+ "browserify-rsa": "^4.0.0",
+ "create-hash": "^1.1.0",
+ "parse-asn1": "^5.0.0",
+ "randombytes": "^2.0.1"
+ }
+ },
+ "pump": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz",
+ "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==",
+ "dev": true,
+ "requires": {
+ "end-of-stream": "^1.1.0",
+ "once": "^1.3.1"
+ }
+ },
+ "pumpify": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz",
+ "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==",
+ "dev": true,
+ "requires": {
+ "duplexify": "^3.6.0",
+ "inherits": "^2.0.3",
+ "pump": "^2.0.0"
+ }
+ },
+ "punycode": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
+ "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=",
+ "dev": true
+ },
+ "q": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz",
+ "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=",
+ "dev": true
+ },
+ "qs": {
+ "version": "6.5.2",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
+ "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==",
+ "dev": true
+ },
+ "querystring": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz",
+ "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=",
+ "dev": true
+ },
+ "querystring-es3": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz",
+ "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=",
+ "dev": true
+ },
+ "quick-lru": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-1.1.0.tgz",
+ "integrity": "sha1-Q2CxfGETatOAeDl/8RQW4Ybc+7g=",
+ "dev": true
+ },
+ "ramda": {
+ "version": "0.25.0",
+ "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.25.0.tgz",
+ "integrity": "sha512-GXpfrYVPwx3K7RQ6aYT8KPS8XViSXUVJT1ONhoKPE9VAleW42YE+U+8VEyGWt41EnEQW7gwecYJriTI0pKoecQ==",
+ "dev": true
+ },
+ "randomatic": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-3.0.0.tgz",
+ "integrity": "sha512-VdxFOIEY3mNO5PtSRkkle/hPJDHvQhK21oa73K4yAc9qmp6N429gAyF1gZMOTMeS0/AYzaV/2Trcef+NaIonSA==",
+ "dev": true,
+ "requires": {
+ "is-number": "^4.0.0",
+ "kind-of": "^6.0.0",
+ "math-random": "^1.0.1"
+ },
+ "dependencies": {
+ "is-number": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz",
+ "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==",
+ "dev": true
+ },
+ "kind-of": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
+ "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==",
+ "dev": true
+ }
+ }
+ },
+ "randombytes": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.6.tgz",
+ "integrity": "sha512-CIQ5OFxf4Jou6uOKe9t1AOgqpeU5fd70A8NPdHSGeYXqXsPe6peOwI0cUl88RWZ6sP1vPMV3avd/R6cZ5/sP1A==",
+ "dev": true,
+ "requires": {
+ "safe-buffer": "^5.1.0"
+ }
+ },
+ "randomfill": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz",
+ "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==",
+ "dev": true,
+ "requires": {
+ "randombytes": "^2.0.5",
+ "safe-buffer": "^5.1.0"
+ }
+ },
+ "range-parser": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz",
+ "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=",
+ "dev": true
+ },
+ "raw-body": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.2.tgz",
+ "integrity": "sha1-vNYMd9Prk83gBQKVw/N5OJvIj4k=",
+ "dev": true,
+ "requires": {
+ "bytes": "3.0.0",
+ "http-errors": "1.6.2",
+ "iconv-lite": "0.4.19",
+ "unpipe": "1.0.0"
+ }
+ },
+ "rc": {
+ "version": "1.2.7",
+ "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.7.tgz",
+ "integrity": "sha512-LdLD8xD4zzLsAT5xyushXDNscEjB7+2ulnl8+r1pnESlYtlJtVSoCMBGr30eDRJ3+2Gq89jK9P9e4tCEH1+ywA==",
+ "dev": true,
+ "requires": {
+ "deep-extend": "^0.5.1",
+ "ini": "~1.3.0",
+ "minimist": "^1.2.0",
+ "strip-json-comments": "~2.0.1"
+ }
+ },
+ "read-only-stream": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/read-only-stream/-/read-only-stream-2.0.0.tgz",
+ "integrity": "sha1-JyT9aoET1zdkrCiNQ4YnDB2/F/A=",
+ "dev": true,
+ "requires": {
+ "readable-stream": "^2.0.2"
+ },
+ "dependencies": {
+ "isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
+ "dev": true
+ },
+ "readable-stream": {
+ "version": "2.3.6",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
+ "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
+ "dev": true,
+ "requires": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
+ }
+ },
+ "string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "dev": true,
+ "requires": {
+ "safe-buffer": "~5.1.0"
+ }
+ }
+ }
+ },
+ "read-pkg": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz",
+ "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=",
+ "dev": true,
+ "requires": {
+ "load-json-file": "^1.0.0",
+ "normalize-package-data": "^2.3.2",
+ "path-type": "^1.0.0"
+ }
+ },
+ "read-pkg-up": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz",
+ "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=",
+ "dev": true,
+ "requires": {
+ "find-up": "^1.0.0",
+ "read-pkg": "^1.0.0"
+ }
+ },
+ "readable-stream": {
+ "version": "1.1.14",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz",
+ "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=",
+ "dev": true,
+ "requires": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.1",
+ "isarray": "0.0.1",
+ "string_decoder": "~0.10.x"
+ }
+ },
+ "readdirp": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.1.0.tgz",
+ "integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.2",
+ "minimatch": "^3.0.2",
+ "readable-stream": "^2.0.2",
+ "set-immediate-shim": "^1.0.1"
+ },
+ "dependencies": {
+ "isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
+ "dev": true
+ },
+ "readable-stream": {
+ "version": "2.3.6",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
+ "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
+ "dev": true,
+ "requires": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
+ }
+ },
+ "string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "dev": true,
+ "requires": {
+ "safe-buffer": "~5.1.0"
+ }
+ }
+ }
+ },
+ "recursive-readdir": {
+ "version": "2.2.2",
+ "resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.2.tgz",
+ "integrity": "sha512-nRCcW9Sj7NuZwa2XvH9co8NPeXUBhZP7CRKJtU+cS6PW9FpCIFoI5ib0NT1ZrbNuPoRy0ylyCaUL8Gih4LSyFg==",
+ "dev": true,
+ "requires": {
+ "minimatch": "3.0.4"
+ }
+ },
+ "redent": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/redent/-/redent-2.0.0.tgz",
+ "integrity": "sha1-wbIAe0LVfrE4kHmzyDM2OdXhzKo=",
+ "dev": true,
+ "requires": {
+ "indent-string": "^3.0.0",
+ "strip-indent": "^2.0.0"
+ }
+ },
+ "regex-cache": {
+ "version": "0.4.4",
+ "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz",
+ "integrity": "sha1-db3FiioUls7EihKDW8VMjVYjNt0=",
+ "dev": true,
+ "requires": {
+ "is-equal-shallow": "^0.1.3"
+ }
+ },
+ "regex-not": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz",
+ "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==",
+ "dev": true,
+ "requires": {
+ "extend-shallow": "^3.0.2",
+ "safe-regex": "^1.1.0"
+ }
+ },
+ "regexpp": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.0.tgz",
+ "integrity": "sha512-g2FAVtR8Uh8GO1Nv5wpxW7VFVwHcCEr4wyA8/MHiRkO8uHoR5ntAA8Uq3P1vvMTX/BeQiRVSpDGLd+Wn5HNOTA==",
+ "dev": true
+ },
+ "registry-auth-token": {
+ "version": "3.3.2",
+ "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.3.2.tgz",
+ "integrity": "sha512-JL39c60XlzCVgNrO+qq68FoNb56w/m7JYvGR2jT5iR1xBrUA3Mfx5Twk5rqTThPmQKMWydGmq8oFtDlxfrmxnQ==",
+ "dev": true,
+ "requires": {
+ "rc": "^1.1.6",
+ "safe-buffer": "^5.0.1"
+ }
+ },
+ "registry-url": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz",
+ "integrity": "sha1-PU74cPc93h138M+aOBQyRE4XSUI=",
+ "dev": true,
+ "requires": {
+ "rc": "^1.0.1"
+ }
+ },
+ "remark": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/remark/-/remark-8.0.0.tgz",
+ "integrity": "sha512-K0PTsaZvJlXTl9DN6qYlvjTkqSZBFELhROZMrblm2rB+085flN84nz4g/BscKRMqDvhzlK1oQ/xnWQumdeNZYw==",
+ "dev": true,
+ "requires": {
+ "remark-parse": "^4.0.0",
+ "remark-stringify": "^4.0.0",
+ "unified": "^6.0.0"
+ }
+ },
+ "remark-cli": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/remark-cli/-/remark-cli-4.0.0.tgz",
+ "integrity": "sha512-q5GMjGypUS4rTZb3WfMQcGpClSC38A9Ogg1h/HB2GLsqypDetmAfy0X+tuJ6JeyCPVOXXCDgsDCQq4QPqKmxBA==",
+ "dev": true,
+ "requires": {
+ "markdown-extensions": "^1.1.0",
+ "remark": "^8.0.0",
+ "unified-args": "^4.0.0"
+ }
+ },
+ "remark-lint": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/remark-lint/-/remark-lint-6.0.1.tgz",
+ "integrity": "sha512-wvTTuB5O5pF8SxqahQjjrU3dtuhygYjaGcOZTw+4ACgSE4RBINDlNqN46HjcV3X0ib5GmObJUt5a2mmhtmuTqw==",
+ "dev": true,
+ "requires": {
+ "remark-message-control": "^4.0.0"
+ }
+ },
+ "remark-lint-blockquote-indentation": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/remark-lint-blockquote-indentation/-/remark-lint-blockquote-indentation-1.0.1.tgz",
+ "integrity": "sha512-YrP99MJ3+dQ5JXzq39fUOcYzwcumva/xEM1eFtD2TrQcSdlMLoqYa7gj+aEEhZCjlA5BssTiVoWWW0RjyPPGZw==",
+ "dev": true,
+ "requires": {
+ "mdast-util-to-string": "^1.0.2",
+ "plur": "^2.1.2",
+ "unified-lint-rule": "^1.0.0",
+ "unist-util-generated": "^1.1.0",
+ "unist-util-position": "^3.0.0",
+ "unist-util-visit": "^1.1.1"
+ }
+ },
+ "remark-lint-code-block-style": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/remark-lint-code-block-style/-/remark-lint-code-block-style-1.0.1.tgz",
+ "integrity": "sha512-FRUMhhKwCruH4vkatdMhVO4WlYpysV1NmMILVoK/k+/7uFLSfgvlqo66nzhpMdWL8TQHqdo0LhiXuetGC2WjsQ==",
+ "dev": true,
+ "requires": {
+ "unified-lint-rule": "^1.0.0",
+ "unist-util-generated": "^1.1.0",
+ "unist-util-position": "^3.0.0",
+ "unist-util-visit": "^1.1.1"
+ }
+ },
+ "remark-lint-definition-case": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/remark-lint-definition-case/-/remark-lint-definition-case-1.0.1.tgz",
+ "integrity": "sha512-TxLye5KF4o/rKVTvmPRX5jS9itamFS02yy1IG8bIYcIAJvWsW3GlJaXq4ohK3hKwSQOhtCherEfD6XF9BHLNYQ==",
+ "dev": true,
+ "requires": {
+ "unified-lint-rule": "^1.0.0",
+ "unist-util-generated": "^1.1.0",
+ "unist-util-position": "^3.0.0",
+ "unist-util-visit": "^1.1.1"
+ }
+ },
+ "remark-lint-definition-spacing": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/remark-lint-definition-spacing/-/remark-lint-definition-spacing-1.0.1.tgz",
+ "integrity": "sha512-ewzdlFfpTSP11ZuiOln0yfz6Y03aWtgJmLVQNfF1spaT1gURaShjs8Hiilbo719bz96DgvXSZLP6UnkSiZL1vg==",
+ "dev": true,
+ "requires": {
+ "unified-lint-rule": "^1.0.0",
+ "unist-util-generated": "^1.1.0",
+ "unist-util-position": "^3.0.0",
+ "unist-util-visit": "^1.1.1"
+ }
+ },
+ "remark-lint-emphasis-marker": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/remark-lint-emphasis-marker/-/remark-lint-emphasis-marker-1.0.1.tgz",
+ "integrity": "sha512-QyNsD6y8EZQqhechw0XFGybYMlxn6PFLSlFUO50KSQlJEOgkImN2yJfrNrET2GY4t/fc/uYmeI/q7auUIkLX2w==",
+ "dev": true,
+ "requires": {
+ "unified-lint-rule": "^1.0.0",
+ "unist-util-generated": "^1.1.0",
+ "unist-util-position": "^3.0.0",
+ "unist-util-visit": "^1.1.1"
+ }
+ },
+ "remark-lint-fenced-code-flag": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/remark-lint-fenced-code-flag/-/remark-lint-fenced-code-flag-1.0.1.tgz",
+ "integrity": "sha512-P24T9DRe/nnywPFRpE1UAXAVzN1CX6HmINr15UHbQZo1Cy8KYt7uV9YOR0/XzphtnO/AFenAqZyf7tchW5AUNQ==",
+ "dev": true,
+ "requires": {
+ "unified-lint-rule": "^1.0.0",
+ "unist-util-generated": "^1.1.0",
+ "unist-util-position": "^3.0.0",
+ "unist-util-visit": "^1.1.1"
+ }
+ },
+ "remark-lint-fenced-code-marker": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/remark-lint-fenced-code-marker/-/remark-lint-fenced-code-marker-1.0.1.tgz",
+ "integrity": "sha512-mX7xAMl5m7xGX+YtOtyXIyv+egD4IQAm6DPGdfunI734QwODwcoBydtpTD56jrY+48nVcQ/anFYT1Blg3Xk3sQ==",
+ "dev": true,
+ "requires": {
+ "unified-lint-rule": "^1.0.0",
+ "unist-util-generated": "^1.1.0",
+ "unist-util-position": "^3.0.0",
+ "unist-util-visit": "^1.1.1"
+ }
+ },
+ "remark-lint-file-extension": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/remark-lint-file-extension/-/remark-lint-file-extension-1.0.1.tgz",
+ "integrity": "sha512-K1Pf5oviaFyCs0FhZqaNZ2odgd5KoV6AlA4nNAMxyylB0Y6t0mYpzECoLSS5Bgxf6f8Op9YbuM2cbjBAsv0dIA==",
+ "dev": true,
+ "requires": {
+ "unified-lint-rule": "^1.0.0"
+ }
+ },
+ "remark-lint-final-definition": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/remark-lint-final-definition/-/remark-lint-final-definition-1.0.1.tgz",
+ "integrity": "sha512-DK6bphJdQ0xSOQAn+8wOyLIVc3SZW2+ZzCMCLkQnVtHiQ9GHMzFiCkeE3Cq+OClsMI5Yn8wFTHZHPUn58VhNEQ==",
+ "dev": true,
+ "requires": {
+ "unified-lint-rule": "^1.0.0",
+ "unist-util-generated": "^1.1.0",
+ "unist-util-position": "^3.0.0",
+ "unist-util-visit": "^1.1.1"
+ }
+ },
+ "remark-lint-hard-break-spaces": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/remark-lint-hard-break-spaces/-/remark-lint-hard-break-spaces-1.0.2.tgz",
+ "integrity": "sha512-uh7LqHgRPCphiCvRzBVA4D0Ml2IqPaw89lWJdQ6HvYiV8ChB/OFLBapHi6OKW7NVVVPPJsElPMB/UPUsKFaPTg==",
+ "dev": true,
+ "requires": {
+ "unified-lint-rule": "^1.0.0",
+ "unist-util-generated": "^1.1.0",
+ "unist-util-position": "^3.0.0",
+ "unist-util-visit": "^1.1.1"
+ }
+ },
+ "remark-lint-heading-increment": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/remark-lint-heading-increment/-/remark-lint-heading-increment-1.0.1.tgz",
+ "integrity": "sha512-jBAJacXAU5drUpvmymOoFmrdCCNDiz8bzGgJIMjpT0Vyjd0+qdXu2iyFMl/4RkkUli25rpUDXkTHTcxmNbh7Zw==",
+ "dev": true,
+ "requires": {
+ "unified-lint-rule": "^1.0.0",
+ "unist-util-generated": "^1.1.0",
+ "unist-util-visit": "^1.1.1"
+ }
+ },
+ "remark-lint-heading-style": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/remark-lint-heading-style/-/remark-lint-heading-style-1.0.1.tgz",
+ "integrity": "sha512-m9Gqr091YdxUtG69xdXYH8fSd3+nsrsMamB/qSWpVSZuWQKZ1mRotr1LO9NphJh6vhw8IfBtG07wgEDn6b40sQ==",
+ "dev": true,
+ "requires": {
+ "mdast-util-heading-style": "^1.0.2",
+ "unified-lint-rule": "^1.0.0",
+ "unist-util-generated": "^1.1.0",
+ "unist-util-visit": "^1.1.1"
+ }
+ },
+ "remark-lint-link-title-style": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/remark-lint-link-title-style/-/remark-lint-link-title-style-1.0.1.tgz",
+ "integrity": "sha512-91MyqmZjokSzRbgvlKq5sLCJEFkM/MNKT1PDaWa3+GDLBGu7D4eMQGd2x49xX8IdJDEoWy5D8W+2Gb8XKWMUyw==",
+ "dev": true,
+ "requires": {
+ "unified-lint-rule": "^1.0.0",
+ "unist-util-generated": "^1.1.0",
+ "unist-util-position": "^3.0.0",
+ "unist-util-visit": "^1.1.1",
+ "vfile-location": "^2.0.1"
+ }
+ },
+ "remark-lint-list-item-content-indent": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/remark-lint-list-item-content-indent/-/remark-lint-list-item-content-indent-1.0.1.tgz",
+ "integrity": "sha512-R5cdXFFywoBcg+2UUcF9OJ/vt9oqJv+KmTKIQV9CFHWeAfMFiZbxazsSPNaCcO1fW9622hxPCawN/AofDTbP7Q==",
+ "dev": true,
+ "requires": {
+ "plur": "^2.1.2",
+ "unified-lint-rule": "^1.0.0",
+ "unist-util-generated": "^1.1.0",
+ "unist-util-position": "^3.0.0",
+ "unist-util-visit": "^1.1.1"
+ }
+ },
+ "remark-lint-list-item-indent": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/remark-lint-list-item-indent/-/remark-lint-list-item-indent-1.0.1.tgz",
+ "integrity": "sha512-dSUFGQYtduuaos+5oXH89RTk0rGUe6DFf04q+rxQ7Z3YRbuXhAU2nYeY0/HENYiWJU1xFLteZkDvKMj0NfS3DQ==",
+ "dev": true,
+ "requires": {
+ "plur": "^2.1.2",
+ "unified-lint-rule": "^1.0.0",
+ "unist-util-generated": "^1.1.0",
+ "unist-util-position": "^3.0.0",
+ "unist-util-visit": "^1.1.1"
+ }
+ },
+ "remark-lint-list-item-spacing": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/remark-lint-list-item-spacing/-/remark-lint-list-item-spacing-1.1.1.tgz",
+ "integrity": "sha512-HlPEzRq4LJB6tQ72zgIZ42mOaOSX92O268BLolys/H1x6N29/JNMLfurWqLsrxZrxxHH3H7EUP4dNM2P1kDGBw==",
+ "dev": true,
+ "requires": {
+ "unified-lint-rule": "^1.0.0",
+ "unist-util-generated": "^1.1.0",
+ "unist-util-position": "^3.0.0",
+ "unist-util-visit": "^1.1.1"
+ }
+ },
+ "remark-lint-maximum-heading-length": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/remark-lint-maximum-heading-length/-/remark-lint-maximum-heading-length-1.0.1.tgz",
+ "integrity": "sha512-f8ChV9U238gncyvTqmzJ+UpCMj+hFyluWBjVYr2K8CNh+MdSivIxS4zw4170sBRoqNuS3gBxRHG9f4rmdqotJA==",
+ "dev": true,
+ "requires": {
+ "mdast-util-to-string": "^1.0.2",
+ "unified-lint-rule": "^1.0.0",
+ "unist-util-generated": "^1.1.0",
+ "unist-util-visit": "^1.1.1"
+ }
+ },
+ "remark-lint-maximum-line-length": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/remark-lint-maximum-line-length/-/remark-lint-maximum-line-length-1.0.2.tgz",
+ "integrity": "sha512-M4UIXAAbtLgoQbTDVwdKOEFbTKtJSZ+pCW7ZqMFs+cbIN0Svm32LM9+xpVfVU0hLYt3Ypl++EAPfguBNe1PZEw==",
+ "dev": true,
+ "requires": {
+ "unified-lint-rule": "^1.0.0",
+ "unist-util-generated": "^1.1.0",
+ "unist-util-position": "^3.0.0",
+ "unist-util-visit": "^1.1.1"
+ }
+ },
+ "remark-lint-no-auto-link-without-protocol": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/remark-lint-no-auto-link-without-protocol/-/remark-lint-no-auto-link-without-protocol-1.0.1.tgz",
+ "integrity": "sha512-MHl0hNtF8Rc0lg6iuVP7/0rnp4uZadm3S07/1TiFeqzU22KFxxzcC8980Q4+I8oPZE0d1x80h9DmkNAVFwhDjQ==",
+ "dev": true,
+ "requires": {
+ "mdast-util-to-string": "^1.0.2",
+ "unified-lint-rule": "^1.0.0",
+ "unist-util-generated": "^1.1.0",
+ "unist-util-position": "^3.0.0",
+ "unist-util-visit": "^1.1.1"
+ }
+ },
+ "remark-lint-no-blockquote-without-marker": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/remark-lint-no-blockquote-without-marker/-/remark-lint-no-blockquote-without-marker-2.0.1.tgz",
+ "integrity": "sha512-8VTQ/MP3flvG4U0tFSD+DMVT7F/4u9SnQLb/jjeRC3DzgbsIagIUqpWYAKkc+yBz9S/lgftA92lLP5PrlOa5DA==",
+ "dev": true,
+ "requires": {
+ "unified-lint-rule": "^1.0.0",
+ "unist-util-generated": "^1.1.0",
+ "unist-util-position": "^3.0.0",
+ "unist-util-visit": "^1.1.1",
+ "vfile-location": "^2.0.1"
+ }
+ },
+ "remark-lint-no-consecutive-blank-lines": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/remark-lint-no-consecutive-blank-lines/-/remark-lint-no-consecutive-blank-lines-1.0.1.tgz",
+ "integrity": "sha512-IhyUiGTpb/hjtusIVg10q963KeL5CyNfbWOfDZ1KtY2tvdoSPRGrrCuTKo6OG8r1qavM6bU0mtRuIBqNh4lIzA==",
+ "dev": true,
+ "requires": {
+ "plur": "^2.1.2",
+ "unified-lint-rule": "^1.0.0",
+ "unist-util-generated": "^1.1.0",
+ "unist-util-position": "^3.0.0",
+ "unist-util-visit": "^1.1.1"
+ }
+ },
+ "remark-lint-no-duplicate-headings": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/remark-lint-no-duplicate-headings/-/remark-lint-no-duplicate-headings-1.0.1.tgz",
+ "integrity": "sha512-iZZxyZgwnjvDkydKZzqHBueJvIpGbxnITmgd8xN8TOLZoAg9/KGTQRAkotL1HXNRdkzwggfgB9ONxv/rWtYBmg==",
+ "dev": true,
+ "requires": {
+ "mdast-util-to-string": "^1.0.2",
+ "unified-lint-rule": "^1.0.0",
+ "unist-util-generated": "^1.1.0",
+ "unist-util-position": "^3.0.0",
+ "unist-util-visit": "^1.1.1"
+ }
+ },
+ "remark-lint-no-emphasis-as-heading": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/remark-lint-no-emphasis-as-heading/-/remark-lint-no-emphasis-as-heading-1.0.1.tgz",
+ "integrity": "sha512-+x17Hrjwne4Mhk2x/Zolnuv/sOclF1oYMDBSEYhBUpn/UAwxhXEXYKkeo0KkWA7Q3+UCLELJvzsk4cGNP6Sgow==",
+ "dev": true,
+ "requires": {
+ "unified-lint-rule": "^1.0.0",
+ "unist-util-generated": "^1.1.0",
+ "unist-util-visit": "^1.1.1"
+ }
+ },
+ "remark-lint-no-file-name-articles": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/remark-lint-no-file-name-articles/-/remark-lint-no-file-name-articles-1.0.1.tgz",
+ "integrity": "sha512-SzebnFnilrsINA6QZP1YqPa3SrfSotrLkRWl5FUCoVshBvEFNKJFWXj6Xyt4NjWQ5tJWFtOMysAuHdGT+Odhjg==",
+ "dev": true,
+ "requires": {
+ "unified-lint-rule": "^1.0.0"
+ }
+ },
+ "remark-lint-no-file-name-consecutive-dashes": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/remark-lint-no-file-name-consecutive-dashes/-/remark-lint-no-file-name-consecutive-dashes-1.0.1.tgz",
+ "integrity": "sha512-YP2HBwA00yeD7phvxp4ftiqbfBPfYHPgPfcEcb8oNa1WlUh/58cs9DbSHWKsZG+XLkvEaheC6qUQG02jEKZHPA==",
+ "dev": true,
+ "requires": {
+ "unified-lint-rule": "^1.0.0"
+ }
+ },
+ "remark-lint-no-file-name-irregular-characters": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/remark-lint-no-file-name-irregular-characters/-/remark-lint-no-file-name-irregular-characters-1.0.1.tgz",
+ "integrity": "sha512-+ks/V6OVMGOPZKw+fe2E4DPvLoslGxvdgtqXq2Nyz0cEdYX8RP45kI79V4w95H7UCJAeOFM9mZzVLvmCY1sEbg==",
+ "dev": true,
+ "requires": {
+ "unified-lint-rule": "^1.0.0"
+ }
+ },
+ "remark-lint-no-file-name-mixed-case": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/remark-lint-no-file-name-mixed-case/-/remark-lint-no-file-name-mixed-case-1.0.1.tgz",
+ "integrity": "sha512-bcqPsow1C0LrsKII1YehUO7VPOER7nze6FzsZZ8/NP+d200OL7Y7VMCqN1kscAvG+PTJgjznyXuLEpy7KQnVFg==",
+ "dev": true,
+ "requires": {
+ "unified-lint-rule": "^1.0.0"
+ }
+ },
+ "remark-lint-no-file-name-outer-dashes": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/remark-lint-no-file-name-outer-dashes/-/remark-lint-no-file-name-outer-dashes-1.0.2.tgz",
+ "integrity": "sha512-BVEwLrA4kipalgKrxhncpgtmh6eUmHBH1ggC+X3csYR4X5vXv4vHQqpov4I1vMyWxMLMBnq7lTL3Iqp0CS4vwg==",
+ "dev": true,
+ "requires": {
+ "unified-lint-rule": "^1.0.0"
+ }
+ },
+ "remark-lint-no-heading-punctuation": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/remark-lint-no-heading-punctuation/-/remark-lint-no-heading-punctuation-1.0.1.tgz",
+ "integrity": "sha512-/7kGRmPT+JLxEME1Z/rQn99mP8yr4qXFwcniKYsefR1jl8pCZciwCIp2Tq92Nn+FPELVrpk9sloRBb2JP3UB0A==",
+ "dev": true,
+ "requires": {
+ "mdast-util-to-string": "^1.0.2",
+ "unified-lint-rule": "^1.0.0",
+ "unist-util-generated": "^1.1.0",
+ "unist-util-visit": "^1.1.1"
+ }
+ },
+ "remark-lint-no-inline-padding": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/remark-lint-no-inline-padding/-/remark-lint-no-inline-padding-1.0.1.tgz",
+ "integrity": "sha512-nRl6vA45ZPdMz3/rVMZw7WRRqLFuMrzhdkrbrGLjwBovdIeD/IGCEbDA5NR60g2xT9V5dAmKogvHEH1bIr8SdQ==",
+ "dev": true,
+ "requires": {
+ "mdast-util-to-string": "^1.0.2",
+ "unified-lint-rule": "^1.0.0",
+ "unist-util-generated": "^1.1.0",
+ "unist-util-visit": "^1.1.1"
+ }
+ },
+ "remark-lint-no-literal-urls": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/remark-lint-no-literal-urls/-/remark-lint-no-literal-urls-1.0.1.tgz",
+ "integrity": "sha512-YMsZFVYQDt9gvpc6THL76GzyhCR+cK79vjyEOEmX+O3tOjxQstbi0oW6Lngbl1WbpkCW5TWEzSKOorQowYI2wg==",
+ "dev": true,
+ "requires": {
+ "mdast-util-to-string": "^1.0.2",
+ "unified-lint-rule": "^1.0.0",
+ "unist-util-generated": "^1.1.0",
+ "unist-util-position": "^3.0.0",
+ "unist-util-visit": "^1.1.1"
+ }
+ },
+ "remark-lint-no-multiple-toplevel-headings": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/remark-lint-no-multiple-toplevel-headings/-/remark-lint-no-multiple-toplevel-headings-1.0.1.tgz",
+ "integrity": "sha512-LFfgjF3NKFkt0tGNnJ8Exf8+DrVcMRwek5qu5mvh2KrZnmSpm5flYWzUy2UnnIyicDL3CZYC/r3Fjz6CeBYgZA==",
+ "dev": true,
+ "requires": {
+ "unified-lint-rule": "^1.0.0",
+ "unist-util-generated": "^1.1.0",
+ "unist-util-position": "^3.0.0",
+ "unist-util-visit": "^1.1.1"
+ }
+ },
+ "remark-lint-no-shell-dollars": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/remark-lint-no-shell-dollars/-/remark-lint-no-shell-dollars-1.0.1.tgz",
+ "integrity": "sha512-YryHem73PTxjCkuC4HONJWHsmrLyXmF7r+cCH36Ys3vuWsfAbwkbOwpyuPB4KXn+6fHaTUfz/B5BPp3iwzJwyA==",
+ "dev": true,
+ "requires": {
+ "unified-lint-rule": "^1.0.0",
+ "unist-util-generated": "^1.1.0",
+ "unist-util-visit": "^1.1.1"
+ }
+ },
+ "remark-lint-no-shortcut-reference-image": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/remark-lint-no-shortcut-reference-image/-/remark-lint-no-shortcut-reference-image-1.0.1.tgz",
+ "integrity": "sha512-nUQ+4xB5hKZTCl9gvg7c+W1T3ddsnjgu4zwRza2Bn+21cKmUzx+z9dvlZ4aVuNGmxuWHbKI8/ZkKuB8Eu27vJw==",
+ "dev": true,
+ "requires": {
+ "unified-lint-rule": "^1.0.0",
+ "unist-util-generated": "^1.1.0",
+ "unist-util-visit": "^1.1.1"
+ }
+ },
+ "remark-lint-no-shortcut-reference-link": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/remark-lint-no-shortcut-reference-link/-/remark-lint-no-shortcut-reference-link-1.0.2.tgz",
+ "integrity": "sha512-A6ZexZ6XyQ7fXebrj5WgW5FkSJ81GobjWyMFVmBxgxPd9GH2BkRsZ10aFSkQQvfKSrqbnOL2vrigGMgbiERRxA==",
+ "dev": true,
+ "requires": {
+ "unified-lint-rule": "^1.0.0",
+ "unist-util-generated": "^1.1.0",
+ "unist-util-visit": "^1.1.1"
+ }
+ },
+ "remark-lint-no-table-indentation": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/remark-lint-no-table-indentation/-/remark-lint-no-table-indentation-1.0.1.tgz",
+ "integrity": "sha512-QrtT1GvJmAoNsWh+gmHFajFlM+ubm9rd3Cbz2OYPix8ZM6g907aIfG2NusJFXL9D8/CExQWYhlBvelFBbHgqbQ==",
+ "dev": true,
+ "requires": {
+ "unified-lint-rule": "^1.0.0",
+ "unist-util-generated": "^1.1.0",
+ "unist-util-position": "^3.0.0",
+ "unist-util-visit": "^1.1.1"
+ }
+ },
+ "remark-lint-ordered-list-marker-style": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/remark-lint-ordered-list-marker-style/-/remark-lint-ordered-list-marker-style-1.0.1.tgz",
+ "integrity": "sha512-LJICUZIxqHHi360EP90zbDP+2QQIVVgPGlz0AatuR9ifd7xqAzraQKxsQajAZpuOepZgjBMTOz9L9W0Znx7ujA==",
+ "dev": true,
+ "requires": {
+ "unified-lint-rule": "^1.0.0",
+ "unist-util-generated": "^1.1.0",
+ "unist-util-position": "^3.0.0",
+ "unist-util-visit": "^1.1.1"
+ }
+ },
+ "remark-lint-ordered-list-marker-value": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/remark-lint-ordered-list-marker-value/-/remark-lint-ordered-list-marker-value-1.0.1.tgz",
+ "integrity": "sha512-P6fYui3MvuB21+6AYH8Lbe7SVZ2VQL+FVJUuDCBhe01bgx6SajGmQ/f4Iqt0gCHEAaKw7e2B7tdwd36ifbs1EA==",
+ "dev": true,
+ "requires": {
+ "unified-lint-rule": "^1.0.0",
+ "unist-util-generated": "^1.1.0",
+ "unist-util-position": "^3.0.0",
+ "unist-util-visit": "^1.1.1"
+ }
+ },
+ "remark-lint-rule-style": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/remark-lint-rule-style/-/remark-lint-rule-style-1.0.1.tgz",
+ "integrity": "sha512-dzH+K6DcPIIMBq6LUQgE4dR9TiQGZrQOoULD7m0Y0lIb2EoR2FK5Zd4TgZg/LnvTs6fid37t0xFoaY4/lXV/5Q==",
+ "dev": true,
+ "requires": {
+ "unified-lint-rule": "^1.0.0",
+ "unist-util-generated": "^1.1.0",
+ "unist-util-position": "^3.0.0",
+ "unist-util-visit": "^1.1.1"
+ }
+ },
+ "remark-lint-strong-marker": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/remark-lint-strong-marker/-/remark-lint-strong-marker-1.0.1.tgz",
+ "integrity": "sha512-+bwWKWAqDwqd21Vw+ndqVFh5V27Dp4MKhk9AUlKmcvgJYHuvQ8UfWQdpZcP218ps/4EbwTfyi33TaPyXqOTlXA==",
+ "dev": true,
+ "requires": {
+ "unified-lint-rule": "^1.0.0",
+ "unist-util-generated": "^1.1.0",
+ "unist-util-position": "^3.0.0",
+ "unist-util-visit": "^1.1.1"
+ }
+ },
+ "remark-lint-table-cell-padding": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/remark-lint-table-cell-padding/-/remark-lint-table-cell-padding-1.0.1.tgz",
+ "integrity": "sha512-o3WwC9YysXbQKf0D5nvhhJPcLagqedLwGdifukdgyaKvuIQVbtWbNv1/UOdB3LL+D+2fUrwrCmnQ8J3E1r0lBw==",
+ "dev": true,
+ "requires": {
+ "unified-lint-rule": "^1.0.0",
+ "unist-util-generated": "^1.1.0",
+ "unist-util-position": "^3.0.0",
+ "unist-util-visit": "^1.1.1"
+ }
+ },
+ "remark-lint-table-pipe-alignment": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/remark-lint-table-pipe-alignment/-/remark-lint-table-pipe-alignment-1.0.1.tgz",
+ "integrity": "sha512-lYfK2gWGN45hYfAOZw5gscQ4uDaO9bJLp+H64jvrTQzBV+OCvB9kRQwI0oIrJAa4XMmipAZR+2XhjNSCfQ0fRA==",
+ "dev": true,
+ "requires": {
+ "unified-lint-rule": "^1.0.0",
+ "unist-util-generated": "^1.1.0",
+ "unist-util-position": "^3.0.0",
+ "unist-util-visit": "^1.1.1"
+ }
+ },
+ "remark-lint-table-pipes": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/remark-lint-table-pipes/-/remark-lint-table-pipes-1.0.1.tgz",
+ "integrity": "sha512-VHfDRvcovLBl/cvSjwDoA0xRizdZU33A6F2qFD9A5hu1sDWgGxMLg5m2MOvFlRkUVxSwUv47cuD0/yxB4THYXQ==",
+ "dev": true,
+ "requires": {
+ "unified-lint-rule": "^1.0.0",
+ "unist-util-generated": "^1.1.0",
+ "unist-util-position": "^3.0.0",
+ "unist-util-visit": "^1.1.1"
+ }
+ },
+ "remark-lint-unordered-list-marker-style": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/remark-lint-unordered-list-marker-style/-/remark-lint-unordered-list-marker-style-1.0.1.tgz",
+ "integrity": "sha512-dHYD9cHM9ZJ7BKUZ1nEPGfLAHgUmYxccXtms1GSEM/uyUtR2SU/ao1RwZZ+LvacZFCNZ1yG2yKCJhGI/5U/GrA==",
+ "dev": true,
+ "requires": {
+ "unified-lint-rule": "^1.0.0",
+ "unist-util-generated": "^1.1.0",
+ "unist-util-position": "^3.0.0",
+ "unist-util-visit": "^1.1.1"
+ }
+ },
+ "remark-message-control": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/remark-message-control/-/remark-message-control-4.1.0.tgz",
+ "integrity": "sha512-e1dszks4YKY7hLAkhS2367jBjBpAfvi+kVgSN/tOFrdp3qxITjiNR5fOFnyYF8vvorkQ9uxlKJoZUOW8T7rKDg==",
+ "dev": true,
+ "requires": {
+ "mdast-comment-marker": "^1.0.0",
+ "unified-message-control": "^1.0.0",
+ "xtend": "^4.0.1"
+ }
+ },
+ "remark-parse": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-4.0.0.tgz",
+ "integrity": "sha512-XZgICP2gJ1MHU7+vQaRM+VA9HEL3X253uwUM/BGgx3iv6TH2B3bF3B8q00DKcyP9YrJV+/7WOWEWBFF/u8cIsw==",
+ "dev": true,
+ "requires": {
+ "collapse-white-space": "^1.0.2",
+ "is-alphabetical": "^1.0.0",
+ "is-decimal": "^1.0.0",
+ "is-whitespace-character": "^1.0.0",
+ "is-word-character": "^1.0.0",
+ "markdown-escapes": "^1.0.0",
+ "parse-entities": "^1.0.2",
+ "repeat-string": "^1.5.4",
+ "state-toggle": "^1.0.0",
+ "trim": "0.0.1",
+ "trim-trailing-lines": "^1.0.0",
+ "unherit": "^1.0.4",
+ "unist-util-remove-position": "^1.0.0",
+ "vfile-location": "^2.0.0",
+ "xtend": "^4.0.1"
+ }
+ },
+ "remark-preset-lint-markdown-style-guide": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/remark-preset-lint-markdown-style-guide/-/remark-preset-lint-markdown-style-guide-2.1.1.tgz",
+ "integrity": "sha512-Ao6fB63WuGtz1fa4rjoI+u1EOu21rWVGPmJlUKZlCICPPB6I815nJ52V0sLYjaw2cs+ZiXsXhdVinN7UpVgXcQ==",
+ "dev": true,
+ "requires": {
+ "remark-lint": "^6.0.0",
+ "remark-lint-blockquote-indentation": "^1.0.0",
+ "remark-lint-code-block-style": "^1.0.0",
+ "remark-lint-definition-case": "^1.0.0",
+ "remark-lint-definition-spacing": "^1.0.0",
+ "remark-lint-emphasis-marker": "^1.0.0",
+ "remark-lint-fenced-code-flag": "^1.0.0",
+ "remark-lint-fenced-code-marker": "^1.0.0",
+ "remark-lint-file-extension": "^1.0.0",
+ "remark-lint-final-definition": "^1.0.0",
+ "remark-lint-hard-break-spaces": "^1.0.0",
+ "remark-lint-heading-increment": "^1.0.0",
+ "remark-lint-heading-style": "^1.0.0",
+ "remark-lint-link-title-style": "^1.0.0",
+ "remark-lint-list-item-content-indent": "^1.0.0",
+ "remark-lint-list-item-indent": "^1.0.0",
+ "remark-lint-list-item-spacing": "^1.0.0",
+ "remark-lint-maximum-heading-length": "^1.0.0",
+ "remark-lint-maximum-line-length": "^1.0.0",
+ "remark-lint-no-auto-link-without-protocol": "^1.0.0",
+ "remark-lint-no-blockquote-without-marker": "^2.0.0",
+ "remark-lint-no-consecutive-blank-lines": "^1.0.0",
+ "remark-lint-no-duplicate-headings": "^1.0.0",
+ "remark-lint-no-emphasis-as-heading": "^1.0.0",
+ "remark-lint-no-file-name-articles": "^1.0.0",
+ "remark-lint-no-file-name-consecutive-dashes": "^1.0.0",
+ "remark-lint-no-file-name-irregular-characters": "^1.0.0",
+ "remark-lint-no-file-name-mixed-case": "^1.0.0",
+ "remark-lint-no-file-name-outer-dashes": "^1.0.0",
+ "remark-lint-no-heading-punctuation": "^1.0.0",
+ "remark-lint-no-inline-padding": "^1.0.0",
+ "remark-lint-no-literal-urls": "^1.0.0",
+ "remark-lint-no-multiple-toplevel-headings": "^1.0.0",
+ "remark-lint-no-shell-dollars": "^1.0.0",
+ "remark-lint-no-shortcut-reference-image": "^1.0.0",
+ "remark-lint-no-shortcut-reference-link": "^1.0.0",
+ "remark-lint-no-table-indentation": "^1.0.0",
+ "remark-lint-ordered-list-marker-style": "^1.0.0",
+ "remark-lint-ordered-list-marker-value": "^1.0.0",
+ "remark-lint-rule-style": "^1.0.0",
+ "remark-lint-strong-marker": "^1.0.0",
+ "remark-lint-table-cell-padding": "^1.0.0",
+ "remark-lint-table-pipe-alignment": "^1.0.0",
+ "remark-lint-table-pipes": "^1.0.0",
+ "remark-lint-unordered-list-marker-style": "^1.0.0"
+ }
+ },
+ "remark-stringify": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-4.0.0.tgz",
+ "integrity": "sha512-xLuyKTnuQer3ke9hkU38SUYLiTmS078QOnoFavztmbt/pAJtNSkNtFgR0U//uCcmG0qnyxao+PDuatQav46F1w==",
+ "dev": true,
+ "requires": {
+ "ccount": "^1.0.0",
+ "is-alphanumeric": "^1.0.0",
+ "is-decimal": "^1.0.0",
+ "is-whitespace-character": "^1.0.0",
+ "longest-streak": "^2.0.1",
+ "markdown-escapes": "^1.0.0",
+ "markdown-table": "^1.1.0",
+ "mdast-util-compact": "^1.0.0",
+ "parse-entities": "^1.0.2",
+ "repeat-string": "^1.5.4",
+ "state-toggle": "^1.0.0",
+ "stringify-entities": "^1.0.1",
+ "unherit": "^1.0.4",
+ "xtend": "^4.0.1"
+ }
+ },
+ "remove-trailing-separator": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz",
+ "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=",
+ "dev": true
+ },
+ "repeat-element": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz",
+ "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=",
+ "dev": true
+ },
+ "repeat-string": {
+ "version": "1.6.1",
+ "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
+ "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=",
+ "dev": true
+ },
+ "repeating": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz",
+ "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=",
+ "dev": true,
+ "requires": {
+ "is-finite": "^1.0.0"
+ }
+ },
+ "replace-ext": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz",
+ "integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=",
+ "dev": true
+ },
+ "request": {
+ "version": "2.88.0",
+ "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz",
+ "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==",
+ "dev": true,
+ "requires": {
+ "aws-sign2": "~0.7.0",
+ "aws4": "^1.8.0",
+ "caseless": "~0.12.0",
+ "combined-stream": "~1.0.6",
+ "extend": "~3.0.2",
+ "forever-agent": "~0.6.1",
+ "form-data": "~2.3.2",
+ "har-validator": "~5.1.0",
+ "http-signature": "~1.2.0",
+ "is-typedarray": "~1.0.0",
+ "isstream": "~0.1.2",
+ "json-stringify-safe": "~5.0.1",
+ "mime-types": "~2.1.19",
+ "oauth-sign": "~0.9.0",
+ "performance-now": "^2.1.0",
+ "qs": "~6.5.2",
+ "safe-buffer": "^5.1.2",
+ "tough-cookie": "~2.4.3",
+ "tunnel-agent": "^0.6.0",
+ "uuid": "^3.3.2"
+ },
+ "dependencies": {
+ "extend": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
+ "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==",
+ "dev": true
+ },
+ "mime-db": {
+ "version": "1.36.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.36.0.tgz",
+ "integrity": "sha512-L+xvyD9MkoYMXb1jAmzI/lWYAxAMCPvIBSWur0PZ5nOf5euahRLVqH//FKW9mWp2lkqUgYiXPgkzfMUFi4zVDw==",
+ "dev": true
+ },
+ "mime-types": {
+ "version": "2.1.20",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.20.tgz",
+ "integrity": "sha512-HrkrPaP9vGuWbLK1B1FfgAkbqNjIuy4eHlIYnFi7kamZyLLrGlo2mpcx0bBmNpKqBtYtAfGbodDddIgddSJC2A==",
+ "dev": true,
+ "requires": {
+ "mime-db": "~1.36.0"
+ }
+ },
+ "tough-cookie": {
+ "version": "2.4.3",
+ "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz",
+ "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==",
+ "dev": true,
+ "requires": {
+ "psl": "^1.1.24",
+ "punycode": "^1.4.1"
+ }
+ }
+ }
+ },
+ "require-directory": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
+ "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=",
+ "dev": true
+ },
+ "require-main-filename": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz",
+ "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=",
+ "dev": true
+ },
+ "require-uncached": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz",
+ "integrity": "sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM=",
+ "dev": true,
+ "requires": {
+ "caller-path": "^0.1.0",
+ "resolve-from": "^1.0.0"
+ },
+ "dependencies": {
+ "resolve-from": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz",
+ "integrity": "sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY=",
+ "dev": true
+ }
+ }
+ },
+ "resolve": {
+ "version": "1.7.1",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.7.1.tgz",
+ "integrity": "sha512-c7rwLofp8g1U+h1KNyHL/jicrKg1Ek4q+Lr33AL65uZTinUZHe30D5HlyN5V9NW0JX1D5dXQ4jqW5l7Sy/kGfw==",
+ "dev": true,
+ "requires": {
+ "path-parse": "^1.0.5"
+ }
+ },
+ "resolve-from": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
+ "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
+ "dev": true
+ },
+ "resolve-url": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz",
+ "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=",
+ "dev": true
+ },
+ "restore-cursor": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz",
+ "integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=",
+ "dev": true,
+ "requires": {
+ "exit-hook": "^1.0.0",
+ "onetime": "^1.0.0"
+ }
+ },
+ "ret": {
+ "version": "0.1.15",
+ "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz",
+ "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==",
+ "dev": true
+ },
+ "revalidator": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/revalidator/-/revalidator-0.3.1.tgz",
+ "integrity": "sha1-/yzEz3zHxjhaxxAXgnbm280Ddi8=",
+ "dev": true
+ },
+ "right-align": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz",
+ "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "align-text": "^0.1.1"
+ }
+ },
+ "rimraf": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz",
+ "integrity": "sha1-LtgVDSShbqhlHm1u8PR8QVjOejY=",
+ "dev": true,
+ "requires": {
+ "glob": "^7.0.5"
+ },
+ "dependencies": {
+ "glob": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
+ "integrity": "sha1-wZyd+aAocC1nhhI4SmVSQExjbRU=",
+ "dev": true,
+ "requires": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.0.4",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ }
+ }
+ }
+ },
+ "ripemd160": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz",
+ "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==",
+ "dev": true,
+ "requires": {
+ "hash-base": "^3.0.0",
+ "inherits": "^2.0.1"
+ }
+ },
+ "run-async": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz",
+ "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=",
+ "dev": true,
+ "requires": {
+ "is-promise": "^2.1.0"
+ }
+ },
+ "run-parallel": {
+ "version": "1.1.9",
+ "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.1.9.tgz",
+ "integrity": "sha512-DEqnSRTDw/Tc3FXf49zedI638Z9onwUotBMiUFKmrO2sdFKIbXamXGQ3Axd4qgphxKB4kw/qP1w5kTxnfU1B9Q==",
+ "dev": true
+ },
+ "rxjs": {
+ "version": "6.3.2",
+ "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.3.2.tgz",
+ "integrity": "sha512-hV7criqbR0pe7EeL3O66UYVg92IR0XsA97+9y+BWTePK9SKmEI5Qd3Zj6uPnGkNzXsBywBQWTvujPl+1Kn9Zjw==",
+ "dev": true,
+ "requires": {
+ "tslib": "^1.9.0"
+ }
+ },
+ "safe-buffer": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
+ "dev": true
+ },
+ "safe-regex": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz",
+ "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=",
+ "dev": true,
+ "requires": {
+ "ret": "~0.1.10"
+ }
+ },
+ "safer-buffer": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
+ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
+ "dev": true
+ },
+ "sax": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz",
+ "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==",
+ "dev": true,
+ "optional": true
+ },
+ "semver": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz",
+ "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==",
+ "dev": true
+ },
+ "semver-diff": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-2.1.0.tgz",
+ "integrity": "sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY=",
+ "dev": true,
+ "requires": {
+ "semver": "^5.0.3"
+ }
+ },
+ "send": {
+ "version": "0.16.2",
+ "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz",
+ "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==",
+ "dev": true,
+ "requires": {
+ "debug": "2.6.9",
+ "depd": "~1.1.2",
+ "destroy": "~1.0.4",
+ "encodeurl": "~1.0.2",
+ "escape-html": "~1.0.3",
+ "etag": "~1.8.1",
+ "fresh": "0.5.2",
+ "http-errors": "~1.6.2",
+ "mime": "1.4.1",
+ "ms": "2.0.0",
+ "on-finished": "~2.3.0",
+ "range-parser": "~1.2.0",
+ "statuses": "~1.4.0"
+ },
+ "dependencies": {
+ "depd": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
+ "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=",
+ "dev": true
+ },
+ "mime": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz",
+ "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==",
+ "dev": true
+ },
+ "statuses": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz",
+ "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==",
+ "dev": true
+ }
+ }
+ },
+ "serve": {
+ "version": "6.5.8",
+ "resolved": "https://registry.npmjs.org/serve/-/serve-6.5.8.tgz",
+ "integrity": "sha512-GZYlJz7f6E7Xq6xbg1rTSvQQV9x4v/yYB/sum6egzSBLa/mdk1PViDSX2JvL0Me83sxu3JpEpQELfakDKbGcrw==",
+ "dev": true,
+ "requires": {
+ "args": "4.0.0",
+ "basic-auth": "2.0.0",
+ "bluebird": "3.5.1",
+ "boxen": "1.3.0",
+ "chalk": "2.4.1",
+ "clipboardy": "1.2.3",
+ "dargs": "5.1.0",
+ "detect-port": "1.2.3",
+ "filesize": "3.6.1",
+ "fs-extra": "6.0.1",
+ "handlebars": "4.0.11",
+ "ip": "1.1.5",
+ "micro": "9.3.1",
+ "micro-compress": "1.0.0",
+ "mime-types": "2.1.18",
+ "node-version": "1.1.3",
+ "openssl-self-signed-certificate": "1.1.6",
+ "opn": "5.3.0",
+ "path-is-inside": "1.0.2",
+ "path-type": "3.0.0",
+ "send": "0.16.2",
+ "update-check": "1.5.1"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "dev": true,
+ "requires": {
+ "color-convert": "^1.9.0"
+ }
+ },
+ "chalk": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz",
+ "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ }
+ },
+ "dargs": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/dargs/-/dargs-5.1.0.tgz",
+ "integrity": "sha1-7H6lDHhWTNNsnV7Bj2Yyn63ieCk=",
+ "dev": true
+ },
+ "fs-extra": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-6.0.1.tgz",
+ "integrity": "sha512-GnyIkKhhzXZUWFCaJzvyDLEEgDkPfb4/TPvJCJVuS8MWZgoSsErf++QpiAlDnKFcqhRlm+tIOcencCjyJE6ZCA==",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.2",
+ "jsonfile": "^4.0.0",
+ "universalify": "^0.1.0"
+ }
+ },
+ "has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
+ "dev": true
+ },
+ "jsonfile": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
+ "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.6"
+ }
+ },
+ "path-type": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz",
+ "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==",
+ "dev": true,
+ "requires": {
+ "pify": "^3.0.0"
+ }
+ },
+ "pify": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
+ "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "5.4.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz",
+ "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^3.0.0"
+ }
+ }
+ }
+ },
+ "set-blocking": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
+ "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=",
+ "dev": true
+ },
+ "set-immediate-shim": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz",
+ "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=",
+ "dev": true
+ },
+ "set-value": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz",
+ "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==",
+ "dev": true,
+ "requires": {
+ "extend-shallow": "^2.0.1",
+ "is-extendable": "^0.1.1",
+ "is-plain-object": "^2.0.3",
+ "split-string": "^3.0.1"
+ },
+ "dependencies": {
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ }
+ }
+ },
+ "setprototypeof": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz",
+ "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ=",
+ "dev": true
+ },
+ "sha.js": {
+ "version": "2.4.11",
+ "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz",
+ "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==",
+ "dev": true,
+ "requires": {
+ "inherits": "^2.0.1",
+ "safe-buffer": "^5.0.1"
+ }
+ },
+ "shasum": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/shasum/-/shasum-1.0.2.tgz",
+ "integrity": "sha1-5wEjENj0F/TetXEhUOVni4euVl8=",
+ "dev": true,
+ "requires": {
+ "json-stable-stringify": "~0.0.0",
+ "sha.js": "~2.4.4"
+ }
+ },
+ "shebang-command": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
+ "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
+ "dev": true,
+ "requires": {
+ "shebang-regex": "^1.0.0"
+ }
+ },
+ "shebang-regex": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
+ "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=",
+ "dev": true
+ },
+ "shell-quote": {
+ "version": "1.6.1",
+ "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.6.1.tgz",
+ "integrity": "sha1-9HgZSczkAmlxJ0MOo7PFR29IF2c=",
+ "dev": true,
+ "requires": {
+ "array-filter": "~0.0.0",
+ "array-map": "~0.0.0",
+ "array-reduce": "~0.0.0",
+ "jsonify": "~0.0.0"
+ }
+ },
+ "shellsubstitute": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/shellsubstitute/-/shellsubstitute-1.2.0.tgz",
+ "integrity": "sha1-5PcCpQxRiw9v6YRRiQ1wWvKba3A=",
+ "dev": true
+ },
+ "signal-exit": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz",
+ "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=",
+ "dev": true
+ },
+ "single-line-log": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/single-line-log/-/single-line-log-1.1.2.tgz",
+ "integrity": "sha1-wvg/Jzo+GhbtsJlWYdoO1e8DM2Q=",
+ "dev": true,
+ "requires": {
+ "string-width": "^1.0.1"
+ }
+ },
+ "slash": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz",
+ "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=",
+ "dev": true
+ },
+ "slice-ansi": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-1.0.0.tgz",
+ "integrity": "sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg==",
+ "dev": true,
+ "requires": {
+ "is-fullwidth-code-point": "^2.0.0"
+ },
+ "dependencies": {
+ "is-fullwidth-code-point": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+ "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
+ "dev": true
+ }
+ }
+ },
+ "sliced": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/sliced/-/sliced-1.0.1.tgz",
+ "integrity": "sha1-CzpmK10Ewxd7GSa+qCsD+Dei70E=",
+ "dev": true
+ },
+ "snapdragon": {
+ "version": "0.8.2",
+ "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz",
+ "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==",
+ "dev": true,
+ "requires": {
+ "base": "^0.11.1",
+ "debug": "^2.2.0",
+ "define-property": "^0.2.5",
+ "extend-shallow": "^2.0.1",
+ "map-cache": "^0.2.2",
+ "source-map": "^0.5.6",
+ "source-map-resolve": "^0.5.0",
+ "use": "^3.1.0"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "^0.1.0"
+ }
+ },
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ }
+ }
+ },
+ "snapdragon-node": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz",
+ "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==",
+ "dev": true,
+ "requires": {
+ "define-property": "^1.0.0",
+ "isobject": "^3.0.0",
+ "snapdragon-util": "^3.0.1"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
+ "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "^1.0.0"
+ }
+ },
+ "is-accessor-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
+ "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^6.0.0"
+ }
+ },
+ "is-data-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
+ "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^6.0.0"
+ }
+ },
+ "is-descriptor": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
+ "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+ "dev": true,
+ "requires": {
+ "is-accessor-descriptor": "^1.0.0",
+ "is-data-descriptor": "^1.0.0",
+ "kind-of": "^6.0.2"
+ }
+ },
+ "isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
+ "dev": true
+ },
+ "kind-of": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
+ "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==",
+ "dev": true
+ }
+ }
+ },
+ "snapdragon-util": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz",
+ "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^3.2.0"
+ }
+ },
+ "source-map": {
+ "version": "0.5.7",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
+ "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
+ "dev": true
+ },
+ "source-map-resolve": {
+ "version": "0.5.2",
+ "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz",
+ "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==",
+ "dev": true,
+ "requires": {
+ "atob": "^2.1.1",
+ "decode-uri-component": "^0.2.0",
+ "resolve-url": "^0.2.1",
+ "source-map-url": "^0.4.0",
+ "urix": "^0.1.0"
+ }
+ },
+ "source-map-url": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz",
+ "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=",
+ "dev": true
+ },
+ "spdx-correct": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.0.0.tgz",
+ "integrity": "sha512-N19o9z5cEyc8yQQPukRCZ9EUmb4HUpnrmaL/fxS2pBo2jbfcFRVuFZ/oFC+vZz0MNNk0h80iMn5/S6qGZOL5+g==",
+ "dev": true,
+ "requires": {
+ "spdx-expression-parse": "^3.0.0",
+ "spdx-license-ids": "^3.0.0"
+ }
+ },
+ "spdx-exceptions": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.1.0.tgz",
+ "integrity": "sha512-4K1NsmrlCU1JJgUrtgEeTVyfx8VaYea9J9LvARxhbHtVtohPs/gFGG5yy49beySjlIMhhXZ4QqujIZEfS4l6Cg==",
+ "dev": true
+ },
+ "spdx-expression-parse": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz",
+ "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==",
+ "dev": true,
+ "requires": {
+ "spdx-exceptions": "^2.1.0",
+ "spdx-license-ids": "^3.0.0"
+ }
+ },
+ "spdx-license-ids": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.0.tgz",
+ "integrity": "sha512-2+EPwgbnmOIl8HjGBXXMd9NAu02vLjOO1nWw4kmeRDFyHn+M/ETfHxQUK0oXg8ctgVnl9t3rosNVsZ1jG61nDA==",
+ "dev": true
+ },
+ "speedometer": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/speedometer/-/speedometer-0.1.4.tgz",
+ "integrity": "sha1-mHbb0qFp0xFUAtSObqYynIgWpQ0=",
+ "dev": true
+ },
+ "split": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz",
+ "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==",
+ "dev": true,
+ "requires": {
+ "through": "2"
+ }
+ },
+ "split-string": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz",
+ "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==",
+ "dev": true,
+ "requires": {
+ "extend-shallow": "^3.0.0"
+ }
+ },
+ "split2": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/split2/-/split2-2.2.0.tgz",
+ "integrity": "sha512-RAb22TG39LhI31MbreBgIuKiIKhVsawfTgEGqKHTK87aG+ul/PB8Sqoi3I7kVdRWiCfrKxK3uo4/YUkpNvhPbw==",
+ "dev": true,
+ "requires": {
+ "through2": "^2.0.2"
+ }
+ },
+ "sprintf-js": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
+ "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
+ "dev": true
+ },
+ "sshpk": {
+ "version": "1.14.2",
+ "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.14.2.tgz",
+ "integrity": "sha1-xvxhZIo9nE52T9P8306hBeSSupg=",
+ "dev": true,
+ "requires": {
+ "asn1": "~0.2.3",
+ "assert-plus": "^1.0.0",
+ "bcrypt-pbkdf": "^1.0.0",
+ "dashdash": "^1.12.0",
+ "ecc-jsbn": "~0.1.1",
+ "getpass": "^0.1.1",
+ "jsbn": "~0.1.0",
+ "safer-buffer": "^2.0.2",
+ "tweetnacl": "~0.14.0"
+ }
+ },
+ "standard": {
+ "version": "12.0.1",
+ "resolved": "https://registry.npmjs.org/standard/-/standard-12.0.1.tgz",
+ "integrity": "sha512-UqdHjh87OG2gUrNCSM4QRLF5n9h3TFPwrCNyVlkqu31Hej0L/rc8hzKqVvkb2W3x0WMq7PzZdkLfEcBhVOR6lg==",
+ "dev": true,
+ "requires": {
+ "eslint": "~5.4.0",
+ "eslint-config-standard": "12.0.0",
+ "eslint-config-standard-jsx": "6.0.2",
+ "eslint-plugin-import": "~2.14.0",
+ "eslint-plugin-node": "~7.0.1",
+ "eslint-plugin-promise": "~4.0.0",
+ "eslint-plugin-react": "~7.11.1",
+ "eslint-plugin-standard": "~4.0.0",
+ "standard-engine": "~9.0.0"
+ },
+ "dependencies": {
+ "ajv": {
+ "version": "6.5.3",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.3.tgz",
+ "integrity": "sha512-LqZ9wY+fx3UMiiPd741yB2pj3hhil+hQc8taf4o2QGRFpWgZ2V5C8HA165DY9sS3fJwsk7uT7ZlFEyC3Ig3lLg==",
+ "dev": true,
+ "requires": {
+ "fast-deep-equal": "^2.0.1",
+ "fast-json-stable-stringify": "^2.0.0",
+ "json-schema-traverse": "^0.4.1",
+ "uri-js": "^4.2.2"
+ }
+ },
+ "ansi-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
+ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
+ "dev": true
+ },
+ "ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "dev": true,
+ "requires": {
+ "color-convert": "^1.9.0"
+ }
+ },
+ "chalk": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz",
+ "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ }
+ },
+ "chardet": {
+ "version": "0.4.2",
+ "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.4.2.tgz",
+ "integrity": "sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I=",
+ "dev": true
+ },
+ "cli-cursor": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz",
+ "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=",
+ "dev": true,
+ "requires": {
+ "restore-cursor": "^2.0.0"
+ }
+ },
+ "cross-spawn": {
+ "version": "6.0.5",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
+ "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
+ "dev": true,
+ "requires": {
+ "nice-try": "^1.0.4",
+ "path-key": "^2.0.1",
+ "semver": "^5.5.0",
+ "shebang-command": "^1.2.0",
+ "which": "^1.2.9"
+ }
+ },
+ "debug": {
+ "version": "3.2.5",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.5.tgz",
+ "integrity": "sha512-D61LaDQPQkxJ5AUM2mbSJRbPkNs/TmdmOeLAi1hgDkpDfIfetSrjmWhccwtuResSwMbACjx/xXQofvM9CE/aeg==",
+ "dev": true,
+ "requires": {
+ "ms": "^2.1.1"
+ }
+ },
+ "eslint": {
+ "version": "5.4.0",
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-5.4.0.tgz",
+ "integrity": "sha512-UIpL91XGex3qtL6qwyCQJar2j3osKxK9e3ano3OcGEIRM4oWIpCkDg9x95AXEC2wMs7PnxzOkPZ2gq+tsMS9yg==",
+ "dev": true,
+ "requires": {
+ "ajv": "^6.5.0",
+ "babel-code-frame": "^6.26.0",
+ "chalk": "^2.1.0",
+ "cross-spawn": "^6.0.5",
+ "debug": "^3.1.0",
+ "doctrine": "^2.1.0",
+ "eslint-scope": "^4.0.0",
+ "eslint-utils": "^1.3.1",
+ "eslint-visitor-keys": "^1.0.0",
+ "espree": "^4.0.0",
+ "esquery": "^1.0.1",
+ "esutils": "^2.0.2",
+ "file-entry-cache": "^2.0.0",
+ "functional-red-black-tree": "^1.0.1",
+ "glob": "^7.1.2",
+ "globals": "^11.7.0",
+ "ignore": "^4.0.2",
+ "imurmurhash": "^0.1.4",
+ "inquirer": "^5.2.0",
+ "is-resolvable": "^1.1.0",
+ "js-yaml": "^3.11.0",
+ "json-stable-stringify-without-jsonify": "^1.0.1",
+ "levn": "^0.3.0",
+ "lodash": "^4.17.5",
+ "minimatch": "^3.0.4",
+ "mkdirp": "^0.5.1",
+ "natural-compare": "^1.4.0",
+ "optionator": "^0.8.2",
+ "path-is-inside": "^1.0.2",
+ "pluralize": "^7.0.0",
+ "progress": "^2.0.0",
+ "regexpp": "^2.0.0",
+ "require-uncached": "^1.0.3",
+ "semver": "^5.5.0",
+ "strip-ansi": "^4.0.0",
+ "strip-json-comments": "^2.0.1",
+ "table": "^4.0.3",
+ "text-table": "^0.2.0"
+ }
+ },
+ "external-editor": {
+ "version": "2.2.0",
+ "resolved": "http://registry.npmjs.org/external-editor/-/external-editor-2.2.0.tgz",
+ "integrity": "sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A==",
+ "dev": true,
+ "requires": {
+ "chardet": "^0.4.0",
+ "iconv-lite": "^0.4.17",
+ "tmp": "^0.0.33"
+ }
+ },
+ "fast-deep-equal": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz",
+ "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=",
+ "dev": true
+ },
+ "glob": {
+ "version": "7.1.3",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz",
+ "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==",
+ "dev": true,
+ "requires": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.0.4",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ }
+ },
+ "has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
+ "dev": true
+ },
+ "ignore": {
+ "version": "4.0.6",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz",
+ "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==",
+ "dev": true
+ },
+ "inquirer": {
+ "version": "5.2.0",
+ "resolved": "http://registry.npmjs.org/inquirer/-/inquirer-5.2.0.tgz",
+ "integrity": "sha512-E9BmnJbAKLPGonz0HeWHtbKf+EeSP93paWO3ZYoUpq/aowXvYGjjCSuashhXPpzbArIjBbji39THkxTz9ZeEUQ==",
+ "dev": true,
+ "requires": {
+ "ansi-escapes": "^3.0.0",
+ "chalk": "^2.0.0",
+ "cli-cursor": "^2.1.0",
+ "cli-width": "^2.0.0",
+ "external-editor": "^2.1.0",
+ "figures": "^2.0.0",
+ "lodash": "^4.3.0",
+ "mute-stream": "0.0.7",
+ "run-async": "^2.2.0",
+ "rxjs": "^5.5.2",
+ "string-width": "^2.1.0",
+ "strip-ansi": "^4.0.0",
+ "through": "^2.3.6"
+ }
+ },
+ "is-fullwidth-code-point": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+ "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
+ "dev": true
+ },
+ "json-schema-traverse": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
+ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
+ "dev": true
+ },
+ "ms": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
+ "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==",
+ "dev": true
+ },
+ "onetime": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz",
+ "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=",
+ "dev": true,
+ "requires": {
+ "mimic-fn": "^1.0.0"
+ }
+ },
+ "restore-cursor": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz",
+ "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=",
+ "dev": true,
+ "requires": {
+ "onetime": "^2.0.0",
+ "signal-exit": "^3.0.2"
+ }
+ },
+ "rxjs": {
+ "version": "5.5.12",
+ "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-5.5.12.tgz",
+ "integrity": "sha512-xx2itnL5sBbqeeiVgNPVuQQ1nC8Jp2WfNJhXWHmElW9YmrpS9UVnNzhP3EH3HFqexO5Tlp8GhYY+WEcqcVMvGw==",
+ "dev": true,
+ "requires": {
+ "symbol-observable": "1.0.1"
+ }
+ },
+ "string-width": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
+ "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
+ "dev": true,
+ "requires": {
+ "is-fullwidth-code-point": "^2.0.0",
+ "strip-ansi": "^4.0.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
+ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^3.0.0"
+ }
+ },
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^3.0.0"
+ }
+ },
+ "tmp": {
+ "version": "0.0.33",
+ "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz",
+ "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==",
+ "dev": true,
+ "requires": {
+ "os-tmpdir": "~1.0.2"
+ }
+ }
+ }
+ },
+ "standard-engine": {
+ "version": "9.0.0",
+ "resolved": "https://registry.npmjs.org/standard-engine/-/standard-engine-9.0.0.tgz",
+ "integrity": "sha512-ZfNfCWZ2Xq67VNvKMPiVMKHnMdvxYzvZkf1AH8/cw2NLDBm5LRsxMqvEJpsjLI/dUosZ3Z1d6JlHDp5rAvvk2w==",
+ "dev": true,
+ "requires": {
+ "deglob": "^2.1.0",
+ "get-stdin": "^6.0.0",
+ "minimist": "^1.1.0",
+ "pkg-conf": "^2.0.0"
+ },
+ "dependencies": {
+ "get-stdin": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-6.0.0.tgz",
+ "integrity": "sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==",
+ "dev": true
+ }
+ }
+ },
+ "standard-markdown": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/standard-markdown/-/standard-markdown-5.0.0.tgz",
+ "integrity": "sha512-jgGyyMmZqOIYYAHs/ksEkGUa+bngJce2P4FygFIrb1WMkKmQL/RPgsI2njl02r6kiDzHPProOG9y4ABe20joCA==",
+ "dev": true,
+ "requires": {
+ "async": "^2.6.1",
+ "commander": "^2.18.0",
+ "globby": "^8.0.1",
+ "lodash.flatten": "^4.4.0",
+ "lodash.range": "^3.2.0",
+ "ora": "^3.0.0",
+ "standard": "^12.0.1"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
+ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
+ "dev": true
+ },
+ "ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "dev": true,
+ "requires": {
+ "color-convert": "^1.9.0"
+ }
+ },
+ "async": {
+ "version": "2.6.1",
+ "resolved": "https://registry.npmjs.org/async/-/async-2.6.1.tgz",
+ "integrity": "sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ==",
+ "dev": true,
+ "requires": {
+ "lodash": "^4.17.10"
+ }
+ },
+ "chalk": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz",
+ "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ }
+ },
+ "cli-cursor": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz",
+ "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=",
+ "dev": true,
+ "requires": {
+ "restore-cursor": "^2.0.0"
+ }
+ },
+ "cli-spinners": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-1.3.1.tgz",
+ "integrity": "sha512-1QL4544moEsDVH9T/l6Cemov/37iv1RtoKf7NJ04A60+4MREXNfx/QvavbH6QoGdsD4N4Mwy49cmaINR/o2mdg==",
+ "dev": true
+ },
+ "commander": {
+ "version": "2.18.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-2.18.0.tgz",
+ "integrity": "sha512-6CYPa+JP2ftfRU2qkDK+UTVeQYosOg/2GbcjIcKPHfinyOLPVGXu/ovN86RP49Re5ndJK1N0kuiidFFuepc4ZQ==",
+ "dev": true
+ },
+ "glob": {
+ "version": "7.1.3",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz",
+ "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==",
+ "dev": true,
+ "requires": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.0.4",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ }
+ },
+ "globby": {
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/globby/-/globby-8.0.1.tgz",
+ "integrity": "sha512-oMrYrJERnKBLXNLVTqhm3vPEdJ/b2ZE28xN4YARiix1NOIOBPEpOUnm844K1iu/BkphCaf2WNFwMszv8Soi1pw==",
+ "dev": true,
+ "requires": {
+ "array-union": "^1.0.1",
+ "dir-glob": "^2.0.0",
+ "fast-glob": "^2.0.2",
+ "glob": "^7.1.2",
+ "ignore": "^3.3.5",
+ "pify": "^3.0.0",
+ "slash": "^1.0.0"
+ }
+ },
+ "has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
+ "dev": true
+ },
+ "log-symbols": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz",
+ "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==",
+ "dev": true,
+ "requires": {
+ "chalk": "^2.0.1"
+ }
+ },
+ "onetime": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz",
+ "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=",
+ "dev": true,
+ "requires": {
+ "mimic-fn": "^1.0.0"
+ }
+ },
+ "ora": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/ora/-/ora-3.0.0.tgz",
+ "integrity": "sha512-LBS97LFe2RV6GJmXBi6OKcETKyklHNMV0xw7BtsVn2MlsgsydyZetSCbCANr+PFLmDyv4KV88nn0eCKza665Mg==",
+ "dev": true,
+ "requires": {
+ "chalk": "^2.3.1",
+ "cli-cursor": "^2.1.0",
+ "cli-spinners": "^1.1.0",
+ "log-symbols": "^2.2.0",
+ "strip-ansi": "^4.0.0",
+ "wcwidth": "^1.0.1"
+ }
+ },
+ "pify": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
+ "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
+ "dev": true
+ },
+ "restore-cursor": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz",
+ "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=",
+ "dev": true,
+ "requires": {
+ "onetime": "^2.0.0",
+ "signal-exit": "^3.0.2"
+ }
+ },
+ "strip-ansi": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
+ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^3.0.0"
+ }
+ },
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^3.0.0"
+ }
+ }
+ }
+ },
+ "state-toggle": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/state-toggle/-/state-toggle-1.0.1.tgz",
+ "integrity": "sha512-Qe8QntFrrpWTnHwvwj2FZTgv+PKIsp0B9VxLzLLbSpPXWOgRgc5LVj/aTiSfK1RqIeF9jeC1UeOH8Q8y60A7og==",
+ "dev": true
+ },
+ "static-extend": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz",
+ "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=",
+ "dev": true,
+ "requires": {
+ "define-property": "^0.2.5",
+ "object-copy": "^0.1.0"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "^0.1.0"
+ }
+ }
+ }
+ },
+ "statuses": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
+ "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=",
+ "dev": true
+ },
+ "stream-browserify": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.1.tgz",
+ "integrity": "sha1-ZiZu5fm9uZQKTkUUyvtDu3Hlyds=",
+ "dev": true,
+ "requires": {
+ "inherits": "~2.0.1",
+ "readable-stream": "^2.0.2"
+ },
+ "dependencies": {
+ "isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
+ "dev": true
+ },
+ "readable-stream": {
+ "version": "2.3.6",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
+ "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
+ "dev": true,
+ "requires": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
+ }
+ },
+ "string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "dev": true,
+ "requires": {
+ "safe-buffer": "~5.1.0"
+ }
+ }
+ }
+ },
+ "stream-combiner2": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/stream-combiner2/-/stream-combiner2-1.1.1.tgz",
+ "integrity": "sha1-+02KFCDqNidk4hrUeAOXvry0HL4=",
+ "dev": true,
+ "requires": {
+ "duplexer2": "~0.1.0",
+ "readable-stream": "^2.0.2"
+ },
+ "dependencies": {
+ "isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
+ "dev": true
+ },
+ "readable-stream": {
+ "version": "2.3.6",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
+ "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
+ "dev": true,
+ "requires": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
+ }
+ },
+ "string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "dev": true,
+ "requires": {
+ "safe-buffer": "~5.1.0"
+ }
+ }
+ }
+ },
+ "stream-consume": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/stream-consume/-/stream-consume-0.1.1.tgz",
+ "integrity": "sha512-tNa3hzgkjEP7XbCkbRXe1jpg+ievoa0O4SCFlMOYEscGSS4JJsckGL8swUyAa/ApGU3Ae4t6Honor4HhL+tRyg==",
+ "dev": true
+ },
+ "stream-http": {
+ "version": "2.8.2",
+ "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.2.tgz",
+ "integrity": "sha512-QllfrBhqF1DPcz46WxKTs6Mz1Bpc+8Qm6vbqOpVav5odAXwbyzwnEczoWqtxrsmlO+cJqtPrp/8gWKWjaKLLlA==",
+ "dev": true,
+ "requires": {
+ "builtin-status-codes": "^3.0.0",
+ "inherits": "^2.0.1",
+ "readable-stream": "^2.3.6",
+ "to-arraybuffer": "^1.0.0",
+ "xtend": "^4.0.0"
+ },
+ "dependencies": {
+ "isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
+ "dev": true
+ },
+ "readable-stream": {
+ "version": "2.3.6",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
+ "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
+ "dev": true,
+ "requires": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
+ }
+ },
+ "string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "dev": true,
+ "requires": {
+ "safe-buffer": "~5.1.0"
+ }
+ }
+ }
+ },
+ "stream-shift": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz",
+ "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=",
+ "dev": true
+ },
+ "stream-splicer": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/stream-splicer/-/stream-splicer-2.0.0.tgz",
+ "integrity": "sha1-G2O+Q4oTPktnHMGTUZdgAXWRDYM=",
+ "dev": true,
+ "requires": {
+ "inherits": "^2.0.1",
+ "readable-stream": "^2.0.2"
+ },
+ "dependencies": {
+ "isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
+ "dev": true
+ },
+ "readable-stream": {
+ "version": "2.3.6",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
+ "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
+ "dev": true,
+ "requires": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
+ }
+ },
+ "string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "dev": true,
+ "requires": {
+ "safe-buffer": "~5.1.0"
+ }
+ }
+ }
+ },
+ "string": {
+ "version": "3.3.3",
+ "resolved": "https://registry.npmjs.org/string/-/string-3.3.3.tgz",
+ "integrity": "sha1-XqIRzZLSKOGEKUmQpsyXs2anfLA=",
+ "dev": true
+ },
+ "string-width": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
+ "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
+ "dev": true,
+ "requires": {
+ "code-point-at": "^1.0.0",
+ "is-fullwidth-code-point": "^1.0.0",
+ "strip-ansi": "^3.0.0"
+ }
+ },
+ "string_decoder": {
+ "version": "0.10.31",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
+ "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=",
+ "dev": true
+ },
+ "stringify-entities": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-1.3.2.tgz",
+ "integrity": "sha512-nrBAQClJAPN2p+uGCVJRPIPakKeKWZ9GtBCmormE7pWOSlHat7+x5A8gx85M7HM5Dt0BP3pP5RhVW77WdbJJ3A==",
+ "dev": true,
+ "requires": {
+ "character-entities-html4": "^1.0.0",
+ "character-entities-legacy": "^1.0.0",
+ "is-alphanumerical": "^1.0.0",
+ "is-hexadecimal": "^1.0.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
+ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^2.0.0"
+ }
+ },
+ "strip-bom": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz",
+ "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=",
+ "dev": true,
+ "requires": {
+ "is-utf8": "^0.2.0"
+ }
+ },
+ "strip-eof": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz",
+ "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=",
+ "dev": true
+ },
+ "strip-indent": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-2.0.0.tgz",
+ "integrity": "sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g=",
+ "dev": true
+ },
+ "strip-json-comments": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
+ "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=",
+ "dev": true
+ },
+ "subarg": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/subarg/-/subarg-1.0.0.tgz",
+ "integrity": "sha1-9izxdYHplrSPyWVpn1TAauJouNI=",
+ "dev": true,
+ "requires": {
+ "minimist": "^1.1.0"
+ }
+ },
+ "sumchecker": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/sumchecker/-/sumchecker-2.0.2.tgz",
+ "integrity": "sha1-D0LBDl0F2l1C7qPlbDOZo31sWz4=",
+ "dev": true,
+ "requires": {
+ "debug": "^2.2.0"
+ }
+ },
+ "supports-color": {
+ "version": "3.2.3",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz",
+ "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=",
+ "dev": true,
+ "requires": {
+ "has-flag": "^1.0.0"
+ }
+ },
+ "symbol-observable": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.0.1.tgz",
+ "integrity": "sha1-g0D8RwLDEi310iKI+IKD9RPT/dQ=",
+ "dev": true
+ },
+ "symbol-tree": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.2.tgz",
+ "integrity": "sha1-rifbOPZgp64uHDt9G8KQgZuFGeY=",
+ "dev": true,
+ "optional": true
+ },
+ "syntax-error": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/syntax-error/-/syntax-error-1.4.0.tgz",
+ "integrity": "sha512-YPPlu67mdnHGTup2A8ff7BC2Pjq0e0Yp/IyTFN03zWO0RcK07uLcbi7C2KpGR2FvWbaB0+bfE27a+sBKebSo7w==",
+ "dev": true,
+ "requires": {
+ "acorn-node": "^1.2.0"
+ }
+ },
+ "table": {
+ "version": "4.0.3",
+ "resolved": "http://registry.npmjs.org/table/-/table-4.0.3.tgz",
+ "integrity": "sha512-S7rnFITmBH1EnyKcvxBh1LjYeQMmnZtCXSEbHcH6S0NoKit24ZuFO/T1vDcLdYsLQkM188PVVhQmzKIuThNkKg==",
+ "dev": true,
+ "requires": {
+ "ajv": "^6.0.1",
+ "ajv-keywords": "^3.0.0",
+ "chalk": "^2.1.0",
+ "lodash": "^4.17.4",
+ "slice-ansi": "1.0.0",
+ "string-width": "^2.1.1"
+ },
+ "dependencies": {
+ "ajv": {
+ "version": "6.5.3",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.3.tgz",
+ "integrity": "sha512-LqZ9wY+fx3UMiiPd741yB2pj3hhil+hQc8taf4o2QGRFpWgZ2V5C8HA165DY9sS3fJwsk7uT7ZlFEyC3Ig3lLg==",
+ "dev": true,
+ "requires": {
+ "fast-deep-equal": "^2.0.1",
+ "fast-json-stable-stringify": "^2.0.0",
+ "json-schema-traverse": "^0.4.1",
+ "uri-js": "^4.2.2"
+ }
+ },
+ "ansi-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
+ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
+ "dev": true
+ },
+ "ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "dev": true,
+ "requires": {
+ "color-convert": "^1.9.0"
+ }
+ },
+ "chalk": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz",
+ "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ }
+ },
+ "fast-deep-equal": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz",
+ "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=",
+ "dev": true
+ },
+ "has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
+ "dev": true
+ },
+ "is-fullwidth-code-point": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+ "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
+ "dev": true
+ },
+ "json-schema-traverse": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
+ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
+ "dev": true
+ },
+ "string-width": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
+ "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
+ "dev": true,
+ "requires": {
+ "is-fullwidth-code-point": "^2.0.0",
+ "strip-ansi": "^4.0.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
+ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^3.0.0"
+ }
+ },
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^3.0.0"
+ }
+ }
+ }
+ },
+ "tar": {
+ "version": "4.4.2",
+ "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.2.tgz",
+ "integrity": "sha512-BfkE9CciGGgDsATqkikUHrQrraBCO+ke/1f6SFAEMnxyyfN9lxC+nW1NFWMpqH865DhHIy9vQi682gk1X7friw==",
+ "dev": true,
+ "requires": {
+ "chownr": "^1.0.1",
+ "fs-minipass": "^1.2.5",
+ "minipass": "^2.2.4",
+ "minizlib": "^1.1.0",
+ "mkdirp": "^0.5.0",
+ "safe-buffer": "^5.1.2",
+ "yallist": "^3.0.2"
+ }
+ },
+ "tar-fs": {
+ "version": "1.16.3",
+ "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-1.16.3.tgz",
+ "integrity": "sha512-NvCeXpYx7OsmOh8zIOP/ebG55zZmxLE0etfWRbWok+q2Qo8x/vOR/IJT1taADXPe+jsiu9axDb3X4B+iIgNlKw==",
+ "dev": true,
+ "requires": {
+ "chownr": "^1.0.1",
+ "mkdirp": "^0.5.1",
+ "pump": "^1.0.0",
+ "tar-stream": "^1.1.2"
+ },
+ "dependencies": {
+ "pump": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/pump/-/pump-1.0.3.tgz",
+ "integrity": "sha512-8k0JupWme55+9tCVE+FS5ULT3K6AbgqrGa58lTT49RpyfwwcGedHqaC5LlQNdEAumn/wFsu6aPwkuPMioy8kqw==",
+ "dev": true,
+ "requires": {
+ "end-of-stream": "^1.1.0",
+ "once": "^1.3.1"
+ }
+ }
+ }
+ },
+ "tar-stream": {
+ "version": "1.6.1",
+ "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.6.1.tgz",
+ "integrity": "sha512-IFLM5wp3QrJODQFPm6/to3LJZrONdBY/otxcvDIQzu217zKye6yVR3hhi9lAjrC2Z+m/j5oDxMPb1qcd8cIvpA==",
+ "dev": true,
+ "requires": {
+ "bl": "^1.0.0",
+ "buffer-alloc": "^1.1.0",
+ "end-of-stream": "^1.0.0",
+ "fs-constants": "^1.0.0",
+ "readable-stream": "^2.3.0",
+ "to-buffer": "^1.1.0",
+ "xtend": "^4.0.0"
+ },
+ "dependencies": {
+ "isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
+ "dev": true
+ },
+ "readable-stream": {
+ "version": "2.3.6",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
+ "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
+ "dev": true,
+ "requires": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
+ }
+ },
+ "string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "dev": true,
+ "requires": {
+ "safe-buffer": "~5.1.0"
+ }
+ }
+ }
+ },
+ "temp": {
+ "version": "0.8.3",
+ "resolved": "https://registry.npmjs.org/temp/-/temp-0.8.3.tgz",
+ "integrity": "sha1-4Ma8TSa5AxJEEOT+2BEDAU38H1k=",
+ "dev": true,
+ "requires": {
+ "os-tmpdir": "^1.0.0",
+ "rimraf": "~2.2.6"
+ },
+ "dependencies": {
+ "rimraf": {
+ "version": "2.2.8",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz",
+ "integrity": "sha1-5Dm+Kq7jJzIZUnMPmaiSnk/FBYI=",
+ "dev": true
+ }
+ }
+ },
+ "tempfile": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/tempfile/-/tempfile-1.1.1.tgz",
+ "integrity": "sha1-W8xOrsxKsscH2LwR2ZzMmiyyh/I=",
+ "dev": true,
+ "requires": {
+ "os-tmpdir": "^1.0.0",
+ "uuid": "^2.0.1"
+ },
+ "dependencies": {
+ "uuid": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-2.0.3.tgz",
+ "integrity": "sha1-Z+LoY3lyFVMN/zGOW/nc6/1Hsho=",
+ "dev": true
+ }
+ }
+ },
+ "term-size": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/term-size/-/term-size-1.2.0.tgz",
+ "integrity": "sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk=",
+ "dev": true,
+ "requires": {
+ "execa": "^0.7.0"
+ }
+ },
+ "text-extensions": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/text-extensions/-/text-extensions-1.8.0.tgz",
+ "integrity": "sha512-mVzjRxuWnDKs/qH1rbOJEVHLlSX9kty9lpi7lMvLgU9S74mQ8/Ozg9UPcKxShh0qG2NZ+NyPOPpcZU4C1Eld9A==",
+ "dev": true
+ },
+ "text-table": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
+ "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=",
+ "dev": true
+ },
+ "throttleit": {
+ "version": "0.0.2",
+ "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-0.0.2.tgz",
+ "integrity": "sha1-z+34jmDADdlpe2H90qg0OptoDq8=",
+ "dev": true
+ },
+ "through": {
+ "version": "2.3.8",
+ "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
+ "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=",
+ "dev": true
+ },
+ "through2": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz",
+ "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=",
+ "dev": true,
+ "requires": {
+ "readable-stream": "^2.1.5",
+ "xtend": "~4.0.1"
+ },
+ "dependencies": {
+ "isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
+ "dev": true
+ },
+ "readable-stream": {
+ "version": "2.3.6",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
+ "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
+ "dev": true,
+ "requires": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
+ }
+ },
+ "string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "dev": true,
+ "requires": {
+ "safe-buffer": "~5.1.0"
+ }
+ }
+ }
+ },
+ "timed-out": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz",
+ "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=",
+ "dev": true
+ },
+ "timers-browserify": {
+ "version": "1.4.2",
+ "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-1.4.2.tgz",
+ "integrity": "sha1-ycWLV1voQHN1y14kYtrO50NZ9B0=",
+ "dev": true,
+ "requires": {
+ "process": "~0.11.0"
+ }
+ },
+ "tmp": {
+ "version": "0.0.28",
+ "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.28.tgz",
+ "integrity": "sha1-Fyc1t/YU6nrzlmT6hM8N5OUV0SA=",
+ "dev": true,
+ "requires": {
+ "os-tmpdir": "~1.0.1"
+ }
+ },
+ "to-arraybuffer": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz",
+ "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=",
+ "dev": true
+ },
+ "to-buffer": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.1.1.tgz",
+ "integrity": "sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg==",
+ "dev": true
+ },
+ "to-object-path": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz",
+ "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=",
+ "dev": true,
+ "requires": {
+ "kind-of": "^3.0.2"
+ }
+ },
+ "to-regex": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz",
+ "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==",
+ "dev": true,
+ "requires": {
+ "define-property": "^2.0.2",
+ "extend-shallow": "^3.0.2",
+ "regex-not": "^1.0.2",
+ "safe-regex": "^1.1.0"
+ }
+ },
+ "to-regex-range": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz",
+ "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=",
+ "dev": true,
+ "requires": {
+ "is-number": "^3.0.0",
+ "repeat-string": "^1.6.1"
+ },
+ "dependencies": {
+ "is-number": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
+ "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
+ "dev": true,
+ "requires": {
+ "kind-of": "^3.0.2"
+ }
+ }
+ }
+ },
+ "to-vfile": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/to-vfile/-/to-vfile-2.2.0.tgz",
+ "integrity": "sha512-saGC8/lWdGrEoBMLUtgzhRHWAkQMP8gdldA3MOAUhBwTGEb1RSMVcflHGSx4ZJsdEZ9o1qDBCPp47LCPrbZWow==",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.4",
+ "vfile": "^2.0.0",
+ "x-is-function": "^1.0.4"
+ }
+ },
+ "touch": {
+ "version": "0.0.3",
+ "resolved": "https://registry.npmjs.org/touch/-/touch-0.0.3.tgz",
+ "integrity": "sha1-Ua7z1ElXHU8oel2Hyci0kYGg2x0=",
+ "dev": true,
+ "requires": {
+ "nopt": "~1.0.10"
+ },
+ "dependencies": {
+ "nopt": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz",
+ "integrity": "sha1-bd0hvSoxQXuScn3Vhfim83YI6+4=",
+ "dev": true,
+ "requires": {
+ "abbrev": "1"
+ }
+ }
+ }
+ },
+ "tough-cookie": {
+ "version": "2.4.3",
+ "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz",
+ "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "psl": "^1.1.24",
+ "punycode": "^1.4.1"
+ }
+ },
+ "tr46": {
+ "version": "0.0.3",
+ "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
+ "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=",
+ "dev": true,
+ "optional": true
+ },
+ "traverse": {
+ "version": "0.3.9",
+ "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz",
+ "integrity": "sha1-cXuPIgzAu3tE5AUUwisui7xw2Lk=",
+ "dev": true
+ },
+ "trim": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/trim/-/trim-0.0.1.tgz",
+ "integrity": "sha1-WFhUf2spB1fulczMZm+1AITEYN0=",
+ "dev": true
+ },
+ "trim-newlines": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-2.0.0.tgz",
+ "integrity": "sha1-tAPQuRvlDDMd/EuC7s6yLD3hbSA=",
+ "dev": true
+ },
+ "trim-off-newlines": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/trim-off-newlines/-/trim-off-newlines-1.0.1.tgz",
+ "integrity": "sha1-n5up2e+odkw4dpi8v+sshI8RrbM=",
+ "dev": true
+ },
+ "trim-trailing-lines": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/trim-trailing-lines/-/trim-trailing-lines-1.1.1.tgz",
+ "integrity": "sha512-bWLv9BbWbbd7mlqqs2oQYnLD/U/ZqeJeJwbO0FG2zA1aTq+HTvxfHNKFa/HGCVyJpDiioUYaBhfiT6rgk+l4mg==",
+ "dev": true
+ },
+ "trough": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/trough/-/trough-1.0.2.tgz",
+ "integrity": "sha512-FHkoUZvG6Egrv9XZAyYGKEyb1JMsFphgPjoczkZC2y6W93U1jswcVURB8MUvtsahEPEVACyxD47JAL63vF4JsQ==",
+ "dev": true
+ },
+ "tslib": {
+ "version": "1.9.3",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz",
+ "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==",
+ "dev": true
+ },
+ "tslint": {
+ "version": "4.5.1",
+ "resolved": "https://registry.npmjs.org/tslint/-/tslint-4.5.1.tgz",
+ "integrity": "sha1-BTVocb7yOkNJBnNABvwYgza6gks=",
+ "dev": true,
+ "requires": {
+ "babel-code-frame": "^6.20.0",
+ "colors": "^1.1.2",
+ "diff": "^3.0.1",
+ "findup-sync": "~0.3.0",
+ "glob": "^7.1.1",
+ "optimist": "~0.6.0",
+ "resolve": "^1.1.7",
+ "tsutils": "^1.1.0",
+ "update-notifier": "^2.0.0"
+ },
+ "dependencies": {
+ "glob": {
+ "version": "7.1.3",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz",
+ "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==",
+ "dev": true,
+ "requires": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.0.4",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ }
+ },
+ "minimist": {
+ "version": "0.0.10",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz",
+ "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=",
+ "dev": true
+ },
+ "optimist": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz",
+ "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=",
+ "dev": true,
+ "requires": {
+ "minimist": "~0.0.1",
+ "wordwrap": "~0.0.2"
+ }
+ }
+ }
+ },
+ "tsutils": {
+ "version": "1.9.1",
+ "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-1.9.1.tgz",
+ "integrity": "sha1-ufmrROVa+WgYMdXyjQrur1x1DLA=",
+ "dev": true
+ },
+ "tty-browserify": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.1.tgz",
+ "integrity": "sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw==",
+ "dev": true
+ },
+ "tunnel-agent": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
+ "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
+ "dev": true,
+ "requires": {
+ "safe-buffer": "^5.0.1"
+ }
+ },
+ "tweetnacl": {
+ "version": "0.14.5",
+ "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
+ "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=",
+ "dev": true,
+ "optional": true
+ },
+ "type-check": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz",
+ "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=",
+ "dev": true,
+ "requires": {
+ "prelude-ls": "~1.1.2"
+ }
+ },
+ "typedarray": {
+ "version": "0.0.6",
+ "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
+ "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=",
+ "dev": true
+ },
+ "typescript": {
+ "version": "2.9.2",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.9.2.tgz",
+ "integrity": "sha512-Gr4p6nFNaoufRIY4NMdpQRNmgxVIGMs4Fcu/ujdYk3nAZqk7supzBE9idmvfZIlH/Cuj//dvi+019qEue9lV0w==",
+ "dev": true
+ },
+ "uc.micro": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.5.tgz",
+ "integrity": "sha512-JoLI4g5zv5qNyT09f4YAvEZIIV1oOjqnewYg5D38dkQljIzpPT296dbIGvKro3digYI1bkb7W6EP1y4uDlmzLg==",
+ "dev": true
+ },
+ "uglify-js": {
+ "version": "2.8.29",
+ "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz",
+ "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "source-map": "~0.5.1",
+ "uglify-to-browserify": "~1.0.0",
+ "yargs": "~3.10.0"
+ },
+ "dependencies": {
+ "yargs": {
+ "version": "3.10.0",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz",
+ "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "camelcase": "^1.0.2",
+ "cliui": "^2.1.0",
+ "decamelize": "^1.0.0",
+ "window-size": "0.1.0"
+ }
+ }
+ }
+ },
+ "uglify-to-browserify": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz",
+ "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=",
+ "dev": true,
+ "optional": true
+ },
+ "umd": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/umd/-/umd-3.0.3.tgz",
+ "integrity": "sha512-4IcGSufhFshvLNcMCV80UnQVlZ5pMOC8mvNPForqwA4+lzYQuetTESLDQkeLmihq8bRcnpbQa48Wb8Lh16/xow==",
+ "dev": true
+ },
+ "unherit": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/unherit/-/unherit-1.1.1.tgz",
+ "integrity": "sha512-+XZuV691Cn4zHsK0vkKYwBEwB74T3IZIcxrgn2E4rKwTfFyI1zCh7X7grwh9Re08fdPlarIdyWgI8aVB3F5A5g==",
+ "dev": true,
+ "requires": {
+ "inherits": "^2.0.1",
+ "xtend": "^4.0.1"
+ }
+ },
+ "unified": {
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/unified/-/unified-6.2.0.tgz",
+ "integrity": "sha512-1k+KPhlVtqmG99RaTbAv/usu85fcSRu3wY8X+vnsEhIxNP5VbVIDiXnLqyKIG+UMdyTg0ZX9EI6k2AfjJkHPtA==",
+ "dev": true,
+ "requires": {
+ "bail": "^1.0.0",
+ "extend": "^3.0.0",
+ "is-plain-obj": "^1.1.0",
+ "trough": "^1.0.0",
+ "vfile": "^2.0.0",
+ "x-is-string": "^0.1.0"
+ }
+ },
+ "unified-args": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/unified-args/-/unified-args-4.0.0.tgz",
+ "integrity": "sha1-jZubitNHvrN/QwVipixNNhtCIg8=",
+ "dev": true,
+ "requires": {
+ "camelcase": "^4.0.0",
+ "chalk": "^2.0.0",
+ "chokidar": "^1.5.1",
+ "minimist": "^1.2.0",
+ "text-table": "^0.2.0",
+ "unified-engine": "^4.0.0"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "dev": true,
+ "requires": {
+ "color-convert": "^1.9.0"
+ }
+ },
+ "camelcase": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz",
+ "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=",
+ "dev": true
+ },
+ "chalk": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz",
+ "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ }
+ },
+ "has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "5.4.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz",
+ "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^3.0.0"
+ }
+ }
+ }
+ },
+ "unified-engine": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/unified-engine/-/unified-engine-4.0.1.tgz",
+ "integrity": "sha1-lpKql/1cTsNoiXeeElFL746GP8M=",
+ "dev": true,
+ "requires": {
+ "concat-stream": "^1.5.1",
+ "debug": "^2.2.0",
+ "fault": "^1.0.0",
+ "fn-name": "^2.0.1",
+ "glob": "^7.0.3",
+ "ignore": "^3.2.0",
+ "is-empty": "^1.0.0",
+ "is-hidden": "^1.0.1",
+ "is-object": "^1.0.1",
+ "js-yaml": "^3.6.1",
+ "load-plugin": "^2.0.0",
+ "parse-json": "^2.2.0",
+ "to-vfile": "^2.0.0",
+ "trough": "^1.0.0",
+ "vfile-reporter": "^4.0.0",
+ "vfile-statistics": "^1.1.0",
+ "x-is-function": "^1.0.4",
+ "x-is-string": "^0.1.0",
+ "xtend": "^4.0.1"
+ },
+ "dependencies": {
+ "glob": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
+ "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
+ "dev": true,
+ "requires": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.0.4",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ }
+ }
+ }
+ },
+ "unified-lint-rule": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-1.0.2.tgz",
+ "integrity": "sha512-WkqwMC1aijHE17W3Z1co7aTI+Dzo1jHdwhI66fTClU1yOTbzAsTqlOD6eeR/MI9235Y3nu2jMDcm8GCeq4gaLg==",
+ "dev": true,
+ "requires": {
+ "wrapped": "^1.0.1"
+ }
+ },
+ "unified-message-control": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/unified-message-control/-/unified-message-control-1.0.4.tgz",
+ "integrity": "sha512-e1dEtN4Z/TvLn/qHm+xeZpzqhJTtfZusFErk336kkZVpqrJYiV9ptxq+SbRPFMlN0OkjDYHmVJ929KYjsMTo3g==",
+ "dev": true,
+ "requires": {
+ "trim": "0.0.1",
+ "unist-util-visit": "^1.0.0",
+ "vfile-location": "^2.0.0"
+ }
+ },
+ "union-value": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz",
+ "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=",
+ "dev": true,
+ "requires": {
+ "arr-union": "^3.1.0",
+ "get-value": "^2.0.6",
+ "is-extendable": "^0.1.1",
+ "set-value": "^0.4.3"
+ },
+ "dependencies": {
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ },
+ "set-value": {
+ "version": "0.4.3",
+ "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz",
+ "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=",
+ "dev": true,
+ "requires": {
+ "extend-shallow": "^2.0.1",
+ "is-extendable": "^0.1.1",
+ "is-plain-object": "^2.0.1",
+ "to-object-path": "^0.3.0"
+ }
+ }
+ }
+ },
+ "uniq": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz",
+ "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=",
+ "dev": true
+ },
+ "unique-string": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz",
+ "integrity": "sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo=",
+ "dev": true,
+ "requires": {
+ "crypto-random-string": "^1.0.0"
+ }
+ },
+ "unist-util-generated": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/unist-util-generated/-/unist-util-generated-1.1.2.tgz",
+ "integrity": "sha512-1HcwiEO62dr0XWGT+abVK4f0aAm8Ik8N08c5nAYVmuSxfvpA9rCcNyX/le8xXj1pJK5nBrGlZefeWB6bN8Pstw==",
+ "dev": true
+ },
+ "unist-util-is": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-2.1.2.tgz",
+ "integrity": "sha512-YkXBK/H9raAmG7KXck+UUpnKiNmUdB+aBGrknfQ4EreE1banuzrKABx3jP6Z5Z3fMSPMQQmeXBlKpCbMwBkxVw==",
+ "dev": true
+ },
+ "unist-util-modify-children": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/unist-util-modify-children/-/unist-util-modify-children-1.1.2.tgz",
+ "integrity": "sha512-GRi04yhng1WqBf5RBzPkOtWAadcZS2gvuOgNn/cyJBYNxtTuyYqTKN0eg4rC1YJwGnzrqfRB3dSKm8cNCjNirg==",
+ "dev": true,
+ "requires": {
+ "array-iterate": "^1.0.0"
+ }
+ },
+ "unist-util-position": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-3.0.1.tgz",
+ "integrity": "sha512-05QfJDPI7PE1BIUtAxeSV+cDx21xP7+tUZgSval5CA7tr0pHBwybF7OnEa1dOFqg6BfYH/qiMUnWwWj+Frhlww==",
+ "dev": true
+ },
+ "unist-util-remove-position": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-1.1.2.tgz",
+ "integrity": "sha512-XxoNOBvq1WXRKXxgnSYbtCF76TJrRoe5++pD4cCBsssSiWSnPEktyFrFLE8LTk3JW5mt9hB0Sk5zn4x/JeWY7Q==",
+ "dev": true,
+ "requires": {
+ "unist-util-visit": "^1.1.0"
+ }
+ },
+ "unist-util-stringify-position": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-1.1.2.tgz",
+ "integrity": "sha512-pNCVrk64LZv1kElr0N1wPiHEUoXNVFERp+mlTg/s9R5Lwg87f9bM/3sQB99w+N9D/qnM9ar3+AKDBwo/gm/iQQ==",
+ "dev": true
+ },
+ "unist-util-visit": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-1.3.1.tgz",
+ "integrity": "sha512-0fdB9EQJU0tho5tK0VzOJzAQpPv2LyLZ030b10GxuzAWEfvd54mpY7BMjQ1L69k2YNvL+SvxRzH0yUIehOO8aA==",
+ "dev": true,
+ "requires": {
+ "unist-util-is": "^2.1.1"
+ }
+ },
+ "universalify": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
+ "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==",
+ "dev": true
+ },
+ "unpipe": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
+ "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=",
+ "dev": true
+ },
+ "unset-value": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz",
+ "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=",
+ "dev": true,
+ "requires": {
+ "has-value": "^0.3.1",
+ "isobject": "^3.0.0"
+ },
+ "dependencies": {
+ "has-value": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz",
+ "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=",
+ "dev": true,
+ "requires": {
+ "get-value": "^2.0.3",
+ "has-values": "^0.1.4",
+ "isobject": "^2.0.0"
+ },
+ "dependencies": {
+ "isobject": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz",
+ "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=",
+ "dev": true,
+ "requires": {
+ "isarray": "1.0.0"
+ }
+ }
+ }
+ },
+ "has-values": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz",
+ "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=",
+ "dev": true
+ },
+ "isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
+ "dev": true
+ },
+ "isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
+ "dev": true
+ }
+ }
+ },
+ "untildify": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/untildify/-/untildify-2.1.0.tgz",
+ "integrity": "sha1-F+soB5h/dpUunASF/DEdBqgmouA=",
+ "dev": true,
+ "requires": {
+ "os-homedir": "^1.0.0"
+ }
+ },
+ "unzip-response": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/unzip-response/-/unzip-response-2.0.1.tgz",
+ "integrity": "sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c=",
+ "dev": true
+ },
+ "update-check": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/update-check/-/update-check-1.5.1.tgz",
+ "integrity": "sha512-M3rjq5KwSrWZrm2GVPIQIF+NXpIn5I9mIV67gGoydptQvzRjLp9ZbM6ctFJeNuaWSm5+mNP7aInELjSiLcIw6A==",
+ "dev": true,
+ "requires": {
+ "registry-auth-token": "3.3.2",
+ "registry-url": "3.1.0"
+ }
+ },
+ "update-notifier": {
+ "version": "2.5.0",
+ "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-2.5.0.tgz",
+ "integrity": "sha512-gwMdhgJHGuj/+wHJJs9e6PcCszpxR1b236igrOkUofGhqJuG+amlIKwApH1IW1WWl7ovZxsX49lMBWLxSdm5Dw==",
+ "dev": true,
+ "requires": {
+ "boxen": "^1.2.1",
+ "chalk": "^2.0.1",
+ "configstore": "^3.0.0",
+ "import-lazy": "^2.1.0",
+ "is-ci": "^1.0.10",
+ "is-installed-globally": "^0.1.0",
+ "is-npm": "^1.0.0",
+ "latest-version": "^3.0.0",
+ "semver-diff": "^2.0.0",
+ "xdg-basedir": "^3.0.0"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "dev": true,
+ "requires": {
+ "color-convert": "^1.9.0"
+ }
+ },
+ "chalk": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz",
+ "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ }
+ },
+ "has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^3.0.0"
+ }
+ }
+ }
+ },
+ "uri-js": {
+ "version": "4.2.2",
+ "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz",
+ "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==",
+ "dev": true,
+ "requires": {
+ "punycode": "^2.1.0"
+ },
+ "dependencies": {
+ "punycode": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
+ "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
+ "dev": true
+ }
+ }
+ },
+ "urix": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz",
+ "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=",
+ "dev": true
+ },
+ "url": {
+ "version": "0.11.0",
+ "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz",
+ "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=",
+ "dev": true,
+ "requires": {
+ "punycode": "1.3.2",
+ "querystring": "0.2.0"
+ },
+ "dependencies": {
+ "punycode": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz",
+ "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=",
+ "dev": true
+ }
+ }
+ },
+ "url-parse-lax": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz",
+ "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=",
+ "dev": true,
+ "requires": {
+ "prepend-http": "^1.0.1"
+ }
+ },
+ "use": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz",
+ "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==",
+ "dev": true
+ },
+ "util": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz",
+ "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=",
+ "dev": true,
+ "requires": {
+ "inherits": "2.0.1"
+ },
+ "dependencies": {
+ "inherits": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz",
+ "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=",
+ "dev": true
+ }
+ }
+ },
+ "util-deprecate": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
+ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
+ "dev": true
+ },
+ "uuid": {
+ "version": "3.3.2",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz",
+ "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==",
+ "dev": true
+ },
+ "validate-npm-package-license": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.3.tgz",
+ "integrity": "sha512-63ZOUnL4SIXj4L0NixR3L1lcjO38crAbgrTpl28t8jjrfuiOBL5Iygm+60qPs/KsZGzPNg6Smnc/oY16QTjF0g==",
+ "dev": true,
+ "requires": {
+ "spdx-correct": "^3.0.0",
+ "spdx-expression-parse": "^3.0.0"
+ }
+ },
+ "vary": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
+ "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=",
+ "dev": true
+ },
+ "verror": {
+ "version": "1.10.0",
+ "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
+ "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
+ "dev": true,
+ "requires": {
+ "assert-plus": "^1.0.0",
+ "core-util-is": "1.0.2",
+ "extsprintf": "^1.2.0"
+ }
+ },
+ "vfile": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/vfile/-/vfile-2.3.0.tgz",
+ "integrity": "sha512-ASt4mBUHcTpMKD/l5Q+WJXNtshlWxOogYyGYYrg4lt/vuRjC1EFQtlAofL5VmtVNIZJzWYFJjzGWZ0Gw8pzW1w==",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.4",
+ "replace-ext": "1.0.0",
+ "unist-util-stringify-position": "^1.0.0",
+ "vfile-message": "^1.0.0"
+ }
+ },
+ "vfile-location": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-2.0.3.tgz",
+ "integrity": "sha512-zM5/l4lfw1CBoPx3Jimxoc5RNDAHHpk6AM6LM0pTIkm5SUSsx8ZekZ0PVdf0WEZ7kjlhSt7ZlqbRL6Cd6dBs6A==",
+ "dev": true
+ },
+ "vfile-message": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-1.0.1.tgz",
+ "integrity": "sha512-vSGCkhNvJzO6VcWC6AlJW4NtYOVtS+RgCaqFIYUjoGIlHnFL+i0LbtYvonDWOMcB97uTPT4PRsyYY7REWC9vug==",
+ "dev": true,
+ "requires": {
+ "unist-util-stringify-position": "^1.1.1"
+ }
+ },
+ "vfile-reporter": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/vfile-reporter/-/vfile-reporter-4.0.0.tgz",
+ "integrity": "sha1-6m8K4TQvSEFXOYXgX5QXNvJ96do=",
+ "dev": true,
+ "requires": {
+ "repeat-string": "^1.5.0",
+ "string-width": "^1.0.0",
+ "supports-color": "^4.1.0",
+ "unist-util-stringify-position": "^1.0.0",
+ "vfile-statistics": "^1.1.0"
+ },
+ "dependencies": {
+ "has-flag": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz",
+ "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz",
+ "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=",
+ "dev": true,
+ "requires": {
+ "has-flag": "^2.0.0"
+ }
+ }
+ }
+ },
+ "vfile-statistics": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/vfile-statistics/-/vfile-statistics-1.1.1.tgz",
+ "integrity": "sha512-dxUM6IYvGChHuwMT3dseyU5BHprNRXzAV0OHx1A769lVGsTiT50kU7BbpRFV+IE6oWmU+PwHdsTKfXhnDIRIgQ==",
+ "dev": true
+ },
+ "vm-browserify": {
+ "version": "0.0.4",
+ "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz",
+ "integrity": "sha1-XX6kW7755Kb/ZflUOOCofDV9WnM=",
+ "dev": true,
+ "requires": {
+ "indexof": "0.0.1"
+ }
+ },
+ "walk-sync": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/walk-sync/-/walk-sync-0.3.2.tgz",
+ "integrity": "sha1-SCcoCvxC0OA1NnxKTjHurA0Tb3U=",
+ "dev": true,
+ "requires": {
+ "ensure-posix-path": "^1.0.0",
+ "matcher-collection": "^1.0.0"
+ }
+ },
+ "wcwidth": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz",
+ "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=",
+ "dev": true,
+ "requires": {
+ "defaults": "^1.0.3"
+ }
+ },
+ "webidl-conversions": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-2.0.1.tgz",
+ "integrity": "sha1-O/glj30xjHRDw28uFpQCoaZwNQY=",
+ "dev": true,
+ "optional": true
+ },
+ "whatwg-url-compat": {
+ "version": "0.6.5",
+ "resolved": "https://registry.npmjs.org/whatwg-url-compat/-/whatwg-url-compat-0.6.5.tgz",
+ "integrity": "sha1-AImBEa9om7CXVBzVpFymyHmERb8=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "tr46": "~0.0.1"
+ }
+ },
+ "which": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz",
+ "integrity": "sha1-/wS9/AEO5UfXgL7DjhrBwnd9JTo=",
+ "dev": true,
+ "requires": {
+ "isexe": "^2.0.0"
+ }
+ },
+ "which-module": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz",
+ "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=",
+ "dev": true
+ },
+ "widest-line": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-2.0.0.tgz",
+ "integrity": "sha1-AUKk6KJD+IgsAjOqDgKBqnYVInM=",
+ "dev": true,
+ "requires": {
+ "string-width": "^2.1.1"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
+ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
+ "dev": true
+ },
+ "is-fullwidth-code-point": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+ "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
+ "dev": true
+ },
+ "string-width": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
+ "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
+ "dev": true,
+ "requires": {
+ "is-fullwidth-code-point": "^2.0.0",
+ "strip-ansi": "^4.0.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
+ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^3.0.0"
+ }
+ }
+ }
+ },
+ "window-size": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz",
+ "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=",
+ "dev": true,
+ "optional": true
+ },
+ "wordwrap": {
+ "version": "0.0.3",
+ "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz",
+ "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=",
+ "dev": true
+ },
+ "wrap-ansi": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz",
+ "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=",
+ "dev": true,
+ "requires": {
+ "string-width": "^1.0.1",
+ "strip-ansi": "^3.0.1"
+ }
+ },
+ "wrapped": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/wrapped/-/wrapped-1.0.1.tgz",
+ "integrity": "sha1-x4PZ2Aeyc+mwHoUWgKk4yHyQckI=",
+ "dev": true,
+ "requires": {
+ "co": "3.1.0",
+ "sliced": "^1.0.1"
+ },
+ "dependencies": {
+ "co": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/co/-/co-3.1.0.tgz",
+ "integrity": "sha1-TqVOpaCJOBUxheFSEMaNkJK8G3g=",
+ "dev": true
+ }
+ }
+ },
+ "wrappy": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
+ "dev": true
+ },
+ "write": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/write/-/write-0.2.1.tgz",
+ "integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=",
+ "dev": true,
+ "requires": {
+ "mkdirp": "^0.5.1"
+ }
+ },
+ "write-file-atomic": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.3.0.tgz",
+ "integrity": "sha512-xuPeK4OdjWqtfi59ylvVL0Yn35SF3zgcAcv7rBPFHVaEapaDr4GdGgm3j7ckTwH9wHL7fGmgfAnb0+THrHb8tA==",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.11",
+ "imurmurhash": "^0.1.4",
+ "signal-exit": "^3.0.2"
+ }
+ },
+ "x-is-function": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/x-is-function/-/x-is-function-1.0.4.tgz",
+ "integrity": "sha1-XSlNw9Joy90GJYDgxd93o5HR+h4=",
+ "dev": true
+ },
+ "x-is-string": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/x-is-string/-/x-is-string-0.1.0.tgz",
+ "integrity": "sha1-R0tQhlrzpJqcRlfwWs0UVFj3fYI=",
+ "dev": true
+ },
+ "xdg-basedir": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-3.0.0.tgz",
+ "integrity": "sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ=",
+ "dev": true
+ },
+ "xml-name-validator": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-2.0.1.tgz",
+ "integrity": "sha1-TYuPHszTQZqjYgYb7O9RXh5VljU=",
+ "dev": true,
+ "optional": true
+ },
+ "xtend": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz",
+ "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=",
+ "dev": true
+ },
+ "y18n": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz",
+ "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=",
+ "dev": true
+ },
+ "yallist": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.2.tgz",
+ "integrity": "sha1-hFK0u36Dx8GI2AQcGoN8dz1ti7k=",
+ "dev": true
+ },
+ "yargs": {
+ "version": "4.8.1",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-4.8.1.tgz",
+ "integrity": "sha1-wMQpJMpKqmsObaFznfshZDn53cA=",
+ "dev": true,
+ "requires": {
+ "cliui": "^3.2.0",
+ "decamelize": "^1.1.1",
+ "get-caller-file": "^1.0.1",
+ "lodash.assign": "^4.0.3",
+ "os-locale": "^1.4.0",
+ "read-pkg-up": "^1.0.1",
+ "require-directory": "^2.1.1",
+ "require-main-filename": "^1.0.1",
+ "set-blocking": "^2.0.0",
+ "string-width": "^1.0.1",
+ "which-module": "^1.0.0",
+ "window-size": "^0.2.0",
+ "y18n": "^3.2.1",
+ "yargs-parser": "^2.4.1"
+ },
+ "dependencies": {
+ "cliui": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz",
+ "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=",
+ "dev": true,
+ "requires": {
+ "string-width": "^1.0.1",
+ "strip-ansi": "^3.0.1",
+ "wrap-ansi": "^2.0.0"
+ }
+ },
+ "window-size": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.2.0.tgz",
+ "integrity": "sha1-tDFbtCFKPXBY6+7okuE/ok2YsHU=",
+ "dev": true
+ }
+ }
+ },
+ "yargs-parser": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-2.4.1.tgz",
+ "integrity": "sha1-hVaN488VD/SfpRgl8DqMiA3cxcQ=",
+ "dev": true,
+ "requires": {
+ "camelcase": "^3.0.0",
+ "lodash.assign": "^4.0.6"
+ },
+ "dependencies": {
+ "camelcase": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz",
+ "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=",
+ "dev": true
+ }
+ }
+ }
+ }
+}
diff --git a/devel/electron4/files/package.json b/devel/electron4/files/package.json
new file mode 100644
index 000000000000..d5310212e388
--- /dev/null
+++ b/devel/electron4/files/package.json
@@ -0,0 +1,76 @@
+{
+ "name": "electron",
+ "version": "4.2.12",
+ "repository": "https://github.com/electron/electron",
+ "description": "Build cross platform desktop apps with JavaScript, HTML, and CSS",
+ "devDependencies": {
+ "aliasify": "^2.1.0",
+ "asar": "^0.11.0",
+ "browserify": "^13.1.0",
+ "check-for-leaks": "^1.0.2",
+ "clang-format": "^1.2.3",
+ "colors": "^1.1.2",
+ "dotenv-safe": "^4.0.4",
+ "dugite": "^1.45.0",
+ "electabul": "~0.0.4",
+ "electron-docs-linter": "^2.4.0",
+ "electron-typescript-definitions": "^2.1.1",
+ "eslint": "^5.6.0",
+ "eslint-config-standard": "^12.0.0",
+ "eslint-plugin-mocha": "^5.2.0",
+ "folder-hash": "^2.1.1",
+ "github": "^9.2.0",
+ "html-entities": "^1.2.1",
+ "husky": "^0.14.3",
+ "lint": "^1.1.2",
+ "minimist": "^1.2.0",
+ "node-fetch": "^2.1.2",
+ "nugget": "^2.0.1",
+ "octicons": "^7.3.0",
+ "recursive-readdir": "^2.2.2",
+ "remark-cli": "^4.0.0",
+ "remark-preset-lint-markdown-style-guide": "^2.1.1",
+ "request": "^2.88.0",
+ "semver": "^5.5.0",
+ "serve": "^6.5.8",
+ "standard-markdown": "^5.0.0",
+ "sumchecker": "^2.0.2",
+ "temp": "^0.8.3"
+ },
+ "private": true,
+ "scripts": {
+ "asar": "asar",
+ "browserify": "browserify",
+ "bump-version": "./script/bump-version.py",
+ "check-tls": "python ./script/tls.py",
+ "clang-format": "find atom/ brightray/ chromium_src/ -iname *.h -o -iname *.cc -o -iname *.mm | xargs clang-format -i",
+ "lint": "node ./script/lint.js && npm run lint:clang-format && npm run lint:docs",
+ "lint:js": "node ./script/lint.js --js",
+ "lint:clang-format": "python script/run-clang-format.py -r -c atom/ chromium_src/ brightray/ || (echo \"\\nCode not formatted correctly.\" && exit 1)",
+ "lint:cpp": "node ./script/lint.js --cc",
+ "lint:py": "node ./script/lint.js --py",
+ "lint:gn": "node ./script/lint.js --gn",
+ "lint:docs": "remark docs -qf && npm run lint:js-in-markdown && npm run create-typescript-definitions && npm run lint:docs-relative-links",
+ "lint:docs-relative-links": "python ./script/check-relative-doc-links.py",
+ "lint:js-in-markdown": "standard-markdown docs",
+ "create-api-json": "electron-docs-linter docs --outfile=electron-api.json",
+ "create-typescript-definitions": "npm run create-api-json && electron-typescript-definitions --in=electron-api.json --out=electron.d.ts",
+ "preinstall": "node -e 'process.exit(0)'",
+ "precommit": "python script/run-clang-format.py -r -c atom/ chromium_src/ brightray/ && node ./script/lint.js -c && remark docs -qf || (echo \"Code not formatted correctly.\" && exit 1)",
+ "prepack": "check-for-leaks",
+ "prepush": "check-for-leaks",
+ "repl": "node ./script/start.js --interactive",
+ "start": "node ./script/start.js",
+ "test": "node ./script/spec-runner.js electron/spec"
+ },
+ "license": "MIT",
+ "author": "Electron Community",
+ "keywords": [
+ "electron"
+ ],
+ "aliasify": {
+ "replacements": {
+ "@electron/internal/(.+)": "./lib/$1"
+ }
+ }
+}
diff --git a/devel/electron4/files/patch-BUILD.gn b/devel/electron4/files/patch-BUILD.gn
new file mode 100644
index 000000000000..4d7aaf7a0f36
--- /dev/null
+++ b/devel/electron4/files/patch-BUILD.gn
@@ -0,0 +1,87 @@
+--- BUILD.gn.orig 2019-03-15 06:36:52 UTC
++++ BUILD.gn
+@@ -354,7 +354,7 @@ group("gn_all") {
+ [ "//third_party/android_crazy_linker:android_crazy_linker_zip_fuzzer" ]
+ }
+
+- if (is_linux || is_android) {
++ if ((is_linux && !is_bsd) || is_android) {
+ deps += [
+ "//third_party/breakpad:breakpad_unittests",
+ "//third_party/breakpad:core-2-minidump",
+@@ -396,8 +396,6 @@ group("gn_all") {
+ "//net:disk_cache_memory_test",
+ "//net:quic_client",
+ "//net:quic_server",
+- "//sandbox/linux:chrome_sandbox",
+- "//sandbox/linux:sandbox_linux_unittests",
+ "//testing:empty_main",
+ ]
+
+@@ -454,10 +452,6 @@ group("gn_all") {
+ "//chrome/test/chromedriver:chromedriver",
+ "//chrome/test/chromedriver:chromedriver_tests",
+ "//components/sync:run_sync_testserver",
+- "//courgette:courgette",
+- "//courgette:courgette_fuzz",
+- "//courgette:courgette_minimal_tool",
+- "//courgette:courgette_unittests",
+ "//media/cast:generate_barcode_video",
+ "//media/cast:generate_timecode_audio",
+ "//net:crash_cache",
+@@ -513,10 +507,6 @@ group("gn_all") {
+ "//mojo:mojo_perftests",
+ "//services/service_manager/public/cpp",
+ "//testing/gmock:gmock_main",
+- "//third_party/breakpad:dump_syms($host_toolchain)",
+- "//third_party/breakpad:microdump_stackwalk($host_toolchain)",
+- "//third_party/breakpad:minidump_dump($host_toolchain)",
+- "//third_party/breakpad:minidump_stackwalk($host_toolchain)",
+ ]
+
+ if (!is_android) {
+@@ -593,7 +583,7 @@ group("gn_all") {
+ host_os == "win") {
+ deps += [ "//chrome/test/mini_installer:mini_installer_tests" ]
+ }
+- } else if (!is_android && !is_ios && !is_fuchsia) {
++ } else if (!is_android && !is_ios && !is_fuchsia && !is_bsd) {
+ deps += [ "//third_party/breakpad:symupload($host_toolchain)" ]
+ }
+
+@@ -819,7 +809,6 @@ if (is_chromeos) {
+ "//ppapi/examples/video_decode",
+ "//sandbox/linux:chrome_sandbox",
+ "//sandbox/linux:sandbox_linux_unittests",
+- "//third_party/breakpad:minidump_stackwalk($host_toolchain)",
+
+ # Blocked on https://github.com/catapult-project/catapult/issues/2297
+ #"//third_party/catapult/telemetry:bitmaptools",
+@@ -942,7 +931,7 @@ if (!is_ios) {
+ ]
+ }
+
+- if (!is_win && !is_android) {
++ if (!is_win && !is_android && !is_bsd) {
+ data_deps +=
+ [ "//third_party/breakpad:minidump_stackwalk($host_toolchain)" ]
+ }
+@@ -951,7 +940,7 @@ if (!is_ios) {
+ data_deps += [ "//third_party/breakpad:dump_syms($host_toolchain)" ]
+ }
+
+- if (is_linux) {
++ if (is_linux && !is_bsd) {
+ data_deps += [ "//third_party/breakpad:dump_syms($host_toolchain)" ]
+ }
+
+@@ -1076,9 +1065,6 @@ group("chromium_builder_perf") {
+
+ if (is_win) {
+ data_deps += [ "//chrome/installer/mini_installer:mini_installer" ]
+- } else {
+- data_deps +=
+- [ "//third_party/breakpad:minidump_stackwalk($host_toolchain)" ]
+ }
+ if (is_win || is_android) {
+ data_deps += [
diff --git a/devel/electron4/files/patch-apps_ui_views_app__window__frame__view.cc b/devel/electron4/files/patch-apps_ui_views_app__window__frame__view.cc
new file mode 100644
index 000000000000..5807afb7f09c
--- /dev/null
+++ b/devel/electron4/files/patch-apps_ui_views_app__window__frame__view.cc
@@ -0,0 +1,11 @@
+--- apps/ui/views/app_window_frame_view.cc.orig 2019-03-15 06:36:53 UTC
++++ apps/ui/views/app_window_frame_view.cc
+@@ -132,7 +132,7 @@ gfx::Rect AppWindowFrameView::GetBoundsForClientView()
+ gfx::Rect AppWindowFrameView::GetWindowBoundsForClientBounds(
+ const gfx::Rect& client_bounds) const {
+ gfx::Rect window_bounds = client_bounds;
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ // Get the difference between the widget's client area bounds and window
+ // bounds, and grow |window_bounds| by that amount.
+ gfx::Insets native_frame_insets =
diff --git a/devel/electron4/files/patch-ash_display_mirror__window__controller.cc b/devel/electron4/files/patch-ash_display_mirror__window__controller.cc
new file mode 100644
index 000000000000..eb173dbb11c9
--- /dev/null
+++ b/devel/electron4/files/patch-ash_display_mirror__window__controller.cc
@@ -0,0 +1,14 @@
+--- ash/display/mirror_window_controller.cc.orig 2019-03-15 06:36:54 UTC
++++ ash/display/mirror_window_controller.cc
+@@ -255,7 +255,11 @@ void MirrorWindowController::UpdateWindow(
+ return info.id() == iter->first;
+ }) == display_info_list.end()) {
+ CloseAndDeleteHost(iter->second, true);
++#if defined(__llvm__)
++ mirroring_host_info_map_.erase(iter++);
++#else
+ iter = mirroring_host_info_map_.erase(iter);
++#endif
+ } else {
+ ++iter;
+ }
diff --git a/devel/electron4/files/patch-base_BUILD.gn b/devel/electron4/files/patch-base_BUILD.gn
new file mode 100644
index 000000000000..0c88c218b6d1
--- /dev/null
+++ b/devel/electron4/files/patch-base_BUILD.gn
@@ -0,0 +1,67 @@
+--- base/BUILD.gn.orig 2019-03-16 09:15:20 UTC
++++ base/BUILD.gn
+@@ -1248,7 +1248,7 @@ jumbo_component("base") {
+ # Needed for <atomic> if using newer C++ library than sysroot, except if
+ # building inside the cros_sdk environment - use host_toolchain as a
+ # more robust check for this.
+- if ((is_android || (is_linux && !is_chromecast)) &&
++ if ((is_android || (is_linux && !is_chromecast) && !is_clang) &&
+ host_toolchain != "//build/toolchain/cros:host") {
+ libs += [ "atomic" ]
+ }
+@@ -1274,7 +1274,7 @@ jumbo_component("base") {
+ "allocator/allocator_shim_override_glibc_weak_symbols.h",
+ ]
+ deps += [ "//base/allocator:tcmalloc" ]
+- } else if (is_linux && use_allocator == "none") {
++ } else if ((is_linux && !is_bsd) && use_allocator == "none") {
+ sources += [ "allocator/allocator_shim_default_dispatch_to_glibc.cc" ]
+ } else if (is_android && use_allocator == "none") {
+ sources += [
+@@ -1704,6 +1704,33 @@ jumbo_component("base") {
+ }
+ }
+
++ if (is_bsd) {
++ sources -= [
++ "files/file_path_watcher_linux.cc",
++ "files/file_util_linux.cc",
++ "process/memory_linux.cc",
++ "process/process_linux.cc",
++ "process/process_handle_linux.cc",
++ "process/process_iterator_linux.cc",
++ "process/process_metrics_linux.cc",
++ "sys_info_linux.cc"
++ ]
++ sources += [
++ "files/file_path_watcher_kqueue.cc",
++ "files/file_path_watcher_kqueue.h",
++ "files/file_path_watcher_stub.cc",
++ "process/memory_stubs.cc",
++ "process/process_handle_freebsd.cc",
++ "process/process_iterator_freebsd.cc",
++ "process/process_metrics_freebsd.cc",
++ "sys_info_freebsd.cc",
++ ]
++ libs = [
++ "execinfo", # logging.cc
++ "kvm" # process_metrics_freebsd
++ ]
++ }
++
+ # iOS
+ if (is_ios) {
+ set_sources_assignment_filter([])
+@@ -2692,6 +2719,12 @@ test("base_unittests") {
+ "trace_event/trace_event_android_unittest.cc",
+ ]
+ set_sources_assignment_filter(sources_assignment_filter)
++ }
++
++ if (is_bsd) {
++ sources -= [
++ "debug/proc_maps_linux_unittest.cc",
++ ]
+ }
+
+ if (is_win) {
diff --git a/devel/electron4/files/patch-base_allocator_allocator__shim.cc b/devel/electron4/files/patch-base_allocator_allocator__shim.cc
new file mode 100644
index 000000000000..e29579ece684
--- /dev/null
+++ b/devel/electron4/files/patch-base_allocator_allocator__shim.cc
@@ -0,0 +1,11 @@
+--- base/allocator/allocator_shim.cc.orig 2019-03-15 06:36:56 UTC
++++ base/allocator/allocator_shim.cc
+@@ -69,7 +69,7 @@ inline const allocator::AllocatorDispatch* GetChainHea
+ // Unfortunately due to that bug NoBarrier_Load() is mistakenly fully
+ // barriered on Linux+Clang, and that causes visible perf regressons.
+ return reinterpret_cast<const allocator::AllocatorDispatch*>(
+-#if defined(OS_LINUX) && defined(__clang__)
++#if (defined(OS_BSD) || defined(OS_LINUX)) && defined(__clang__)
+ *static_cast<const volatile subtle::AtomicWord*>(&g_chain_head)
+ #else
+ subtle::NoBarrier_Load(&g_chain_head)
diff --git a/devel/electron4/files/patch-base_allocator_allocator__shim__default__dispatch__to__glibc.cc b/devel/electron4/files/patch-base_allocator_allocator__shim__default__dispatch__to__glibc.cc
new file mode 100644
index 000000000000..ce0f933ab779
--- /dev/null
+++ b/devel/electron4/files/patch-base_allocator_allocator__shim__default__dispatch__to__glibc.cc
@@ -0,0 +1,77 @@
+--- base/allocator/allocator_shim_default_dispatch_to_glibc.cc.orig 2019-03-15 06:36:56 UTC
++++ base/allocator/allocator_shim_default_dispatch_to_glibc.cc
+@@ -3,19 +3,28 @@
+ // found in the LICENSE file.
+
+ #include "base/allocator/allocator_shim.h"
++#include <stdio.h>
++#include <stdlib.h>
++#include <malloc_np.h>
+
+-#include <malloc.h>
+-
+ // This translation unit defines a default dispatch for the allocator shim which
+ // routes allocations to libc functions.
+-// The code here is strongly inspired from tcmalloc's libc_override_glibc.h.
++// The code here is strongly inspired from tcmalloc's override_glibc.h.
+
+ extern "C" {
+-void* __libc_malloc(size_t size);
+-void* __libc_calloc(size_t n, size_t size);
+-void* __libc_realloc(void* address, size_t size);
+-void* __libc_memalign(size_t alignment, size_t size);
+-void __libc_free(void* ptr);
++void* __malloc(size_t size);
++void* __calloc(size_t n, size_t size);
++void* __realloc(void* address, size_t size);
++void* __memalign(size_t alignment, size_t size) {
++ void *ret;
++ if (__posix_memalign(&ret, alignment, size) != 0) {
++ return nullptr;
++ } else {
++ return ret;
++ }
++}
++int __posix_memalign(void **ptr, size_t alignment, size_t size);
++void __free(void* ptr);
+ } // extern "C"
+
+ namespace {
+@@ -23,32 +32,32 @@ namespace {
+ using base::allocator::AllocatorDispatch;
+
+ void* GlibcMalloc(const AllocatorDispatch*, size_t size, void* context) {
+- return __libc_malloc(size);
++ return __malloc(size);
+ }
+
+ void* GlibcCalloc(const AllocatorDispatch*,
+ size_t n,
+ size_t size,
+ void* context) {
+- return __libc_calloc(n, size);
++ return __calloc(n, size);
+ }
+
+ void* GlibcRealloc(const AllocatorDispatch*,
+ void* address,
+ size_t size,
+ void* context) {
+- return __libc_realloc(address, size);
++ return __realloc(address, size);
+ }
+
+ void* GlibcMemalign(const AllocatorDispatch*,
+ size_t alignment,
+ size_t size,
+ void* context) {
+- return __libc_memalign(alignment, size);
++ return __memalign(alignment, size);
+ }
+
+ void GlibcFree(const AllocatorDispatch*, void* address, void* context) {
+- __libc_free(address);
++ __free(address);
+ }
+
+ size_t GlibcGetSizeEstimate(const AllocatorDispatch*,
diff --git a/devel/electron4/files/patch-base_allocator_allocator__shim__override__libc__symbols.h b/devel/electron4/files/patch-base_allocator_allocator__shim__override__libc__symbols.h
new file mode 100644
index 000000000000..a5372f0f8258
--- /dev/null
+++ b/devel/electron4/files/patch-base_allocator_allocator__shim__override__libc__symbols.h
@@ -0,0 +1,11 @@
+--- base/allocator/allocator_shim_override_libc_symbols.h.orig 2019-03-15 06:25:27 UTC
++++ base/allocator/allocator_shim_override_libc_symbols.h
+@@ -10,7 +10,7 @@
+ #endif
+ #define BASE_ALLOCATOR_ALLOCATOR_SHIM_OVERRIDE_LIBC_SYMBOLS_H_
+
+-#include <malloc.h>
++#include <stdlib.h>
+
+ #include "base/allocator/allocator_shim_internals.h"
+
diff --git a/devel/electron4/files/patch-base_allocator_allocator__shim__unittest.cc b/devel/electron4/files/patch-base_allocator_allocator__shim__unittest.cc
new file mode 100644
index 000000000000..2ffbbaff5675
--- /dev/null
+++ b/devel/electron4/files/patch-base_allocator_allocator__shim__unittest.cc
@@ -0,0 +1,36 @@
+--- base/allocator/allocator_shim_unittest.cc.orig 2019-03-15 06:36:56 UTC
++++ base/allocator/allocator_shim_unittest.cc
+@@ -294,7 +294,7 @@ TEST_F(AllocatorShimTest, InterceptLibcSymbols) {
+ ASSERT_GE(aligned_allocs_intercepted_by_size[61], 1u);
+ #endif // !OS_WIN
+
+-#if !defined(OS_WIN) && !defined(OS_MACOSX)
++#if !defined(OS_WIN) && !defined(OS_MACOSX) && !defined(OS_BSD)
+ void* memalign_ptr = memalign(128, 53);
+ ASSERT_NE(nullptr, memalign_ptr);
+ ASSERT_EQ(0u, reinterpret_cast<uintptr_t>(memalign_ptr) % 128);
+@@ -307,7 +307,7 @@ TEST_F(AllocatorShimTest, InterceptLibcSymbols) {
+ ASSERT_GE(aligned_allocs_intercepted_by_alignment[kPageSize], 1u);
+ // pvalloc rounds the size up to the next page.
+ ASSERT_GE(aligned_allocs_intercepted_by_size[kPageSize], 1u);
+-#endif // !OS_WIN && !OS_MACOSX
++#endif // !OS_WIN && !OS_MACOSX && !OS_BSD
+
+ char* realloc_ptr = static_cast<char*>(malloc(10));
+ strcpy(realloc_ptr, "foobar");
+@@ -323,13 +323,13 @@ TEST_F(AllocatorShimTest, InterceptLibcSymbols) {
+ free(zero_alloc_ptr);
+ ASSERT_GE(frees_intercepted_by_addr[Hash(zero_alloc_ptr)], 1u);
+
+-#if !defined(OS_WIN) && !defined(OS_MACOSX)
++#if !defined(OS_WIN) && !defined(OS_MACOSX) && !defined(OS_BSD)
+ free(memalign_ptr);
+ ASSERT_GE(frees_intercepted_by_addr[Hash(memalign_ptr)], 1u);
+
+ free(pvalloc_ptr);
+ ASSERT_GE(frees_intercepted_by_addr[Hash(pvalloc_ptr)], 1u);
+-#endif // !OS_WIN && !OS_MACOSX
++#endif // !OS_WIN && !OS_MACOSX && !OS_BSD
+
+ #if !defined(OS_WIN)
+ free(posix_memalign_ptr);
diff --git a/devel/electron4/files/patch-base_allocator_partition__allocator_partition__alloc__unittest.cc b/devel/electron4/files/patch-base_allocator_partition__allocator_partition__alloc__unittest.cc
new file mode 100644
index 000000000000..51053e2ba725
--- /dev/null
+++ b/devel/electron4/files/patch-base_allocator_partition__allocator_partition__alloc__unittest.cc
@@ -0,0 +1,11 @@
+--- base/allocator/partition_allocator/partition_alloc_unittest.cc.orig 2019-03-15 06:36:56 UTC
++++ base/allocator/partition_allocator/partition_alloc_unittest.cc
+@@ -1305,7 +1305,7 @@ TEST_F(PartitionAllocTest, LostFreePagesBug) {
+ #if !defined(OS_WIN) && \
+ (!defined(ARCH_CPU_64_BITS) || \
+ (defined(OS_POSIX) && \
+- !(defined(OS_FUCHSIA) || defined(OS_MACOSX) || defined(OS_ANDROID))))
++ !(defined(OS_FUCHSIA) || defined(OS_MACOSX) || defined(OS_ANDROID) || defined(OS_BSD))))
+
+ // The following four tests wrap a called function in an expect death statement
+ // to perform their test, because they are non-hermetic. Specifically they are
diff --git a/devel/electron4/files/patch-base_debug_debugger__posix.cc b/devel/electron4/files/patch-base_debug_debugger__posix.cc
new file mode 100644
index 000000000000..c54dbd19e7b0
--- /dev/null
+++ b/devel/electron4/files/patch-base_debug_debugger__posix.cc
@@ -0,0 +1,57 @@
+--- base/debug/debugger_posix.cc.orig 2019-03-15 06:36:56 UTC
++++ base/debug/debugger_posix.cc
+@@ -84,7 +84,7 @@ bool BeingDebugged() {
+ KERN_PROC,
+ KERN_PROC_PID,
+ getpid()
+-#if defined(OS_OPENBSD)
++#if defined(OS_BSD)
+ , sizeof(struct kinfo_proc),
+ 0
+ #endif
+@@ -92,33 +92,36 @@ bool BeingDebugged() {
+
+ // Caution: struct kinfo_proc is marked __APPLE_API_UNSTABLE. The source and
+ // binary interfaces may change.
+- struct kinfo_proc info;
+- size_t info_size = sizeof(info);
++ struct kinfo_proc *info;
++ size_t info_size;
+
+-#if defined(OS_OPENBSD)
+ if (sysctl(mib, arraysize(mib), NULL, &info_size, NULL, 0) < 0)
+ return -1;
+
++ info = (struct kinfo_proc *)malloc(info_size);
++
+ mib[5] = (info_size / sizeof(struct kinfo_proc));
+-#endif
+
+- int sysctl_result = sysctl(mib, arraysize(mib), &info, &info_size, NULL, 0);
++ int sysctl_result = sysctl(mib, arraysize(mib), info, &info_size, NULL, 0);
+ DCHECK_EQ(sysctl_result, 0);
+ if (sysctl_result != 0) {
+ is_set = true;
+ being_debugged = false;
+- return being_debugged;
++ goto out;
+ }
+
+ // This process is being debugged if the P_TRACED flag is set.
+ is_set = true;
+ #if defined(OS_FREEBSD)
+- being_debugged = (info.ki_flag & P_TRACED) != 0;
++ being_debugged = (info->ki_flag & P_TRACED) != 0;
+ #elif defined(OS_BSD)
+- being_debugged = (info.p_flag & P_TRACED) != 0;
++ being_debugged = (info->p_flag & P_TRACED) != 0;
+ #else
+- being_debugged = (info.kp_proc.p_flag & P_TRACED) != 0;
++ being_debugged = (info->kp_proc.p_flag & P_TRACED) != 0;
+ #endif
++
++out:
++ free(info);
+ return being_debugged;
+ }
+
diff --git a/devel/electron4/files/patch-base_debug_elf__reader__linux.cc b/devel/electron4/files/patch-base_debug_elf__reader__linux.cc
new file mode 100644
index 000000000000..6bffb4a0c249
--- /dev/null
+++ b/devel/electron4/files/patch-base_debug_elf__reader__linux.cc
@@ -0,0 +1,13 @@
+--- base/debug/elf_reader_linux.cc.orig 2019-03-15 06:36:56 UTC
++++ base/debug/elf_reader_linux.cc
+@@ -41,8 +41,10 @@ Optional<std::string> ElfSegmentBuildIDNoteAsString(co
+ const void* section_end = segment.data() + segment.size_bytes();
+ const Nhdr* note_header = reinterpret_cast<const Nhdr*>(segment.data());
+ while (note_header < section_end) {
++#if !defined(OS_BSD)
+ if (note_header->n_type == NT_GNU_BUILD_ID)
+ break;
++#endif
+ note_header = reinterpret_cast<const Nhdr*>(
+ reinterpret_cast<const char*>(note_header) + sizeof(Nhdr) +
+ bits::Align(note_header->n_namesz, 4) +
diff --git a/devel/electron4/files/patch-base_debug_proc__maps__linux.cc b/devel/electron4/files/patch-base_debug_proc__maps__linux.cc
new file mode 100644
index 000000000000..146cc0a07cc0
--- /dev/null
+++ b/devel/electron4/files/patch-base_debug_proc__maps__linux.cc
@@ -0,0 +1,11 @@
+--- base/debug/proc_maps_linux.cc.orig 2019-03-15 06:25:27 UTC
++++ base/debug/proc_maps_linux.cc
+@@ -12,7 +12,7 @@
+ #include "base/strings/string_split.h"
+ #include "build/build_config.h"
+
+-#if defined(OS_LINUX) || defined(OS_ANDROID)
++#if defined(OS_LINUX) || defined(OS_BSD) || defined(OS_ANDROID)
+ #include <inttypes.h>
+ #endif
+
diff --git a/devel/electron4/files/patch-base_debug_stack__trace.h b/devel/electron4/files/patch-base_debug_stack__trace.h
new file mode 100644
index 000000000000..6caa0f79f328
--- /dev/null
+++ b/devel/electron4/files/patch-base_debug_stack__trace.h
@@ -0,0 +1,10 @@
+--- base/debug/stack_trace.h.orig 2019-03-15 06:36:56 UTC
++++ base/debug/stack_trace.h
+@@ -16,6 +16,7 @@
+ #include "build/build_config.h"
+
+ #if defined(OS_POSIX)
++#include <sys/stdint.h>
+ #include <unistd.h>
+ #endif
+
diff --git a/devel/electron4/files/patch-base_debug_stack__trace__posix.cc b/devel/electron4/files/patch-base_debug_stack__trace__posix.cc
new file mode 100644
index 000000000000..802a2f70a991
--- /dev/null
+++ b/devel/electron4/files/patch-base_debug_stack__trace__posix.cc
@@ -0,0 +1,40 @@
+--- base/debug/stack_trace_posix.cc.orig 2019-03-15 06:36:56 UTC
++++ base/debug/stack_trace_posix.cc
+@@ -35,7 +35,7 @@
+ #include <AvailabilityMacros.h>
+ #endif
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include "base/debug/proc_maps_linux.h"
+ #endif
+
+@@ -646,6 +646,11 @@ class SandboxSymbolizeHelper {
+ // for the modules that are loaded in the current process.
+ // Returns true on success.
+ bool CacheMemoryRegions() {
++#if defined(OS_BSD)
++ // TODO (rene) avoid link error, implement something?
++ NOTIMPLEMENTED();
++ return false;
++#else
+ // Reads /proc/self/maps.
+ std::string contents;
+ if (!ReadProcMaps(&contents)) {
+@@ -663,6 +668,7 @@ class SandboxSymbolizeHelper {
+
+ is_initialized_ = true;
+ return true;
++#endif
+ }
+
+ // Opens all object files and caches their file descriptors.
+@@ -800,7 +806,7 @@ StackTrace::StackTrace(size_t count) {
+ // NOTE: This code MUST be async-signal safe (it's used by in-process
+ // stack dumping signal handler). NO malloc or stdio is allowed here.
+
+-#if !defined(__UCLIBC__) && !defined(_AIX)
++#if !defined(__UCLIBC__) && !defined(_AIX) && !defined(OS_BSD)
+ count = std::min(arraysize(trace_), count);
+
+ // Though the backtrace API man page does not list any possible negative
diff --git a/devel/electron4/files/patch-base_debug_thread__heap__usage__tracker.cc b/devel/electron4/files/patch-base_debug_thread__heap__usage__tracker.cc
new file mode 100644
index 000000000000..cb6de6913b80
--- /dev/null
+++ b/devel/electron4/files/patch-base_debug_thread__heap__usage__tracker.cc
@@ -0,0 +1,15 @@
+--- base/debug/thread_heap_usage_tracker.cc.orig 2019-03-15 06:36:56 UTC
++++ base/debug/thread_heap_usage_tracker.cc
+@@ -17,10 +17,12 @@
+ #include "base/threading/thread_local_storage.h"
+ #include "build/build_config.h"
+
++#if !defined(OS_BSD)
+ #if defined(OS_MACOSX) || defined(OS_IOS)
+ #include <malloc/malloc.h>
+ #else
+ #include <malloc.h>
++#endif
+ #endif
+
+ namespace base {
diff --git a/devel/electron4/files/patch-base_files_file__path__unittest.cc b/devel/electron4/files/patch-base_files_file__path__unittest.cc
new file mode 100644
index 000000000000..69caeee666b7
--- /dev/null
+++ b/devel/electron4/files/patch-base_files_file__path__unittest.cc
@@ -0,0 +1,11 @@
+--- base/files/file_path_unittest.cc.orig 2019-03-15 06:36:56 UTC
++++ base/files/file_path_unittest.cc
+@@ -1136,7 +1136,7 @@ TEST_F(FilePathTest, FromUTF8Unsafe_And_AsUTF8Unsafe)
+ "\xEF\xBC\xA1\xEF\xBC\xA2\xEF\xBC\xA3.txt" },
+ };
+
+-#if !defined(SYSTEM_NATIVE_UTF8) && defined(OS_LINUX)
++#if !defined(SYSTEM_NATIVE_UTF8) && (defined(OS_LINUX) || defined(OS_BSD))
+ ScopedLocale locale("en_US.UTF-8");
+ #endif
+
diff --git a/devel/electron4/files/patch-base_files_file__path__watcher__kqueue.h b/devel/electron4/files/patch-base_files_file__path__watcher__kqueue.h
new file mode 100644
index 000000000000..ae6e9f89fd84
--- /dev/null
+++ b/devel/electron4/files/patch-base_files_file__path__watcher__kqueue.h
@@ -0,0 +1,13 @@
+--- base/files/file_path_watcher_kqueue.h.orig 2019-03-15 06:25:27 UTC
++++ base/files/file_path_watcher_kqueue.h
+@@ -5,6 +5,10 @@
+ #ifndef BASE_FILES_FILE_PATH_WATCHER_KQUEUE_H_
+ #define BASE_FILES_FILE_PATH_WATCHER_KQUEUE_H_
+
++#ifdef __FreeBSD__
++#include <sys/stdint.h>
++#include <sys/types.h>
++#endif
+ #include <sys/event.h>
+
+ #include <memory>
diff --git a/devel/electron4/files/patch-base_files_file__path__watcher__stub.cc b/devel/electron4/files/patch-base_files_file__path__watcher__stub.cc
new file mode 100644
index 000000000000..f07d136744eb
--- /dev/null
+++ b/devel/electron4/files/patch-base_files_file__path__watcher__stub.cc
@@ -0,0 +1,51 @@
+--- base/files/file_path_watcher_stub.cc.orig 2019-03-15 06:25:27 UTC
++++ base/files/file_path_watcher_stub.cc
+@@ -1,14 +1,15 @@
+-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
++// Copyright 2014 The Chromium Authors. All rights reserved.
+ // Use of this source code is governed by a BSD-style license that can be
+ // found in the LICENSE file.
+
+-// This file exists for Unix systems which don't have the inotify headers, and
+-// thus cannot build file_watcher_inotify.cc
+
+-#include "base/files/file_path_watcher.h"
++#include <memory>
+
++#include "base/files/file_path_watcher.h"
++#include "base/files/file_path_watcher_kqueue.h"
+ #include "base/macros.h"
+ #include "base/memory/ptr_util.h"
++#include "build/build_config.h"
+
+ namespace base {
+
+@@ -22,12 +23,26 @@ class FilePathWatcherImpl : public FilePathWatcher::Pl
+ bool Watch(const FilePath& path,
+ bool recursive,
+ const FilePathWatcher::Callback& callback) override {
+- return false;
++ DCHECK(!impl_.get());
++ if (recursive) {
++ if (!FilePathWatcher::RecursiveWatchAvailable())
++ return false;
++ } else {
++ impl_ = std::make_unique<FilePathWatcherKQueue>();
++ }
++ DCHECK(impl_.get());
++ return impl_->Watch(path, recursive, callback);
+ }
+
+- void Cancel() override {}
++ void Cancel() override {
++ if (impl_.get())
++ impl_->Cancel();
++ set_cancelled();
++ }
+
+ private:
++ std::unique_ptr<PlatformDelegate> impl_;
++
+ DISALLOW_COPY_AND_ASSIGN(FilePathWatcherImpl);
+ };
+
diff --git a/devel/electron4/files/patch-base_files_file__path__watcher__unittest.cc b/devel/electron4/files/patch-base_files_file__path__watcher__unittest.cc
new file mode 100644
index 000000000000..a8284c603a85
--- /dev/null
+++ b/devel/electron4/files/patch-base_files_file__path__watcher__unittest.cc
@@ -0,0 +1,11 @@
+--- base/files/file_path_watcher_unittest.cc.orig 2019-03-15 06:36:56 UTC
++++ base/files/file_path_watcher_unittest.cc
+@@ -438,7 +438,7 @@ TEST_F(FilePathWatcherTest, WatchDirectory) {
+ VLOG(1) << "Waiting for file1 creation";
+ ASSERT_TRUE(WaitForEvents());
+
+-#if !defined(OS_MACOSX)
++#if !defined(OS_MACOSX) && !defined(OS_BSD)
+ // Mac implementation does not detect files modified in a directory.
+ ASSERT_TRUE(WriteFile(file1, "content v2"));
+ VLOG(1) << "Waiting for file1 modification";
diff --git a/devel/electron4/files/patch-base_files_file__util.h b/devel/electron4/files/patch-base_files_file__util.h
new file mode 100644
index 000000000000..77b900b289a8
--- /dev/null
+++ b/devel/electron4/files/patch-base_files_file__util.h
@@ -0,0 +1,11 @@
+--- base/files/file_util.h.orig 2019-03-15 06:36:56 UTC
++++ base/files/file_util.h
+@@ -445,7 +445,7 @@ BASE_EXPORT bool VerifyPathControlledByAdmin(const bas
+ // the directory |path|, in the number of FilePath::CharType, or -1 on failure.
+ BASE_EXPORT int GetMaximumPathComponentLength(const base::FilePath& path);
+
+-#if defined(OS_LINUX) || defined(OS_AIX)
++#if defined(OS_LINUX) || defined(OS_AIX) || defined(OS_BSD)
+ // Broad categories of file systems as returned by statfs() on Linux.
+ enum FileSystemType {
+ FILE_SYSTEM_UNKNOWN, // statfs failed.
diff --git a/devel/electron4/files/patch-base_files_memory__mapped__file__posix.cc b/devel/electron4/files/patch-base_files_memory__mapped__file__posix.cc
new file mode 100644
index 000000000000..50b78a85ece7
--- /dev/null
+++ b/devel/electron4/files/patch-base_files_memory__mapped__file__posix.cc
@@ -0,0 +1,11 @@
+--- base/files/memory_mapped_file_posix.cc.orig 2019-03-15 06:36:56 UTC
++++ base/files/memory_mapped_file_posix.cc
+@@ -110,6 +110,8 @@ bool MemoryMappedFile::MapFileRegionToMemory(
+ // Only Android API>=21 supports the fallocate call. Older versions need
+ // to manually extend the file by writing zeros at block intervals.
+ do_manual_extension = true;
++#elif defined(OS_BSD)
++ do_manual_extension = true;
+ #elif defined(OS_MACOSX)
+ // MacOS doesn't support fallocate even though their new APFS filesystem
+ // does support sparse files. It does, however, have the functionality
diff --git a/devel/electron4/files/patch-base_i18n_icu__util.cc b/devel/electron4/files/patch-base_i18n_icu__util.cc
new file mode 100644
index 000000000000..8182486e67e6
--- /dev/null
+++ b/devel/electron4/files/patch-base_i18n_icu__util.cc
@@ -0,0 +1,20 @@
+--- base/i18n/icu_util.cc.orig 2019-03-15 06:36:56 UTC
++++ base/i18n/icu_util.cc
+@@ -20,7 +20,7 @@
+ #include "build/build_config.h"
+ #include "third_party/icu/source/common/unicode/putil.h"
+ #include "third_party/icu/source/common/unicode/udata.h"
+-#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_ANDROID)
++#if (defined(OS_LINUX) || defined(OS_BSD) && !defined(OS_CHROMEOS)) || defined(OS_ANDROID)
+ #include "third_party/icu/source/i18n/unicode/timezone.h"
+ #endif
+
+@@ -315,7 +315,7 @@ bool InitializeICU() {
+ // TODO(jungshik): Some callers do not care about tz at all. If necessary,
+ // add a boolean argument to this function to init'd the default tz only
+ // when requested.
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ if (result)
+ std::unique_ptr<icu::TimeZone> zone(icu::TimeZone::createDefault());
+ #endif
diff --git a/devel/electron4/files/patch-base_linux__util.cc b/devel/electron4/files/patch-base_linux__util.cc
new file mode 100644
index 000000000000..5f24914ba132
--- /dev/null
+++ b/devel/electron4/files/patch-base_linux__util.cc
@@ -0,0 +1,18 @@
+--- base/linux_util.cc.orig 2019-03-15 06:36:56 UTC
++++ base/linux_util.cc
+@@ -111,12 +111,14 @@ char g_linux_distro[kDistroSize] =
+ "CrOS";
+ #elif defined(OS_ANDROID)
+ "Android";
++#elif defined(OS_BSD)
++ "BSD";
+ #else // if defined(OS_LINUX)
+ "Unknown";
+ #endif
+
+ std::string GetLinuxDistro() {
+-#if defined(OS_CHROMEOS) || defined(OS_ANDROID)
++#if defined(OS_CHROMEOS) || defined(OS_ANDROID) || defined(OS_BSD)
+ return g_linux_distro;
+ #elif defined(OS_LINUX)
+ LinuxDistroHelper* distro_state_singleton = LinuxDistroHelper::GetInstance();
diff --git a/devel/electron4/files/patch-base_logging__unittest.cc b/devel/electron4/files/patch-base_logging__unittest.cc
new file mode 100644
index 000000000000..e7361e177307
--- /dev/null
+++ b/devel/electron4/files/patch-base_logging__unittest.cc
@@ -0,0 +1,11 @@
+--- base/logging_unittest.cc.orig 2019-03-15 06:36:56 UTC
++++ base/logging_unittest.cc
+@@ -420,7 +420,7 @@ void CheckCrashTestSighandler(int, siginfo_t* info, vo
+ // need the arch-specific boilerplate below, which is inspired by breakpad.
+ // At the same time, on OSX, ucontext.h is deprecated but si_addr works fine.
+ uintptr_t crash_addr = 0;
+-#if defined(OS_MACOSX)
++#if defined(OS_MACOSX) || defined(OS_BSD)
+ crash_addr = reinterpret_cast<uintptr_t>(info->si_addr);
+ #else // OS_POSIX && !OS_MACOSX
+ ucontext_t* context = reinterpret_cast<ucontext_t*>(context_ptr);
diff --git a/devel/electron4/files/patch-base_native__library__posix.cc b/devel/electron4/files/patch-base_native__library__posix.cc
new file mode 100644
index 000000000000..97c5380af358
--- /dev/null
+++ b/devel/electron4/files/patch-base_native__library__posix.cc
@@ -0,0 +1,11 @@
+--- base/native_library_posix.cc.orig 2019-03-15 06:36:56 UTC
++++ base/native_library_posix.cc
+@@ -29,7 +29,7 @@ NativeLibrary LoadNativeLibraryWithOptions(const FileP
+ // http://crbug.com/17943, http://crbug.com/17557, http://crbug.com/36892,
+ // and http://crbug.com/40794.
+ int flags = RTLD_LAZY;
+-#if defined(OS_ANDROID) || !defined(RTLD_DEEPBIND)
++#if defined(OS_ANDROID) || !defined(RTLD_DEEPBIND) || defined(OS_BSD)
+ // Certain platforms don't define RTLD_DEEPBIND. Android dlopen() requires
+ // further investigation, as it might vary across versions. Crash here to
+ // warn developers that they're trying to rely on uncertain behavior.
diff --git a/devel/electron4/files/patch-base_native__library__unittest.cc b/devel/electron4/files/patch-base_native__library__unittest.cc
new file mode 100644
index 000000000000..6cca3ee8f911
--- /dev/null
+++ b/devel/electron4/files/patch-base_native__library__unittest.cc
@@ -0,0 +1,11 @@
+--- base/native_library_unittest.cc.orig 2019-03-15 06:25:27 UTC
++++ base/native_library_unittest.cc
+@@ -120,7 +120,7 @@ TEST(NativeLibraryTest, LoadLibrary) {
+ // Android dlopen() requires further investigation, as it might vary across
+ // versions with respect to symbol resolution scope.
+ // TSan and MSan error out on RTLD_DEEPBIND, https://crbug.com/705255
+-#if !defined(OS_ANDROID) && !defined(THREAD_SANITIZER) && \
++#if !defined(OS_ANDROID) && !defined(OS_BSD) && !defined(THREAD_SANITIZER) && \
+ !defined(MEMORY_SANITIZER)
+
+ // Verifies that the |prefer_own_symbols| option satisfies its guarantee that
diff --git a/devel/electron4/files/patch-base_posix_unix__domain__socket.cc b/devel/electron4/files/patch-base_posix_unix__domain__socket.cc
new file mode 100644
index 000000000000..68b77e9b98a7
--- /dev/null
+++ b/devel/electron4/files/patch-base_posix_unix__domain__socket.cc
@@ -0,0 +1,49 @@
+--- base/posix/unix_domain_socket.cc.orig 2019-03-15 06:25:27 UTC
++++ base/posix/unix_domain_socket.cc
+@@ -5,7 +5,10 @@
+ #include "base/posix/unix_domain_socket.h"
+
+ #include <errno.h>
++#include <sys/param.h>
+ #include <sys/socket.h>
++#include <sys/types.h>
++#include <sys/ucred.h>
+ #if !defined(OS_NACL_NONSFI)
+ #include <sys/un.h>
+ #endif
+@@ -28,6 +31,14 @@ namespace base {
+
+ const size_t UnixDomainSocket::kMaxFileDescriptors = 16;
+
++#ifndef SCM_CREDENTIALS
++# define SCM_CREDENTIALS 0x9001
++#endif
++
++#ifndef SO_PASSCRED
++# define SO_PASSCRED 0x9002
++#endif
++
+ #if !defined(OS_NACL_NONSFI)
+ bool CreateSocketPair(ScopedFD* one, ScopedFD* two) {
+ int raw_socks[2];
+@@ -150,7 +161,7 @@ ssize_t UnixDomainSocket::RecvMsgWithFlags(int fd,
+ #if !defined(OS_NACL_NONSFI) && !defined(OS_MACOSX)
+ // The PNaCl toolchain for Non-SFI binary build and macOS do not support
+ // ucred. macOS supports xucred, but this structure is insufficient.
+- + CMSG_SPACE(sizeof(struct ucred))
++ + CMSG_SPACE(sizeof(struct cmsgcred))
+ #endif // OS_NACL_NONSFI or OS_MACOSX
+ ;
+ char control_buffer[kControlBufferSize];
+@@ -180,9 +191,9 @@ ssize_t UnixDomainSocket::RecvMsgWithFlags(int fd,
+ // SCM_CREDENTIALS.
+ if (cmsg->cmsg_level == SOL_SOCKET &&
+ cmsg->cmsg_type == SCM_CREDENTIALS) {
+- DCHECK_EQ(payload_len, sizeof(struct ucred));
++ DCHECK_EQ(payload_len, sizeof(struct cmsgcred));
+ DCHECK_EQ(pid, -1);
+- pid = reinterpret_cast<struct ucred*>(CMSG_DATA(cmsg))->pid;
++ pid = getpid();
+ }
+ #endif // !defined(OS_NACL_NONSFI) && !defined(OS_MACOSX)
+ }
diff --git a/devel/electron4/files/patch-base_posix_unix__domain__socket__unittest.cc b/devel/electron4/files/patch-base_posix_unix__domain__socket__unittest.cc
new file mode 100644
index 000000000000..c5c160fb4aaa
--- /dev/null
+++ b/devel/electron4/files/patch-base_posix_unix__domain__socket__unittest.cc
@@ -0,0 +1,12 @@
+--- base/posix/unix_domain_socket_unittest.cc.orig 2019-03-15 06:25:27 UTC
++++ base/posix/unix_domain_socket_unittest.cc
+@@ -8,6 +8,9 @@
+ #include <stdint.h>
+ #include <sys/socket.h>
+ #include <sys/types.h>
++#if defined(OS_BSD)
++#include <signal.h>
++#endif
+ #include <unistd.h>
+
+ #include "base/bind.h"
diff --git a/devel/electron4/files/patch-base_process_internal__linux.cc b/devel/electron4/files/patch-base_process_internal__linux.cc
new file mode 100644
index 000000000000..6e94da56120c
--- /dev/null
+++ b/devel/electron4/files/patch-base_process_internal__linux.cc
@@ -0,0 +1,16 @@
+--- base/process/internal_linux.cc.orig 2019-03-15 06:36:56 UTC
++++ base/process/internal_linux.cc
+@@ -60,10 +60,13 @@ bool ReadProcFile(const FilePath& file, std::string* b
+ // Synchronously reading files in /proc is safe.
+ ThreadRestrictions::ScopedAllowIO allow_io;
+
++#if !defined(OS_BSD)
+ if (!ReadFileToString(file, buffer)) {
+ DLOG(WARNING) << "Failed to read " << file.MaybeAsASCII();
+ return false;
+ }
++#endif
++
+ return !buffer->empty();
+ }
+
diff --git a/devel/electron4/files/patch-base_process_internal__linux.h b/devel/electron4/files/patch-base_process_internal__linux.h
new file mode 100644
index 000000000000..ef05a5c8cceb
--- /dev/null
+++ b/devel/electron4/files/patch-base_process_internal__linux.h
@@ -0,0 +1,11 @@
+--- base/process/internal_linux.h.orig 2019-03-15 06:25:27 UTC
++++ base/process/internal_linux.h
+@@ -14,6 +14,8 @@
+
+ #include "base/files/file_path.h"
+
++#include <unistd.h> /* pid_t */
++
+ namespace base {
+
+ class Time;
diff --git a/devel/electron4/files/patch-base_process_kill.h b/devel/electron4/files/patch-base_process_kill.h
new file mode 100644
index 000000000000..8997d5f538c9
--- /dev/null
+++ b/devel/electron4/files/patch-base_process_kill.h
@@ -0,0 +1,11 @@
+--- base/process/kill.h.orig 2019-03-15 06:25:27 UTC
++++ base/process/kill.h
+@@ -111,7 +111,7 @@ BASE_EXPORT TerminationStatus GetTerminationStatus(Pro
+ BASE_EXPORT TerminationStatus GetKnownDeadTerminationStatus(
+ ProcessHandle handle, int* exit_code);
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Spawns a thread to wait asynchronously for the child |process| to exit
+ // and then reaps it.
+ BASE_EXPORT void EnsureProcessGetsReaped(Process process);
diff --git a/devel/electron4/files/patch-base_process_kill__posix.cc b/devel/electron4/files/patch-base_process_kill__posix.cc
new file mode 100644
index 000000000000..b1cdcc21fc3e
--- /dev/null
+++ b/devel/electron4/files/patch-base_process_kill__posix.cc
@@ -0,0 +1,11 @@
+--- base/process/kill_posix.cc.orig 2019-03-15 06:36:56 UTC
++++ base/process/kill_posix.cc
+@@ -167,7 +167,7 @@ void EnsureProcessTerminated(Process process) {
+ 0, new BackgroundReaper(std::move(process), TimeDelta::FromSeconds(2)));
+ }
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ void EnsureProcessGetsReaped(Process process) {
+ DCHECK(!process.is_current());
+
diff --git a/devel/electron4/files/patch-base_process_launch.cc b/devel/electron4/files/patch-base_process_launch.cc
new file mode 100644
index 000000000000..81924414c9a3
--- /dev/null
+++ b/devel/electron4/files/patch-base_process_launch.cc
@@ -0,0 +1,11 @@
+--- base/process/launch.cc.orig 2019-03-15 06:25:27 UTC
++++ base/process/launch.cc
+@@ -15,7 +15,7 @@ LaunchOptions::~LaunchOptions() = default;
+
+ LaunchOptions LaunchOptionsForTest() {
+ LaunchOptions options;
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // To prevent accidental privilege sharing to an untrusted child, processes
+ // are started with PR_SET_NO_NEW_PRIVS. Do not set that here, since this
+ // new child will be used for testing only.
diff --git a/devel/electron4/files/patch-base_process_launch.h b/devel/electron4/files/patch-base_process_launch.h
new file mode 100644
index 000000000000..af0e894b664a
--- /dev/null
+++ b/devel/electron4/files/patch-base_process_launch.h
@@ -0,0 +1,20 @@
+--- base/process/launch.h.orig 2019-03-16 09:15:20 UTC
++++ base/process/launch.h
+@@ -171,7 +171,7 @@ struct BASE_EXPORT LaunchOptions {
+ FileHandleMappingVector fds_to_remap;
+ #endif // defined(OS_WIN)
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // If non-zero, start the process using clone(), using flags as provided.
+ // Unlike in clone, clone_flags may not contain a custom termination signal
+ // that is sent to the parent when the child dies. The termination signal will
+@@ -184,7 +184,7 @@ struct BASE_EXPORT LaunchOptions {
+
+ // Sets parent process death signal to SIGKILL.
+ bool kill_on_parent_death = false;
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+
+ #if defined(OS_FUCHSIA)
+ // If valid, launches the application in that job object.
diff --git a/devel/electron4/files/patch-base_process_launch__posix.cc b/devel/electron4/files/patch-base_process_launch__posix.cc
new file mode 100644
index 000000000000..b0e4edf20c92
--- /dev/null
+++ b/devel/electron4/files/patch-base_process_launch__posix.cc
@@ -0,0 +1,10 @@
+--- base/process/launch_posix.cc.orig 2019-03-15 06:36:56 UTC
++++ base/process/launch_posix.cc
+@@ -65,6 +65,7 @@
+ #include "base/feature_list.h"
+ #else
+ extern char** environ;
++#pragma weak environ
+ #endif
+
+ namespace base {
diff --git a/devel/electron4/files/patch-base_process_memory.cc b/devel/electron4/files/patch-base_process_memory.cc
new file mode 100644
index 000000000000..5bab682d55c1
--- /dev/null
+++ b/devel/electron4/files/patch-base_process_memory.cc
@@ -0,0 +1,20 @@
+--- base/process/memory.cc.orig 2019-03-15 06:25:27 UTC
++++ base/process/memory.cc
+@@ -10,7 +10,7 @@
+ namespace base {
+
+ // Defined in memory_win.cc for Windows.
+-#if !defined(OS_WIN)
++#if !defined(OS_WIN) && !defined(OS_BSD)
+
+ namespace {
+
+@@ -31,7 +31,7 @@ void TerminateBecauseOutOfMemory(size_t size) {
+ #endif
+
+ // Defined in memory_mac.mm for Mac.
+-#if !defined(OS_MACOSX)
++#if !defined(OS_MACOSX) && !defined(OS_BSD)
+
+ bool UncheckedCalloc(size_t num_items, size_t size, void** result) {
+ const size_t alloc_size = num_items * size;
diff --git a/devel/electron4/files/patch-base_process_memory.h b/devel/electron4/files/patch-base_process_memory.h
new file mode 100644
index 000000000000..803a731c3231
--- /dev/null
+++ b/devel/electron4/files/patch-base_process_memory.h
@@ -0,0 +1,11 @@
+--- base/process/memory.h.orig 2019-03-15 06:25:27 UTC
++++ base/process/memory.h
+@@ -32,7 +32,7 @@ BASE_EXPORT void EnableTerminationOnOutOfMemory();
+ // Crash reporting classifies such crashes as OOM.
+ BASE_EXPORT void TerminateBecauseOutOfMemory(size_t size);
+
+-#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_AIX)
++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_AIX) || defined(OS_BSD)
+ BASE_EXPORT extern size_t g_oom_size;
+
+ // The maximum allowed value for the OOM score.
diff --git a/devel/electron4/files/patch-base_process_memory__unittest.cc b/devel/electron4/files/patch-base_process_memory__unittest.cc
new file mode 100644
index 000000000000..ee68a2c14619
--- /dev/null
+++ b/devel/electron4/files/patch-base_process_memory__unittest.cc
@@ -0,0 +1,18 @@
+--- base/process/memory_unittest.cc.orig 2019-03-15 06:25:27 UTC
++++ base/process/memory_unittest.cc
+@@ -104,7 +104,7 @@ TEST(MemoryTest, AllocatorShimWorking) {
+ // OpenBSD does not support these tests. Don't test these on ASan/TSan/MSan
+ // configurations: only test the real allocator.
+ // Windows only supports these tests with the allocator shim in place.
+-#if !defined(OS_OPENBSD) && BUILDFLAG(USE_ALLOCATOR_SHIM) && \
++#if !defined(OS_BSD) && BUILDFLAG(USE_ALLOCATOR_SHIM) && \
+ !defined(MEMORY_TOOL_REPLACES_ALLOCATOR)
+
+ namespace {
+@@ -529,5 +529,5 @@ TEST_F(OutOfMemoryHandledTest, UncheckedCalloc) {
+ EXPECT_FALSE(base::UncheckedCalloc(1, test_size_, &value_));
+ EXPECT_TRUE(value_ == nullptr);
+ }
+-#endif // !defined(OS_OPENBSD) && BUILDFLAG(ENABLE_WIN_ALLOCATOR_SHIM_TESTS) &&
++#endif // !defined(OS_BSD) && BUILDFLAG(ENABLE_WIN_ALLOCATOR_SHIM_TESTS) &&
+ // !defined(MEMORY_TOOL_REPLACES_ALLOCATOR)
diff --git a/devel/electron4/files/patch-base_process_process__handle.cc b/devel/electron4/files/patch-base_process_process__handle.cc
new file mode 100644
index 000000000000..03dace3a6deb
--- /dev/null
+++ b/devel/electron4/files/patch-base_process_process__handle.cc
@@ -0,0 +1,11 @@
+--- base/process/process_handle.cc.orig 2019-03-15 06:25:28 UTC
++++ base/process/process_handle.cc
+@@ -39,7 +39,7 @@ uint32_t GetUniqueIdForProcess() {
+ return g_unique_id;
+ }
+
+-#if defined(OS_LINUX) || defined(OS_AIX)
++#if defined(OS_LINUX) || defined(OS_AIX) || defined(OS_BSD)
+
+ void InitUniqueIdForProcessInPidNamespace(ProcessId pid_outside_of_namespace) {
+ g_unique_id = MangleProcessId(pid_outside_of_namespace);
diff --git a/devel/electron4/files/patch-base_process_process__handle.h b/devel/electron4/files/patch-base_process_process__handle.h
new file mode 100644
index 000000000000..48af332eace5
--- /dev/null
+++ b/devel/electron4/files/patch-base_process_process__handle.h
@@ -0,0 +1,11 @@
+--- base/process/process_handle.h.orig 2019-03-15 06:25:28 UTC
++++ base/process/process_handle.h
+@@ -64,7 +64,7 @@ BASE_EXPORT ProcessId GetCurrentProcId();
+ // a process's PID.
+ BASE_EXPORT uint32_t GetUniqueIdForProcess();
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // When a process is started in a different PID namespace from the browser
+ // process, this function must be called with the process's PID in the browser's
+ // PID namespace in order to initialize its unique ID. Not thread safe.
diff --git a/devel/electron4/files/patch-base_process_process__handle__freebsd.cc b/devel/electron4/files/patch-base_process_process__handle__freebsd.cc
new file mode 100644
index 000000000000..28fa6621f166
--- /dev/null
+++ b/devel/electron4/files/patch-base_process_process__handle__freebsd.cc
@@ -0,0 +1,17 @@
+--- base/process/process_handle_freebsd.cc.orig 2019-03-15 06:36:56 UTC
++++ base/process/process_handle_freebsd.cc
+@@ -16,10 +16,13 @@ namespace base {
+
+ ProcessId GetParentProcessId(ProcessHandle process) {
+ struct kinfo_proc info;
+- size_t length;
++ size_t length = sizeof(struct kinfo_proc);
+ int mib[] = { CTL_KERN, KERN_PROC, KERN_PROC_PID, process };
+
+ if (sysctl(mib, arraysize(mib), &info, &length, NULL, 0) < 0)
++ return -1;
++
++ if (length < sizeof(struct kinfo_proc))
+ return -1;
+
+ return info.ki_ppid;
diff --git a/devel/electron4/files/patch-base_process_process__info__linux.cc b/devel/electron4/files/patch-base_process_process__info__linux.cc
new file mode 100644
index 000000000000..c034a20bd2ea
--- /dev/null
+++ b/devel/electron4/files/patch-base_process_process__info__linux.cc
@@ -0,0 +1,39 @@
+--- base/process/process_info_linux.cc.orig 2019-03-15 06:36:56 UTC
++++ base/process/process_info_linux.cc
+@@ -11,10 +11,28 @@
+ #include "base/process/process_handle.h"
+ #include "base/time/time.h"
+
++#if defined(__FreeBSD__) || defined(__DragonFly__)
++#include <sys/types.h>
++#include <sys/sysctl.h>
++#include <sys/user.h>
++#endif
++
+ namespace base {
+
+ // static
+ const Time CurrentProcessInfo::CreationTime() {
++#if defined(__FreeBSD__) || defined(__DragonFly__)
++ int mib[] = { CTL_KERN, KERN_PROC, KERN_PROC_PID, getpid() };
++ struct kinfo_proc proc;
++ size_t len = sizeof(struct kinfo_proc);
++ if (sysctl(mib, arraysize(mib), &proc, &len, NULL, 0) < 0)
++ return Time();
++#if defined(__DragonFly__)
++ return Time::FromTimeVal(proc.kp_start);
++#else
++ return Time::FromTimeVal(proc.ki_start);
++#endif
++#else
+ int64_t start_ticks =
+ internal::ReadProcSelfStatsAndGetFieldAsInt64(internal::VM_STARTTIME);
+ if (!start_ticks)
+@@ -24,6 +42,7 @@ const Time CurrentProcessInfo::CreationTime() {
+ if (boot_time.is_null())
+ return Time();
+ return Time(boot_time + start_offset);
++#endif
+ }
+
+ } // namespace base
diff --git a/devel/electron4/files/patch-base_process_process__iterator__freebsd.cc b/devel/electron4/files/patch-base_process_process__iterator__freebsd.cc
new file mode 100644
index 000000000000..4c973defafc1
--- /dev/null
+++ b/devel/electron4/files/patch-base_process_process__iterator__freebsd.cc
@@ -0,0 +1,45 @@
+--- base/process/process_iterator_freebsd.cc.orig 2019-03-15 06:36:56 UTC
++++ base/process/process_iterator_freebsd.cc
+@@ -10,6 +10,10 @@
+ #include <sys/sysctl.h>
+ #include <unistd.h>
+
++/* getuid() */
++#include <unistd.h>
++#include <sys/types.h>
++
+ #include "base/logging.h"
+ #include "base/macros.h"
+ #include "base/strings/string_split.h"
+@@ -40,7 +44,7 @@ ProcessIterator::ProcessIterator(const ProcessFilter*
+ num_of_kinfo_proc += 16;
+ kinfo_procs_.resize(num_of_kinfo_proc);
+ len = num_of_kinfo_proc * sizeof(struct kinfo_proc);
+- if (sysctl(mib, arraysize(mib), &kinfo_procs_[0], &len, NULL, 0) <0) {
++ if (sysctl(mib, arraysize(mib), kinfo_procs_.data(), &len, NULL, 0) <0) {
+ // If we get a mem error, it just means we need a bigger buffer, so
+ // loop around again. Anything else is a real error and give up.
+ if (errno != ENOMEM) {
+@@ -72,19 +76,13 @@ bool ProcessIterator::CheckForNextProcess() {
+ for (; index_of_kinfo_proc_ < kinfo_procs_.size(); ++index_of_kinfo_proc_) {
+ size_t length;
+ struct kinfo_proc kinfo = kinfo_procs_[index_of_kinfo_proc_];
+- int mib[] = { CTL_KERN, KERN_PROC_ARGS, kinfo.ki_pid };
++ int mib[] = { CTL_KERN, KERN_PROC, KERN_PROC_ARGS, kinfo.ki_pid };
+
+ if ((kinfo.ki_pid > 0) && (kinfo.ki_stat == SZOMB))
+ continue;
+
+- length = 0;
+- if (sysctl(mib, arraysize(mib), NULL, &length, NULL, 0) < 0) {
+- LOG(ERROR) << "failed to figure out the buffer size for a command line";
+- continue;
+- }
+-
+- data.resize(length);
+-
++ data.resize(ARG_MAX);
++ length = ARG_MAX;
+ if (sysctl(mib, arraysize(mib), &data[0], &length, NULL, 0) < 0) {
+ LOG(ERROR) << "failed to fetch a commandline";
+ continue;
diff --git a/devel/electron4/files/patch-base_process_process__metrics.h b/devel/electron4/files/patch-base_process_process__metrics.h
new file mode 100644
index 000000000000..430018bba160
--- /dev/null
+++ b/devel/electron4/files/patch-base_process_process__metrics.h
@@ -0,0 +1,112 @@
+--- base/process/process_metrics.h.orig 2019-03-15 06:36:56 UTC
++++ base/process/process_metrics.h
+@@ -41,7 +41,7 @@ namespace base {
+ // Full declaration is in process_metrics_iocounters.h.
+ struct IoCounters;
+
+-#if defined(OS_LINUX) || defined(OS_ANDROID)
++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
+ // Minor and major page fault counts since the process creation.
+ // Both counts are process-wide, and exclude child processes.
+ //
+@@ -51,7 +51,7 @@ struct PageFaultCounts {
+ int64_t minor;
+ int64_t major;
+ };
+-#endif // defined(OS_LINUX) || defined(OS_ANDROID)
++#endif // defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
+
+ // Convert a POSIX timeval to microseconds.
+ BASE_EXPORT int64_t TimeValToMicroseconds(const struct timeval& tv);
+@@ -177,7 +177,7 @@ class BASE_EXPORT ProcessMetrics {
+ // otherwise.
+ bool GetIOCounters(IoCounters* io_counters) const;
+
+-#if defined(OS_LINUX) || defined(OS_AIX) || defined(OS_ANDROID)
++#if defined(OS_LINUX) || defined(OS_AIX) || defined(OS_ANDROID) || defined(OS_BSD)
+ // Returns the number of file descriptors currently open by the process, or
+ // -1 on error.
+ int GetOpenFdCount() const;
+@@ -185,16 +185,16 @@ class BASE_EXPORT ProcessMetrics {
+ // Returns the soft limit of file descriptors that can be opened by the
+ // process, or -1 on error.
+ int GetOpenFdSoftLimit() const;
+-#endif // defined(OS_LINUX) || defined(OS_AIX) || defined(OS_ANDROID)
++#endif // defined(OS_LINUX) || defined(OS_AIX) || defined(OS_ANDROID) || defined(OS_BSD)
+
+-#if defined(OS_LINUX) || defined(OS_ANDROID)
++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
+ // Bytes of swap as reported by /proc/[pid]/status.
+ uint64_t GetVmSwapBytes() const;
+
+ // Minor and major page fault count as reported by /proc/[pid]/stat.
+ // Returns true for success.
+ bool GetPageFaultCounts(PageFaultCounts* counts) const;
+-#endif // defined(OS_LINUX) || defined(OS_ANDROID)
++#endif // defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
+
+ // Returns total memory usage of malloc.
+ size_t GetMallocUsage();
+@@ -206,7 +206,7 @@ class BASE_EXPORT ProcessMetrics {
+ ProcessMetrics(ProcessHandle process, PortProvider* port_provider);
+ #endif // !defined(OS_MACOSX) || defined(OS_IOS)
+
+-#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_AIX)
++#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_AIX) || defined(OS_BSD)
+ int CalculateIdleWakeupsPerSecond(uint64_t absolute_idle_wakeups);
+ #endif
+ #if defined(OS_MACOSX)
+@@ -229,7 +229,7 @@ class BASE_EXPORT ProcessMetrics {
+ TimeDelta last_cumulative_cpu_;
+ #endif
+
+-#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_AIX)
++#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_AIX) || defined(OS_BSD)
+ // Same thing for idle wakeups.
+ TimeTicks last_idle_wakeups_time_;
+ uint64_t last_absolute_idle_wakeups_;
+@@ -275,7 +275,7 @@ BASE_EXPORT void IncreaseFdLimitTo(unsigned int max_de
+ #endif // defined(OS_POSIX)
+
+ #if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || \
+- defined(OS_ANDROID) || defined(OS_AIX) || defined(OS_FUCHSIA)
++ defined(OS_ANDROID) || defined(OS_AIX) || defined(OS_FUCHSIA) || defined(OS_BSD)
+ // Data about system-wide memory consumption. Values are in KB. Available on
+ // Windows, Mac, Linux, Android and Chrome OS.
+ //
+@@ -308,7 +308,7 @@ struct BASE_EXPORT SystemMemoryInfoKB {
+ int avail_phys = 0;
+ #endif
+
+-#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_AIX)
++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_AIX) || defined(OS_BSD)
+ // This provides an estimate of available memory as described here:
+ // https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=34e431b0ae398fc54ea69ff85ec700722c9da773
+ // NOTE: this is ONLY valid in kernels 3.14 and up. Its value will always
+@@ -323,7 +323,7 @@ struct BASE_EXPORT SystemMemoryInfoKB {
+ #endif
+
+ #if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_AIX) || \
+- defined(OS_FUCHSIA)
++ defined(OS_FUCHSIA) || defined(OS_BSD)
+ int buffers = 0;
+ int cached = 0;
+ int active_anon = 0;
+@@ -333,7 +333,7 @@ struct BASE_EXPORT SystemMemoryInfoKB {
+ int dirty = 0;
+ int reclaimable = 0;
+ #endif // defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_AIX) ||
+- // defined(OS_FUCHSIA)
++ // defined(OS_FUCHSIA) || defined(OS_BSD)
+
+ #if defined(OS_CHROMEOS)
+ int shmem = 0;
+@@ -361,7 +361,7 @@ BASE_EXPORT bool GetSystemMemoryInfo(SystemMemoryInfoK
+ #endif // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) ||
+ // defined(OS_ANDROID) || defined(OS_AIX) || defined(OS_FUCHSIA)
+
+-#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_AIX)
++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_AIX) || defined(OS_BSD)
+ // Parse the data found in /proc/<pid>/stat and return the sum of the
+ // CPU-related ticks. Returns -1 on parse error.
+ // Exposed for testing.
diff --git a/devel/electron4/files/patch-base_process_process__metrics__freebsd.cc b/devel/electron4/files/patch-base_process_process__metrics__freebsd.cc
new file mode 100644
index 000000000000..3894b96d08d9
--- /dev/null
+++ b/devel/electron4/files/patch-base_process_process__metrics__freebsd.cc
@@ -0,0 +1,85 @@
+--- base/process/process_metrics_freebsd.cc.orig 2019-03-15 06:25:28 UTC
++++ base/process/process_metrics_freebsd.cc
+@@ -14,11 +14,14 @@
+ #include "base/process/process_metrics_iocounters.h"
+ #include "base/stl_util.h"
+
++#include <unistd.h> /* getpagesize() */
++#include <fcntl.h> /* O_RDONLY */
++#include <kvm.h>
++
+ namespace base {
+
+ ProcessMetrics::ProcessMetrics(ProcessHandle process)
+- : process_(process),
+- last_cpu_(0) {}
++ : process_(process) {}
+
+ // static
+ std::unique_ptr<ProcessMetrics> ProcessMetrics::CreateProcessMetrics(
+@@ -67,6 +70,65 @@ size_t GetSystemCommitCharge() {
+ pagesize = getpagesize();
+
+ return mem_total - (mem_free*pagesize) - (mem_inactive*pagesize);
++}
++
++int GetNumberOfThreads(ProcessHandle process) {
++ // Taken from FreeBSD top (usr.bin/top/machine.c)
++
++ kvm_t* kd = kvm_open(NULL, "/dev/null", NULL, O_RDONLY, "kvm_open");
++ if (kd == NULL)
++ return 0;
++
++ struct kinfo_proc* pbase;
++ int nproc;
++ pbase = kvm_getprocs(kd, KERN_PROC_PID, process, &nproc);
++ if (pbase == NULL)
++ return 0;
++
++ if (kvm_close(kd) == -1)
++ return 0;
++
++ return nproc;
++}
++
++bool GetSystemMemoryInfo(SystemMemoryInfoKB *meminfo) {
++ unsigned int mem_total, mem_free, swap_total, swap_used;
++ size_t length;
++ int pagesizeKB;
++
++ pagesizeKB = getpagesize() / 1024;
++
++ length = sizeof(mem_total);
++ if (sysctlbyname("vm.stats.vm.v_page_count", &mem_total,
++ &length, NULL, 0) != 0 || length != sizeof(mem_total))
++ return false;
++
++ length = sizeof(mem_free);
++ if (sysctlbyname("vm.stats.vm.v_free_count", &mem_free, &length, NULL, 0)
++ != 0 || length != sizeof(mem_free))
++ return false;
++
++ length = sizeof(swap_total);
++ if (sysctlbyname("vm.swap_size", &swap_total, &length, NULL, 0)
++ != 0 || length != sizeof(swap_total))
++ return false;
++
++ length = sizeof(swap_used);
++ if (sysctlbyname("vm.swap_anon_use", &swap_used, &length, NULL, 0)
++ != 0 || length != sizeof(swap_used))
++ return false;
++
++ meminfo->total = mem_total * pagesizeKB;
++ meminfo->free = mem_free * pagesizeKB;
++ meminfo->swap_total = swap_total * pagesizeKB;
++ meminfo->swap_free = (swap_total - swap_used) * pagesizeKB;
++
++ return true;
++}
++
++uint64_t ProcessMetrics::GetVmSwapBytes() const {
++ NOTIMPLEMENTED();
++ return 0;
+ }
+
+ } // namespace base
diff --git a/devel/electron4/files/patch-base_process_process__metrics__posix.cc b/devel/electron4/files/patch-base_process_process__metrics__posix.cc
new file mode 100644
index 000000000000..2087bc29e98b
--- /dev/null
+++ b/devel/electron4/files/patch-base_process_process__metrics__posix.cc
@@ -0,0 +1,20 @@
+--- base/process/process_metrics_posix.cc.orig 2019-03-15 06:25:28 UTC
++++ base/process/process_metrics_posix.cc
+@@ -19,6 +19,8 @@
+
+ #if defined(OS_MACOSX)
+ #include <malloc/malloc.h>
++#elif defined(OS_FREEBSD)
++#include <stdlib.h>
+ #else
+ #include <malloc.h>
+ #endif
+@@ -107,7 +109,7 @@ size_t ProcessMetrics::GetMallocUsage() {
+ #else
+ return minfo.hblkhd + minfo.arena;
+ #endif
+-#elif defined(OS_FUCHSIA)
++#elif defined(OS_FUCHSIA) || defined(OS_BSD)
+ // TODO(fuchsia): Not currently exposed. https://crbug.com/735087.
+ return 0;
+ #endif
diff --git a/devel/electron4/files/patch-base_profiler_stack__sampling__profiler__unittest.cc b/devel/electron4/files/patch-base_profiler_stack__sampling__profiler__unittest.cc
new file mode 100644
index 000000000000..52dc41127106
--- /dev/null
+++ b/devel/electron4/files/patch-base_profiler_stack__sampling__profiler__unittest.cc
@@ -0,0 +1,11 @@
+--- base/profiler/stack_sampling_profiler_unittest.cc.orig 2019-03-15 06:36:56 UTC
++++ base/profiler/stack_sampling_profiler_unittest.cc
+@@ -39,7 +39,7 @@
+ #include <intrin.h>
+ #include <malloc.h>
+ #include <windows.h>
+-#else
++#elif !defined(OS_BSD)
+ #include <alloca.h>
+ #endif
+
diff --git a/devel/electron4/files/patch-base_security__unittest.cc b/devel/electron4/files/patch-base_security__unittest.cc
new file mode 100644
index 000000000000..61247d3901a4
--- /dev/null
+++ b/devel/electron4/files/patch-base_security__unittest.cc
@@ -0,0 +1,11 @@
+--- base/security_unittest.cc.orig 2019-03-15 06:36:56 UTC
++++ base/security_unittest.cc
+@@ -59,7 +59,7 @@ NOINLINE Type HideValueFromCompiler(volatile Type valu
+ // FAILS_ is too clunky.
+ void OverflowTestsSoftExpectTrue(bool overflow_detected) {
+ if (!overflow_detected) {
+-#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_MACOSX)
++#if defined(OS_POSIX) && !defined(OS_NACL)
+ // Sadly, on Linux, Android, and OSX we don't have a good story yet. Don't
+ // fail the test, but report.
+ printf("Platform has overflow: %s\n",
diff --git a/devel/electron4/files/patch-base_strings_safe__sprintf__unittest.cc b/devel/electron4/files/patch-base_strings_safe__sprintf__unittest.cc
new file mode 100644
index 000000000000..cb82544403c3
--- /dev/null
+++ b/devel/electron4/files/patch-base_strings_safe__sprintf__unittest.cc
@@ -0,0 +1,18 @@
+--- base/strings/safe_sprintf_unittest.cc.orig 2019-03-15 06:25:28 UTC
++++ base/strings/safe_sprintf_unittest.cc
+@@ -730,6 +730,7 @@ TEST(SafeSPrintfTest, EmbeddedNul) {
+ }
+
+ TEST(SafeSPrintfTest, EmitNULL) {
++/* Avoid compiler error: http://pastebin.com/1edWUE84
+ char buf[40];
+ #if defined(__GNUC__)
+ #pragma GCC diagnostic push
+@@ -741,6 +742,7 @@ TEST(SafeSPrintfTest, EmitNULL) {
+ EXPECT_EQ("0x0", std::string(buf));
+ EXPECT_EQ(6, SafeSPrintf(buf, "%s", NULL));
+ EXPECT_EQ("<NULL>", std::string(buf));
++*/
+ #if defined(__GCC__)
+ #pragma GCC diagnostic pop
+ #endif
diff --git a/devel/electron4/files/patch-base_sys__info__freebsd.cc b/devel/electron4/files/patch-base_sys__info__freebsd.cc
new file mode 100644
index 000000000000..0817663ccff2
--- /dev/null
+++ b/devel/electron4/files/patch-base_sys__info__freebsd.cc
@@ -0,0 +1,71 @@
+--- base/sys_info_freebsd.cc.orig 2019-03-15 06:36:56 UTC
++++ base/sys_info_freebsd.cc
+@@ -13,26 +13,58 @@
+ namespace base {
+
+ int64_t SysInfo::AmountOfPhysicalMemoryImpl() {
+- int pages, page_size;
++ int pages, page_size, r = 0;
+ size_t size = sizeof(pages);
+- sysctlbyname("vm.stats.vm.v_page_count", &pages, &size, NULL, 0);
+- sysctlbyname("vm.stats.vm.v_page_size", &page_size, &size, NULL, 0);
+- if (pages == -1 || page_size == -1) {
++ if(r == 0)
++ r = sysctlbyname("vm.stats.vm.v_page_count", &pages, &size, NULL, 0);
++ if(r == 0)
++ r =sysctlbyname("vm.stats.vm.v_page_size", &page_size, &size, NULL, 0);
++ if(r == -1) {
+ NOTREACHED();
+ return 0;
+ }
+ return static_cast<int64_t>(pages) * page_size;
+ }
+
+-// static
+-uint64_t SysInfo::MaxSharedMemorySize() {
+- size_t limit;
+- size_t size = sizeof(limit);
+- if (sysctlbyname("kern.ipc.shmmax", &limit, &size, NULL, 0) < 0) {
++int64_t SysInfo::AmountOfAvailablePhysicalMemoryImpl() {
++ int page_size, r = 0;
++ unsigned pgfree, pginact, pgcache;
++ size_t size = sizeof(page_size);
++ size_t szpg = sizeof(pgfree);
++ if(r == 0)
++ r = sysctlbyname("vm.stats.vm.v_page_size", &page_size, &size, NULL, 0);
++ if(r == 0)
++ r = sysctlbyname("vm.stats.vm.v_free_count", &pgfree, &szpg, NULL, 0);
++ if(r == 0)
++ r = sysctlbyname("vm.stats.vm.v_inactive_count", &pginact, &szpg, NULL, 0);
++ if(r == 0)
++ r = sysctlbyname("vm.stats.vm.v_cache_count", &pgcache, &szpg, NULL, 0);
++ if(r == -1) {
+ NOTREACHED();
+ return 0;
+ }
+- return static_cast<uint64_t>(limit);
++ return static_cast<int64_t>((pgfree + pginact + pgcache) * page_size);
++}
++
++// static
++std::string SysInfo::CPUModelName() {
++ int mib[] = { CTL_HW, HW_MODEL };
++ char name[256];
++ size_t size = arraysize(name);
++ if (sysctl(mib, arraysize(mib), &name, &size, NULL, 0) == 0)
++ return name;
++ return std::string();
++}
++
++int SysInfo::NumberOfProcessors() {
++ int mib[] = { CTL_HW, HW_NCPU };
++ int ncpu;
++ size_t size = sizeof(ncpu);
++ if (sysctl(mib, arraysize(mib), &ncpu, &size, NULL, 0) == -1) {
++ NOTREACHED();
++ return 1;
++ }
++ return ncpu;
+ }
+
+ } // namespace base
diff --git a/devel/electron4/files/patch-base_sys__info__posix.cc b/devel/electron4/files/patch-base_sys__info__posix.cc
new file mode 100644
index 000000000000..bd5c2dac20c2
--- /dev/null
+++ b/devel/electron4/files/patch-base_sys__info__posix.cc
@@ -0,0 +1,38 @@
+--- base/sys_info_posix.cc.orig 2019-03-15 06:36:56 UTC
++++ base/sys_info_posix.cc
+@@ -38,7 +38,7 @@
+
+ namespace {
+
+-#if !defined(OS_OPENBSD) && !defined(OS_FUCHSIA)
++#if !defined(OS_BSD) && !defined(OS_FUCHSIA)
+ int NumberOfProcessors() {
+ // sysconf returns the number of "logical" (not "physical") processors on both
+ // Mac and Linux. So we get the number of max available "logical" processors.
+@@ -65,7 +65,7 @@ int NumberOfProcessors() {
+ base::LazyInstance<
+ base::internal::LazySysInfoValue<int, NumberOfProcessors> >::Leaky
+ g_lazy_number_of_processors = LAZY_INSTANCE_INITIALIZER;
+-#endif // !defined(OS_OPENBSD) && !defined(OS_FUCHSIA)
++#endif // !defined(OS_BSD) && !defined(OS_FUCHSIA)
+
+ #if !defined(OS_FUCHSIA)
+ int64_t AmountOfVirtualMemory() {
+@@ -133,7 +133,7 @@ bool GetDiskSpaceInfo(const base::FilePath& path,
+
+ namespace base {
+
+-#if !defined(OS_OPENBSD) && !defined(OS_FUCHSIA)
++#if !defined(OS_BSD) && !defined(OS_FUCHSIA)
+ int SysInfo::NumberOfProcessors() {
+ return g_lazy_number_of_processors.Get().value();
+ }
+@@ -226,6 +226,8 @@ std::string SysInfo::OperatingSystemArchitecture() {
+ arch = "x86";
+ } else if (arch == "amd64") {
+ arch = "x86_64";
++ } else if (arch == "arm64") {
++ arch = "aarch64";
+ } else if (std::string(info.sysname) == "AIX") {
+ arch = "ppc64";
+ }
diff --git a/devel/electron4/files/patch-base_test_launcher_test__launcher.cc b/devel/electron4/files/patch-base_test_launcher_test__launcher.cc
new file mode 100644
index 000000000000..282354de80eb
--- /dev/null
+++ b/devel/electron4/files/patch-base_test_launcher_test__launcher.cc
@@ -0,0 +1,10 @@
+--- base/test/launcher/test_launcher.cc.orig 2019-03-15 06:36:56 UTC
++++ base/test/launcher/test_launcher.cc
+@@ -53,6 +53,7 @@
+ #include "testing/gtest/include/gtest/gtest.h"
+
+ #if defined(OS_POSIX)
++#include <signal.h>
+ #include <fcntl.h>
+
+ #include "base/files/file_descriptor_watcher_posix.h"
diff --git a/devel/electron4/files/patch-base_test_test__file__util__linux.cc b/devel/electron4/files/patch-base_test_test__file__util__linux.cc
new file mode 100644
index 000000000000..21affbd2bd60
--- /dev/null
+++ b/devel/electron4/files/patch-base_test_test__file__util__linux.cc
@@ -0,0 +1,13 @@
+--- base/test/test_file_util_linux.cc.orig 2019-03-15 06:25:28 UTC
++++ base/test/test_file_util_linux.cc
+@@ -51,8 +51,10 @@ bool EvictFileFromSystemCache(const FilePath& file) {
+ return false;
+ if (fdatasync(fd.get()) != 0)
+ return false;
++#if !defined(OS_BSD)
+ if (posix_fadvise(fd.get(), 0, 0, POSIX_FADV_DONTNEED) != 0)
+ return false;
++#endif
+ return true;
+ }
+
diff --git a/devel/electron4/files/patch-base_test_test__file__util__posix.cc b/devel/electron4/files/patch-base_test_test__file__util__posix.cc
new file mode 100644
index 000000000000..176b743e757b
--- /dev/null
+++ b/devel/electron4/files/patch-base_test_test__file__util__posix.cc
@@ -0,0 +1,11 @@
+--- base/test/test_file_util_posix.cc.orig 2019-03-15 06:36:56 UTC
++++ base/test/test_file_util_posix.cc
+@@ -79,7 +79,7 @@ bool DieFileDie(const FilePath& file, bool recurse) {
+ return DeleteFile(file, recurse);
+ }
+
+-#if !defined(OS_LINUX) && !defined(OS_MACOSX) && !defined(OS_ANDROID)
++#if !defined(OS_LINUX) && !defined(OS_MACOSX) && !defined(OS_ANDROID) && !defined(OS_BSD)
+ bool EvictFileFromSystemCache(const FilePath& file) {
+ // There doesn't seem to be a POSIX way to cool the disk cache.
+ NOTIMPLEMENTED();
diff --git a/devel/electron4/files/patch-base_third__party_libevent_BUILD.gn b/devel/electron4/files/patch-base_third__party_libevent_BUILD.gn
new file mode 100644
index 000000000000..b0d5b4b71fb5
--- /dev/null
+++ b/devel/electron4/files/patch-base_third__party_libevent_BUILD.gn
@@ -0,0 +1,24 @@
+--- base/third_party/libevent/BUILD.gn.orig 2019-03-15 06:25:28 UTC
++++ base/third_party/libevent/BUILD.gn
+@@ -43,13 +43,20 @@ static_library("libevent") {
+ "mac/event-config.h",
+ ]
+ include_dirs = [ "mac" ]
+- } else if (is_linux) {
++ } else if (is_linux && !is_bsd) {
+ sources += [
+ "epoll.c",
+ "linux/config.h",
+ "linux/event-config.h",
+ ]
+ include_dirs = [ "linux" ]
++ } else if (is_bsd) {
++ sources += [
++ "kqueue.c",
++ "freebsd/config.h",
++ "freebsd/event-config.h",
++ ]
++ include_dirs = [ "freebsd" ]
+ } else if (is_android) {
+ sources += [
+ "android/config.h",
diff --git a/devel/electron4/files/patch-base_threading_platform__thread.h b/devel/electron4/files/patch-base_threading_platform__thread.h
new file mode 100644
index 000000000000..255e3d75b760
--- /dev/null
+++ b/devel/electron4/files/patch-base_threading_platform__thread.h
@@ -0,0 +1,11 @@
+--- base/threading/platform_thread.h.orig 2019-03-15 06:36:56 UTC
++++ base/threading/platform_thread.h
+@@ -217,7 +217,7 @@ class BASE_EXPORT PlatformThread {
+
+ static ThreadPriority GetCurrentThreadPriority();
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Toggles a specific thread's priority at runtime. This can be used to
+ // change the priority of a thread in a different process and will fail
+ // if the calling process does not have proper permissions. The
diff --git a/devel/electron4/files/patch-base_threading_platform__thread__linux.cc b/devel/electron4/files/patch-base_threading_platform__thread__linux.cc
new file mode 100644
index 000000000000..d6c093fb556d
--- /dev/null
+++ b/devel/electron4/files/patch-base_threading_platform__thread__linux.cc
@@ -0,0 +1,21 @@
+--- base/threading/platform_thread_linux.cc.orig 2019-03-15 06:36:56 UTC
++++ base/threading/platform_thread_linux.cc
+@@ -18,7 +18,9 @@
+
+ #if !defined(OS_NACL) && !defined(OS_AIX)
+ #include <pthread.h>
++#if !defined(OS_BSD)
+ #include <sys/prctl.h>
++#endif
+ #include <sys/resource.h>
+ #include <sys/time.h>
+ #include <sys/types.h>
+@@ -128,7 +130,7 @@ bool GetCurrentThreadPriorityForPlatform(ThreadPriorit
+ void PlatformThread::SetName(const std::string& name) {
+ ThreadIdNameManager::GetInstance()->SetName(name);
+
+-#if !defined(OS_NACL) && !defined(OS_AIX)
++#if !defined(OS_NACL) && !defined(OS_AIX) && !defined(OS_BSD)
+ // On linux we can get the thread names to show up in the debugger by setting
+ // the process name for the LWP. We don't want to do this for the main
+ // thread because that would rename the process, causing tools like killall
diff --git a/devel/electron4/files/patch-base_threading_platform__thread__posix.cc b/devel/electron4/files/patch-base_threading_platform__thread__posix.cc
new file mode 100644
index 000000000000..cc1ae6a871c3
--- /dev/null
+++ b/devel/electron4/files/patch-base_threading_platform__thread__posix.cc
@@ -0,0 +1,11 @@
+--- base/threading/platform_thread_posix.cc.orig 2019-03-15 06:36:56 UTC
++++ base/threading/platform_thread_posix.cc
+@@ -61,7 +61,7 @@ void* ThreadFunc(void* params) {
+ if (!thread_params->joinable)
+ base::ThreadRestrictions::SetSingletonAllowed(false);
+
+-#if !defined(OS_NACL)
++#if !defined(OS_NACL) && !defined(OS_BSD)
+ // Threads on linux/android may inherit their priority from the thread
+ // where they were created. This explicitly sets the priority of all new
+ // threads.
diff --git a/devel/electron4/files/patch-base_threading_thread__local__storage__unittest.cc b/devel/electron4/files/patch-base_threading_thread__local__storage__unittest.cc
new file mode 100644
index 000000000000..741a4b21fae9
--- /dev/null
+++ b/devel/electron4/files/patch-base_threading_thread__local__storage__unittest.cc
@@ -0,0 +1,11 @@
+--- base/threading/thread_local_storage_unittest.cc.orig 2019-03-15 06:36:56 UTC
++++ base/threading/thread_local_storage_unittest.cc
+@@ -86,7 +86,7 @@ class ThreadLocalStorageRunner : public DelegateSimple
+ void ThreadLocalStorageCleanup(void *value) {
+ int *ptr = reinterpret_cast<int*>(value);
+ // Destructors should never be called with a NULL.
+- ASSERT_NE(reinterpret_cast<int*>(NULL), ptr);
++ ASSERT_NE(static_cast<int*>(NULL), ptr);
+ if (*ptr == kFinalTlsValue)
+ return; // We've been called enough times.
+ ASSERT_LT(kFinalTlsValue, *ptr);
diff --git a/devel/electron4/files/patch-base_threading_thread__task__runner__handle.cc b/devel/electron4/files/patch-base_threading_thread__task__runner__handle.cc
new file mode 100644
index 000000000000..3b2e4911f2cb
--- /dev/null
+++ b/devel/electron4/files/patch-base_threading_thread__task__runner__handle.cc
@@ -0,0 +1,26 @@
+--- base/threading/thread_task_runner_handle.cc.orig 2019-03-15 06:36:56 UTC
++++ base/threading/thread_task_runner_handle.cc
+@@ -7,6 +7,7 @@
+ #include <utility>
+
+ #include "base/bind.h"
++#include "base/callback_helpers.h"
+ #include "base/lazy_instance.h"
+ #include "base/logging.h"
+ #include "base/memory/ptr_util.h"
+@@ -37,6 +38,7 @@ bool ThreadTaskRunnerHandle::IsSet() {
+ return !!thread_task_runner_tls.Pointer()->Get();
+ }
+
++#if defined(OS_BSD)
+ // static
+ ScopedClosureRunner ThreadTaskRunnerHandle::OverrideForTesting(
+ scoped_refptr<SingleThreadTaskRunner> overriding_task_runner) {
+@@ -86,6 +88,7 @@ ScopedClosureRunner ThreadTaskRunnerHandle::OverrideFo
+ base::Unretained(ttrh->task_runner_.get()),
+ std::move(no_running_during_override)));
+ }
++#endif
+
+ ThreadTaskRunnerHandle::ThreadTaskRunnerHandle(
+ scoped_refptr<SingleThreadTaskRunner> task_runner)
diff --git a/devel/electron4/files/patch-base_trace__event_malloc__dump__provider.cc b/devel/electron4/files/patch-base_trace__event_malloc__dump__provider.cc
new file mode 100644
index 000000000000..e172b1705c5c
--- /dev/null
+++ b/devel/electron4/files/patch-base_trace__event_malloc__dump__provider.cc
@@ -0,0 +1,21 @@
+--- base/trace_event/malloc_dump_provider.cc.orig 2019-03-15 06:36:56 UTC
++++ base/trace_event/malloc_dump_provider.cc
+@@ -17,6 +17,8 @@
+
+ #if defined(OS_MACOSX)
+ #include <malloc/malloc.h>
++#elif defined(OS_BSD)
++#include "stdlib.h"
+ #else
+ #include <malloc.h>
+ #endif
+@@ -132,6 +134,9 @@ bool MallocDumpProvider::OnMemoryDump(const MemoryDump
+ }
+ #elif defined(OS_FUCHSIA)
+ // TODO(fuchsia): Port, see https://crbug.com/706592.
++#elif defined(OS_BSD)
++ total_virtual_size = 0;
++ allocated_objects_size = 0;
+ #else
+ struct mallinfo info = mallinfo();
+ DCHECK_GE(info.arena + info.hblkhd, info.uordblks);
diff --git a/devel/electron4/files/patch-base_trace__event_process__memory__dump.cc b/devel/electron4/files/patch-base_trace__event_process__memory__dump.cc
new file mode 100644
index 000000000000..60c7ba4a90a1
--- /dev/null
+++ b/devel/electron4/files/patch-base_trace__event_process__memory__dump.cc
@@ -0,0 +1,11 @@
+--- base/trace_event/process_memory_dump.cc.orig 2019-03-15 06:36:56 UTC
++++ base/trace_event/process_memory_dump.cc
+@@ -93,7 +93,7 @@ size_t ProcessMemoryDump::CountResidentBytes(void* sta
+ #if defined(OS_WIN)
+ std::unique_ptr<PSAPI_WORKING_SET_EX_INFORMATION[]> vec(
+ new PSAPI_WORKING_SET_EX_INFORMATION[max_vec_size]);
+-#elif defined(OS_MACOSX)
++#elif defined(OS_MACOSX) || defined(OS_BSD)
+ std::unique_ptr<char[]> vec(new char[max_vec_size]);
+ #elif defined(OS_POSIX) || defined(OS_FUCHSIA)
+ std::unique_ptr<unsigned char[]> vec(new unsigned char[max_vec_size]);
diff --git a/devel/electron4/files/patch-base_trace__event_process__memory__dump.h b/devel/electron4/files/patch-base_trace__event_process__memory__dump.h
new file mode 100644
index 000000000000..9645d8c2aa5d
--- /dev/null
+++ b/devel/electron4/files/patch-base_trace__event_process__memory__dump.h
@@ -0,0 +1,11 @@
+--- base/trace_event/process_memory_dump.h.orig 2019-03-15 06:36:56 UTC
++++ base/trace_event/process_memory_dump.h
+@@ -22,7 +22,7 @@
+
+ // Define COUNT_RESIDENT_BYTES_SUPPORTED if platform supports counting of the
+ // resident memory.
+-#if !defined(OS_NACL)
++#if !defined(OS_NACL) && !defined(OS_BSD)
+ #define COUNT_RESIDENT_BYTES_SUPPORTED
+ #endif
+
diff --git a/devel/electron4/files/patch-build_config_BUILD.gn b/devel/electron4/files/patch-build_config_BUILD.gn
new file mode 100644
index 000000000000..d09e5e6561bd
--- /dev/null
+++ b/devel/electron4/files/patch-build_config_BUILD.gn
@@ -0,0 +1,30 @@
+--- build/config/BUILD.gn.orig 2019-03-15 06:36:56 UTC
++++ build/config/BUILD.gn
+@@ -167,7 +167,7 @@ config("debug") {
+ # builds, and we have to tell it to turn it off.
+ defines += [ "_HAS_ITERATOR_DEBUGGING=0" ]
+ }
+- } else if (is_linux && current_cpu == "x64" && enable_iterator_debugging) {
++ } else if ((is_linux || is_bsd) && current_cpu == "x64" && enable_iterator_debugging) {
+ # Enable libstdc++ debugging facilities to help catch problems early, see
+ # http://crbug.com/65151 .
+ # TODO(phajdan.jr): Should we enable this for all of POSIX?
+@@ -269,9 +269,7 @@ config("default_libs") {
+ ]
+ } else if (is_linux) {
+ libs = [
+- "dl",
+ "pthread",
+- "rt",
+ ]
+ }
+ }
+@@ -327,7 +325,7 @@ config("executable_config") {
+ "//build/config/ios:ios_dynamic_flags",
+ "//build/config/ios:ios_executable_flags",
+ ]
+- } else if (is_linux || is_android || current_os == "aix") {
++ } else if (is_linux || is_bsd || is_android || current_os == "aix") {
+ configs += [ "//build/config/gcc:executable_ldconfig" ]
+ if (is_android) {
+ configs += [ "//build/config/android:executable_config" ]
diff --git a/devel/electron4/files/patch-build_config_BUILDCONFIG.gn b/devel/electron4/files/patch-build_config_BUILDCONFIG.gn
new file mode 100644
index 000000000000..2dd8598ea826
--- /dev/null
+++ b/devel/electron4/files/patch-build_config_BUILDCONFIG.gn
@@ -0,0 +1,119 @@
+--- build/config/BUILDCONFIG.gn.orig 2019-03-16 09:15:20 UTC
++++ build/config/BUILDCONFIG.gn
+@@ -134,10 +134,10 @@ declare_args() {
+ is_official_build = false
+
+ # Whether we're a traditional desktop unix.
+- is_desktop_linux = current_os == "linux"
++ is_desktop_linux = current_os == "linux" || current_os == "freebsd"
+
+ # Set to true when compiling with the Clang compiler.
+- is_clang = current_os != "linux" ||
++ is_clang = current_os != "linux" || current_os == "freebsd" ||
+ (current_cpu != "s390x" && current_cpu != "s390" &&
+ current_cpu != "ppc64" && current_cpu != "ppc" &&
+ current_cpu != "mips" && current_cpu != "mips64")
+@@ -189,8 +189,8 @@ if (host_toolchain == "") {
+ # TODO(dpranke): Add some sort of assert here that verifies that
+ # no toolchain omitted host_toolchain from its toolchain_args().
+
+- if (host_os == "linux") {
+- if (target_os != "linux") {
++ if (host_os == "linux" || host_os == "freebsd") {
++ if (target_os != "linux" || target_os != "freebsd") {
+ # TODO(dpranke) - is_clang normally applies only to the target
+ # build, and there is no way to indicate that you want to override
+ # it for both the target build *and* the host build. Do we need to
+@@ -230,7 +230,7 @@ if (target_os == "android") {
+ assert(host_os == "linux" || host_os == "mac",
+ "Android builds are only supported on Linux and Mac hosts.")
+ _default_toolchain = "//build/toolchain/android:android_clang_$target_cpu"
+-} else if (target_os == "chromeos" || target_os == "linux") {
++} else if (target_os == "chromeos" || target_os == "linux" || target_os == "freebsd") {
+ # See comments in build/toolchain/cros/BUILD.gn about board compiles.
+ if (is_clang) {
+ _default_toolchain = "//build/toolchain/linux:clang_$target_cpu"
+@@ -304,6 +304,7 @@ if (current_os == "win" || current_os == "winuwp") {
+ is_nacl = false
+ is_posix = false
+ is_win = true
++ is_bsd = false
+ } else if (current_os == "mac") {
+ is_aix = false
+ is_android = false
+@@ -315,6 +316,7 @@ if (current_os == "win" || current_os == "winuwp") {
+ is_nacl = false
+ is_posix = true
+ is_win = false
++ is_bsd = false
+ } else if (current_os == "android") {
+ is_aix = false
+ is_android = true
+@@ -326,6 +328,7 @@ if (current_os == "win" || current_os == "winuwp") {
+ is_nacl = false
+ is_posix = true
+ is_win = false
++ is_bsd = false
+ } else if (current_os == "chromeos") {
+ is_aix = false
+ is_android = false
+@@ -337,6 +340,7 @@ if (current_os == "win" || current_os == "winuwp") {
+ is_nacl = false
+ is_posix = true
+ is_win = false
++ is_bsd = false
+ } else if (current_os == "nacl") {
+ # current_os == "nacl" will be passed by the nacl toolchain definition.
+ # It is not set by default or on the command line. We treat is as a
+@@ -351,6 +355,7 @@ if (current_os == "win" || current_os == "winuwp") {
+ is_nacl = true
+ is_posix = true
+ is_win = false
++ is_bsd = false
+ } else if (current_os == "fuchsia") {
+ is_aix = false
+ is_android = false
+@@ -362,6 +367,7 @@ if (current_os == "win" || current_os == "winuwp") {
+ is_nacl = false
+ is_posix = false
+ is_win = false
++ is_bsd = false
+ } else if (current_os == "ios") {
+ is_aix = false
+ is_android = false
+@@ -373,6 +379,7 @@ if (current_os == "win" || current_os == "winuwp") {
+ is_nacl = false
+ is_posix = true
+ is_win = false
++ is_bsd = false
+ } else if (current_os == "linux") {
+ is_aix = false
+ is_android = false
+@@ -384,6 +391,7 @@ if (current_os == "win" || current_os == "winuwp") {
+ is_nacl = false
+ is_posix = true
+ is_win = false
++ is_bsd = false
+ } else if (current_os == "aix") {
+ is_aix = true
+ is_android = false
+@@ -395,6 +403,19 @@ if (current_os == "win" || current_os == "winuwp") {
+ is_nacl = false
+ is_posix = true
+ is_win = false
++ is_bsd = false
++} else if (current_os == "freebsd") {
++ is_aix = false
++ is_android = false
++ is_chromeos = false
++ is_fuchsia = false
++ is_ios = false
++ is_linux = true
++ is_mac = false
++ is_nacl = false
++ is_posix = true
++ is_win = false
++ is_bsd = true
+ }
+
+ # =============================================================================
diff --git a/devel/electron4/files/patch-build_config_allocator.gni b/devel/electron4/files/patch-build_config_allocator.gni
new file mode 100644
index 000000000000..b4c56f854e44
--- /dev/null
+++ b/devel/electron4/files/patch-build_config_allocator.gni
@@ -0,0 +1,20 @@
+--- build/config/allocator.gni.orig 2019-03-15 06:36:56 UTC
++++ build/config/allocator.gni
+@@ -6,7 +6,7 @@ import("//build/config/sanitizers/sanitizers.gni")
+
+ # Temporarily disable tcmalloc on arm64 linux to get rid of compilation errors.
+ if (is_android || is_mac || is_ios || is_asan || is_lsan || is_tsan ||
+- is_msan || is_win || is_fuchsia || (is_linux && target_cpu == "arm64")) {
++ is_msan || is_win || is_fuchsia || (is_linux && target_cpu == "arm64") || is_bsd) {
+ _default_allocator = "none"
+ } else {
+ _default_allocator = "tcmalloc"
+@@ -17,7 +17,7 @@ if (is_android || is_mac || is_ios || is_asan || is_ls
+ # against the debug CRT with "is_nacl=false".
+ if ((is_linux || is_android || is_mac ||
+ (is_win && !is_component_build && !is_debug)) && !is_asan && !is_lsan &&
+- !is_tsan && !is_msan) {
++ !is_tsan && !is_msan && !is_bsd) {
+ _default_use_allocator_shim = true
+ } else {
+ _default_use_allocator_shim = false
diff --git a/devel/electron4/files/patch-build_config_compiler_BUILD.gn b/devel/electron4/files/patch-build_config_compiler_BUILD.gn
new file mode 100644
index 000000000000..505659656f2e
--- /dev/null
+++ b/devel/electron4/files/patch-build_config_compiler_BUILD.gn
@@ -0,0 +1,89 @@
+--- build/config/compiler/BUILD.gn.orig 2019-03-16 09:15:20 UTC
++++ build/config/compiler/BUILD.gn
+@@ -52,7 +52,7 @@ declare_args() {
+ # only two architectures that are currently checked in). Turn this off when
+ # you are using a custom toolchain and need to control -B in cflags.
+ linux_use_bundled_binutils =
+- linux_use_bundled_binutils_override && is_linux &&
++ linux_use_bundled_binutils_override && (is_linux && !is_bsd) &&
+ (current_cpu == "x64" || current_cpu == "x86")
+ binutils_path = rebase_path("//third_party/binutils/Linux_x64/Release/bin",
+ root_build_dir)
+@@ -263,7 +263,7 @@ config("compiler") {
+ # Linker warnings.
+ if (fatal_linker_warnings && !(is_chromeos && current_cpu == "arm") &&
+ !(is_android && use_order_profiling) && !is_mac && !is_ios &&
+- current_os != "aix") {
++ current_os != "aix" && !is_bsd) {
+ # TODO(jochen): Enable this on chromeos on arm. http://crbug.com/356580
+ # TODO(lizeb,pasko): Fix link errors when linking with order_profiling=1
+ # crbug.com/485542
+@@ -380,12 +380,6 @@ config("compiler") {
+ "-Wl,-z,now",
+ "-Wl,-z,relro",
+ ]
+- if (!using_sanitizer) {
+- ldflags += [
+- "-Wl,-z,defs",
+- "-Wl,--as-needed",
+- ]
+- }
+ }
+
+ # Linux-specific compiler flags setup.
+@@ -489,7 +483,7 @@ config("compiler") {
+ }
+
+ if (is_clang && !is_nacl && current_toolchain == host_toolchain &&
+- target_os != "chromeos") {
++ target_os != "chromeos" && !is_bsd) {
+ cflags += [
+ # TODO(hans): Remove this once Clang generates better optimized debug info
+ # by default. https://crbug.com/765793
+@@ -742,7 +736,7 @@ config("compiler_cpu_abi") {
+ cflags += [ "-mtune=$arm_tune" ]
+ }
+ } else if (current_cpu == "arm64") {
+- if (is_clang && !is_android && !is_nacl && !is_fuchsia) {
++ if (is_clang && !is_android && !is_nacl && !is_fuchsia && !is_bsd) {
+ cflags += [ "--target=aarch64-linux-gnu" ]
+ ldflags += [ "--target=aarch64-linux-gnu" ]
+ }
+@@ -1477,10 +1471,6 @@ config("default_warnings") {
+ cflags += [
+ # TODO(thakis): https://crbug.com/753973
+ "-Wno-enum-compare-switch",
+-
+- # Ignore warnings about MSVC optimization pragmas.
+- # TODO(thakis): Only for no_chromium_code? http://crbug.com/505314
+- "-Wno-ignored-pragma-optimize",
+ ]
+ }
+ }
+@@ -1654,7 +1644,7 @@ config("thin_archive") {
+ # Mac and iOS use the mac-specific "libtool" command, not ar, which doesn't
+ # have a "thin archive" mode (it does accept -T, but it means truncating
+ # archive names to 16 characters, which is not what we want).
+- if ((is_posix && !is_nacl && !is_mac && !is_ios) || is_fuchsia) {
++ if ((is_posix && !is_nacl && !is_mac && !is_ios && !is_bsd) || is_fuchsia) {
+ arflags = [ "-T" ]
+ }
+ }
+@@ -2181,7 +2171,7 @@ config("symbols") {
+ # [1] crrev.com/a81d5ade0b043208e06ad71a38bcf9c348a1a52f
+ cflags += [ "-gdwarf-3" ]
+ }
+- cflags += [ "-g2" ]
++ cflags += [ "-g0" ]
+ }
+ if (use_debug_fission && !is_nacl && !is_android) {
+ # NOTE: Some Chrome OS builds globally set |use_debug_fission| to true,
+@@ -2201,7 +2191,7 @@ config("symbols") {
+ # DWARF info may be corrupt; offsets in a range list entry are in different
+ # sections" there. Maybe just a bug in nacl_switch_32.S.
+ if (!is_mac && !is_ios && !is_nacl && target_cpu != "x86" &&
+- (use_gold || use_lld)) {
++ (use_gold || use_lld) && !is_bsd) {
+ if (is_clang) {
+ # This flag enables the GNU-format pubnames and pubtypes sections,
+ # which lld needs in order to generate a correct GDB index.
diff --git a/devel/electron4/files/patch-build_config_compiler_compiler.gni b/devel/electron4/files/patch-build_config_compiler_compiler.gni
new file mode 100644
index 000000000000..63bab0381575
--- /dev/null
+++ b/devel/electron4/files/patch-build_config_compiler_compiler.gni
@@ -0,0 +1,11 @@
+--- build/config/compiler/compiler.gni.orig 2019-03-15 06:36:56 UTC
++++ build/config/compiler/compiler.gni
+@@ -172,7 +172,7 @@ declare_args() {
+
+ declare_args() {
+ # Whether to use the gold linker from binutils instead of lld or bfd.
+- use_gold = !use_lld && !(is_chromecast && is_linux &&
++ use_gold = !is_bsd && !use_lld && !(is_chromecast && is_linux &&
+ (current_cpu == "arm" || current_cpu == "mipsel")) &&
+ ((is_linux && (current_cpu == "x64" || current_cpu == "x86" ||
+ current_cpu == "arm" || current_cpu == "mipsel" ||
diff --git a/devel/electron4/files/patch-build_config_features.gni b/devel/electron4/files/patch-build_config_features.gni
new file mode 100644
index 000000000000..2e74393a4a7a
--- /dev/null
+++ b/devel/electron4/files/patch-build_config_features.gni
@@ -0,0 +1,11 @@
+--- build/config/features.gni.orig 2019-03-15 06:36:56 UTC
++++ build/config/features.gni
+@@ -46,7 +46,7 @@ declare_args() {
+ fieldtrial_testing_like_official_build = is_chrome_branded
+
+ # libudev usage. This currently only affects the content layer.
+- use_udev = is_linux && !is_chromecast
++ use_udev = is_linux && !is_chromecast && !is_bsd
+
+ use_dbus = is_linux && !is_chromecast
+
diff --git a/devel/electron4/files/patch-build_config_linux_BUILD.gn b/devel/electron4/files/patch-build_config_linux_BUILD.gn
new file mode 100644
index 000000000000..6db1b6fea181
--- /dev/null
+++ b/devel/electron4/files/patch-build_config_linux_BUILD.gn
@@ -0,0 +1,11 @@
+--- build/config/linux/BUILD.gn.orig 2019-03-15 06:25:28 UTC
++++ build/config/linux/BUILD.gn
+@@ -28,7 +28,7 @@ config("runtime_library") {
+ }
+
+ if ((!is_chromeos || default_toolchain != "//build/toolchain/cros:target") &&
+- (!use_custom_libcxx || current_cpu == "mipsel")) {
++ (!use_custom_libcxx || current_cpu == "mipsel") && !is_bsd) {
+ libs = [ "atomic" ]
+ }
+ }
diff --git a/devel/electron4/files/patch-build_config_linux_pkg-config.py b/devel/electron4/files/patch-build_config_linux_pkg-config.py
new file mode 100644
index 000000000000..e229b0490f02
--- /dev/null
+++ b/devel/electron4/files/patch-build_config_linux_pkg-config.py
@@ -0,0 +1,26 @@
+--- build/config/linux/pkg-config.py.orig 2019-03-15 06:36:56 UTC
++++ build/config/linux/pkg-config.py
+@@ -57,8 +57,12 @@ def SetConfigPath(options):
+ print "You must specify an architecture via -a if using a sysroot."
+ sys.exit(1)
+
+- libdir = sysroot + '/usr/' + options.system_libdir + '/pkgconfig'
+- libdir += ':' + sysroot + '/usr/share/pkgconfig'
++ if "linux" in sys.platform:
++ libdir = sysroot + '/libdata/' + options.system_libdir + '/pkgconfig'
++ libdir += ':' + sysroot + '/usr/share/pkgconfig'
++ elif "bsd" in sys.platform:
++ libdir = sysroot + '/libdata/pkgconfig'
++ libdir += ':' + '/usr/libdata/pkgconfig'
+ os.environ['PKG_CONFIG_LIBDIR'] = libdir
+ return libdir
+
+@@ -107,7 +111,7 @@ def main():
+ # If this is run on non-Linux platforms, just return nothing and indicate
+ # success. This allows us to "kind of emulate" a Linux build from other
+ # platforms.
+- if "linux" not in sys.platform:
++ if "bsd" not in sys.platform:
+ print "[[],[],[],[],[]]"
+ return 0
+
diff --git a/devel/electron4/files/patch-build_config_sysroot.gni b/devel/electron4/files/patch-build_config_sysroot.gni
new file mode 100644
index 000000000000..e2d5821ec120
--- /dev/null
+++ b/devel/electron4/files/patch-build_config_sysroot.gni
@@ -0,0 +1,15 @@
+--- build/config/sysroot.gni.orig 2019-03-15 06:36:56 UTC
++++ build/config/sysroot.gni
+@@ -15,9 +15,10 @@ declare_args() {
+ # The absolute path to directory containing linux sysroot images
+ target_sysroot_dir = "//build/linux"
+
+- use_sysroot = current_cpu == "x86" || current_cpu == "x64" ||
++ use_sysroot = !is_bsd && (
++ current_cpu == "x86" || current_cpu == "x64" ||
+ current_cpu == "arm" || current_cpu == "arm64" ||
+- current_cpu == "mipsel" || current_cpu == "mips64el"
++ current_cpu == "mipsel" || current_cpu == "mips64el")
+ }
+
+ if (current_os == target_os && current_cpu == target_cpu &&
diff --git a/devel/electron4/files/patch-build_gn__run__binary.py b/devel/electron4/files/patch-build_gn__run__binary.py
new file mode 100644
index 000000000000..d36affd55755
--- /dev/null
+++ b/devel/electron4/files/patch-build_gn__run__binary.py
@@ -0,0 +1,11 @@
+--- build/gn_run_binary.py.orig 2019-03-15 06:36:56 UTC
++++ build/gn_run_binary.py
+@@ -19,7 +19,7 @@ path = './' + sys.argv[1]
+ # The rest of the arguments are passed directly to the executable.
+ args = [path] + sys.argv[2:]
+
+-ret = subprocess.call(args)
++ret = subprocess.call(args, env={"CHROME_EXE_PATH":"${WRKSRC}/out/Release/chrome"})
+ if ret != 0:
+ if ret <= -100:
+ # Windows error codes such as 0xC0000005 and 0xC0000409 are much easier to
diff --git a/devel/electron4/files/patch-build_linux_chrome.map b/devel/electron4/files/patch-build_linux_chrome.map
new file mode 100644
index 000000000000..3e20c778bbd3
--- /dev/null
+++ b/devel/electron4/files/patch-build_linux_chrome.map
@@ -0,0 +1,29 @@
+--- build/linux/chrome.map.orig 2019-03-15 06:25:28 UTC
++++ build/linux/chrome.map
+@@ -1,4 +1,7 @@
+ {
++local:
++ *;
++
+ global:
+ __bss_start;
+ __data_start;
+@@ -20,6 +23,10 @@ global:
+ # Program entry point.
+ _start;
+
++ # FreeBSD specific variables.
++ __progname;
++ environ;
++
+ # Memory allocation symbols. We want chrome and any libraries to
+ # share the same heap, so it is correct to export these symbols.
+ calloc;
+@@ -81,7 +88,4 @@ global:
+ localtime64;
+ localtime64_r;
+ localtime_r;
+-
+-local:
+- *;
+ };
diff --git a/devel/electron4/files/patch-build_linux_libpci_BUILD.gn b/devel/electron4/files/patch-build_linux_libpci_BUILD.gn
new file mode 100644
index 000000000000..dcb372f6e756
--- /dev/null
+++ b/devel/electron4/files/patch-build_linux_libpci_BUILD.gn
@@ -0,0 +1,53 @@
+--- build/linux/libpci/BUILD.gn.orig 2019-03-15 06:25:28 UTC
++++ build/linux/libpci/BUILD.gn
+@@ -3,20 +3,36 @@
+ # found in the LICENSE file.
+
+ import("//tools/generate_library_loader/generate_library_loader.gni")
++import("//build/config/linux/pkg_config.gni")
+
+-# This generates a target named "libpci".
+-generate_library_loader("libpci") {
+- name = "LibPciLoader"
+- output_h = "libpci.h"
+- output_cc = "libpci_loader.cc"
+- header = "<pci/pci.h>"
++declare_args() {
++ use_system_libpci = is_bsd
++}
+
+- functions = [
+- "pci_alloc",
+- "pci_init",
+- "pci_cleanup",
+- "pci_scan_bus",
+- "pci_fill_info",
+- "pci_lookup_name",
+- ]
++if (use_system_libpci) {
++ pkg_config("system_libpci") {
++ packages = [ "libpci" ]
++ }
++
++ source_set("libpci") {
++ public_configs = [ ":system_libpci" ]
++ }
++
++} else {
++ # This generates a target named "libpci".
++ generate_library_loader("libpci") {
++ name = "LibPciLoader"
++ output_h = "libpci.h"
++ output_cc = "libpci_loader.cc"
++ header = "<pci/pci.h>"
++
++ functions = [
++ "pci_alloc",
++ "pci_init",
++ "pci_cleanup",
++ "pci_scan_bus",
++ "pci_fill_info",
++ "pci_lookup_name",
++ ]
++ }
+ }
diff --git a/devel/electron4/files/patch-build_linux_unbundle_libusb.gn b/devel/electron4/files/patch-build_linux_unbundle_libusb.gn
new file mode 100644
index 000000000000..883f60806f3b
--- /dev/null
+++ b/devel/electron4/files/patch-build_linux_unbundle_libusb.gn
@@ -0,0 +1,27 @@
+--- build/linux/unbundle/libusb.gn.orig 2019-03-16 09:16:25 UTC
++++ build/linux/unbundle/libusb.gn
+@@ -0,0 +1,24 @@
++# Copyright 2016 The Chromium Authors. All rights reserved.
++# Use of this source code is governed by a BSD-style license that can be
++# found in the LICENSE file.
++
++import("//build/config/linux/pkg_config.gni")
++import("//build/shim_headers.gni")
++
++pkg_config("system_libusb") {
++ packages = [ "libusb-1.0" ]
++}
++
++shim_headers("libusb_shim") {
++ root_path = "src/libusb"
++ headers = [
++ "libusb.h",
++ ]
++}
++
++source_set("libusb") {
++ deps = [
++ ":libusb_shim",
++ ]
++ public_configs = [ ":system_libusb" ]
++}
diff --git a/devel/electron4/files/patch-build_linux_unbundle_replace__gn__files.py b/devel/electron4/files/patch-build_linux_unbundle_replace__gn__files.py
new file mode 100644
index 000000000000..241ee6cbe685
--- /dev/null
+++ b/devel/electron4/files/patch-build_linux_unbundle_replace__gn__files.py
@@ -0,0 +1,10 @@
+--- build/linux/unbundle/replace_gn_files.py.orig 2019-03-15 06:25:28 UTC
++++ build/linux/unbundle/replace_gn_files.py
+@@ -27,6 +27,7 @@ REPLACEMENTS = {
+ 'libevent': 'base/third_party/libevent/BUILD.gn',
+ 'libjpeg': 'third_party/libjpeg.gni',
+ 'libpng': 'third_party/libpng/BUILD.gn',
++ 'libusb': 'third_party/libusb/BUILD.gn',
+ 'libvpx': 'third_party/libvpx/BUILD.gn',
+ 'libwebp': 'third_party/libwebp/BUILD.gn',
+ 'libxml': 'third_party/libxml/BUILD.gn',
diff --git a/devel/electron4/files/patch-build_toolchain_gcc__toolchain.gni b/devel/electron4/files/patch-build_toolchain_gcc__toolchain.gni
new file mode 100644
index 000000000000..ea85201b29ad
--- /dev/null
+++ b/devel/electron4/files/patch-build_toolchain_gcc__toolchain.gni
@@ -0,0 +1,45 @@
+--- build/toolchain/gcc_toolchain.gni.orig 2019-03-15 06:36:56 UTC
++++ build/toolchain/gcc_toolchain.gni
+@@ -25,6 +25,11 @@ analyzer_wrapper =
+ rebase_path("//build/toolchain/clang_static_analyzer_wrapper.py",
+ root_build_dir) + " --mode=clang"
+
++declare_args() {
++ extra_cxxflags = ""
++ extra_ldflags = ""
++}
++
+ # This template defines a toolchain for something that works like gcc
+ # (including clang).
+ #
+@@ -604,13 +609,23 @@ template("clang_toolchain") {
+ }
+
+ gcc_toolchain(target_name) {
+- prefix = rebase_path("$clang_base_path/bin", root_build_dir)
+- cc = "$prefix/clang"
+- cxx = "$prefix/clang++"
+- ld = cxx
+- readelf = "${toolprefix}readelf"
+- ar = "${prefix}/llvm-ar"
+- nm = "${toolprefix}nm"
++ if (is_bsd) {
++ prefix = "/usr/local/bin"
++ cc = "cc"
++ cxx = "c++"
++ ld = cxx
++ readelf = "readelf"
++ ar = "${prefix}/ar"
++ nm = "${toolprefix}nm"
++ } else {
++ prefix = rebase_path("$clang_base_path/bin", root_build_dir)
++ cc = "$prefix/clang"
++ cxx = "$prefix/clang++"
++ ld = cxx
++ readelf = "${toolprefix}readelf"
++ ar = "${prefix}/llvm-ar"
++ nm = "${toolprefix}nm"
++ }
+
+ forward_variables_from(invoker,
+ [
diff --git a/devel/electron4/files/patch-build_toolchain_get__concurrent__links.py b/devel/electron4/files/patch-build_toolchain_get__concurrent__links.py
new file mode 100644
index 000000000000..9463eb0e85f0
--- /dev/null
+++ b/devel/electron4/files/patch-build_toolchain_get__concurrent__links.py
@@ -0,0 +1,17 @@
+--- build/toolchain/get_concurrent_links.py.orig 2019-03-15 06:25:28 UTC
++++ build/toolchain/get_concurrent_links.py
+@@ -46,6 +46,14 @@ def _GetTotalMemoryInBytes():
+ return int(subprocess.check_output(['sysctl', '-n', 'hw.memsize']))
+ except Exception:
+ return 0
++ elif sys.platform.startswith('freebsd'):
++ try:
++ avail_bytes = int(subprocess.check_output(['sysctl', '-n', 'hw.physmem']))
++ # With -fuse-lld it doesn't take a lot of ram, feel free to change that
++ # 1 * ... to needed amount
++ return max(1, avail_bytes / (1 * (2 ** 30))) # total / 4GB
++ except Exception:
++ return 1
+ # TODO(scottmg): Implement this for other platforms.
+ return 0
+
diff --git a/devel/electron4/files/patch-build_toolchain_linux_BUILD.gn b/devel/electron4/files/patch-build_toolchain_linux_BUILD.gn
new file mode 100644
index 000000000000..9b5fc7d5b387
--- /dev/null
+++ b/devel/electron4/files/patch-build_toolchain_linux_BUILD.gn
@@ -0,0 +1,10 @@
+--- build/toolchain/linux/BUILD.gn.orig 2019-03-15 06:36:56 UTC
++++ build/toolchain/linux/BUILD.gn
+@@ -14,7 +14,6 @@ clang_toolchain("clang_arm") {
+ }
+
+ clang_toolchain("clang_arm64") {
+- toolprefix = "aarch64-linux-gnu-"
+ toolchain_args = {
+ current_cpu = "arm64"
+ current_os = "linux"
diff --git a/devel/electron4/files/patch-cc_BUILD.gn b/devel/electron4/files/patch-cc_BUILD.gn
new file mode 100644
index 000000000000..54de06a44294
--- /dev/null
+++ b/devel/electron4/files/patch-cc_BUILD.gn
@@ -0,0 +1,11 @@
+--- cc/BUILD.gn.orig 2019-03-15 06:36:56 UTC
++++ cc/BUILD.gn
+@@ -550,7 +550,7 @@ cc_static_library("test_support") {
+ "//ui/gl:test_support",
+ "//ui/latency",
+ ]
+- if (!is_android) {
++ if (!is_android && !is_bsd) {
+ data_deps = [
+ "//third_party/mesa:osmesa",
+ ]
diff --git a/devel/electron4/files/patch-cc_layers_scrollbar__layer__impl__base.cc b/devel/electron4/files/patch-cc_layers_scrollbar__layer__impl__base.cc
new file mode 100644
index 000000000000..2fb97afbb3e2
--- /dev/null
+++ b/devel/electron4/files/patch-cc_layers_scrollbar__layer__impl__base.cc
@@ -0,0 +1,13 @@
+--- cc/layers/scrollbar_layer_impl_base.cc.orig 2019-03-15 06:36:56 UTC
++++ cc/layers/scrollbar_layer_impl_base.cc
+@@ -210,8 +210,8 @@ gfx::Rect ScrollbarLayerImplBase::ComputeThumbQuadRect
+ int thumb_offset = TrackStart();
+ if (maximum > 0) {
+ float ratio = clamped_current_pos / maximum;
+- float max_offset = track_length - thumb_length;
+- thumb_offset += static_cast<int>(ratio * max_offset);
++ float _max_offset = track_length - thumb_length;
++ thumb_offset += static_cast<int>(ratio * _max_offset);
+ }
+
+ float thumb_thickness_adjustment =
diff --git a/devel/electron4/files/patch-cc_trees_property__tree.cc b/devel/electron4/files/patch-cc_trees_property__tree.cc
new file mode 100644
index 000000000000..c96f9634f53e
--- /dev/null
+++ b/devel/electron4/files/patch-cc_trees_property__tree.cc
@@ -0,0 +1,20 @@
+--- cc/trees/property_tree.cc.orig 2019-03-15 06:36:57 UTC
++++ cc/trees/property_tree.cc
+@@ -1295,13 +1295,13 @@ gfx::ScrollOffset ScrollTree::MaxScrollOffset(int scro
+
+ gfx::Size clip_layer_bounds = container_bounds(scroll_node->id);
+
+- gfx::ScrollOffset max_offset(
++ gfx::ScrollOffset _max_offset(
+ scaled_scroll_bounds.width() - clip_layer_bounds.width(),
+ scaled_scroll_bounds.height() - clip_layer_bounds.height());
+
+- max_offset.Scale(1 / scale_factor);
+- max_offset.SetToMax(gfx::ScrollOffset());
+- return max_offset;
++ _max_offset.Scale(1 / scale_factor);
++ _max_offset.SetToMax(gfx::ScrollOffset());
++ return _max_offset;
+ }
+
+ void ScrollTree::OnScrollOffsetAnimated(ElementId id,
diff --git a/devel/electron4/files/patch-chrome_app_chrome__command__ids.h b/devel/electron4/files/patch-chrome_app_chrome__command__ids.h
new file mode 100644
index 000000000000..9ded92e3af42
--- /dev/null
+++ b/devel/electron4/files/patch-chrome_app_chrome__command__ids.h
@@ -0,0 +1,11 @@
+--- chrome/app/chrome_command_ids.h.orig 2019-03-15 06:36:59 UTC
++++ chrome/app/chrome_command_ids.h
+@@ -67,7 +67,7 @@
+ #define IDC_VISIT_DESKTOP_OF_LRU_USER_2 34049
+ #define IDC_VISIT_DESKTOP_OF_LRU_USER_3 34050
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ #define IDC_USE_SYSTEM_TITLE_BAR 34051
+ #define IDC_RESTORE_WINDOW 34052
+ #endif
diff --git a/devel/electron4/files/patch-chrome_app_chrome__main.cc b/devel/electron4/files/patch-chrome_app_chrome__main.cc
new file mode 100644
index 000000000000..f4563d1c5f78
--- /dev/null
+++ b/devel/electron4/files/patch-chrome_app_chrome__main.cc
@@ -0,0 +1,19 @@
+--- chrome/app/chrome_main.cc.orig 2019-03-15 06:36:59 UTC
++++ chrome/app/chrome_main.cc
+@@ -89,14 +89,14 @@ int ChromeMain(int argc, const char** argv) {
+ ALLOW_UNUSED_LOCAL(command_line);
+
+ // Chrome-specific process modes.
+-#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_BSD)
+ if (command_line->HasSwitch(switches::kHeadless)) {
+ #if defined(OS_MACOSX)
+ SetUpBundleOverrides();
+ #endif
+ return headless::HeadlessShellMain(params);
+ }
+-#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN)
++#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_BSD)
+
+ int rv = content::ContentMain(params);
+
diff --git a/devel/electron4/files/patch-chrome_app_chrome__main__delegate.cc b/devel/electron4/files/patch-chrome_app_chrome__main__delegate.cc
new file mode 100644
index 000000000000..357c75eef4a7
--- /dev/null
+++ b/devel/electron4/files/patch-chrome_app_chrome__main__delegate.cc
@@ -0,0 +1,74 @@
+--- chrome/app/chrome_main_delegate.cc.orig 2019-03-15 06:36:59 UTC
++++ chrome/app/chrome_main_delegate.cc
+@@ -98,7 +98,7 @@
+ #include "chrome/app/shutdown_signal_handlers_posix.h"
+ #endif
+
+-#if BUILDFLAG(ENABLE_NACL) && defined(OS_LINUX)
++#if BUILDFLAG(ENABLE_NACL) && defined(OS_LINUX) && !defined(OS_BSD)
+ #include "components/nacl/common/nacl_paths.h"
+ #include "components/nacl/zygote/nacl_fork_delegate_linux.h"
+ #endif
+@@ -133,7 +133,7 @@
+ #include "v8/include/v8.h"
+ #endif
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include "base/environment.h"
+ #endif
+
+@@ -233,7 +233,7 @@ bool UseHooks() {
+
+ #endif // defined(OS_WIN)
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) && !defined(OS_BSD)
+ void AdjustLinuxOOMScore(const std::string& process_type) {
+ // Browsers and zygotes should still be killable, but killed last.
+ const int kZygoteScore = 0;
+@@ -401,7 +401,7 @@ void InitializeUserDataDir(base::CommandLine* command_
+ std::string process_type =
+ command_line->GetSwitchValueASCII(switches::kProcessType);
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // On Linux, Chrome does not support running multiple copies under different
+ // DISPLAYs, so the profile directory can be specified in the environment to
+ // support the virtual desktop use-case.
+@@ -574,7 +574,7 @@ bool ChromeMainDelegate::BasicStartupComplete(int* exi
+ #if defined(OS_CHROMEOS)
+ chromeos::RegisterPathProvider();
+ #endif
+-#if BUILDFLAG(ENABLE_NACL) && defined(OS_LINUX)
++#if BUILDFLAG(ENABLE_NACL) && defined(OS_LINUX) && !defined(OS_BSD)
+ nacl::RegisterPathProvider();
+ #endif
+
+@@ -885,7 +885,7 @@ void ChromeMainDelegate::PreSandboxStartup() {
+ InitializePDF();
+ #endif
+
+-#if defined(OS_POSIX) && !defined(OS_MACOSX)
++#if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_BSD)
+ // Zygote needs to call InitCrashReporter() in RunZygote().
+ if (process_type != service_manager::switches::kZygoteProcess) {
+ #if defined(OS_ANDROID)
+@@ -901,7 +901,7 @@ void ChromeMainDelegate::PreSandboxStartup() {
+ breakpad::InitCrashReporter(process_type);
+ #endif // defined(OS_ANDROID)
+ }
+-#endif // defined(OS_POSIX) && !defined(OS_MACOSX)
++#endif // defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_BSD)
+
+ // After all the platform Breakpads have been initialized, store the command
+ // line for crash reporting.
+@@ -911,7 +911,7 @@ void ChromeMainDelegate::PreSandboxStartup() {
+ void ChromeMainDelegate::SandboxInitialized(const std::string& process_type) {
+ // Note: If you are adding a new process type below, be sure to adjust the
+ // AdjustLinuxOOMScore function too.
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) && !defined(OS_BSD)
+ AdjustLinuxOOMScore(process_type);
+ #endif
+ #if defined(OS_WIN)
diff --git a/devel/electron4/files/patch-chrome_app_chromium__strings.grd b/devel/electron4/files/patch-chrome_app_chromium__strings.grd
new file mode 100644
index 000000000000..d91e57b0fea5
--- /dev/null
+++ b/devel/electron4/files/patch-chrome_app_chromium__strings.grd
@@ -0,0 +1,11 @@
+--- chrome/app/chromium_strings.grd.orig 2019-03-15 06:36:59 UTC
++++ chrome/app/chromium_strings.grd
+@@ -814,7 +814,7 @@ Signing in anyway will merge Chromium information like
+ </message>
+
+ <!-- ProcessSingleton -->
+- <if expr="is_linux or is_macosx">
++ <if expr="is_linux or is_macosx or is_posix">
+ <message name="IDS_PROFILE_IN_USE_POSIX" desc="Message shown when the browser cannot start because the profile is in use on a different host.">
+ The profile appears to be in use by another Chromium process (<ph name="PROCESS_ID">$1<ex>12345</ex></ph>) on another computer (<ph name="HOST_NAME">$2<ex>example.com</ex></ph>). Chromium has locked the profile so that it doesn't get corrupted. If you are sure no other processes are using this profile, you can unlock the profile and relaunch Chromium.
+ </message>
diff --git a/devel/electron4/files/patch-chrome_app_generated__resources.grd b/devel/electron4/files/patch-chrome_app_generated__resources.grd
new file mode 100644
index 000000000000..3b78a51859e9
--- /dev/null
+++ b/devel/electron4/files/patch-chrome_app_generated__resources.grd
@@ -0,0 +1,20 @@
+--- chrome/app/generated_resources.grd.orig 2019-03-15 06:36:59 UTC
++++ chrome/app/generated_resources.grd
+@@ -6064,7 +6064,7 @@ the Bookmarks menu.">
+ Google Pay
+ </message>
+
+- <if expr="is_linux and not chromeos">
++ <if expr="is_posix and not chromeos">
+ <message name="IDS_SHOW_WINDOW_DECORATIONS" desc="The label of a radio button in the options dialog for using the system title bar and borders.">
+ Use system title bar and borders
+ </message>
+@@ -6895,7 +6895,7 @@ Please help our engineers fix this problem. Tell us wh
+ Set as default
+ </message>
+
+- <if expr="is_linux and not chromeos">
++ <if expr="is_posix and not chromeos">
+ <message name="IDS_MINIMIZE_WINDOW_MENU" desc="The Linux browser window menu item text for minimizing the window.">
+ Minimize
+ </message>
diff --git a/devel/electron4/files/patch-chrome_app_google__chrome__strings.grd b/devel/electron4/files/patch-chrome_app_google__chrome__strings.grd
new file mode 100644
index 000000000000..50079ff00d4c
--- /dev/null
+++ b/devel/electron4/files/patch-chrome_app_google__chrome__strings.grd
@@ -0,0 +1,11 @@
+--- chrome/app/google_chrome_strings.grd.orig 2019-03-15 06:36:59 UTC
++++ chrome/app/google_chrome_strings.grd
+@@ -825,7 +825,7 @@ Signing in anyway will merge Chrome information like b
+ </message>
+
+ <!-- ProcessSingleton -->
+- <if expr="is_linux or is_macosx">
++ <if expr="is_linux or is_macosx or is_posix">
+ <message name="IDS_PROFILE_IN_USE_POSIX" desc="Message shown when the browser cannot start because the profile is in use on a different host.">
+ The profile appears to be in use by another Google Chrome process (<ph name="PROCESS_ID">$1<ex>12345</ex></ph>) on another computer (<ph name="HOST_NAME">$2<ex>example.com</ex></ph>). Chrome has locked the profile so that it doesn't get corrupted. If you are sure no other processes are using this profile, you can unlock the profile and relaunch Chrome.
+ </message>
diff --git a/devel/electron4/files/patch-chrome_app_settings__strings.grdp b/devel/electron4/files/patch-chrome_app_settings__strings.grdp
new file mode 100644
index 000000000000..c80fc4652bc8
--- /dev/null
+++ b/devel/electron4/files/patch-chrome_app_settings__strings.grdp
@@ -0,0 +1,20 @@
+--- chrome/app/settings_strings.grdp.orig 2019-03-15 06:37:00 UTC
++++ chrome/app/settings_strings.grdp
+@@ -508,7 +508,7 @@
+ Themes
+ </message>
+ </if>
+- <if expr="is_linux and not chromeos">
++ <if expr="is_posix and not chromeos">
+ <message name="IDS_SETTINGS_SYSTEM_THEME" desc="Text of the label describing the system (GTK+) browser theme on Linux">
+ GTK+
+ </message>
+@@ -522,7 +522,7 @@
+ Use Classic
+ </message>
+ </if>
+- <if expr="not is_linux or chromeos">
++ <if expr="not is_posix or chromeos">
+ <message name="IDS_SETTINGS_RESET_TO_DEFAULT_THEME" desc="Name of the control which resets the browser theme back to the default theme.">
+ Reset to default
+ </message>
diff --git a/devel/electron4/files/patch-chrome_app_shutdown__signal__handlers__posix.cc b/devel/electron4/files/patch-chrome_app_shutdown__signal__handlers__posix.cc
new file mode 100644
index 000000000000..5d876581df7f
--- /dev/null
+++ b/devel/electron4/files/patch-chrome_app_shutdown__signal__handlers__posix.cc
@@ -0,0 +1,15 @@
+--- chrome/app/shutdown_signal_handlers_posix.cc.orig 2019-03-15 06:37:00 UTC
++++ chrome/app/shutdown_signal_handlers_posix.cc
+@@ -183,7 +183,11 @@ void InstallShutdownSignalHandlers(
+ g_pipe_pid = getpid();
+ g_shutdown_pipe_read_fd = pipefd[0];
+ g_shutdown_pipe_write_fd = pipefd[1];
+-#if !defined(ADDRESS_SANITIZER) && !defined(KEEP_SHADOW_STACKS)
++#if defined(OS_BSD)
++ // PTHREAD_STACK_MIN causes chromium to crash under FreeBSD,
++ // we request the default pthread stack size by specifying 0 here.
++ const size_t kShutdownDetectorThreadStackSize = 0;
++#elif !defined(ADDRESS_SANITIZER) && !defined(KEEP_SHADOW_STACKS)
+ const size_t kShutdownDetectorThreadStackSize = PTHREAD_STACK_MIN * 2;
+ #else
+ // ASan instrumentation and -finstrument-functions (used for keeping the
diff --git a/devel/electron4/files/patch-chrome_app_theme_chrome__unscaled__resources.grd b/devel/electron4/files/patch-chrome_app_theme_chrome__unscaled__resources.grd
new file mode 100644
index 000000000000..1108956b9734
--- /dev/null
+++ b/devel/electron4/files/patch-chrome_app_theme_chrome__unscaled__resources.grd
@@ -0,0 +1,11 @@
+--- chrome/app/theme/chrome_unscaled_resources.grd.orig 2019-03-15 06:37:00 UTC
++++ chrome/app/theme/chrome_unscaled_resources.grd
+@@ -88,7 +88,7 @@
+ <include name="IDR_PROFILE_AVATAR_2X_25" file="default_200_percent/common/profile_avatar_sun_cloud.png" type="BINDATA" />
+ <include name="IDR_PROFILE_AVATAR_2X_26" file="default_200_percent/common/profile_avatar_placeholder.png" type="BINDATA" />
+ </if>
+- <if expr="is_linux and enable_app_list">
++ <if expr="is_posix and enable_app_list">
+ <!-- App Launcher icons for desktop icon. -->
+ <if expr="_google_chrome">
+ <then>
diff --git a/devel/electron4/files/patch-chrome_browser_about__flags.cc b/devel/electron4/files/patch-chrome_browser_about__flags.cc
new file mode 100644
index 000000000000..9534385a24a6
--- /dev/null
+++ b/devel/electron4/files/patch-chrome_browser_about__flags.cc
@@ -0,0 +1,72 @@
+--- chrome/browser/about_flags.cc.orig 2019-03-15 06:37:01 UTC
++++ chrome/browser/about_flags.cc
+@@ -2436,7 +2436,7 @@ const FeatureEntry kFeatureEntries[] = {
+ {"force-text-direction", flag_descriptions::kForceTextDirectionName,
+ flag_descriptions::kForceTextDirectionDescription, kOsAll,
+ MULTI_VALUE_TYPE(kForceTextDirectionChoices)},
+-#if defined(OS_WIN) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD)
+ {"enable-input-ime-api", flag_descriptions::kEnableInputImeApiName,
+ flag_descriptions::kEnableInputImeApiDescription, kOsWin | kOsLinux,
+ ENABLE_DISABLE_VALUE_TYPE(switches::kEnableInputImeAPI,
+@@ -2446,7 +2446,7 @@ const FeatureEntry kFeatureEntries[] = {
+ flag_descriptions::kWarnBeforeQuittingFlagDescription, kOsWin | kOsLinux,
+ FEATURE_VALUE_TYPE(features::kWarnBeforeQuitting)},
+ #endif // OS_CHROMEOS
+-#endif // OS_WIN || OS_LINUX
++#endif // OS_WIN || OS_LINUX || OS_BSD
+ {"enable-origin-trials", flag_descriptions::kOriginTrialsName,
+ flag_descriptions::kOriginTrialsDescription, kOsAll,
+ FEATURE_VALUE_TYPE(features::kOriginTrials)},
+@@ -3059,7 +3059,7 @@ const FeatureEntry kFeatureEntries[] = {
+ flag_descriptions::kLeftToRightUrlsDescription, kOsDesktop,
+ FEATURE_VALUE_TYPE(features::kLeftToRightUrls)},
+
+-#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_BSD)
+ {"omnibox-new-answer-layout",
+ flag_descriptions::kOmniboxNewAnswerLayoutName,
+ flag_descriptions::kOmniboxNewAnswerLayoutDescription, kOsDesktop,
+@@ -3081,7 +3081,7 @@ const FeatureEntry kFeatureEntries[] = {
+ {"enable-new-app-menu-icon", flag_descriptions::kEnableNewAppMenuIconName,
+ flag_descriptions::kEnableNewAppMenuIconDescription, kOsDesktop,
+ FEATURE_VALUE_TYPE(features::kAnimatedAppMenuIcon)},
+-#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN)
++#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_BSD)
+
+ #if defined(OS_ANDROID)
+ {"enable-custom-feedback-ui",
+@@ -3415,13 +3415,13 @@ const FeatureEntry kFeatureEntries[] = {
+ flag_descriptions::kClickToOpenPDFDescription, kOsAll,
+ FEATURE_VALUE_TYPE(features::kClickToOpenPDFPlaceholder)},
+
+-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+ {"direct-manipulation-stylus",
+ flag_descriptions::kDirectManipulationStylusName,
+ flag_descriptions::kDirectManipulationStylusDescription,
+ kOsWin | kOsMac | kOsLinux,
+ FEATURE_VALUE_TYPE(features::kDirectManipulationStylus)},
+-#endif // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
++#endif // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+
+ #if !defined(OS_ANDROID)
+ {"remove-deprecared-gaia-signin-endpoint",
+@@ -3913,7 +3913,7 @@ const FeatureEntry kFeatureEntries[] = {
+ FEATURE_VALUE_TYPE(ash::features::kOverviewSwipeToClose)},
+ #endif // OS_CHROMEOS
+
+-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+ {"ntp-backgrounds", flag_descriptions::kNtpBackgroundsName,
+ flag_descriptions::kNtpBackgroundsDescription, kOsDesktop,
+ FEATURE_VALUE_TYPE(features::kNtpBackgrounds)},
+@@ -3929,7 +3929,7 @@ const FeatureEntry kFeatureEntries[] = {
+ {"ntp-ui-md", flag_descriptions::kNtpUIMdName,
+ flag_descriptions::kNtpUIMdDescription, kOsDesktop,
+ FEATURE_VALUE_TYPE(features::kNtpUIMd)},
+-#endif // OS_WIN || OS_MACOSX || OS_LINUX
++#endif // OS_WIN || OS_MACOSX || OS_LINUX || OS_BSD
+
+ #if defined(OS_ANDROID)
+ {"enable-display-cutout-api", flag_descriptions::kDisplayCutoutAPIName,
diff --git a/devel/electron4/files/patch-chrome_browser_after__startup__task__utils.cc b/devel/electron4/files/patch-chrome_browser_after__startup__task__utils.cc
new file mode 100644
index 000000000000..39d31800fc01
--- /dev/null
+++ b/devel/electron4/files/patch-chrome_browser_after__startup__task__utils.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/after_startup_task_utils.cc.orig 2019-03-15 06:37:01 UTC
++++ chrome/browser/after_startup_task_utils.cc
+@@ -105,7 +105,7 @@ void QueueTask(std::unique_ptr<AfterStartupTask> queue
+
+ void SetBrowserStartupIsComplete() {
+ DCHECK_CURRENTLY_ON(BrowserThread::UI);
+-#if defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_LINUX)
++#if defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD)
+ // CurrentProcessInfo::CreationTime() is not available on all platforms.
+ const base::Time process_creation_time =
+ base::CurrentProcessInfo::CreationTime();
diff --git a/devel/electron4/files/patch-chrome_browser_autocomplete_chrome__autocomplete__scheme__classifier.cc b/devel/electron4/files/patch-chrome_browser_autocomplete_chrome__autocomplete__scheme__classifier.cc
new file mode 100644
index 000000000000..114dd80096a2
--- /dev/null
+++ b/devel/electron4/files/patch-chrome_browser_autocomplete_chrome__autocomplete__scheme__classifier.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/autocomplete/chrome_autocomplete_scheme_classifier.cc.orig 2019-03-15 06:25:31 UTC
++++ chrome/browser/autocomplete/chrome_autocomplete_scheme_classifier.cc
+@@ -59,7 +59,7 @@ ChromeAutocompleteSchemeClassifier::GetInputTypeForSch
+ return metrics::OmniboxInputType::QUERY;
+
+ case ExternalProtocolHandler::UNKNOWN: {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Linux impl of GetApplicationNameForProtocol doesn't distinguish
+ // between URL schemes with handers and those without. This will
+ // make the default behaviour be search on Linux.
diff --git a/devel/electron4/files/patch-chrome_browser_background_background__mode__optimizer.cc b/devel/electron4/files/patch-chrome_browser_background_background__mode__optimizer.cc
new file mode 100644
index 000000000000..e1e880dcc8ce
--- /dev/null
+++ b/devel/electron4/files/patch-chrome_browser_background_background__mode__optimizer.cc
@@ -0,0 +1,15 @@
+--- chrome/browser/background/background_mode_optimizer.cc.orig 2019-03-15 06:25:31 UTC
++++ chrome/browser/background/background_mode_optimizer.cc
+@@ -30,10 +30,10 @@ std::unique_ptr<BackgroundModeOptimizer> BackgroundMod
+ switches::kKeepAliveForTest))
+ return nullptr;
+
+-#if defined(OS_WIN) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD)
+ if (base::FeatureList::IsEnabled(features::kBackgroundModeAllowRestart))
+ return base::WrapUnique(new BackgroundModeOptimizer());
+-#endif // defined(OS_WIN) || defined(OS_LINUX)
++#endif // defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD)
+
+ return nullptr;
+ }
diff --git a/devel/electron4/files/patch-chrome_browser_browser__resources.grd b/devel/electron4/files/patch-chrome_browser_browser__resources.grd
new file mode 100644
index 000000000000..43f8656579c0
--- /dev/null
+++ b/devel/electron4/files/patch-chrome_browser_browser__resources.grd
@@ -0,0 +1,11 @@
+--- chrome/browser/browser_resources.grd.orig 2019-03-15 06:37:01 UTC
++++ chrome/browser/browser_resources.grd
+@@ -643,7 +643,7 @@
+ <include name="IDR_WELCOME_WIN10_PIN_WEBP" file="resources\welcome\pin.webp" type="BINDATA" />
+ </if>
+ <include name="IDR_SSL_ERROR_ASSISTANT_PB" file="${root_gen_dir}/chrome/browser/resources/ssl/ssl_error_assistant/ssl_error_assistant.pb" use_base_dir="false" type="BINDATA" />
+- <if expr="is_android or is_linux">
++ <if expr="is_android or is_posix">
+ <include name="IDR_SANDBOX_INTERNALS_HTML" file="resources\sandbox_internals\sandbox_internals.html" flattenhtml="true" allowexternalscript="true" type="BINDATA" compress="gzip" />
+ <include name="IDR_SANDBOX_INTERNALS_JS" file="resources\sandbox_internals\sandbox_internals.js" type="BINDATA" compress="gzip" />
+ </if>
diff --git a/devel/electron4/files/patch-chrome_browser_chrome__browser__main.cc b/devel/electron4/files/patch-chrome_browser_chrome__browser__main.cc
new file mode 100644
index 000000000000..bebb15a6cc45
--- /dev/null
+++ b/devel/electron4/files/patch-chrome_browser_chrome__browser__main.cc
@@ -0,0 +1,42 @@
+--- chrome/browser/chrome_browser_main.cc.orig 2019-03-15 06:37:01 UTC
++++ chrome/browser/chrome_browser_main.cc
+@@ -216,7 +216,7 @@
+ #include "chromeos/settings/cros_settings_names.h"
+ #endif // defined(OS_CHROMEOS)
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS)
+ #include "chrome/browser/first_run/upgrade_util_linux.h"
+ #endif // defined(OS_LINUX) && !defined(OS_CHROMEOS)
+
+@@ -257,7 +257,7 @@
+ #endif // defined(OS_WIN)
+
+ #if defined(OS_WIN) || defined(OS_MACOSX) || \
+- (defined(OS_LINUX) && !defined(OS_CHROMEOS))
++ (defined(OS_LINUX) && !defined(OS_CHROMEOS) || defined(OS_BSD))
+ #include "chrome/browser/metrics/desktop_session_duration/desktop_session_duration_tracker.h"
+ #endif
+
+@@ -1287,10 +1287,10 @@ int ChromeBrowserMainParts::PreCreateThreadsImpl() {
+ }
+ #endif // !defined(OS_ANDROID) && !defined(OS_CHROMEOS)
+
+-#if defined(OS_LINUX) || defined(OS_OPENBSD)
++#if defined(OS_LINUX)
+ // Set the product channel for crash reports.
+ breakpad::SetChannelCrashKey(chrome::GetChannelName());
+-#endif // defined(OS_LINUX) || defined(OS_OPENBSD)
++#endif // defined(OS_LINUX)
+
+ #if defined(OS_MACOSX)
+ // Get the Keychain API to register for distributed notifications on the main
+@@ -1314,7 +1314,7 @@ int ChromeBrowserMainParts::PreCreateThreadsImpl() {
+ }
+
+ #if defined(OS_WIN) || defined(OS_MACOSX) || \
+- (defined(OS_LINUX) && !defined(OS_CHROMEOS))
++ (defined(OS_LINUX) && !defined(OS_CHROMEOS) || defined(OS_BSD))
+ metrics::DesktopSessionDurationTracker::Initialize();
+ #endif
+ metrics::RendererUptimeTracker::Initialize();
diff --git a/devel/electron4/files/patch-chrome_browser_chrome__browser__main__linux.cc b/devel/electron4/files/patch-chrome_browser_chrome__browser__main__linux.cc
new file mode 100644
index 000000000000..24942d687e92
--- /dev/null
+++ b/devel/electron4/files/patch-chrome_browser_chrome__browser__main__linux.cc
@@ -0,0 +1,27 @@
+--- chrome/browser/chrome_browser_main_linux.cc.orig 2019-03-15 06:37:01 UTC
++++ chrome/browser/chrome_browser_main_linux.cc
+@@ -88,12 +88,14 @@ void ChromeBrowserMainPartsLinux::PreProfileInit() {
+ void ChromeBrowserMainPartsLinux::PostProfileInit() {
+ ChromeBrowserMainPartsPosix::PostProfileInit();
+
++#if !defined(OS_BSD)
+ g_browser_process->metrics_service()->RecordBreakpadRegistration(
+ breakpad::IsCrashReporterEnabled());
++#endif
+ }
+
+ void ChromeBrowserMainPartsLinux::PostMainMessageLoopStart() {
+-#if !defined(OS_CHROMEOS)
++#if !defined(OS_CHROMEOS) && !defined(OS_BSD)
+ bluez::DBusThreadManagerLinux::Initialize();
+ bluez::BluezDBusManager::Initialize(
+ bluez::DBusThreadManagerLinux::Get()->GetSystemBus(), false);
+@@ -103,7 +105,7 @@ void ChromeBrowserMainPartsLinux::PostMainMessageLoopS
+ }
+
+ void ChromeBrowserMainPartsLinux::PostDestroyThreads() {
+-#if !defined(OS_CHROMEOS)
++#if !defined(OS_CHROMEOS) && !defined(OS_BSD)
+ bluez::BluezDBusManager::Shutdown();
+ bluez::DBusThreadManagerLinux::Shutdown();
+ #endif
diff --git a/devel/electron4/files/patch-chrome_browser_chrome__browser__main__posix.cc b/devel/electron4/files/patch-chrome_browser_chrome__browser__main__posix.cc
new file mode 100644
index 000000000000..f8af65e24a39
--- /dev/null
+++ b/devel/electron4/files/patch-chrome_browser_chrome__browser__main__posix.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/chrome_browser_main_posix.cc.orig 2019-03-15 06:37:01 UTC
++++ chrome/browser/chrome_browser_main_posix.cc
+@@ -139,7 +139,7 @@ void ChromeBrowserMainPartsPosix::PostMainMessageLoopS
+ void ChromeBrowserMainPartsPosix::ShowMissingLocaleMessageBox() {
+ #if defined(OS_CHROMEOS)
+ NOTREACHED(); // Should not ever happen on ChromeOS.
+-#elif defined(OS_MACOSX)
++#elif defined(OS_MACOSX) || defined(OS_BSD)
+ // Not called on Mac because we load the locale files differently.
+ NOTREACHED();
+ #elif defined(USE_AURA)
diff --git a/devel/electron4/files/patch-chrome_browser_chrome__content__browser__client.cc b/devel/electron4/files/patch-chrome_browser_chrome__content__browser__client.cc
new file mode 100644
index 000000000000..868ebc9e08f3
--- /dev/null
+++ b/devel/electron4/files/patch-chrome_browser_chrome__content__browser__client.cc
@@ -0,0 +1,83 @@
+--- chrome/browser/chrome_content_browser_client.cc.orig 2019-03-15 06:37:01 UTC
++++ chrome/browser/chrome_content_browser_client.cc
+@@ -334,7 +334,7 @@
+ #include "chromeos/services/secure_channel/secure_channel_service.h"
+ #include "components/user_manager/user_manager.h"
+ #include "services/service_manager/public/mojom/interface_provider_spec.mojom.h"
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ #include "chrome/browser/chrome_browser_main_linux.h"
+ #elif defined(OS_ANDROID)
+ #include "base/android/application_status_listener.h"
+@@ -373,7 +373,7 @@
+ #include "chrome/common/importer/profile_import.mojom.h"
+ #endif
+
+-#if defined(OS_LINUX) || defined(OS_WIN)
++#if defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD)
+ #include "chrome/browser/webshare/share_service_impl.h"
+ #endif
+
+@@ -387,7 +387,7 @@
+ #include "chrome/browser/ui/views/chrome_browser_main_extra_parts_views.h"
+ #endif
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS)
+ #include "chrome/browser/ui/views/chrome_browser_main_extra_parts_views_linux.h"
+ #endif
+
+@@ -1099,7 +1099,7 @@ content::BrowserMainParts* ChromeContentBrowserClient:
+ #elif defined(OS_CHROMEOS)
+ main_parts = new chromeos::ChromeBrowserMainPartsChromeos(
+ parameters, std::move(service_manifest_data_pack_));
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ main_parts = new ChromeBrowserMainPartsLinux(
+ parameters, std::move(service_manifest_data_pack_));
+ #elif defined(OS_ANDROID)
+@@ -1119,7 +1119,7 @@ content::BrowserMainParts* ChromeContentBrowserClient:
+ // Construct additional browser parts. Stages are called in the order in
+ // which they are added.
+ #if defined(TOOLKIT_VIEWS)
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) && !defined(USE_OZONE)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS) && !defined(USE_OZONE)
+ main_parts->AddParts(new ChromeBrowserMainExtraPartsViewsLinux());
+ #else
+ main_parts->AddParts(new ChromeBrowserMainExtraPartsViews());
+@@ -1886,7 +1886,7 @@ void ChromeContentBrowserClient::AppendExtraCommandLin
+ command_line->AppendSwitchASCII(switches::kMetricsClientID,
+ client_info->client_id);
+ }
+-#elif defined(OS_POSIX)
++#elif defined(OS_POSIX) && !defined(OS_BSD)
+ if (breakpad::IsCrashReporterEnabled()) {
+ std::string switch_value;
+ std::unique_ptr<metrics::ClientInfo> client_info =
+@@ -3335,7 +3335,7 @@ void ChromeContentBrowserClient::GetAdditionalFileSyst
+ }
+ }
+
+-#if defined(OS_POSIX) && !defined(OS_MACOSX)
++#if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_BSD)
+ void ChromeContentBrowserClient::GetAdditionalMappedFilesForChildProcess(
+ const base::CommandLine& command_line,
+ int child_process_id,
+@@ -4097,7 +4097,7 @@ void ChromeContentBrowserClient::InitWebContextInterfa
+ #if defined(OS_ANDROID)
+ frame_interfaces_parameterized_->AddInterface(base::Bind(
+ &ForwardToJavaWebContentsRegistry<blink::mojom::ShareService>));
+-#elif defined(OS_LINUX) || defined(OS_WIN)
++#elif defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD)
+ frame_interfaces_->AddInterface(base::Bind(&ShareServiceImpl::Create));
+ #endif
+
+@@ -4609,7 +4609,7 @@ std::unique_ptr<content::OverlayWindow>
+ ChromeContentBrowserClient::CreateWindowForPictureInPicture(
+ content::PictureInPictureWindowController* controller) {
+ #if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || \
+- defined(OS_CHROMEOS)
++ defined(OS_CHROMEOS) || defined(OS_BSD)
+ // Note: content::OverlayWindow::Create() is defined by platform-specific
+ // implementation in chrome/browser/ui/views. This layering hack, which goes
+ // through //content and ContentBrowserClient, allows us to work around the
diff --git a/devel/electron4/files/patch-chrome_browser_chrome__content__browser__client.h b/devel/electron4/files/patch-chrome_browser_chrome__content__browser__client.h
new file mode 100644
index 000000000000..0c949eeb1dd7
--- /dev/null
+++ b/devel/electron4/files/patch-chrome_browser_chrome__content__browser__client.h
@@ -0,0 +1,17 @@
+--- chrome/browser/chrome_content_browser_client.h.orig 2019-03-15 06:37:01 UTC
++++ chrome/browser/chrome_content_browser_client.h
+@@ -326,12 +326,12 @@ class ChromeContentBrowserClient : public content::Con
+ void OverridePageVisibilityState(
+ content::RenderFrameHost* render_frame_host,
+ blink::mojom::PageVisibilityState* visibility_state) override;
+-#if defined(OS_POSIX) && !defined(OS_MACOSX)
++#if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_BSD)
+ void GetAdditionalMappedFilesForChildProcess(
+ const base::CommandLine& command_line,
+ int child_process_id,
+ content::PosixFileDescriptorInfo* mappings) override;
+-#endif // defined(OS_POSIX) && !defined(OS_MACOSX)
++#endif // defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_BSD)
+ #if defined(OS_WIN)
+ bool PreSpawnRenderer(sandbox::TargetPolicy* policy) override;
+ base::string16 GetAppContainerSidForSandboxType(
diff --git a/devel/electron4/files/patch-chrome_browser_defaults.cc b/devel/electron4/files/patch-chrome_browser_defaults.cc
new file mode 100644
index 000000000000..9ea4cc448f4b
--- /dev/null
+++ b/devel/electron4/files/patch-chrome_browser_defaults.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/defaults.cc.orig 2019-03-15 06:37:02 UTC
++++ chrome/browser/defaults.cc
+@@ -44,7 +44,7 @@ const bool kSyncAutoStarts = true;
+ const bool kSyncAutoStarts = false;
+ #endif
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ const bool kScrollEventChangesTab = true;
+ #else
+ const bool kScrollEventChangesTab = false;
diff --git a/devel/electron4/files/patch-chrome_browser_devtools_devtools__eye__dropper.cc b/devel/electron4/files/patch-chrome_browser_devtools_devtools__eye__dropper.cc
new file mode 100644
index 000000000000..8e79fc5080ec
--- /dev/null
+++ b/devel/electron4/files/patch-chrome_browser_devtools_devtools__eye__dropper.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/devtools/devtools_eye_dropper.cc.orig 2019-03-15 06:37:02 UTC
++++ chrome/browser/devtools/devtools_eye_dropper.cc
+@@ -211,7 +211,7 @@ void DevToolsEyeDropper::UpdateCursor() {
+ // magnified projection only with centered hotspot.
+ // Mac Retina requires cursor to be > 120px in order to render smoothly.
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ const float kCursorSize = 63;
+ const float kDiameter = 63;
+ const float kHotspotOffset = 32;
diff --git a/devel/electron4/files/patch-chrome_browser_diagnostics_diagnostics__writer.h b/devel/electron4/files/patch-chrome_browser_diagnostics_diagnostics__writer.h
new file mode 100644
index 000000000000..2900fce0bf3c
--- /dev/null
+++ b/devel/electron4/files/patch-chrome_browser_diagnostics_diagnostics__writer.h
@@ -0,0 +1,11 @@
+--- chrome/browser/diagnostics/diagnostics_writer.h.orig 2019-03-15 06:25:32 UTC
++++ chrome/browser/diagnostics/diagnostics_writer.h
+@@ -15,6 +15,8 @@ namespace diagnostics {
+ // Console base class used internally.
+ class SimpleConsole;
+
++#undef MACHINE
++
+ class DiagnosticsWriter : public DiagnosticsModel::Observer {
+ public:
+ // The type of formatting done by this writer.
diff --git a/devel/electron4/files/patch-chrome_browser_download_chrome__download__manager__delegate.cc b/devel/electron4/files/patch-chrome_browser_download_chrome__download__manager__delegate.cc
new file mode 100644
index 000000000000..920ab89a7927
--- /dev/null
+++ b/devel/electron4/files/patch-chrome_browser_download_chrome__download__manager__delegate.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/download/chrome_download_manager_delegate.cc.orig 2019-03-15 06:37:02 UTC
++++ chrome/browser/download/chrome_download_manager_delegate.cc
+@@ -1157,7 +1157,7 @@ void ChromeDownloadManagerDelegate::OnDownloadTargetDe
+ target_info->is_filetype_handled_safely)
+ DownloadItemModel(item).SetShouldPreferOpeningInBrowser(true);
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ if (item->GetOriginalMimeType() == "application/x-x509-user-cert")
+ DownloadItemModel(item).SetShouldPreferOpeningInBrowser(true);
+ #endif
+@@ -1177,7 +1177,7 @@ void ChromeDownloadManagerDelegate::OnDownloadTargetDe
+
+ bool ChromeDownloadManagerDelegate::IsOpenInBrowserPreferreredForFile(
+ const base::FilePath& path) {
+-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ if (path.MatchesExtension(FILE_PATH_LITERAL(".pdf"))) {
+ return !download_prefs_->ShouldOpenPdfInSystemReader();
+ }
diff --git a/devel/electron4/files/patch-chrome_browser_download_download__commands.cc b/devel/electron4/files/patch-chrome_browser_download_download__commands.cc
new file mode 100644
index 000000000000..be854b235511
--- /dev/null
+++ b/devel/electron4/files/patch-chrome_browser_download_download__commands.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/download/download_commands.cc.orig 2019-03-15 06:37:02 UTC
++++ chrome/browser/download/download_commands.cc
+@@ -408,7 +408,7 @@ Browser* DownloadCommands::GetBrowser() const {
+ return browser_displayer.browser();
+ }
+
+-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+ bool DownloadCommands::IsDownloadPdf() const {
+ base::FilePath path = download_item_->GetTargetFilePath();
+ return path.MatchesExtension(FILE_PATH_LITERAL(".pdf"));
+@@ -425,7 +425,7 @@ bool DownloadCommands::CanOpenPdfInSystemViewer() cons
+ return IsDownloadPdf() &&
+ (IsAdobeReaderDefaultPDFViewer() ? is_adobe_pdf_reader_up_to_date
+ : true);
+-#elif defined(OS_MACOSX) || defined(OS_LINUX)
++#elif defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+ return IsDownloadPdf();
+ #endif
+ }
diff --git a/devel/electron4/files/patch-chrome_browser_download_download__commands.h b/devel/electron4/files/patch-chrome_browser_download_download__commands.h
new file mode 100644
index 000000000000..d0069bff9595
--- /dev/null
+++ b/devel/electron4/files/patch-chrome_browser_download_download__commands.h
@@ -0,0 +1,11 @@
+--- chrome/browser/download/download_commands.h.orig 2019-03-15 06:37:02 UTC
++++ chrome/browser/download/download_commands.h
+@@ -42,7 +42,7 @@ class DownloadCommands {
+ bool IsCommandVisible(Command command) const;
+ void ExecuteCommand(Command command);
+
+-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ bool IsDownloadPdf() const;
+ bool CanOpenPdfInSystemViewer() const;
+ #endif
diff --git a/devel/electron4/files/patch-chrome_browser_download_download__prefs.cc b/devel/electron4/files/patch-chrome_browser_download_download__prefs.cc
new file mode 100644
index 000000000000..95d004f75f9c
--- /dev/null
+++ b/devel/electron4/files/patch-chrome_browser_download_download__prefs.cc
@@ -0,0 +1,65 @@
+--- chrome/browser/download/download_prefs.cc.orig 2019-03-15 06:37:03 UTC
++++ chrome/browser/download/download_prefs.cc
+@@ -62,7 +62,7 @@ namespace {
+ // Consider downloads 'dangerous' if they go to the home directory on Linux and
+ // to the desktop on any platform.
+ bool DownloadPathIsDangerous(const base::FilePath& download_path) {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ base::FilePath home_dir = base::GetHomeDir();
+ if (download_path == home_dir) {
+ return true;
+@@ -141,7 +141,7 @@ DownloadPrefs::DownloadPrefs(Profile* profile) : profi
+ GetDefaultDownloadDirectoryForProfile()));
+ #endif // defined(OS_CHROMEOS)
+
+-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ should_open_pdf_in_system_reader_ =
+ prefs->GetBoolean(prefs::kOpenPdfDownloadInSystemReader);
+ #endif
+@@ -238,7 +238,7 @@ void DownloadPrefs::RegisterProfilePrefs(
+ default_download_path);
+ registry->RegisterFilePathPref(prefs::kSaveFileDefaultDirectory,
+ default_download_path);
+-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ registry->RegisterBooleanPref(prefs::kOpenPdfDownloadInSystemReader, false);
+ #endif
+ #if defined(OS_ANDROID)
+@@ -346,7 +346,7 @@ bool DownloadPrefs::IsDownloadPathManaged() const {
+ }
+
+ bool DownloadPrefs::IsAutoOpenUsed() const {
+-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ if (ShouldOpenPdfInSystemReader())
+ return true;
+ #endif
+@@ -360,7 +360,7 @@ bool DownloadPrefs::IsAutoOpenEnabledBasedOnExtension(
+ return false;
+ DCHECK(extension[0] == base::FilePath::kExtensionSeparator);
+ extension.erase(0, 1);
+-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ if (base::FilePath::CompareEqualIgnoreCase(extension,
+ FILE_PATH_LITERAL("pdf")) &&
+ ShouldOpenPdfInSystemReader())
+@@ -397,7 +397,7 @@ void DownloadPrefs::DisableAutoOpenBasedOnExtension(
+ SaveAutoOpenState();
+ }
+
+-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ void DownloadPrefs::SetShouldOpenPdfInSystemReader(bool should_open) {
+ if (should_open_pdf_in_system_reader_ == should_open)
+ return;
+@@ -418,7 +418,7 @@ bool DownloadPrefs::ShouldOpenPdfInSystemReader() cons
+ #endif
+
+ void DownloadPrefs::ResetAutoOpen() {
+-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ SetShouldOpenPdfInSystemReader(false);
+ #endif
+ auto_open_.clear();
diff --git a/devel/electron4/files/patch-chrome_browser_download_download__prefs.h b/devel/electron4/files/patch-chrome_browser_download_download__prefs.h
new file mode 100644
index 000000000000..5717555784b0
--- /dev/null
+++ b/devel/electron4/files/patch-chrome_browser_download_download__prefs.h
@@ -0,0 +1,20 @@
+--- chrome/browser/download/download_prefs.h.orig 2019-03-15 06:37:03 UTC
++++ chrome/browser/download/download_prefs.h
+@@ -99,7 +99,7 @@ class DownloadPrefs {
+ // Disables auto-open based on file extension.
+ void DisableAutoOpenBasedOnExtension(const base::FilePath& file_name);
+
+-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ // Store the user preference to disk. If |should_open| is true, also disable
+ // the built-in PDF plugin. If |should_open| is false, enable the PDF plugin.
+ void SetShouldOpenPdfInSystemReader(bool should_open);
+@@ -143,7 +143,7 @@ class DownloadPrefs {
+ AutoOpenCompareFunctor> AutoOpenSet;
+ AutoOpenSet auto_open_;
+
+-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ bool should_open_pdf_in_system_reader_;
+ #endif
+
diff --git a/devel/electron4/files/patch-chrome_browser_download_download__query.cc b/devel/electron4/files/patch-chrome_browser_download_download__query.cc
new file mode 100644
index 000000000000..0ad35eb0e5a7
--- /dev/null
+++ b/devel/electron4/files/patch-chrome_browser_download_download__query.cc
@@ -0,0 +1,14 @@
+--- chrome/browser/download/download_query.cc.orig 2019-03-15 06:37:03 UTC
++++ chrome/browser/download/download_query.cc
+@@ -27,7 +27,11 @@
+ #include "components/download/public/common/download_item.h"
+ #include "components/url_formatter/url_formatter.h"
+ #include "content/public/browser/content_browser_client.h"
++#if defined(OS_BSD)
++#include <re2/re2.h>
++#else
+ #include "third_party/re2/src/re2/re2.h"
++#endif
+ #include "url/gurl.h"
+
+ using download::DownloadDangerType;
diff --git a/devel/electron4/files/patch-chrome_browser_download_download__shelf__context__menu.cc b/devel/electron4/files/patch-chrome_browser_download_download__shelf__context__menu.cc
new file mode 100644
index 000000000000..211d19223467
--- /dev/null
+++ b/devel/electron4/files/patch-chrome_browser_download_download__shelf__context__menu.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/download/download_shelf_context_menu.cc.orig 2019-03-15 06:37:03 UTC
++++ chrome/browser/download/download_shelf_context_menu.cc
+@@ -131,7 +131,7 @@ base::string16 DownloadShelfContextMenu::GetLabelForCo
+ : IDS_DOWNLOAD_MENU_PLATFORM_OPEN_ALWAYS;
+ break;
+ }
+-#elif defined(OS_MACOSX) || defined(OS_LINUX)
++#elif defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+ if (can_open_pdf_in_system_viewer) {
+ id = IDS_DOWNLOAD_MENU_PLATFORM_OPEN_ALWAYS;
+ break;
diff --git a/devel/electron4/files/patch-chrome_browser_download_download__status__updater.cc b/devel/electron4/files/patch-chrome_browser_download_download__status__updater.cc
new file mode 100644
index 000000000000..c9ade82b8d78
--- /dev/null
+++ b/devel/electron4/files/patch-chrome_browser_download_download__status__updater.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/download/download_status_updater.cc.orig 2019-03-15 06:25:32 UTC
++++ chrome/browser/download/download_status_updater.cc
+@@ -13,7 +13,7 @@
+ #include "base/memory/ptr_util.h"
+ #include "build/build_config.h"
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ #include "ui/views/linux_ui/linux_ui.h"
+ #endif
+
+@@ -136,7 +136,7 @@ void DownloadStatusUpdater::OnDownloadUpdated(content:
+ #if defined(OS_ANDROID) || (defined(USE_AURA) && !defined(OS_WIN))
+ void DownloadStatusUpdater::UpdateAppIconDownloadProgress(
+ download::DownloadItem* download) {
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ const views::LinuxUI* linux_ui = views::LinuxUI::instance();
+ if (linux_ui) {
+ float progress = 0;
diff --git a/devel/electron4/files/patch-chrome_browser_extensions_BUILD.gn b/devel/electron4/files/patch-chrome_browser_extensions_BUILD.gn
new file mode 100644
index 000000000000..4309728ca481
--- /dev/null
+++ b/devel/electron4/files/patch-chrome_browser_extensions_BUILD.gn
@@ -0,0 +1,15 @@
+--- chrome/browser/extensions/BUILD.gn.orig 2019-03-15 06:37:03 UTC
++++ chrome/browser/extensions/BUILD.gn
+@@ -1133,6 +1133,12 @@ jumbo_static_library("extensions") {
+ deps += [ "//chrome/common:service_process_mojom" ]
+ }
+
++ if (is_bsd) {
++ sources -= [
++ "api/image_writer_private/removable_storage_provider_linux.cc",
++ ]
++ }
++
+ if (enable_service_discovery) {
+ sources += [
+ "api/mdns/mdns_api.cc",
diff --git a/devel/electron4/files/patch-chrome_browser_extensions_activity__log_activity__log.cc b/devel/electron4/files/patch-chrome_browser_extensions_activity__log_activity__log.cc
new file mode 100644
index 000000000000..12e99def1055
--- /dev/null
+++ b/devel/electron4/files/patch-chrome_browser_extensions_activity__log_activity__log.cc
@@ -0,0 +1,14 @@
+--- chrome/browser/extensions/activity_log/activity_log.cc.orig 2019-03-15 06:37:03 UTC
++++ chrome/browser/extensions/activity_log/activity_log.cc
+@@ -50,7 +50,11 @@
+ #include "extensions/common/extension.h"
+ #include "extensions/common/extension_messages.h"
+ #include "extensions/common/one_shot_event.h"
++#if defined(OS_BSD)
++#include <re2/re2.h>
++#else
+ #include "third_party/re2/src/re2/re2.h"
++#endif
+ #include "url/gurl.h"
+
+ namespace constants = activity_log_constants;
diff --git a/devel/electron4/files/patch-chrome_browser_extensions_api_image__writer__private_removable__storage__provider.cc b/devel/electron4/files/patch-chrome_browser_extensions_api_image__writer__private_removable__storage__provider.cc
new file mode 100644
index 000000000000..7d3c7be34433
--- /dev/null
+++ b/devel/electron4/files/patch-chrome_browser_extensions_api_image__writer__private_removable__storage__provider.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/extensions/api/image_writer_private/removable_storage_provider.cc.orig 2019-03-15 06:37:03 UTC
++++ chrome/browser/extensions/api/image_writer_private/removable_storage_provider.cc
+@@ -20,6 +20,7 @@ static base::LazyInstance<scoped_refptr<StorageDeviceL
+
+ void RemovableStorageProvider::GetAllDevices(DeviceListReadyCallback callback) {
+ DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
++#if !defined(OS_BSD)
+ if (g_test_device_list.Get().get() != nullptr) {
+ base::ThreadTaskRunnerHandle::Get()->PostTask(
+ FROM_HERE,
+@@ -33,6 +34,9 @@ void RemovableStorageProvider::GetAllDevices(DeviceLis
+ base::TaskShutdownBehavior::SKIP_ON_SHUTDOWN},
+ base::BindOnce(&RemovableStorageProvider::PopulateDeviceList),
+ std::move(callback));
++#else
++ NOTIMPLEMENTED();
++#endif
+ }
+
+ // static
diff --git a/devel/electron4/files/patch-chrome_browser_extensions_api_input__ime_input__ime__api.h b/devel/electron4/files/patch-chrome_browser_extensions_api_input__ime_input__ime__api.h
new file mode 100644
index 000000000000..a3c6bd79d4f1
--- /dev/null
+++ b/devel/electron4/files/patch-chrome_browser_extensions_api_input__ime_input__ime__api.h
@@ -0,0 +1,11 @@
+--- chrome/browser/extensions/api/input_ime/input_ime_api.h.orig 2019-03-15 06:37:03 UTC
++++ chrome/browser/extensions/api/input_ime/input_ime_api.h
+@@ -31,7 +31,7 @@
+
+ #if defined(OS_CHROMEOS)
+ #include "chrome/browser/extensions/api/input_ime/input_ime_api_chromeos.h"
+-#elif defined(OS_LINUX) || defined(OS_WIN)
++#elif defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD)
+ #include "chrome/browser/extensions/api/input_ime/input_ime_api_nonchromeos.h"
+ #endif // defined(OS_CHROMEOS)
+
diff --git a/devel/electron4/files/patch-chrome_browser_extensions_api_runtime_chrome__runtime__api__delegate.cc b/devel/electron4/files/patch-chrome_browser_extensions_api_runtime_chrome__runtime__api__delegate.cc
new file mode 100644
index 000000000000..3bc5cf16b73d
--- /dev/null
+++ b/devel/electron4/files/patch-chrome_browser_extensions_api_runtime_chrome__runtime__api__delegate.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/extensions/api/runtime/chrome_runtime_api_delegate.cc.orig 2019-03-15 06:37:03 UTC
++++ chrome/browser/extensions/api/runtime/chrome_runtime_api_delegate.cc
+@@ -271,6 +271,8 @@ bool ChromeRuntimeAPIDelegate::GetPlatformInfo(Platfor
+ info->os = extensions::api::runtime::PLATFORM_OS_CROS;
+ } else if (strcmp(os, "linux") == 0) {
+ info->os = extensions::api::runtime::PLATFORM_OS_LINUX;
++ } else if (strcmp(os, "freebsd") == 0) {
++ info->os = extensions::api::runtime::PLATFORM_OS_FREEBSD;
+ } else if (strcmp(os, "openbsd") == 0) {
+ info->os = extensions::api::runtime::PLATFORM_OS_OPENBSD;
+ } else {
diff --git a/devel/electron4/files/patch-chrome_browser_extensions_api_settings__private_prefs__util.cc b/devel/electron4/files/patch-chrome_browser_extensions_api_settings__private_prefs__util.cc
new file mode 100644
index 000000000000..e55c9a16372d
--- /dev/null
+++ b/devel/electron4/files/patch-chrome_browser_extensions_api_settings__private_prefs__util.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/extensions/api/settings_private/prefs_util.cc.orig 2019-03-15 06:37:03 UTC
++++ chrome/browser/extensions/api/settings_private/prefs_util.cc
+@@ -127,7 +127,7 @@ const PrefsUtil::TypedPrefMap& PrefsUtil::GetWhitelist
+ settings_api::PrefType::PREF_TYPE_BOOLEAN;
+ (*s_whitelist)[bookmarks::prefs::kShowBookmarkBar] =
+ settings_api::PrefType::PREF_TYPE_BOOLEAN;
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS)
+ (*s_whitelist)[::prefs::kUseCustomChromeFrame] =
+ settings_api::PrefType::PREF_TYPE_BOOLEAN;
+ #endif
+@@ -137,7 +137,7 @@ const PrefsUtil::TypedPrefMap& PrefsUtil::GetWhitelist
+ // Appearance settings.
+ (*s_whitelist)[::prefs::kCurrentThemeID] =
+ settings_api::PrefType::PREF_TYPE_STRING;
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS)
+ (*s_whitelist)[::prefs::kUsesSystemTheme] =
+ settings_api::PrefType::PREF_TYPE_BOOLEAN;
+ #endif
diff --git a/devel/electron4/files/patch-chrome_browser_extensions_bookmark__app__helper.cc b/devel/electron4/files/patch-chrome_browser_extensions_bookmark__app__helper.cc
new file mode 100644
index 000000000000..bd22e8d3769e
--- /dev/null
+++ b/devel/electron4/files/patch-chrome_browser_extensions_bookmark__app__helper.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/extensions/bookmark_app_helper.cc.orig 2019-03-15 06:37:03 UTC
++++ chrome/browser/extensions/bookmark_app_helper.cc
+@@ -784,7 +784,7 @@ void BookmarkAppHelper::FinishInstallation(const Exten
+ #if !defined(OS_MACOSX)
+ #if !defined(OS_CHROMEOS)
+ web_app::ShortcutLocations creation_locations;
+-#if defined(OS_LINUX) || defined(OS_WIN)
++#if defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD)
+ creation_locations.on_desktop = true;
+ #else
+ creation_locations.on_desktop = false;
diff --git a/devel/electron4/files/patch-chrome_browser_extensions_browser__context__keyed__service__factories.cc b/devel/electron4/files/patch-chrome_browser_extensions_browser__context__keyed__service__factories.cc
new file mode 100644
index 000000000000..43c073c63006
--- /dev/null
+++ b/devel/electron4/files/patch-chrome_browser_extensions_browser__context__keyed__service__factories.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/extensions/browser_context_keyed_service_factories.cc.orig 2019-03-15 06:37:03 UTC
++++ chrome/browser/extensions/browser_context_keyed_service_factories.cc
+@@ -57,7 +57,7 @@
+ #include "chrome/browser/chromeos/extensions/media_player_api.h"
+ #include "chrome/browser/extensions/api/input_ime/input_ime_api.h"
+ #include "chrome/browser/extensions/api/screenlock_private/screenlock_private_api.h"
+-#elif defined(OS_LINUX) || defined(OS_WIN)
++#elif defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD)
+ #include "chrome/browser/extensions/api/input_ime/input_ime_api.h"
+ #endif
+
+@@ -99,7 +99,7 @@ void EnsureBrowserContextKeyedServiceFactoriesBuilt()
+ #if defined(OS_CHROMEOS)
+ extensions::InputImeAPI::GetFactoryInstance();
+ extensions::InputMethodAPI::GetFactoryInstance();
+-#elif defined(OS_LINUX) || defined(OS_WIN)
++#elif defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD)
+ extensions::InputImeAPI::GetFactoryInstance();
+ #endif
+ extensions::LanguageSettingsPrivateDelegateFactory::GetInstance();
diff --git a/devel/electron4/files/patch-chrome_browser_extensions_external__provider__impl.cc b/devel/electron4/files/patch-chrome_browser_extensions_external__provider__impl.cc
new file mode 100644
index 000000000000..75705aeba174
--- /dev/null
+++ b/devel/electron4/files/patch-chrome_browser_extensions_external__provider__impl.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/extensions/external_provider_impl.cc.orig 2019-03-15 06:37:03 UTC
++++ chrome/browser/extensions/external_provider_impl.cc
+@@ -689,7 +689,7 @@ void ExternalProviderImpl::CreateExternalProviders(
+ Manifest::EXTERNAL_PREF, Manifest::EXTERNAL_PREF_DOWNLOAD,
+ oem_extension_creation_flags));
+ }
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ if (!profile->IsLegacySupervised()) {
+ provider_list->push_back(std::make_unique<ExternalProviderImpl>(
+ service,
+@@ -717,7 +717,7 @@ void ExternalProviderImpl::CreateExternalProviders(
+ bundled_extension_creation_flags));
+
+ // Define a per-user source of external extensions.
+-#if defined(OS_MACOSX) || (defined(OS_LINUX) && defined(CHROMIUM_BUILD))
++#if defined(OS_MACOSX) || ((defined(OS_LINUX) || defined(OS_BSD)) && defined(CHROMIUM_BUILD))
+ provider_list->push_back(std::make_unique<ExternalProviderImpl>(
+ service,
+ new ExternalPrefLoader(chrome::DIR_USER_EXTERNAL_EXTENSIONS,
diff --git a/devel/electron4/files/patch-chrome_browser_first__run_first__run__internal__posix.cc b/devel/electron4/files/patch-chrome_browser_first__run_first__run__internal__posix.cc
new file mode 100644
index 000000000000..07937c76de0d
--- /dev/null
+++ b/devel/electron4/files/patch-chrome_browser_first__run_first__run__internal__posix.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/first_run/first_run_internal_posix.cc.orig 2019-03-15 06:37:03 UTC
++++ chrome/browser/first_run/first_run_internal_posix.cc
+@@ -34,7 +34,7 @@ base::OnceClosure& GetBeforeShowFirstRunDialogHookForT
+ namespace internal {
+ namespace {
+
+-#if !defined(OS_CHROMEOS)
++#if !defined(OS_CHROMEOS) && !defined(OS_BSD)
+ // Returns whether the first run dialog should be shown. This is only true for
+ // certain builds, and only if the user has not already set preferences. In a
+ // real, official-build first run, initializes the default metrics reporting if
+@@ -80,7 +80,7 @@ bool ShouldShowFirstRunDialog() {
+ } // namespace
+
+ void DoPostImportPlatformSpecificTasks(Profile* profile) {
+-#if !defined(OS_CHROMEOS)
++#if !defined(OS_CHROMEOS) && !defined(OS_BSD)
+ if (!ShouldShowFirstRunDialog())
+ return;
+
diff --git a/devel/electron4/files/patch-chrome_browser_flag__descriptions.cc b/devel/electron4/files/patch-chrome_browser_flag__descriptions.cc
new file mode 100644
index 000000000000..6af013954e73
--- /dev/null
+++ b/devel/electron4/files/patch-chrome_browser_flag__descriptions.cc
@@ -0,0 +1,36 @@
+--- chrome/browser/flag_descriptions.cc.orig 2019-03-15 06:37:03 UTC
++++ chrome/browser/flag_descriptions.cc
+@@ -3411,7 +3411,7 @@ extern const char kEnableContinueReadingDescription[]
+
+ // Random platform combinations -----------------------------------------------
+
+-#if defined(OS_WIN) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD)
+
+ const char kEnableInputImeApiName[] = "Enable Input IME API";
+ const char kEnableInputImeApiDescription[] =
+@@ -3425,7 +3425,7 @@ const char kWarnBeforeQuittingFlagDescription[] =
+
+ #endif // !defined(OS_CHROMEOS)
+
+-#endif // defined(OS_WIN) || defined(OS_LINUX)
++#endif // defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD)
+
+ #if defined(OS_WIN) || defined(OS_MACOSX)
+
+@@ -3438,13 +3438,13 @@ const char kAutomaticTabDiscardingDescription[] =
+
+ #endif // defined(OS_WIN) || defined(OS_MACOSX)
+
+-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+
+ const char kDirectManipulationStylusName[] = "Direct Manipulation Stylus";
+ const char kDirectManipulationStylusDescription[] =
+ "If enabled, Chrome will scroll web pages on stylus drag.";
+
+-#endif // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
++#endif // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+
+ const char kExperimentalUiName[] = "Use all upcoming UI features";
+ const char kExperimentalUiDescription[] = "Use all upcoming UI features.";
diff --git a/devel/electron4/files/patch-chrome_browser_flag__descriptions.h b/devel/electron4/files/patch-chrome_browser_flag__descriptions.h
new file mode 100644
index 000000000000..c577865cbecf
--- /dev/null
+++ b/devel/electron4/files/patch-chrome_browser_flag__descriptions.h
@@ -0,0 +1,35 @@
+--- chrome/browser/flag_descriptions.h.orig 2019-03-15 06:37:03 UTC
++++ chrome/browser/flag_descriptions.h
+@@ -2087,7 +2087,7 @@ extern const char kEnableContinueReadingDescription[];
+
+ // Random platform combinations -----------------------------------------------
+
+-#if defined(OS_WIN) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD)
+
+ extern const char kEnableInputImeApiName[];
+ extern const char kEnableInputImeApiDescription[];
+@@ -2099,7 +2099,7 @@ extern const char kWarnBeforeQuittingFlagDescription[]
+
+ #endif // !defined(OS_CHROMEOS)
+
+-#endif // defined(OS_WIN) || defined(OS_LINUX)
++#endif // defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD)
+
+ extern const char kExperimentalUiName[];
+ extern const char kExperimentalUiDescription[];
+@@ -2111,12 +2111,12 @@ extern const char kAutomaticTabDiscardingDescription[]
+
+ #endif // defined(OS_WIN) || defined(OS_MACOSX)
+
+-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+
+ extern const char kDirectManipulationStylusName[];
+ extern const char kDirectManipulationStylusDescription[];
+
+-#endif // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
++#endif // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+
+ // Feature flags --------------------------------------------------------------
+
diff --git a/devel/electron4/files/patch-chrome_browser_media__galleries_fileapi_mtp__device__map__service.cc b/devel/electron4/files/patch-chrome_browser_media__galleries_fileapi_mtp__device__map__service.cc
new file mode 100644
index 000000000000..76f0311801ac
--- /dev/null
+++ b/devel/electron4/files/patch-chrome_browser_media__galleries_fileapi_mtp__device__map__service.cc
@@ -0,0 +1,15 @@
+--- chrome/browser/media_galleries/fileapi/mtp_device_map_service.cc.orig 2019-03-15 06:37:03 UTC
++++ chrome/browser/media_galleries/fileapi/mtp_device_map_service.cc
+@@ -38,10 +38,12 @@ void MTPDeviceMapService::RegisterMTPFileSystem(
+ // Note that this initializes the delegate asynchronously, but since
+ // the delegate will only be used from the IO thread, it is guaranteed
+ // to be created before use of it expects it to be there.
++#if !defined(OS_FREEBSD)
+ CreateMTPDeviceAsyncDelegate(
+ device_location, read_only,
+ base::Bind(&MTPDeviceMapService::AddAsyncDelegate,
+ base::Unretained(this), device_location, read_only));
++#endif
+ mtp_device_usage_map_[key] = 0;
+ }
+
diff --git a/devel/electron4/files/patch-chrome_browser_media__galleries_media__file__system__registry.cc b/devel/electron4/files/patch-chrome_browser_media__galleries_media__file__system__registry.cc
new file mode 100644
index 000000000000..2d4468f1fdb6
--- /dev/null
+++ b/devel/electron4/files/patch-chrome_browser_media__galleries_media__file__system__registry.cc
@@ -0,0 +1,14 @@
+--- chrome/browser/media_galleries/media_file_system_registry.cc.orig 2019-03-15 06:37:03 UTC
++++ chrome/browser/media_galleries/media_file_system_registry.cc
+@@ -739,7 +739,10 @@ class MediaFileSystemRegistry::MediaFileSystemContextI
+ // Constructor in 'private' section because depends on private class definition.
+ MediaFileSystemRegistry::MediaFileSystemRegistry()
+ : file_system_context_(new MediaFileSystemContextImpl) {
+- StorageMonitor::GetInstance()->AddObserver(this);
++ // This conditional is needed for shutdown. Destructors
++ // try to get the media file system registry.
++ if (StorageMonitor::GetInstance())
++ StorageMonitor::GetInstance()->AddObserver(this);
+ }
+
+ MediaFileSystemRegistry::~MediaFileSystemRegistry() {
diff --git a/devel/electron4/files/patch-chrome_browser_media_router_discovery_discovery__network__list__posix.cc b/devel/electron4/files/patch-chrome_browser_media_router_discovery_discovery__network__list__posix.cc
new file mode 100644
index 000000000000..98e275669535
--- /dev/null
+++ b/devel/electron4/files/patch-chrome_browser_media_router_discovery_discovery__network__list__posix.cc
@@ -0,0 +1,28 @@
+--- chrome/browser/media/router/discovery/discovery_network_list_posix.cc.orig 2019-03-15 06:25:32 UTC
++++ chrome/browser/media/router/discovery/discovery_network_list_posix.cc
+@@ -10,6 +10,7 @@
+ #include <netinet/in.h>
+ #include <sys/socket.h>
+ #include <sys/types.h>
++#include <sys/time.h>
+
+ #include <algorithm>
+
+@@ -19,7 +20,7 @@
+ #include "chrome/browser/media/router/discovery/discovery_network_list_wifi.h"
+ #include "net/base/net_errors.h"
+
+-#if !defined(OS_MACOSX)
++#if !defined(OS_MACOSX) && !defined(OS_BSD)
+ #include <netpacket/packet.h>
+ #else
+ #include <net/if_dl.h>
+@@ -28,7 +29,7 @@
+ namespace media_router {
+ namespace {
+
+-#if !defined(OS_MACOSX)
++#if !defined(OS_MACOSX) && !defined(OS_BSD)
+ using sll = struct sockaddr_ll;
+ #define SOCKET_ARP_TYPE(s) ((s)->sll_hatype)
+ #define SOCKET_ADDRESS_LEN(s) ((s)->sll_halen)
diff --git a/devel/electron4/files/patch-chrome_browser_media_router_discovery_discovery__network__list__wifi__linux.cc b/devel/electron4/files/patch-chrome_browser_media_router_discovery_discovery__network__list__wifi__linux.cc
new file mode 100644
index 000000000000..b7ce3914c722
--- /dev/null
+++ b/devel/electron4/files/patch-chrome_browser_media_router_discovery_discovery__network__list__wifi__linux.cc
@@ -0,0 +1,27 @@
+--- chrome/browser/media/router/discovery/discovery_network_list_wifi_linux.cc.orig 2019-03-15 06:25:32 UTC
++++ chrome/browser/media/router/discovery/discovery_network_list_wifi_linux.cc
+@@ -9,8 +9,6 @@
+ #include <sys/socket.h>
+ #include <sys/types.h>
+
+-#include <linux/wireless.h>
+-
+ #include "base/files/scoped_file.h"
+ #include "base/logging.h"
+ #include "net/base/network_interfaces_linux.h"
+@@ -20,6 +18,7 @@ namespace media_router {
+ bool MaybeGetWifiSSID(const std::string& if_name, std::string* ssid_out) {
+ DCHECK(ssid_out);
+
++#if !defined(OS_BSD)
+ base::ScopedFD ioctl_socket(socket(AF_INET, SOCK_DGRAM, 0));
+ if (!ioctl_socket.is_valid()) {
+ // AF_INET is for IPv4, so it may fail for IPv6-only hosts even when there
+@@ -41,6 +40,7 @@ bool MaybeGetWifiSSID(const std::string& if_name, std:
+ ssid_out->assign(ssid);
+ return true;
+ }
++#endif
+ return false;
+ }
+
diff --git a/devel/electron4/files/patch-chrome_browser_media_router_providers_wired__display_wired__display__media__route__provider.cc b/devel/electron4/files/patch-chrome_browser_media_router_providers_wired__display_wired__display__media__route__provider.cc
new file mode 100644
index 000000000000..0165e42a8bd6
--- /dev/null
+++ b/devel/electron4/files/patch-chrome_browser_media_router_providers_wired__display_wired__display__media__route__provider.cc
@@ -0,0 +1,23 @@
+--- chrome/browser/media/router/providers/wired_display/wired_display_media_route_provider.cc.orig 2019-03-15 06:37:03 UTC
++++ chrome/browser/media/router/providers/wired_display/wired_display_media_route_provider.cc
+@@ -111,6 +111,12 @@ void WiredDisplayMediaRouteProvider::CreateRoute(
+ bool incognito,
+ CreateRouteCallback callback) {
+ DCHECK(!base::ContainsKey(presentations_, presentation_id));
++#if defined(OS_BSD) // XXX
++ std::move(callback).Run(base::nullopt, nullptr,
++ std::string("Not implemented"),
++ RouteRequestResult::UNKNOWN_ERROR);
++ return;
++#else
+ base::Optional<Display> display = GetDisplayBySinkId(sink_id);
+ if (!display) {
+ std::move(callback).Run(base::nullopt, std::string("Display not found"),
+@@ -135,6 +141,7 @@ void WiredDisplayMediaRouteProvider::CreateRoute(
+ presentation.receiver()->Start(presentation_id, GURL(media_source));
+ std::move(callback).Run(route, base::nullopt, RouteRequestResult::OK);
+ NotifyRouteObservers();
++#endif
+ }
+
+ void WiredDisplayMediaRouteProvider::JoinRoute(
diff --git a/devel/electron4/files/patch-chrome_browser_media_webrtc_webrtc__event__log__uploader.cc b/devel/electron4/files/patch-chrome_browser_media_webrtc_webrtc__event__log__uploader.cc
new file mode 100644
index 000000000000..9e9f297ff3f3
--- /dev/null
+++ b/devel/electron4/files/patch-chrome_browser_media_webrtc_webrtc__event__log__uploader.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/media/webrtc/webrtc_event_log_uploader.cc.orig 2019-03-15 06:37:03 UTC
++++ chrome/browser/media/webrtc/webrtc_event_log_uploader.cc
+@@ -29,7 +29,7 @@ constexpr size_t kExpectedMimeOverheadBytes = 1000; /
+ const char kProduct[] = "Chrome";
+ #elif defined(OS_MACOSX)
+ const char kProduct[] = "Chrome_Mac";
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ const char kProduct[] = "Chrome_Linux";
+ #elif defined(OS_ANDROID)
+ const char kProduct[] = "Chrome_Android";
diff --git a/devel/electron4/files/patch-chrome_browser_media_webrtc_webrtc__log__uploader.cc b/devel/electron4/files/patch-chrome_browser_media_webrtc_webrtc__log__uploader.cc
new file mode 100644
index 000000000000..7e8c0342f064
--- /dev/null
+++ b/devel/electron4/files/patch-chrome_browser_media_webrtc_webrtc__log__uploader.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/media/webrtc/webrtc_log_uploader.cc.orig 2019-03-15 06:37:03 UTC
++++ chrome/browser/media/webrtc/webrtc_log_uploader.cc
+@@ -346,6 +346,8 @@ void WebRtcLogUploader::SetupMultipart(
+ const char product[] = "Chrome_Android";
+ #elif defined(OS_CHROMEOS)
+ const char product[] = "Chrome_ChromeOS";
++#elif defined(OS_FREEBSD)
++ const char product[] = "Chrome_FreeBSD";
+ #else
+ #error Platform not supported.
+ #endif
diff --git a/devel/electron4/files/patch-chrome_browser_memory__details.cc b/devel/electron4/files/patch-chrome_browser_memory__details.cc
new file mode 100644
index 000000000000..c6a7ff2081c3
--- /dev/null
+++ b/devel/electron4/files/patch-chrome_browser_memory__details.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/memory_details.cc.orig 2019-03-15 06:37:03 UTC
++++ chrome/browser/memory_details.cc
+@@ -36,7 +36,7 @@
+ #include "services/resource_coordinator/public/cpp/memory_instrumentation/memory_instrumentation.h"
+ #include "ui/base/l10n/l10n_util.h"
+
+-#if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_ANDROID)
++#if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_ANDROID) && !defined(OS_BSD)
+ #include "services/service_manager/zygote/zygote_host_linux.h"
+ #endif
+
+@@ -341,7 +341,7 @@ void MemoryDetails::CollectChildInfoOnUIThread() {
+ process.titles.push_back(title);
+ }
+
+-#if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_ANDROID)
++#if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_ANDROID) && !defined(OS_BSD)
+ if (service_manager::ZygoteHost::GetInstance()->IsZygotePid(process.pid)) {
+ process.process_type = content::PROCESS_TYPE_ZYGOTE;
+ }
diff --git a/devel/electron4/files/patch-chrome_browser_memory__details__linux.cc b/devel/electron4/files/patch-chrome_browser_memory__details__linux.cc
new file mode 100644
index 000000000000..6a077d2a6054
--- /dev/null
+++ b/devel/electron4/files/patch-chrome_browser_memory__details__linux.cc
@@ -0,0 +1,13 @@
+--- chrome/browser/memory_details_linux.cc.orig 2019-03-15 06:37:03 UTC
++++ chrome/browser/memory_details_linux.cc
+@@ -70,8 +70,10 @@ ProcessData GetProcessDataMemoryInformation(
+
+ std::unique_ptr<base::ProcessMetrics> metrics(
+ base::ProcessMetrics::CreateProcessMetrics(pid));
++#if !defined(OS_BSD)
+ pmi.num_open_fds = metrics->GetOpenFdCount();
+ pmi.open_fds_soft_limit = metrics->GetOpenFdSoftLimit();
++#endif
+
+ process_data.processes.push_back(pmi);
+ }
diff --git a/devel/electron4/files/patch-chrome_browser_metrics_chrome__browser__main__extra__parts__metrics.cc b/devel/electron4/files/patch-chrome_browser_metrics_chrome__browser__main__extra__parts__metrics.cc
new file mode 100644
index 000000000000..e6500dd8bd28
--- /dev/null
+++ b/devel/electron4/files/patch-chrome_browser_metrics_chrome__browser__main__extra__parts__metrics.cc
@@ -0,0 +1,21 @@
+--- chrome/browser/metrics/chrome_browser_main_extra_parts_metrics.cc.orig 2019-03-15 06:37:03 UTC
++++ chrome/browser/metrics/chrome_browser_main_extra_parts_metrics.cc
+@@ -44,7 +44,9 @@
+
+ #if defined(OS_LINUX) && !defined(OS_CHROMEOS)
+ #include <gnu/libc-version.h>
++#endif
+
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ #include "base/linux_util.h"
+ #include "base/strings/string_split.h"
+ #include "base/strings/string_util.h"
+@@ -52,7 +54,7 @@
+ #if defined(USE_X11)
+ #include "ui/base/x/x11_util.h"
+ #endif
+-#endif // defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#endif // defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+
+ #if defined(USE_OZONE) || defined(USE_X11)
+ #include "ui/events/devices/input_device_event_observer.h"
diff --git a/devel/electron4/files/patch-chrome_browser_net_system__network__context__manager.cc b/devel/electron4/files/patch-chrome_browser_net_system__network__context__manager.cc
new file mode 100644
index 000000000000..6e1168cb74ea
--- /dev/null
+++ b/devel/electron4/files/patch-chrome_browser_net_system__network__context__manager.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/net/system_network_context_manager.cc.orig 2019-03-15 06:37:03 UTC
++++ chrome/browser/net/system_network_context_manager.cc
+@@ -49,7 +49,7 @@
+ #include "chrome/browser/chromeos/policy/browser_policy_connector_chromeos.h"
+ #endif // defined(OS_CHROMEOS)
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS)
+ #include "chrome/common/chrome_paths_internal.h"
+ #include "chrome/common/chrome_switches.h"
+ #include "chrome/grit/chromium_strings.h"
+@@ -440,7 +440,7 @@ void SystemNetworkContextManager::OnNetworkServiceCrea
+ content::GetNetworkService()->ConfigureStubHostResolver(
+ stub_resolver_enabled, std::move(dns_over_https_servers));
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS)
+ const base::CommandLine& command_line =
+ *base::CommandLine::ForCurrentProcess();
+
diff --git a/devel/electron4/files/patch-chrome_browser_password__manager_chrome__password__manager__client.cc b/devel/electron4/files/patch-chrome_browser_password__manager_chrome__password__manager__client.cc
new file mode 100644
index 000000000000..846e2e575b29
--- /dev/null
+++ b/devel/electron4/files/patch-chrome_browser_password__manager_chrome__password__manager__client.cc
@@ -0,0 +1,14 @@
+--- chrome/browser/password_manager/chrome_password_manager_client.cc.orig 2019-03-15 06:37:03 UTC
++++ chrome/browser/password_manager/chrome_password_manager_client.cc
+@@ -76,7 +76,11 @@
+ #include "net/base/url_util.h"
+ #include "net/cert/cert_status_flags.h"
+ #include "services/metrics/public/cpp/ukm_recorder.h"
++#if defined(OS_BSD)
++#include <re2/re2.h>
++#else
+ #include "third_party/re2/src/re2/re2.h"
++#endif
+ #include "url/url_constants.h"
+
+ #if defined(SAFE_BROWSING_DB_LOCAL)
diff --git a/devel/electron4/files/patch-chrome_browser_password__manager_password__store__factory.cc b/devel/electron4/files/patch-chrome_browser_password__manager_password__store__factory.cc
new file mode 100644
index 000000000000..e959a2b29cd3
--- /dev/null
+++ b/devel/electron4/files/patch-chrome_browser_password__manager_password__store__factory.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/password_manager/password_store_factory.cc.orig 2019-03-15 06:37:03 UTC
++++ chrome/browser/password_manager/password_store_factory.cc
+@@ -283,7 +283,7 @@ PasswordStoreFactory::BuildServiceInstanceFor(
+ password_manager_util::CleanUserDataInBlacklistedCredentials(
+ ps.get(), profile->GetPrefs(), 60);
+
+-#if defined(OS_WIN) || defined(OS_MACOSX) || \
++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_BSD) || \
+ (defined(OS_LINUX) && !defined(OS_CHROMEOS))
+ std::unique_ptr<password_manager::PasswordStoreSigninNotifier> notifier =
+ std::make_unique<password_manager::PasswordStoreSigninNotifierImpl>(
diff --git a/devel/electron4/files/patch-chrome_browser_platform__util.h b/devel/electron4/files/patch-chrome_browser_platform__util.h
new file mode 100644
index 000000000000..74227b410d94
--- /dev/null
+++ b/devel/electron4/files/patch-chrome_browser_platform__util.h
@@ -0,0 +1,11 @@
+--- chrome/browser/platform_util.h.orig 2019-03-15 06:25:33 UTC
++++ chrome/browser/platform_util.h
+@@ -40,7 +40,7 @@ enum OpenOperationResult {
+ enum OpenItemType {
+ OPEN_FILE,
+ OPEN_FOLDER,
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ SHOW_ITEM_IN_FOLDER
+ #endif
+ };
diff --git a/devel/electron4/files/patch-chrome_browser_plugins_plugins__resource__service.cc b/devel/electron4/files/patch-chrome_browser_plugins_plugins__resource__service.cc
new file mode 100644
index 000000000000..c209295e680e
--- /dev/null
+++ b/devel/electron4/files/patch-chrome_browser_plugins_plugins__resource__service.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/plugins/plugins_resource_service.cc.orig 2019-03-15 06:37:03 UTC
++++ chrome/browser/plugins/plugins_resource_service.cc
+@@ -62,7 +62,7 @@ GURL GetPluginsServerURL() {
+ filename = "plugins_win.json";
+ #elif defined(OS_CHROMEOS)
+ filename = "plugins_chromeos.json";
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ filename = "plugins_linux.json";
+ #elif defined(OS_MACOSX)
+ filename = "plugins_mac.json";
diff --git a/devel/electron4/files/patch-chrome_browser_policy_policy__prefs__browsertest.cc b/devel/electron4/files/patch-chrome_browser_policy_policy__prefs__browsertest.cc
new file mode 100644
index 000000000000..843b4b9b9d70
--- /dev/null
+++ b/devel/electron4/files/patch-chrome_browser_policy_policy__prefs__browsertest.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/policy/policy_prefs_browsertest.cc.orig 2019-03-15 06:37:03 UTC
++++ chrome/browser/policy/policy_prefs_browsertest.cc
+@@ -185,6 +185,8 @@ class PolicyTestCase {
+ const std::string os("chromeos");
+ #elif defined(OS_LINUX)
+ const std::string os("linux");
++#elif defined(OS_FREEBSD)
++ const std::string os("freebsd");
+ #else
+ #error "Unknown platform"
+ #endif
diff --git a/devel/electron4/files/patch-chrome_browser_process__singleton__posix.cc b/devel/electron4/files/patch-chrome_browser_process__singleton__posix.cc
new file mode 100644
index 000000000000..3a1240569215
--- /dev/null
+++ b/devel/electron4/files/patch-chrome_browser_process__singleton__posix.cc
@@ -0,0 +1,34 @@
+--- chrome/browser/process_singleton_posix.cc.orig 2019-03-15 06:37:04 UTC
++++ chrome/browser/process_singleton_posix.cc
+@@ -91,11 +91,11 @@
+ #include "net/base/network_interfaces.h"
+ #include "ui/base/l10n/l10n_util.h"
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include "chrome/browser/ui/process_singleton_dialog_linux.h"
+ #endif
+
+-#if defined(TOOLKIT_VIEWS) && defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if defined(TOOLKIT_VIEWS) && (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ #include "ui/views/linux_ui/linux_ui.h"
+ #endif
+
+@@ -323,7 +323,7 @@ bool DisplayProfileInUseError(const base::FilePath& lo
+ if (g_disable_prompt)
+ return g_user_opted_unlock_in_use_profile;
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ base::string16 relaunch_button_text = l10n_util::GetStringUTF16(
+ IDS_PROFILE_IN_USE_LINUX_RELAUNCH);
+ return ShowProcessSingletonDialog(error, relaunch_button_text);
+@@ -903,7 +903,7 @@ ProcessSingleton::NotifyResult ProcessSingleton::Notif
+ SendRemoteProcessInteractionResultHistogram(REMOTE_PROCESS_SHUTTING_DOWN);
+ return PROCESS_NONE;
+ } else if (strncmp(buf, kACKToken, arraysize(kACKToken) - 1) == 0) {
+-#if defined(TOOLKIT_VIEWS) && defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if defined(TOOLKIT_VIEWS) && (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ // Likely NULL in unit tests.
+ views::LinuxUI* linux_ui = views::LinuxUI::instance();
+ if (linux_ui)
diff --git a/devel/electron4/files/patch-chrome_browser_profiles_chrome__browser__main__extra__parts__profiles.cc b/devel/electron4/files/patch-chrome_browser_profiles_chrome__browser__main__extra__parts__profiles.cc
new file mode 100644
index 000000000000..b27db1832df7
--- /dev/null
+++ b/devel/electron4/files/patch-chrome_browser_profiles_chrome__browser__main__extra__parts__profiles.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc.orig 2019-03-15 06:37:04 UTC
++++ chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc
+@@ -305,7 +305,7 @@ void ChromeBrowserMainExtraPartsProfiles::
+ #if !defined(OS_ANDROID)
+ MediaGalleriesPreferencesFactory::GetInstance();
+ #endif
+-#if defined(OS_WIN) || defined(OS_MACOSX) || \
++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_BSD) || \
+ (defined(OS_LINUX) && !defined(OS_CHROMEOS))
+ metrics::DesktopProfileSessionDurationsServiceFactory::GetInstance();
+ #endif
diff --git a/devel/electron4/files/patch-chrome_browser_renderer__context__menu_render__view__context__menu.cc b/devel/electron4/files/patch-chrome_browser_renderer__context__menu_render__view__context__menu.cc
new file mode 100644
index 000000000000..991d0097d90d
--- /dev/null
+++ b/devel/electron4/files/patch-chrome_browser_renderer__context__menu_render__view__context__menu.cc
@@ -0,0 +1,29 @@
+--- chrome/browser/renderer_context_menu/render_view_context_menu.cc.orig 2019-03-15 06:37:04 UTC
++++ chrome/browser/renderer_context_menu/render_view_context_menu.cc
+@@ -1471,7 +1471,7 @@ void RenderViewContextMenu::AppendEditableItems() {
+ // 'Undo' and 'Redo' for text input with no suggestions and no text selected.
+ // We make an exception for OS X as context clicking will select the closest
+ // word. In this case both items are always shown.
+-#if defined(OS_MACOSX)
++#if defined(OS_MACOSX) || defined(OS_BSD)
+ menu_model_.AddItemWithStringId(IDC_CONTENT_CONTEXT_UNDO,
+ IDS_CONTENT_CONTEXT_UNDO);
+ menu_model_.AddItemWithStringId(IDC_CONTENT_CONTEXT_REDO,
+@@ -1513,7 +1513,7 @@ void RenderViewContextMenu::AppendLanguageSettings() {
+ if (!use_spelling)
+ return;
+
+-#if defined(OS_MACOSX)
++#if defined(OS_MACOSX) || defined(OS_BSD)
+ menu_model_.AddItemWithStringId(IDC_CONTENT_CONTEXT_LANGUAGE_SETTINGS,
+ IDS_CONTENT_CONTEXT_LANGUAGE_SETTINGS);
+ #else
+@@ -1777,7 +1777,7 @@ bool RenderViewContextMenu::IsCommandIdEnabled(int id)
+ case IDC_CHECK_SPELLING_WHILE_TYPING:
+ return prefs->GetBoolean(spellcheck::prefs::kSpellCheckEnable);
+
+-#if !defined(OS_MACOSX) && defined(OS_POSIX)
++#if !defined(OS_MACOSX) && !defined(OS_BSD) && defined(OS_POSIX)
+ // TODO(suzhe): this should not be enabled for password fields.
+ case IDC_INPUT_METHODS_MENU:
+ return true;
diff --git a/devel/electron4/files/patch-chrome_browser_renderer__preferences__util.cc b/devel/electron4/files/patch-chrome_browser_renderer__preferences__util.cc
new file mode 100644
index 000000000000..59b92a104338
--- /dev/null
+++ b/devel/electron4/files/patch-chrome_browser_renderer__preferences__util.cc
@@ -0,0 +1,38 @@
+--- chrome/browser/renderer_preferences_util.cc.orig 2019-03-15 06:37:04 UTC
++++ chrome/browser/renderer_preferences_util.cc
+@@ -19,7 +19,7 @@
+ #include "third_party/blink/public/public_buildflags.h"
+ #include "third_party/skia/include/core/SkColor.h"
+
+-#if defined(OS_LINUX) || defined(OS_ANDROID)
++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
+ #include "ui/gfx/font_render_params.h"
+ #endif
+
+@@ -31,7 +31,7 @@
+ #include "ui/base/cocoa/defaults_utils.h"
+ #endif
+
+-#if defined(USE_AURA) && defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if defined(USE_AURA) && (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS)
+ #include "chrome/browser/themes/theme_service.h"
+ #include "chrome/browser/themes/theme_service_factory.h"
+ #include "ui/views/linux_ui/linux_ui.h"
+@@ -130,7 +130,7 @@ void UpdateFromSystemSettings(content::RendererPrefere
+ prefs->caret_blink_interval = interval;
+ #endif
+
+-#if defined(USE_AURA) && defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if defined(USE_AURA) && (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS)
+ views::LinuxUI* linux_ui = views::LinuxUI::instance();
+ if (linux_ui) {
+ if (ThemeServiceFactory::GetForProfile(profile)->UsingSystemTheme()) {
+@@ -152,7 +152,7 @@ void UpdateFromSystemSettings(content::RendererPrefere
+ }
+ #endif
+
+-#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_WIN)
++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_WIN) || defined(OS_BSD)
+ CR_DEFINE_STATIC_LOCAL(const gfx::FontRenderParams, params,
+ (gfx::GetFontRenderParams(gfx::FontRenderParamsQuery(), NULL)));
+ prefs->should_antialias_text = params.antialiasing;
diff --git a/devel/electron4/files/patch-chrome_browser_resources_safe__browsing_gen__file__type__proto.py b/devel/electron4/files/patch-chrome_browser_resources_safe__browsing_gen__file__type__proto.py
new file mode 100644
index 000000000000..2ac3cc6503c1
--- /dev/null
+++ b/devel/electron4/files/patch-chrome_browser_resources_safe__browsing_gen__file__type__proto.py
@@ -0,0 +1,19 @@
+--- chrome/browser/resources/safe_browsing/gen_file_type_proto.py.orig 2019-03-15 06:37:05 UTC
++++ chrome/browser/resources/safe_browsing/gen_file_type_proto.py
+@@ -31,6 +31,7 @@ def PlatformTypes():
+ "android": download_file_types_pb2.DownloadFileType.PLATFORM_ANDROID,
+ "chromeos": download_file_types_pb2.DownloadFileType.PLATFORM_CHROME_OS,
+ "linux": download_file_types_pb2.DownloadFileType.PLATFORM_LINUX,
++ "bsd": download_file_types_pb2.DownloadFileType.PLATFORM_LINUX,
+ "mac": download_file_types_pb2.DownloadFileType.PLATFORM_MAC,
+ "win": download_file_types_pb2.DownloadFileType.PLATFORM_WINDOWS,
+ }
+@@ -169,7 +170,7 @@ class DownloadFileTypeProtoGenerator(BinaryProtoGenera
+ 'Outfile must have a %d for version and %s for platform.')
+ parser.add_option('-t', '--type',
+ help='The platform type. One of android, chromeos, ' +
+- 'linux, mac, win')
++ 'linux, bsd, mac, win')
+
+ def AddExtraCommandLineArgsForVirtualEnvRun(self, opts, command):
+ if opts.type is not None:
diff --git a/devel/electron4/files/patch-chrome_browser_resources_settings_appearance__page_appearance__browser__proxy.js b/devel/electron4/files/patch-chrome_browser_resources_settings_appearance__page_appearance__browser__proxy.js
new file mode 100644
index 000000000000..e458972839d7
--- /dev/null
+++ b/devel/electron4/files/patch-chrome_browser_resources_settings_appearance__page_appearance__browser__proxy.js
@@ -0,0 +1,20 @@
+--- chrome/browser/resources/settings/appearance_page/appearance_browser_proxy.js.orig 2019-03-15 06:25:33 UTC
++++ chrome/browser/resources/settings/appearance_page/appearance_browser_proxy.js
+@@ -35,7 +35,7 @@ cr.define('settings', function() {
+
+ useDefaultTheme() {}
+
+- // <if expr="is_linux and not chromeos">
++ // <if expr="is_bsd and not chromeos">
+ useSystemTheme() {}
+
+ // </if>
+@@ -93,7 +93,7 @@ cr.define('settings', function() {
+ chrome.send('useDefaultTheme');
+ }
+
+- // <if expr="is_linux and not chromeos">
++ // <if expr="is_bsd and not chromeos">
+ /** @override */
+ useSystemTheme() {
+ chrome.send('useSystemTheme');
diff --git a/devel/electron4/files/patch-chrome_browser_resources_settings_appearance__page_appearance__page.html b/devel/electron4/files/patch-chrome_browser_resources_settings_appearance__page_appearance__page.html
new file mode 100644
index 000000000000..825d647d6af5
--- /dev/null
+++ b/devel/electron4/files/patch-chrome_browser_resources_settings_appearance__page_appearance__page.html
@@ -0,0 +1,29 @@
+--- chrome/browser/resources/settings/appearance_page/appearance_page.html.orig 2019-03-15 06:37:05 UTC
++++ chrome/browser/resources/settings/appearance_page/appearance_page.html
+@@ -70,7 +70,7 @@
+ hidden="[[!pageVisibility.setTheme]]"
+ label="$i18n{themes}" sub-label="[[themeSublabel_]]"
+ on-click="openThemeUrl_"></cr-link-row>
+-<if expr="not is_linux or chromeos">
++<if expr="not is_posix or chromeos">
+ <template is="dom-if" if="[[prefs.extensions.theme.id.value]]">
+ <div class="separator"></div>
+ <paper-button id="useDefault" on-click="onUseDefaultTap_"
+@@ -79,7 +79,7 @@
+ </paper-button>
+ </template>
+ </if>
+-<if expr="is_linux and not chromeos">
++<if expr="is_posix and not chromeos">
+ <div class="settings-row continuation"
+ hidden="[[!showThemesSecondary_(
+ prefs.extensions.theme.id.value, useSystemTheme_)]]"
+@@ -144,7 +144,7 @@
+ pref="{{prefs.bookmark_bar.show_on_all_tabs}}"
+ label="$i18n{showBookmarksBar}">
+ </settings-toggle-button>
+-<if expr="is_linux and not chromeos">
++<if expr="is_posix and not chromeos">
+ <settings-toggle-button
+ class$="[[getFirst_(pageVisibility.bookmarksBar)]]"
+ pref="{{prefs.browser.custom_chrome_frame}}"
diff --git a/devel/electron4/files/patch-chrome_browser_resources_settings_appearance__page_appearance__page.js b/devel/electron4/files/patch-chrome_browser_resources_settings_appearance__page_appearance__page.js
new file mode 100644
index 000000000000..4e517b41072b
--- /dev/null
+++ b/devel/electron4/files/patch-chrome_browser_resources_settings_appearance__page_appearance__page.js
@@ -0,0 +1,33 @@
+--- chrome/browser/resources/settings/appearance_page/appearance_page.js.orig 2019-03-15 06:37:05 UTC
++++ chrome/browser/resources/settings/appearance_page/appearance_page.js
+@@ -120,7 +120,7 @@ Polymer({
+ 'defaultFontSizeChanged_(prefs.webkit.webprefs.default_font_size.value)',
+ 'themeChanged_(prefs.extensions.theme.id.value, useSystemTheme_)',
+
+- // <if expr="is_linux and not chromeos">
++ // <if expr="is_bsd and not chromeos">
+ // NOTE: this pref only exists on Linux.
+ 'useSystemThemePrefChanged_(prefs.extensions.theme.use_system.value)',
+ // </if>
+@@ -221,7 +221,7 @@ Polymer({
+ this.browserProxy_.useDefaultTheme();
+ },
+
+- // <if expr="is_linux and not chromeos">
++ // <if expr="is_bsd and not chromeos">
+ /**
+ * @param {boolean} useSystemTheme
+ * @private
+@@ -289,10 +289,10 @@ Polymer({
+ }
+
+ let i18nId;
+- // <if expr="is_linux and not chromeos">
++ // <if expr="is_bsd and not chromeos">
+ i18nId = useSystemTheme ? 'systemTheme' : 'classicTheme';
+ // </if>
+- // <if expr="not is_linux or chromeos">
++ // <if expr="not is_bsd or chromeos">
+ i18nId = 'chooseFromWebStore';
+ // </if>
+ this.themeSublabel_ = this.i18n(i18nId);
diff --git a/devel/electron4/files/patch-chrome_browser_safe__browsing_incident__reporting_incident__handler__util.cc b/devel/electron4/files/patch-chrome_browser_safe__browsing_incident__reporting_incident__handler__util.cc
new file mode 100644
index 000000000000..914efa8bcf54
--- /dev/null
+++ b/devel/electron4/files/patch-chrome_browser_safe__browsing_incident__reporting_incident__handler__util.cc
@@ -0,0 +1,15 @@
+--- chrome/browser/safe_browsing/incident_reporting/incident_handler_util.cc.orig 2019-03-15 06:25:33 UTC
++++ chrome/browser/safe_browsing/incident_reporting/incident_handler_util.cc
+@@ -8,7 +8,12 @@
+
+ #include "base/hash.h"
+ #include "base/logging.h"
++//XXX(rene) needs shim headers?
++#if defined(USE_SYSTEM_PROTOBUF)
++#include <google/protobuf/message_lite.h>
++#else
+ #include "third_party/protobuf/src/google/protobuf/message_lite.h"
++#endif
+
+ namespace safe_browsing {
+
diff --git a/devel/electron4/files/patch-chrome_browser_safe__browsing_incident__reporting_incident__reporting__service.cc b/devel/electron4/files/patch-chrome_browser_safe__browsing_incident__reporting_incident__reporting__service.cc
new file mode 100644
index 000000000000..08fbeae3f9fa
--- /dev/null
+++ b/devel/electron4/files/patch-chrome_browser_safe__browsing_incident__reporting_incident__reporting__service.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/safe_browsing/incident_reporting/incident_reporting_service.cc.orig 2019-03-15 06:37:05 UTC
++++ chrome/browser/safe_browsing/incident_reporting/incident_reporting_service.cc
+@@ -715,7 +715,7 @@ void IncidentReportingService::OnEnvironmentDataCollec
+ environment_collection_pending_ = false;
+
+ // CurrentProcessInfo::CreationTime() is missing on some platforms.
+-#if defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_LINUX)
++#if defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD)
+ base::TimeDelta uptime =
+ first_incident_time_ - base::CurrentProcessInfo::CreationTime();
+ environment_data->mutable_process()->set_uptime_msec(uptime.InMilliseconds());
diff --git a/devel/electron4/files/patch-chrome_browser_search_local__files__ntp__source.cc b/devel/electron4/files/patch-chrome_browser_search_local__files__ntp__source.cc
new file mode 100644
index 000000000000..eefe27620b10
--- /dev/null
+++ b/devel/electron4/files/patch-chrome_browser_search_local__files__ntp__source.cc
@@ -0,0 +1,16 @@
+--- chrome/browser/search/local_files_ntp_source.cc.orig 2019-03-15 06:37:05 UTC
++++ chrome/browser/search/local_files_ntp_source.cc
+@@ -20,8 +20,13 @@
+ #include "build/build_config.h"
+ #include "chrome/common/url_constants.h"
+ #include "content/public/browser/url_data_source.h"
++#if defined(OS_BSD)
++#include <re2/re2.h>
++#include <re2/stringpiece.h>
++#else
+ #include "third_party/re2/src/re2/re2.h"
+ #include "third_party/re2/src/re2/stringpiece.h"
++#endif
+
+ namespace {
+
diff --git a/devel/electron4/files/patch-chrome_browser_speech_tts__controller__impl.cc b/devel/electron4/files/patch-chrome_browser_speech_tts__controller__impl.cc
new file mode 100644
index 000000000000..7856441802b2
--- /dev/null
+++ b/devel/electron4/files/patch-chrome_browser_speech_tts__controller__impl.cc
@@ -0,0 +1,16 @@
+--- chrome/browser/speech/tts_controller_impl.cc.orig 2019-03-16 09:15:21 UTC
++++ chrome/browser/speech/tts_controller_impl.cc
+@@ -449,9 +449,13 @@ int TtsControllerImpl::QueueSize() {
+ }
+
+ TtsPlatformImpl* TtsControllerImpl::GetPlatformImpl() {
++#if defined(OS_BSD)
++ return NULL;
++#else
+ if (!platform_impl_)
+ platform_impl_ = TtsPlatformImpl::GetInstance();
+ return platform_impl_;
++#endif
+ }
+
+ int TtsControllerImpl::GetMatchingVoice(
diff --git a/devel/electron4/files/patch-chrome_browser_ssl_ssl__error__controller__client.cc b/devel/electron4/files/patch-chrome_browser_ssl_ssl__error__controller__client.cc
new file mode 100644
index 000000000000..93a94c89453e
--- /dev/null
+++ b/devel/electron4/files/patch-chrome_browser_ssl_ssl__error__controller__client.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/ssl/ssl_error_controller_client.cc.orig 2019-03-15 06:37:06 UTC
++++ chrome/browser/ssl/ssl_error_controller_client.cc
+@@ -77,7 +77,7 @@ void LaunchDateAndTimeSettingsImpl() {
+ #if defined(OS_ANDROID)
+ chrome::android::OpenDateAndTimeSettings();
+
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ struct ClockCommand {
+ const char* const pathname;
+ const char* const argument;
+@@ -219,7 +219,7 @@ void SSLErrorControllerClient::Proceed() {
+
+ bool SSLErrorControllerClient::CanLaunchDateAndTimeSettings() {
+ #if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_MACOSX) || \
+- defined(OS_WIN)
++ defined(OS_WIN) || defined(OS_BSD)
+ return true;
+ #else
+ return false;
diff --git a/devel/electron4/files/patch-chrome_browser_sync_chrome__sync__client.cc b/devel/electron4/files/patch-chrome_browser_sync_chrome__sync__client.cc
new file mode 100644
index 000000000000..e6b2240632b0
--- /dev/null
+++ b/devel/electron4/files/patch-chrome_browser_sync_chrome__sync__client.cc
@@ -0,0 +1,19 @@
+--- chrome/browser/sync/chrome_sync_client.cc.orig 2019-03-15 06:37:06 UTC
++++ chrome/browser/sync/chrome_sync_client.cc
+@@ -389,14 +389,14 @@ ChromeSyncClient::CreateDataTypeControllers(
+ BrowserThread::GetTaskRunnerForThread(BrowserThread::UI)));
+ #endif // BUILDFLAG(ENABLE_APP_LIST)
+
+-#if defined(OS_LINUX) || defined(OS_WIN)
++#if defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD)
+ // Dictionary sync is enabled by default.
+ if (!disabled_types.Has(syncer::DICTIONARY)) {
+ controllers.push_back(std::make_unique<AsyncDirectoryTypeController>(
+ syncer::DICTIONARY, error_callback, this, syncer::GROUP_UI,
+ BrowserThread::GetTaskRunnerForThread(BrowserThread::UI)));
+ }
+-#endif // defined(OS_LINUX) || defined(OS_WIN)
++#endif // defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD)
+
+ #if defined(OS_CHROMEOS)
+ if (base::CommandLine::ForCurrentProcess()->HasSwitch(
diff --git a/devel/electron4/files/patch-chrome_browser_task__manager_sampling_task__group.cc b/devel/electron4/files/patch-chrome_browser_task__manager_sampling_task__group.cc
new file mode 100644
index 000000000000..0a3b8c4191c2
--- /dev/null
+++ b/devel/electron4/files/patch-chrome_browser_task__manager_sampling_task__group.cc
@@ -0,0 +1,56 @@
+--- chrome/browser/task_manager/sampling/task_group.cc.orig 2019-03-15 06:37:06 UTC
++++ chrome/browser/task_manager/sampling/task_group.cc
+@@ -32,9 +32,9 @@ const int kBackgroundRefreshTypesMask =
+ #if defined(OS_WIN)
+ REFRESH_TYPE_START_TIME | REFRESH_TYPE_CPU_TIME |
+ #endif // defined(OS_WIN)
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ REFRESH_TYPE_FD_COUNT |
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+ #if BUILDFLAG(ENABLE_NACL)
+ REFRESH_TYPE_NACL |
+ #endif // BUILDFLAG(ENABLE_NACL)
+@@ -109,9 +109,9 @@ TaskGroup::TaskGroup(
+ #if BUILDFLAG(ENABLE_NACL)
+ nacl_debug_stub_port_(nacl::kGdbDebugStubPortUnknown),
+ #endif // BUILDFLAG(ENABLE_NACL)
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ open_fd_count_(-1),
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+ idle_wakeups_per_second_(-1),
+ gpu_memory_has_duplicates_(false),
+ is_backgrounded_(false),
+@@ -125,10 +125,10 @@ TaskGroup::TaskGroup(
+ weak_ptr_factory_.GetWeakPtr()),
+ base::Bind(&TaskGroup::OnIdleWakeupsRefreshDone,
+ weak_ptr_factory_.GetWeakPtr()),
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ base::Bind(&TaskGroup::OnOpenFdCountRefreshDone,
+ weak_ptr_factory_.GetWeakPtr()),
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+ base::Bind(&TaskGroup::OnProcessPriorityDone,
+ weak_ptr_factory_.GetWeakPtr()));
+
+@@ -288,14 +288,14 @@ void TaskGroup::OnRefreshNaClDebugStubPortDone(int nac
+ }
+ #endif // BUILDFLAG(ENABLE_NACL)
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ void TaskGroup::OnOpenFdCountRefreshDone(int open_fd_count) {
+ DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
+
+ open_fd_count_ = open_fd_count;
+ OnBackgroundRefreshTypeFinished(REFRESH_TYPE_FD_COUNT);
+ }
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+
+ void TaskGroup::OnCpuRefreshDone(double cpu_usage) {
+ DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
diff --git a/devel/electron4/files/patch-chrome_browser_task__manager_sampling_task__group.h b/devel/electron4/files/patch-chrome_browser_task__manager_sampling_task__group.h
new file mode 100644
index 000000000000..ea7140bf7b1d
--- /dev/null
+++ b/devel/electron4/files/patch-chrome_browser_task__manager_sampling_task__group.h
@@ -0,0 +1,39 @@
+--- chrome/browser/task_manager/sampling/task_group.h.orig 2019-03-15 06:37:06 UTC
++++ chrome/browser/task_manager/sampling/task_group.h
+@@ -103,9 +103,9 @@ class TaskGroup {
+ int nacl_debug_stub_port() const { return nacl_debug_stub_port_; }
+ #endif // BUILDFLAG(ENABLE_NACL)
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ int open_fd_count() const { return open_fd_count_; }
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+
+ int idle_wakeups_per_second() const { return idle_wakeups_per_second_; }
+
+@@ -119,9 +119,9 @@ class TaskGroup {
+ void RefreshNaClDebugStubPort(int child_process_unique_id);
+ void OnRefreshNaClDebugStubPortDone(int port);
+ #endif
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ void OnOpenFdCountRefreshDone(int open_fd_count);
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+
+ void OnCpuRefreshDone(double cpu_usage);
+ void OnSwappedMemRefreshDone(int64_t swapped_mem_bytes);
+@@ -181,10 +181,10 @@ class TaskGroup {
+ #if BUILDFLAG(ENABLE_NACL)
+ int nacl_debug_stub_port_;
+ #endif // BUILDFLAG(ENABLE_NACL)
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // The number of file descriptors currently open by the process.
+ int open_fd_count_;
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+ int idle_wakeups_per_second_;
+ bool gpu_memory_has_duplicates_;
+ bool is_backgrounded_;
diff --git a/devel/electron4/files/patch-chrome_browser_task__manager_sampling_task__group__sampler.cc b/devel/electron4/files/patch-chrome_browser_task__manager_sampling_task__group__sampler.cc
new file mode 100644
index 000000000000..6dbd4d16c0c2
--- /dev/null
+++ b/devel/electron4/files/patch-chrome_browser_task__manager_sampling_task__group__sampler.cc
@@ -0,0 +1,44 @@
+--- chrome/browser/task_manager/sampling/task_group_sampler.cc.orig 2019-03-15 06:37:06 UTC
++++ chrome/browser/task_manager/sampling/task_group_sampler.cc
+@@ -42,9 +42,9 @@ TaskGroupSampler::TaskGroupSampler(
+ const OnCpuRefreshCallback& on_cpu_refresh,
+ const OnSwappedMemRefreshCallback& on_swapped_mem_refresh,
+ const OnIdleWakeupsCallback& on_idle_wakeups,
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ const OnOpenFdCountCallback& on_open_fd_count,
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+ const OnProcessPriorityCallback& on_process_priority)
+ : process_(std::move(process)),
+ process_metrics_(CreateProcessMetrics(process_.Handle())),
+@@ -52,9 +52,9 @@ TaskGroupSampler::TaskGroupSampler(
+ on_cpu_refresh_callback_(on_cpu_refresh),
+ on_swapped_mem_refresh_callback_(on_swapped_mem_refresh),
+ on_idle_wakeups_callback_(on_idle_wakeups),
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ on_open_fd_count_callback_(on_open_fd_count),
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+ on_process_priority_callback_(on_process_priority) {
+ DCHECK(blocking_pool_runner.get());
+
+@@ -85,7 +85,7 @@ void TaskGroupSampler::Refresh(int64_t refresh_flags)
+ on_swapped_mem_refresh_callback_);
+ }
+
+-#if defined(OS_MACOSX) || defined(OS_LINUX)
++#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+ if (TaskManagerObserver::IsResourceRefreshEnabled(REFRESH_TYPE_IDLE_WAKEUPS,
+ refresh_flags)) {
+ base::PostTaskAndReplyWithResult(
+@@ -94,7 +94,7 @@ void TaskGroupSampler::Refresh(int64_t refresh_flags)
+ base::Bind(&TaskGroupSampler::RefreshIdleWakeupsPerSecond, this),
+ on_idle_wakeups_callback_);
+ }
+-#endif // defined(OS_MACOSX) || defined(OS_LINUX)
++#endif // defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+
+ #if defined(OS_LINUX)
+ if (TaskManagerObserver::IsResourceRefreshEnabled(REFRESH_TYPE_FD_COUNT,
diff --git a/devel/electron4/files/patch-chrome_browser_task__manager_sampling_task__group__sampler.h b/devel/electron4/files/patch-chrome_browser_task__manager_sampling_task__group__sampler.h
new file mode 100644
index 000000000000..491defc3c900
--- /dev/null
+++ b/devel/electron4/files/patch-chrome_browser_task__manager_sampling_task__group__sampler.h
@@ -0,0 +1,50 @@
+--- chrome/browser/task_manager/sampling/task_group_sampler.h.orig 2019-03-15 06:37:06 UTC
++++ chrome/browser/task_manager/sampling/task_group_sampler.h
+@@ -32,9 +32,9 @@ class TaskGroupSampler : public base::RefCountedThread
+ using OnCpuRefreshCallback = base::Callback<void(double)>;
+ using OnSwappedMemRefreshCallback = base::Callback<void(int64_t)>;
+ using OnIdleWakeupsCallback = base::Callback<void(int)>;
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ using OnOpenFdCountCallback = base::Callback<void(int)>;
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+ using OnProcessPriorityCallback = base::Callback<void(bool)>;
+
+ TaskGroupSampler(
+@@ -43,9 +43,9 @@ class TaskGroupSampler : public base::RefCountedThread
+ const OnCpuRefreshCallback& on_cpu_refresh,
+ const OnSwappedMemRefreshCallback& on_memory_refresh,
+ const OnIdleWakeupsCallback& on_idle_wakeups,
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ const OnOpenFdCountCallback& on_open_fd_count,
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+ const OnProcessPriorityCallback& on_process_priority);
+
+ // Refreshes the expensive process' stats (CPU usage, memory usage, and idle
+@@ -60,9 +60,9 @@ class TaskGroupSampler : public base::RefCountedThread
+ double RefreshCpuUsage();
+ int64_t RefreshSwappedMem();
+ int RefreshIdleWakeupsPerSecond();
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ int RefreshOpenFdCount();
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+ bool RefreshProcessPriority();
+
+ // The process that holds the handle that we own so that we can use it for
+@@ -80,9 +80,9 @@ class TaskGroupSampler : public base::RefCountedThread
+ const OnCpuRefreshCallback on_cpu_refresh_callback_;
+ const OnSwappedMemRefreshCallback on_swapped_mem_refresh_callback_;
+ const OnIdleWakeupsCallback on_idle_wakeups_callback_;
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ const OnOpenFdCountCallback on_open_fd_count_callback_;
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+ const OnProcessPriorityCallback on_process_priority_callback_;
+
+ // To assert we're running on the correct thread.
diff --git a/devel/electron4/files/patch-chrome_browser_task__manager_sampling_task__manager__impl.cc b/devel/electron4/files/patch-chrome_browser_task__manager_sampling_task__manager__impl.cc
new file mode 100644
index 000000000000..59c2d87c6034
--- /dev/null
+++ b/devel/electron4/files/patch-chrome_browser_task__manager_sampling_task__manager__impl.cc
@@ -0,0 +1,16 @@
+--- chrome/browser/task_manager/sampling/task_manager_impl.cc.orig 2019-03-15 06:37:06 UTC
++++ chrome/browser/task_manager/sampling/task_manager_impl.cc
+@@ -205,11 +205,11 @@ void TaskManagerImpl::GetUSERHandles(TaskId task_id,
+ }
+
+ int TaskManagerImpl::GetOpenFdCount(TaskId task_id) const {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ return GetTaskGroupByTaskId(task_id)->open_fd_count();
+ #else
+ return -1;
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+ }
+
+ bool TaskManagerImpl::IsTaskOnBackgroundedProcess(TaskId task_id) const {
diff --git a/devel/electron4/files/patch-chrome_browser_task__manager_task__manager__observer.h b/devel/electron4/files/patch-chrome_browser_task__manager_task__manager__observer.h
new file mode 100644
index 000000000000..8c186996133e
--- /dev/null
+++ b/devel/electron4/files/patch-chrome_browser_task__manager_task__manager__observer.h
@@ -0,0 +1,16 @@
+--- chrome/browser/task_manager/task_manager_observer.h.orig 2019-03-15 06:37:06 UTC
++++ chrome/browser/task_manager/task_manager_observer.h
+@@ -43,11 +43,11 @@ enum RefreshType {
+ // or backgrounded.
+ REFRESH_TYPE_PRIORITY = 1 << 13,
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // For observers interested in getting the number of open file descriptors of
+ // processes.
+ REFRESH_TYPE_FD_COUNT = 1 << 14,
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+
+ REFRESH_TYPE_MEMORY_STATE = 1 << 15,
+ REFRESH_TYPE_KEEPALIVE_COUNT = 1 << 16,
diff --git a/devel/electron4/files/patch-chrome_browser_tracing_crash__service__uploader.cc b/devel/electron4/files/patch-chrome_browser_tracing_crash__service__uploader.cc
new file mode 100644
index 000000000000..54697c6f92f2
--- /dev/null
+++ b/devel/electron4/files/patch-chrome_browser_tracing_crash__service__uploader.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/tracing/crash_service_uploader.cc.orig 2019-03-15 06:37:06 UTC
++++ chrome/browser/tracing/crash_service_uploader.cc
+@@ -158,6 +158,8 @@ void TraceCrashServiceUploader::DoCompressOnBackground
+ const char product[] = "Chrome_Linux";
+ #elif defined(OS_ANDROID)
+ const char product[] = "Chrome_Android";
++#elif defined(OS_FREEBSD)
++ const char product[] = "Chrome_FreeBSD";
+ #else
+ #error Platform not supported.
+ #endif
diff --git a/devel/electron4/files/patch-chrome_browser_ui_browser__command__controller.cc b/devel/electron4/files/patch-chrome_browser_ui_browser__command__controller.cc
new file mode 100644
index 000000000000..aff726887f56
--- /dev/null
+++ b/devel/electron4/files/patch-chrome_browser_ui_browser__command__controller.cc
@@ -0,0 +1,38 @@
+--- chrome/browser/ui/browser_command_controller.cc.orig 2019-03-15 06:37:06 UTC
++++ chrome/browser/ui/browser_command_controller.cc
+@@ -77,7 +77,7 @@
+ #include "chrome/browser/ui/browser_commands_chromeos.h"
+ #endif
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ #include "ui/base/ime/linux/text_edit_key_bindings_delegate_auralinux.h"
+ #endif
+
+@@ -210,7 +210,7 @@ bool BrowserCommandController::IsReservedCommandOrKey(
+ #endif
+ }
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ // If this key was registered by the user as a content editing hotkey, then
+ // it is not reserved.
+ ui::TextEditKeyBindingsDelegateAuraLinux* delegate =
+@@ -415,7 +415,7 @@ bool BrowserCommandController::ExecuteCommandWithDispo
+ break;
+ #endif
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ case IDC_MINIMIZE_WINDOW:
+ browser_->window()->Minimize();
+ break;
+@@ -840,7 +840,7 @@ void BrowserCommandController::InitCommandState() {
+ command_updater_.UpdateCommandEnabled(IDC_VISIT_DESKTOP_OF_LRU_USER_2, true);
+ command_updater_.UpdateCommandEnabled(IDC_VISIT_DESKTOP_OF_LRU_USER_3, true);
+ #endif
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ command_updater_.UpdateCommandEnabled(IDC_MINIMIZE_WINDOW, true);
+ command_updater_.UpdateCommandEnabled(IDC_MAXIMIZE_WINDOW, true);
+ command_updater_.UpdateCommandEnabled(IDC_RESTORE_WINDOW, true);
diff --git a/devel/electron4/files/patch-chrome_browser_ui_exclusive__access_exclusive__access__bubble.cc b/devel/electron4/files/patch-chrome_browser_ui_exclusive__access_exclusive__access__bubble.cc
new file mode 100644
index 000000000000..9a8cdc88b4e1
--- /dev/null
+++ b/devel/electron4/files/patch-chrome_browser_ui_exclusive__access_exclusive__access__bubble.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/ui/exclusive_access/exclusive_access_bubble.cc.orig 2019-03-15 06:25:34 UTC
++++ chrome/browser/ui/exclusive_access/exclusive_access_bubble.cc
+@@ -16,7 +16,7 @@
+
+ // NOTE(koz): Linux doesn't use the thick shadowed border, so we add padding
+ // here.
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ const int ExclusiveAccessBubble::kPaddingPx = 8;
+ #else
+ const int ExclusiveAccessBubble::kPaddingPx = 15;
diff --git a/devel/electron4/files/patch-chrome_browser_ui_input__method_input__method__engine.h b/devel/electron4/files/patch-chrome_browser_ui_input__method_input__method__engine.h
new file mode 100644
index 000000000000..fc56cc3e5dd1
--- /dev/null
+++ b/devel/electron4/files/patch-chrome_browser_ui_input__method_input__method__engine.h
@@ -0,0 +1,11 @@
+--- chrome/browser/ui/input_method/input_method_engine.h.orig 2019-03-15 06:37:06 UTC
++++ chrome/browser/ui/input_method/input_method_engine.h
+@@ -27,7 +27,7 @@ class InputMethodEngine : public InputMethodEngineBase
+
+ // ui::IMEEngineHandlerInterface:
+ bool IsActive() const override;
+- std::string GetExtensionId() const override;
++ std::string GetExtensionId() const;
+
+ // Creates and shows the IME window.
+ // Returns 0 for errors and |error| will contains the error message.
diff --git a/devel/electron4/files/patch-chrome_browser_ui_input__method_input__method__engine__base.cc b/devel/electron4/files/patch-chrome_browser_ui_input__method_input__method__engine__base.cc
new file mode 100644
index 000000000000..bcac258b0186
--- /dev/null
+++ b/devel/electron4/files/patch-chrome_browser_ui_input__method_input__method__engine__base.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/ui/input_method/input_method_engine_base.cc.orig 2019-03-15 06:37:06 UTC
++++ chrome/browser/ui/input_method/input_method_engine_base.cc
+@@ -31,7 +31,7 @@
+ #include "ui/base/ime/chromeos/ime_keymap.h"
+ #elif defined(OS_WIN)
+ #include "ui/events/keycodes/keyboard_codes_win.h"
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ #include "ui/events/keycodes/keyboard_codes_posix.h"
+ #endif
+
diff --git a/devel/electron4/files/patch-chrome_browser_ui_libgtkui_print__dialog__gtk.cc b/devel/electron4/files/patch-chrome_browser_ui_libgtkui_print__dialog__gtk.cc
new file mode 100644
index 000000000000..c63c49612184
--- /dev/null
+++ b/devel/electron4/files/patch-chrome_browser_ui_libgtkui_print__dialog__gtk.cc
@@ -0,0 +1,10 @@
+--- chrome/browser/ui/libgtkui/print_dialog_gtk.cc.orig 2019-03-15 06:37:06 UTC
++++ chrome/browser/ui/libgtkui/print_dialog_gtk.cc
+@@ -350,6 +350,7 @@ void PrintDialogGtk2::ShowDialog(
+ // Since we only generate PDF, only show printers that support PDF.
+ // TODO(thestig) Add more capabilities to support?
+ GtkPrintCapabilities cap = static_cast<GtkPrintCapabilities>(
++ GTK_PRINT_CAPABILITY_GENERATE_PS |
+ GTK_PRINT_CAPABILITY_GENERATE_PDF |
+ GTK_PRINT_CAPABILITY_PAGE_SET |
+ GTK_PRINT_CAPABILITY_COPIES |
diff --git a/devel/electron4/files/patch-chrome_browser_ui_sad__tab.cc b/devel/electron4/files/patch-chrome_browser_ui_sad__tab.cc
new file mode 100644
index 000000000000..3bebb0c90bb0
--- /dev/null
+++ b/devel/electron4/files/patch-chrome_browser_ui_sad__tab.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/ui/sad_tab.cc.orig 2019-03-15 06:25:34 UTC
++++ chrome/browser/ui/sad_tab.cc
+@@ -180,7 +180,7 @@ std::vector<int> SadTab::GetSubMessages() {
+ // Only show incognito suggestion if not already in Incognito mode.
+ if (!web_contents_->GetBrowserContext()->IsOffTheRecord())
+ message_ids.insert(message_ids.begin(), IDS_SAD_TAB_RELOAD_INCOGNITO);
+-#if defined(OS_MACOSX) || defined(OS_LINUX)
++#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+ // Note: on macOS, Linux and ChromeOS, the first bullet is either one of
+ // IDS_SAD_TAB_RELOAD_CLOSE_TABS or IDS_SAD_TAB_RELOAD_CLOSE_NOTABS
+ // followed by one of the above suggestions.
diff --git a/devel/electron4/files/patch-chrome_browser_ui_startup_bad__flags__prompt.cc b/devel/electron4/files/patch-chrome_browser_ui_startup_bad__flags__prompt.cc
new file mode 100644
index 000000000000..6fcff97a10b7
--- /dev/null
+++ b/devel/electron4/files/patch-chrome_browser_ui_startup_bad__flags__prompt.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/ui/startup/bad_flags_prompt.cc.orig 2019-03-15 06:37:06 UTC
++++ chrome/browser/ui/startup/bad_flags_prompt.cc
+@@ -82,7 +82,7 @@ static const char* kBadFlags[] = {
+ extensions::switches::kExtensionsOnChromeURLs,
+ #endif
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ // Speech dispatcher is buggy, it can crash and it can make Chrome freeze.
+ // http://crbug.com/327295
+ switches::kEnableSpeechDispatcher,
diff --git a/devel/electron4/files/patch-chrome_browser_ui_startup_startup__browser__creator.cc b/devel/electron4/files/patch-chrome_browser_ui_startup_startup__browser__creator.cc
new file mode 100644
index 000000000000..c9967ce7d047
--- /dev/null
+++ b/devel/electron4/files/patch-chrome_browser_ui_startup_startup__browser__creator.cc
@@ -0,0 +1,22 @@
+--- chrome/browser/ui/startup/startup_browser_creator.cc.orig 2019-04-06 12:09:25 UTC
++++ chrome/browser/ui/startup/startup_browser_creator.cc
+@@ -79,7 +79,7 @@
+ #include "chrome/browser/ui/user_manager.h"
+ #endif
+
+-#if defined(TOOLKIT_VIEWS) && defined(OS_LINUX)
++#if defined(TOOLKIT_VIEWS) && (defined(OS_LINUX) || defined(OS_BSD))
+ #include "ui/events/devices/x11/touch_factory_x11.h" // nogncheck
+ #endif
+
+@@ -630,8 +630,10 @@ bool StartupBrowserCreator::ProcessCmdLineImpl(
+ }
+ #endif // OS_CHROMEOS
+
++#if 0 /* XXX */
+ #if defined(TOOLKIT_VIEWS) && defined(USE_X11)
+ ui::TouchFactory::SetTouchDeviceListFromCommandLine();
++#endif
+ #endif
+
+ #if defined(OS_MACOSX)
diff --git a/devel/electron4/files/patch-chrome_browser_ui_tab__helpers.cc b/devel/electron4/files/patch-chrome_browser_ui_tab__helpers.cc
new file mode 100644
index 000000000000..ab2fe9b7316f
--- /dev/null
+++ b/devel/electron4/files/patch-chrome_browser_ui_tab__helpers.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/ui/tab_helpers.cc.orig 2019-03-15 06:37:06 UTC
++++ chrome/browser/ui/tab_helpers.cc
+@@ -306,7 +306,7 @@ void TabHelpers::AttachTabHelpers(WebContents* web_con
+ #endif
+
+ #if defined(OS_WIN) || defined(OS_MACOSX) || \
+- (defined(OS_LINUX) && !defined(OS_CHROMEOS))
++ (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ metrics::DesktopSessionDurationObserver::CreateForWebContents(web_contents);
+ #endif
+
diff --git a/devel/electron4/files/patch-chrome_browser_ui_task__manager_task__manager__columns.cc b/devel/electron4/files/patch-chrome_browser_ui_task__manager_task__manager__columns.cc
new file mode 100644
index 000000000000..90711ca1c235
--- /dev/null
+++ b/devel/electron4/files/patch-chrome_browser_ui_task__manager_task__manager__columns.cc
@@ -0,0 +1,15 @@
+--- chrome/browser/ui/task_manager/task_manager_columns.cc.orig 2019-03-15 06:37:06 UTC
++++ chrome/browser/ui/task_manager/task_manager_columns.cc
+@@ -93,10 +93,10 @@ const TableColumnData kColumns[] = {
+ arraysize("100000") * kCharWidth, -1, true, false, false},
+ #endif
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ {IDS_TASK_MANAGER_OPEN_FD_COUNT_COLUMN, ui::TableColumn::RIGHT, -1, 0,
+ arraysize("999") * kCharWidth, -1, true, false, false},
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+ {IDS_TASK_MANAGER_PROCESS_PRIORITY_COLUMN, ui::TableColumn::LEFT, -1, 0,
+ arraysize("background") * kCharWidth, -1, true, true, false},
+ {IDS_TASK_MANAGER_MEMORY_STATE_COLUMN, ui::TableColumn::LEFT, -1, 0,
diff --git a/devel/electron4/files/patch-chrome_browser_ui_task__manager_task__manager__table__model.cc b/devel/electron4/files/patch-chrome_browser_ui_task__manager_task__manager__table__model.cc
new file mode 100644
index 000000000000..6cc5d9e0db9d
--- /dev/null
+++ b/devel/electron4/files/patch-chrome_browser_ui_task__manager_task__manager__table__model.cc
@@ -0,0 +1,50 @@
+--- chrome/browser/ui/task_manager/task_manager_table_model.cc.orig 2019-03-15 06:37:06 UTC
++++ chrome/browser/ui/task_manager/task_manager_table_model.cc
+@@ -457,13 +457,13 @@ base::string16 TaskManagerTableModel::GetText(int row,
+ ? stringifier_->backgrounded_string()
+ : stringifier_->foregrounded_string();
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ case IDS_TASK_MANAGER_OPEN_FD_COUNT_COLUMN: {
+ const int fd_count = observed_task_manager()->GetOpenFdCount(tasks_[row]);
+ return fd_count >= 0 ? base::FormatNumber(fd_count)
+ : stringifier_->n_a_string();
+ }
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+
+ case IDS_TASK_MANAGER_MEMORY_STATE_COLUMN: {
+ return stringifier_->GetMemoryStateText(
+@@ -623,7 +623,7 @@ int TaskManagerTableModel::CompareValues(int row1,
+ return BooleanCompare(is_proc1_bg, is_proc2_bg);
+ }
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ case IDS_TASK_MANAGER_OPEN_FD_COUNT_COLUMN: {
+ const int proc1_fd_count =
+ observed_task_manager()->GetOpenFdCount(tasks_[row1]);
+@@ -631,7 +631,7 @@ int TaskManagerTableModel::CompareValues(int row1,
+ observed_task_manager()->GetOpenFdCount(tasks_[row2]);
+ return ValueCompare(proc1_fd_count, proc2_fd_count);
+ }
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+
+ default:
+ NOTREACHED();
+@@ -797,11 +797,11 @@ void TaskManagerTableModel::UpdateRefreshTypes(int col
+ type = REFRESH_TYPE_KEEPALIVE_COUNT;
+ break;
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ case IDS_TASK_MANAGER_OPEN_FD_COUNT_COLUMN:
+ type = REFRESH_TYPE_FD_COUNT;
+ break;
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+
+ default:
+ NOTREACHED();
diff --git a/devel/electron4/files/patch-chrome_browser_ui_toolbar_app__menu__model.cc b/devel/electron4/files/patch-chrome_browser_ui_toolbar_app__menu__model.cc
new file mode 100644
index 000000000000..e9018ba99f40
--- /dev/null
+++ b/devel/electron4/files/patch-chrome_browser_ui_toolbar_app__menu__model.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/ui/toolbar/app_menu_model.cc.orig 2019-03-15 06:37:06 UTC
++++ chrome/browser/ui/toolbar/app_menu_model.cc
+@@ -664,7 +664,7 @@ bool AppMenuModel::IsCommandIdVisible(int command_id)
+ case IDC_UPGRADE_DIALOG:
+ return browser_defaults::kShowUpgradeMenuItem &&
+ UpgradeDetector::GetInstance()->notify_upgrade();
+-#if !defined(OS_LINUX) || defined(USE_AURA)
++#if (!defined(OS_LINUX) && !defined(OS_BSD)) || defined(USE_AURA)
+ case IDC_BOOKMARK_PAGE:
+ return !chrome::ShouldRemoveBookmarkThisPageUI(browser_->profile());
+ case IDC_BOOKMARK_ALL_TABS:
diff --git a/devel/electron4/files/patch-chrome_browser_ui_views_accelerator__table.cc b/devel/electron4/files/patch-chrome_browser_ui_views_accelerator__table.cc
new file mode 100644
index 000000000000..96f5c5e0c33c
--- /dev/null
+++ b/devel/electron4/files/patch-chrome_browser_ui_views_accelerator__table.cc
@@ -0,0 +1,29 @@
+--- chrome/browser/ui/views/accelerator_table.cc.orig 2019-03-15 06:37:06 UTC
++++ chrome/browser/ui/views/accelerator_table.cc
+@@ -49,7 +49,7 @@ const AcceleratorMapping kAcceleratorMap[] = {
+ {ui::VKEY_S, ui::EF_PLATFORM_ACCELERATOR, IDC_SAVE_PAGE},
+ {ui::VKEY_9, ui::EF_PLATFORM_ACCELERATOR, IDC_SELECT_LAST_TAB},
+ {ui::VKEY_NUMPAD9, ui::EF_PLATFORM_ACCELERATOR, IDC_SELECT_LAST_TAB},
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ {ui::VKEY_9, ui::EF_ALT_DOWN, IDC_SELECT_LAST_TAB},
+ {ui::VKEY_NUMPAD9, ui::EF_ALT_DOWN, IDC_SELECT_LAST_TAB},
+ {ui::VKEY_NEXT, ui::EF_CONTROL_DOWN | ui::EF_SHIFT_DOWN, IDC_MOVE_TAB_NEXT},
+@@ -79,7 +79,7 @@ const AcceleratorMapping kAcceleratorMap[] = {
+ {ui::VKEY_NUMPAD7, ui::EF_PLATFORM_ACCELERATOR, IDC_SELECT_TAB_6},
+ {ui::VKEY_8, ui::EF_PLATFORM_ACCELERATOR, IDC_SELECT_TAB_7},
+ {ui::VKEY_NUMPAD8, ui::EF_PLATFORM_ACCELERATOR, IDC_SELECT_TAB_7},
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ {ui::VKEY_1, ui::EF_ALT_DOWN, IDC_SELECT_TAB_0},
+ {ui::VKEY_NUMPAD1, ui::EF_ALT_DOWN, IDC_SELECT_TAB_0},
+ {ui::VKEY_2, ui::EF_ALT_DOWN, IDC_SELECT_TAB_1},
+@@ -121,7 +121,7 @@ const AcceleratorMapping kAcceleratorMap[] = {
+ {ui::VKEY_F11, ui::EF_NONE, IDC_FULLSCREEN},
+
+ // Platform-specific key maps.
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ {ui::VKEY_BROWSER_BACK, ui::EF_NONE, IDC_BACK},
+ {ui::VKEY_BROWSER_FORWARD, ui::EF_NONE, IDC_FORWARD},
+ {ui::VKEY_BROWSER_HOME, ui::EF_NONE, IDC_HOME},
diff --git a/devel/electron4/files/patch-chrome_browser_ui_views_chrome__browser__main__extra__parts__views.cc b/devel/electron4/files/patch-chrome_browser_ui_views_chrome__browser__main__extra__parts__views.cc
new file mode 100644
index 000000000000..9979195f9e1a
--- /dev/null
+++ b/devel/electron4/files/patch-chrome_browser_ui_views_chrome__browser__main__extra__parts__views.cc
@@ -0,0 +1,38 @@
+--- chrome/browser/ui/views/chrome_browser_main_extra_parts_views.cc.orig 2019-03-15 06:37:06 UTC
++++ chrome/browser/ui/views/chrome_browser_main_extra_parts_views.cc
+@@ -38,7 +38,7 @@
+ #include "ui/wm/core/wm_state.h"
+ #endif // defined(USE_AURA)
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS)
+ #include <sys/stat.h>
+ #include <sys/types.h>
+ #include <unistd.h>
+@@ -48,7 +48,7 @@
+ #include "chrome/grit/generated_resources.h"
+ #include "content/public/common/content_switches.h"
+ #include "ui/base/l10n/l10n_util.h"
+-#endif // defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#endif // (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS)
+
+ #if defined(OS_CHROMEOS)
+ #include "ash/public/interfaces/constants.mojom.h"
+@@ -119,7 +119,7 @@ void ChromeBrowserMainExtraPartsViews::PreProfileInit(
+ }
+ #endif
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS)
+ // On the Linux desktop, we want to prevent the user from logging in as root,
+ // so that we don't destroy the profile. Now that we have some minimal ui
+ // initialized, check to see if we're running as root and bail if we are.
+@@ -150,7 +150,7 @@ void ChromeBrowserMainExtraPartsViews::PreProfileInit(
+ base::RunLoop().RunUntilIdle();
+
+ exit(EXIT_FAILURE);
+-#endif // defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#endif // (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS)
+ }
+
+ void ChromeBrowserMainExtraPartsViews::ServiceManagerConnectionStarted(
diff --git a/devel/electron4/files/patch-chrome_browser_ui_views_chrome__views__delegate.h b/devel/electron4/files/patch-chrome_browser_ui_views_chrome__views__delegate.h
new file mode 100644
index 000000000000..8cf88d9a305a
--- /dev/null
+++ b/devel/electron4/files/patch-chrome_browser_ui_views_chrome__views__delegate.h
@@ -0,0 +1,11 @@
+--- chrome/browser/ui/views/chrome_views_delegate.h.orig 2019-03-15 06:37:06 UTC
++++ chrome/browser/ui/views/chrome_views_delegate.h
+@@ -43,7 +43,7 @@ class ChromeViewsDelegate : public views::ViewsDelegat
+ HICON GetSmallWindowIcon() const override;
+ int GetAppbarAutohideEdges(HMONITOR monitor,
+ const base::Closure& callback) override;
+-#elif defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#elif (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS)
+ gfx::ImageSkia* GetDefaultWindowIcon() const override;
+ bool WindowManagerProvidesTitleBar(bool maximized) override;
+ #endif
diff --git a/devel/electron4/files/patch-chrome_browser_ui_views_first__run__dialog.cc b/devel/electron4/files/patch-chrome_browser_ui_views_first__run__dialog.cc
new file mode 100644
index 000000000000..39f6c785ac65
--- /dev/null
+++ b/devel/electron4/files/patch-chrome_browser_ui_views_first__run__dialog.cc
@@ -0,0 +1,24 @@
+--- chrome/browser/ui/views/first_run_dialog.cc.orig 2019-03-15 06:37:06 UTC
++++ chrome/browser/ui/views/first_run_dialog.cc
+@@ -37,8 +37,10 @@
+ namespace {
+
+ void InitCrashReporterIfEnabled(bool enabled) {
++#if !defined(OS_BSD)
+ if (enabled)
+ breakpad::InitCrashReporter(std::string());
++#endif
+ }
+
+ } // namespace
+@@ -111,8 +113,10 @@ views::View* FirstRunDialog::CreateExtraView() {
+ bool FirstRunDialog::Accept() {
+ GetWidget()->Hide();
+
++#if !defined(OS_BSD)
+ ChangeMetricsReportingStateWithReply(report_crashes_->checked(),
+ base::Bind(&InitCrashReporterIfEnabled));
++#endif
+
+ if (make_default_->checked())
+ shell_integration::SetAsDefaultBrowser();
diff --git a/devel/electron4/files/patch-chrome_browser_ui_views_frame_browser__frame.cc b/devel/electron4/files/patch-chrome_browser_ui_views_frame_browser__frame.cc
new file mode 100644
index 000000000000..13879e56699e
--- /dev/null
+++ b/devel/electron4/files/patch-chrome_browser_ui_views_frame_browser__frame.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/ui/views/frame/browser_frame.cc.orig 2019-03-15 06:37:06 UTC
++++ chrome/browser/ui/views/frame/browser_frame.cc
+@@ -36,7 +36,7 @@
+ #include "components/user_manager/user_manager.h"
+ #endif
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include "chrome/browser/ui/views/frame/browser_command_handler_linux.h"
+ #endif
+
+@@ -90,7 +90,7 @@ void BrowserFrame::InitBrowserFrame() {
+ non_client_view()->set_context_menu_controller(this);
+ }
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ browser_command_handler_.reset(new BrowserCommandHandlerLinux(browser_view_));
+ #endif
+ }
diff --git a/devel/electron4/files/patch-chrome_browser_ui_views_frame_browser__non__client__frame__view__factory__views.cc b/devel/electron4/files/patch-chrome_browser_ui_views_frame_browser__non__client__frame__view__factory__views.cc
new file mode 100644
index 000000000000..12984936491c
--- /dev/null
+++ b/devel/electron4/files/patch-chrome_browser_ui_views_frame_browser__non__client__frame__view__factory__views.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/ui/views/frame/browser_non_client_frame_view_factory_views.cc.orig 2019-03-15 06:37:06 UTC
++++ chrome/browser/ui/views/frame/browser_non_client_frame_view_factory_views.cc
+@@ -13,7 +13,7 @@
+ #include "chrome/browser/ui/views/frame/glass_browser_frame_view.h"
+ #endif
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS)
+ #include "ui/views/linux_ui/linux_ui.h"
+ #endif
+
diff --git a/devel/electron4/files/patch-chrome_browser_ui_views_frame_opaque__browser__frame__view.cc b/devel/electron4/files/patch-chrome_browser_ui_views_frame_opaque__browser__frame__view.cc
new file mode 100644
index 000000000000..1146aac1b835
--- /dev/null
+++ b/devel/electron4/files/patch-chrome_browser_ui_views_frame_opaque__browser__frame__view.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/ui/views/frame/opaque_browser_frame_view.cc.orig 2019-03-15 06:37:07 UTC
++++ chrome/browser/ui/views/frame/opaque_browser_frame_view.cc
+@@ -41,7 +41,7 @@
+ #include "ui/views/window/frame_background.h"
+ #include "ui/views/window/window_shape.h"
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include "ui/views/controls/menu/menu_runner.h"
+ #endif
+
+@@ -326,7 +326,7 @@ void OpaqueBrowserFrameView::ButtonPressed(views::Butt
+ void OpaqueBrowserFrameView::OnMenuButtonClicked(views::MenuButton* source,
+ const gfx::Point& point,
+ const ui::Event* event) {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ views::MenuRunner menu_runner(frame()->GetSystemMenuModel(),
+ views::MenuRunner::HAS_MNEMONICS);
+ menu_runner.RunMenuAt(browser_view()->GetWidget(), window_icon_,
diff --git a/devel/electron4/files/patch-chrome_browser_ui_views_frame_opaque__browser__frame__view__layout.cc b/devel/electron4/files/patch-chrome_browser_ui_views_frame_opaque__browser__frame__view__layout.cc
new file mode 100644
index 000000000000..75b8b5d11701
--- /dev/null
+++ b/devel/electron4/files/patch-chrome_browser_ui_views_frame_opaque__browser__frame__view__layout.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/ui/views/frame/opaque_browser_frame_view_layout.cc.orig 2019-03-15 06:37:07 UTC
++++ chrome/browser/ui/views/frame/opaque_browser_frame_view_layout.cc
+@@ -20,7 +20,7 @@ namespace {
+
+ constexpr int kCaptionButtonHeight = 18;
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ // Default spacing around window caption buttons.
+ constexpr int kCaptionButtonSpacing = 2;
+ #else
diff --git a/devel/electron4/files/patch-chrome_browser_ui_views_frame_opaque__browser__frame__view__platform__specific.cc b/devel/electron4/files/patch-chrome_browser_ui_views_frame_opaque__browser__frame__view__platform__specific.cc
new file mode 100644
index 000000000000..764b5983f1e3
--- /dev/null
+++ b/devel/electron4/files/patch-chrome_browser_ui_views_frame_opaque__browser__frame__view__platform__specific.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/ui/views/frame/opaque_browser_frame_view_platform_specific.cc.orig 2019-03-15 06:37:07 UTC
++++ chrome/browser/ui/views/frame/opaque_browser_frame_view_platform_specific.cc
+@@ -10,7 +10,7 @@ bool OpaqueBrowserFrameViewPlatformSpecific::IsUsingSy
+ return false;
+ }
+
+-#if !defined(OS_LINUX)
++#if !defined(OS_LINUX) && !defined(OS_FREEBSD)
+
+ // static
+ OpaqueBrowserFrameViewPlatformSpecific*
diff --git a/devel/electron4/files/patch-chrome_browser_ui_views_frame_system__menu__model__builder.cc b/devel/electron4/files/patch-chrome_browser_ui_views_frame_system__menu__model__builder.cc
new file mode 100644
index 000000000000..11d8e2ee4a7a
--- /dev/null
+++ b/devel/electron4/files/patch-chrome_browser_ui_views_frame_system__menu__model__builder.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/ui/views/frame/system_menu_model_builder.cc.orig 2019-03-15 06:37:07 UTC
++++ chrome/browser/ui/views/frame/system_menu_model_builder.cc
+@@ -89,7 +89,7 @@ void SystemMenuModelBuilder::BuildSystemMenuForBrowser
+ model->AddSeparator(ui::NORMAL_SEPARATOR);
+ model->AddItemWithStringId(IDC_TASK_MANAGER, IDS_TASK_MANAGER);
+ }
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ model->AddSeparator(ui::NORMAL_SEPARATOR);
+ model->AddCheckItemWithStringId(IDC_USE_SYSTEM_TITLE_BAR,
+ IDS_SHOW_WINDOW_DECORATIONS_MENU);
+@@ -125,7 +125,7 @@ void SystemMenuModelBuilder::BuildSystemMenuForAppOrPo
+ model->AddSeparator(ui::NORMAL_SEPARATOR);
+ model->AddItemWithStringId(IDC_TASK_MANAGER, IDS_TASK_MANAGER);
+ }
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ model->AddSeparator(ui::NORMAL_SEPARATOR);
+ model->AddItemWithStringId(IDC_CLOSE_WINDOW, IDS_CLOSE);
+ #endif
diff --git a/devel/electron4/files/patch-chrome_browser_ui_views_frame_system__menu__model__delegate.cc b/devel/electron4/files/patch-chrome_browser_ui_views_frame_system__menu__model__delegate.cc
new file mode 100644
index 000000000000..1f9e0d69a14d
--- /dev/null
+++ b/devel/electron4/files/patch-chrome_browser_ui_views_frame_system__menu__model__delegate.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/ui/views/frame/system_menu_model_delegate.cc.orig 2019-03-15 06:37:07 UTC
++++ chrome/browser/ui/views/frame/system_menu_model_delegate.cc
+@@ -15,7 +15,7 @@
+ #include "components/sessions/core/tab_restore_service.h"
+ #include "ui/base/l10n/l10n_util.h"
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ #include "chrome/common/pref_names.h"
+ #include "components/prefs/pref_service.h"
+ #endif
+@@ -30,7 +30,7 @@ SystemMenuModelDelegate::SystemMenuModelDelegate(
+ SystemMenuModelDelegate::~SystemMenuModelDelegate() {}
+
+ bool SystemMenuModelDelegate::IsCommandIdChecked(int command_id) const {
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ if (command_id == IDC_USE_SYSTEM_TITLE_BAR) {
+ PrefService* prefs = browser_->profile()->GetPrefs();
+ return !prefs->GetBoolean(prefs::kUseCustomChromeFrame);
diff --git a/devel/electron4/files/patch-chrome_browser_ui_views_tabs_new__tab__button.cc b/devel/electron4/files/patch-chrome_browser_ui_views_tabs_new__tab__button.cc
new file mode 100644
index 000000000000..2e3abc4654c4
--- /dev/null
+++ b/devel/electron4/files/patch-chrome_browser_ui_views_tabs_new__tab__button.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/ui/views/tabs/new_tab_button.cc.orig 2019-03-15 06:37:07 UTC
++++ chrome/browser/ui/views/tabs/new_tab_button.cc
+@@ -94,7 +94,7 @@ NewTabButton::NewTabButton(TabStrip* tab_strip, views:
+ tab_strip_(tab_strip),
+ is_incognito_(tab_strip->IsIncognito()) {
+ set_animate_on_state_change(true);
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ set_triggerable_event_flags(triggerable_event_flags() |
+ ui::EF_MIDDLE_MOUSE_BUTTON);
+ #endif
diff --git a/devel/electron4/files/patch-chrome_browser_ui_views_tabs_tab__drag__controller.cc b/devel/electron4/files/patch-chrome_browser_ui_views_tabs_tab__drag__controller.cc
new file mode 100644
index 000000000000..537d5166dbbd
--- /dev/null
+++ b/devel/electron4/files/patch-chrome_browser_ui_views_tabs_tab__drag__controller.cc
@@ -0,0 +1,29 @@
+--- chrome/browser/ui/views/tabs/tab_drag_controller.cc.orig 2019-03-15 06:37:07 UTC
++++ chrome/browser/ui/views/tabs/tab_drag_controller.cc
+@@ -394,7 +394,7 @@ void TabDragController::Init(TabStrip* source_tabstrip
+ // synchronous on desktop Linux, so use that.
+ // - Chrome OS
+ // Releasing capture on Ash cancels gestures so avoid it.
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ can_release_capture_ = false;
+ #endif
+ start_point_in_screen_ = gfx::Point(source_tab_offset, mouse_offset.y());
+@@ -762,7 +762,7 @@ TabDragController::DragBrowserToNewTabStrip(TabStrip*
+ else
+ target_tabstrip->GetWidget()->SetCapture(attached_tabstrip_);
+
+-#if !defined(OS_LINUX)
++#if !defined(OS_LINUX) || defined(OS_BSD)
+ // EndMoveLoop is going to snap the window back to its original location.
+ // Hide it so users don't see this. Hiding a window in Linux aura causes
+ // it to lose capture so skip it.
+@@ -2043,7 +2043,7 @@ TabDragController::Liveness TabDragController::GetLoca
+ if (dragged_window)
+ exclude.insert(dragged_window);
+ }
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ // Exclude windows which are pending deletion via Browser::TabStripEmpty().
+ // These windows can be returned in the Linux Aura port because the browser
+ // window which was used for dragging is not hidden once all of its tabs are
diff --git a/devel/electron4/files/patch-chrome_browser_ui_webui_about__ui.cc b/devel/electron4/files/patch-chrome_browser_ui_webui_about__ui.cc
new file mode 100644
index 000000000000..4a31d8074cb8
--- /dev/null
+++ b/devel/electron4/files/patch-chrome_browser_ui_webui_about__ui.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/ui/webui/about_ui.cc.orig 2019-03-15 06:37:07 UTC
++++ chrome/browser/ui/webui/about_ui.cc
+@@ -391,7 +391,7 @@ std::string ChromeURLs() {
+ return html;
+ }
+
+-#if defined(OS_LINUX) || defined(OS_OPENBSD)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ std::string AboutLinuxProxyConfig() {
+ std::string data;
+ AppendHeader(&data, 0,
+@@ -446,7 +446,7 @@ void AboutUIHTMLSource::StartDataRequest(
+ .GetRawDataResource(idr)
+ .as_string();
+ }
+-#if defined(OS_LINUX) || defined(OS_OPENBSD)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ } else if (source_name_ == chrome::kChromeUILinuxProxyConfigHost) {
+ response = AboutLinuxProxyConfig();
+ #endif
diff --git a/devel/electron4/files/patch-chrome_browser_ui_webui_chrome__web__ui__controller__factory.cc b/devel/electron4/files/patch-chrome_browser_ui_webui_chrome__web__ui__controller__factory.cc
new file mode 100644
index 000000000000..9c681861daaa
--- /dev/null
+++ b/devel/electron4/files/patch-chrome_browser_ui_webui_chrome__web__ui__controller__factory.cc
@@ -0,0 +1,49 @@
+--- chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc.orig 2019-03-15 06:37:08 UTC
++++ chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc
+@@ -185,11 +185,11 @@
+ #include "chrome/browser/ui/webui/welcome_win10_ui.h"
+ #endif
+
+-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+ #include "chrome/browser/ui/webui/discards/discards_ui.h"
+ #endif
+
+-#if defined(OS_LINUX) || defined(OS_ANDROID)
++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
+ #include "chrome/browser/ui/webui/sandbox_internals_ui.h"
+ #endif
+
+@@ -317,7 +317,7 @@ bool IsAboutUI(const GURL& url) {
+ #if !defined(OS_ANDROID)
+ || url.host_piece() == chrome::kChromeUITermsHost
+ #endif
+-#if defined(OS_LINUX) || defined(OS_OPENBSD)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ || url.host_piece() == chrome::kChromeUILinuxProxyConfigHost
+ #endif
+ #if defined(OS_CHROMEOS)
+@@ -566,7 +566,7 @@ WebUIFactoryFunction GetWebUIFactoryFunction(WebUI* we
+ if (url.host_piece() == chrome::kChromeUINaClHost)
+ return &NewWebUI<NaClUI>;
+ #endif
+-#if (defined(OS_LINUX) && defined(TOOLKIT_VIEWS)) || defined(USE_AURA)
++#if (defined(OS_LINUX) && defined(TOOLKIT_VIEWS)) || defined(USE_AURA) || defined(OS_BSD)
+ if (url.host_piece() == chrome::kChromeUITabModalConfirmDialogHost)
+ return &NewWebUI<ConstrainedWebDialogUI>;
+ #endif
+@@ -625,12 +625,12 @@ WebUIFactoryFunction GetWebUIFactoryFunction(WebUI* we
+ return &NewWebUI<CastUI>;
+ }
+ #endif
+-#if defined(OS_LINUX) || defined(OS_ANDROID)
++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
+ if (url.host_piece() == chrome::kChromeUISandboxHost) {
+ return &NewWebUI<SandboxInternalsUI>;
+ }
+ #endif
+-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+ if (url.host_piece() == chrome::kChromeUIDiscardsHost)
+ return &NewWebUI<DiscardsUI>;
+ #endif
diff --git a/devel/electron4/files/patch-chrome_browser_ui_webui_settings_appearance__handler.cc b/devel/electron4/files/patch-chrome_browser_ui_webui_settings_appearance__handler.cc
new file mode 100644
index 000000000000..438f21384b7b
--- /dev/null
+++ b/devel/electron4/files/patch-chrome_browser_ui_webui_settings_appearance__handler.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/ui/webui/settings/appearance_handler.cc.orig 2019-03-15 06:25:35 UTC
++++ chrome/browser/ui/webui/settings/appearance_handler.cc
+@@ -31,7 +31,7 @@ void AppearanceHandler::RegisterMessages() {
+ "useDefaultTheme",
+ base::BindRepeating(&AppearanceHandler::HandleUseDefaultTheme,
+ base::Unretained(this)));
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_BSD) && !defined(OS_CHROMEOS)
+ web_ui()->RegisterMessageCallback(
+ "useSystemTheme",
+ base::BindRepeating(&AppearanceHandler::HandleUseSystemTheme,
+@@ -59,7 +59,7 @@ void AppearanceHandler::HandleUseDefaultTheme(const ba
+ ThemeServiceFactory::GetForProfile(profile_)->UseDefaultTheme();
+ }
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_BSD) && !defined(OS_CHROMEOS)
+ void AppearanceHandler::HandleUseSystemTheme(const base::ListValue* args) {
+ if (profile_->IsSupervised())
+ NOTREACHED();
diff --git a/devel/electron4/files/patch-chrome_browser_ui_webui_settings_appearance__handler.h b/devel/electron4/files/patch-chrome_browser_ui_webui_settings_appearance__handler.h
new file mode 100644
index 000000000000..27797f1e5260
--- /dev/null
+++ b/devel/electron4/files/patch-chrome_browser_ui_webui_settings_appearance__handler.h
@@ -0,0 +1,11 @@
+--- chrome/browser/ui/webui/settings/appearance_handler.h.orig 2019-03-15 06:25:35 UTC
++++ chrome/browser/ui/webui/settings/appearance_handler.h
+@@ -36,7 +36,7 @@ class AppearanceHandler : public SettingsPageUIHandler
+ // Changes the UI theme of the browser to the default theme.
+ void HandleUseDefaultTheme(const base::ListValue* args);
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS)
+ // Changes the UI theme of the browser to the system (GTK+) theme.
+ void HandleUseSystemTheme(const base::ListValue* args);
+ #endif
diff --git a/devel/electron4/files/patch-chrome_browser_ui_webui_settings_md__settings__localized__strings__provider.cc b/devel/electron4/files/patch-chrome_browser_ui_webui_settings_md__settings__localized__strings__provider.cc
new file mode 100644
index 000000000000..3bd2c7ff234f
--- /dev/null
+++ b/devel/electron4/files/patch-chrome_browser_ui_webui_settings_md__settings__localized__strings__provider.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/ui/webui/settings/md_settings_localized_strings_provider.cc.orig 2019-03-15 06:37:08 UTC
++++ chrome/browser/ui/webui/settings/md_settings_localized_strings_provider.cc
+@@ -442,7 +442,7 @@ void AddAppearanceStrings(content::WebUIDataSource* ht
+ {"enterCustomWebAddress", IDS_SETTINGS_ENTER_CUSTOM_WEB_ADDRESS},
+ {"homeButtonDisabled", IDS_SETTINGS_HOME_BUTTON_DISABLED},
+ {"themes", IDS_SETTINGS_THEMES},
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS)
+ {"systemTheme", IDS_SETTINGS_SYSTEM_THEME},
+ {"useSystemTheme", IDS_SETTINGS_USE_SYSTEM_THEME},
+ {"classicTheme", IDS_SETTINGS_CLASSIC_THEME},
+@@ -460,7 +460,7 @@ void AddAppearanceStrings(content::WebUIDataSource* ht
+ {"openWallpaperApp", IDS_SETTINGS_OPEN_WALLPAPER_APP},
+ {"setWallpaper", IDS_SETTINGS_SET_WALLPAPER},
+ #endif
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS)
+ {"showWindowDecorations", IDS_SHOW_WINDOW_DECORATIONS},
+ #endif
+ #if defined(OS_MACOSX)
diff --git a/devel/electron4/files/patch-chrome_common_BUILD.gn b/devel/electron4/files/patch-chrome_common_BUILD.gn
new file mode 100644
index 000000000000..438ad94c398d
--- /dev/null
+++ b/devel/electron4/files/patch-chrome_common_BUILD.gn
@@ -0,0 +1,13 @@
+--- chrome/common/BUILD.gn.orig 2019-03-15 06:37:09 UTC
++++ chrome/common/BUILD.gn
+@@ -295,6 +295,10 @@ static_library("common") {
+ public_deps += [ "//ppapi/shared_impl" ]
+ }
+
++ if (is_bsd) {
++ sources -= [ "component_flash_hint_file_linux.cc" ]
++ }
++
+ if (enable_extensions) {
+ sources += [
+ "cast_messages.cc",
diff --git a/devel/electron4/files/patch-chrome_common_chrome__features.cc b/devel/electron4/files/patch-chrome_common_chrome__features.cc
new file mode 100644
index 000000000000..399a5be0b46e
--- /dev/null
+++ b/devel/electron4/files/patch-chrome_common_chrome__features.cc
@@ -0,0 +1,45 @@
+--- chrome/common/chrome_features.cc.orig 2019-03-15 06:37:09 UTC
++++ chrome/common/chrome_features.cc
+@@ -90,13 +90,13 @@ const base::Feature kAutomaticTabDiscarding{"Automatic
+ base::FEATURE_ENABLED_BY_DEFAULT};
+ #endif // defined(OS_WIN) || defined(OS_MACOSX)
+
+-#if defined(OS_WIN) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD)
+ // Enables the Restart background mode optimization. When all Chrome UI is
+ // closed and it goes in the background, allows to restart the browser to
+ // discard memory.
+ const base::Feature kBackgroundModeAllowRestart{
+ "BackgroundModeAllowRestart", base::FEATURE_DISABLED_BY_DEFAULT};
+-#endif // defined(OS_WIN) || defined(OS_LINUX)
++#endif // defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD)
+
+ // Enables or disables whether permission prompts are automatically blocked
+ // after the user has explicitly dismissed them too many times.
+@@ -155,7 +155,7 @@ const base::Feature kThirdPartyModulesBlocking{
+ "ThirdPartyModulesBlocking", base::FEATURE_DISABLED_BY_DEFAULT};
+ #endif
+
+-#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_MACOSX)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_MACOSX) || defined(OS_BSD)
+ // Enables the dual certificate verification trial feature.
+ // https://crbug.com/649026
+ const base::Feature kCertDualVerificationTrialFeature{
+@@ -365,7 +365,7 @@ const base::Feature kAcknowledgeNtpOverrideOnDeactivat
+ "AcknowledgeNtpOverrideOnDeactivate", base::FEATURE_DISABLED_BY_DEFAULT};
+ #endif
+
+-#if defined(OS_WIN) || (defined(OS_LINUX) && !defined(OS_CHROMEOS))
++#if defined(OS_WIN) || (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ const base::Feature kWarnBeforeQuitting{"WarnBeforeQuitting",
+ base::FEATURE_DISABLED_BY_DEFAULT};
+ #endif
+@@ -388,7 +388,7 @@ const base::Feature kModalPermissionPrompts{"ModalPerm
+ // Center for displaying the toasts. The feature is hardcoded to enabled for
+ // Chrome OS.
+ #if BUILDFLAG(ENABLE_NATIVE_NOTIFICATIONS) && !defined(OS_CHROMEOS)
+-#if defined(OS_MACOSX) || defined(OS_ANDROID) || defined(OS_LINUX)
++#if defined(OS_MACOSX) || defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_BSD)
+ const base::Feature kNativeNotifications{"NativeNotifications",
+ base::FEATURE_ENABLED_BY_DEFAULT};
+ #else
diff --git a/devel/electron4/files/patch-chrome_common_chrome__features.h b/devel/electron4/files/patch-chrome_common_chrome__features.h
new file mode 100644
index 000000000000..0b0c5ad82dcc
--- /dev/null
+++ b/devel/electron4/files/patch-chrome_common_chrome__features.h
@@ -0,0 +1,20 @@
+--- chrome/common/chrome_features.h.orig 2019-03-15 06:37:09 UTC
++++ chrome/common/chrome_features.h
+@@ -52,7 +52,7 @@ extern const base::Feature kAsyncDns;
+ extern const base::Feature kAutomaticTabDiscarding;
+ #endif // defined(OS_WIN) || defined(OS_MACOSX)
+
+-#if defined(OS_WIN) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD)
+ extern const base::Feature kBackgroundModeAllowRestart;
+ #endif // defined(OS_WIN) || defined(OS_LINUX)
+
+@@ -76,7 +76,7 @@ extern const base::Feature kDialogTouchBar;
+ extern const base::Feature kTabStripKeyboardFocus;
+ #endif // defined(OS_MACOSX)
+
+-#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_MACOSX)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_MACOSX) || defined(OS_BSD)
+ extern const base::Feature kCertDualVerificationTrialFeature;
+ #endif
+
diff --git a/devel/electron4/files/patch-chrome_common_chrome__paths.cc b/devel/electron4/files/patch-chrome_common_chrome__paths.cc
new file mode 100644
index 000000000000..6047bac0e3a2
--- /dev/null
+++ b/devel/electron4/files/patch-chrome_common_chrome__paths.cc
@@ -0,0 +1,97 @@
+--- chrome/common/chrome_paths.cc.orig 2019-03-15 06:37:09 UTC
++++ chrome/common/chrome_paths.cc
+@@ -52,14 +52,14 @@ const base::FilePath::CharType kPepperFlashSystemBaseD
+ const base::FilePath::CharType kInternalNaClPluginFileName[] =
+ FILE_PATH_LITERAL("internal-nacl-plugin");
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // The path to the external extension <id>.json files.
+ // /usr/share seems like a good choice, see: http://www.pathname.com/fhs/
+ const base::FilePath::CharType kFilepathSinglePrefExtensions[] =
+ #if defined(GOOGLE_CHROME_BUILD)
+ FILE_PATH_LITERAL("/usr/share/google-chrome/extensions");
+ #else
+- FILE_PATH_LITERAL("/usr/share/chromium/extensions");
++ FILE_PATH_LITERAL("/usr/local/share/chromium/extensions");
+ #endif // defined(GOOGLE_CHROME_BUILD)
+
+ // The path to the hint file that tells the pepper plugin loader
+@@ -193,7 +193,7 @@ bool PathProvider(int key, base::FilePath* result) {
+ return false;
+ break;
+ case chrome::DIR_DEFAULT_DOWNLOADS_SAFE:
+-#if defined(OS_WIN) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD)
+ if (!GetUserDownloadsDirectorySafe(&cur))
+ return false;
+ break;
+@@ -422,7 +422,7 @@ bool PathProvider(int key, base::FilePath* result) {
+ break;
+ #endif
+ #if BUILDFLAG(ENABLE_SUPERVISED_USERS)
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ case chrome::DIR_SUPERVISED_USERS_DEFAULT_APPS:
+ if (!base::PathService::Get(chrome::DIR_STANDALONE_EXTERNAL_EXTENSIONS,
+ &cur)) {
+@@ -472,10 +472,12 @@ bool PathProvider(int key, base::FilePath* result) {
+ if (!base::PathExists(cur)) // We don't want to create this
+ return false;
+ break;
+-#if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_OPENBSD)
++#if defined(OS_POSIX) && !defined(OS_MACOSX)
+ case chrome::DIR_POLICY_FILES: {
+ #if defined(GOOGLE_CHROME_BUILD)
+ cur = base::FilePath(FILE_PATH_LITERAL("/etc/opt/chrome/policies"));
++#elif defined(OS_BSD)
++ cur = base::FilePath(FILE_PATH_LITERAL("/usr/local/etc/chrome/policies"));
+ #else
+ cur = base::FilePath(FILE_PATH_LITERAL("/etc/chromium/policies"));
+ #endif
+@@ -483,7 +485,7 @@ bool PathProvider(int key, base::FilePath* result) {
+ }
+ #endif
+ #if defined(OS_CHROMEOS) || (defined(OS_LINUX) && defined(CHROMIUM_BUILD)) || \
+- defined(OS_MACOSX)
++ defined(OS_MACOSX) || defined(OS_BSD)
+ case chrome::DIR_USER_EXTERNAL_EXTENSIONS: {
+ if (!base::PathService::Get(chrome::DIR_USER_DATA, &cur))
+ return false;
+@@ -491,7 +493,7 @@ bool PathProvider(int key, base::FilePath* result) {
+ break;
+ }
+ #endif
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ case chrome::DIR_STANDALONE_EXTERNAL_EXTENSIONS: {
+ cur = base::FilePath(kFilepathSinglePrefExtensions);
+ break;
+@@ -526,7 +528,7 @@ bool PathProvider(int key, base::FilePath* result) {
+ #endif
+ break;
+
+-#if defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ case chrome::DIR_NATIVE_MESSAGING:
+ #if defined(OS_MACOSX)
+ #if defined(GOOGLE_CHROME_BUILD)
+@@ -540,6 +542,9 @@ bool PathProvider(int key, base::FilePath* result) {
+ #if defined(GOOGLE_CHROME_BUILD)
+ cur = base::FilePath(FILE_PATH_LITERAL(
+ "/etc/opt/chrome/native-messaging-hosts"));
++#elif defined(OS_BSD)
++ cur = base::FilePath(FILE_PATH_LITERAL(
++ "/usr/local/etc/chrome/native-messaging-hosts"));
+ #else
+ cur = base::FilePath(FILE_PATH_LITERAL(
+ "/etc/chromium/native-messaging-hosts"));
+@@ -552,7 +557,7 @@ bool PathProvider(int key, base::FilePath* result) {
+ return false;
+ cur = cur.Append(FILE_PATH_LITERAL("NativeMessagingHosts"));
+ break;
+-#endif // defined(OS_LINUX) || defined(OS_MACOSX)
++#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ #if !defined(OS_ANDROID)
+ case chrome::DIR_GLOBAL_GCM_STORE:
+ if (!base::PathService::Get(chrome::DIR_USER_DATA, &cur))
diff --git a/devel/electron4/files/patch-chrome_common_chrome__paths.h b/devel/electron4/files/patch-chrome_common_chrome__paths.h
new file mode 100644
index 000000000000..e9691698bd06
--- /dev/null
+++ b/devel/electron4/files/patch-chrome_common_chrome__paths.h
@@ -0,0 +1,29 @@
+--- chrome/common/chrome_paths.h.orig 2019-03-15 06:37:09 UTC
++++ chrome/common/chrome_paths.h
+@@ -51,7 +51,7 @@ enum {
+ // to set policies for chrome. This directory
+ // contains subdirectories.
+ #endif
+-#if defined(OS_CHROMEOS) || (defined(OS_LINUX) && defined(CHROMIUM_BUILD)) || \
++#if defined(OS_CHROMEOS) || ((defined(OS_LINUX) || defined(OS_BSD)) && defined(CHROMIUM_BUILD)) || \
+ defined(OS_MACOSX)
+ DIR_USER_EXTERNAL_EXTENSIONS, // Directory for per-user external extensions
+ // on Chrome Mac and Chromium Linux.
+@@ -60,7 +60,7 @@ enum {
+ // create it.
+ #endif
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ DIR_STANDALONE_EXTERNAL_EXTENSIONS, // Directory for 'per-extension'
+ // definition manifest files that
+ // describe extensions which are to be
+@@ -111,7 +111,7 @@ enum {
+ DIR_SUPERVISED_USER_INSTALLED_WHITELISTS, // Directory where sanitized
+ // supervised user whitelists are
+ // installed.
+-#if defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_LINUX) || defined(OS_BSD) || defined(OS_MACOSX)
+ DIR_NATIVE_MESSAGING, // System directory where native messaging host
+ // manifest files are stored.
+ DIR_USER_NATIVE_MESSAGING, // Directory with Native Messaging Hosts
diff --git a/devel/electron4/files/patch-chrome_common_chrome__paths__internal.h b/devel/electron4/files/patch-chrome_common_chrome__paths__internal.h
new file mode 100644
index 000000000000..e12ab5f2d5d1
--- /dev/null
+++ b/devel/electron4/files/patch-chrome_common_chrome__paths__internal.h
@@ -0,0 +1,11 @@
+--- chrome/common/chrome_paths_internal.h.orig 2019-03-15 06:25:36 UTC
++++ chrome/common/chrome_paths_internal.h
+@@ -45,7 +45,7 @@ void GetUserCacheDirectory(const base::FilePath& profi
+ // Get the path to the user's documents directory.
+ bool GetUserDocumentsDirectory(base::FilePath* result);
+
+-#if defined(OS_WIN) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD)
+ // Gets the path to a safe default download directory for a user.
+ bool GetUserDownloadsDirectorySafe(base::FilePath* result);
+ #endif
diff --git a/devel/electron4/files/patch-chrome_common_chrome__switches.cc b/devel/electron4/files/patch-chrome_common_chrome__switches.cc
new file mode 100644
index 000000000000..0a8139a4b80b
--- /dev/null
+++ b/devel/electron4/files/patch-chrome_common_chrome__switches.cc
@@ -0,0 +1,17 @@
+--- chrome/common/chrome_switches.cc.orig 2019-03-15 06:37:09 UTC
++++ chrome/common/chrome_switches.cc
+@@ -987,12 +987,12 @@ const char kAllowNaClFileHandleAPI[] = "allow-n
+ const char kAllowNaClSocketAPI[] = "allow-nacl-socket-api";
+ #endif
+
+-#if defined(OS_WIN) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD)
+ const char kDisableInputImeAPI[] = "disable-input-ime-api";
+ const char kEnableInputImeAPI[] = "enable-input-ime-api";
+ #endif
+
+-#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_BSD)
+ const char kEnableNewAppMenuIcon[] = "enable-new-app-menu-icon";
+ #endif
+
diff --git a/devel/electron4/files/patch-chrome_common_chrome__switches.h b/devel/electron4/files/patch-chrome_common_chrome__switches.h
new file mode 100644
index 000000000000..02340af2b7d6
--- /dev/null
+++ b/devel/electron4/files/patch-chrome_common_chrome__switches.h
@@ -0,0 +1,17 @@
+--- chrome/common/chrome_switches.h.orig 2019-03-15 06:37:09 UTC
++++ chrome/common/chrome_switches.h
+@@ -302,12 +302,12 @@ extern const char kAllowNaClFileHandleAPI[];
+ extern const char kAllowNaClSocketAPI[];
+ #endif
+
+-#if defined(OS_WIN) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD)
+ extern const char kDisableInputImeAPI[];
+ extern const char kEnableInputImeAPI[];
+ #endif
+
+-#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_BSD)
+ extern const char kEnableNewAppMenuIcon[];
+ #endif
+
diff --git a/devel/electron4/files/patch-chrome_common_extensions_api_api__sources.gni b/devel/electron4/files/patch-chrome_common_extensions_api_api__sources.gni
new file mode 100644
index 000000000000..6b5fad5bb385
--- /dev/null
+++ b/devel/electron4/files/patch-chrome_common_extensions_api_api__sources.gni
@@ -0,0 +1,11 @@
+--- chrome/common/extensions/api/api_sources.gni.orig 2019-03-15 06:37:09 UTC
++++ chrome/common/extensions/api/api_sources.gni
+@@ -116,7 +116,7 @@ if (is_chromeos) {
+ "wallpaper.json",
+ "wallpaper_private.json",
+ ]
+-} else if (is_linux || is_win) {
++} else if (is_linux || is_bsd || is_win) {
+ schema_sources_ += [ "input_ime.json" ]
+ }
+
diff --git a/devel/electron4/files/patch-chrome_common_extensions_command.cc b/devel/electron4/files/patch-chrome_common_extensions_command.cc
new file mode 100644
index 000000000000..c8d3cca29ec2
--- /dev/null
+++ b/devel/electron4/files/patch-chrome_common_extensions_command.cc
@@ -0,0 +1,11 @@
+--- chrome/common/extensions/command.cc.orig 2019-03-15 06:37:09 UTC
++++ chrome/common/extensions/command.cc
+@@ -311,7 +311,7 @@ std::string Command::CommandPlatform() {
+ return values::kKeybindingPlatformMac;
+ #elif defined(OS_CHROMEOS)
+ return values::kKeybindingPlatformChromeOs;
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ return values::kKeybindingPlatformLinux;
+ #else
+ return "";
diff --git a/devel/electron4/files/patch-chrome_common_features.gni b/devel/electron4/files/patch-chrome_common_features.gni
new file mode 100644
index 000000000000..08918fc2e8bd
--- /dev/null
+++ b/devel/electron4/files/patch-chrome_common_features.gni
@@ -0,0 +1,14 @@
+--- chrome/common/features.gni.orig 2019-03-15 06:37:09 UTC
++++ chrome/common/features.gni
+@@ -46,9 +46,9 @@ declare_args() {
+ (is_desktop_linux && use_dbus) || is_chromeos
+
+ enable_one_click_signin =
+- is_win || is_mac || (is_linux && !is_chromeos && !is_chromecast)
++ is_win || is_mac || is_bsd || (is_linux && !is_chromeos && !is_chromecast)
+
+- enable_service_discovery = enable_mdns || is_mac
++ enable_service_discovery = enable_mdns || is_mac || is_bsd
+
+ # Enables use of the session service, which is enabled by default.
+ # Android stores them separately on the Java side.
diff --git a/devel/electron4/files/patch-chrome_common_pref__names.cc b/devel/electron4/files/patch-chrome_common_pref__names.cc
new file mode 100644
index 000000000000..205bfe265531
--- /dev/null
+++ b/devel/electron4/files/patch-chrome_common_pref__names.cc
@@ -0,0 +1,29 @@
+--- chrome/common/pref_names.cc.orig 2019-03-15 06:37:09 UTC
++++ chrome/common/pref_names.cc
+@@ -918,7 +918,7 @@ const char kAllowedDomainsForApps[] = "settings.allowe
+ // See the SafeSitesFilterBehavior policy for details.
+ const char kSafeSitesFilterBehavior[] = "settings.safe_sites_filter_behavior";
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ // Linux specific preference on whether we should match the system theme.
+ const char kUsesSystemTheme[] = "extensions.theme.use_system";
+ #endif
+@@ -1001,7 +1001,7 @@ const char kShowUpdatePromotionInfoBar[] =
+ "browser.show_update_promotion_info_bar";
+ #endif
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ // Boolean that is false if we should show window manager decorations. If
+ // true, we draw a custom chrome frame (thicker title bar and blue border).
+ const char kUseCustomChromeFrame[] = "browser.custom_chrome_frame";
+@@ -1363,7 +1363,7 @@ const char kDownloadDefaultDirectory[] = "download.def
+ // upgrade a unsafe location to a safe location.
+ const char kDownloadDirUpgraded[] = "download.directory_upgrade";
+
+-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ const char kOpenPdfDownloadInSystemReader[] =
+ "download.open_pdf_in_system_reader";
+ #endif
diff --git a/devel/electron4/files/patch-chrome_common_pref__names.h b/devel/electron4/files/patch-chrome_common_pref__names.h
new file mode 100644
index 000000000000..6e1b9bd4600d
--- /dev/null
+++ b/devel/electron4/files/patch-chrome_common_pref__names.h
@@ -0,0 +1,38 @@
+--- chrome/common/pref_names.h.orig 2019-03-15 06:37:09 UTC
++++ chrome/common/pref_names.h
+@@ -166,7 +166,7 @@ extern const char kSearchSuggestEnabled[];
+ extern const char kContextualSearchEnabled[];
+ #endif // defined(OS_ANDROID)
+ #if defined(OS_MACOSX) || defined(OS_WIN) || \
+- (defined(OS_LINUX) && !defined(OS_CHROMEOS))
++ (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ extern const char kConfirmToQuitEnabled[];
+ #endif
+ #if defined(OS_MACOSX)
+@@ -294,7 +294,7 @@ extern const char kForceYouTubeRestrict[];
+ extern const char kForceSessionSync[];
+ extern const char kAllowedDomainsForApps[];
+ extern const char kSafeSitesFilterBehavior[];
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ extern const char kUsesSystemTheme[];
+ #endif
+ extern const char kCurrentThemePackFilename[];
+@@ -327,7 +327,7 @@ extern const char kDefaultBrowserSettingEnabled[];
+ #if defined(OS_MACOSX)
+ extern const char kShowUpdatePromotionInfoBar[];
+ #endif
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ extern const char kUseCustomChromeFrame[];
+ #endif
+ #if BUILDFLAG(ENABLE_PLUGINS)
+@@ -474,7 +474,7 @@ extern const char kAppWindowPlacement[];
+ extern const char kDownloadDefaultDirectory[];
+ extern const char kDownloadExtensionsToOpen[];
+ extern const char kDownloadDirUpgraded[];
+-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ extern const char kOpenPdfDownloadInSystemReader[];
+ #endif
+ #if defined(OS_ANDROID)
diff --git a/devel/electron4/files/patch-chrome_common_webui__url__constants.cc b/devel/electron4/files/patch-chrome_common_webui__url__constants.cc
new file mode 100644
index 000000000000..ababd04a9476
--- /dev/null
+++ b/devel/electron4/files/patch-chrome_common_webui__url__constants.cc
@@ -0,0 +1,41 @@
+--- chrome/common/webui_url_constants.cc.orig 2019-03-15 06:37:09 UTC
++++ chrome/common/webui_url_constants.cc
+@@ -237,7 +237,7 @@ const char kChromeUICastHost[] = "cast";
+ const char kChromeUICastURL[] = "chrome://cast/";
+ #endif
+
+-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+ const char kChromeUIDiscardsHost[] = "discards";
+ const char kChromeUIDiscardsURL[] = "chrome://discards/";
+ #endif
+@@ -246,11 +246,11 @@ const char kChromeUIDiscardsURL[] = "chrome://discards
+ const char kChromeUILinuxProxyConfigHost[] = "linux-proxy-config";
+ #endif
+
+-#if defined(OS_LINUX) || defined(OS_ANDROID)
++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
+ const char kChromeUISandboxHost[] = "sandbox";
+ #endif
+
+-#if (defined(OS_LINUX) && defined(TOOLKIT_VIEWS)) || defined(USE_AURA)
++#if ((defined(OS_BSD) || defined(OS_LINUX)) && defined(TOOLKIT_VIEWS)) || defined(USE_AURA)
+ const char kChromeUITabModalConfirmDialogHost[] = "tab-modal-confirm-dialog";
+ #endif
+
+@@ -398,13 +398,13 @@ const char* const kChromeHostURLs[] = {
+ kChromeUIInternetDetailDialogHost,
+ kChromeUIAssistantOptInHost,
+ #endif
+-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+ kChromeUIDiscardsHost,
+ #endif
+ #if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_ANDROID)
+ kChromeUILinuxProxyConfigHost,
+ #endif
+-#if defined(OS_LINUX) || defined(OS_ANDROID)
++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
+ kChromeUISandboxHost,
+ #endif
+ #if defined(OS_WIN)
diff --git a/devel/electron4/files/patch-chrome_common_webui__url__constants.h b/devel/electron4/files/patch-chrome_common_webui__url__constants.h
new file mode 100644
index 000000000000..ec696af6d108
--- /dev/null
+++ b/devel/electron4/files/patch-chrome_common_webui__url__constants.h
@@ -0,0 +1,25 @@
+--- chrome/common/webui_url_constants.h.orig 2019-03-15 06:37:09 UTC
++++ chrome/common/webui_url_constants.h
+@@ -232,7 +232,7 @@ extern const char kChromeUICastHost[];
+ extern const char kChromeUICastURL[];
+ #endif
+
+-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+ extern const char kChromeUIDiscardsHost[];
+ extern const char kChromeUIDiscardsURL[];
+ #endif
+@@ -241,11 +241,11 @@ extern const char kChromeUIDiscardsURL[];
+ extern const char kChromeUILinuxProxyConfigHost[];
+ #endif
+
+-#if defined(OS_LINUX) || defined(OS_ANDROID)
++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
+ extern const char kChromeUISandboxHost[];
+ #endif
+
+-#if (defined(OS_LINUX) && defined(TOOLKIT_VIEWS)) || defined(USE_AURA)
++#if ((defined(OS_BSD) || defined(OS_LINUX)) && defined(TOOLKIT_VIEWS)) || defined(USE_AURA)
+ extern const char kChromeUITabModalConfirmDialogHost[];
+ #endif
+
diff --git a/devel/electron4/files/patch-chrome_renderer_pepper_pepper__flash__font__file__host.cc b/devel/electron4/files/patch-chrome_renderer_pepper_pepper__flash__font__file__host.cc
new file mode 100644
index 000000000000..aadc2690f688
--- /dev/null
+++ b/devel/electron4/files/patch-chrome_renderer_pepper_pepper__flash__font__file__host.cc
@@ -0,0 +1,29 @@
+--- chrome/renderer/pepper/pepper_flash_font_file_host.cc.orig 2019-03-15 06:25:37 UTC
++++ chrome/renderer/pepper/pepper_flash_font_file_host.cc
+@@ -15,7 +15,7 @@
+ #include "ppapi/proxy/ppapi_messages.h"
+ #include "ppapi/proxy/serialized_structs.h"
+
+-#if defined(OS_LINUX) || defined(OS_OPENBSD)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include "components/services/font/public/cpp/font_loader.h"
+ #include "content/public/common/common_sandbox_support_linux.h"
+ #elif defined(OS_WIN)
+@@ -29,7 +29,7 @@ PepperFlashFontFileHost::PepperFlashFontFileHost(
+ const ppapi::proxy::SerializedFontDescription& description,
+ PP_PrivateFontCharset charset)
+ : ResourceHost(host->GetPpapiHost(), instance, resource) {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // The global SkFontConfigInterface is configured and initialized with a
+ // SkFontconfigInterface compatible font_service::FontLoader in
+ // RendererBlinkPlatformImpl (called from RenderThreadImpl::Init) at startup
+@@ -74,7 +74,7 @@ bool PepperFlashFontFileHost::GetFontData(uint32_t tab
+ void* buffer,
+ size_t* length) {
+ bool result = false;
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ if (font_file_.IsValid()) {
+ result = content::GetFontTable(font_file_.GetPlatformFile(), table,
+ 0 /* offset */,
diff --git a/devel/electron4/files/patch-chrome_renderer_pepper_pepper__flash__font__file__host.h b/devel/electron4/files/patch-chrome_renderer_pepper_pepper__flash__font__file__host.h
new file mode 100644
index 000000000000..5c4656ec10a4
--- /dev/null
+++ b/devel/electron4/files/patch-chrome_renderer_pepper_pepper__flash__font__file__host.h
@@ -0,0 +1,20 @@
+--- chrome/renderer/pepper/pepper_flash_font_file_host.h.orig 2019-03-15 06:25:37 UTC
++++ chrome/renderer/pepper/pepper_flash_font_file_host.h
+@@ -14,7 +14,7 @@
+ #include "ppapi/c/private/pp_private_font_charset.h"
+ #include "ppapi/host/resource_host.h"
+
+-#if defined(OS_LINUX) || defined(OS_OPENBSD)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include "base/files/file.h"
+ #elif defined(OS_WIN)
+ #include "third_party/skia/include/core/SkRefCnt.h"
+@@ -50,7 +50,7 @@ class PepperFlashFontFileHost : public ppapi::host::Re
+ uint32_t table);
+ bool GetFontData(uint32_t table, void* buffer, size_t* length);
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ base::File font_file_;
+ #elif defined(OS_WIN)
+ sk_sp<SkTypeface> typeface_;
diff --git a/devel/electron4/files/patch-chrome_service_cloud__print_print__system.cc b/devel/electron4/files/patch-chrome_service_cloud__print_print__system.cc
new file mode 100644
index 000000000000..afe7c88bcaa0
--- /dev/null
+++ b/devel/electron4/files/patch-chrome_service_cloud__print_print__system.cc
@@ -0,0 +1,11 @@
+--- chrome/service/cloud_print/print_system.cc.orig 2019-03-15 06:25:37 UTC
++++ chrome/service/cloud_print/print_system.cc
+@@ -36,7 +36,7 @@ std::string PrintSystem::GenerateProxyId() {
+ return base::GenerateGUID();
+ }
+
+-#if defined(OS_LINUX) && !defined(USE_CUPS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(USE_CUPS)
+ scoped_refptr<PrintSystem> PrintSystem::CreateInstance(
+ const base::DictionaryValue*) {
+ return nullptr;
diff --git a/devel/electron4/files/patch-chrome_test_base_in__process__browser__test.cc b/devel/electron4/files/patch-chrome_test_base_in__process__browser__test.cc
new file mode 100644
index 000000000000..ebaab151f50a
--- /dev/null
+++ b/devel/electron4/files/patch-chrome_test_base_in__process__browser__test.cc
@@ -0,0 +1,22 @@
+--- chrome/test/base/in_process_browser_test.cc.orig 2019-03-15 06:37:10 UTC
++++ chrome/test/base/in_process_browser_test.cc
+@@ -72,6 +72,10 @@
+ #include "chrome/test/base/scoped_bundle_swizzler_mac.h"
+ #endif
+
++#if defined(OS_FREEBSD)
++#include <signal.h>
++#endif
++
+ #if defined(OS_WIN)
+ #include "base/win/scoped_com_initializer.h"
+ #include "base/win/windows_version.h"
+@@ -91,7 +95,7 @@
+ #include "chrome/test/base/default_ash_event_generator_delegate.h"
+ #endif // defined(OS_CHROMEOS)
+
+-#if !defined(OS_CHROMEOS) && defined(OS_LINUX)
++#if !defined(OS_CHROMEOS) && (defined(OS_LINUX) || defined(OS_BSD))
+ #include "ui/views/test/test_desktop_screen_x11.h"
+ #endif
+
diff --git a/devel/electron4/files/patch-chrome_test_base_testing__browser__process.h b/devel/electron4/files/patch-chrome_test_base_testing__browser__process.h
new file mode 100644
index 000000000000..9be7b7c2ab77
--- /dev/null
+++ b/devel/electron4/files/patch-chrome_test_base_testing__browser__process.h
@@ -0,0 +1,13 @@
+--- chrome/test/base/testing_browser_process.h.orig 2019-03-15 06:37:10 UTC
++++ chrome/test/base/testing_browser_process.h
+@@ -114,8 +114,8 @@ class TestingBrowserProcess : public BrowserProcess {
+ DownloadStatusUpdater* download_status_updater() override;
+ DownloadRequestLimiter* download_request_limiter() override;
+
+-#if (defined(OS_WIN) || defined(OS_LINUX)) && !defined(OS_CHROMEOS)
+- void StartAutoupdateTimer() override {}
++#if (defined(OS_WIN) || defined(OS_LINUX) || defined(OS_FREEBSD)) && !defined(OS_CHROMEOS)
++ void StartAutoupdateTimer() /*override*/ {}
+ #endif
+
+ net_log::ChromeNetLog* net_log() override;
diff --git a/devel/electron4/files/patch-chrome_test_chromedriver_chrome_chrome__finder.cc b/devel/electron4/files/patch-chrome_test_chromedriver_chrome_chrome__finder.cc
new file mode 100644
index 000000000000..21f5c76d2efa
--- /dev/null
+++ b/devel/electron4/files/patch-chrome_test_chromedriver_chrome_chrome__finder.cc
@@ -0,0 +1,20 @@
+--- chrome/test/chromedriver/chrome/chrome_finder.cc.orig 2019-03-15 06:37:10 UTC
++++ chrome/test/chromedriver/chrome/chrome_finder.cc
+@@ -45,7 +45,7 @@ void GetApplicationDirs(std::vector<base::FilePath>* l
+ installation_locations[i].Append(L"Chromium\\Application"));
+ }
+ }
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ void GetApplicationDirs(std::vector<base::FilePath>* locations) {
+ // TODO: Respect users' PATH variables.
+ // Until then, we use an approximation of the most common defaults.
+@@ -98,7 +98,7 @@ bool FindChrome(base::FilePath* browser_exe) {
+ #elif defined(OS_MACOSX)
+ base::FilePath("Google Chrome.app/Contents/MacOS/Google Chrome"),
+ base::FilePath("Chromium.app/Contents/MacOS/Chromium")
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ base::FilePath("google-chrome"),
+ base::FilePath("chrome"),
+ base::FilePath("chromium"),
diff --git a/devel/electron4/files/patch-chromecast_browser_cast__browser__main__parts.cc b/devel/electron4/files/patch-chromecast_browser_cast__browser__main__parts.cc
new file mode 100644
index 000000000000..0430daf0e7de
--- /dev/null
+++ b/devel/electron4/files/patch-chromecast_browser_cast__browser__main__parts.cc
@@ -0,0 +1,29 @@
+--- chromecast/browser/cast_browser_main_parts.cc.orig 2019-03-15 06:37:10 UTC
++++ chromecast/browser/cast_browser_main_parts.cc
+@@ -68,7 +68,7 @@
+ #include "ui/compositor/compositor_switches.h"
+ #include "ui/gl/gl_switches.h"
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include <fontconfig/fontconfig.h>
+ #include <signal.h>
+ #include <sys/prctl.h>
+@@ -241,7 +241,7 @@ const DefaultCommandLineSwitch kDefaultSwitches[] = {
+ {cc::switches::kDisableThreadedAnimation, ""},
+ #endif // defined(OS_ANDROID)
+ #endif // BUILDFLAG(IS_CAST_AUDIO_ONLY)
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #if defined(ARCH_CPU_X86_FAMILY)
+ // This is needed for now to enable the x11 Ozone platform to work with
+ // current Linux/NVidia OpenGL drivers.
+@@ -399,7 +399,7 @@ void CastBrowserMainParts::PostMainMessageLoopStart()
+ }
+
+ void CastBrowserMainParts::ToolkitInitialized() {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Without this call, the FontConfig library gets implicitly initialized
+ // on the first call to FontConfig. Since it's not safe to initialize it
+ // concurrently from multiple threads, we explicitly initialize it here
diff --git a/devel/electron4/files/patch-chromecast_browser_cast__content__browser__client.cc b/devel/electron4/files/patch-chromecast_browser_cast__content__browser__client.cc
new file mode 100644
index 000000000000..d1e737eba2e6
--- /dev/null
+++ b/devel/electron4/files/patch-chromecast_browser_cast__content__browser__client.cc
@@ -0,0 +1,11 @@
+--- chromecast/browser/cast_content_browser_client.cc.orig 2019-03-15 06:37:10 UTC
++++ chromecast/browser/cast_content_browser_client.cc
+@@ -426,7 +426,7 @@ void CastContentBrowserClient::AppendExtraCommandLineS
+ switches::kAudioOutputChannels));
+ }
+ } else if (process_type == switches::kGpuProcess) {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Necessary for accelerated 2d canvas. By default on Linux, Chromium assumes
+ // GLES2 contexts can be lost to a power-save mode, which breaks GPU canvas
+ // apps.
diff --git a/devel/electron4/files/patch-components_autofill__strings.grdp b/devel/electron4/files/patch-components_autofill__strings.grdp
new file mode 100644
index 000000000000..effefbb19f6d
--- /dev/null
+++ b/devel/electron4/files/patch-components_autofill__strings.grdp
@@ -0,0 +1,11 @@
+--- components/autofill_strings.grdp.orig 2019-03-15 06:37:13 UTC
++++ components/autofill_strings.grdp
+@@ -201,7 +201,7 @@
+ <message name="IDS_AUTOFILL_SAVE_CARD_PROMPT_UPLOAD_EXPLANATION" desc="Explanation of the effect of the Autofill save card prompt when the card is to be saved by uploading it to Google Payments and also saved locally. The prompt can be either a bubble or an infobar.">
+ Pay quickly on sites and apps across devices using cards you have saved with Google.
+ </message>
+- <if expr="is_linux and not chromeos">
++ <if expr="is_posix and not chromeos">
+ <then>
+ <message name="IDS_AUTOFILL_SAVE_CARD_PROMPT_UPLOAD_EXPLANATION_V2" desc="Explanation of the effect of the Autofill save card prompt when the card is to be saved by uploading it to Google Payments, according to June 2017 UI guidelines. The prompt will be shown in a bubble below the omnibox.">
+ To pay faster next time, save this card to your Google Account.
diff --git a/devel/electron4/files/patch-components_autofill_content_renderer_password__form__conversion__utils.cc b/devel/electron4/files/patch-components_autofill_content_renderer_password__form__conversion__utils.cc
new file mode 100644
index 000000000000..1c9649b52c67
--- /dev/null
+++ b/devel/electron4/files/patch-components_autofill_content_renderer_password__form__conversion__utils.cc
@@ -0,0 +1,14 @@
+--- components/autofill/content/renderer/password_form_conversion_utils.cc.orig 2019-03-15 06:37:12 UTC
++++ components/autofill/content/renderer/password_form_conversion_utils.cc
+@@ -37,7 +37,11 @@
+ #include "third_party/blink/public/web/web_form_control_element.h"
+ #include "third_party/blink/public/web/web_input_element.h"
+ #include "third_party/blink/public/web/web_local_frame.h"
++#if defined(OS_BSD)
++#include <re2/re2.h>
++#else
+ #include "third_party/re2/src/re2/re2.h"
++#endif
+ #include "url/gurl.h"
+
+ using blink::WebFormControlElement;
diff --git a/devel/electron4/files/patch-components_autofill_core_browser_autofill__experiments.cc b/devel/electron4/files/patch-components_autofill_core_browser_autofill__experiments.cc
new file mode 100644
index 000000000000..b86bd2530134
--- /dev/null
+++ b/devel/electron4/files/patch-components_autofill_core_browser_autofill__experiments.cc
@@ -0,0 +1,20 @@
+--- components/autofill/core/browser/autofill_experiments.cc.orig 2019-03-15 06:37:12 UTC
++++ components/autofill/core/browser/autofill_experiments.cc
+@@ -109,7 +109,7 @@ bool IsAutofillCreditCardLocalCardMigrationExperimentE
+ }
+
+ bool OfferStoreUnmaskedCards() {
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS)
+ // The checkbox can be forced on with a flag, but by default we don't store
+ // on Linux due to lack of system keychain integration. See crbug.com/162735
+ return base::CommandLine::ForCurrentProcess()->HasSwitch(
+@@ -212,7 +212,7 @@ bool IsMacViewsAutofillPopupExperimentEnabled() {
+ #endif // defined(OS_MACOSX)
+
+ bool ShouldUseNativeViews() {
+-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+ return base::FeatureList::IsEnabled(kAutofillExpandedPopupViews) ||
+ base::FeatureList::IsEnabled(::features::kExperimentalUi);
+ #else
diff --git a/devel/electron4/files/patch-components_autofill_core_common_autofill__util.cc b/devel/electron4/files/patch-components_autofill_core_common_autofill__util.cc
new file mode 100644
index 000000000000..c9c47209745f
--- /dev/null
+++ b/devel/electron4/files/patch-components_autofill_core_common_autofill__util.cc
@@ -0,0 +1,11 @@
+--- components/autofill/core/common/autofill_util.cc.orig 2019-03-15 06:37:13 UTC
++++ components/autofill/core/common/autofill_util.cc
+@@ -202,7 +202,7 @@ bool SanitizedFieldIsEmpty(const base::string16& value
+ }
+
+ bool ShouldAutoselectFirstSuggestionOnArrowDown() {
+-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+ return true;
+ #else
+ return false;
diff --git a/devel/electron4/files/patch-components_content__settings_core_browser_website__settings__registry.cc b/devel/electron4/files/patch-components_content__settings_core_browser_website__settings__registry.cc
new file mode 100644
index 000000000000..78dc54c7e50c
--- /dev/null
+++ b/devel/electron4/files/patch-components_content__settings_core_browser_website__settings__registry.cc
@@ -0,0 +1,11 @@
+--- components/content_settings/core/browser/website_settings_registry.cc.orig 2019-03-15 06:37:13 UTC
++++ components/content_settings/core/browser/website_settings_registry.cc
+@@ -67,7 +67,7 @@ const WebsiteSettingsInfo* WebsiteSettingsRegistry::Re
+ #if defined(OS_WIN)
+ if (!(platform & PLATFORM_WINDOWS))
+ return nullptr;
+-#elif defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#elif (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ if (!(platform & PLATFORM_LINUX))
+ return nullptr;
+ #elif defined(OS_MACOSX) && !defined(OS_IOS)
diff --git a/devel/electron4/files/patch-components_cookie__config_cookie__store__util.cc b/devel/electron4/files/patch-components_cookie__config_cookie__store__util.cc
new file mode 100644
index 000000000000..b100302ec53b
--- /dev/null
+++ b/devel/electron4/files/patch-components_cookie__config_cookie__store__util.cc
@@ -0,0 +1,24 @@
+--- components/cookie_config/cookie_store_util.cc.orig 2019-03-15 06:25:41 UTC
++++ components/cookie_config/cookie_store_util.cc
+@@ -11,7 +11,7 @@
+
+ namespace cookie_config {
+
+-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+ namespace {
+
+ // Use the operating system's mechanisms to encrypt cookies before writing
+@@ -63,10 +63,10 @@ base::LazyInstance<CookieOSCryptoDelegate>::Destructor
+ net::CookieCryptoDelegate* GetCookieCryptoDelegate() {
+ return g_cookie_crypto_delegate.Pointer();
+ }
+-#else // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
++#else // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+ net::CookieCryptoDelegate* GetCookieCryptoDelegate() {
+ return NULL;
+ }
+-#endif // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
++#endif // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+
+ } // namespace cookie_config
diff --git a/devel/electron4/files/patch-components_crash_content_app_BUILD.gn b/devel/electron4/files/patch-components_crash_content_app_BUILD.gn
new file mode 100644
index 000000000000..64ae3e401a45
--- /dev/null
+++ b/devel/electron4/files/patch-components_crash_content_app_BUILD.gn
@@ -0,0 +1,20 @@
+--- components/crash/content/app/BUILD.gn.orig 2019-03-15 06:37:13 UTC
++++ components/crash/content/app/BUILD.gn
+@@ -36,7 +36,7 @@ static_library("app") {
+ sources += [ "crashpad.cc" ]
+ }
+
+- if (is_android || is_linux) {
++ if (is_android || is_linux && !is_bsd) {
+ # Want these files on both Linux and Android.
+ set_sources_assignment_filter([])
+ sources += [
+@@ -73,8 +73,6 @@ static_library("app") {
+ "//content/public/common:content_descriptors",
+ "//content/public/common:result_codes",
+ "//sandbox",
+- "//third_party/breakpad:client",
+- "//third_party/crashpad/crashpad/snapshot",
+ ]
+
+ # Clang's -mstackrealign doesn't work well with
diff --git a/devel/electron4/files/patch-components_crash_content_app_crashpad.cc b/devel/electron4/files/patch-components_crash_content_app_crashpad.cc
new file mode 100644
index 000000000000..7bfdc826461b
--- /dev/null
+++ b/devel/electron4/files/patch-components_crash_content_app_crashpad.cc
@@ -0,0 +1,43 @@
+--- components/crash/content/app/crashpad.cc.orig 2019-03-15 06:37:13 UTC
++++ components/crash/content/app/crashpad.cc
+@@ -101,6 +101,12 @@ void InitializeCrashpadImpl(bool initial_client,
+ const std::string& user_data_dir,
+ const base::FilePath& exe_path,
+ bool embedded_handler) {
++
++#if defined(OS_BSD)
++ NOTIMPLEMENTED();
++ return;
++#endif
++
+ static bool initialized = false;
+ DCHECK(!initialized);
+ initialized = true;
+@@ -119,7 +125,7 @@ void InitializeCrashpadImpl(bool initial_client,
+ // as processed by the backend.
+ DCHECK(browser_process || process_type == "Chrome Installer" ||
+ process_type == "notification-helper");
+-#elif defined(OS_LINUX) || defined(OS_ANDROID)
++#elif defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
+ DCHECK(browser_process);
+ #else
+ #error Port.
+@@ -184,7 +190,7 @@ void InitializeCrashpadImpl(bool initial_client,
+ // other "main, first process" to initialize things. There is no "relauncher"
+ // on Windows, so this is synonymous with initial_client.
+ const bool should_initialize_database_and_set_upload_policy = initial_client;
+-#elif defined(OS_LINUX) || defined(OS_ANDROID)
++#elif defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
+ const bool should_initialize_database_and_set_upload_policy = browser_process;
+ #endif
+ if (should_initialize_database_and_set_upload_policy) {
+@@ -253,7 +259,9 @@ bool GetUploadsEnabled() {
+ }
+
+ void DumpWithoutCrashing() {
++#if !defined(OS_BSD)
+ CRASHPAD_SIMULATE_CRASH();
++#endif
+ }
+
+ void GetReports(std::vector<Report>* reports) {
diff --git a/devel/electron4/files/patch-components_crash_content_browser_BUILD.gn b/devel/electron4/files/patch-components_crash_content_browser_BUILD.gn
new file mode 100644
index 000000000000..df6ea2cc8d95
--- /dev/null
+++ b/devel/electron4/files/patch-components_crash_content_browser_BUILD.gn
@@ -0,0 +1,23 @@
+--- components/crash/content/browser/BUILD.gn.orig 2019-03-15 06:37:13 UTC
++++ components/crash/content/browser/BUILD.gn
+@@ -26,10 +26,9 @@ source_set("browser") {
+ "//components/crash/content/app",
+ "//content/public/browser",
+ "//content/public/common",
+- "//third_party/breakpad:client",
+ ]
+
+- if (is_linux || is_android) {
++ if ((is_linux && !is_bsd) || is_android) {
+ set_sources_assignment_filter([])
+
+ # Want this file on both Linux and Android.
+@@ -45,7 +44,7 @@ source_set("browser") {
+
+ # This is not in the GYP build but this target includes breakpad client
+ # headers, so add the dependency here.
+- if ((is_posix && !is_ios) || is_fuchsia) {
++ if ((is_posix && !is_ios && !is_bsd) || is_fuchsia) {
+ configs += [ "//third_party/breakpad:client_config" ]
+ public_configs = [ "//third_party/breakpad:client_config" ]
+ }
diff --git a/devel/electron4/files/patch-components_crash_core_common_BUILD.gn b/devel/electron4/files/patch-components_crash_core_common_BUILD.gn
new file mode 100644
index 000000000000..53ab007587b2
--- /dev/null
+++ b/devel/electron4/files/patch-components_crash_core_common_BUILD.gn
@@ -0,0 +1,28 @@
+--- components/crash/core/common/BUILD.gn.orig 2019-03-15 06:37:13 UTC
++++ components/crash/core/common/BUILD.gn
+@@ -6,7 +6,7 @@ import("//build/buildflag_header.gni")
+
+ declare_args() {
+ # If set to true, this will stub out and disable the entire crash key system.
+- use_crash_key_stubs = is_fuchsia
++ use_crash_key_stubs = is_fuchsia || is_bsd
+ }
+
+ group("common") {
+@@ -88,7 +88,6 @@ target(crash_key_target_type, "crash_key") {
+ ]
+ }
+
+- deps += [ "//third_party/breakpad:client" ]
+ }
+ }
+
+@@ -143,7 +142,7 @@ source_set("unit_tests") {
+ sources += [ "objc_zombie_unittest.mm" ]
+ }
+
+- if (!is_mac && !is_win && !is_fuchsia) {
++ if (!is_mac && !is_win && !is_fuchsia && !is_bsd) {
+ include_dirs = [ "//third_party/breakpad/breakpad/src/" ]
+ sources += [ "crash_key_breakpad_unittest.cc" ]
+ }
diff --git a/devel/electron4/files/patch-components_download_internal_common_base__file.cc b/devel/electron4/files/patch-components_download_internal_common_base__file.cc
new file mode 100644
index 000000000000..57871d7ab2dc
--- /dev/null
+++ b/devel/electron4/files/patch-components_download_internal_common_base__file.cc
@@ -0,0 +1,11 @@
+--- components/download/internal/common/base_file.cc.orig 2019-03-15 06:37:14 UTC
++++ components/download/internal/common/base_file.cc
+@@ -446,7 +446,7 @@ DownloadInterruptReason BaseFile::LogInterruptReason(
+ return reason;
+ }
+
+-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+
+ namespace {
+
diff --git a/devel/electron4/files/patch-components_download_quarantine_quarantine__linux.cc b/devel/electron4/files/patch-components_download_quarantine_quarantine__linux.cc
new file mode 100644
index 000000000000..ee969234e47a
--- /dev/null
+++ b/devel/electron4/files/patch-components_download_quarantine_quarantine__linux.cc
@@ -0,0 +1,49 @@
+--- components/download/quarantine/quarantine_linux.cc.orig 2019-03-15 06:37:14 UTC
++++ components/download/quarantine/quarantine_linux.cc
+@@ -2,11 +2,15 @@
+ // Use of this source code is governed by a BSD-style license that can be
+ // found in the LICENSE file.
+
++#include "build/build_config.h"
++
+ #include "components/download/quarantine/quarantine.h"
+
+ #include <stddef.h>
+ #include <sys/types.h>
++#if !defined(OS_BSD)
+ #include <sys/xattr.h>
++#endif
+
+ #include "base/files/file_path.h"
+ #include "base/files/file_util.h"
+@@ -29,17 +33,20 @@ bool SetExtendedFileAttribute(const char* path,
+ size_t value_size,
+ int flags) {
+ base::AssertBlockingAllowed();
++#if !defined(OS_BSD)
+ int result = setxattr(path, name, value, value_size, flags);
+ if (result) {
+ DPLOG(ERROR) << "Could not set extended attribute " << name << " on file "
+ << path;
+ return false;
+ }
++#endif
+ return true;
+ }
+
+ std::string GetExtendedFileAttribute(const char* path, const char* name) {
+ base::AssertBlockingAllowed();
++#if !defined(OS_BSD)
+ ssize_t len = getxattr(path, name, nullptr, 0);
+ if (len <= 0)
+ return std::string();
+@@ -49,6 +56,9 @@ std::string GetExtendedFileAttribute(const char* path,
+ if (len < static_cast<ssize_t>(buffer.size()))
+ return std::string();
+ return std::string(buffer.begin(), buffer.end());
++#else
++ return std::string();
++#endif
+ }
+
+ } // namespace
diff --git a/devel/electron4/files/patch-components_feature__engagement_public_event__constants.cc b/devel/electron4/files/patch-components_feature__engagement_public_event__constants.cc
new file mode 100644
index 000000000000..3eec881cb311
--- /dev/null
+++ b/devel/electron4/files/patch-components_feature__engagement_public_event__constants.cc
@@ -0,0 +1,14 @@
+--- components/feature_engagement/public/event_constants.cc.orig 2019-03-15 06:37:14 UTC
++++ components/feature_engagement/public/event_constants.cc
+@@ -24,9 +24,9 @@ const char kIncognitoWindowSessionTimeMet[] =
+
+ #endif // BUILDFLAG(ENABLE_DESKTOP_IN_PRODUCT_HELP)
+
+-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_IOS)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_IOS) || defined(OS_BSD)
+ const char kNewTabOpened[] = "new_tab_opened";
+-#endif // defined(OS_WIN) || defined(OS_LINUX) || defined(OS_IOS)
++#endif // defined(OS_WIN) || defined(OS_LINUX) || defined(OS_IOS) || defined(OS_BSD)
+
+ #if defined(OS_IOS)
+ const char kChromeOpened[] = "chrome_opened";
diff --git a/devel/electron4/files/patch-components_feature__engagement_public_event__constants.h b/devel/electron4/files/patch-components_feature__engagement_public_event__constants.h
new file mode 100644
index 000000000000..cf5015e6dcfd
--- /dev/null
+++ b/devel/electron4/files/patch-components_feature__engagement_public_event__constants.h
@@ -0,0 +1,20 @@
+--- components/feature_engagement/public/event_constants.h.orig 2019-03-15 06:37:14 UTC
++++ components/feature_engagement/public/event_constants.h
+@@ -42,7 +42,7 @@ extern const char kIncognitoWindowOpened[];
+ extern const char kIncognitoWindowSessionTimeMet[];
+ #endif // BUILDFLAG(ENABLE_DESKTOP_IN_PRODUCT_HELP)
+
+-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_IOS)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_IOS) || defined(OS_BSD)
+ // This event is included in the deferred onboarding events for the New Tab
+ // described above, but it is also used on iOS, so it must be compiled
+ // separately.
+@@ -50,7 +50,7 @@ extern const char kIncognitoWindowSessionTimeMet[];
+ // The user has explicitly opened a new tab via an entry point from inside of
+ // Chrome.
+ extern const char kNewTabOpened[];
+-#endif // defined(OS_WIN) || defined(OS_LINUX) || defined(OS_IOS)
++#endif // defined(OS_WIN) || defined(OS_LINUX) || defined(OS_IOS) || defined(OS_BSD)
+
+ #if defined(OS_IOS)
+ // The user has opened Chrome (cold start or from background).
diff --git a/devel/electron4/files/patch-components_feedback_anonymizer__tool.cc b/devel/electron4/files/patch-components_feedback_anonymizer__tool.cc
new file mode 100644
index 000000000000..657c8de832aa
--- /dev/null
+++ b/devel/electron4/files/patch-components_feedback_anonymizer__tool.cc
@@ -0,0 +1,14 @@
+--- components/feedback/anonymizer_tool.cc.orig 2019-03-15 06:37:14 UTC
++++ components/feedback/anonymizer_tool.cc
+@@ -11,7 +11,11 @@
+ #include "base/strings/string_util.h"
+ #include "base/strings/stringprintf.h"
+ #include "content/public/browser/browser_thread.h"
++#if defined(OS_BSD)
++#include <re2/re2.h>
++#else
+ #include "third_party/re2/src/re2/re2.h"
++#endif
+
+ using re2::RE2;
+
diff --git a/devel/electron4/files/patch-components_flags__ui_flags__state.cc b/devel/electron4/files/patch-components_flags__ui_flags__state.cc
new file mode 100644
index 000000000000..fa8f2acefa25
--- /dev/null
+++ b/devel/electron4/files/patch-components_flags__ui_flags__state.cc
@@ -0,0 +1,11 @@
+--- components/flags_ui/flags_state.cc.orig 2019-03-15 06:37:14 UTC
++++ components/flags_ui/flags_state.cc
+@@ -653,7 +653,7 @@ int FlagsState::GetCurrentPlatform() {
+ return kOsWin;
+ #elif defined(OS_CHROMEOS) // Needs to be before the OS_LINUX check.
+ return kOsCrOS;
+-#elif defined(OS_LINUX) || defined(OS_OPENBSD)
++#elif defined(OS_LINUX) || defined(OS_OPENBSD) || defined(OS_FREEBSD)
+ return kOsLinux;
+ #elif defined(OS_ANDROID)
+ return kOsAndroid;
diff --git a/devel/electron4/files/patch-components_gcm__driver_gcm__client.h b/devel/electron4/files/patch-components_gcm__driver_gcm__client.h
new file mode 100644
index 000000000000..aa2bebfdd363
--- /dev/null
+++ b/devel/electron4/files/patch-components_gcm__driver_gcm__client.h
@@ -0,0 +1,10 @@
+--- components/gcm_driver/gcm_client.h.orig 2019-03-15 06:37:14 UTC
++++ components/gcm_driver/gcm_client.h
+@@ -86,6 +86,7 @@ class GCMClient {
+ PLATFORM_CROS,
+ PLATFORM_IOS,
+ PLATFORM_ANDROID,
++ PLATFORM_BSD,
+ PLATFORM_UNSPECIFIED
+ };
+
diff --git a/devel/electron4/files/patch-components_gcm__driver_gcm__client__impl.cc b/devel/electron4/files/patch-components_gcm__driver_gcm__client__impl.cc
new file mode 100644
index 000000000000..f08ffb01cf84
--- /dev/null
+++ b/devel/electron4/files/patch-components_gcm__driver_gcm__client__impl.cc
@@ -0,0 +1,12 @@
+--- components/gcm_driver/gcm_client_impl.cc.orig 2019-03-15 06:37:14 UTC
++++ components/gcm_driver/gcm_client_impl.cc
+@@ -151,6 +151,9 @@ void ToCheckinProtoVersion(
+ case GCMClient::PLATFORM_CROS:
+ platform = checkin_proto::ChromeBuildProto_Platform_PLATFORM_CROS;
+ break;
++ case GCMClient::PLATFORM_BSD:
++ platform = checkin_proto::ChromeBuildProto_Platform_PLATFORM_LINUX;
++ break;
+ case GCMClient::PLATFORM_UNSPECIFIED:
+ // For unknown platform, return as LINUX.
+ platform = checkin_proto::ChromeBuildProto_Platform_PLATFORM_LINUX;
diff --git a/devel/electron4/files/patch-components_keyed__service_core_dependency__graph__unittest.cc b/devel/electron4/files/patch-components_keyed__service_core_dependency__graph__unittest.cc
new file mode 100644
index 000000000000..076e35b26e7f
--- /dev/null
+++ b/devel/electron4/files/patch-components_keyed__service_core_dependency__graph__unittest.cc
@@ -0,0 +1,14 @@
+--- components/keyed_service/core/dependency_graph_unittest.cc.orig 2019-03-15 06:25:41 UTC
++++ components/keyed_service/core/dependency_graph_unittest.cc
+@@ -9,7 +9,11 @@
+ #include "components/keyed_service/core/dependency_graph.h"
+ #include "components/keyed_service/core/dependency_node.h"
+ #include "testing/gtest/include/gtest/gtest.h"
++#if defined(OS_BSD)
++#include <re2/re2.h>
++#else
+ #include "third_party/re2/src/re2/re2.h"
++#endif
+
+ namespace {
+
diff --git a/devel/electron4/files/patch-components_metrics_BUILD.gn b/devel/electron4/files/patch-components_metrics_BUILD.gn
new file mode 100644
index 000000000000..c82987bba8bb
--- /dev/null
+++ b/devel/electron4/files/patch-components_metrics_BUILD.gn
@@ -0,0 +1,14 @@
+--- components/metrics/BUILD.gn.orig 2019-03-15 06:37:14 UTC
++++ components/metrics/BUILD.gn
+@@ -142,6 +142,11 @@ static_library("metrics") {
+ if (is_fuchsia) {
+ sources += [ "drive_metrics_provider_fuchsia.cc" ]
+ }
++
++ if (is_bsd) {
++ sources -= [ "system_memory_stats_recorder_linux.cc" ]
++ }
++
+ }
+
+ # The component metrics provider is a separate target because it depends upon
diff --git a/devel/electron4/files/patch-components_metrics_drive__metrics__provider__linux.cc b/devel/electron4/files/patch-components_metrics_drive__metrics__provider__linux.cc
new file mode 100644
index 000000000000..3f700bbe8df2
--- /dev/null
+++ b/devel/electron4/files/patch-components_metrics_drive__metrics__provider__linux.cc
@@ -0,0 +1,16 @@
+--- components/metrics/drive_metrics_provider_linux.cc.orig 2019-03-15 06:25:41 UTC
++++ components/metrics/drive_metrics_provider_linux.cc
+@@ -4,7 +4,13 @@
+
+ #include "components/metrics/drive_metrics_provider.h"
+
++#if defined(OS_BSD)
++#include <sys/types.h>
++#define MAJOR(dev) major(dev)
++#define MINOR(dev) minor(dev)
++#else
+ #include <linux/kdev_t.h> // For MAJOR()/MINOR().
++#endif
+ #include <sys/stat.h>
+ #include <string>
+
diff --git a/devel/electron4/files/patch-components_metrics_system__memory__stats__recorder__linux.cc b/devel/electron4/files/patch-components_metrics_system__memory__stats__recorder__linux.cc
new file mode 100644
index 000000000000..dd00fef551a0
--- /dev/null
+++ b/devel/electron4/files/patch-components_metrics_system__memory__stats__recorder__linux.cc
@@ -0,0 +1,18 @@
+--- components/metrics/system_memory_stats_recorder_linux.cc.orig 2019-03-15 06:25:41 UTC
++++ components/metrics/system_memory_stats_recorder_linux.cc
+@@ -30,6 +30,7 @@ namespace metrics {
+ UMA_HISTOGRAM_LINEAR(name, sample, 2500, 50)
+
+ void RecordMemoryStats(RecordMemoryStatsType type) {
++#if !defined(OS_FREEBSD)
+ base::SystemMemoryInfoKB memory;
+ if (!base::GetSystemMemoryInfo(&memory))
+ return;
+@@ -93,6 +94,7 @@ void RecordMemoryStats(RecordMemoryStatsType type) {
+ break;
+ }
+ }
++#endif // !defined(OS_FREEBSD)
+ }
+
+ } // namespace metrics
diff --git a/devel/electron4/files/patch-components_neterror_resources_neterror.js b/devel/electron4/files/patch-components_neterror_resources_neterror.js
new file mode 100644
index 000000000000..1029008e5837
--- /dev/null
+++ b/devel/electron4/files/patch-components_neterror_resources_neterror.js
@@ -0,0 +1,11 @@
+--- components/neterror/resources/neterror.js.orig 2019-03-15 06:37:14 UTC
++++ components/neterror/resources/neterror.js
+@@ -153,7 +153,7 @@ function setUpCachedButton(buttonStrings) {
+ }
+
+ var primaryControlOnLeft = true;
+-// <if expr="is_macosx or is_ios or is_linux or is_android">
++// <if expr="is_macosx or is_ios or is_linux or is_android or is_bsd">
+ primaryControlOnLeft = false;
+ // </if>
+
diff --git a/devel/electron4/files/patch-components_network__session__configurator_browser_network__session__configurator.cc b/devel/electron4/files/patch-components_network__session__configurator_browser_network__session__configurator.cc
new file mode 100644
index 000000000000..95199a9d6114
--- /dev/null
+++ b/devel/electron4/files/patch-components_network__session__configurator_browser_network__session__configurator.cc
@@ -0,0 +1,11 @@
+--- components/network_session_configurator/browser/network_session_configurator.cc.orig 2019-07-24 10:33:28 UTC
++++ components/network_session_configurator/browser/network_session_configurator.cc
+@@ -618,7 +618,7 @@ net::URLRequestContextBuilder::HttpCacheParams::Type C
+ }
+ #endif // #if !defined(OS_ANDROID)
+
+-#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ return net::URLRequestContextBuilder::HttpCacheParams::DISK_SIMPLE;
+ #else
+ return net::URLRequestContextBuilder::HttpCacheParams::DISK_BLOCKFILE;
diff --git a/devel/electron4/files/patch-components_new__or__sad__tab__strings.grdp b/devel/electron4/files/patch-components_new__or__sad__tab__strings.grdp
new file mode 100644
index 000000000000..2c06c9bb3118
--- /dev/null
+++ b/devel/electron4/files/patch-components_new__or__sad__tab__strings.grdp
@@ -0,0 +1,38 @@
+--- components/new_or_sad_tab_strings.grdp.orig 2019-03-15 06:37:14 UTC
++++ components/new_or_sad_tab_strings.grdp
+@@ -51,7 +51,7 @@
+ Open page in a new Incognito window (⇧⌘N)
+ </message>
+ </if>
+- <if expr="is_win or is_linux or chromeos">
++ <if expr="is_win or is_posix or chromeos">
+ <message name="IDS_SAD_TAB_RELOAD_INCOGNITO" desc="One of the bullet points displayed on the web page if a reload failed to fix the issue, advising the user to open the web page in Chrome's Incognito mode.">
+ Open page in a new Incognito window (Ctrl-Shift-N)
+ </message>
+@@ -66,7 +66,7 @@
+ Close other tabs or apps
+ </message>
+ </if>
+- <if expr="is_linux and not chromeos">
++ <if expr="is_posix and not chromeos">
+ <message name="IDS_SAD_TAB_RELOAD_CLOSE_TABS" desc="One of the bullet points displayed on the web page if a reload failed to fix the issue, advising the user to close other Chrome tabs or programs running on their computer.">
+ Close other tabs or programs
+ </message>
+@@ -76,7 +76,7 @@
+ Close other apps
+ </message>
+ </if>
+- <if expr="is_linux and not chromeos">
++ <if expr="is_posix and not chromeos">
+ <message name="IDS_SAD_TAB_RELOAD_CLOSE_NOTABS" desc="One of the bullet points displayed on the web page if a reload failed to fix the issue, advising the user to close other programs running on their computer (Linux).">
+ Close other programs
+ </message>
+@@ -91,7 +91,7 @@
+ Restart Chromium
+ </message>
+ </if>
+- <if expr="is_win or is_linux or is_macosx or chromeos">
++ <if expr="is_win or is_posix or is_macosx or chromeos">
+ <message name="IDS_SAD_TAB_RELOAD_RESTART_DEVICE" desc="One of the bullet points displayed on the web page if a reload failed to fix the issue, advising the user to restart their computer.">
+ Restart your computer
+ </message>
diff --git a/devel/electron4/files/patch-components_os__crypt_os__crypt.h b/devel/electron4/files/patch-components_os__crypt_os__crypt.h
new file mode 100644
index 000000000000..54c88bfe301d
--- /dev/null
+++ b/devel/electron4/files/patch-components_os__crypt_os__crypt.h
@@ -0,0 +1,29 @@
+--- components/os_crypt/os_crypt.h.orig 2019-03-15 06:37:14 UTC
++++ components/os_crypt/os_crypt.h
+@@ -14,7 +14,7 @@
+ #include "base/strings/string16.h"
+ #include "build/build_config.h"
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) && defined(UNIT_TEST)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD) && defined(UNIT_TEST)
+ class KeyStorageLinux;
+ #endif // defined(OS_LINUX) && !defined(OS_CHROMEOS) && defined(UNIT_TEST)
+
+@@ -28,7 +28,7 @@ struct Config;
+ // true for Linux, if a password management tool is available.
+ class OSCrypt {
+ public:
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ // Set the configuration of OSCrypt.
+ static void SetConfig(std::unique_ptr<os_crypt::Config> config);
+
+@@ -67,7 +67,7 @@ class OSCrypt {
+ DISALLOW_IMPLICIT_CONSTRUCTORS(OSCrypt);
+ };
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) && defined(UNIT_TEST)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD) && defined(UNIT_TEST)
+ // For unit testing purposes, inject methods to be used.
+ // |get_key_storage_mock| provides the desired |KeyStorage| implementation.
+ // If the provider returns |nullptr|, a hardcoded password will be used.
diff --git a/devel/electron4/files/patch-components_os__crypt_os__crypt__unittest.cc b/devel/electron4/files/patch-components_os__crypt_os__crypt__unittest.cc
new file mode 100644
index 000000000000..cb406f6564ca
--- /dev/null
+++ b/devel/electron4/files/patch-components_os__crypt_os__crypt__unittest.cc
@@ -0,0 +1,11 @@
+--- components/os_crypt/os_crypt_unittest.cc.orig 2019-03-15 06:37:14 UTC
++++ components/os_crypt/os_crypt_unittest.cc
+@@ -18,7 +18,7 @@
+ #include "components/os_crypt/os_crypt_mocker.h"
+ #include "testing/gtest/include/gtest/gtest.h"
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ #include "components/os_crypt/os_crypt_mocker_linux.h"
+ #endif
+
diff --git a/devel/electron4/files/patch-components_password__manager_core_browser_import_csv__reader.cc b/devel/electron4/files/patch-components_password__manager_core_browser_import_csv__reader.cc
new file mode 100644
index 000000000000..b538fee4aafc
--- /dev/null
+++ b/devel/electron4/files/patch-components_password__manager_core_browser_import_csv__reader.cc
@@ -0,0 +1,14 @@
+--- components/password_manager/core/browser/import/csv_reader.cc.orig 2019-03-15 06:37:14 UTC
++++ components/password_manager/core/browser/import/csv_reader.cc
+@@ -9,7 +9,11 @@
+ #include "base/logging.h"
+ #include "base/macros.h"
+ #include "base/strings/string_util.h"
++#if defined(OS_BSD)
++#include <re2/re2.h>
++#else
+ #include "third_party/re2/src/re2/re2.h"
++#endif
+
+ namespace {
+
diff --git a/devel/electron4/files/patch-components_plugins_renderer_plugin__placeholder.cc b/devel/electron4/files/patch-components_plugins_renderer_plugin__placeholder.cc
new file mode 100644
index 000000000000..b38a35c6292c
--- /dev/null
+++ b/devel/electron4/files/patch-components_plugins_renderer_plugin__placeholder.cc
@@ -0,0 +1,14 @@
+--- components/plugins/renderer/plugin_placeholder.cc.orig 2019-03-15 06:37:14 UTC
++++ components/plugins/renderer/plugin_placeholder.cc
+@@ -11,7 +11,11 @@
+ #include "gin/object_template_builder.h"
+ #include "third_party/blink/public/web/web_element.h"
+ #include "third_party/blink/public/web/web_plugin_container.h"
++#if defined(OS_BSD)
++#include <re2/re2.h>
++#else
+ #include "third_party/re2/src/re2/re2.h"
++#endif
+
+ namespace plugins {
+
diff --git a/devel/electron4/files/patch-components_policy_core_common_schema.cc b/devel/electron4/files/patch-components_policy_core_common_schema.cc
new file mode 100644
index 000000000000..c891ae36f902
--- /dev/null
+++ b/devel/electron4/files/patch-components_policy_core_common_schema.cc
@@ -0,0 +1,14 @@
+--- components/policy/core/common/schema.cc.orig 2019-03-15 06:37:14 UTC
++++ components/policy/core/common/schema.cc
+@@ -22,7 +22,11 @@
+ #include "components/json_schema/json_schema_constants.h"
+ #include "components/json_schema/json_schema_validator.h"
+ #include "components/policy/core/common/schema_internal.h"
++#if defined(OS_FREEBSD)
++#include <re2/re2.h>
++#else
+ #include "third_party/re2/src/re2/re2.h"
++#endif
+
+ namespace schema = json_schema_constants;
+
diff --git a/devel/electron4/files/patch-components_policy_resources_policy__templates.json b/devel/electron4/files/patch-components_policy_resources_policy__templates.json
new file mode 100644
index 000000000000..29283289f155
--- /dev/null
+++ b/devel/electron4/files/patch-components_policy_resources_policy__templates.json
@@ -0,0 +1,83 @@
+--- components/policy/resources/policy_templates.json.orig 2019-03-15 06:37:14 UTC
++++ components/policy/resources/policy_templates.json
+@@ -646,7 +646,7 @@
+ 'name': 'HomepageLocation',
+ 'type': 'string',
+ 'schema': { 'type': 'string' },
+- 'supported_on': ['chrome.*:8-', 'chrome_os:11-'],
++ 'supported_on': ['chrome.*:8-', 'chrome_os:11-', 'chrome.bsd:9-'],
+ 'features': {
+ 'can_be_recommended': True,
+ 'dynamic_refresh': True,
+@@ -674,7 +674,7 @@
+ 'name': 'HomepageIsNewTabPage',
+ 'type': 'main',
+ 'schema': { 'type': 'boolean' },
+- 'supported_on': ['chrome.*:8-', 'chrome_os:11-'],
++ 'supported_on': ['chrome.*:8-', 'chrome_os:11-', 'chrome.bsd:9-'],
+ 'features': {
+ 'can_be_recommended': True,
+ 'dynamic_refresh': True,
+@@ -701,7 +701,7 @@
+ 'name': 'NewTabPageLocation',
+ 'type': 'string',
+ 'schema': { 'type': 'string' },
+- 'supported_on': ['chrome.*:58-', 'chrome_os:58-'],
++ 'supported_on': ['chrome.*:58-', 'chrome_os:58-', 'chrome.bsd:9-'],
+ 'features': {
+ 'can_be_recommended': True,
+ 'dynamic_refresh': True,
+@@ -1392,7 +1392,7 @@
+ 'name': 'RemoteAccessHostMatchUsername',
+ 'type': 'main',
+ 'schema': { 'type': 'boolean' },
+- 'supported_on': ['chrome.linux:25-', 'chrome.mac:25-', 'chrome_os:42-'],
++ 'supported_on': ['chrome.linux:25-', 'chrome.mac:25-', 'chrome_os:42-', 'chrome.bsd:25-'],
+ 'features': {
+ 'dynamic_refresh': True,
+ 'per_profile': False,
+@@ -2646,7 +2646,7 @@
+ 'name': 'GSSAPILibraryName',
+ 'type': 'string',
+ 'schema': { 'type': 'string' },
+- 'supported_on': ['chrome.linux:9-'],
++ 'supported_on': ['chrome.linux:9-', 'chrome.bsd:9-'],
+ 'features': {
+ 'dynamic_refresh': False,
+ 'per_profile': False,
+@@ -2698,7 +2698,7 @@
+ 'name': 'NtlmV2Enabled',
+ 'type': 'main',
+ 'schema': { 'type': 'boolean' },
+- 'supported_on': ['chrome.linux:63-','chrome.mac:63-','chrome_os:63-','android:63-','webview_android:63-'],
++ 'supported_on': ['chrome.linux:63-','chrome.mac:63-','chrome_os:63-','android:63-','webview_android:63-', 'chrome.bsd:63-'],
+ 'features': {
+ 'dynamic_refresh': True,
+ 'per_profile': False,
+@@ -5609,7 +5609,7 @@
+ 'name': 'RequireOnlineRevocationChecksForLocalAnchors',
+ 'type': 'main',
+ 'schema': { 'type': 'boolean' },
+- 'supported_on': ['chrome_os:30-', 'chrome.linux:30-', 'chrome.win:30-'],
++ 'supported_on': ['chrome_os:30-', 'chrome.linux:30-', 'chrome.win:30-', 'chrome.bsd:30-'],
+ 'features': {
+ 'dynamic_refresh': True,
+ 'per_profile': False,
+@@ -6625,7 +6625,7 @@
+ 'name': 'BackgroundModeEnabled',
+ 'type': 'main',
+ 'schema': { 'type': 'boolean' },
+- 'supported_on': ['chrome.win:19-', 'chrome.linux:19-'],
++ 'supported_on': ['chrome.win:19-', 'chrome.linux:19-', 'chrome.bsd:19-'],
+ 'features': {
+ 'can_be_recommended': True,
+ 'dynamic_refresh': True,
+@@ -7140,7 +7140,7 @@
+ 'name': 'FullscreenAllowed',
+ 'type': 'main',
+ 'schema': { 'type': 'boolean' },
+- 'supported_on': ['chrome.win:31-', 'chrome.linux:31-', 'chrome_os:31-'],
++ 'supported_on': ['chrome.win:31-', 'chrome.linux:31-', 'chrome_os:31-', 'chrome.bsd:31-'],
+ 'features': {
+ 'dynamic_refresh': True,
+ 'per_profile': True,
diff --git a/devel/electron4/files/patch-components_policy_tools_generate__policy__source.py b/devel/electron4/files/patch-components_policy_tools_generate__policy__source.py
new file mode 100644
index 000000000000..442cc906648a
--- /dev/null
+++ b/devel/electron4/files/patch-components_policy_tools_generate__policy__source.py
@@ -0,0 +1,20 @@
+--- components/policy/tools/generate_policy_source.py.orig 2019-03-15 06:37:17 UTC
++++ components/policy/tools/generate_policy_source.py
+@@ -92,7 +92,7 @@ class PolicyDetails:
+ raise RuntimeError('is_device_only is only allowed for Chrome OS: "%s"'
+ % p)
+ if platform not in ['chrome_frame', 'chrome_os',
+- 'android', 'webview_android',
++ 'android', 'webview_android', 'chrome.bsd',
+ 'chrome.win', 'chrome.linux', 'chrome.mac',
+ 'chrome.fuchsia', 'chrome.*']:
+ raise RuntimeError('Platform "%s" is not supported' % platform)
+@@ -112,7 +112,7 @@ class PolicyDetails:
+ if platform.startswith('chrome.'):
+ platform_sub = platform[7:]
+ if platform_sub == '*':
+- self.platforms.extend(['win', 'mac', 'linux', 'fuchsia'])
++ self.platforms.extend(['win', 'mac', 'linux', 'fuchsia', 'freebsd'])
+ else:
+ self.platforms.append(platform_sub)
+ else:
diff --git a/devel/electron4/files/patch-components_previews_core_previews__features.cc b/devel/electron4/files/patch-components_previews_core_previews__features.cc
new file mode 100644
index 000000000000..99b9a7dc4abc
--- /dev/null
+++ b/devel/electron4/files/patch-components_previews_core_previews__features.cc
@@ -0,0 +1,11 @@
+--- components/previews/core/previews_features.cc.orig 2019-03-15 06:37:17 UTC
++++ components/previews/core/previews_features.cc
+@@ -14,7 +14,7 @@ namespace features {
+ // are enabled are controlled by other features.
+ const base::Feature kPreviews {
+ "Previews",
+-#if defined(OS_ANDROID) || defined(OS_LINUX)
++#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_BSD)
+ // Previews allowed for Android (but also allow on Linux for dev/debug).
+ base::FEATURE_ENABLED_BY_DEFAULT
+ #else // !defined(OS_ANDROID) || defined(OS_LINUX)
diff --git a/devel/electron4/files/patch-components_services_filesystem_file__system__app.cc b/devel/electron4/files/patch-components_services_filesystem_file__system__app.cc
new file mode 100644
index 000000000000..7cd6e765c19a
--- /dev/null
+++ b/devel/electron4/files/patch-components_services_filesystem_file__system__app.cc
@@ -0,0 +1,20 @@
+--- components/services/filesystem/file_system_app.cc.orig 2019-03-15 06:37:17 UTC
++++ components/services/filesystem/file_system_app.cc
+@@ -20,7 +20,7 @@
+ #elif defined(OS_ANDROID)
+ #include "base/base_paths_android.h"
+ #include "base/path_service.h"
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ #include "base/environment.h"
+ #include "base/nix/xdg_util.h"
+ #elif defined(OS_MACOSX)
+@@ -75,7 +75,7 @@ base::FilePath FileSystemApp::GetUserDataDir() {
+ CHECK(base::PathService::Get(base::DIR_APP_DATA, &path));
+ #elif defined(OS_ANDROID)
+ CHECK(base::PathService::Get(base::DIR_ANDROID_APP_DATA, &path));
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ std::unique_ptr<base::Environment> env(base::Environment::Create());
+ path = base::nix::GetXDGDirectory(
+ env.get(), base::nix::kXdgConfigHomeEnvVar, base::nix::kDotConfigDir);
diff --git a/devel/electron4/files/patch-components_services_font_font__service__app.cc b/devel/electron4/files/patch-components_services_font_font__service__app.cc
new file mode 100644
index 000000000000..47844fc9f181
--- /dev/null
+++ b/devel/electron4/files/patch-components_services_font_font__service__app.cc
@@ -0,0 +1,11 @@
+--- components/services/font/font_service_app.cc.orig 2019-03-15 06:37:17 UTC
++++ components/services/font/font_service_app.cc
+@@ -20,7 +20,7 @@
+ #include "components/services/font/ppapi_fontconfig_matching.h" // nogncheck
+ #endif
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include "base/test/fontconfig_util_linux.h"
+ #endif
+
diff --git a/devel/electron4/files/patch-components_storage__monitor_BUILD.gn b/devel/electron4/files/patch-components_storage__monitor_BUILD.gn
new file mode 100644
index 000000000000..7e99c5c2728c
--- /dev/null
+++ b/devel/electron4/files/patch-components_storage__monitor_BUILD.gn
@@ -0,0 +1,20 @@
+--- components/storage_monitor/BUILD.gn.orig 2019-03-15 06:37:17 UTC
++++ components/storage_monitor/BUILD.gn
+@@ -65,6 +65,17 @@ static_library("storage_monitor") {
+ ]
+ }
+
++ if (is_bsd) {
++ sources -= [
++ "mtab_watcher_linux.cc",
++ "mtab_watcher_linux.h",
++ ]
++ sources += [
++ "storage_monitor_freebsd.cc",
++ "storage_monitor_freebsd.h",
++ ]
++ }
++
+ if (use_udev) {
+ deps += [ "//device/udev_linux" ]
+ } else if (is_linux) {
diff --git a/devel/electron4/files/patch-components_storage__monitor_removable__device__constants.cc b/devel/electron4/files/patch-components_storage__monitor_removable__device__constants.cc
new file mode 100644
index 000000000000..561e2d810f31
--- /dev/null
+++ b/devel/electron4/files/patch-components_storage__monitor_removable__device__constants.cc
@@ -0,0 +1,11 @@
+--- components/storage_monitor/removable_device_constants.cc.orig 2019-03-15 06:25:42 UTC
++++ components/storage_monitor/removable_device_constants.cc
+@@ -10,7 +10,7 @@ namespace storage_monitor {
+ const char kFSUniqueIdPrefix[] = "UUID:";
+ const char kVendorModelSerialPrefix[] = "VendorModelSerial:";
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ const char kVendorModelVolumeStoragePrefix[] = "VendorModelVolumeStorage:";
+ #endif
+
diff --git a/devel/electron4/files/patch-components_storage__monitor_removable__device__constants.h b/devel/electron4/files/patch-components_storage__monitor_removable__device__constants.h
new file mode 100644
index 000000000000..1ff748d47d15
--- /dev/null
+++ b/devel/electron4/files/patch-components_storage__monitor_removable__device__constants.h
@@ -0,0 +1,11 @@
+--- components/storage_monitor/removable_device_constants.h.orig 2019-03-15 06:25:42 UTC
++++ components/storage_monitor/removable_device_constants.h
+@@ -15,7 +15,7 @@ namespace storage_monitor {
+ extern const char kFSUniqueIdPrefix[];
+ extern const char kVendorModelSerialPrefix[];
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ extern const char kVendorModelVolumeStoragePrefix[];
+ #endif
+
diff --git a/devel/electron4/files/patch-components_storage__monitor_storage__monitor__freebsd.cc b/devel/electron4/files/patch-components_storage__monitor_storage__monitor__freebsd.cc
new file mode 100644
index 000000000000..809e21cf13d7
--- /dev/null
+++ b/devel/electron4/files/patch-components_storage__monitor_storage__monitor__freebsd.cc
@@ -0,0 +1,57 @@
+--- components/storage_monitor/storage_monitor_freebsd.cc.orig 2019-03-16 09:16:47 UTC
++++ components/storage_monitor/storage_monitor_freebsd.cc
+@@ -0,0 +1,54 @@
++// Copyright 2014 The Chromium Authors. All rights reserved.
++// Use of this source code is governed by a BSD-style license that can be
++// found in the LICENSE file.
++
++// StorageMonitorFreeBSD implementation.
++
++#include "components/storage_monitor/storage_monitor_freebsd.h"
++
++#include <stdio.h>
++
++#include <list>
++
++#include "base/bind.h"
++#include "base/metrics/histogram.h"
++#include "base/process/kill.h"
++#include "base/process/launch.h"
++#include "base/stl_util.h"
++#include "base/strings/string_number_conversions.h"
++#include "base/strings/string_util.h"
++#include "base/strings/utf_string_conversions.h"
++#include "components/storage_monitor/media_storage_util.h"
++#include "components/storage_monitor/removable_device_constants.h"
++#include "components/storage_monitor/storage_info.h"
++
++using content::BrowserThread;
++
++namespace storage_monitor {
++
++namespace {
++
++} // namespace
++
++StorageMonitorFreeBSD::StorageMonitorFreeBSD() {
++ DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
++}
++
++StorageMonitorFreeBSD::~StorageMonitorFreeBSD() {
++ DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
++}
++
++void StorageMonitorFreeBSD::Init() {
++}
++
++bool StorageMonitorFreeBSD::GetStorageInfoForPath(
++ const base::FilePath& path,
++ StorageInfo* device_info) const {
++ return false; // TODO
++}
++
++StorageMonitor* StorageMonitor::CreateInternal() {
++ return new StorageMonitorFreeBSD();
++}
++
++} // namespace storage_monitor
diff --git a/devel/electron4/files/patch-components_storage__monitor_storage__monitor__freebsd.h b/devel/electron4/files/patch-components_storage__monitor_storage__monitor__freebsd.h
new file mode 100644
index 000000000000..a5607d315055
--- /dev/null
+++ b/devel/electron4/files/patch-components_storage__monitor_storage__monitor__freebsd.h
@@ -0,0 +1,48 @@
+--- components/storage_monitor/storage_monitor_freebsd.h.orig 2019-03-16 09:16:47 UTC
++++ components/storage_monitor/storage_monitor_freebsd.h
+@@ -0,0 +1,45 @@
++// Copyright 2014 The Chromium Authors. All rights reserved.
++// Use of this source code is governed by a BSD-style license that can be
++// found in the LICENSE file.
++
++// StorageMonitorFreeBSD processes mount point change events, notifies listeners
++// about the addition and deletion of media devices, and answers queries about
++// mounted devices.
++// StorageMonitorFreeBSD lives on the UI thread, and uses ???
++// the FILE thread to get mount point change events.
++
++#ifndef COMPONENTS_STORAGE_MONITOR_STORAGE_MONITOR_FREEBSD_H_
++#define COMPONENTS_STORAGE_MONITOR_STORAGE_MONITOR_FREEBSD_H_
++
++#include <map>
++#include <string>
++
++#include "base/compiler_specific.h"
++#include "base/files/file_path.h"
++#include "base/files/file_path_watcher.h"
++#include "base/memory/weak_ptr.h"
++#include "components/storage_monitor/storage_monitor.h"
++#include "content/public/browser/browser_thread.h"
++
++namespace storage_monitor {
++
++class StorageMonitorFreeBSD : public StorageMonitor {
++ public:
++ // Should only be called by browser start up code.
++ // Use StorageMonitor::GetInstance() instead.
++ explicit StorageMonitorFreeBSD();
++ virtual ~StorageMonitorFreeBSD();
++
++ // Must be called for StorageMonitorFreeBSD to work.
++ virtual void Init() override;
++ private:
++ // StorageMonitor implementation.
++ virtual bool GetStorageInfoForPath(const base::FilePath& path,
++ StorageInfo* device_info) const override;
++
++ DISALLOW_COPY_AND_ASSIGN(StorageMonitorFreeBSD);
++};
++
++} // namespace storage_monitor
++
++#endif // COMPONENTS_STORAGE_MONITOR_STORAGE_MONITOR_FREEBSD_H_
diff --git a/devel/electron4/files/patch-components_sync_base_get__session__name.cc b/devel/electron4/files/patch-components_sync_base_get__session__name.cc
new file mode 100644
index 000000000000..cdf82a872b5b
--- /dev/null
+++ b/devel/electron4/files/patch-components_sync_base_get__session__name.cc
@@ -0,0 +1,20 @@
+--- components/sync/base/get_session_name.cc.orig 2019-03-15 06:37:19 UTC
++++ components/sync/base/get_session_name.cc
+@@ -17,7 +17,7 @@
+
+ #if defined(OS_CHROMEOS)
+ #include "chromeos/system/devicetype.h"
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ #include "components/sync/base/get_session_name_linux.h"
+ #elif defined(OS_IOS)
+ #include "components/sync/base/get_session_name_ios.h"
+@@ -54,7 +54,7 @@ std::string GetSessionNameSynchronously() {
+ session_name = "Chromebook";
+ break;
+ }
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ session_name = internal::GetHostname();
+ #elif defined(OS_IOS)
+ session_name = internal::GetComputerName();
diff --git a/devel/electron4/files/patch-components_sync_base_get__session__name__linux.cc b/devel/electron4/files/patch-components_sync_base_get__session__name__linux.cc
new file mode 100644
index 000000000000..c7a5b3259f20
--- /dev/null
+++ b/devel/electron4/files/patch-components_sync_base_get__session__name__linux.cc
@@ -0,0 +1,14 @@
+--- components/sync/base/get_session_name_linux.cc.orig 2019-03-15 06:25:43 UTC
++++ components/sync/base/get_session_name_linux.cc
+@@ -13,8 +13,9 @@ namespace syncer {
+ namespace internal {
+
+ std::string GetHostname() {
+- char hostname[HOST_NAME_MAX];
+- if (gethostname(hostname, HOST_NAME_MAX) == 0) // Success.
++ int len = sysconf(_SC_HOST_NAME_MAX);
++ char hostname[len];
++ if (gethostname(hostname, len) == 0) // Success.
+ return hostname;
+ return base::GetLinuxDistro();
+ }
diff --git a/devel/electron4/files/patch-components_update__client_update__query__params.cc b/devel/electron4/files/patch-components_update__client_update__query__params.cc
new file mode 100644
index 000000000000..a1fbde7ad4ed
--- /dev/null
+++ b/devel/electron4/files/patch-components_update__client_update__query__params.cc
@@ -0,0 +1,11 @@
+--- components/update_client/update_query_params.cc.orig 2019-03-15 06:37:19 UTC
++++ components/update_client/update_query_params.cc
+@@ -38,6 +38,8 @@ const char kOs[] =
+ "fuchsia";
+ #elif defined(OS_OPENBSD)
+ "openbsd";
++#elif defined(OS_FREEBSD)
++ "freebsd";
+ #else
+ #error "unknown os"
+ #endif
diff --git a/devel/electron4/files/patch-components_url__matcher_regex__set__matcher.cc b/devel/electron4/files/patch-components_url__matcher_regex__set__matcher.cc
new file mode 100644
index 000000000000..fc7fc6e066e5
--- /dev/null
+++ b/devel/electron4/files/patch-components_url__matcher_regex__set__matcher.cc
@@ -0,0 +1,16 @@
+--- components/url_matcher/regex_set_matcher.cc.orig 2019-03-15 06:37:19 UTC
++++ components/url_matcher/regex_set_matcher.cc
+@@ -11,8 +11,13 @@
+ #include "base/logging.h"
+ #include "base/strings/string_util.h"
+ #include "components/url_matcher/substring_set_matcher.h"
++#if defined(OS_BSD)
++#include <re2/filtered_re2.h>
++#include <re2/re2.h>
++#else
+ #include "third_party/re2/src/re2/filtered_re2.h"
+ #include "third_party/re2/src/re2/re2.h"
++#endif
+
+ namespace url_matcher {
+
diff --git a/devel/electron4/files/patch-components_url__matcher_url__matcher__factory.cc b/devel/electron4/files/patch-components_url__matcher_url__matcher__factory.cc
new file mode 100644
index 000000000000..1b45923d8325
--- /dev/null
+++ b/devel/electron4/files/patch-components_url__matcher_url__matcher__factory.cc
@@ -0,0 +1,14 @@
+--- components/url_matcher/url_matcher_factory.cc.orig 2019-03-15 06:37:19 UTC
++++ components/url_matcher/url_matcher_factory.cc
+@@ -16,7 +16,11 @@
+ #include "base/values.h"
+ #include "components/url_matcher/url_matcher_constants.h"
+ #include "components/url_matcher/url_matcher_helpers.h"
++#if defined(OS_BSD)
++#include <re2/re2.h>
++#else
+ #include "third_party/re2/src/re2/re2.h"
++#endif
+
+ namespace url_matcher {
+
diff --git a/devel/electron4/files/patch-components_webcrypto_algorithms_test__helpers.cc b/devel/electron4/files/patch-components_webcrypto_algorithms_test__helpers.cc
new file mode 100644
index 000000000000..096720a219ad
--- /dev/null
+++ b/devel/electron4/files/patch-components_webcrypto_algorithms_test__helpers.cc
@@ -0,0 +1,14 @@
+--- components/webcrypto/algorithms/test_helpers.cc.orig 2019-03-15 06:37:19 UTC
++++ components/webcrypto/algorithms/test_helpers.cc
+@@ -25,7 +25,11 @@
+ #include "components/webcrypto/status.h"
+ #include "third_party/blink/public/platform/web_crypto_algorithm_params.h"
+ #include "third_party/blink/public/platform/web_crypto_key_algorithm.h"
++#if defined(OS_BSD)
++#include <re2/re2.h>
++#else
+ #include "third_party/re2/src/re2/re2.h"
++#endif
+
+ namespace webcrypto {
+
diff --git a/devel/electron4/files/patch-content_app_content__main__runner__impl.cc b/devel/electron4/files/patch-content_app_content__main__runner__impl.cc
new file mode 100644
index 000000000000..7cd5745d6776
--- /dev/null
+++ b/devel/electron4/files/patch-content_app_content__main__runner__impl.cc
@@ -0,0 +1,29 @@
+--- content/app/content_main_runner_impl.cc.orig 2019-03-16 09:15:21 UTC
++++ content/app/content_main_runner_impl.cc
+@@ -85,10 +85,10 @@
+ #include "base/posix/global_descriptors.h"
+ #include "content/public/common/content_descriptors.h"
+
+-#if !defined(OS_MACOSX)
++#if !defined(OS_MACOSX) && !defined(OS_BSD)
+ #include "services/service_manager/zygote/common/zygote_fork_delegate_linux.h"
+ #endif
+-#if !defined(OS_MACOSX) && !defined(OS_ANDROID)
++#if !defined(OS_MACOSX) && !defined(OS_ANDROID) && !defined(OS_BSD)
+ #include "sandbox/linux/services/libc_interceptor.h"
+ #include "services/service_manager/zygote/zygote_main.h"
+ #endif
+@@ -688,11 +688,11 @@ int ContentMainRunnerImpl::Initialize(const ContentMai
+ base::GlobalDescriptors::kBaseDescriptor);
+ #endif // !OS_ANDROID
+
+-#if defined(OS_LINUX) || defined(OS_OPENBSD)
++#if defined(OS_LINUX)
+ g_fds->Set(service_manager::kCrashDumpSignal,
+ service_manager::kCrashDumpSignal +
+ base::GlobalDescriptors::kBaseDescriptor);
+-#endif // OS_LINUX || OS_OPENBSD
++#endif // OS_LINUX
+
+ #endif // !OS_WIN
+
diff --git a/devel/electron4/files/patch-content_browser_BUILD.gn b/devel/electron4/files/patch-content_browser_BUILD.gn
new file mode 100644
index 000000000000..441879f3d2de
--- /dev/null
+++ b/devel/electron4/files/patch-content_browser_BUILD.gn
@@ -0,0 +1,14 @@
+--- content/browser/BUILD.gn.orig 2019-03-15 06:37:19 UTC
++++ content/browser/BUILD.gn
+@@ -1817,11 +1817,6 @@ jumbo_source_set("browser") {
+ "tracing/cros_tracing_agent.cc",
+ "tracing/cros_tracing_agent.h",
+ ]
+- } else {
+- sources += [
+- "memory/memory_monitor_linux.cc",
+- "memory/memory_monitor_linux.h",
+- ]
+ }
+
+ if (is_chromeos || is_android || is_chromecast) {
diff --git a/devel/electron4/files/patch-content_browser_browser__main__loop.cc b/devel/electron4/files/patch-content_browser_browser__main__loop.cc
new file mode 100644
index 000000000000..b9b2e2f72958
--- /dev/null
+++ b/devel/electron4/files/patch-content_browser_browser__main__loop.cc
@@ -0,0 +1,28 @@
+--- content/browser/browser_main_loop.cc.orig 2019-03-16 09:15:20 UTC
++++ content/browser/browser_main_loop.cc
+@@ -238,6 +238,13 @@
+ #include "base/mac/foundation_util.h"
+ #endif
+
++#if defined(OS_BSD)
++#include "content/browser/sandbox_host_linux.h"
++#include "services/service_manager/zygote/common/common_sandbox_support_linux.h"
++#include "content/public/common/common_sandbox_support_linux.h"
++#include "services/service_manager/sandbox/sandbox.h"
++#endif
++
+ // One of the linux specific headers defines this as a macro.
+ #ifdef DestroyAll
+ #undef DestroyAll
+@@ -587,6 +594,11 @@ int BrowserMainLoop::EarlyInitialization() {
+ // by now since a thread to start the ServiceManager has been created
+ // before the browser main loop starts.
+ DCHECK(SandboxHostLinux::GetInstance()->IsInitialized());
++#elif defined(OS_BSD)
++ SandboxHostLinux::GetInstance()->Init();
++ base::FileHandleMappingVector fds_to_map;
++ const int sfd = SandboxHostLinux::GetInstance()->GetChildSocket();
++ fds_to_map.push_back(std::make_pair(sfd, service_manager::GetSandboxFD()));
+ #endif
+
+ #if defined(USE_X11)
diff --git a/devel/electron4/files/patch-content_browser_child__process__launcher__helper__linux.cc b/devel/electron4/files/patch-content_browser_child__process__launcher__helper__linux.cc
new file mode 100644
index 000000000000..3418a8f6d87e
--- /dev/null
+++ b/devel/electron4/files/patch-content_browser_child__process__launcher__helper__linux.cc
@@ -0,0 +1,76 @@
+--- content/browser/child_process_launcher_helper_linux.cc.orig 2019-03-15 06:37:20 UTC
++++ content/browser/child_process_launcher_helper_linux.cc
+@@ -17,7 +17,9 @@
+ #include "content/public/common/sandboxed_process_launcher_delegate.h"
+ #include "services/service_manager/sandbox/linux/sandbox_linux.h"
+ #include "services/service_manager/zygote/common/common_sandbox_support_linux.h"
++#if !defined(OS_BSD)
+ #include "services/service_manager/zygote/common/zygote_handle.h"
++#endif
+ #include "services/service_manager/zygote/host/zygote_communication_linux.h"
+ #include "services/service_manager/zygote/host/zygote_host_impl_linux.h"
+
+@@ -69,6 +71,7 @@ ChildProcessLauncherHelper::LaunchProcessOnLauncherThr
+ int* launch_result) {
+ *is_synchronous_launch = true;
+
++#if !defined(OS_BSD)
+ service_manager::ZygoteHandle zygote_handle =
+ base::CommandLine::ForCurrentProcess()->HasSwitch(switches::kNoZygote)
+ ? nullptr
+@@ -82,7 +85,6 @@ ChildProcessLauncherHelper::LaunchProcessOnLauncherThr
+ GetProcessType());
+ *launch_result = LAUNCH_RESULT_SUCCESS;
+
+-#if !defined(OS_OPENBSD)
+ if (handle) {
+ // This is just a starting score for a renderer or extension (the
+ // only types of processes that will be started this way). It will
+@@ -93,13 +95,13 @@ ChildProcessLauncherHelper::LaunchProcessOnLauncherThr
+ service_manager::ZygoteHostImpl::GetInstance()->AdjustRendererOOMScore(
+ handle, kLowestRendererOomScore);
+ }
+-#endif
+
+ Process process;
+ process.process = base::Process(handle);
+ process.zygote = zygote_handle;
+ return process;
+ }
++#endif
+
+ Process process;
+ process.process = base::LaunchProcess(*command_line(), options);
+@@ -117,10 +119,14 @@ ChildProcessTerminationInfo ChildProcessLauncherHelper
+ const ChildProcessLauncherHelper::Process& process,
+ bool known_dead) {
+ ChildProcessTerminationInfo info;
++#if !defined(OS_BSD)
+ if (process.zygote) {
+ info.status = process.zygote->GetTerminationStatus(
+ process.process.Handle(), known_dead, &info.exit_code);
+ } else if (known_dead) {
++#else
++ if (known_dead) {
++#endif
+ info.status = base::GetKnownDeadTerminationStatus(process.process.Handle(),
+ &info.exit_code);
+ } else {
+@@ -144,13 +150,17 @@ void ChildProcessLauncherHelper::ForceNormalProcessTer
+ DCHECK(CurrentlyOnProcessLauncherTaskRunner());
+ process.process.Terminate(service_manager::RESULT_CODE_NORMAL_EXIT, false);
+ // On POSIX, we must additionally reap the child.
++#if !defined(OS_BSD)
+ if (process.zygote) {
+ // If the renderer was created via a zygote, we have to proxy the reaping
+ // through the zygote process.
+ process.zygote->EnsureProcessTerminated(process.process.Handle());
+ } else {
++#endif
+ base::EnsureProcessTerminated(std::move(process.process));
++#if !defined(OS_BSD)
+ }
++#endif
+ }
+
+ void ChildProcessLauncherHelper::SetProcessPriorityOnLauncherThread(
diff --git a/devel/electron4/files/patch-content_browser_media_media__internals.cc b/devel/electron4/files/patch-content_browser_media_media__internals.cc
new file mode 100644
index 000000000000..9f0c2dfbc6fe
--- /dev/null
+++ b/devel/electron4/files/patch-content_browser_media_media__internals.cc
@@ -0,0 +1,11 @@
+--- content/browser/media/media_internals.cc.orig 2019-03-15 06:37:20 UTC
++++ content/browser/media/media_internals.cc
+@@ -724,7 +724,7 @@ void MediaInternals::UpdateVideoCaptureDeviceCapabilit
+ device_dict->SetString("name", descriptor.GetNameAndModel());
+ device_dict->Set("formats", std::move(format_list));
+ #if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || \
+- defined(OS_ANDROID)
++ defined(OS_ANDROID) || defined(OS_BSD)
+ device_dict->SetString("captureApi", descriptor.GetCaptureApiTypeString());
+ #endif
+ video_capture_capabilities_cached_data_.Append(std::move(device_dict));
diff --git a/devel/electron4/files/patch-content_browser_memory_memory__monitor.cc b/devel/electron4/files/patch-content_browser_memory_memory__monitor.cc
new file mode 100644
index 000000000000..02baaf048f92
--- /dev/null
+++ b/devel/electron4/files/patch-content_browser_memory_memory__monitor.cc
@@ -0,0 +1,11 @@
+--- content/browser/memory/memory_monitor.cc.orig 2019-03-15 06:25:43 UTC
++++ content/browser/memory/memory_monitor.cc
+@@ -22,7 +22,7 @@ void MemoryMonitorDelegate::GetSystemMemoryInfo(
+ base::GetSystemMemoryInfo(mem_info);
+ }
+
+-#if defined(OS_MACOSX)
++#if defined(OS_MACOSX) || defined(OS_BSD)
+ // TODO(bashi,bcwhite): Remove when memory monitor for mac is available.
+ std::unique_ptr<MemoryMonitor> CreateMemoryMonitor() {
+ NOTREACHED();
diff --git a/devel/electron4/files/patch-content_browser_memory_swap__metrics__driver__impl__linux.cc b/devel/electron4/files/patch-content_browser_memory_swap__metrics__driver__impl__linux.cc
new file mode 100644
index 000000000000..4e395b9bdb59
--- /dev/null
+++ b/devel/electron4/files/patch-content_browser_memory_swap__metrics__driver__impl__linux.cc
@@ -0,0 +1,16 @@
+--- content/browser/memory/swap_metrics_driver_impl_linux.cc.orig 2019-03-15 06:25:43 UTC
++++ content/browser/memory/swap_metrics_driver_impl_linux.cc
+@@ -44,9 +44,13 @@ SwapMetricsDriverImplLinux::~SwapMetricsDriverImplLinu
+ SwapMetricsDriver::SwapMetricsUpdateResult
+ SwapMetricsDriverImplLinux::UpdateMetricsInternal(base::TimeDelta interval) {
+ base::VmStatInfo vmstat;
++#if !defined(OS_BSD)
+ if (!base::GetVmStatInfo(&vmstat)) {
+ return SwapMetricsDriver::SwapMetricsUpdateResult::kSwapMetricsUpdateFailed;
+ }
++#else
++ return SwapMetricsDriver::SwapMetricsUpdateResult::kSwapMetricsUpdateFailed;
++#endif
+
+ uint64_t in_counts = vmstat.pswpin - last_pswpin_;
+ uint64_t out_counts = vmstat.pswpout - last_pswpout_;
diff --git a/devel/electron4/files/patch-content_browser_renderer__host_input_input__device__change__observer.cc b/devel/electron4/files/patch-content_browser_renderer__host_input_input__device__change__observer.cc
new file mode 100644
index 000000000000..c5dd15599161
--- /dev/null
+++ b/devel/electron4/files/patch-content_browser_renderer__host_input_input__device__change__observer.cc
@@ -0,0 +1,29 @@
+--- content/browser/renderer_host/input/input_device_change_observer.cc.orig 2019-03-15 06:37:20 UTC
++++ content/browser/renderer_host/input/input_device_change_observer.cc
+@@ -9,7 +9,7 @@
+
+ #if defined(OS_WIN)
+ #include "ui/events/devices/input_device_observer_win.h"
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ #include "ui/events/devices/input_device_manager.h"
+ #elif defined(OS_ANDROID)
+ #include "ui/events/devices/input_device_observer_android.h"
+@@ -21,7 +21,7 @@ InputDeviceChangeObserver::InputDeviceChangeObserver(R
+ render_view_host_ = rvh;
+ #if defined(OS_WIN)
+ ui::InputDeviceObserverWin::GetInstance()->AddObserver(this);
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ ui::InputDeviceManager::GetInstance()->AddObserver(this);
+ #elif defined(OS_ANDROID)
+ ui::InputDeviceObserverAndroid::GetInstance()->AddObserver(this);
+@@ -31,7 +31,7 @@ InputDeviceChangeObserver::InputDeviceChangeObserver(R
+ InputDeviceChangeObserver::~InputDeviceChangeObserver() {
+ #if defined(OS_WIN)
+ ui::InputDeviceObserverWin::GetInstance()->RemoveObserver(this);
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ ui::InputDeviceManager::GetInstance()->RemoveObserver(this);
+ #elif defined(OS_ANDROID)
+ ui::InputDeviceObserverAndroid::GetInstance()->RemoveObserver(this);
diff --git a/devel/electron4/files/patch-content_browser_renderer__host_render__message__filter.cc b/devel/electron4/files/patch-content_browser_renderer__host_render__message__filter.cc
new file mode 100644
index 000000000000..355d6d0a0caf
--- /dev/null
+++ b/devel/electron4/files/patch-content_browser_renderer__host_render__message__filter.cc
@@ -0,0 +1,29 @@
+--- content/browser/renderer_host/render_message_filter.cc.orig 2019-03-15 06:37:20 UTC
++++ content/browser/renderer_host/render_message_filter.cc
+@@ -73,7 +73,7 @@
+ #if defined(OS_MACOSX)
+ #include "ui/accelerated_widget_mac/window_resize_helper_mac.h"
+ #endif
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include "base/linux_util.h"
+ #include "base/threading/platform_thread.h"
+ #endif
+@@ -165,7 +165,7 @@ void RenderMessageFilter::CreateFullscreenWidget(
+ std::move(callback).Run(route_id);
+ }
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ void RenderMessageFilter::SetThreadPriorityOnFileThread(
+ base::PlatformThreadId ns_tid,
+ base::ThreadPriority priority) {
+@@ -186,7 +186,7 @@ void RenderMessageFilter::SetThreadPriorityOnFileThrea
+ }
+ #endif
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ void RenderMessageFilter::SetThreadPriority(int32_t ns_tid,
+ base::ThreadPriority priority) {
+ constexpr base::TaskTraits kTraits = {
diff --git a/devel/electron4/files/patch-content_browser_renderer__host_render__message__filter.h b/devel/electron4/files/patch-content_browser_renderer__host_render__message__filter.h
new file mode 100644
index 000000000000..5f7dd1d48d67
--- /dev/null
+++ b/devel/electron4/files/patch-content_browser_renderer__host_render__message__filter.h
@@ -0,0 +1,19 @@
+--- content/browser/renderer_host/render_message_filter.h.orig 2019-03-15 06:37:20 UTC
++++ content/browser/renderer_host/render_message_filter.h
+@@ -110,14 +110,14 @@ class CONTENT_EXPORT RenderMessageFilter
+ const url::Origin& cache_storage_origin,
+ const std::string& cache_storage_cache_name) override;
+ void HasGpuProcess(HasGpuProcessCallback callback) override;
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ void SetThreadPriority(int32_t ns_tid,
+ base::ThreadPriority priority) override;
+ #endif
+
+ void OnResolveProxy(const GURL& url, IPC::Message* reply_msg);
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ void SetThreadPriorityOnFileThread(base::PlatformThreadId ns_tid,
+ base::ThreadPriority priority);
+ #endif
diff --git a/devel/electron4/files/patch-content_browser_renderer__host_render__process__host__impl.h b/devel/electron4/files/patch-content_browser_renderer__host_render__process__host__impl.h
new file mode 100644
index 000000000000..ced1b1e6a67f
--- /dev/null
+++ b/devel/electron4/files/patch-content_browser_renderer__host_render__process__host__impl.h
@@ -0,0 +1,15 @@
+--- content/browser/renderer_host/render_process_host_impl.h.orig 2019-03-15 06:37:20 UTC
++++ content/browser/renderer_host/render_process_host_impl.h
+@@ -343,10 +343,10 @@ class CONTENT_EXPORT RenderProcessHostImpl
+ is_for_guests_only_ = is_for_guests_only;
+ }
+
+-#if defined(OS_POSIX) && !defined(OS_ANDROID) && !defined(OS_MACOSX)
++#if defined(OS_POSIX) && !defined(OS_ANDROID) && !defined(OS_MACOSX) && !defined(OS_BSD)
+ // Launch the zygote early in the browser startup.
+ static void EarlyZygoteLaunch();
+-#endif // defined(OS_POSIX) && !defined(OS_ANDROID) && !defined(OS_MACOSX)
++#endif // defined(OS_POSIX) && !defined(OS_ANDROID) && !defined(OS_MACOSX) && !defined(OS_BSD)
+
+ void RecomputeAndUpdateWebKitPreferences();
+
diff --git a/devel/electron4/files/patch-content_browser_renderer__host_render__view__host__impl.cc b/devel/electron4/files/patch-content_browser_renderer__host_render__view__host__impl.cc
new file mode 100644
index 000000000000..671b3c0ee1ce
--- /dev/null
+++ b/devel/electron4/files/patch-content_browser_renderer__host_render__view__host__impl.cc
@@ -0,0 +1,11 @@
+--- content/browser/renderer_host/render_view_host_impl.cc.orig 2019-03-15 06:37:20 UTC
++++ content/browser/renderer_host/render_view_host_impl.cc
+@@ -151,7 +151,7 @@ void GetPlatformSpecificPrefs(RendererPreferences* pre
+ display::win::ScreenWin::GetSystemMetricsInDIP(SM_CYVSCROLL);
+ prefs->arrow_bitmap_width_horizontal_scroll_bar_in_dips =
+ display::win::ScreenWin::GetSystemMetricsInDIP(SM_CXHSCROLL);
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ prefs->system_font_family_name = gfx::Font().GetFontName();
+ #endif
+ }
diff --git a/devel/electron4/files/patch-content_browser_renderer__host_render__widget__host__view__aura.cc b/devel/electron4/files/patch-content_browser_renderer__host_render__widget__host__view__aura.cc
new file mode 100644
index 000000000000..4a9b3239fafd
--- /dev/null
+++ b/devel/electron4/files/patch-content_browser_renderer__host_render__widget__host__view__aura.cc
@@ -0,0 +1,29 @@
+--- content/browser/renderer_host/render_widget_host_view_aura.cc.orig 2019-07-24 10:33:28 UTC
++++ content/browser/renderer_host/render_widget_host_view_aura.cc
+@@ -119,7 +119,7 @@
+ #include "content/browser/accessibility/browser_accessibility_auralinux.h"
+ #endif
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS)
+ #include "ui/base/ime/linux/text_edit_command_auralinux.h"
+ #include "ui/base/ime/linux/text_edit_key_bindings_delegate_auralinux.h"
+ #endif
+@@ -2081,7 +2081,7 @@ bool RenderWidgetHostViewAura::NeedsInputGrab() {
+ }
+
+ bool RenderWidgetHostViewAura::NeedsMouseCapture() {
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS)
+ return NeedsInputGrab();
+ #endif
+ return false;
+@@ -2281,7 +2281,7 @@ void RenderWidgetHostViewAura::ForwardKeyboardEventWit
+ if (!target_host)
+ return;
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS)
+ ui::TextEditKeyBindingsDelegateAuraLinux* keybinding_delegate =
+ ui::GetTextEditKeyBindingsDelegate();
+ std::vector<ui::TextEditCommandAuraLinux> commands;
diff --git a/devel/electron4/files/patch-content_browser_renderer__host_render__widget__host__view__event__handler.cc b/devel/electron4/files/patch-content_browser_renderer__host_render__widget__host__view__event__handler.cc
new file mode 100644
index 000000000000..975b3dd3dfb9
--- /dev/null
+++ b/devel/electron4/files/patch-content_browser_renderer__host_render__widget__host__view__event__handler.cc
@@ -0,0 +1,11 @@
+--- content/browser/renderer_host/render_widget_host_view_event_handler.cc.orig 2019-03-15 06:37:20 UTC
++++ content/browser/renderer_host/render_widget_host_view_event_handler.cc
+@@ -619,7 +619,7 @@ bool RenderWidgetHostViewEventHandler::CanRendererHand
+ if (event->type() == ui::ET_MOUSE_EXITED) {
+ if (mouse_locked || selection_popup)
+ return false;
+-#if defined(OS_WIN) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD)
+ // Don't forward the mouse leave message which is received when the context
+ // menu is displayed by the page. This confuses the page and causes state
+ // changes.
diff --git a/devel/electron4/files/patch-content_browser_service__worker_service__worker__fetch__dispatcher.cc b/devel/electron4/files/patch-content_browser_service__worker_service__worker__fetch__dispatcher.cc
new file mode 100644
index 000000000000..409da3bd509d
--- /dev/null
+++ b/devel/electron4/files/patch-content_browser_service__worker_service__worker__fetch__dispatcher.cc
@@ -0,0 +1,11 @@
+--- content/browser/service_worker/service_worker_fetch_dispatcher.cc.orig 2019-03-15 06:37:21 UTC
++++ content/browser/service_worker/service_worker_fetch_dispatcher.cc
+@@ -695,7 +695,7 @@ bool ServiceWorkerFetchDispatcher::MaybeStartNavigatio
+ network::ResourceRequest request;
+ request.method = original_request->method();
+ request.url = original_request->url();
+- // TODO(horo): Set site_for_cookies to support Same-site Cookies.
++ request.site_for_cookies = original_request->site_for_cookies();
+ request.request_initiator =
+ original_request->initiator().has_value()
+ ? original_request->initiator()
diff --git a/devel/electron4/files/patch-content_browser_webui_web__ui__data__source__impl.cc b/devel/electron4/files/patch-content_browser_webui_web__ui__data__source__impl.cc
new file mode 100644
index 000000000000..d1373c1f0ce9
--- /dev/null
+++ b/devel/electron4/files/patch-content_browser_webui_web__ui__data__source__impl.cc
@@ -0,0 +1,69 @@
+--- content/browser/webui/web_ui_data_source_impl.cc.orig 2019-03-15 06:37:21 UTC
++++ content/browser/webui/web_ui_data_source_impl.cc
+@@ -120,24 +120,24 @@ WebUIDataSourceImpl::WebUIDataSourceImpl(const std::st
+ WebUIDataSourceImpl::~WebUIDataSourceImpl() {
+ }
+
+-void WebUIDataSourceImpl::AddString(base::StringPiece name,
++void WebUIDataSourceImpl::AddString(const std::string& name,
+ const base::string16& value) {
+ // TODO(dschuyler): Share only one copy of these strings.
+ localized_strings_.SetKey(name, base::Value(value));
+- replacements_[name.as_string()] = base::UTF16ToUTF8(value);
++ replacements_[name] = base::UTF16ToUTF8(value);
+ }
+
+-void WebUIDataSourceImpl::AddString(base::StringPiece name,
++void WebUIDataSourceImpl::AddString(const std::string& name,
+ const std::string& value) {
+ localized_strings_.SetKey(name, base::Value(value));
+- replacements_[name.as_string()] = value;
++ replacements_[name] = value;
+ }
+
+-void WebUIDataSourceImpl::AddLocalizedString(base::StringPiece name, int ids) {
++void WebUIDataSourceImpl::AddLocalizedString(const std::string& name, int ids) {
+ std::string utf8_str =
+ base::UTF16ToUTF8(GetContentClient()->GetLocalizedString(ids));
+ localized_strings_.SetKey(name, base::Value(utf8_str));
+- replacements_[name.as_string()] = utf8_str;
++ replacements_[name] = utf8_str;
+ }
+
+ void WebUIDataSourceImpl::AddLocalizedStrings(
+@@ -147,7 +147,7 @@ void WebUIDataSourceImpl::AddLocalizedStrings(
+ &replacements_);
+ }
+
+-void WebUIDataSourceImpl::AddBoolean(base::StringPiece name, bool value) {
++void WebUIDataSourceImpl::AddBoolean(const std::string& name, bool value) {
+ localized_strings_.SetBoolean(name, value);
+ // TODO(dschuyler): Change name of |localized_strings_| to |load_time_data_|
+ // or similar. These values haven't been found as strings for
+@@ -156,21 +156,21 @@ void WebUIDataSourceImpl::AddBoolean(base::StringPiece
+ // replacements.
+ }
+
+-void WebUIDataSourceImpl::AddInteger(base::StringPiece name, int32_t value) {
++void WebUIDataSourceImpl::AddInteger(const std::string& name, int32_t value) {
+ localized_strings_.SetInteger(name, value);
+ }
+
+-void WebUIDataSourceImpl::SetJsonPath(base::StringPiece path) {
++void WebUIDataSourceImpl::SetJsonPath(const std::string& path) {
+ DCHECK(json_path_.empty());
+ DCHECK(!path.empty());
+
+- json_path_ = path.as_string();
++ json_path_ = path;
+ excluded_paths_.insert(json_path_);
+ }
+
+-void WebUIDataSourceImpl::AddResourcePath(base::StringPiece path,
++void WebUIDataSourceImpl::AddResourcePath(const std::string& path,
+ int resource_id) {
+- path_to_idr_map_[path.as_string()] = resource_id;
++ path_to_idr_map_[path] = resource_id;
+ }
+
+ void WebUIDataSourceImpl::SetDefaultResource(int resource_id) {
diff --git a/devel/electron4/files/patch-content_browser_webui_web__ui__data__source__impl.h b/devel/electron4/files/patch-content_browser_webui_web__ui__data__source__impl.h
new file mode 100644
index 000000000000..9c1f3148bc5a
--- /dev/null
+++ b/devel/electron4/files/patch-content_browser_webui_web__ui__data__source__impl.h
@@ -0,0 +1,25 @@
+--- content/browser/webui/web_ui_data_source_impl.h.orig 2019-03-15 06:37:21 UTC
++++ content/browser/webui/web_ui_data_source_impl.h
+@@ -31,15 +31,15 @@ class CONTENT_EXPORT WebUIDataSourceImpl : public URLD
+ public WebUIDataSource {
+ public:
+ // WebUIDataSource implementation:
+- void AddString(base::StringPiece name, const base::string16& value) override;
+- void AddString(base::StringPiece name, const std::string& value) override;
+- void AddLocalizedString(base::StringPiece name, int ids) override;
++ void AddString(const std::string& name, const base::string16& value) override;
++ void AddString(const std::string& name, const std::string& value) override;
++ void AddLocalizedString(const std::string& name, int ids) override;
+ void AddLocalizedStrings(
+ const base::DictionaryValue& localized_strings) override;
+- void AddBoolean(base::StringPiece name, bool value) override;
+- void AddInteger(base::StringPiece name, int32_t value) override;
+- void SetJsonPath(base::StringPiece path) override;
+- void AddResourcePath(base::StringPiece path, int resource_id) override;
++ void AddBoolean(const std::string& name, bool value) override;
++ void AddInteger(const std::string& name, int32_t value) override;
++ void SetJsonPath(const std::string& path) override;
++ void AddResourcePath(const std::string& path, int resource_id) override;
+ void SetDefaultResource(int resource_id) override;
+ void SetRequestFilter(
+ const WebUIDataSource::HandleRequestCallback& callback) override;
diff --git a/devel/electron4/files/patch-content_common_BUILD.gn b/devel/electron4/files/patch-content_common_BUILD.gn
new file mode 100644
index 000000000000..62966fa52a10
--- /dev/null
+++ b/devel/electron4/files/patch-content_common_BUILD.gn
@@ -0,0 +1,15 @@
+--- content/common/BUILD.gn.orig 2019-03-15 06:37:21 UTC
++++ content/common/BUILD.gn
+@@ -417,6 +417,12 @@ source_set("common") {
+ libs += [ "android" ]
+ }
+
++ if (is_bsd) {
++ sources -= [
++ "sandbox_init_linux.cc",
++ ]
++ }
++
+ if (is_debug && !is_component_build && enable_plugins) {
+ # Content depends on the PPAPI message logging stuff; if this isn't here,
+ # some unit test binaries won't compile. This only worked in release mode
diff --git a/devel/electron4/files/patch-content_common_common__sandbox__support__linux.cc b/devel/electron4/files/patch-content_common_common__sandbox__support__linux.cc
new file mode 100644
index 000000000000..6ad4424dfcc5
--- /dev/null
+++ b/devel/electron4/files/patch-content_common_common__sandbox__support__linux.cc
@@ -0,0 +1,10 @@
+--- content/common/common_sandbox_support_linux.cc.orig 2019-03-15 06:25:44 UTC
++++ content/common/common_sandbox_support_linux.cc
+@@ -5,6 +5,7 @@
+ #include "content/public/common/common_sandbox_support_linux.h"
+
+ #include <sys/stat.h>
++#include <unistd.h>
+
+ #include <limits>
+ #include <memory>
diff --git a/devel/electron4/files/patch-content_common_user__agent.cc b/devel/electron4/files/patch-content_common_user__agent.cc
new file mode 100644
index 000000000000..79c47f9d503a
--- /dev/null
+++ b/devel/electron4/files/patch-content_common_user__agent.cc
@@ -0,0 +1,17 @@
+--- content/common/user_agent.cc.orig 2019-03-15 06:37:22 UTC
++++ content/common/user_agent.cc
+@@ -125,6 +125,14 @@ std::string BuildOSCpuInfo() {
+ #endif
+ ); // NOLINT
+
++#if defined(OS_BSD)
++#if defined(__x86_64__)
++ base::StringAppendF(&os_cpu, "; Linux x86_64");
++#else
++ base::StringAppendF(&os_cpu, "; Linux i686");
++#endif
++#endif
++
+ return os_cpu;
+ }
+
diff --git a/devel/electron4/files/patch-content_gpu_BUILD.gn b/devel/electron4/files/patch-content_gpu_BUILD.gn
new file mode 100644
index 000000000000..8a8eea1b0d4a
--- /dev/null
+++ b/devel/electron4/files/patch-content_gpu_BUILD.gn
@@ -0,0 +1,11 @@
+--- content/gpu/BUILD.gn.orig 2019-03-15 06:37:22 UTC
++++ content/gpu/BUILD.gn
+@@ -130,7 +130,7 @@ target(link_target_type, "gpu_sources") {
+
+ # Use DRI on desktop Linux builds.
+ if (current_cpu != "s390x" && current_cpu != "ppc64" && is_desktop_linux &&
+- (!is_chromecast || is_cast_desktop_build)) {
++ (!is_chromecast || is_cast_desktop_build) && !is_bsd) {
+ configs += [ "//build/config/linux/dri" ]
+ }
+ }
diff --git a/devel/electron4/files/patch-content_gpu_gpu__main.cc b/devel/electron4/files/patch-content_gpu_gpu__main.cc
new file mode 100644
index 000000000000..111a59379b2f
--- /dev/null
+++ b/devel/electron4/files/patch-content_gpu_gpu__main.cc
@@ -0,0 +1,47 @@
+--- content/gpu/gpu_main.cc.orig 2019-03-16 09:15:21 UTC
++++ content/gpu/gpu_main.cc
+@@ -77,7 +77,7 @@
+ #include "ui/gfx/x/x11_switches.h" // nogncheck
+ #endif
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include "content/gpu/gpu_sandbox_hook_linux.h"
+ #include "content/public/common/sandbox_init.h"
+ #include "services/service_manager/sandbox/linux/sandbox_linux.h"
+@@ -110,7 +110,7 @@ namespace content {
+
+ namespace {
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) && !defined(OS_BSD)
+ bool StartSandboxLinux(gpu::GpuWatchdogThread*,
+ const gpu::GPUInfo*,
+ const gpu::GpuPreferences&);
+@@ -171,7 +171,7 @@ class ContentSandboxHelper : public gpu::GpuSandboxHel
+ bool EnsureSandboxInitialized(gpu::GpuWatchdogThread* watchdog_thread,
+ const gpu::GPUInfo* gpu_info,
+ const gpu::GpuPreferences& gpu_prefs) override {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) && !defined(OS_BSD)
+ return StartSandboxLinux(watchdog_thread, gpu_info, gpu_prefs);
+ #elif defined(OS_WIN)
+ return StartSandboxWindows(sandbox_info_);
+@@ -355,7 +355,7 @@ int GpuMain(const MainFunctionParams& parameters) {
+
+ namespace {
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) && !defined(OS_BSD)
+ bool StartSandboxLinux(gpu::GpuWatchdogThread* watchdog_thread,
+ const gpu::GPUInfo* gpu_info,
+ const gpu::GpuPreferences& gpu_prefs) {
+@@ -390,7 +390,7 @@ bool StartSandboxLinux(gpu::GpuWatchdogThread* watchdo
+
+ return res;
+ }
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) && !defined(OS_BSD)
+
+ #if defined(OS_WIN)
+ bool StartSandboxWindows(const sandbox::SandboxInterfaceInfo* sandbox_info) {
diff --git a/devel/electron4/files/patch-content_gpu_gpu__sandbox__hook__linux.cc b/devel/electron4/files/patch-content_gpu_gpu__sandbox__hook__linux.cc
new file mode 100644
index 000000000000..0a987c7903c1
--- /dev/null
+++ b/devel/electron4/files/patch-content_gpu_gpu__sandbox__hook__linux.cc
@@ -0,0 +1,11 @@
+--- content/gpu/gpu_sandbox_hook_linux.cc.orig 2019-03-15 06:37:22 UTC
++++ content/gpu/gpu_sandbox_hook_linux.cc
+@@ -68,7 +68,7 @@ inline bool UseLibV4L2() {
+ #endif
+ }
+
+-constexpr int dlopen_flag = RTLD_NOW | RTLD_GLOBAL | RTLD_NODELETE;
++constexpr int dlopen_flag = RTLD_NOW | RTLD_GLOBAL;
+
+ void AddV4L2GpuWhitelist(
+ std::vector<BrokerFilePermission>* permissions,
diff --git a/devel/electron4/files/patch-content_ppapi__plugin_ppapi__blink__platform__impl.cc b/devel/electron4/files/patch-content_ppapi__plugin_ppapi__blink__platform__impl.cc
new file mode 100644
index 000000000000..a37b064b2501
--- /dev/null
+++ b/devel/electron4/files/patch-content_ppapi__plugin_ppapi__blink__platform__impl.cc
@@ -0,0 +1,29 @@
+--- content/ppapi_plugin/ppapi_blink_platform_impl.cc.orig 2019-03-15 06:37:22 UTC
++++ content/ppapi_plugin/ppapi_blink_platform_impl.cc
+@@ -40,7 +40,7 @@ namespace content {
+
+ class PpapiBlinkPlatformImpl::SandboxSupport : public WebSandboxSupport {
+ public:
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ explicit SandboxSupport(sk_sp<font_service::FontLoader> font_loader)
+ : font_loader_(std::move(font_loader)) {}
+ #endif
+@@ -48,7 +48,7 @@ class PpapiBlinkPlatformImpl::SandboxSupport : public
+
+ #if defined(OS_MACOSX)
+ bool LoadFont(CTFontRef srcFont, CGFontRef* out, uint32_t* fontID) override;
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ SandboxSupport();
+ void GetFallbackFontForCharacter(
+ WebUChar32 character,
+@@ -129,7 +129,7 @@ void PpapiBlinkPlatformImpl::SandboxSupport::GetWebFon
+ #endif // !defined(OS_ANDROID) && !defined(OS_WIN)
+
+ PpapiBlinkPlatformImpl::PpapiBlinkPlatformImpl() {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ font_loader_ =
+ sk_make_sp<font_service::FontLoader>(ChildThread::Get()->GetConnector());
+ SkFontConfigInterface::SetGlobal(font_loader_);
diff --git a/devel/electron4/files/patch-content_ppapi__plugin_ppapi__blink__platform__impl.h b/devel/electron4/files/patch-content_ppapi__plugin_ppapi__blink__platform__impl.h
new file mode 100644
index 000000000000..2260a2dbe158
--- /dev/null
+++ b/devel/electron4/files/patch-content_ppapi__plugin_ppapi__blink__platform__impl.h
@@ -0,0 +1,20 @@
+--- content/ppapi_plugin/ppapi_blink_platform_impl.h.orig 2019-03-15 06:37:22 UTC
++++ content/ppapi_plugin/ppapi_blink_platform_impl.h
+@@ -13,7 +13,7 @@
+ #include "build/build_config.h"
+ #include "content/child/blink_platform_impl.h"
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include "components/services/font/public/cpp/font_loader.h"
+ #include "third_party/skia/include/core/SkRefCnt.h"
+ #endif
+@@ -58,7 +58,7 @@ class PpapiBlinkPlatformImpl : public BlinkPlatformImp
+ std::unique_ptr<SandboxSupport> sandbox_support_;
+ #endif
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ sk_sp<font_service::FontLoader> font_loader_;
+ #endif
+
diff --git a/devel/electron4/files/patch-content_ppapi__plugin_ppapi__plugin__main.cc b/devel/electron4/files/patch-content_ppapi__plugin_ppapi__plugin__main.cc
new file mode 100644
index 000000000000..32d5adf76a24
--- /dev/null
+++ b/devel/electron4/files/patch-content_ppapi__plugin_ppapi__plugin__main.cc
@@ -0,0 +1,11 @@
+--- content/ppapi_plugin/ppapi_plugin_main.cc.orig 2019-03-15 06:37:22 UTC
++++ content/ppapi_plugin/ppapi_plugin_main.cc
+@@ -126,6 +126,8 @@ int PpapiPluginMain(const MainFunctionParams& paramete
+ service_manager::SandboxTypeFromCommandLine(command_line),
+ service_manager::SandboxLinux::PreSandboxHook(),
+ service_manager::SandboxLinux::Options());
++#elif defined(OS_BSD)
++ NOTIMPLEMENTED();
+ #endif
+
+ ChildProcess ppapi_process;
diff --git a/devel/electron4/files/patch-content_public_browser_web__ui__data__source.h b/devel/electron4/files/patch-content_public_browser_web__ui__data__source.h
new file mode 100644
index 000000000000..785d7a47071d
--- /dev/null
+++ b/devel/electron4/files/patch-content_public_browser_web__ui__data__source.h
@@ -0,0 +1,51 @@
+--- content/public/browser/web_ui_data_source.h.orig 2019-03-15 06:37:23 UTC
++++ content/public/browser/web_ui_data_source.h
+@@ -13,7 +13,6 @@
+
+ #include "base/callback.h"
+ #include "base/strings/string16.h"
+-#include "base/strings/string_piece.h"
+ #include "content/common/content_export.h"
+
+ namespace base {
+@@ -45,33 +44,33 @@ class WebUIDataSource {
+ std::unique_ptr<base::DictionaryValue> update);
+
+ // Adds a string keyed to its name to our dictionary.
+- virtual void AddString(base::StringPiece name,
++ virtual void AddString(const std::string& name,
+ const base::string16& value) = 0;
+
+ // Adds a string keyed to its name to our dictionary.
+- virtual void AddString(base::StringPiece name, const std::string& value) = 0;
++ virtual void AddString(const std::string& name, const std::string& value) = 0;
+
+ // Adds a localized string with resource |ids| keyed to its name to our
+ // dictionary.
+- virtual void AddLocalizedString(base::StringPiece name, int ids) = 0;
++ virtual void AddLocalizedString(const std::string& name, int ids) = 0;
+
+ // Add strings from |localized_strings| to our dictionary.
+ virtual void AddLocalizedStrings(
+ const base::DictionaryValue& localized_strings) = 0;
+
+ // Adds a boolean keyed to its name to our dictionary.
+- virtual void AddBoolean(base::StringPiece name, bool value) = 0;
++ virtual void AddBoolean(const std::string& name, bool value) = 0;
+
+ // Adds a signed 32-bit integer keyed to its name to our dictionary. Larger
+ // integers may not be exactly representable in JavaScript. See
+ // MAX_SAFE_INTEGER in /v8/src/globals.h.
+- virtual void AddInteger(base::StringPiece name, int32_t value) = 0;
++ virtual void AddInteger(const std::string& name, int32_t value) = 0;
+
+ // Sets the path which will return the JSON strings.
+- virtual void SetJsonPath(base::StringPiece path) = 0;
++ virtual void SetJsonPath(const std::string& path) = 0;
+
+ // Adds a mapping between a path name and a resource to return.
+- virtual void AddResourcePath(base::StringPiece path, int resource_id) = 0;
++ virtual void AddResourcePath(const std::string& path, int resource_id) = 0;
+
+ // Sets the resource to returned when no other paths match.
+ virtual void SetDefaultResource(int resource_id) = 0;
diff --git a/devel/electron4/files/patch-content_public_common_child__process__host.h b/devel/electron4/files/patch-content_public_common_child__process__host.h
new file mode 100644
index 000000000000..30c511a7d81e
--- /dev/null
+++ b/devel/electron4/files/patch-content_public_common_child__process__host.h
@@ -0,0 +1,20 @@
+--- content/public/common/child_process_host.h.orig 2019-03-15 06:37:23 UTC
++++ content/public/common/child_process_host.h
+@@ -45,7 +45,7 @@ class CONTENT_EXPORT ChildProcessHost : public IPC::Se
+ // No special behavior requested.
+ CHILD_NORMAL = 0,
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Indicates that the child execed after forking may be execced from
+ // /proc/self/exe rather than using the "real" app path. This prevents
+ // autoupdate from confusing us if it changes the file out from under us.
+@@ -54,7 +54,7 @@ class CONTENT_EXPORT ChildProcessHost : public IPC::Se
+ // gdb). In this case, you'd use GetChildPath to get the real executable
+ // file name, and then prepend the GDB command to the command line.
+ CHILD_ALLOW_SELF = 1 << 0,
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+ };
+
+ // Returns the pathname to be used for a child process. If a subprocess
diff --git a/devel/electron4/files/patch-content_public_common_content__switches.cc b/devel/electron4/files/patch-content_public_common_content__switches.cc
new file mode 100644
index 000000000000..4ad38ad7d40f
--- /dev/null
+++ b/devel/electron4/files/patch-content_public_common_content__switches.cc
@@ -0,0 +1,11 @@
+--- content/public/common/content_switches.cc.orig 2019-04-06 12:09:25 UTC
++++ content/public/common/content_switches.cc
+@@ -972,7 +972,7 @@ const char kDisableAudioSupportForDesktopShare[] =
+ const char kDisablePanelFitting[] = "disable-panel-fitting";
+ #endif
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_FREEBSD)
+ // Allows sending text-to-speech requests to speech-dispatcher, a common
+ // Linux speech service. Because it's buggy, the user must explicitly
+ // enable it so that visiting a random webpage can't cause instability.
diff --git a/devel/electron4/files/patch-content_public_common_content__switches.h b/devel/electron4/files/patch-content_public_common_content__switches.h
new file mode 100644
index 000000000000..2582c765fcdd
--- /dev/null
+++ b/devel/electron4/files/patch-content_public_common_content__switches.h
@@ -0,0 +1,11 @@
+--- content/public/common/content_switches.h.orig 2019-04-06 12:09:25 UTC
++++ content/public/common/content_switches.h
+@@ -270,7 +270,7 @@ CONTENT_EXPORT extern const char kEnableOSKOverscroll[
+ CONTENT_EXPORT extern const char kDisablePanelFitting[];
+ #endif
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_FREEBSD)
+ CONTENT_EXPORT extern const char kEnableSpeechDispatcher[];
+ #endif
+
diff --git a/devel/electron4/files/patch-content_public_common_renderer__preferences.h b/devel/electron4/files/patch-content_public_common_renderer__preferences.h
new file mode 100644
index 000000000000..9118d2b258c3
--- /dev/null
+++ b/devel/electron4/files/patch-content_public_common_renderer__preferences.h
@@ -0,0 +1,11 @@
+--- content/public/common/renderer_preferences.h.orig 2019-03-15 06:37:23 UTC
++++ content/public/common/renderer_preferences.h
+@@ -137,7 +137,7 @@ struct CONTENT_EXPORT RendererPreferences {
+ // Country iso of the mobile network for content detection purpose.
+ std::string network_contry_iso;
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ std::string system_font_family_name;
+ #endif
+
diff --git a/devel/electron4/files/patch-content_public_common_use__zoom__for__dsf__policy.cc b/devel/electron4/files/patch-content_public_common_use__zoom__for__dsf__policy.cc
new file mode 100644
index 000000000000..28a408c67484
--- /dev/null
+++ b/devel/electron4/files/patch-content_public_common_use__zoom__for__dsf__policy.cc
@@ -0,0 +1,11 @@
+--- content/public/common/use_zoom_for_dsf_policy.cc.orig 2019-03-15 06:37:23 UTC
++++ content/public/common/use_zoom_for_dsf_policy.cc
+@@ -20,7 +20,7 @@ const base::Feature kUseZoomForDsfEnabledByDefault{
+ #endif
+
+ bool IsUseZoomForDSFEnabledByDefault() {
+-#if defined(OS_LINUX) || defined(OS_FUCHSIA)
++#if defined(OS_LINUX) || defined(OS_FUCHSIA) || defined(OS_BSD)
+ return true;
+ #elif defined(OS_WIN)
+ return base::FeatureList::IsEnabled(kUseZoomForDsfEnabledByDefault);
diff --git a/devel/electron4/files/patch-content_public_test_browser__test__base.cc b/devel/electron4/files/patch-content_public_test_browser__test__base.cc
new file mode 100644
index 000000000000..1c27a15035ff
--- /dev/null
+++ b/devel/electron4/files/patch-content_public_test_browser__test__base.cc
@@ -0,0 +1,13 @@
+--- content/public/test/browser_test_base.cc.orig 2019-03-15 06:37:23 UTC
++++ content/public/test/browser_test_base.cc
+@@ -52,6 +52,10 @@
+ #include "ui/gl/gl_implementation.h"
+ #include "ui/gl/gl_switches.h"
+
++#if defined(OS_FREEBSD)
++#include <sys/signal.h>
++#endif
++
+ #if defined(OS_POSIX)
+ #include "base/process/process_handle.h"
+ #endif
diff --git a/devel/electron4/files/patch-content_renderer_media_stream_processed__local__audio__source.cc b/devel/electron4/files/patch-content_renderer_media_stream_processed__local__audio__source.cc
new file mode 100644
index 000000000000..36db1bdd67d0
--- /dev/null
+++ b/devel/electron4/files/patch-content_renderer_media_stream_processed__local__audio__source.cc
@@ -0,0 +1,11 @@
+--- content/renderer/media/stream/processed_local_audio_source.cc.orig 2019-03-15 06:37:23 UTC
++++ content/renderer/media/stream/processed_local_audio_source.cc
+@@ -267,7 +267,7 @@ void ProcessedLocalAudioSource::Capture(const media::A
+ bool key_pressed) {
+ #if defined(OS_WIN) || defined(OS_MACOSX)
+ DCHECK_LE(volume, 1.0);
+-#elif (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_OPENBSD)
++#elif (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ // We have a special situation on Linux where the microphone volume can be
+ // "higher than maximum". The input volume slider in the sound preference
+ // allows the user to set a scaling that is higher than 100%. It means that
diff --git a/devel/electron4/files/patch-content_renderer_render__thread__impl.cc b/devel/electron4/files/patch-content_renderer_render__thread__impl.cc
new file mode 100644
index 000000000000..0a4261ebe298
--- /dev/null
+++ b/devel/electron4/files/patch-content_renderer_render__thread__impl.cc
@@ -0,0 +1,56 @@
+--- content/renderer/render_thread_impl.cc.orig 2019-04-06 12:09:25 UTC
++++ content/renderer/render_thread_impl.cc
+@@ -198,12 +198,21 @@
+ #include "mojo/public/cpp/bindings/message_dumper.h"
+ #endif
+
++#if !defined(OS_BSD)
+ #if defined(OS_MACOSX)
+ #include <malloc/malloc.h>
+ #else
+ #include <malloc.h>
+ #endif
++#endif
+
++#if defined(OS_BSD)
++#include <stddef.h>
++#include <stdint.h>
++#include <sys/param.h>
++#include <sys/sysctl.h>
++#endif
++
+ using base::ThreadRestrictions;
+ using blink::WebDocument;
+ using blink::WebFrame;
+@@ -977,7 +986,7 @@ void RenderThreadImpl::Init(
+ DCHECK(parsed_num_raster_threads) << string_value;
+ DCHECK_GT(num_raster_threads, 0);
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ categorized_worker_pool_->SetBackgroundingCallback(
+ main_thread_scheduler_->DefaultTaskRunner(),
+ base::BindOnce(
+@@ -1018,7 +1027,7 @@ void RenderThreadImpl::Init(
+ GetConnector()->BindInterface(mojom::kBrowserServiceName,
+ mojo::MakeRequest(&storage_partition_service_));
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ render_message_filter()->SetThreadPriority(
+ ChildProcess::current()->io_thread_id(), base::ThreadPriority::DISPLAY);
+ #endif
+@@ -1448,11 +1457,11 @@ media::GpuVideoAcceleratorFactories* RenderThreadImpl:
+ gpu::kGpuFeatureStatusEnabled);
+ const bool enable_gpu_memory_buffers =
+ !is_gpu_compositing_disabled_ &&
+-#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_WIN)
++#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD)
+ !cmd_line->HasSwitch(switches::kDisableGpuMemoryBufferVideoFrames);
+ #else
+ cmd_line->HasSwitch(switches::kEnableGpuMemoryBufferVideoFrames);
+-#endif // defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_WIN)
++#endif // defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD)
+ const bool enable_media_stream_gpu_memory_buffers =
+ enable_gpu_memory_buffers &&
+ base::FeatureList::IsEnabled(
diff --git a/devel/electron4/files/patch-content_renderer_renderer__blink__platform__impl.cc b/devel/electron4/files/patch-content_renderer_renderer__blink__platform__impl.cc
new file mode 100644
index 000000000000..b570c50dd10a
--- /dev/null
+++ b/devel/electron4/files/patch-content_renderer_renderer__blink__platform__impl.cc
@@ -0,0 +1,56 @@
+--- content/renderer/renderer_blink_platform_impl.cc.orig 2019-03-16 09:15:21 UTC
++++ content/renderer/renderer_blink_platform_impl.cc
+@@ -123,7 +123,7 @@
+
+ #if defined(OS_POSIX)
+ #include "base/file_descriptor_posix.h"
+-#if !defined(OS_MACOSX) && !defined(OS_ANDROID)
++#if !defined(OS_MACOSX) && !defined(OS_ANDROID) && !defined(OS_BSD)
+ #include <map>
+ #include <string>
+
+@@ -201,7 +201,7 @@ gpu::ContextType ToGpuContextType(blink::Platform::Con
+
+ //------------------------------------------------------------------------------
+
+-#if !defined(OS_ANDROID) && !defined(OS_WIN) && !defined(OS_FUCHSIA)
++#if !defined(OS_ANDROID) && !defined(OS_WIN) && !defined(OS_FUCHSIA) && !defined(OS_BSD)
+ class RendererBlinkPlatformImpl::SandboxSupport
+ : public blink::WebSandboxSupport {
+ public:
+@@ -274,7 +274,7 @@ RendererBlinkPlatformImpl::RendererBlinkPlatformImpl(
+ connector_ = service_manager::Connector::Create(&request);
+ }
+
+-#if !defined(OS_ANDROID) && !defined(OS_WIN) && !defined(OS_FUCHSIA)
++#if !defined(OS_ANDROID) && !defined(OS_WIN) && !defined(OS_FUCHSIA) && !defined(OS_BSD)
+ if (g_sandbox_enabled && sandboxEnabled()) {
+ #if defined(OS_MACOSX)
+ sandbox_support_.reset(new RendererBlinkPlatformImpl::SandboxSupport());
+@@ -302,7 +302,7 @@ RendererBlinkPlatformImpl::~RendererBlinkPlatformImpl(
+ }
+
+ void RendererBlinkPlatformImpl::Shutdown() {
+-#if !defined(OS_ANDROID) && !defined(OS_WIN) && !defined(OS_FUCHSIA)
++#if !defined(OS_ANDROID) && !defined(OS_WIN) && !defined(OS_FUCHSIA) && !defined(OS_BSD)
+ // SandboxSupport contains a map of WebFallbackFont objects, which hold
+ // WebStrings and WebVectors, which become invalidated when blink is shut
+ // down. Hence, we need to clear that map now, just before blink::shutdown()
+@@ -394,7 +394,7 @@ blink::BlameContext* RendererBlinkPlatformImpl::GetTop
+ }
+
+ blink::WebSandboxSupport* RendererBlinkPlatformImpl::GetSandboxSupport() {
+-#if defined(OS_ANDROID) || defined(OS_WIN) || defined(OS_FUCHSIA)
++#if defined(OS_ANDROID) || defined(OS_WIN) || defined(OS_FUCHSIA) || defined(OS_BSD)
+ // These platforms do not require sandbox support.
+ return NULL;
+ #else
+@@ -587,7 +587,7 @@ bool RendererBlinkPlatformImpl::SandboxSupport::LoadFo
+ return content::LoadFont(src_font, out, font_id);
+ }
+
+-#elif defined(OS_POSIX) && !defined(OS_ANDROID)
++#elif defined(OS_POSIX) && !defined(OS_ANDROID) && !defined(OS_BSD)
+
+ void RendererBlinkPlatformImpl::SandboxSupport::GetFallbackFontForCharacter(
+ blink::WebUChar32 character,
diff --git a/devel/electron4/files/patch-content_renderer_renderer__blink__platform__impl.h b/devel/electron4/files/patch-content_renderer_renderer__blink__platform__impl.h
new file mode 100644
index 000000000000..648bb8d3fc54
--- /dev/null
+++ b/devel/electron4/files/patch-content_renderer_renderer__blink__platform__impl.h
@@ -0,0 +1,11 @@
+--- content/renderer/renderer_blink_platform_impl.h.orig 2019-03-16 09:15:21 UTC
++++ content/renderer/renderer_blink_platform_impl.h
+@@ -266,7 +266,7 @@ class CONTENT_EXPORT RendererBlinkPlatformImpl : publi
+ std::unique_ptr<blink::WebThread> main_thread_;
+ std::unique_ptr<service_manager::Connector> connector_;
+
+-#if !defined(OS_ANDROID) && !defined(OS_WIN) && !defined(OS_FUCHSIA)
++#if !defined(OS_ANDROID) && !defined(OS_WIN) && !defined(OS_FUCHSIA) && !defined(OS_BSD)
+ class SandboxSupport;
+ std::unique_ptr<SandboxSupport> sandbox_support_;
+ #endif
diff --git a/devel/electron4/files/patch-content_renderer_renderer__main__platform__delegate__linux.cc b/devel/electron4/files/patch-content_renderer_renderer__main__platform__delegate__linux.cc
new file mode 100644
index 000000000000..6e1e13b0e85b
--- /dev/null
+++ b/devel/electron4/files/patch-content_renderer_renderer__main__platform__delegate__linux.cc
@@ -0,0 +1,19 @@
+--- content/renderer/renderer_main_platform_delegate_linux.cc.orig 2019-03-15 06:25:44 UTC
++++ content/renderer/renderer_main_platform_delegate_linux.cc
+@@ -30,6 +30,7 @@ void RendererMainPlatformDelegate::PlatformUninitializ
+ }
+
+ bool RendererMainPlatformDelegate::EnableSandbox() {
++#if !defined(OS_BSD)
+ // The setuid sandbox is started in the zygote process: zygote_main_linux.cc
+ // https://chromium.googlesource.com/chromium/src/+/master/docs/linux_suid_sandbox.md
+ //
+@@ -65,7 +66,7 @@ bool RendererMainPlatformDelegate::EnableSandbox() {
+ CHECK_EQ(errno, EPERM);
+ }
+ #endif // __x86_64__
+-
++#endif // ! OS_BSD
+ return true;
+ }
+
diff --git a/devel/electron4/files/patch-content_shell_browser_shell__browser__context.cc b/devel/electron4/files/patch-content_shell_browser_shell__browser__context.cc
new file mode 100644
index 000000000000..bc31130dfe74
--- /dev/null
+++ b/devel/electron4/files/patch-content_shell_browser_shell__browser__context.cc
@@ -0,0 +1,20 @@
+--- content/shell/browser/shell_browser_context.cc.orig 2019-03-15 06:37:23 UTC
++++ content/shell/browser/shell_browser_context.cc
+@@ -26,7 +26,7 @@
+
+ #if defined(OS_WIN)
+ #include "base/base_paths_win.h"
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ #include "base/nix/xdg_util.h"
+ #elif defined(OS_MACOSX)
+ #include "base/base_paths_mac.h"
+@@ -108,7 +108,7 @@ void ShellBrowserContext::InitWhileIOAllowed() {
+ #if defined(OS_WIN)
+ CHECK(base::PathService::Get(base::DIR_LOCAL_APP_DATA, &path_));
+ path_ = path_.Append(std::wstring(L"content_shell"));
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ std::unique_ptr<base::Environment> env(base::Environment::Create());
+ base::FilePath config_dir(
+ base::nix::GetXDGDirectory(env.get(),
diff --git a/devel/electron4/files/patch-content_shell_browser_shell__browser__main__parts.cc b/devel/electron4/files/patch-content_shell_browser_shell__browser__main__parts.cc
new file mode 100644
index 000000000000..89666f2f6cfd
--- /dev/null
+++ b/devel/electron4/files/patch-content_shell_browser_shell__browser__main__parts.cc
@@ -0,0 +1,20 @@
+--- content/shell/browser/shell_browser_main_parts.cc.orig 2019-03-15 06:37:23 UTC
++++ content/shell/browser/shell_browser_main_parts.cc
+@@ -48,7 +48,7 @@
+ #if defined(USE_AURA) && defined(USE_X11)
+ #include "ui/events/devices/x11/touch_factory_x11.h" // nogncheck
+ #endif
+-#if !defined(OS_CHROMEOS) && defined(USE_AURA) && defined(OS_LINUX)
++#if !defined(OS_CHROMEOS) && defined(USE_AURA) && (defined(OS_BSD) || defined(OS_LINUX))
+ #include "ui/base/ime/input_method_initializer.h"
+ #endif
+ #if defined(OS_CHROMEOS)
+@@ -128,7 +128,7 @@ int ShellBrowserMainParts::PreEarlyInitialization() {
+ #if defined(USE_X11)
+ ui::SetDefaultX11ErrorHandlers();
+ #endif
+-#if !defined(OS_CHROMEOS) && defined(USE_AURA) && defined(OS_LINUX)
++#if !defined(OS_CHROMEOS) && defined(USE_AURA) && (defined(OS_BSD) || defined(OS_LINUX))
+ ui::InitializeInputMethodForTesting();
+ #endif
+ #if defined(OS_ANDROID)
diff --git a/devel/electron4/files/patch-content_test_content__test__suite.cc b/devel/electron4/files/patch-content_test_content__test__suite.cc
new file mode 100644
index 000000000000..5648c37d3b44
--- /dev/null
+++ b/devel/electron4/files/patch-content_test_content__test__suite.cc
@@ -0,0 +1,18 @@
+--- content/test/content_test_suite.cc.orig 2019-03-15 06:37:23 UTC
++++ content/test/content_test_suite.cc
+@@ -87,6 +87,7 @@ void ContentTestSuite::Initialize() {
+ // to initialize GL, so don't do it here.
+ base::CommandLine* command_line = base::CommandLine::ForCurrentProcess();
+ bool is_child_process = command_line->HasSwitch(switches::kTestChildProcess);
++#if !defined(OS_BSD)
+ if (!is_child_process) {
+ gl::GLSurfaceTestSupport::InitializeNoExtensionsOneOff();
+ gpu::GPUInfo gpu_info;
+@@ -99,6 +100,7 @@ void ContentTestSuite::Initialize() {
+ gpu_feature_info.disabled_extensions);
+ gl::init::InitializeExtensionSettingsOneOffPlatform();
+ }
++#endif
+ testing::TestEventListeners& listeners =
+ testing::UnitTest::GetInstance()->listeners();
+ listeners.Append(new TestInitializationListener);
diff --git a/devel/electron4/files/patch-content_utility_utility__main.cc b/devel/electron4/files/patch-content_utility_utility__main.cc
new file mode 100644
index 000000000000..fd2c6b5a998e
--- /dev/null
+++ b/devel/electron4/files/patch-content_utility_utility__main.cc
@@ -0,0 +1,11 @@
+--- content/utility/utility_main.cc.orig 2019-03-15 06:37:23 UTC
++++ content/utility/utility_main.cc
+@@ -64,7 +64,7 @@ int UtilityMain(const MainFunctionParams& parameters)
+ if (parameters.command_line.HasSwitch(switches::kUtilityStartupDialog))
+ WaitForDebugger("Utility");
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) && !defined(OS_BSD)
+ // Initializes the sandbox before any threads are created.
+ // TODO(jorgelo): move this after GTK initialization when we enable a strict
+ // Seccomp-BPF policy.
diff --git a/devel/electron4/files/patch-device_bluetooth_BUILD.gn b/devel/electron4/files/patch-device_bluetooth_BUILD.gn
new file mode 100644
index 000000000000..7f3e235feac2
--- /dev/null
+++ b/devel/electron4/files/patch-device_bluetooth_BUILD.gn
@@ -0,0 +1,11 @@
+--- device/bluetooth/BUILD.gn.orig 2019-03-15 06:37:23 UTC
++++ device/bluetooth/BUILD.gn
+@@ -266,7 +266,7 @@ component("bluetooth") {
+ ]
+ }
+
+- if (is_chromeos || is_linux) {
++ if (is_chromeos || (is_linux && !is_bsd)) {
+ if (use_dbus) {
+ sources += [
+ "bluez/bluetooth_adapter_bluez.cc",
diff --git a/devel/electron4/files/patch-device_gamepad_gamepad__provider.cc b/devel/electron4/files/patch-device_gamepad_gamepad__provider.cc
new file mode 100644
index 000000000000..b31701d306a9
--- /dev/null
+++ b/devel/electron4/files/patch-device_gamepad_gamepad__provider.cc
@@ -0,0 +1,11 @@
+--- device/gamepad/gamepad_provider.cc.orig 2019-03-15 06:37:23 UTC
++++ device/gamepad/gamepad_provider.cc
+@@ -187,7 +187,7 @@ void GamepadProvider::Initialize(std::unique_ptr<Gamep
+ monitor->AddDevicesChangedObserver(this);
+
+ polling_thread_.reset(new base::Thread("Gamepad polling thread"));
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // On Linux, the data fetcher needs to watch file descriptors, so the message
+ // loop needs to be a libevent loop.
+ const base::MessageLoop::Type kMessageLoopType = base::MessageLoop::TYPE_IO;
diff --git a/devel/electron4/files/patch-device_serial_BUILD.gn b/devel/electron4/files/patch-device_serial_BUILD.gn
new file mode 100644
index 000000000000..954438b1132c
--- /dev/null
+++ b/devel/electron4/files/patch-device_serial_BUILD.gn
@@ -0,0 +1,25 @@
+--- device/serial/BUILD.gn.orig 2019-03-15 06:37:23 UTC
++++ device/serial/BUILD.gn
+@@ -6,7 +6,7 @@ import("//build/config/features.gni")
+ import("//mojo/public/tools/bindings/mojom.gni")
+
+ # Library works only on desktop platforms.
+-if (is_win || is_linux || is_mac) {
++if (is_win || is_linux || is_mac || is_bsd) {
+ config("platform_support") {
+ visibility = [ ":serial" ]
+ if (is_win) {
+@@ -55,6 +55,13 @@ if (is_win || is_linux || is_mac) {
+ "//net",
+ "//third_party/re2",
+ ]
++
++ if (is_bsd) {
++ sources -= [
++ "serial_device_enumerator_linux.cc",
++ "serial_device_enumerator_linux.h",
++ ]
++ }
+
+ if (is_posix) {
+ sources += [
diff --git a/devel/electron4/files/patch-device_serial_serial__io__handler__posix.cc b/devel/electron4/files/patch-device_serial_serial__io__handler__posix.cc
new file mode 100644
index 000000000000..cef9cec9b84a
--- /dev/null
+++ b/devel/electron4/files/patch-device_serial_serial__io__handler__posix.cc
@@ -0,0 +1,11 @@
+--- device/serial/serial_io_handler_posix.cc.orig 2019-03-15 06:37:23 UTC
++++ device/serial/serial_io_handler_posix.cc
+@@ -62,7 +62,7 @@ bool BitrateToSpeedConstant(int bitrate, speed_t* spee
+ BITRATE_TO_SPEED_CASE(9600)
+ BITRATE_TO_SPEED_CASE(19200)
+ BITRATE_TO_SPEED_CASE(38400)
+-#if !defined(OS_MACOSX)
++#if !defined(OS_MACOSX) && !defined(OS_BSD)
+ BITRATE_TO_SPEED_CASE(57600)
+ BITRATE_TO_SPEED_CASE(115200)
+ BITRATE_TO_SPEED_CASE(230400)
diff --git a/devel/electron4/files/patch-device_usb_BUILD.gn b/devel/electron4/files/patch-device_usb_BUILD.gn
new file mode 100644
index 000000000000..24d4008019c9
--- /dev/null
+++ b/devel/electron4/files/patch-device_usb_BUILD.gn
@@ -0,0 +1,21 @@
+--- device/usb/BUILD.gn.orig 2019-03-15 06:37:23 UTC
++++ device/usb/BUILD.gn
+@@ -109,10 +109,17 @@ static_library("usb") {
+ ]
+ }
+
+- if (is_android || is_chromeos || is_linux) {
++ if (is_android || is_chromeos || (is_linux && !is_bsd)) {
+ sources += [
+ "usb_device_handle_usbfs.cc",
+ "usb_device_handle_usbfs.h",
++ ]
++ }
++
++ if (is_bsd) {
++ sources -= [
++ "usb_device_linux.cc",
++ "usb_device_linux.h",
+ ]
+ }
+
diff --git a/devel/electron4/files/patch-device_usb_usb__context.cc b/devel/electron4/files/patch-device_usb_usb__context.cc
new file mode 100644
index 000000000000..a9d67671042d
--- /dev/null
+++ b/devel/electron4/files/patch-device_usb_usb__context.cc
@@ -0,0 +1,12 @@
+--- device/usb/usb_context.cc.orig 2019-03-15 06:25:44 UTC
++++ device/usb/usb_context.cc
+@@ -58,7 +58,9 @@ void UsbContext::UsbEventHandler::Run() {
+
+ void UsbContext::UsbEventHandler::Stop() {
+ base::subtle::Release_Store(&running_, 0);
++#if !defined(OS_FREEBSD) // XXX(rene) not available in base version
+ libusb_interrupt_handle_event(context_);
++#endif
+ }
+
+ UsbContext::UsbContext(PlatformUsbContext context) : context_(context) {
diff --git a/devel/electron4/files/patch-device_usb_usb__error.cc b/devel/electron4/files/patch-device_usb_usb__error.cc
new file mode 100644
index 000000000000..9b069de570af
--- /dev/null
+++ b/devel/electron4/files/patch-device_usb_usb__error.cc
@@ -0,0 +1,11 @@
+--- device/usb/usb_error.cc.orig 2019-03-15 06:25:44 UTC
++++ device/usb/usb_error.cc
+@@ -9,7 +9,7 @@
+ namespace device {
+
+ std::string ConvertPlatformUsbErrorToString(int errcode) {
+- return libusb_strerror(static_cast<libusb_error>(errcode));
++ return "";
+ }
+
+ } // namespace device
diff --git a/devel/electron4/files/patch-device_usb_usb__service__impl.cc b/devel/electron4/files/patch-device_usb_usb__service__impl.cc
new file mode 100644
index 000000000000..0b50e818ff23
--- /dev/null
+++ b/devel/electron4/files/patch-device_usb_usb__service__impl.cc
@@ -0,0 +1,45 @@
+--- device/usb/usb_service_impl.cc.orig 2019-03-15 06:37:23 UTC
++++ device/usb/usb_service_impl.cc
+@@ -239,8 +239,10 @@ UsbServiceImpl::UsbServiceImpl()
+ }
+
+ UsbServiceImpl::~UsbServiceImpl() {
++#if !defined(OS_FREEBSD)
+ if (hotplug_enabled_)
+ libusb_hotplug_deregister_callback(context_->context(), hotplug_handle_);
++#endif // !defined(OS_FREEBSD)
+ }
+
+ void UsbServiceImpl::GetDevices(const GetDevicesCallback& callback) {
+@@ -295,6 +297,7 @@ void UsbServiceImpl::OnUsbContext(scoped_refptr<UsbCon
+
+ context_ = std::move(context);
+
++#if !defined(OS_FREEBSD)
+ int rv = libusb_hotplug_register_callback(
+ context_->context(),
+ static_cast<libusb_hotplug_event>(LIBUSB_HOTPLUG_EVENT_DEVICE_ARRIVED |
+@@ -307,6 +310,7 @@ void UsbServiceImpl::OnUsbContext(scoped_refptr<UsbCon
+
+ // This will call any enumeration callbacks queued while initializing.
+ RefreshDevices();
++#endif // !defined(OS_FREEBSD)
+
+ #if defined(OS_WIN)
+ DeviceMonitorWin* device_monitor = DeviceMonitorWin::GetForAllInterfaces();
+@@ -503,6 +507,7 @@ void UsbServiceImpl::RemoveDevice(scoped_refptr<UsbDev
+ device->OnDisconnect();
+ }
+
++#if !defined(OS_FREEBSD)
+ // static
+ int LIBUSB_CALL UsbServiceImpl::HotplugCallback(libusb_context* context,
+ libusb_device* device_raw,
+@@ -537,6 +542,7 @@ int LIBUSB_CALL UsbServiceImpl::HotplugCallback(libusb
+
+ return 0;
+ }
++#endif // !defined(OS_FREEBSD)
+
+ void UsbServiceImpl::OnPlatformDeviceAdded(
+ ScopedLibusbDeviceRef platform_device) {
diff --git a/devel/electron4/files/patch-device_usb_usb__service__impl.h b/devel/electron4/files/patch-device_usb_usb__service__impl.h
new file mode 100644
index 000000000000..27890e5e3869
--- /dev/null
+++ b/devel/electron4/files/patch-device_usb_usb__service__impl.h
@@ -0,0 +1,26 @@
+--- device/usb/usb_service_impl.h.orig 2019-03-15 06:37:23 UTC
++++ device/usb/usb_service_impl.h
+@@ -73,11 +73,13 @@ class UsbServiceImpl :
+ scoped_refptr<UsbDeviceImpl> device);
+ void RemoveDevice(scoped_refptr<UsbDeviceImpl> device);
+
++#if !defined(OS_FREEBSD)
+ // Handle hotplug events from libusb.
+ static int LIBUSB_CALL HotplugCallback(libusb_context* context,
+ libusb_device* device,
+ libusb_hotplug_event event,
+ void* user_data);
++#endif
+ // These functions release a reference to the provided platform device.
+ void OnPlatformDeviceAdded(ScopedLibusbDeviceRef platform_device);
+ void OnPlatformDeviceRemoved(ScopedLibusbDeviceRef platform_device);
+@@ -95,7 +97,9 @@ class UsbServiceImpl :
+ // connected instead of only when a full enumeration is requested.
+ // TODO(reillyg): Support this on all platforms. crbug.com/411715
+ bool hotplug_enabled_ = false;
++#if !defined(OS_FREEBSD)
+ libusb_hotplug_callback_handle hotplug_handle_;
++#endif
+
+ // Enumeration callbacks are queued until an enumeration completes.
+ bool enumeration_ready_ = false;
diff --git a/devel/electron4/files/patch-electron_BUILD.gn b/devel/electron4/files/patch-electron_BUILD.gn
new file mode 100644
index 000000000000..d0b9a40cf62a
--- /dev/null
+++ b/devel/electron4/files/patch-electron_BUILD.gn
@@ -0,0 +1,27 @@
+--- electron/BUILD.gn.orig 2019-07-19 22:22:11 UTC
++++ electron/BUILD.gn
+@@ -308,6 +308,15 @@ static_library("electron_lib") {
+ "//extensions/common/url_pattern.h",
+ ]
+
++ if (is_bsd) {
++ sources -= [
++ "atom/common/crash_reporter/crash_reporter_linux.cc",
++ "atom/common/crash_reporter/crash_reporter_linux.h",
++ "atom/common/crash_reporter/linux/crash_dump_handler.cc",
++ "atom/common/crash_reporter/linux/crash_dump_handler.h",
++ ]
++ }
++
+ if (is_component_build) {
+ defines += [ "NODE_SHARED_MODE" ]
+ }
+@@ -377,7 +386,7 @@ static_library("electron_lib") {
+ sources += filenames.lib_sources_win
+ libs += [ "dwmapi.lib" ]
+ }
+- if (is_linux || is_win) {
++ if ((is_linux && !is_bsd) || is_win) {
+ deps += [ "//third_party/breakpad:client" ]
+ include_dirs += [ "//third_party/breakpad" ]
+ }
diff --git a/devel/electron4/files/patch-electron_atom_app_atom__main.cc b/devel/electron4/files/patch-electron_atom_app_atom__main.cc
new file mode 100644
index 000000000000..61e4f08d0d12
--- /dev/null
+++ b/devel/electron4/files/patch-electron_atom_app_atom__main.cc
@@ -0,0 +1,35 @@
+--- electron/atom/app/atom_main.cc.orig 2019-03-16 12:31:37 UTC
++++ electron/atom/app/atom_main.cc
+@@ -24,12 +24,12 @@
+ #include "base/win/windows_version.h"
+ #include "content/public/app/sandbox_helper_win.h"
+ #include "sandbox/win/src/sandbox_types.h"
+-#elif defined(OS_LINUX) // defined(OS_WIN)
++#elif defined(OS_LINUX) || defined(OS_BSD) // defined(OS_WIN)
+ #include <unistd.h>
+ #include <cstdio>
+ #include "atom/app/atom_main_delegate.h" // NOLINT
+ #include "content/public/app/content_main.h"
+-#else // defined(OS_LINUX)
++#else // defined(OS_LINUX) || defined(OS_BSD)
+ #include <unistd.h>
+ #include <cstdio>
+ #include "atom/app/atom_library_main.h"
+@@ -175,7 +175,7 @@ int APIENTRY wWinMain(HINSTANCE instance, HINSTANCE, w
+ return content::ContentMain(params);
+ }
+
+-#elif defined(OS_LINUX) // defined(OS_WIN)
++#elif defined(OS_LINUX) || defined(OS_BSD) // defined(OS_WIN)
+
+ int main(int argc, char* argv[]) {
+ FixStdioStreams();
+@@ -196,7 +196,7 @@ int main(int argc, char* argv[]) {
+ return content::ContentMain(params);
+ }
+
+-#else // defined(OS_LINUX)
++#else // defined(OS_LINUX) || defined(OS_BSD)
+
+ int main(int argc, char* argv[]) {
+ FixStdioStreams();
diff --git a/devel/electron4/files/patch-electron_atom_app_atom__main__delegate.cc b/devel/electron4/files/patch-electron_atom_app_atom__main__delegate.cc
new file mode 100644
index 000000000000..116e78d607c9
--- /dev/null
+++ b/devel/electron4/files/patch-electron_atom_app_atom__main__delegate.cc
@@ -0,0 +1,11 @@
+--- electron/atom/app/atom_main_delegate.cc.orig 2019-03-16 12:34:08 UTC
++++ electron/atom/app/atom_main_delegate.cc
+@@ -102,7 +102,7 @@ bool AtomMainDelegate::BasicStartupComplete(int* exit_
+ logging::SetLogItems(true, false, true, false);
+
+ // Enable convient stack printing.
+-#if defined(DEBUG) && defined(OS_LINUX)
++#if defined(DEBUG) && (defined(OS_LINUX) || defined(OS_BSD))
+ bool enable_stack_dumping = true;
+ #else
+ bool enable_stack_dumping = env->HasVar("ELECTRON_ENABLE_STACK_DUMPING");
diff --git a/devel/electron4/files/patch-electron_atom_browser_api_atom__api__app.cc b/devel/electron4/files/patch-electron_atom_browser_api_atom__api__app.cc
new file mode 100644
index 000000000000..388f309c9413
--- /dev/null
+++ b/devel/electron4/files/patch-electron_atom_browser_api_atom__api__app.cc
@@ -0,0 +1,29 @@
+--- electron/atom/browser/api/atom_api_app.cc.orig 2019-05-02 21:34:52 UTC
++++ electron/atom/browser/api/atom_api_app.cc
+@@ -619,7 +619,7 @@ void App::OnWillFinishLaunching() {
+ }
+
+ void App::OnFinishLaunching(const base::DictionaryValue& launch_info) {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Set the application name for audio streams shown in external
+ // applications. Only affects pulseaudio currently.
+ media::AudioManager::SetGlobalAppName(Browser::Get()->GetName());
+@@ -871,7 +871,7 @@ void App::SetPath(mate::Arguments* args,
+ }
+
+ void App::SetDesktopName(const std::string& desktop_name) {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ std::unique_ptr<base::Environment> env(base::Environment::Create());
+ env->SetVar("CHROME_DESKTOP", desktop_name);
+ #endif
+@@ -1318,7 +1318,7 @@ void App::BuildPrototype(v8::Isolate* isolate,
+ .SetMethod("getJumpListSettings", &App::GetJumpListSettings)
+ .SetMethod("setJumpList", &App::SetJumpList)
+ #endif
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ .SetMethod("isUnityRunning",
+ base::Bind(&Browser::IsUnityRunning, browser))
+ #endif
diff --git a/devel/electron4/files/patch-electron_atom_browser_api_atom__api__web__contents.cc b/devel/electron4/files/patch-electron_atom_browser_api_atom__api__web__contents.cc
new file mode 100644
index 000000000000..f6b6451684b4
--- /dev/null
+++ b/devel/electron4/files/patch-electron_atom_browser_api_atom__api__web__contents.cc
@@ -0,0 +1,20 @@
+--- electron/atom/browser/api/atom_api_web_contents.cc.orig 2019-06-19 18:06:58 UTC
++++ electron/atom/browser/api/atom_api_web_contents.cc
+@@ -95,7 +95,7 @@
+ #include "ui/aura/window.h"
+ #endif
+
+-#if defined(OS_LINUX) || defined(OS_WIN)
++#if defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD)
+ #include "content/public/common/renderer_preferences.h"
+ #include "ui/gfx/font_render_params.h"
+ #endif
+@@ -413,7 +413,7 @@ void WebContents::InitWithSessionAndOptions(v8::Isolat
+ auto* prefs = web_contents->GetMutableRendererPrefs();
+ prefs->accept_languages = g_browser_process->GetApplicationLocale();
+
+-#if defined(OS_LINUX) || defined(OS_WIN)
++#if defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD)
+ // Update font settings.
+ CR_DEFINE_STATIC_LOCAL(
+ const gfx::FontRenderParams, params,
diff --git a/devel/electron4/files/patch-electron_atom_browser_atom__browser__main__parts__posix.cc b/devel/electron4/files/patch-electron_atom_browser_atom__browser__main__parts__posix.cc
new file mode 100644
index 000000000000..32f4e34676dd
--- /dev/null
+++ b/devel/electron4/files/patch-electron_atom_browser_atom__browser__main__parts__posix.cc
@@ -0,0 +1,20 @@
+--- electron/atom/browser/atom_browser_main_parts_posix.cc.orig 2019-03-16 12:41:31 UTC
++++ electron/atom/browser/atom_browser_main_parts_posix.cc
+@@ -180,6 +180,9 @@ void AtomBrowserMainParts::HandleShutdownSignals() {
+ g_pipe_pid = getpid();
+ g_shutdown_pipe_read_fd = pipefd[0];
+ g_shutdown_pipe_write_fd = pipefd[1];
++#if defined(OS_BSD)
++ const size_t kShutdownDetectorThreadStackSize = 0;
++#else
+ #if !defined(ADDRESS_SANITIZER) && !defined(KEEP_SHADOW_STACKS)
+ const size_t kShutdownDetectorThreadStackSize = PTHREAD_STACK_MIN * 2;
+ #else
+@@ -187,6 +190,7 @@ void AtomBrowserMainParts::HandleShutdownSignals() {
+ // shadow stacks) bloat the stack frames, so we need to increase the stack
+ // size to avoid hitting the guard page.
+ const size_t kShutdownDetectorThreadStackSize = PTHREAD_STACK_MIN * 4;
++#endif
+ #endif
+ // TODO(viettrungluu,willchan): crbug.com/29675 - This currently leaks, so
+ // if you change this, you'll probably need to change the suppression.
diff --git a/devel/electron4/files/patch-electron_atom_browser_browser.h b/devel/electron4/files/patch-electron_atom_browser_browser.h
new file mode 100644
index 000000000000..ebb0cab1cf7e
--- /dev/null
+++ b/devel/electron4/files/patch-electron_atom_browser_browser.h
@@ -0,0 +1,15 @@
+--- electron/atom/browser/browser.h.orig 2019-03-16 12:10:27 UTC
++++ electron/atom/browser/browser.h
+@@ -207,10 +207,10 @@ class Browser : public WindowListObserver {
+ PCWSTR GetAppUserModelID();
+ #endif // defined(OS_WIN)
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Whether Unity launcher is running.
+ bool IsUnityRunning();
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+
+ // Tell the application to open a file.
+ bool OpenFile(const std::string& file_path);
diff --git a/devel/electron4/files/patch-electron_atom_browser_io__thread.cc b/devel/electron4/files/patch-electron_atom_browser_io__thread.cc
new file mode 100644
index 000000000000..e218e38a2bee
--- /dev/null
+++ b/devel/electron4/files/patch-electron_atom_browser_io__thread.cc
@@ -0,0 +1,29 @@
+--- electron/atom/browser/io_thread.cc.orig 2019-05-23 00:43:26 UTC
++++ electron/atom/browser/io_thread.cc
+@@ -18,7 +18,7 @@
+ #include "net/cert_net/nss_ocsp.h"
+ #endif
+
+-#if defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ #include "net/cert/cert_net_fetcher.h"
+ #include "net/cert_net/cert_net_fetcher_impl.h"
+ #endif
+@@ -96,7 +96,7 @@ void IOThread::Init() {
+ #if defined(USE_NSS_CERTS)
+ net::SetURLRequestContextForNSSHttpIO(url_request_context_.get());
+ #endif
+-#if defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ net::SetGlobalCertNetFetcher(
+ net::CreateCertNetFetcher(url_request_context_.get()));
+ #endif
+@@ -106,7 +106,7 @@ void IOThread::CleanUp() {
+ #if defined(USE_NSS_CERTS)
+ net::SetURLRequestContextForNSSHttpIO(nullptr);
+ #endif
+-#if defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ net::ShutdownGlobalCertNetFetcher();
+ #endif
+ // Explicitly release before the IO thread gets destroyed.
diff --git a/devel/electron4/files/patch-electron_atom_browser_relauncher__linux.cc b/devel/electron4/files/patch-electron_atom_browser_relauncher__linux.cc
new file mode 100644
index 000000000000..e94367e89b14
--- /dev/null
+++ b/devel/electron4/files/patch-electron_atom_browser_relauncher__linux.cc
@@ -0,0 +1,32 @@
+--- electron/atom/browser/relauncher_linux.cc.orig 2019-03-16 12:14:15 UTC
++++ electron/atom/browser/relauncher_linux.cc
+@@ -6,8 +6,10 @@
+
+ #include <fcntl.h>
+ #include <signal.h>
++#if !defined(__FreeBSD__)
+ #include <sys/prctl.h>
+ #include <sys/signalfd.h>
++#endif
+
+ #include "base/files/file_util.h"
+ #include "base/files/scoped_file.h"
+@@ -26,6 +28,10 @@ void RelauncherSynchronizeWithParent() {
+ base::ScopedFD relauncher_sync_fd(kRelauncherSyncFD);
+ static const auto signum = SIGUSR2;
+
++#if defined(__FreeBSD__)
++ PLOG(ERROR) << "signalfd & prctl";
++ fprintf(stderr, "Not Implemented signalfd & prctl in atom/browser/relauncher_linux.cc");
++#else
+ // send signum to current process when parent process ends.
+ if (HANDLE_EINTR(prctl(PR_SET_PDEATHSIG, signum)) != 0) {
+ PLOG(ERROR) << "prctl";
+@@ -50,6 +56,7 @@ void RelauncherSynchronizeWithParent() {
+
+ // Wait for the parent to exit
+ parentWaiter.Wait();
++#endif
+ }
+
+ int LaunchProgram(const StringVector& relauncher_args,
diff --git a/devel/electron4/files/patch-electron_atom_browser_ui_views_submenu__button.cc b/devel/electron4/files/patch-electron_atom_browser_ui_views_submenu__button.cc
new file mode 100644
index 000000000000..f58585c31795
--- /dev/null
+++ b/devel/electron4/files/patch-electron_atom_browser_ui_views_submenu__button.cc
@@ -0,0 +1,11 @@
+--- electron/atom/browser/ui/views/submenu_button.cc.orig 2019-03-16 12:44:12 UTC
++++ electron/atom/browser/ui/views/submenu_button.cc
+@@ -26,7 +26,7 @@ SubmenuButton::SubmenuButton(const base::string16& tit
+ menu_button_listener,
+ false),
+ background_color_(background_color) {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Dont' use native style border.
+ SetBorder(CreateDefaultBorder());
+ #endif
diff --git a/devel/electron4/files/patch-electron_atom_common_api_atom__api__crash__reporter.cc b/devel/electron4/files/patch-electron_atom_common_api_atom__api__crash__reporter.cc
new file mode 100644
index 000000000000..d001f3b004b1
--- /dev/null
+++ b/devel/electron4/files/patch-electron_atom_common_api_atom__api__crash__reporter.cc
@@ -0,0 +1,42 @@
+--- electron/atom/common/api/atom_api_crash_reporter.cc.orig 2019-03-16 12:35:09 UTC
++++ electron/atom/common/api/atom_api_crash_reporter.cc
+@@ -33,15 +33,23 @@ struct Converter<CrashReporter::UploadReportResult> {
+ namespace {
+
+ void AddExtraParameter(const std::string& key, const std::string& value) {
++#if !defined(OS_BSD)
+ CrashReporter::GetInstance()->AddExtraParameter(key, value);
++#endif
+ }
+
+ void RemoveExtraParameter(const std::string& key) {
++#if !defined(OS_BSD)
+ CrashReporter::GetInstance()->RemoveExtraParameter(key);
++#endif
+ }
+
+ std::map<std::string, std::string> GetParameters() {
++#if !defined(OS_BSD)
+ return CrashReporter::GetInstance()->GetParameters();
++#else
++ return std::map<std::string, std::string>();
++#endif
+ }
+
+ void Initialize(v8::Local<v8::Object> exports,
+@@ -49,6 +57,7 @@ void Initialize(v8::Local<v8::Object> exports,
+ v8::Local<v8::Context> context,
+ void* priv) {
+ mate::Dictionary dict(context->GetIsolate(), exports);
++#if !defined(OS_BSD)
+ auto reporter = base::Unretained(CrashReporter::GetInstance());
+ dict.SetMethod("start", base::Bind(&CrashReporter::Start, reporter));
+ dict.SetMethod("addExtraParameter", &AddExtraParameter);
+@@ -60,6 +69,7 @@ void Initialize(v8::Local<v8::Object> exports,
+ base::Bind(&CrashReporter::SetUploadToServer, reporter));
+ dict.SetMethod("getUploadToServer",
+ base::Bind(&CrashReporter::GetUploadToServer, reporter));
++#endif
+ }
+
+ } // namespace
diff --git a/devel/electron4/files/patch-electron_atom_common_atom__command__line.cc b/devel/electron4/files/patch-electron_atom_common_atom__command__line.cc
new file mode 100644
index 000000000000..b3f3947e2171
--- /dev/null
+++ b/devel/electron4/files/patch-electron_atom_common_atom__command__line.cc
@@ -0,0 +1,11 @@
+--- electron/atom/common/atom_command_line.cc.orig 2019-03-16 12:50:29 UTC
++++ electron/atom/common/atom_command_line.cc
+@@ -26,7 +26,7 @@ void AtomCommandLine::Init(int argc, base::CommandLine
+ argv_.assign(argv, argv + argc);
+ }
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // static
+ void AtomCommandLine::InitializeFromCommandLine() {
+ argv_ = base::CommandLine::ForCurrentProcess()->argv();
diff --git a/devel/electron4/files/patch-electron_atom_common_atom__command__line.h b/devel/electron4/files/patch-electron_atom_common_atom__command__line.h
new file mode 100644
index 000000000000..5895823c85b0
--- /dev/null
+++ b/devel/electron4/files/patch-electron_atom_common_atom__command__line.h
@@ -0,0 +1,11 @@
+--- electron/atom/common/atom_command_line.h.orig 2019-03-16 12:51:16 UTC
++++ electron/atom/common/atom_command_line.h
+@@ -21,7 +21,7 @@ class AtomCommandLine {
+
+ static void Init(int argc, base::CommandLine::CharType** argv);
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // On Linux the command line has to be read from base::CommandLine since
+ // it is using zygote.
+ static void InitializeFromCommandLine();
diff --git a/devel/electron4/files/patch-electron_atom_common_crash__reporter_crash__reporter.cc b/devel/electron4/files/patch-electron_atom_common_crash__reporter_crash__reporter.cc
new file mode 100644
index 000000000000..23bf573a5f6f
--- /dev/null
+++ b/devel/electron4/files/patch-electron_atom_common_crash__reporter_crash__reporter.cc
@@ -0,0 +1,14 @@
+--- electron/atom/common/crash_reporter/crash_reporter.cc.orig 2019-03-16 13:12:45 UTC
++++ electron/atom/common/crash_reporter/crash_reporter.cc
+@@ -102,7 +102,11 @@ CrashReporter* CrashReporter::GetInstance() {
+ #endif
+
+ void CrashReporter::StartInstance(const mate::Dictionary& options) {
++#if !defined(OS_BSD)
+ auto* reporter = GetInstance();
++#else
++ CrashReporter *reporter = NULL;
++#endif
+ if (!reporter)
+ return;
+
diff --git a/devel/electron4/files/patch-electron_atom_common_node__bindings.cc b/devel/electron4/files/patch-electron_atom_common_node__bindings.cc
new file mode 100644
index 000000000000..344906b653f4
--- /dev/null
+++ b/devel/electron4/files/patch-electron_atom_common_node__bindings.cc
@@ -0,0 +1,11 @@
+--- electron/atom/common/node_bindings.cc.orig 2019-03-16 12:52:04 UTC
++++ electron/atom/common/node_bindings.cc
+@@ -207,7 +207,7 @@ void NodeBindings::Initialize() {
+ node::g_standalone_mode = browser_env_ == BROWSER;
+ node::g_upstream_node_mode = false;
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Get real command line in renderer process forked by zygote.
+ if (browser_env_ != BROWSER)
+ AtomCommandLine::InitializeFromCommandLine();
diff --git a/devel/electron4/files/patch-electron_atom_common_node__bindings__linux.cc b/devel/electron4/files/patch-electron_atom_common_node__bindings__linux.cc
new file mode 100644
index 000000000000..3d45d650eafb
--- /dev/null
+++ b/devel/electron4/files/patch-electron_atom_common_node__bindings__linux.cc
@@ -0,0 +1,69 @@
+--- electron/atom/common/node_bindings_linux.cc.orig 2019-03-16 12:52:40 UTC
++++ electron/atom/common/node_bindings_linux.cc
+@@ -4,17 +4,31 @@
+
+ #include "atom/common/node_bindings_linux.h"
+
++#if !defined(OS_BSD)
+ #include <sys/epoll.h>
++#else
++#include <errno.h>
++#include <sys/select.h>
++#include <sys/sysctl.h>
++#include <sys/time.h>
++#include <sys/types.h>
++#endif
+
+ namespace atom {
+
+ NodeBindingsLinux::NodeBindingsLinux(BrowserEnvironment browser_env)
++#if !defined(OS_BSD)
+ : NodeBindings(browser_env), epoll_(epoll_create(1)) {
++#else
++ : NodeBindings(browser_env) {
++#endif
++#if !defined(OS_BSD)
+ int backend_fd = uv_backend_fd(uv_loop_);
+ struct epoll_event ev = {0};
+ ev.events = EPOLLIN;
+ ev.data.fd = backend_fd;
+ epoll_ctl(epoll_, EPOLL_CTL_ADD, backend_fd, &ev);
++#endif
+ }
+
+ NodeBindingsLinux::~NodeBindingsLinux() {}
+@@ -37,6 +51,7 @@ void NodeBindingsLinux::OnWatcherQueueChanged(uv_loop_
+ }
+
+ void NodeBindingsLinux::PollEvents() {
++#if !defined(OS_BSD)
+ int timeout = uv_backend_timeout(uv_loop_);
+
+ // Wait for new libuv events.
+@@ -45,6 +60,26 @@ void NodeBindingsLinux::PollEvents() {
+ struct epoll_event ev;
+ r = epoll_wait(epoll_, &ev, 1, timeout);
+ } while (r == -1 && errno == EINTR);
++#else
++ struct timeval tv;
++ int timeout = uv_backend_timeout(uv_loop_);
++ if (timeout != -1) {
++ tv.tv_sec = timeout / 1000;
++ tv.tv_usec = (timeout % 1000) * 1000;
++ }
++
++ fd_set readset;
++ int fd = uv_backend_fd(uv_loop_);
++ FD_ZERO(&readset);
++ FD_SET(fd, &readset);
++
++ // Wait for new libuv events.
++ int r;
++ do {
++ r = select(fd + 1, &readset, nullptr, nullptr,
++ timeout == -1 ? nullptr : &tv);
++ } while (r == -1 && errno == EINTR);
++#endif
+ }
+
+ // static
diff --git a/devel/electron4/files/patch-electron_brightray_browser_brightray__paths.h b/devel/electron4/files/patch-electron_brightray_browser_brightray__paths.h
new file mode 100644
index 000000000000..d7961f9e1a34
--- /dev/null
+++ b/devel/electron4/files/patch-electron_brightray_browser_brightray__paths.h
@@ -0,0 +1,11 @@
+--- electron/brightray/browser/brightray_paths.h.orig 2019-03-16 11:54:53 UTC
++++ electron/brightray/browser/brightray_paths.h
+@@ -24,7 +24,7 @@ enum {
+ DIR_USER_CACHE, // Directory where user cache can be written.
+ DIR_APP_LOGS, // Directory where app logs live
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ DIR_APP_DATA, // Application Data directory under the user profile.
+ #else
+ DIR_APP_DATA = base::DIR_APP_DATA,
diff --git a/devel/electron4/files/patch-electron_brightray_browser_browser__main__parts.cc b/devel/electron4/files/patch-electron_brightray_browser_browser__main__parts.cc
new file mode 100644
index 000000000000..403b28a1440c
--- /dev/null
+++ b/devel/electron4/files/patch-electron_brightray_browser_browser__main__parts.cc
@@ -0,0 +1,29 @@
+--- electron/brightray/browser/browser_main_parts.cc.orig 2019-03-16 13:00:11 UTC
++++ electron/brightray/browser/browser_main_parts.cc
+@@ -12,7 +12,7 @@
+ #include <string>
+ #include <utility>
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include <glib.h> // for g_setenv()
+ #endif
+
+@@ -169,7 +169,7 @@ BrowserMainParts::BrowserMainParts() {}
+
+ BrowserMainParts::~BrowserMainParts() {}
+
+-#if defined(OS_WIN) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD)
+ void OverrideAppLogsPath() {
+ base::FilePath path;
+ if (base::PathService::Get(brightray::DIR_APP_DATA, &path)) {
+@@ -256,7 +256,7 @@ void BrowserMainParts::PreMainMessageLoopStart() {
+ ui::ResourceBundle::GetSharedInstance().GetLocaleFilePath(locale, true);
+ if (!locale_file_path.empty()) {
+ custom_locale_ = locale;
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ /* When built with USE_GLIB, libcc's GetApplicationLocaleInternal() uses
+ * glib's g_get_language_names(), which keys off of getenv("LC_ALL") */
+ g_setenv("LC_ALL", custom_locale_.c_str(), TRUE);
diff --git a/devel/electron4/files/patch-electron_brightray_browser_views_views__delegate.cc b/devel/electron4/files/patch-electron_brightray_browser_views_views__delegate.cc
new file mode 100644
index 000000000000..1fbe1f86745b
--- /dev/null
+++ b/devel/electron4/files/patch-electron_brightray_browser_views_views__delegate.cc
@@ -0,0 +1,38 @@
+--- electron/brightray/browser/views/views_delegate.cc.orig 2019-03-16 11:59:52 UTC
++++ electron/brightray/browser/views/views_delegate.cc
+@@ -9,7 +9,7 @@
+ #include "ui/views/widget/desktop_aura/desktop_native_widget_aura.h"
+ #include "ui/views/widget/native_widget_aura.h"
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include "base/environment.h"
+ #include "base/nix/xdg_util.h"
+ #include "ui/views/linux_ui/linux_ui.h"
+@@ -17,7 +17,7 @@
+
+ namespace {
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ bool IsDesktopEnvironmentUnity() {
+ std::unique_ptr<base::Environment> env(base::Environment::Create());
+ base::nix::DesktopEnvironment desktop_env =
+@@ -71,7 +71,7 @@ bool ViewsDelegate::IsWindowInMetro(gfx::NativeWindow
+ return false;
+ }
+
+-#elif defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#elif (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ gfx::ImageSkia* ViewsDelegate::GetDefaultWindowIcon() const {
+ return NULL;
+ }
+@@ -103,7 +103,7 @@ void ViewsDelegate::OnBeforeWidgetInit(
+ }
+
+ bool ViewsDelegate::WindowManagerProvidesTitleBar(bool maximized) {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // On Ubuntu Unity, the system always provides a title bar for maximized
+ // windows.
+ if (!maximized)
diff --git a/devel/electron4/files/patch-electron_brightray_browser_views_views__delegate.h b/devel/electron4/files/patch-electron_brightray_browser_views_views__delegate.h
new file mode 100644
index 000000000000..ce81fd5e17dc
--- /dev/null
+++ b/devel/electron4/files/patch-electron_brightray_browser_views_views__delegate.h
@@ -0,0 +1,11 @@
+--- electron/brightray/browser/views/views_delegate.h.orig 2019-03-16 12:06:26 UTC
++++ electron/brightray/browser/views/views_delegate.h
+@@ -39,7 +39,7 @@ class ViewsDelegate : public views::ViewsDelegate {
+ HICON GetDefaultWindowIcon() const override;
+ HICON GetSmallWindowIcon() const override;
+ bool IsWindowInMetro(gfx::NativeWindow window) const override;
+-#elif defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#elif (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ gfx::ImageSkia* GetDefaultWindowIcon() const override;
+ #endif
+ views::NonClientFrameView* CreateDefaultNonClientFrameView(
diff --git a/devel/electron4/files/patch-electron_brightray_common_platform__util.h b/devel/electron4/files/patch-electron_brightray_common_platform__util.h
new file mode 100644
index 000000000000..2e852b889619
--- /dev/null
+++ b/devel/electron4/files/patch-electron_brightray_common_platform__util.h
@@ -0,0 +1,11 @@
+--- electron/brightray/common/platform_util.h.orig 2019-03-16 12:07:20 UTC
++++ electron/brightray/common/platform_util.h
+@@ -11,7 +11,7 @@ namespace brightray {
+
+ namespace platform_util {
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Returns a success flag.
+ // Unlike libgtkui, does *not* use "chromium-browser.desktop" as a fallback.
+ bool GetDesktopName(std::string* setme);
diff --git a/devel/electron4/files/patch-electron_chromium__src_chrome_browser_process__singleton__posix.cc b/devel/electron4/files/patch-electron_chromium__src_chrome_browser_process__singleton__posix.cc
new file mode 100644
index 000000000000..9c0731ca31ac
--- /dev/null
+++ b/devel/electron4/files/patch-electron_chromium__src_chrome_browser_process__singleton__posix.cc
@@ -0,0 +1,20 @@
+--- electron/chromium_src/chrome/browser/process_singleton_posix.cc.orig 2019-03-16 13:07:45 UTC
++++ electron/chromium_src/chrome/browser/process_singleton_posix.cc
+@@ -92,7 +92,7 @@
+ #include "net/base/network_interfaces.h"
+ #include "ui/base/l10n/l10n_util.h"
+
+-#if defined(TOOLKIT_VIEWS) && defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if defined(TOOLKIT_VIEWS) && (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ #include "ui/views/linux_ui/linux_ui.h"
+ #endif
+
+@@ -859,7 +859,7 @@ ProcessSingleton::NotifyResult ProcessSingleton::Notif
+ // The other process is shutting down, it's safe to start a new process.
+ return PROCESS_NONE;
+ } else if (strncmp(buf, kACKToken, arraysize(kACKToken) - 1) == 0) {
+-#if defined(TOOLKIT_VIEWS) && defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if defined(TOOLKIT_VIEWS) && (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ // Likely NULL in unit tests.
+ views::LinuxUI* linux_ui = views::LinuxUI::instance();
+ if (linux_ui)
diff --git a/devel/electron4/files/patch-electron_chromium__src_chrome_renderer_spellchecker_spellcheck__worditerator.cc b/devel/electron4/files/patch-electron_chromium__src_chrome_renderer_spellchecker_spellcheck__worditerator.cc
new file mode 100644
index 000000000000..4497310d7b14
--- /dev/null
+++ b/devel/electron4/files/patch-electron_chromium__src_chrome_renderer_spellchecker_spellcheck__worditerator.cc
@@ -0,0 +1,17 @@
+--- electron/chromium_src/chrome/renderer/spellchecker/spellcheck_worditerator.cc.orig 2019-03-16 13:10:56 UTC
++++ electron/chromium_src/chrome/renderer/spellchecker/spellcheck_worditerator.cc
+@@ -16,10 +16,10 @@
+ #include "base/macros.h"
+ #include "base/strings/stringprintf.h"
+ #include "base/strings/utf_string_conversions.h"
+-#include "third_party/icu/source/common/unicode/normlzr.h"
+-#include "third_party/icu/source/common/unicode/schriter.h"
+-#include "third_party/icu/source/common/unicode/uscript.h"
+-#include "third_party/icu/source/i18n/unicode/ulocdata.h"
++#include "unicode/normlzr.h"
++#include "unicode/schriter.h"
++#include "unicode/uscript.h"
++#include "unicode/ulocdata.h"
+
+ // SpellcheckCharAttribute implementation:
+
diff --git a/devel/electron4/files/patch-electron_chromium__src_chrome_renderer_spellchecker_spellcheck__worditerator.h b/devel/electron4/files/patch-electron_chromium__src_chrome_renderer_spellchecker_spellcheck__worditerator.h
new file mode 100644
index 000000000000..2509a8a3f2e3
--- /dev/null
+++ b/devel/electron4/files/patch-electron_chromium__src_chrome_renderer_spellchecker_spellcheck__worditerator.h
@@ -0,0 +1,11 @@
+--- electron/chromium_src/chrome/renderer/spellchecker/spellcheck_worditerator.h.orig 2019-03-16 13:11:46 UTC
++++ electron/chromium_src/chrome/renderer/spellchecker/spellcheck_worditerator.h
+@@ -16,7 +16,7 @@
+
+ #include "base/macros.h"
+ #include "base/strings/string16.h"
+-#include "third_party/icu/source/common/unicode/uscript.h"
++#include "unicode/uscript.h"
+
+ namespace base {
+ namespace i18n {
diff --git a/devel/electron4/files/patch-electron_lib_browser_api_app.js b/devel/electron4/files/patch-electron_lib_browser_api_app.js
new file mode 100644
index 000000000000..fd88561c5e2d
--- /dev/null
+++ b/devel/electron4/files/patch-electron_lib_browser_api_app.js
@@ -0,0 +1,11 @@
+--- electron/lib/browser/api/app.js.orig 2019-05-30 22:14:00 UTC
++++ electron/lib/browser/api/app.js
+@@ -71,7 +71,7 @@ if (process.platform === 'darwin') {
+ }
+ }
+
+-if (process.platform === 'linux') {
++if (process.platform === 'linux' || process.platform === 'freebsd') {
+ app.launcher = {
+ setBadgeCount: bindings.unityLauncherSetBadgeCount,
+ getBadgeCount: bindings.unityLauncherGetBadgeCount,
diff --git a/devel/electron4/files/patch-electron_lib_browser_api_dialog.js b/devel/electron4/files/patch-electron_lib_browser_api_dialog.js
new file mode 100644
index 000000000000..f4950b8d7fe3
--- /dev/null
+++ b/devel/electron4/files/patch-electron_lib_browser_api_dialog.js
@@ -0,0 +1,11 @@
+--- electron/lib/browser/api/dialog.js.orig 2019-05-23 00:28:36 UTC
++++ electron/lib/browser/api/dialog.js
+@@ -54,7 +54,7 @@ const normalizeAccessKey = (text) => {
+ // existing single underscores with a second underscore, replace double
+ // ampersands with a single ampersand, and replace a single ampersand with
+ // a single underscore
+- if (process.platform === 'linux') {
++ if (process.platform === 'linux' || process.platform === 'freebsd') {
+ return text.replace(/_/g, '__').replace(/&(.?)/g, (match, after) => {
+ if (after === '&') return after
+ return `_${after}`
diff --git a/devel/electron4/files/patch-electron_lib_browser_api_menu-item-roles.js b/devel/electron4/files/patch-electron_lib_browser_api_menu-item-roles.js
new file mode 100644
index 000000000000..330d782cbef6
--- /dev/null
+++ b/devel/electron4/files/patch-electron_lib_browser_api_menu-item-roles.js
@@ -0,0 +1,11 @@
+--- electron/lib/browser/api/menu-item-roles.js.orig 2019-05-23 00:29:28 UTC
++++ electron/lib/browser/api/menu-item-roles.js
+@@ -5,7 +5,7 @@ const { app } = require('electron')
+ const roles = {
+ about: {
+ get label () {
+- return process.platform === 'linux' ? 'About' : `About ${app.getName()}`
++ return (process.platform === 'linux' || process.platform === 'freebsd') ? 'About' : `About ${app.getName()}`
+ }
+ },
+ close: {
diff --git a/devel/electron4/files/patch-electron_lib_browser_api_power-monitor.js b/devel/electron4/files/patch-electron_lib_browser_api_power-monitor.js
new file mode 100644
index 000000000000..8d03fa3ce00c
--- /dev/null
+++ b/devel/electron4/files/patch-electron_lib_browser_api_power-monitor.js
@@ -0,0 +1,11 @@
+--- electron/lib/browser/api/power-monitor.js.orig 2019-05-23 00:30:29 UTC
++++ electron/lib/browser/api/power-monitor.js
+@@ -8,7 +8,7 @@ Object.setPrototypeOf(PowerMonitor.prototype, EventEmi
+ EventEmitter.call(powerMonitor)
+
+ // On Linux we need to call blockShutdown() to subscribe to shutdown event.
+-if (process.platform === 'linux') {
++if (process.platform === 'linux' || process.platform === 'freebsd') {
+ powerMonitor.on('newListener', (event) => {
+ if (event === 'shutdown' && powerMonitor.listenerCount('shutdown') === 0) {
+ powerMonitor.blockShutdown()
diff --git a/devel/electron4/files/patch-electron_lib_browser_init.js b/devel/electron4/files/patch-electron_lib_browser_init.js
new file mode 100644
index 000000000000..c2eab57f2267
--- /dev/null
+++ b/devel/electron4/files/patch-electron_lib_browser_init.js
@@ -0,0 +1,11 @@
+--- electron/lib/browser/init.js.orig 2019-05-23 00:31:34 UTC
++++ electron/lib/browser/init.js
+@@ -167,7 +167,7 @@ const mainStartupScript = packageJson.main || 'index.j
+ const KNOWN_XDG_DESKTOP_VALUES = ['Pantheon', 'Unity:Unity7', 'pop:GNOME']
+
+ function currentPlatformSupportsAppIndicator () {
+- if (process.platform !== 'linux') return false
++ if (process.platform !== 'linux' && process.platform !== 'freebsd') return false
+ const currentDesktop = process.env.XDG_CURRENT_DESKTOP
+
+ if (!currentDesktop) return false
diff --git a/devel/electron4/files/patch-electron_lib_common_api_clipboard.js b/devel/electron4/files/patch-electron_lib_common_api_clipboard.js
new file mode 100644
index 000000000000..6f7283729a46
--- /dev/null
+++ b/devel/electron4/files/patch-electron_lib_common_api_clipboard.js
@@ -0,0 +1,10 @@
+--- electron/lib/common/api/clipboard.js.orig 2019-05-23 00:33:16 UTC
++++ electron/lib/common/api/clipboard.js
+@@ -1,6 +1,6 @@
+ 'use strict'
+
+-if (process.platform === 'linux' && process.type === 'renderer') {
++if ((process.platform === 'linux' || process.platform === 'freebsd') && process.type === 'renderer') {
+ // On Linux we could not access clipboard in renderer process.
+ const { getRemoteForUsage } = require('@electron/internal/renderer/remote')
+ module.exports = getRemoteForUsage('clipboard').clipboard
diff --git a/devel/electron4/files/patch-electron_script_lib_utils.js b/devel/electron4/files/patch-electron_script_lib_utils.js
new file mode 100644
index 000000000000..fb20e1d05d9c
--- /dev/null
+++ b/devel/electron4/files/patch-electron_script_lib_utils.js
@@ -0,0 +1,10 @@
+--- electron/script/lib/utils.js.orig 2019-06-19 18:06:58 UTC
++++ electron/script/lib/utils.js
+@@ -13,6 +13,7 @@ function getElectronExec () {
+ case 'win32':
+ return `out/${OUT_DIR}/electron.exe`
+ case 'linux':
++ case 'freebsd':
+ return `out/${OUT_DIR}/electron`
+ default:
+ throw new Error('Unknown platform')
diff --git a/devel/electron4/files/patch-electron_spec_api-app-spec.js b/devel/electron4/files/patch-electron_spec_api-app-spec.js
new file mode 100644
index 000000000000..865dac6ea3c2
--- /dev/null
+++ b/devel/electron4/files/patch-electron_spec_api-app-spec.js
@@ -0,0 +1,75 @@
+--- electron/spec/api-app-spec.js.orig 2019-07-01 21:24:47 UTC
++++ electron/spec/api-app-spec.js
+@@ -175,7 +175,7 @@ describe('app module', () => {
+ })
+
+ it('exits gracefully', async function () {
+- if (!['darwin', 'linux'].includes(process.platform)) {
++ if (!['darwin', 'linux', 'freebsd'].includes(process.platform)) {
+ this.skip()
+ return
+ }
+@@ -275,7 +275,7 @@ describe('app module', () => {
+ let w = null
+
+ before(function () {
+- if (process.platform !== 'linux') {
++ if (process.platform !== 'linux' && process.platform !== 'freebsd') {
+ this.skip()
+ }
+ })
+@@ -422,7 +422,8 @@ describe('app module', () => {
+ describe('app.setBadgeCount', () => {
+ const platformIsNotSupported =
+ (process.platform === 'win32') ||
+- (process.platform === 'linux' && !app.isUnityRunning())
++ (process.platform === 'linux' && !app.isUnityRunning()) ||
++ (process.platform === 'freebsd')
+ const platformIsSupported = !platformIsNotSupported
+
+ const expectedBadgeCount = 42
+@@ -476,7 +477,7 @@ describe('app module', () => {
+ ]
+
+ before(function () {
+- if (process.platform === 'linux' || process.mas) this.skip()
++ if (process.platform === 'linux' || process.platform === 'freebsd' || process.mas) this.skip()
+ })
+
+ beforeEach(() => {
+@@ -605,7 +606,7 @@ describe('app module', () => {
+ let w = null
+
+ before(function () {
+- if (process.platform === 'linux') {
++ if (process.platform === 'linux' || process.platform === 'freebsd') {
+ this.skip()
+ }
+ })
+@@ -798,7 +799,7 @@ describe('app module', () => {
+ // doesn't affect nested `describe`s.
+ beforeEach(function () {
+ // FIXME Get these specs running on Linux CI
+- if (process.platform === 'linux' && isCI) {
++ if ((process.platform === 'linux' || process.platform === 'freebsd') && isCI) {
+ this.skip()
+ }
+ })
+@@ -936,7 +937,7 @@ describe('app module', () => {
+
+ it('succeeds with complete GPUInfo', async () => {
+ const completeInfo = await getGPUInfo('complete')
+- if (process.platform === 'linux') {
++ if (process.platform === 'linux' || process.platform === 'freebsd') {
+ // For linux and macOS complete info is same as basic info
+ await verifyBasicGPUInfo(completeInfo)
+ const basicInfo = await getGPUInfo('basic')
+@@ -967,7 +968,7 @@ describe('app module', () => {
+ // XXX(alexeykuzmin): Calling `.skip()` inside a `before` hook
+ // doesn't affect nested `describe`s.
+ // FIXME Get these specs running on Linux
+- if (process.platform === 'linux') {
++ if (process.platform === 'linux' || process.platform === 'freebsd') {
+ this.skip()
+ }
+
diff --git a/devel/electron4/files/patch-electron_spec_api-auto-updater-spec.js b/devel/electron4/files/patch-electron_spec_api-auto-updater-spec.js
new file mode 100644
index 000000000000..a45ed722738e
--- /dev/null
+++ b/devel/electron4/files/patch-electron_spec_api-auto-updater-spec.js
@@ -0,0 +1,11 @@
+--- electron/spec/api-auto-updater-spec.js.orig 2019-05-14 02:12:26 UTC
++++ electron/spec/api-auto-updater-spec.js
+@@ -140,7 +140,7 @@ describe('autoUpdater module', function () {
+
+ describe('error event', () => {
+ it('serializes correctly over the remote module', function (done) {
+- if (process.platform === 'linux') {
++ if (process.platform === 'linux' || process.platform === 'freebsd') {
+ // FIXME(alexeykuzmin): Skip the test.
+ // this.skip()
+ return done()
diff --git a/devel/electron4/files/patch-electron_spec_api-browser-window-spec.js b/devel/electron4/files/patch-electron_spec_api-browser-window-spec.js
new file mode 100644
index 000000000000..782143881c42
--- /dev/null
+++ b/devel/electron4/files/patch-electron_spec_api-browser-window-spec.js
@@ -0,0 +1,38 @@
+--- electron/spec/api-browser-window-spec.js.orig 2019-05-14 02:19:04 UTC
++++ electron/spec/api-browser-window-spec.js
+@@ -1208,7 +1208,7 @@ describe('BrowserWindow module', () => {
+
+ describe('enableLargerThanScreen" option', () => {
+ before(function () {
+- if (process.platform === 'linux') {
++ if (process.platform === 'linux' || process.platform === 'freebsd') {
+ this.skip()
+ }
+ })
+@@ -2198,7 +2198,7 @@ describe('BrowserWindow module', () => {
+ w.loadFile(path.join(fixtures, 'pages', 'visibilitychange.html'))
+ })
+ it('visibilityState changes when window is minimized', function (done) {
+- if (isCI && process.platform === 'linux') {
++ if (isCI && (process.platform === 'linux' || process.platform === 'freebsd')) {
+ // FIXME(alexeykuzmin): Skip the test instead of marking it as passed.
+ // afterEach hook won't be run if a test is skipped dynamically.
+ // If afterEach isn't run current window won't be destroyed
+@@ -2388,7 +2388,7 @@ describe('BrowserWindow module', () => {
+ }
+
+ // FIXME These specs crash on Linux when run in a docker container
+- if (isCI && process.platform === 'linux') {
++ if (isCI && (process.platform === 'linux' || process.platform === 'freebsd')) {
+ this.skip()
+ }
+ })
+@@ -2620,7 +2620,7 @@ describe('BrowserWindow module', () => {
+ // - `.skip()` called in the 'beforeEach' hook prevents 'afterEach'
+ // hook from being called.
+ // Not implemented on Linux.
+- if (process.platform === 'linux') {
++ if (process.platform === 'linux' || process.platform === 'freebsd') {
+ return
+ }
+
diff --git a/devel/electron4/files/patch-electron_spec_api-clipboard-spec.js b/devel/electron4/files/patch-electron_spec_api-clipboard-spec.js
new file mode 100644
index 000000000000..a306ba12ccf1
--- /dev/null
+++ b/devel/electron4/files/patch-electron_spec_api-clipboard-spec.js
@@ -0,0 +1,38 @@
+--- electron/spec/api-clipboard-spec.js.orig 2019-05-16 05:23:55 UTC
++++ electron/spec/api-clipboard-spec.js
+@@ -27,7 +27,7 @@ describe('clipboard module', () => {
+ describe('clipboard.readHTML()', () => {
+ it('returns markup correctly', () => {
+ const text = '<string>Hi</string>'
+- const markup = process.platform === 'darwin' ? "<meta charset='utf-8'><string>Hi</string>" : process.platform === 'linux' ? '<meta http-equiv="content-type" ' + 'content="text/html; charset=utf-8"><string>Hi</string>' : '<string>Hi</string>'
++ const markup = process.platform === 'darwin' ? "<meta charset='utf-8'><string>Hi</string>" : (process.platform === 'linux' || process.platform === 'freebsd') ? '<meta http-equiv="content-type" ' + 'content="text/html; charset=utf-8"><string>Hi</string>' : '<string>Hi</string>'
+ clipboard.writeHTML(text)
+ expect(clipboard.readHTML()).to.equal(markup)
+ })
+@@ -43,7 +43,7 @@ describe('clipboard module', () => {
+
+ describe('clipboard.readBookmark', () => {
+ before(function () {
+- if (process.platform === 'linux') {
++ if (process.platform === 'linux' || process.platform === 'freebsd') {
+ this.skip()
+ }
+ })
+@@ -69,7 +69,7 @@ describe('clipboard module', () => {
+ const rtf = '{\\rtf1\\utf8 text}'
+ const p = path.join(fixtures, 'assets', 'logo.png')
+ const i = nativeImage.createFromPath(p)
+- const markup = process.platform === 'darwin' ? "<meta charset='utf-8'><b>Hi</b>" : process.platform === 'linux' ? '<meta http-equiv="content-type" ' + 'content="text/html; charset=utf-8"><b>Hi</b>' : '<b>Hi</b>'
++ const markup = process.platform === 'darwin' ? "<meta charset='utf-8'><b>Hi</b>" : (process.platform === 'linux' || process.platform === 'freebsd') ? '<meta http-equiv="content-type" ' + 'content="text/html; charset=utf-8"><b>Hi</b>' : '<b>Hi</b>'
+ const bookmark = { title: 'a title', url: 'test' }
+ clipboard.write({
+ text: 'test',
+@@ -84,7 +84,7 @@ describe('clipboard module', () => {
+ expect(clipboard.readRTF()).to.equal(rtf)
+ expect(clipboard.readImage().toDataURL()).to.equal(i.toDataURL())
+
+- if (process.platform !== 'linux') {
++ if (process.platform !== 'linux' && process.platform !== 'freebsd') {
+ expect(clipboard.readBookmark()).to.deep.equal(bookmark)
+ }
+ })
diff --git a/devel/electron4/files/patch-electron_spec_api-crash-reporter-spec.js b/devel/electron4/files/patch-electron_spec_api-crash-reporter-spec.js
new file mode 100644
index 000000000000..b2dcb6fe5ffe
--- /dev/null
+++ b/devel/electron4/files/patch-electron_spec_api-crash-reporter-spec.js
@@ -0,0 +1,11 @@
+--- electron/spec/api-crash-reporter-spec.js.orig 2019-05-14 03:49:42 UTC
++++ electron/spec/api-crash-reporter-spec.js
+@@ -16,7 +16,7 @@ describe('crashReporter module', () => {
+ if (process.mas || process.env.DISABLE_CRASH_REPORTER_TESTS) return
+
+ // TODO(alexeykuzmin): [Ch66] Fails. Fix it and enable back.
+- if (process.platform === 'linux') return
++ if (process.platform === 'linux' || process.platform === 'freebsd') return
+
+ let originalTempDirectory = null
+ let tempDirectory = null
diff --git a/devel/electron4/files/patch-electron_spec_api-net-log-spec.js b/devel/electron4/files/patch-electron_spec_api-net-log-spec.js
new file mode 100644
index 000000000000..b1efc629f2e1
--- /dev/null
+++ b/devel/electron4/files/patch-electron_spec_api-net-log-spec.js
@@ -0,0 +1,29 @@
+--- electron/spec/api-net-log-spec.js.orig 2019-05-14 02:57:56 UTC
++++ electron/spec/api-net-log-spec.js
+@@ -95,7 +95,7 @@ describe('netLog module', () => {
+ })
+
+ it('should begin and end logging automatically when --log-net-log is passed', done => {
+- if (isCI && process.platform === 'linux') {
++ if (isCI && (process.platform === 'linux' || process.platform === 'freebsd')) {
+ done()
+ return
+ }
+@@ -116,7 +116,7 @@ describe('netLog module', () => {
+
+ // FIXME(deepak1556): Ch69 follow up.
+ xit('should begin and end logging automtically when --log-net-log is passed, and behave correctly when .startLogging() and .stopLogging() is called', done => {
+- if (isCI && process.platform === 'linux') {
++ if (isCI && (process.platform === 'linux' || process.platform === 'freebsd')) {
+ done()
+ return
+ }
+@@ -139,7 +139,7 @@ describe('netLog module', () => {
+ })
+
+ it('should end logging automatically when only .startLogging() is called', done => {
+- if (isCI && process.platform === 'linux') {
++ if (isCI && (process.platform === 'linux' || process.platform === 'freebsd')) {
+ done()
+ return
+ }
diff --git a/devel/electron4/files/patch-electron_spec_api-notification-dbus-spec.js b/devel/electron4/files/patch-electron_spec_api-notification-dbus-spec.js
new file mode 100644
index 000000000000..3e646826ff3d
--- /dev/null
+++ b/devel/electron4/files/patch-electron_spec_api-notification-dbus-spec.js
@@ -0,0 +1,11 @@
+--- electron/spec/api-notification-dbus-spec.js.orig 2019-05-14 03:03:26 UTC
++++ electron/spec/api-notification-dbus-spec.js
+@@ -13,7 +13,7 @@ const Promise = require('bluebird')
+ const { remote } = require('electron')
+ const { app } = remote.require('electron')
+
+-const skip = process.platform !== 'linux' ||
++const skip = (process.platform !== 'linux' && process.platform === 'freebsd') ||
+ process.arch === 'ia32' ||
+ process.arch.indexOf('arm') === 0 ||
+ !process.env.DBUS_SESSION_BUS_ADDRESS;
diff --git a/devel/electron4/files/patch-electron_spec_api-power-monitor-spec.js b/devel/electron4/files/patch-electron_spec_api-power-monitor-spec.js
new file mode 100644
index 000000000000..c1a50a05a72e
--- /dev/null
+++ b/devel/electron4/files/patch-electron_spec_api-power-monitor-spec.js
@@ -0,0 +1,11 @@
+--- electron/spec/api-power-monitor-spec.js.orig 2019-05-14 03:07:38 UTC
++++ electron/spec/api-power-monitor-spec.js
+@@ -14,7 +14,7 @@ const Promise = require('bluebird')
+ const { expect } = chai
+ chai.use(dirtyChai)
+
+-const skip = process.platform !== 'linux' || !process.env.DBUS_SYSTEM_BUS_ADDRESS
++const skip = (process.platform !== 'linux' && process.platform === 'freebsd') || !process.env.DBUS_SYSTEM_BUS_ADDRESS
+
+ describe('powerMonitor', () => {
+ let logindMock, dbusMockPowerMonitor, getCalls, emitSignal, reset
diff --git a/devel/electron4/files/patch-electron_spec_chromium-spec.js b/devel/electron4/files/patch-electron_spec_chromium-spec.js
new file mode 100644
index 000000000000..63f2250dfcd7
--- /dev/null
+++ b/devel/electron4/files/patch-electron_spec_chromium-spec.js
@@ -0,0 +1,11 @@
+--- electron/spec/chromium-spec.js.orig 2019-05-14 03:32:31 UTC
++++ electron/spec/chromium-spec.js
+@@ -861,7 +861,7 @@ describe('chromium feature', () => {
+ })
+
+ it('can be get as context in canvas', () => {
+- if (process.platform === 'linux') {
++ if (process.platform === 'linux' || process.platform === 'freebsd') {
+ // FIXME(alexeykuzmin): Skip the test.
+ // this.skip()
+ return
diff --git a/devel/electron4/files/patch-extensions_browser_api_declarative__webrequest_webrequest__action.cc b/devel/electron4/files/patch-extensions_browser_api_declarative__webrequest_webrequest__action.cc
new file mode 100644
index 000000000000..df60e8f6c52f
--- /dev/null
+++ b/devel/electron4/files/patch-extensions_browser_api_declarative__webrequest_webrequest__action.cc
@@ -0,0 +1,14 @@
+--- extensions/browser/api/declarative_webrequest/webrequest_action.cc.orig 2019-03-15 06:37:23 UTC
++++ extensions/browser/api/declarative_webrequest/webrequest_action.cc
+@@ -28,7 +28,11 @@
+ #include "extensions/common/extension.h"
+ #include "net/base/registry_controlled_domains/registry_controlled_domain.h"
+ #include "net/http/http_util.h"
++#if defined(OS_BSD)
++#include <re2/re2.h>
++#else
+ #include "third_party/re2/src/re2/re2.h"
++#endif
+
+ using content::ResourceRequestInfo;
+
diff --git a/devel/electron4/files/patch-extensions_browser_api_messaging_message__service.cc b/devel/electron4/files/patch-extensions_browser_api_messaging_message__service.cc
new file mode 100644
index 000000000000..fb2d08c3a4ad
--- /dev/null
+++ b/devel/electron4/files/patch-extensions_browser_api_messaging_message__service.cc
@@ -0,0 +1,20 @@
+--- extensions/browser/api/messaging/message_service.cc.orig 2019-03-15 06:37:23 UTC
++++ extensions/browser/api/messaging/message_service.cc
+@@ -60,7 +60,7 @@ namespace {
+
+ const char kReceivingEndDoesntExistError[] =
+ "Could not establish connection. Receiving end does not exist.";
+-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+ const char kMissingPermissionError[] =
+ "Access to native messaging requires nativeMessaging permission.";
+ const char kProhibitedByPoliciesError[] =
+@@ -362,7 +362,7 @@ void MessageService::OpenChannelToNativeApp(
+ if (!source)
+ return;
+
+-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+ content::WebContents* web_contents =
+ content::WebContents::FromRenderFrameHost(source);
+ ExtensionWebContentsObserver* extension_web_contents_observer =
diff --git a/devel/electron4/files/patch-extensions_browser_api_networking__private_networking__private__delegate__factory.cc b/devel/electron4/files/patch-extensions_browser_api_networking__private_networking__private__delegate__factory.cc
new file mode 100644
index 000000000000..e21835ecd731
--- /dev/null
+++ b/devel/electron4/files/patch-extensions_browser_api_networking__private_networking__private__delegate__factory.cc
@@ -0,0 +1,20 @@
+--- extensions/browser/api/networking_private/networking_private_delegate_factory.cc.orig 2019-03-15 06:25:45 UTC
++++ extensions/browser/api/networking_private/networking_private_delegate_factory.cc
+@@ -11,7 +11,7 @@
+
+ #if defined(OS_CHROMEOS)
+ #include "extensions/browser/api/networking_private/networking_private_chromeos.h"
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ #include "extensions/browser/api/networking_private/networking_private_linux.h"
+ #elif defined(OS_WIN) || defined(OS_MACOSX)
+ #include "components/wifi/wifi_service.h"
+@@ -61,7 +61,7 @@ KeyedService* NetworkingPrivateDelegateFactory::BuildS
+ NetworkingPrivateDelegate* delegate;
+ #if defined(OS_CHROMEOS)
+ delegate = new NetworkingPrivateChromeOS(browser_context);
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ delegate = new NetworkingPrivateLinux();
+ #elif defined(OS_WIN) || defined(OS_MACOSX)
+ std::unique_ptr<wifi::WiFiService> wifi_service(wifi::WiFiService::Create());
diff --git a/devel/electron4/files/patch-extensions_browser_api_web__request_form__data__parser.cc b/devel/electron4/files/patch-extensions_browser_api_web__request_form__data__parser.cc
new file mode 100644
index 000000000000..084c0f161635
--- /dev/null
+++ b/devel/electron4/files/patch-extensions_browser_api_web__request_form__data__parser.cc
@@ -0,0 +1,14 @@
+--- extensions/browser/api/web_request/form_data_parser.cc.orig 2019-03-15 06:37:23 UTC
++++ extensions/browser/api/web_request/form_data_parser.cc
+@@ -15,7 +15,11 @@
+ #include "base/values.h"
+ #include "net/base/escape.h"
+ #include "net/http/http_request_headers.h"
++#if defined(OS_BSD)
++#include <re2/re2.h>
++#else
+ #include "third_party/re2/src/re2/re2.h"
++#endif
+
+ using base::DictionaryValue;
+ using base::ListValue;
diff --git a/devel/electron4/files/patch-extensions_browser_browser__context__keyed__service__factories.cc b/devel/electron4/files/patch-extensions_browser_browser__context__keyed__service__factories.cc
new file mode 100644
index 000000000000..c84d0f5e2ebd
--- /dev/null
+++ b/devel/electron4/files/patch-extensions_browser_browser__context__keyed__service__factories.cc
@@ -0,0 +1,11 @@
+--- extensions/browser/browser_context_keyed_service_factories.cc.orig 2019-03-15 06:37:23 UTC
++++ extensions/browser/browser_context_keyed_service_factories.cc
+@@ -85,7 +85,7 @@ void EnsureBrowserContextKeyedServiceFactoriesBuilt()
+ #if defined(OS_CHROMEOS)
+ NetworkingConfigServiceFactory::GetInstance();
+ #endif
+-#if defined(OS_LINUX) || defined(OS_WIN) || defined(OS_MACOSX)
++#if defined(OS_LINUX) || defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_BSD)
+ NetworkingPrivateEventRouterFactory::GetInstance();
+ #endif
+ PowerAPI::GetFactoryInstance();
diff --git a/devel/electron4/files/patch-extensions_common_api___permission__features.json b/devel/electron4/files/patch-extensions_common_api___permission__features.json
new file mode 100644
index 000000000000..538c32e5ab89
--- /dev/null
+++ b/devel/electron4/files/patch-extensions_common_api___permission__features.json
@@ -0,0 +1,29 @@
+--- extensions/common/api/_permission_features.json.orig 2019-03-15 06:37:23 UTC
++++ extensions/common/api/_permission_features.json
+@@ -126,7 +126,7 @@
+ "bluetoothPrivate": {
+ "channel": "stable",
+ "extension_types": ["platform_app"],
+- "platforms": ["chromeos", "win", "mac", "linux"],
++ "platforms": ["chromeos", "win", "mac", "linux", "bsd"],
+ "whitelist": [
+ "1C93BD3CF875F4A73C0B2A163BB8FBDA8B8B3D80", // http://crbug.com/387169
+ "A3BC37E2148AC4E99BE4B16AF9D42DD1E592BBBE", // http://crbug.com/387169
+@@ -453,7 +453,7 @@
+ }, {
+ "channel": "stable",
+ "extension_types": ["extension", "legacy_packaged_app", "platform_app"],
+- "platforms": ["chromeos", "mac", "win", "linux"],
++ "platforms": ["chromeos", "mac", "win", "linux", "bsd"],
+ "whitelist": [
+ "0DE0F05680A4A056BCEC864ED8DDA84296F82B40", // http://crbug.com/434651
+ "1C93BD3CF875F4A73C0B2A163BB8FBDA8B8B3D80", // http://crbug.com/293683
+@@ -484,7 +484,7 @@
+ "networkingPrivate": {
+ "channel": "stable",
+ "extension_types": ["extension", "legacy_packaged_app", "platform_app"],
+- "platforms": ["chromeos", "mac", "win", "linux"],
++ "platforms": ["chromeos", "mac", "win", "linux", "bsd"],
+ "whitelist": [
+ // DO NOT ADD ANY MORE ENTRIES HERE.
+ // networkingPrivate is being migrated to networking.onc.
diff --git a/devel/electron4/files/patch-extensions_common_api_runtime.json b/devel/electron4/files/patch-extensions_common_api_runtime.json
new file mode 100644
index 000000000000..eb6185b7dff7
--- /dev/null
+++ b/devel/electron4/files/patch-extensions_common_api_runtime.json
@@ -0,0 +1,11 @@
+--- extensions/common/api/runtime.json.orig 2019-03-15 06:37:23 UTC
++++ extensions/common/api/runtime.json
+@@ -66,7 +66,7 @@
+ "id": "PlatformOs",
+ "type": "string",
+ "description": "The operating system chrome is running on.",
+- "enum": ["mac", "win", "android", "cros", "linux", "openbsd"]
++ "enum": ["mac", "win", "android", "cros", "linux", "freebsd", "openbsd"]
+ },
+ {
+ "id": "PlatformArch",
diff --git a/devel/electron4/files/patch-extensions_common_feature__switch.cc b/devel/electron4/files/patch-extensions_common_feature__switch.cc
new file mode 100644
index 000000000000..82b570a21883
--- /dev/null
+++ b/devel/electron4/files/patch-extensions_common_feature__switch.cc
@@ -0,0 +1,14 @@
+--- extensions/common/feature_switch.cc.orig 2019-03-15 06:25:45 UTC
++++ extensions/common/feature_switch.cc
+@@ -44,11 +44,7 @@ class CommonSwitches {
+ FeatureSwitch::DEFAULT_ENABLED),
+ load_media_router_component_extension(
+ kLoadMediaRouterComponentExtensionFlag,
+-#if defined(GOOGLE_CHROME_BUILD)
+ FeatureSwitch::DEFAULT_ENABLED)
+-#else
+- FeatureSwitch::DEFAULT_DISABLED)
+-#endif // defined(GOOGLE_CHROME_BUILD)
+ {
+ }
+
diff --git a/devel/electron4/files/patch-extensions_common_features_feature.cc b/devel/electron4/files/patch-extensions_common_features_feature.cc
new file mode 100644
index 000000000000..c2917f159f35
--- /dev/null
+++ b/devel/electron4/files/patch-extensions_common_features_feature.cc
@@ -0,0 +1,11 @@
+--- extensions/common/features/feature.cc.orig 2019-03-15 06:25:45 UTC
++++ extensions/common/features/feature.cc
+@@ -26,6 +26,8 @@ Feature::Platform Feature::GetCurrentPlatform() {
+ return MACOSX_PLATFORM;
+ #elif defined(OS_WIN)
+ return WIN_PLATFORM;
++#elif defined(OS_BSD)
++ return LINUX_PLATFORM;
+ #else
+ return UNSPECIFIED_PLATFORM;
+ #endif
diff --git a/devel/electron4/files/patch-extensions_common_image__util.cc b/devel/electron4/files/patch-extensions_common_image__util.cc
new file mode 100644
index 000000000000..1206faa8183b
--- /dev/null
+++ b/devel/electron4/files/patch-extensions_common_image__util.cc
@@ -0,0 +1,14 @@
+--- extensions/common/image_util.cc.orig 2019-03-15 06:37:23 UTC
++++ extensions/common/image_util.cc
+@@ -11,7 +11,11 @@
+ #include "base/strings/string_number_conversions.h"
+ #include "base/strings/string_util.h"
+ #include "base/strings/stringprintf.h"
++#if defined(OS_BSD)
++#include <re2/re2.h>
++#else
+ #include "third_party/re2/src/re2/re2.h"
++#endif
+ #include "third_party/skia/include/core/SkColor.h"
+ #include "third_party/skia/include/utils/SkParse.h"
+ #include "ui/gfx/color_utils.h"
diff --git a/devel/electron4/files/patch-extensions_common_stack__frame.cc b/devel/electron4/files/patch-extensions_common_stack__frame.cc
new file mode 100644
index 000000000000..97ebbfafdd89
--- /dev/null
+++ b/devel/electron4/files/patch-extensions_common_stack__frame.cc
@@ -0,0 +1,14 @@
+--- extensions/common/stack_frame.cc.orig 2019-03-15 06:25:45 UTC
++++ extensions/common/stack_frame.cc
+@@ -7,7 +7,11 @@
+ #include <string>
+
+ #include "base/strings/utf_string_conversions.h"
++#if defined(OS_BSD)
++#include <re2/re2.h>
++#else
+ #include "third_party/re2/src/re2/re2.h"
++#endif
+
+ namespace extensions {
+
diff --git a/devel/electron4/files/patch-extensions_renderer_bindings_api__binding__util.cc b/devel/electron4/files/patch-extensions_renderer_bindings_api__binding__util.cc
new file mode 100644
index 000000000000..1280525d1431
--- /dev/null
+++ b/devel/electron4/files/patch-extensions_renderer_bindings_api__binding__util.cc
@@ -0,0 +1,11 @@
+--- extensions/renderer/bindings/api_binding_util.cc.orig 2019-03-15 06:37:23 UTC
++++ extensions/renderer/bindings/api_binding_util.cc
+@@ -128,6 +128,8 @@ std::string GetPlatformString() {
+ return "mac";
+ #elif defined(OS_WIN)
+ return "win";
++#elif defined(OS_BSD)
++ return "bsd";
+ #else
+ NOTREACHED();
+ return std::string();
diff --git a/devel/electron4/files/patch-extensions_shell_app_shell__main__delegate.cc b/devel/electron4/files/patch-extensions_shell_app_shell__main__delegate.cc
new file mode 100644
index 000000000000..94704d15a9b1
--- /dev/null
+++ b/devel/electron4/files/patch-extensions_shell_app_shell__main__delegate.cc
@@ -0,0 +1,29 @@
+--- extensions/shell/app/shell_main_delegate.cc.orig 2019-03-15 06:37:23 UTC
++++ extensions/shell/app/shell_main_delegate.cc
+@@ -39,7 +39,7 @@
+
+ #if defined(OS_WIN)
+ #include "base/base_paths_win.h"
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ #include "base/nix/xdg_util.h"
+ #elif defined(OS_MACOSX)
+ #include "base/base_paths_mac.h"
+@@ -53,7 +53,7 @@
+
+ namespace {
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS)
+ extensions::ShellCrashReporterClient* GetCrashReporterClient() {
+ static base::NoDestructor<extensions::ShellCrashReporterClient> instance;
+ return instance.get();
+@@ -71,7 +71,7 @@ base::FilePath GetDataPath() {
+ return cmd_line->GetSwitchValuePath(switches::kContentShellDataPath);
+
+ base::FilePath data_dir;
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ std::unique_ptr<base::Environment> env(base::Environment::Create());
+ data_dir = base::nix::GetXDGDirectory(
+ env.get(), base::nix::kXdgConfigHomeEnvVar, base::nix::kDotConfigDir);
diff --git a/devel/electron4/files/patch-gpu_command__buffer_service_program__manager.cc b/devel/electron4/files/patch-gpu_command__buffer_service_program__manager.cc
new file mode 100644
index 000000000000..648837eeaddd
--- /dev/null
+++ b/devel/electron4/files/patch-gpu_command__buffer_service_program__manager.cc
@@ -0,0 +1,14 @@
+--- gpu/command_buffer/service/program_manager.cc.orig 2019-03-15 06:37:24 UTC
++++ gpu/command_buffer/service/program_manager.cc
+@@ -31,7 +31,11 @@
+ #include "gpu/command_buffer/service/progress_reporter.h"
+ #include "gpu/command_buffer/service/shader_manager.h"
+ #include "gpu/config/gpu_preferences.h"
++#if defined(OS_BSD)
++#include <re2/re2.h>
++#else
+ #include "third_party/re2/src/re2/re2.h"
++#endif
+ #include "ui/gl/gl_version_info.h"
+
+ using base::TimeDelta;
diff --git a/devel/electron4/files/patch-gpu_config_gpu__control__list.cc b/devel/electron4/files/patch-gpu_config_gpu__control__list.cc
new file mode 100644
index 000000000000..f623bbb427cd
--- /dev/null
+++ b/devel/electron4/files/patch-gpu_config_gpu__control__list.cc
@@ -0,0 +1,32 @@
+--- gpu/config/gpu_control_list.cc.orig 2019-03-15 06:37:24 UTC
++++ gpu/config/gpu_control_list.cc
+@@ -16,7 +16,11 @@
+ #include "base/values.h"
+ #include "build/build_config.h"
+ #include "gpu/config/gpu_info.h"
++#if defined(OS_BSD)
++#include <re2/re2.h>
++#else
+ #include "third_party/re2/src/re2/re2.h"
++#endif
+
+ namespace gpu {
+ namespace {
+@@ -213,7 +217,7 @@ bool GpuControlList::More::GLVersionInfoMismatch(
+ GpuControlList::GLType GpuControlList::More::GetDefaultGLType() {
+ #if defined(OS_CHROMEOS)
+ return kGLTypeGL;
+-#elif defined(OS_LINUX) || defined(OS_OPENBSD)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ return kGLTypeGL;
+ #elif defined(OS_MACOSX)
+ return kGLTypeGL;
+@@ -681,7 +685,7 @@ GpuControlList::OsType GpuControlList::GetOsType() {
+ return kOsAndroid;
+ #elif defined(OS_FUCHSIA)
+ return kOsFuchsia;
+-#elif defined(OS_LINUX) || defined(OS_OPENBSD)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ return kOsLinux;
+ #elif defined(OS_MACOSX)
+ return kOsMacosx;
diff --git a/devel/electron4/files/patch-gpu_config_gpu__test__config.cc b/devel/electron4/files/patch-gpu_config_gpu__test__config.cc
new file mode 100644
index 000000000000..cdc5f74b96ef
--- /dev/null
+++ b/devel/electron4/files/patch-gpu_config_gpu__test__config.cc
@@ -0,0 +1,11 @@
+--- gpu/config/gpu_test_config.cc.orig 2019-03-15 06:37:24 UTC
++++ gpu/config/gpu_test_config.cc
+@@ -25,7 +25,7 @@ namespace {
+ GPUTestConfig::OS GetCurrentOS() {
+ #if defined(OS_CHROMEOS)
+ return GPUTestConfig::kOsChromeOS;
+-#elif defined(OS_LINUX) || defined(OS_OPENBSD)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ return GPUTestConfig::kOsLinux;
+ #elif defined(OS_WIN)
+ int32_t major_version = 0;
diff --git a/devel/electron4/files/patch-gpu_ipc_common_gpu__memory__buffer__support.cc b/devel/electron4/files/patch-gpu_ipc_common_gpu__memory__buffer__support.cc
new file mode 100644
index 000000000000..1546fce8af82
--- /dev/null
+++ b/devel/electron4/files/patch-gpu_ipc_common_gpu__memory__buffer__support.cc
@@ -0,0 +1,54 @@
+--- gpu/ipc/common/gpu_memory_buffer_support.cc.orig 2019-03-15 06:37:24 UTC
++++ gpu/ipc/common/gpu_memory_buffer_support.cc
+@@ -12,7 +12,7 @@
+ #include "gpu/ipc/common/gpu_memory_buffer_impl_io_surface.h"
+ #endif
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include "gpu/ipc/common/gpu_memory_buffer_impl_native_pixmap.h"
+ #include "ui/gfx/client_native_pixmap_factory.h"
+ #include "ui/gfx/linux/client_native_pixmap_factory_dmabuf.h"
+@@ -36,13 +36,13 @@ namespace gpu {
+ GpuMemoryBufferSupport::GpuMemoryBufferSupport() {
+ #if defined(USE_OZONE)
+ client_native_pixmap_factory_ = ui::CreateClientNativePixmapFactoryOzone();
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ client_native_pixmap_factory_.reset(
+ gfx::CreateClientNativePixmapFactoryDmabuf());
+ #endif
+ }
+
+-#if defined(OS_LINUX) || defined(USE_OZONE)
++#if defined(OS_LINUX) || defined(USE_OZONE) || defined(OS_BSD)
+ GpuMemoryBufferSupport::GpuMemoryBufferSupport(
+ std::unique_ptr<gfx::ClientNativePixmapFactory>
+ client_native_pixmap_factory)
+@@ -57,7 +57,7 @@ GpuMemoryBufferSupport::GetNativeGpuMemoryBufferType()
+ return gfx::IO_SURFACE_BUFFER;
+ #elif defined(OS_ANDROID)
+ return gfx::ANDROID_HARDWARE_BUFFER;
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ return gfx::NATIVE_PIXMAP;
+ #elif defined(OS_WIN)
+ return gfx::DXGI_SHARED_HANDLE;
+@@ -114,7 +114,7 @@ bool GpuMemoryBufferSupport::IsNativeGpuMemoryBufferCo
+ return false;
+ #elif defined(USE_OZONE)
+ return client_native_pixmap_factory_->IsConfigurationSupported(format, usage);
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ return false; // TODO(julian.isorce): Add linux support.
+ #elif defined(OS_WIN)
+ switch (usage) {
+@@ -171,7 +171,7 @@ GpuMemoryBufferSupport::CreateGpuMemoryBufferImplFromH
+ return GpuMemoryBufferImplIOSurface::CreateFromHandle(
+ std::move(handle), size, format, usage, callback);
+ #endif
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ case gfx::NATIVE_PIXMAP:
+ return GpuMemoryBufferImplNativePixmap::CreateFromHandle(
+ client_native_pixmap_factory(), std::move(handle), size, format,
diff --git a/devel/electron4/files/patch-gpu_ipc_common_gpu__memory__buffer__support.h b/devel/electron4/files/patch-gpu_ipc_common_gpu__memory__buffer__support.h
new file mode 100644
index 000000000000..fb78dd3809fa
--- /dev/null
+++ b/devel/electron4/files/patch-gpu_ipc_common_gpu__memory__buffer__support.h
@@ -0,0 +1,38 @@
+--- gpu/ipc/common/gpu_memory_buffer_support.h.orig 2019-03-15 06:37:24 UTC
++++ gpu/ipc/common/gpu_memory_buffer_support.h
+@@ -16,7 +16,7 @@
+ #include "ui/gfx/geometry/size.h"
+ #include "ui/gfx/gpu_memory_buffer.h"
+
+-#if defined(OS_LINUX) || defined(USE_OZONE)
++#if defined(OS_LINUX) || defined(OS_BSD) || defined(USE_OZONE)
+ namespace gfx {
+ class ClientNativePixmapFactory;
+ }
+@@ -28,7 +28,7 @@ namespace gpu {
+ class GPU_EXPORT GpuMemoryBufferSupport {
+ public:
+ GpuMemoryBufferSupport();
+-#if defined(OS_LINUX) || defined(USE_OZONE)
++#if defined(OS_LINUX) || defined(OS_BSD) || defined(USE_OZONE)
+ GpuMemoryBufferSupport(std::unique_ptr<gfx::ClientNativePixmapFactory>
+ client_native_pixmap_factory);
+ #endif
+@@ -42,7 +42,7 @@ class GPU_EXPORT GpuMemoryBufferSupport {
+ bool IsNativeGpuMemoryBufferConfigurationSupported(gfx::BufferFormat format,
+ gfx::BufferUsage usage);
+
+-#if defined(OS_LINUX) || defined(USE_OZONE)
++#if defined(OS_LINUX) || defined(OS_BSD) || defined(USE_OZONE)
+ gfx::ClientNativePixmapFactory* client_native_pixmap_factory() {
+ return client_native_pixmap_factory_.get();
+ }
+@@ -65,7 +65,7 @@ class GPU_EXPORT GpuMemoryBufferSupport {
+ const GpuMemoryBufferImpl::DestructionCallback& callback);
+
+ private:
+-#if defined(OS_LINUX) || defined(USE_OZONE)
++#if defined(OS_LINUX) || defined(OS_BSD) || defined(USE_OZONE)
+ std::unique_ptr<gfx::ClientNativePixmapFactory> client_native_pixmap_factory_;
+ #endif
+
diff --git a/devel/electron4/files/patch-gpu_ipc_service_gpu__init.cc b/devel/electron4/files/patch-gpu_ipc_service_gpu__init.cc
new file mode 100644
index 000000000000..0438e76e1daa
--- /dev/null
+++ b/devel/electron4/files/patch-gpu_ipc_service_gpu__init.cc
@@ -0,0 +1,29 @@
+--- gpu/ipc/service/gpu_init.cc.orig 2019-03-15 06:37:24 UTC
++++ gpu/ipc/service/gpu_init.cc
+@@ -74,7 +74,7 @@ bool CollectGraphicsInfo(GPUInfo* gpu_info,
+ return success;
+ }
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) && !defined(IS_CHROMECAST)
++#if defined(OS_LINUX) && !defined(OS_CHROMEOS) && !defined(IS_CHROMECAST) && !defined(OS_BSD)
+ bool CanAccessNvidiaDeviceFile() {
+ bool res = true;
+ base::AssertBlockingAllowed();
+@@ -110,7 +110,7 @@ bool GpuInit::InitializeAndStartSandbox(base::CommandL
+ // crash during feature collection.
+ gpu::SetKeysForCrashLogging(gpu_info_);
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if defined(OS_LINUX) && !defined(OS_CHROMEOS) && !defined(OS_BSD)
+ if (gpu_info_.gpu.vendor_id == 0x10de && // NVIDIA
+ gpu_info_.gpu.driver_vendor == "NVIDIA" && !CanAccessNvidiaDeviceFile())
+ return false;
+@@ -194,7 +194,7 @@ bool GpuInit::InitializeAndStartSandbox(base::CommandL
+ sandbox_helper_->PreSandboxStartup();
+
+ bool attempted_startsandbox = false;
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) && !defined(OS_BSD)
+ // On Chrome OS ARM Mali, GPU driver userspace creates threads when
+ // initializing a GL context, so start the sandbox early.
+ // TODO(zmo): Need to collect OS version before this.
diff --git a/devel/electron4/files/patch-gpu_ipc_service_gpu__memory__buffer__factory.cc b/devel/electron4/files/patch-gpu_ipc_service_gpu__memory__buffer__factory.cc
new file mode 100644
index 000000000000..e647902f5efc
--- /dev/null
+++ b/devel/electron4/files/patch-gpu_ipc_service_gpu__memory__buffer__factory.cc
@@ -0,0 +1,20 @@
+--- gpu/ipc/service/gpu_memory_buffer_factory.cc.orig 2019-03-15 06:25:45 UTC
++++ gpu/ipc/service/gpu_memory_buffer_factory.cc
+@@ -12,7 +12,7 @@
+ #include "gpu/ipc/service/gpu_memory_buffer_factory_io_surface.h"
+ #endif
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include "gpu/ipc/service/gpu_memory_buffer_factory_native_pixmap.h"
+ #endif
+
+@@ -33,7 +33,7 @@ GpuMemoryBufferFactory::CreateNativeType() {
+ return base::WrapUnique(new GpuMemoryBufferFactoryIOSurface);
+ #elif defined(OS_ANDROID)
+ return base::WrapUnique(new GpuMemoryBufferFactoryAndroidHardwareBuffer);
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ return base::WrapUnique(new GpuMemoryBufferFactoryNativePixmap);
+ #elif defined(OS_WIN)
+ return base::WrapUnique(new GpuMemoryBufferFactoryDXGI);
diff --git a/devel/electron4/files/patch-headless_lib_browser_headless__content__browser__client.cc b/devel/electron4/files/patch-headless_lib_browser_headless__content__browser__client.cc
new file mode 100644
index 000000000000..3d3632b1e2c6
--- /dev/null
+++ b/devel/electron4/files/patch-headless_lib_browser_headless__content__browser__client.cc
@@ -0,0 +1,20 @@
+--- headless/lib/browser/headless_content_browser_client.cc.orig 2019-03-15 06:37:24 UTC
++++ headless/lib/browser/headless_content_browser_client.cc
+@@ -205,7 +205,7 @@ void HeadlessContentBrowserClient::GetQuotaSettings(
+ partition->GetPath(), context->IsOffTheRecord(), std::move(callback));
+ }
+
+-#if defined(OS_POSIX) && !defined(OS_MACOSX)
++#if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_BSD)
+ void HeadlessContentBrowserClient::GetAdditionalMappedFilesForChildProcess(
+ const base::CommandLine& command_line,
+ int child_process_id,
+@@ -216,7 +216,7 @@ void HeadlessContentBrowserClient::GetAdditionalMapped
+ mappings->Share(service_manager::kCrashDumpSignal, crash_signal_fd);
+ #endif // defined(HEADLESS_USE_BREAKPAD)
+ }
+-#endif // defined(OS_POSIX) && !defined(OS_MACOSX)
++#endif // defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_BSD)
+
+ void HeadlessContentBrowserClient::AppendExtraCommandLineSwitches(
+ base::CommandLine* command_line,
diff --git a/devel/electron4/files/patch-headless_lib_browser_headless__content__browser__client.h b/devel/electron4/files/patch-headless_lib_browser_headless__content__browser__client.h
new file mode 100644
index 000000000000..16bab148f46b
--- /dev/null
+++ b/devel/electron4/files/patch-headless_lib_browser_headless__content__browser__client.h
@@ -0,0 +1,11 @@
+--- headless/lib/browser/headless_content_browser_client.h.orig 2019-03-15 06:37:24 UTC
++++ headless/lib/browser/headless_content_browser_client.h
+@@ -32,7 +32,7 @@ class HeadlessContentBrowserClient : public content::C
+ content::BrowserContext* context,
+ content::StoragePartition* partition,
+ storage::OptionalQuotaSettingsCallback callback) override;
+-#if defined(OS_POSIX) && !defined(OS_MACOSX)
++#if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_BSD)
+ void GetAdditionalMappedFilesForChildProcess(
+ const base::CommandLine& command_line,
+ int child_process_id,
diff --git a/devel/electron4/files/patch-headless_lib_headless__macros.h b/devel/electron4/files/patch-headless_lib_headless__macros.h
new file mode 100644
index 000000000000..3b38b0ab2e88
--- /dev/null
+++ b/devel/electron4/files/patch-headless_lib_headless__macros.h
@@ -0,0 +1,13 @@
+--- headless/lib/headless_macros.h.orig 2019-03-15 06:25:45 UTC
++++ headless/lib/headless_macros.h
+@@ -7,8 +7,8 @@
+
+ #include "build/build_config.h"
+
+-#if defined(OS_POSIX) && !defined(OS_MACOSX)
++#if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_BSD)
+ #define HEADLESS_USE_BREAKPAD
+-#endif // defined(OS_POSIX) && !defined(OS_MACOSX)
++#endif // defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_BSD)
+
+ #endif // HEADLESS_LIB_HEADLESS_MACROS_H_
diff --git a/devel/electron4/files/patch-ipc_ipc__channel.h b/devel/electron4/files/patch-ipc_ipc__channel.h
new file mode 100644
index 000000000000..5fc27a0bcdbe
--- /dev/null
+++ b/devel/electron4/files/patch-ipc_ipc__channel.h
@@ -0,0 +1,11 @@
+--- ipc/ipc_channel.h.orig 2019-03-15 06:37:27 UTC
++++ ipc/ipc_channel.h
+@@ -244,7 +244,7 @@ class COMPONENT_EXPORT(IPC) Channel : public Sender {
+ static std::string GenerateUniqueRandomChannelID();
+ #endif
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Sandboxed processes live in a PID namespace, so when sending the IPC hello
+ // message from client to server we need to send the PID from the global
+ // PID namespace.
diff --git a/devel/electron4/files/patch-ipc_ipc__channel__common.cc b/devel/electron4/files/patch-ipc_ipc__channel__common.cc
new file mode 100644
index 000000000000..f7472986d975
--- /dev/null
+++ b/devel/electron4/files/patch-ipc_ipc__channel__common.cc
@@ -0,0 +1,11 @@
+--- ipc/ipc_channel_common.cc.orig 2019-03-15 06:25:46 UTC
++++ ipc/ipc_channel_common.cc
+@@ -9,7 +9,7 @@
+
+ namespace IPC {
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+
+ namespace {
+ int g_global_pid = 0;
diff --git a/devel/electron4/files/patch-ipc_ipc__channel__mojo.cc b/devel/electron4/files/patch-ipc_ipc__channel__mojo.cc
new file mode 100644
index 000000000000..bc05846fe751
--- /dev/null
+++ b/devel/electron4/files/patch-ipc_ipc__channel__mojo.cc
@@ -0,0 +1,11 @@
+--- ipc/ipc_channel_mojo.cc.orig 2019-03-15 06:37:27 UTC
++++ ipc/ipc_channel_mojo.cc
+@@ -64,7 +64,7 @@ class MojoChannelFactory : public ChannelFactory {
+ };
+
+ base::ProcessId GetSelfPID() {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ if (int global_pid = Channel::GetGlobalPid())
+ return global_pid;
+ #endif // OS_LINUX
diff --git a/devel/electron4/files/patch-ipc_ipc__message__utils.cc b/devel/electron4/files/patch-ipc_ipc__message__utils.cc
new file mode 100644
index 000000000000..162808f7f70f
--- /dev/null
+++ b/devel/electron4/files/patch-ipc_ipc__message__utils.cc
@@ -0,0 +1,11 @@
+--- ipc/ipc_message_utils.cc.orig 2019-03-15 06:37:27 UTC
++++ ipc/ipc_message_utils.cc
+@@ -349,7 +349,7 @@ void ParamTraits<unsigned int>::Log(const param_type&
+ }
+
+ #if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_FUCHSIA) || \
+- (defined(OS_ANDROID) && defined(ARCH_CPU_64_BITS))
++ defined(OS_BSD) || (defined(OS_ANDROID) && defined(ARCH_CPU_64_BITS))
+ void ParamTraits<long>::Log(const param_type& p, std::string* l) {
+ l->append(base::NumberToString(p));
+ }
diff --git a/devel/electron4/files/patch-ipc_ipc__message__utils.h b/devel/electron4/files/patch-ipc_ipc__message__utils.h
new file mode 100644
index 000000000000..9ffa09f142ae
--- /dev/null
+++ b/devel/electron4/files/patch-ipc_ipc__message__utils.h
@@ -0,0 +1,11 @@
+--- ipc/ipc_message_utils.h.orig 2019-03-15 06:37:27 UTC
++++ ipc/ipc_message_utils.h
+@@ -204,7 +204,7 @@ struct ParamTraits<unsigned int> {
+ // Since we want to support Android 32<>64 bit IPC, as long as we don't have
+ // these traits for 32 bit ARM then that'll catch any errors.
+ #if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_FUCHSIA) || \
+- (defined(OS_ANDROID) && defined(ARCH_CPU_64_BITS))
++ defined(OS_BSD) || (defined(OS_ANDROID) && defined(ARCH_CPU_64_BITS))
+ template <>
+ struct ParamTraits<long> {
+ typedef long param_type;
diff --git a/devel/electron4/files/patch-media_BUILD.gn b/devel/electron4/files/patch-media_BUILD.gn
new file mode 100644
index 000000000000..178c37a15f21
--- /dev/null
+++ b/devel/electron4/files/patch-media_BUILD.gn
@@ -0,0 +1,12 @@
+--- media/BUILD.gn.orig 2019-03-15 06:37:27 UTC
++++ media/BUILD.gn
+@@ -58,6 +58,9 @@ config("media_config") {
+ defines += [ "DLOPEN_PULSEAUDIO" ]
+ }
+ }
++ if (use_sndio) {
++ defines += [ "USE_SNDIO" ]
++ }
+ if (use_cras) {
+ defines += [ "USE_CRAS" ]
+ }
diff --git a/devel/electron4/files/patch-media_audio_BUILD.gn b/devel/electron4/files/patch-media_audio_BUILD.gn
new file mode 100644
index 000000000000..8f4616eaeb18
--- /dev/null
+++ b/devel/electron4/files/patch-media_audio_BUILD.gn
@@ -0,0 +1,31 @@
+--- media/audio/BUILD.gn.orig 2019-03-16 09:15:21 UTC
++++ media/audio/BUILD.gn
+@@ -262,9 +262,19 @@ source_set("audio") {
+ deps += [ "//media/base/android:media_jni_headers" ]
+ }
+
+- if (is_linux) {
++ if (is_linux && !use_sndio) {
+ sources += [ "linux/audio_manager_linux.cc" ]
+ }
++ if (use_sndio) {
++ libs += [ "sndio" ]
++ sources += [
++ "openbsd/audio_manager_openbsd.cc",
++ "sndio/sndio_input.cc",
++ "sndio/sndio_input.h",
++ "sndio/sndio_output.cc",
++ "sndio/sndio_output.h"
++ ]
++ }
+
+ if (use_alsa) {
+ libs += [ "asound" ]
+@@ -310,7 +320,6 @@ source_set("audio") {
+ if (link_pulseaudio) {
+ configs += [ ":libpulse" ]
+ } else {
+- libs += [ "dl" ]
+ deps += [ ":pulse_generate_stubs" ]
+ sources += get_target_outputs(":pulse_generate_stubs")
+ }
diff --git a/devel/electron4/files/patch-media_audio_alsa_audio__manager__alsa.cc b/devel/electron4/files/patch-media_audio_alsa_audio__manager__alsa.cc
new file mode 100644
index 000000000000..6f385e736930
--- /dev/null
+++ b/devel/electron4/files/patch-media_audio_alsa_audio__manager__alsa.cc
@@ -0,0 +1,54 @@
+--- media/audio/alsa/audio_manager_alsa.cc.orig 2019-03-15 06:37:27 UTC
++++ media/audio/alsa/audio_manager_alsa.cc
+@@ -93,7 +93,9 @@ void AudioManagerAlsa::GetAlsaAudioDevices(StreamType
+ int card = -1;
+
+ // Loop through the sound cards to get ALSA device hints.
++#ifdef OS_LINUX
+ while (!wrapper_->CardNext(&card) && card >= 0) {
++#endif
+ void** hints = NULL;
+ int error = wrapper_->DeviceNameHint(card, kPcmInterfaceName, &hints);
+ if (!error) {
+@@ -105,7 +107,9 @@ void AudioManagerAlsa::GetAlsaAudioDevices(StreamType
+ DLOG(WARNING) << "GetAlsaAudioDevices: unable to get device hints: "
+ << wrapper_->StrError(error);
+ }
++#ifdef OS_LINUX
+ }
++#endif
+ }
+
+ void AudioManagerAlsa::GetAlsaDevicesInfo(AudioManagerAlsa::StreamType type,
+@@ -188,7 +192,11 @@ bool AudioManagerAlsa::IsAlsaDeviceAvailable(
+ // goes through software conversion if needed (e.g. incompatible
+ // sample rate).
+ // TODO(joi): Should we prefer "hw" instead?
++#ifdef OS_LINUX
+ static const char kDeviceTypeDesired[] = "plughw";
++#else
++ static const char kDeviceTypeDesired[] = "plug";
++#endif
+ return strncmp(kDeviceTypeDesired, device_name,
+ arraysize(kDeviceTypeDesired) - 1) == 0;
+ }
+@@ -210,7 +218,9 @@ bool AudioManagerAlsa::HasAnyAlsaAudioDevice(
+ // Loop through the sound cards.
+ // Don't use snd_device_name_hint(-1,..) since there is a access violation
+ // inside this ALSA API with libasound.so.2.0.0.
++#ifdef OS_LINUX
+ while (!wrapper_->CardNext(&card) && (card >= 0) && !has_device) {
++#endif
+ int error = wrapper_->DeviceNameHint(card, kPcmInterfaceName, &hints);
+ if (!error) {
+ for (void** hint_iter = hints; *hint_iter != NULL; hint_iter++) {
+@@ -234,7 +244,9 @@ bool AudioManagerAlsa::HasAnyAlsaAudioDevice(
+ DLOG(WARNING) << "HasAnyAudioDevice: unable to get device hints: "
+ << wrapper_->StrError(error);
+ }
++#ifdef OS_LINUX
+ }
++#endif
+
+ return has_device;
+ }
diff --git a/devel/electron4/files/patch-media_audio_audio__manager.cc b/devel/electron4/files/patch-media_audio_audio__manager.cc
new file mode 100644
index 000000000000..cef0e18f3fc3
--- /dev/null
+++ b/devel/electron4/files/patch-media_audio_audio__manager.cc
@@ -0,0 +1,29 @@
+--- media/audio/audio_manager.cc.orig 2019-03-15 06:37:27 UTC
++++ media/audio/audio_manager.cc
+@@ -94,7 +94,7 @@ class AudioManagerHelper : public base::PowerObserver
+ }
+ #endif
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ void set_app_name(const std::string& app_name) { app_name_ = app_name; }
+ const std::string& app_name() const { return app_name_; }
+ #endif
+@@ -229,7 +229,7 @@ class AudioManagerHelper : public base::PowerObserver
+ std::unique_ptr<base::win::ScopedCOMInitializer> com_initializer_for_testing_;
+ #endif
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ std::string app_name_;
+ #endif
+
+@@ -311,7 +311,7 @@ void AudioManager::StartHangMonitorIfNeeded(
+ GetHelper()->StartHangTimer(std::move(task_runner));
+ }
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // static
+ void AudioManager::SetGlobalAppName(const std::string& app_name) {
+ GetHelper()->set_app_name(app_name);
diff --git a/devel/electron4/files/patch-media_audio_audio__manager.h b/devel/electron4/files/patch-media_audio_audio__manager.h
new file mode 100644
index 000000000000..97bcaaf04d84
--- /dev/null
+++ b/devel/electron4/files/patch-media_audio_audio__manager.h
@@ -0,0 +1,11 @@
+--- media/audio/audio_manager.h.orig 2019-03-15 06:37:27 UTC
++++ media/audio/audio_manager.h
+@@ -70,7 +70,7 @@ class MEDIA_EXPORT AudioManager {
+ static void StartHangMonitorIfNeeded(
+ scoped_refptr<base::SingleThreadTaskRunner> task_runner);
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Sets the name of the audio source as seen by external apps. Only actually
+ // used with PulseAudio as of this writing.
+ static void SetGlobalAppName(const std::string& app_name);
diff --git a/devel/electron4/files/patch-media_audio_audio__output__proxy__unittest.cc b/devel/electron4/files/patch-media_audio_audio__output__proxy__unittest.cc
new file mode 100644
index 000000000000..08d56b08d925
--- /dev/null
+++ b/devel/electron4/files/patch-media_audio_audio__output__proxy__unittest.cc
@@ -0,0 +1,11 @@
+--- media/audio/audio_output_proxy_unittest.cc.orig 2019-03-15 06:37:27 UTC
++++ media/audio/audio_output_proxy_unittest.cc
+@@ -410,7 +410,7 @@ class AudioOutputProxyTest : public testing::Test {
+ // |stream| is closed at this point. Start() should reopen it again.
+ EXPECT_CALL(manager(), MakeAudioOutputStream(_, _, _))
+ .Times(2)
+- .WillRepeatedly(Return(reinterpret_cast<AudioOutputStream*>(NULL)));
++ .WillRepeatedly(Return(static_cast<AudioOutputStream*>(NULL)));
+
+ EXPECT_CALL(callback_, OnError()).Times(2);
+
diff --git a/devel/electron4/files/patch-media_audio_pulse_pulse.sigs b/devel/electron4/files/patch-media_audio_pulse_pulse.sigs
new file mode 100644
index 000000000000..3d31bd187348
--- /dev/null
+++ b/devel/electron4/files/patch-media_audio_pulse_pulse.sigs
@@ -0,0 +1,143 @@
+gen/media/audio/pulse/pulse_stubs.cc:155:27: error: conflicting types for 'pa_context_get_state'
+extern pa_context_state_t pa_context_get_state(pa_context* c) __attribute__((weak));
+ ^
+../../../../../../../../../../usr/local/include/pulse/context.h:199:20: note: previous declaration is here
+pa_context_state_t pa_context_get_state(const pa_context *c);
+ ^
+gen/media/audio/pulse/pulse_stubs.cc:156:21: error: conflicting types for 'pa_context_get_state'
+pa_context_state_t pa_context_get_state(pa_context* c) {
+ ^
+../../../../../../../../../../usr/local/include/pulse/context.h:199:20: note: previous declaration is here
+pa_context_state_t pa_context_get_state(const pa_context *c);
+ ^
+gen/media/audio/pulse/pulse_stubs.cc:171:29: error: conflicting types for 'pa_operation_get_state'
+extern pa_operation_state_t pa_operation_get_state(pa_operation* o) __attribute__((weak));
+ ^
+../../../../../../../../../../usr/local/include/pulse/operation.h:52:22: note: previous declaration is here
+pa_operation_state_t pa_operation_get_state(const pa_operation *o);
+ ^
+gen/media/audio/pulse/pulse_stubs.cc:172:23: error: conflicting types for 'pa_operation_get_state'
+pa_operation_state_t pa_operation_get_state(pa_operation* o) {
+ ^
+../../../../../../../../../../usr/local/include/pulse/operation.h:52:22: note: previous declaration is here
+pa_operation_state_t pa_operation_get_state(const pa_operation *o);
+ ^
+gen/media/audio/pulse/pulse_stubs.cc:211:17: error: conflicting types for 'pa_stream_get_device_index'
+extern uint32_t pa_stream_get_device_index(pa_stream* s) __attribute__((weak));
+ ^
+../../../../../../../../../../usr/local/include/pulse/stream.h:366:10: note: previous declaration is here
+uint32_t pa_stream_get_device_index(const pa_stream *s);
+ ^
+gen/media/audio/pulse/pulse_stubs.cc:212:11: error: conflicting types for 'pa_stream_get_device_index'
+uint32_t pa_stream_get_device_index(pa_stream* s) {
+ ^
+../../../../../../../../../../usr/local/include/pulse/stream.h:366:10: note: previous declaration is here
+uint32_t pa_stream_get_device_index(const pa_stream *s);
+ ^
+gen/media/audio/pulse/pulse_stubs.cc:219:26: error: conflicting types for 'pa_stream_get_state'
+extern pa_stream_state_t pa_stream_get_state(pa_stream* p) __attribute__((weak));
+ ^
+../../../../../../../../../../usr/local/include/pulse/stream.h:345:19: note: previous declaration is here
+pa_stream_state_t pa_stream_get_state(const pa_stream *p);
+ ^
+gen/media/audio/pulse/pulse_stubs.cc:220:20: error: conflicting types for 'pa_stream_get_state'
+pa_stream_state_t pa_stream_get_state(pa_stream* p) {
+ ^
+../../../../../../../../../../usr/local/include/pulse/stream.h:345:19: note: previous declaration is here
+pa_stream_state_t pa_stream_get_state(const pa_stream *p);
+ ^
+gen/media/audio/pulse/pulse_stubs.cc:235:12: error: conflicting types for 'pa_proplist_contains'
+extern int pa_proplist_contains(pa_proplist* p, const char* key) __attribute__((weak));
+ ^
+../../../../../../../../../../usr/local/include/pulse/proplist.h:390:5: note: previous declaration is here
+int pa_proplist_contains(const pa_proplist *p, const char *key);
+ ^
+gen/media/audio/pulse/pulse_stubs.cc:236:6: error: conflicting types for 'pa_proplist_contains'
+int pa_proplist_contains(pa_proplist* p, const char* key) {
+ ^
+../../../../../../../../../../usr/local/include/pulse/proplist.h:390:5: note: previous declaration is here
+int pa_proplist_contains(const pa_proplist *p, const char *key);
+ ^
+gen/media/audio/pulse/pulse_stubs.cc:243:20: error: conflicting types for 'pa_proplist_gets'
+extern const char* pa_proplist_gets(pa_proplist* p, const char* key) __attribute__((weak));
+ ^
+../../../../../../../../../../usr/local/include/pulse/proplist.h:314:13: note: previous declaration is here
+const char *pa_proplist_gets(const pa_proplist *p, const char *key);
+ ^
+gen/media/audio/pulse/pulse_stubs.cc:244:14: error: conflicting types for 'pa_proplist_gets'
+const char* pa_proplist_gets(pa_proplist* p, const char* key) {
+ ^
+../../../../../../../../../../usr/local/include/pulse/proplist.h:314:13: note: previous declaration is here
+const char *pa_proplist_gets(const pa_proplist *p, const char *key);
+ ^
+gen/media/audio/pulse/pulse_stubs.cc:251:15: error: conflicting types for 'pa_stream_readable_size'
+extern size_t pa_stream_readable_size(pa_stream *p) __attribute__((weak));
+ ^
+../../../../../../../../../../usr/local/include/pulse/stream.h:574:8: note: previous declaration is here
+size_t pa_stream_readable_size(const pa_stream *p);
+ ^
+gen/media/audio/pulse/pulse_stubs.cc:252:9: error: conflicting types for 'pa_stream_readable_size'
+size_t pa_stream_readable_size(pa_stream *p) {
+ ^
+../../../../../../../../../../usr/local/include/pulse/stream.h:574:8: note: previous declaration is here
+size_t pa_stream_readable_size(const pa_stream *p);
+ ^
+gen/media/audio/pulse/pulse_stubs.cc:279:12: error: conflicting types for 'pa_context_errno'
+extern int pa_context_errno(pa_context *c) __attribute__((weak));
+ ^
+../../../../../../../../../../usr/local/include/pulse/context.h:193:5: note: previous declaration is here
+int pa_context_errno(const pa_context *c);
+ ^
+gen/media/audio/pulse/pulse_stubs.cc:280:6: error: conflicting types for 'pa_context_errno'
+int pa_context_errno(pa_context *c) {
+ ^
+../../../../../../../../../../usr/local/include/pulse/context.h:193:5: note: previous declaration is here
+int pa_context_errno(const pa_context *c);
+ ^
+
+--- media/audio/pulse/pulse.sigs.orig 2019-03-19 08:52:48 UTC
++++ media/audio/pulse/pulse.sigs
+@@ -24,11 +24,11 @@ pa_operation* pa_context_get_source_info_by_index(pa_c
+ pa_operation* pa_context_get_source_info_by_name(pa_context* c, const char* name, pa_source_info_cb_t cb, void *userdata);
+ pa_operation* pa_context_get_source_info_list(pa_context* c, pa_source_info_cb_t cb, void* userdata);
+ pa_operation* pa_context_get_sink_info_list(pa_context* c, pa_sink_info_cb_t cb, void* userdata);
+-pa_context_state_t pa_context_get_state(pa_context* c);
++pa_context_state_t pa_context_get_state(const pa_context *c);
+ pa_context* pa_context_new(pa_mainloop_api* mainloop, const char* name);
+ pa_operation* pa_context_set_source_volume_by_index(pa_context* c, uint32_t idx, const pa_cvolume* volume, pa_context_success_cb_t cb, void* userdata);
+ void pa_context_set_state_callback(pa_context* c, pa_context_notify_cb_t cb, void* userdata);
+-pa_operation_state_t pa_operation_get_state(pa_operation* o);
++pa_operation_state_t pa_operation_get_state(const pa_operation* o);
+ void pa_context_unref(pa_context* c);
+ void pa_operation_unref(pa_operation* o);
+ int pa_stream_begin_write(pa_stream* p, void** data, size_t* nbytes);
+@@ -38,23 +38,23 @@ pa_operation* pa_stream_cork(pa_stream* s, int b, pa_s
+ int pa_stream_disconnect(pa_stream* s);
+ int pa_stream_drop(pa_stream *p);
+ pa_operation* pa_stream_flush(pa_stream* s, pa_stream_success_cb_t cb, void* userdata);
+-uint32_t pa_stream_get_device_index(pa_stream* s);
++uint32_t pa_stream_get_device_index(const pa_stream* s);
+ int pa_stream_get_latency(pa_stream* s, pa_usec_t* r_usec, int* negative);
+-pa_stream_state_t pa_stream_get_state(pa_stream* p);
++pa_stream_state_t pa_stream_get_state(const pa_stream* p);
+ pa_stream* pa_stream_new(pa_context* c, const char* name, const pa_sample_spec* ss, const pa_channel_map * map);
+ pa_stream* pa_stream_new_with_proplist(pa_context* c, const char* name, const pa_sample_spec* ss, const pa_channel_map* map, pa_proplist* p);
+ pa_proplist* pa_proplist_new(void);
+-int pa_proplist_contains(pa_proplist* p, const char* key);
++int pa_proplist_contains(const pa_proplist* p, const char* key);
+ void pa_proplist_free(pa_proplist* p);
+-const char* pa_proplist_gets(pa_proplist* p, const char* key);
++const char* pa_proplist_gets(const pa_proplist* p, const char* key);
+ int pa_proplist_sets(pa_proplist* p, const char* key, const char* value);
+-size_t pa_stream_readable_size(pa_stream *p);
++size_t pa_stream_readable_size(const pa_stream *p);
+ int pa_stream_peek(pa_stream* p, const void** data, size_t* nbytes);
+ void pa_stream_set_read_callback(pa_stream* p, pa_stream_request_cb_t cb, void* userdata);
+ void pa_stream_set_state_callback(pa_stream* s, pa_stream_notify_cb_t cb, void* userdata);
+ int pa_stream_write(pa_stream* p, const void* data, size_t nbytes, pa_free_cb_t free_cb, int64_t offset, pa_seek_mode_t seek);
+ void pa_stream_set_write_callback(pa_stream *p, pa_stream_request_cb_t cb, void *userdata);
+ void pa_stream_unref(pa_stream* s);
+-int pa_context_errno(pa_context *c);
++int pa_context_errno(const pa_context *c);
+ const char* pa_strerror(int error);
+ pa_cvolume* pa_cvolume_set(pa_cvolume* a, unsigned channels, pa_volume_t v);
diff --git a/devel/electron4/files/patch-media_base_audio__latency.cc b/devel/electron4/files/patch-media_base_audio__latency.cc
new file mode 100644
index 000000000000..ad03178a688d
--- /dev/null
+++ b/devel/electron4/files/patch-media_base_audio__latency.cc
@@ -0,0 +1,11 @@
+--- media/base/audio_latency.cc.orig 2019-03-15 06:37:27 UTC
++++ media/base/audio_latency.cc
+@@ -106,7 +106,7 @@ int AudioLatency::GetRtcBufferSize(int sample_rate, in
+ return frames_per_buffer;
+ }
+
+-#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_FUCHSIA)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_FUCHSIA) || defined(OS_BSD)
+ // On Linux, MacOS and Fuchsia, the low level IO implementations on the
+ // browser side supports all buffer size the clients want. We use the native
+ // peer connection buffer size (10ms) to achieve best possible performance.
diff --git a/devel/electron4/files/patch-media_base_scopedfd__helper.h b/devel/electron4/files/patch-media_base_scopedfd__helper.h
new file mode 100644
index 000000000000..572bdac61a67
--- /dev/null
+++ b/devel/electron4/files/patch-media_base_scopedfd__helper.h
@@ -0,0 +1,19 @@
+--- media/base/scopedfd_helper.h.orig 2019-03-15 06:25:46 UTC
++++ media/base/scopedfd_helper.h
+@@ -14,14 +14,14 @@ namespace media {
+ // since the only current user is V4L2 we are limiting the scope to OS_LINUX so
+ // the binary size does not inflate on non-using systems. Feel free to adapt
+ // this and BUILD.gn as our needs evolve.
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+
+ // Return a new vector containing duplicates of |fds|, or an empty vector in
+ // case of error.
+ MEDIA_EXPORT std::vector<base::ScopedFD> DuplicateFDs(
+ const std::vector<base::ScopedFD>& fds);
+
+-#endif // OS_LINUX
++#endif // OS_LINUX || OS_BSD
+
+ } // namespace media
+
diff --git a/devel/electron4/files/patch-media_base_video__frame.cc b/devel/electron4/files/patch-media_base_video__frame.cc
new file mode 100644
index 000000000000..d5e12a46ab7a
--- /dev/null
+++ b/devel/electron4/files/patch-media_base_video__frame.cc
@@ -0,0 +1,47 @@
+--- media/base/video_frame.cc.orig 2019-03-15 06:37:27 UTC
++++ media/base/video_frame.cc
+@@ -64,7 +64,7 @@ static std::string StorageTypeToString(
+ return "OWNED_MEMORY";
+ case VideoFrame::STORAGE_SHMEM:
+ return "SHMEM";
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ case VideoFrame::STORAGE_DMABUFS:
+ return "DMABUFS";
+ #endif
+@@ -80,7 +80,7 @@ static std::string StorageTypeToString(
+ // static
+ static bool IsStorageTypeMappable(VideoFrame::StorageType storage_type) {
+ return
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // This is not strictly needed but makes explicit that, at VideoFrame
+ // level, DmaBufs are not mappable from userspace.
+ storage_type != VideoFrame::STORAGE_DMABUFS &&
+@@ -367,7 +367,7 @@ scoped_refptr<VideoFrame> VideoFrame::WrapExternalYuva
+ return frame;
+ }
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // static
+ scoped_refptr<VideoFrame> VideoFrame::WrapExternalDmabufs(
+ VideoPixelFormat format,
+@@ -488,7 +488,7 @@ scoped_refptr<VideoFrame> VideoFrame::WrapVideoFrame(
+ wrapping_frame->data_[i] = frame->data(i);
+ }
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // If there are any |dmabuf_fds_| plugged in, we should duplicate them.
+ if (frame->storage_type() == STORAGE_DMABUFS) {
+ wrapping_frame->dmabuf_fds_ = DuplicateFDs(frame->dmabuf_fds_);
+@@ -860,7 +860,7 @@ size_t VideoFrame::shared_memory_offset() const {
+ return shared_memory_offset_;
+ }
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ std::vector<int> VideoFrame::DmabufFds() const {
+ DCHECK_EQ(storage_type_, STORAGE_DMABUFS);
+ std::vector<int> ret;
diff --git a/devel/electron4/files/patch-media_base_video__frame.h b/devel/electron4/files/patch-media_base_video__frame.h
new file mode 100644
index 000000000000..0e6d3d867fb0
--- /dev/null
+++ b/devel/electron4/files/patch-media_base_video__frame.h
@@ -0,0 +1,38 @@
+--- media/base/video_frame.h.orig 2019-03-15 06:37:27 UTC
++++ media/base/video_frame.h
+@@ -69,7 +69,7 @@ class MEDIA_EXPORT VideoFrame : public base::RefCounte
+ STORAGE_UNOWNED_MEMORY = 2, // External, non owned data pointers.
+ STORAGE_OWNED_MEMORY = 3, // VideoFrame has allocated its own data buffer.
+ STORAGE_SHMEM = 4, // Pixels are backed by Shared Memory.
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // TODO(mcasas): Consider turning this type into STORAGE_NATIVE
+ // based on the idea of using this same enum value for both DMA
+ // buffers on Linux and CVPixelBuffers on Mac (which currently use
+@@ -225,7 +225,7 @@ class MEDIA_EXPORT VideoFrame : public base::RefCounte
+ uint8_t* a_data,
+ base::TimeDelta timestamp);
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Wraps provided dmabufs
+ // (https://www.kernel.org/doc/html/latest/driver-api/dma-buf.html) with a
+ // VideoFrame. The frame will take ownership of |dmabuf_fds|, and will
+@@ -387,7 +387,7 @@ class MEDIA_EXPORT VideoFrame : public base::RefCounte
+ // Returns the offset into the shared memory where the frame data begins.
+ size_t shared_memory_offset() const;
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Return a vector containing the backing DmaBufs for this frame. The number
+ // of returned DmaBufs will be equal or less than the number of planes of
+ // the frame. If there are less, this means that the last FD contains the
+@@ -606,7 +606,7 @@ class MEDIA_EXPORT VideoFrame : public base::RefCounte
+ // memory.
+ size_t shared_memory_offset_;
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Dmabufs for the frame, used when storage is STORAGE_DMABUFS. Size is either
+ // equal or less than the number of planes of the frame. If it is less, then
+ // the memory area represented by the last FD contains the remaining planes.
diff --git a/devel/electron4/files/patch-media_capture_video_create__video__capture__device__factory.cc b/devel/electron4/files/patch-media_capture_video_create__video__capture__device__factory.cc
new file mode 100644
index 000000000000..ae34c228f9d4
--- /dev/null
+++ b/devel/electron4/files/patch-media_capture_video_create__video__capture__device__factory.cc
@@ -0,0 +1,20 @@
+--- media/capture/video/create_video_capture_device_factory.cc.orig 2019-03-15 06:37:27 UTC
++++ media/capture/video/create_video_capture_device_factory.cc
+@@ -10,7 +10,7 @@
+ #include "media/capture/video/fake_video_capture_device_factory.h"
+ #include "media/capture/video/file_video_capture_device_factory.h"
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ #include "media/capture/video/linux/video_capture_device_factory_linux.h"
+ #elif defined(OS_CHROMEOS)
+ #include "media/capture/video/chromeos/public/cros_features.h"
+@@ -31,7 +31,7 @@ namespace {
+ std::unique_ptr<VideoCaptureDeviceFactory>
+ CreatePlatformSpecificVideoCaptureDeviceFactory(
+ scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner) {
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ return std::make_unique<VideoCaptureDeviceFactoryLinux>(ui_task_runner);
+ #elif defined(OS_CHROMEOS)
+ // On Chrome OS we have to support two use cases:
diff --git a/devel/electron4/files/patch-media_capture_video_fake__video__capture__device__factory.cc b/devel/electron4/files/patch-media_capture_video_fake__video__capture__device__factory.cc
new file mode 100644
index 000000000000..3da701b7b4c4
--- /dev/null
+++ b/devel/electron4/files/patch-media_capture_video_fake__video__capture__device__factory.cc
@@ -0,0 +1,11 @@
+--- media/capture/video/fake_video_capture_device_factory.cc.orig 2019-03-15 06:37:27 UTC
++++ media/capture/video/fake_video_capture_device_factory.cc
+@@ -200,7 +200,7 @@ void FakeVideoCaptureDeviceFactory::GetDeviceDescripto
+ for (const auto& entry : devices_config_) {
+ device_descriptors->emplace_back(
+ base::StringPrintf("fake_device_%d", entry_index), entry.device_id,
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ VideoCaptureApi::LINUX_V4L2_SINGLE_PLANE
+ #elif defined(OS_MACOSX)
+ VideoCaptureApi::MACOSX_AVFOUNDATION
diff --git a/devel/electron4/files/patch-media_capture_video_file__video__capture__device__factory.cc b/devel/electron4/files/patch-media_capture_video_file__video__capture__device__factory.cc
new file mode 100644
index 000000000000..ce193c4482a9
--- /dev/null
+++ b/devel/electron4/files/patch-media_capture_video_file__video__capture__device__factory.cc
@@ -0,0 +1,11 @@
+--- media/capture/video/file_video_capture_device_factory.cc.orig 2019-03-15 06:37:27 UTC
++++ media/capture/video/file_video_capture_device_factory.cc
+@@ -53,7 +53,7 @@ void FileVideoCaptureDeviceFactory::GetDeviceDescripto
+ #elif defined(OS_MACOSX)
+ command_line_file_path.value(), kFileVideoCaptureDeviceName,
+ VideoCaptureApi::MACOSX_AVFOUNDATION
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ command_line_file_path.value(), kFileVideoCaptureDeviceName,
+ VideoCaptureApi::LINUX_V4L2_SINGLE_PLANE
+ #else
diff --git a/devel/electron4/files/patch-media_capture_video_linux_v4l2__capture__delegate.cc b/devel/electron4/files/patch-media_capture_video_linux_v4l2__capture__delegate.cc
new file mode 100644
index 000000000000..c08711a0da21
--- /dev/null
+++ b/devel/electron4/files/patch-media_capture_video_linux_v4l2__capture__delegate.cc
@@ -0,0 +1,26 @@
+--- media/capture/video/linux/v4l2_capture_delegate.cc.orig 2019-03-15 06:37:27 UTC
++++ media/capture/video/linux/v4l2_capture_delegate.cc
+@@ -4,8 +4,10 @@
+
+ #include "media/capture/video/linux/v4l2_capture_delegate.h"
+
++#if !defined(OS_BSD)
+ #include <linux/version.h>
+ #include <linux/videodev2.h>
++#endif
+ #include <poll.h>
+ #include <sys/fcntl.h>
+ #include <sys/ioctl.h>
+@@ -23,10 +25,10 @@
+
+ using media::mojom::MeteringMode;
+
+-#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 6, 0)
++// #if LINUX_VERSION_CODE < KERNEL_VERSION(4, 6, 0)
+ // 16 bit depth, Realsense F200.
+ #define V4L2_PIX_FMT_Z16 v4l2_fourcc('Z', '1', '6', ' ')
+-#endif
++// #endif
+
+ // TODO(aleksandar.stojiljkovic): Wrap this with kernel version check once the
+ // format is introduced to kernel.
diff --git a/devel/electron4/files/patch-media_capture_video_linux_video__capture__device__factory__linux.cc b/devel/electron4/files/patch-media_capture_video_linux_video__capture__device__factory__linux.cc
new file mode 100644
index 000000000000..82dad4046dec
--- /dev/null
+++ b/devel/electron4/files/patch-media_capture_video_linux_video__capture__device__factory__linux.cc
@@ -0,0 +1,32 @@
+--- media/capture/video/linux/video_capture_device_factory_linux.cc.orig 2019-03-15 06:37:27 UTC
++++ media/capture/video/linux/video_capture_device_factory_linux.cc
+@@ -253,6 +253,7 @@ bool VideoCaptureDeviceFactoryLinux::HasUsableFormats(
+ if (!(capabilities & V4L2_CAP_VIDEO_CAPTURE))
+ return false;
+
++#if !defined(OS_BSD)
+ const std::list<uint32_t>& usable_fourccs =
+ VideoCaptureDeviceLinux::GetListOfUsableFourCCs(false);
+ v4l2_fmtdesc fmtdesc = {};
+@@ -264,6 +265,7 @@ bool VideoCaptureDeviceFactoryLinux::HasUsableFormats(
+ return true;
+ }
+ }
++#endif
+
+ DLOG(ERROR) << "No usable formats found";
+ return false;
+@@ -311,9 +313,13 @@ void VideoCaptureDeviceFactoryLinux::GetSupportedForma
+ for (; HANDLE_EINTR(v4l2_->ioctl(fd, VIDIOC_ENUM_FMT, &v4l2_format)) == 0;
+ ++v4l2_format.index) {
+ VideoCaptureFormat supported_format;
++#if !defined(OS_FREEBSD)
+ supported_format.pixel_format =
+ VideoCaptureDeviceLinux::V4l2FourCcToChromiumPixelFormat(
+ v4l2_format.pixelformat);
++#else
++ supported_format.pixel_format = PIXEL_FORMAT_UNKNOWN;
++#endif
+
+ if (supported_format.pixel_format == PIXEL_FORMAT_UNKNOWN)
+ continue;
diff --git a/devel/electron4/files/patch-media_capture_video_linux_video__capture__device__linux.cc b/devel/electron4/files/patch-media_capture_video_linux_video__capture__device__linux.cc
new file mode 100644
index 000000000000..36312c3f962a
--- /dev/null
+++ b/devel/electron4/files/patch-media_capture_video_linux_video__capture__device__linux.cc
@@ -0,0 +1,60 @@
+--- media/capture/video/linux/video_capture_device_linux.cc.orig 2019-03-15 06:37:27 UTC
++++ media/capture/video/linux/video_capture_device_linux.cc
+@@ -22,6 +22,7 @@
+
+ namespace media {
+
++#if !defined(OS_FREEBSD)
+ // Translates Video4Linux pixel formats to Chromium pixel formats.
+ // static
+ VideoPixelFormat VideoCaptureDeviceLinux::V4l2FourCcToChromiumPixelFormat(
+@@ -35,6 +36,7 @@ std::list<uint32_t> VideoCaptureDeviceLinux::GetListOf
+ bool favour_mjpeg) {
+ return V4L2CaptureDelegate::GetListOfUsableFourCcs(favour_mjpeg);
+ }
++#endif // !defined(OS_FREEBSD)
+
+ VideoCaptureDeviceLinux::VideoCaptureDeviceLinux(
+ scoped_refptr<V4L2CaptureDevice> v4l2,
+@@ -53,6 +55,7 @@ VideoCaptureDeviceLinux::~VideoCaptureDeviceLinux() {
+ void VideoCaptureDeviceLinux::AllocateAndStart(
+ const VideoCaptureParams& params,
+ std::unique_ptr<VideoCaptureDevice::Client> client) {
++#if !defined(OS_FREEBSD)
+ DCHECK(!capture_impl_);
+ if (v4l2_thread_.IsRunning())
+ return; // Wrong state.
+@@ -78,9 +81,11 @@ void VideoCaptureDeviceLinux::AllocateAndStart(
+ for (const auto& request : photo_requests_queue_)
+ v4l2_thread_.task_runner()->PostTask(FROM_HERE, request);
+ photo_requests_queue_.clear();
++#endif // !defined(OS_FREEBSD)
+ }
+
+ void VideoCaptureDeviceLinux::StopAndDeAllocate() {
++#if !defined(OS_FREEBSD)
+ if (!v4l2_thread_.IsRunning())
+ return; // Wrong state.
+ v4l2_thread_.task_runner()->PostTask(
+@@ -90,6 +95,7 @@ void VideoCaptureDeviceLinux::StopAndDeAllocate() {
+ v4l2_thread_.Stop();
+
+ capture_impl_ = nullptr;
++#endif // !defined(OS_FREEBSD)
+ }
+
+ void VideoCaptureDeviceLinux::TakePhoto(TakePhotoCallback callback) {
+@@ -132,11 +138,13 @@ void VideoCaptureDeviceLinux::SetPhotoOptions(
+ }
+
+ void VideoCaptureDeviceLinux::SetRotation(int rotation) {
++#if !defined(OS_BSD)
+ if (v4l2_thread_.IsRunning()) {
+ v4l2_thread_.task_runner()->PostTask(
+ FROM_HERE, base::Bind(&V4L2CaptureDelegate::SetRotation,
+ capture_impl_->GetWeakPtr(), rotation));
+ }
++#endif
+ }
+
+ // static
diff --git a/devel/electron4/files/patch-media_capture_video_video__capture__device__client.cc b/devel/electron4/files/patch-media_capture_video_video__capture__device__client.cc
new file mode 100644
index 000000000000..3b4ffd12d553
--- /dev/null
+++ b/devel/electron4/files/patch-media_capture_video_video__capture__device__client.cc
@@ -0,0 +1,11 @@
+--- media/capture/video/video_capture_device_client.cc.orig 2019-03-15 06:37:27 UTC
++++ media/capture/video/video_capture_device_client.cc
+@@ -238,7 +238,7 @@ void VideoCaptureDeviceClient::OnIncomingCapturedData(
+ // see http://linuxtv.org/downloads/v4l-dvb-apis/packed-rgb.html.
+ // Windows RGB24 defines blue at lowest byte,
+ // see https://msdn.microsoft.com/en-us/library/windows/desktop/dd407253
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ origin_colorspace = libyuv::FOURCC_RAW;
+ #elif defined(OS_WIN)
+ origin_colorspace = libyuv::FOURCC_24BG;
diff --git a/devel/electron4/files/patch-media_filters_vp9__parser.h b/devel/electron4/files/patch-media_filters_vp9__parser.h
new file mode 100644
index 000000000000..e3284c9e7e4e
--- /dev/null
+++ b/devel/electron4/files/patch-media_filters_vp9__parser.h
@@ -0,0 +1,10 @@
+--- media/filters/vp9_parser.h.orig 2019-03-15 06:37:27 UTC
++++ media/filters/vp9_parser.h
+@@ -14,6 +14,7 @@
+
+ #include <stddef.h>
+ #include <stdint.h>
++#include <unistd.h>
+ #include <sys/types.h>
+
+ #include <memory>
diff --git a/devel/electron4/files/patch-media_formats_common_offset__byte__queue.cc b/devel/electron4/files/patch-media_formats_common_offset__byte__queue.cc
new file mode 100644
index 000000000000..68b778cceb57
--- /dev/null
+++ b/devel/electron4/files/patch-media_formats_common_offset__byte__queue.cc
@@ -0,0 +1,20 @@
+--- media/formats/common/offset_byte_queue.cc.orig 2019-03-15 06:25:46 UTC
++++ media/formats/common/offset_byte_queue.cc
+@@ -46,13 +46,13 @@ void OffsetByteQueue::PeekAt(int64_t offset, const uin
+ *size = tail() - offset;
+ }
+
+-bool OffsetByteQueue::Trim(int64_t max_offset) {
+- if (max_offset < head_) return true;
+- if (max_offset > tail()) {
++bool OffsetByteQueue::Trim(int64_t _max_offset) {
++ if (_max_offset < head_) return true;
++ if (_max_offset > tail()) {
+ Pop(size_);
+ return false;
+ }
+- Pop(max_offset - head_);
++ Pop(_max_offset - head_);
+ return true;
+ }
+
diff --git a/devel/electron4/files/patch-media_formats_common_offset__byte__queue.h b/devel/electron4/files/patch-media_formats_common_offset__byte__queue.h
new file mode 100644
index 000000000000..1e4451e8bd12
--- /dev/null
+++ b/devel/electron4/files/patch-media_formats_common_offset__byte__queue.h
@@ -0,0 +1,22 @@
+--- media/formats/common/offset_byte_queue.h.orig 2019-03-15 06:25:46 UTC
++++ media/formats/common/offset_byte_queue.h
+@@ -36,15 +36,15 @@ class MEDIA_EXPORT OffsetByteQueue {
+ // a null |buf| and a |size| of zero.
+ void PeekAt(int64_t offset, const uint8_t** buf, int* size);
+
+- // Marks the bytes up to (but not including) |max_offset| as ready for
++ // Marks the bytes up to (but not including) |_max_offset| as ready for
+ // deletion. This is relatively inexpensive, but will not necessarily reduce
+ // the resident buffer size right away (or ever).
+ //
+ // Returns true if the full range of bytes were successfully trimmed,
+- // including the case where |max_offset| is less than the current head.
+- // Returns false if |max_offset| > tail() (although all bytes currently
++ // including the case where |_max_offset| is less than the current head.
++ // Returns false if |_max_offset| > tail() (although all bytes currently
+ // buffered are still cleared).
+- bool Trim(int64_t max_offset);
++ bool Trim(int64_t _max_offset);
+
+ // The head and tail positions, in terms of the file's absolute offsets.
+ // tail() is an exclusive bound.
diff --git a/devel/electron4/files/patch-media_formats_mp2t_es__parser__adts.cc b/devel/electron4/files/patch-media_formats_mp2t_es__parser__adts.cc
new file mode 100644
index 000000000000..e30d14eafbf9
--- /dev/null
+++ b/devel/electron4/files/patch-media_formats_mp2t_es__parser__adts.cc
@@ -0,0 +1,26 @@
+--- media/formats/mp2t/es_parser_adts.cc.orig 2019-03-15 06:37:27 UTC
++++ media/formats/mp2t/es_parser_adts.cc
+@@ -63,11 +63,11 @@ bool EsParserAdts::LookForAdtsFrame(AdtsFrame* adts_fr
+ const uint8_t* es;
+ es_queue_->Peek(&es, &es_size);
+
+- int max_offset = es_size - kADTSHeaderMinSize;
+- if (max_offset <= 0)
++ int _max_offset = es_size - kADTSHeaderMinSize;
++ if (_max_offset <= 0)
+ return false;
+
+- for (int offset = 0; offset < max_offset; offset++) {
++ for (int offset = 0; offset < _max_offset; offset++) {
+ const uint8_t* cur_buf = &es[offset];
+ if (!isAdtsSyncWord(cur_buf))
+ continue;
+@@ -107,7 +107,7 @@ bool EsParserAdts::LookForAdtsFrame(AdtsFrame* adts_fr
+ return true;
+ }
+
+- es_queue_->Pop(max_offset);
++ es_queue_->Pop(_max_offset);
+ return false;
+ }
+
diff --git a/devel/electron4/files/patch-media_formats_mp2t_es__parser__mpeg1audio.cc b/devel/electron4/files/patch-media_formats_mp2t_es__parser__mpeg1audio.cc
new file mode 100644
index 000000000000..eb089c53752f
--- /dev/null
+++ b/devel/electron4/files/patch-media_formats_mp2t_es__parser__mpeg1audio.cc
@@ -0,0 +1,26 @@
+--- media/formats/mp2t/es_parser_mpeg1audio.cc.orig 2019-03-15 06:25:46 UTC
++++ media/formats/mp2t/es_parser_mpeg1audio.cc
+@@ -108,11 +108,11 @@ bool EsParserMpeg1Audio::LookForMpeg1AudioFrame(
+ const uint8_t* es;
+ es_queue_->Peek(&es, &es_size);
+
+- int max_offset = es_size - MPEG1AudioStreamParser::kHeaderSize;
+- if (max_offset <= 0)
++ int _max_offset = es_size - MPEG1AudioStreamParser::kHeaderSize;
++ if (_max_offset <= 0)
+ return false;
+
+- for (int offset = 0; offset < max_offset; offset++) {
++ for (int offset = 0; offset < _max_offset; offset++) {
+ const uint8_t* cur_buf = &es[offset];
+ if (cur_buf[0] != 0xff)
+ continue;
+@@ -153,7 +153,7 @@ bool EsParserMpeg1Audio::LookForMpeg1AudioFrame(
+ return true;
+ }
+
+- es_queue_->Pop(max_offset);
++ es_queue_->Pop(_max_offset);
+ return false;
+ }
+
diff --git a/devel/electron4/files/patch-media_media__options.gni b/devel/electron4/files/patch-media_media__options.gni
new file mode 100644
index 000000000000..97a12684127d
--- /dev/null
+++ b/devel/electron4/files/patch-media_media__options.gni
@@ -0,0 +1,12 @@
+--- media/media_options.gni.orig 2019-03-15 06:37:28 UTC
++++ media/media_options.gni
+@@ -95,6 +95,9 @@ declare_args() {
+ # Enables runtime selection of ALSA library for audio.
+ use_alsa = false
+
++ # Enable runtime selection of sndio(7)
++ use_sndio = false
++
+ # Alsa should be used on non-Android, non-Mac POSIX systems.
+ # Alsa should be used on desktop Chromecast and audio-only Chromecast builds.
+ if (is_posix && !is_android && !is_mac &&
diff --git a/devel/electron4/files/patch-mojo_core_options__validation__unittest.cc b/devel/electron4/files/patch-mojo_core_options__validation__unittest.cc
new file mode 100644
index 000000000000..a28f47fe5d0b
--- /dev/null
+++ b/devel/electron4/files/patch-mojo_core_options__validation__unittest.cc
@@ -0,0 +1,11 @@
+--- mojo/core/options_validation_unittest.cc.orig 2019-03-19 09:06:10 UTC
++++ mojo/core/options_validation_unittest.cc
+@@ -18,7 +18,7 @@ namespace {
+
+ using TestOptionsFlags = uint32_t;
+
+-static_assert(MOJO_ALIGNOF(int64_t) == 8, "int64_t has weird alignment");
++static_assert(MOJO_ALIGNOF(int64_t) <= 8, "int64_t has weird alignment");
+ struct MOJO_ALIGNAS(8) TestOptions {
+ uint32_t struct_size;
+ TestOptionsFlags flags;
diff --git a/devel/electron4/files/patch-mojo_public_c_system_buffer.h b/devel/electron4/files/patch-mojo_public_c_system_buffer.h
new file mode 100644
index 000000000000..3aa39a171465
--- /dev/null
+++ b/devel/electron4/files/patch-mojo_public_c_system_buffer.h
@@ -0,0 +1,11 @@
+--- mojo/public/c/system/buffer.h.orig 2019-03-19 09:06:10 UTC
++++ mojo/public/c/system/buffer.h
+@@ -30,7 +30,7 @@ struct MOJO_ALIGNAS(8) MojoCreateSharedBufferOptions {
+ // See |MojoCreateSharedBufferFlags|.
+ MojoCreateSharedBufferFlags flags;
+ };
+-MOJO_STATIC_ASSERT(MOJO_ALIGNOF(int64_t) == 8, "int64_t has weird alignment");
++MOJO_STATIC_ASSERT(MOJO_ALIGNOF(int64_t) <= 8, "int64_t has weird alignment");
+ MOJO_STATIC_ASSERT(sizeof(MojoCreateSharedBufferOptions) == 8,
+ "MojoCreateSharedBufferOptions has wrong size");
+
diff --git a/devel/electron4/files/patch-mojo_public_c_system_data__pipe.h b/devel/electron4/files/patch-mojo_public_c_system_data__pipe.h
new file mode 100644
index 000000000000..a4161c37fbb0
--- /dev/null
+++ b/devel/electron4/files/patch-mojo_public_c_system_data__pipe.h
@@ -0,0 +1,11 @@
+--- mojo/public/c/system/data_pipe.h.orig 2019-03-19 09:06:10 UTC
++++ mojo/public/c/system/data_pipe.h
+@@ -40,7 +40,7 @@ struct MOJO_ALIGNAS(8) MojoCreateDataPipeOptions {
+ // system-dependent capacity of at least one element in size.
+ uint32_t capacity_num_bytes;
+ };
+-MOJO_STATIC_ASSERT(MOJO_ALIGNOF(int64_t) == 8, "int64_t has weird alignment");
++MOJO_STATIC_ASSERT(MOJO_ALIGNOF(int64_t) <= 8, "int64_t has weird alignment");
+ MOJO_STATIC_ASSERT(sizeof(MojoCreateDataPipeOptions) == 16,
+ "MojoCreateDataPipeOptions has wrong size");
+
diff --git a/devel/electron4/files/patch-mojo_public_c_system_message__pipe.h b/devel/electron4/files/patch-mojo_public_c_system_message__pipe.h
new file mode 100644
index 000000000000..7c60b8630027
--- /dev/null
+++ b/devel/electron4/files/patch-mojo_public_c_system_message__pipe.h
@@ -0,0 +1,11 @@
+--- mojo/public/c/system/message_pipe.h.orig 2019-03-19 09:06:10 UTC
++++ mojo/public/c/system/message_pipe.h
+@@ -35,7 +35,7 @@ struct MOJO_ALIGNAS(8) MojoCreateMessagePipeOptions {
+ // See |MojoCreateMessagePipeFlags|.
+ MojoCreateMessagePipeFlags flags;
+ };
+-MOJO_STATIC_ASSERT(MOJO_ALIGNOF(int64_t) == 8, "int64_t has weird alignment");
++MOJO_STATIC_ASSERT(MOJO_ALIGNOF(int64_t) <= 8, "int64_t has weird alignment");
+ MOJO_STATIC_ASSERT(sizeof(MojoCreateMessagePipeOptions) == 8,
+ "MojoCreateMessagePipeOptions has wrong size");
+
diff --git a/devel/electron4/files/patch-mojo_public_c_system_thunks.cc b/devel/electron4/files/patch-mojo_public_c_system_thunks.cc
new file mode 100644
index 000000000000..18e6e1243369
--- /dev/null
+++ b/devel/electron4/files/patch-mojo_public_c_system_thunks.cc
@@ -0,0 +1,47 @@
+--- mojo/public/c/system/thunks.cc.orig 2019-03-15 06:37:28 UTC
++++ mojo/public/c/system/thunks.cc
+@@ -16,7 +16,7 @@
+ #include "build/build_config.h"
+ #include "mojo/public/c/system/core.h"
+
+-#if defined(OS_CHROMEOS) || defined(OS_LINUX) || defined(OS_WIN)
++#if defined(OS_CHROMEOS) || defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD)
+ #include "base/environment.h"
+ #include "base/files/file_path.h"
+ #include "base/optional.h"
+@@ -28,7 +28,7 @@ namespace {
+
+ typedef void (*MojoGetSystemThunksFunction)(MojoSystemThunks* thunks);
+
+-#if defined(OS_CHROMEOS) || defined(OS_LINUX) || defined(OS_WIN)
++#if defined(OS_CHROMEOS) || defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD)
+ PROTECTED_MEMORY_SECTION
+ base::ProtectedMemory<MojoGetSystemThunksFunction> g_get_thunks;
+ #endif
+@@ -63,7 +63,7 @@ namespace mojo {
+ class CoreLibraryInitializer {
+ public:
+ CoreLibraryInitializer(const MojoInitializeOptions* options) {
+-#if defined(OS_CHROMEOS) || defined(OS_LINUX) || defined(OS_WIN)
++#if defined(OS_CHROMEOS) || defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD)
+ bool application_provided_path = false;
+ base::Optional<base::FilePath> library_path;
+ if (options && options->struct_size >= sizeof(*options) &&
+@@ -82,7 +82,7 @@ class CoreLibraryInitializer {
+
+ if (!library_path) {
+ // Default to looking for the library in the current working directory.
+-#if defined(OS_CHROMEOS) || defined(OS_LINUX)
++#if defined(OS_CHROMEOS) || defined(OS_LINUX) || defined(OS_BSD)
+ const base::FilePath::CharType kDefaultLibraryPathValue[] =
+ FILE_PATH_LITERAL("./libmojo_core.so");
+ #elif defined(OS_WIN)
+@@ -132,7 +132,7 @@ class CoreLibraryInitializer {
+ ~CoreLibraryInitializer() = default;
+
+ private:
+-#if defined(OS_CHROMEOS) || defined(OS_LINUX) || defined(OS_WIN)
++#if defined(OS_CHROMEOS) || defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD)
+ base::Optional<base::ScopedNativeLibrary> library_;
+ #endif
+
diff --git a/devel/electron4/files/patch-net_BUILD.gn b/devel/electron4/files/patch-net_BUILD.gn
new file mode 100644
index 000000000000..e04bc46d50f4
--- /dev/null
+++ b/devel/electron4/files/patch-net_BUILD.gn
@@ -0,0 +1,29 @@
+--- net/BUILD.gn.orig 2019-03-15 06:37:29 UTC
++++ net/BUILD.gn
+@@ -95,7 +95,7 @@ net_configs = [
+ "//build/config/compiler:wexit_time_destructors",
+ ]
+
+-if (is_linux) {
++if (is_linux && !is_bsd) {
+ net_configs += [ "//build/config/linux:libresolv" ]
+ }
+
+@@ -1904,6 +1904,17 @@ component("net") {
+ ]
+
+ sources -= [ "disk_cache/blockfile/file_posix.cc" ]
++ }
++
++ if (is_bsd) {
++ sources -= [
++ "base/address_tracker_linux.cc",
++ "base/address_tracker_linux.h",
++ "base/network_change_notifier_linux.cc",
++ "base/network_change_notifier_linux.h",
++ "base/network_interfaces_linux.cc",
++ ]
++ sources += [ "base/network_interfaces_freebsd.cc" ]
+ }
+
+ if (is_ios || is_mac) {
diff --git a/devel/electron4/files/patch-net_base_address__tracker__linux.cc b/devel/electron4/files/patch-net_base_address__tracker__linux.cc
new file mode 100644
index 000000000000..24159f1234e9
--- /dev/null
+++ b/devel/electron4/files/patch-net_base_address__tracker__linux.cc
@@ -0,0 +1,259 @@
+--- net/base/address_tracker_linux.cc.orig 2019-03-15 06:37:29 UTC
++++ net/base/address_tracker_linux.cc
+@@ -21,96 +21,10 @@
+ namespace net {
+ namespace internal {
+
+-namespace {
+-
+-// Some kernel functions such as wireless_send_event and rtnetlink_ifinfo_prep
+-// may send spurious messages over rtnetlink. RTM_NEWLINK messages where
+-// ifi_change == 0 and rta_type == IFLA_WIRELESS should be ignored.
+-bool IgnoreWirelessChange(const struct nlmsghdr* header,
+- const struct ifinfomsg* msg) {
+- size_t length = IFLA_PAYLOAD(header);
+- for (const struct rtattr* attr = IFLA_RTA(msg); RTA_OK(attr, length);
+- attr = RTA_NEXT(attr, length)) {
+- if (attr->rta_type == IFLA_WIRELESS && msg->ifi_change == 0)
+- return true;
+- }
+- return false;
+-}
+-
+-// Retrieves address from NETLINK address message.
+-// Sets |really_deprecated| for IPv6 addresses with preferred lifetimes of 0.
+-bool GetAddress(const struct nlmsghdr* header,
+- IPAddress* out,
+- bool* really_deprecated) {
+- if (really_deprecated)
+- *really_deprecated = false;
+- const struct ifaddrmsg* msg =
+- reinterpret_cast<struct ifaddrmsg*>(NLMSG_DATA(header));
+- size_t address_length = 0;
+- switch (msg->ifa_family) {
+- case AF_INET:
+- address_length = IPAddress::kIPv4AddressSize;
+- break;
+- case AF_INET6:
+- address_length = IPAddress::kIPv6AddressSize;
+- break;
+- default:
+- // Unknown family.
+- return false;
+- }
+- // Use IFA_ADDRESS unless IFA_LOCAL is present. This behavior here is based on
+- // getaddrinfo in glibc (check_pf.c). Judging from kernel implementation of
+- // NETLINK, IPv4 addresses have only the IFA_ADDRESS attribute, while IPv6
+- // have the IFA_LOCAL attribute.
+- uint8_t* address = NULL;
+- uint8_t* local = NULL;
+- size_t length = IFA_PAYLOAD(header);
+- for (const struct rtattr* attr =
+- reinterpret_cast<const struct rtattr*>(IFA_RTA(msg));
+- RTA_OK(attr, length);
+- attr = RTA_NEXT(attr, length)) {
+- switch (attr->rta_type) {
+- case IFA_ADDRESS:
+- DCHECK_GE(RTA_PAYLOAD(attr), address_length);
+- address = reinterpret_cast<uint8_t*>(RTA_DATA(attr));
+- break;
+- case IFA_LOCAL:
+- DCHECK_GE(RTA_PAYLOAD(attr), address_length);
+- local = reinterpret_cast<uint8_t*>(RTA_DATA(attr));
+- break;
+- case IFA_CACHEINFO: {
+- const struct ifa_cacheinfo *cache_info =
+- reinterpret_cast<const struct ifa_cacheinfo*>(RTA_DATA(attr));
+- if (really_deprecated)
+- *really_deprecated = (cache_info->ifa_prefered == 0);
+- } break;
+- default:
+- break;
+- }
+- }
+- if (local)
+- address = local;
+- if (!address)
+- return false;
+- *out = IPAddress(address, address_length);
+- return true;
+-}
+-
+-} // namespace
+-
+ // static
+ char* AddressTrackerLinux::GetInterfaceName(int interface_index, char* buf) {
+- memset(buf, 0, IFNAMSIZ);
+- base::ScopedFD ioctl_socket = GetSocketForIoctl();
+- if (!ioctl_socket.is_valid())
+- return buf;
+-
+- struct ifreq ifr = {};
+- ifr.ifr_ifindex = interface_index;
+-
+- if (ioctl(ioctl_socket.get(), SIOCGIFNAME, &ifr) == 0)
+- strncpy(buf, ifr.ifr_name, IFNAMSIZ - 1);
+- return buf;
++ NOTIMPLEMENTED();
++ return NULL;
+ }
+
+ AddressTrackerLinux::AddressTrackerLinux()
+@@ -153,93 +67,8 @@ AddressTrackerLinux::~AddressTrackerLinux() {
+ }
+
+ void AddressTrackerLinux::Init() {
+- netlink_fd_ = socket(AF_NETLINK, SOCK_RAW, NETLINK_ROUTE);
+- if (netlink_fd_ < 0) {
+- PLOG(ERROR) << "Could not create NETLINK socket";
+- AbortAndForceOnline();
+- return;
+- }
+-
+- int rv;
+-
+- if (tracking_) {
+- // Request notifications.
+- struct sockaddr_nl addr = {};
+- addr.nl_family = AF_NETLINK;
+- addr.nl_pid = getpid();
+- // TODO(szym): Track RTMGRP_LINK as well for ifi_type,
+- // http://crbug.com/113993
+- addr.nl_groups =
+- RTMGRP_IPV4_IFADDR | RTMGRP_IPV6_IFADDR | RTMGRP_NOTIFY | RTMGRP_LINK;
+- rv = bind(
+- netlink_fd_, reinterpret_cast<struct sockaddr*>(&addr), sizeof(addr));
+- if (rv < 0) {
+- PLOG(ERROR) << "Could not bind NETLINK socket";
+- AbortAndForceOnline();
+- return;
+- }
+- }
+-
+- // Request dump of addresses.
+- struct sockaddr_nl peer = {};
+- peer.nl_family = AF_NETLINK;
+-
+- struct {
+- struct nlmsghdr header;
+- struct rtgenmsg msg;
+- } request = {};
+-
+- request.header.nlmsg_len = NLMSG_LENGTH(sizeof(request.msg));
+- request.header.nlmsg_type = RTM_GETADDR;
+- request.header.nlmsg_flags = NLM_F_REQUEST | NLM_F_DUMP;
+- request.header.nlmsg_pid = getpid();
+- request.msg.rtgen_family = AF_UNSPEC;
+-
+- rv = HANDLE_EINTR(sendto(netlink_fd_, &request, request.header.nlmsg_len,
+- 0, reinterpret_cast<struct sockaddr*>(&peer),
+- sizeof(peer)));
+- if (rv < 0) {
+- PLOG(ERROR) << "Could not send NETLINK request";
+- AbortAndForceOnline();
+- return;
+- }
+-
+- // Consume pending message to populate the AddressMap, but don't notify.
+- // Sending another request without first reading responses results in EBUSY.
+- bool address_changed;
+- bool link_changed;
+- bool tunnel_changed;
+- ReadMessages(&address_changed, &link_changed, &tunnel_changed);
+-
+- // Request dump of link state
+- request.header.nlmsg_type = RTM_GETLINK;
+-
+- rv = HANDLE_EINTR(sendto(netlink_fd_, &request, request.header.nlmsg_len, 0,
+- reinterpret_cast<struct sockaddr*>(&peer),
+- sizeof(peer)));
+- if (rv < 0) {
+- PLOG(ERROR) << "Could not send NETLINK request";
+- AbortAndForceOnline();
+- return;
+- }
+-
+- // Consume pending message to populate links_online_, but don't notify.
+- ReadMessages(&address_changed, &link_changed, &tunnel_changed);
+- {
+- AddressTrackerAutoLock lock(*this, connection_type_lock_);
+- connection_type_initialized_ = true;
+- connection_type_initialized_cv_.Broadcast();
+- }
+-
+- if (tracking_) {
+- rv = base::MessageLoopCurrentForIO::Get()->WatchFileDescriptor(
+- netlink_fd_, true, base::MessagePumpForIO::WATCH_READ, &watcher_, this);
+- if (rv < 0) {
+- PLOG(ERROR) << "Could not watch NETLINK socket";
+- AbortAndForceOnline();
+- return;
+- }
+- }
++NOTIMPLEMENTED();
++AbortAndForceOnline();
+ }
+
+ void AddressTrackerLinux::AbortAndForceOnline() {
+@@ -250,25 +79,6 @@ void AddressTrackerLinux::AbortAndForceOnline() {
+ connection_type_initialized_cv_.Broadcast();
+ }
+
+-AddressTrackerLinux::AddressMap AddressTrackerLinux::GetAddressMap() const {
+- AddressTrackerAutoLock lock(*this, address_map_lock_);
+- return address_map_;
+-}
+-
+-std::unordered_set<int> AddressTrackerLinux::GetOnlineLinks() const {
+- AddressTrackerAutoLock lock(*this, online_links_lock_);
+- return online_links_;
+-}
+-
+-bool AddressTrackerLinux::IsInterfaceIgnored(int interface_index) const {
+- if (ignored_interfaces_.empty())
+- return false;
+-
+- char buf[IFNAMSIZ] = {0};
+- const char* interface_name = get_interface_name_(interface_index, buf);
+- return ignored_interfaces_.find(interface_name) != ignored_interfaces_.end();
+-}
+-
+ NetworkChangeNotifier::ConnectionType
+ AddressTrackerLinux::GetCurrentConnectionType() {
+ // http://crbug.com/125097
+@@ -323,6 +133,7 @@ void AddressTrackerLinux::HandleMessage(char* buffer,
+ bool* address_changed,
+ bool* link_changed,
+ bool* tunnel_changed) {
++#if !defined(OS_BSD)
+ DCHECK(buffer);
+ for (struct nlmsghdr* header = reinterpret_cast<struct nlmsghdr*>(buffer);
+ NLMSG_OK(header, length);
+@@ -419,6 +230,9 @@ void AddressTrackerLinux::HandleMessage(char* buffer,
+ break;
+ }
+ }
++#else
++ NOTIMPLEMENTED();
++#endif
+ }
+
+ void AddressTrackerLinux::OnFileCanReadWithoutBlocking(int fd) {
+@@ -455,6 +269,7 @@ bool AddressTrackerLinux::IsTunnelInterfaceName(const
+ }
+
+ void AddressTrackerLinux::UpdateCurrentConnectionType() {
++#if !defined(OS_BSD)
+ AddressTrackerLinux::AddressMap address_map = GetAddressMap();
+ std::unordered_set<int> online_links = GetOnlineLinks();
+
+@@ -483,6 +298,9 @@ void AddressTrackerLinux::UpdateCurrentConnectionType(
+
+ AddressTrackerAutoLock lock(*this, connection_type_lock_);
+ current_connection_type_ = type;
++#else
++ NOTIMPLEMENTED();
++#endif
+ }
+
+ int AddressTrackerLinux::GetThreadsWaitingForConnectionTypeInitForTesting()
diff --git a/devel/electron4/files/patch-net_base_address__tracker__linux.h b/devel/electron4/files/patch-net_base_address__tracker__linux.h
new file mode 100644
index 000000000000..4f80a354ba35
--- /dev/null
+++ b/devel/electron4/files/patch-net_base_address__tracker__linux.h
@@ -0,0 +1,12 @@
+--- net/base/address_tracker_linux.h.orig 2019-03-15 06:37:29 UTC
++++ net/base/address_tracker_linux.h
+@@ -7,9 +7,6 @@
+
+ #include <sys/socket.h> // Needed to include netlink.
+ // Mask superfluous definition of |struct net|. This is fixed in Linux 2.6.38.
+-#define net net_kernel
+-#include <linux/rtnetlink.h>
+-#undef net
+ #include <stddef.h>
+
+ #include <map>
diff --git a/devel/electron4/files/patch-net_base_address__tracker__linux__unittest.cc b/devel/electron4/files/patch-net_base_address__tracker__linux__unittest.cc
new file mode 100644
index 000000000000..47dc7694bd17
--- /dev/null
+++ b/devel/electron4/files/patch-net_base_address__tracker__linux__unittest.cc
@@ -0,0 +1,14 @@
+--- net/base/address_tracker_linux_unittest.cc.orig 2019-03-15 06:25:49 UTC
++++ net/base/address_tracker_linux_unittest.cc
+@@ -4,7 +4,11 @@
+
+ #include "net/base/address_tracker_linux.h"
+
++#if defined(__linux__)
+ #include <linux/if.h>
++#else
++#include <net/if.h>
++#endif
+
+ #include <memory>
+ #include <unordered_set>
diff --git a/devel/electron4/files/patch-net_base_network__change__notifier.cc b/devel/electron4/files/patch-net_base_network__change__notifier.cc
new file mode 100644
index 000000000000..5e9c2a40df23
--- /dev/null
+++ b/devel/electron4/files/patch-net_base_network__change__notifier.cc
@@ -0,0 +1,10 @@
+--- net/base/network_change_notifier.cc.orig 2019-03-15 06:37:29 UTC
++++ net/base/network_change_notifier.cc
+@@ -217,7 +217,6 @@ NetworkChangeNotifier* NetworkChangeNotifier::Create()
+ #elif defined(OS_MACOSX)
+ return new NetworkChangeNotifierMac();
+ #else
+- NOTIMPLEMENTED();
+ return NULL;
+ #endif
+ }
diff --git a/devel/electron4/files/patch-net_base_network__interfaces__freebsd.cc b/devel/electron4/files/patch-net_base_network__interfaces__freebsd.cc
new file mode 100644
index 000000000000..15d1229d84ed
--- /dev/null
+++ b/devel/electron4/files/patch-net_base_network__interfaces__freebsd.cc
@@ -0,0 +1,243 @@
+--- net/base/network_interfaces_freebsd.cc.orig 2019-03-16 09:17:06 UTC
++++ net/base/network_interfaces_freebsd.cc
+@@ -0,0 +1,240 @@
++// Copyright (c) 2014 The Chromium Authors. All rights reserved.
++// Use of this source code is governed by a BSD-style license that can be
++// found in the LICENSE file.
++
++#include "net/base/network_interfaces_freebsd.h"
++
++#include <ifaddrs.h>
++#include <net/if.h>
++#include <netinet/in.h>
++#include <sys/types.h>
++#include <net/if_media.h>
++#include <net/if_var.h>
++#include <netinet/in_var.h>
++#include <netinet6/in6_var.h>
++#include <sys/ioctl.h>
++
++#include <memory>
++#include <set>
++
++#include "base/files/file_path.h"
++#include "base/logging.h"
++#include "base/strings/string_number_conversions.h"
++#include "base/strings/string_tokenizer.h"
++#include "base/strings/string_util.h"
++#include "base/threading/thread_restrictions.h"
++#include "net/base/escape.h"
++#include "net/base/ip_endpoint.h"
++#include "net/base/net_errors.h"
++#include "net/base/network_interfaces_posix.h"
++#include "url/gurl.h"
++
++namespace net {
++
++namespace {
++
++// FreeBSD implementation of IPAttributesGetterFreeBSD which calls ioctl on socket to
++// retrieve IP attributes.
++class IPAttributesGetterFreeBSDImpl : public internal::IPAttributesGetterFreeBSD {
++ public:
++ IPAttributesGetterFreeBSDImpl();
++ ~IPAttributesGetterFreeBSDImpl() override;
++ bool IsInitialized() const override;
++ bool GetIPAttributes(const char* ifname,
++ const sockaddr* sock_addr,
++ int* native_attributes) override;
++
++ private:
++ int ioctl_socket_;
++};
++
++IPAttributesGetterFreeBSDImpl::IPAttributesGetterFreeBSDImpl()
++ : ioctl_socket_(socket(AF_INET6, SOCK_DGRAM, 0)) {
++ DCHECK_GE(ioctl_socket_, 0);
++}
++
++bool IPAttributesGetterFreeBSDImpl::IsInitialized() const {
++ return ioctl_socket_ >= 0;
++}
++
++IPAttributesGetterFreeBSDImpl::~IPAttributesGetterFreeBSDImpl() {
++ if (ioctl_socket_ >= 0) {
++ close(ioctl_socket_);
++ }
++}
++
++bool IPAttributesGetterFreeBSDImpl::GetIPAttributes(const char* ifname,
++ const sockaddr* sock_addr,
++ int* native_attributes) {
++ struct in6_ifreq ifr = {};
++ strncpy(ifr.ifr_name, ifname, sizeof(ifr.ifr_name) - 1);
++ memcpy(&ifr.ifr_ifru.ifru_addr, sock_addr, sock_addr->sa_len);
++ int rv = ioctl(ioctl_socket_, SIOCGIFAFLAG_IN6, &ifr);
++ if (rv >= 0) {
++ *native_attributes = ifr.ifr_ifru.ifru_flags;
++ }
++ return (rv >= 0);
++}
++
++// When returning true, the platform native IPv6 address attributes were
++// successfully converted to net IP address attributes. Otherwise, returning
++// false and the caller should drop the IP address which can't be used by the
++// application layer.
++bool TryConvertNativeToNetIPAttributes(int native_attributes,
++ int* net_attributes) {
++ // For FreeBSD, we disallow addresses with attributes IN6_IFF_ANYCASE,
++ // IN6_IFF_DUPLICATED, IN6_IFF_TENTATIVE, and IN6_IFF_DETACHED as these are
++ // still progressing through duplicated address detection (DAD) or are not
++ // suitable to be used in an one-to-one communication and shouldn't be used
++ // by the application layer.
++ if (native_attributes & (IN6_IFF_ANYCAST | IN6_IFF_DUPLICATED |
++ IN6_IFF_TENTATIVE | IN6_IFF_DETACHED)) {
++ return false;
++ }
++
++ if (native_attributes & IN6_IFF_DEPRECATED) {
++ *net_attributes |= IP_ADDRESS_ATTRIBUTE_DEPRECATED;
++ }
++
++ return true;
++}
++
++NetworkChangeNotifier::ConnectionType GetNetworkInterfaceType(
++ int addr_family,
++ const std::string& interface_name) {
++ NetworkChangeNotifier::ConnectionType type =
++ NetworkChangeNotifier::CONNECTION_UNKNOWN;
++
++ struct ifmediareq ifmr = {};
++ strncpy(ifmr.ifm_name, interface_name.c_str(), sizeof(ifmr.ifm_name) - 1);
++
++ int s = socket(addr_family, SOCK_DGRAM, 0);
++ if (s == -1) {
++ return type;
++ }
++
++ if (ioctl(s, SIOCGIFMEDIA, &ifmr) != -1) {
++ if (ifmr.ifm_current & IFM_IEEE80211) {
++ type = NetworkChangeNotifier::CONNECTION_WIFI;
++ } else if (ifmr.ifm_current & IFM_ETHER) {
++ type = NetworkChangeNotifier::CONNECTION_ETHERNET;
++ }
++ }
++ close(s);
++ return type;
++}
++
++} // namespace
++
++namespace internal {
++
++bool GetNetworkListImpl(NetworkInterfaceList* networks,
++ int policy,
++ const ifaddrs* interfaces,
++ IPAttributesGetterFreeBSD* ip_attributes_getter) {
++ // Enumerate the addresses assigned to network interfaces which are up.
++ for (const ifaddrs* interface = interfaces; interface != NULL;
++ interface = interface->ifa_next) {
++ // Skip loopback interfaces, and ones which are down.
++ if (!(IFF_RUNNING & interface->ifa_flags))
++ continue;
++ if (IFF_LOOPBACK & interface->ifa_flags)
++ continue;
++ // Skip interfaces with no address configured.
++ struct sockaddr* addr = interface->ifa_addr;
++ if (!addr)
++ continue;
++
++ // Skip unspecified addresses (i.e. made of zeroes) and loopback addresses
++ // configured on non-loopback interfaces.
++ if (IsLoopbackOrUnspecifiedAddress(addr))
++ continue;
++
++ const std::string& name = interface->ifa_name;
++ // Filter out VMware interfaces, typically named vmnet1 and vmnet8.
++ if (ShouldIgnoreInterface(name, policy)) {
++ continue;
++ }
++
++ NetworkChangeNotifier::ConnectionType connection_type =
++ NetworkChangeNotifier::CONNECTION_UNKNOWN;
++
++ int ip_attributes = IP_ADDRESS_ATTRIBUTE_NONE;
++
++ // Retrieve native ip attributes and convert to net version if a getter is
++ // given.
++ if (ip_attributes_getter && ip_attributes_getter->IsInitialized()) {
++ int native_attributes = 0;
++ if (addr->sa_family == AF_INET6 &&
++ ip_attributes_getter->GetIPAttributes(
++ interface->ifa_name, interface->ifa_addr, &native_attributes)) {
++ if (!TryConvertNativeToNetIPAttributes(native_attributes,
++ &ip_attributes)) {
++ continue;
++ }
++ }
++ }
++
++ connection_type = GetNetworkInterfaceType(addr->sa_family, name);
++
++ IPEndPoint address;
++
++ int addr_size = 0;
++ if (addr->sa_family == AF_INET6) {
++ addr_size = sizeof(sockaddr_in6);
++ } else if (addr->sa_family == AF_INET) {
++ addr_size = sizeof(sockaddr_in);
++ }
++
++ if (address.FromSockAddr(addr, addr_size)) {
++ uint8_t prefix_length = 0;
++ if (interface->ifa_netmask) {
++ // If not otherwise set, assume the same sa_family as ifa_addr.
++ if (interface->ifa_netmask->sa_family == 0) {
++ interface->ifa_netmask->sa_family = addr->sa_family;
++ }
++ IPEndPoint netmask;
++ if (netmask.FromSockAddr(interface->ifa_netmask, addr_size)) {
++ prefix_length = MaskPrefixLength(netmask.address());
++ }
++ }
++ networks->push_back(NetworkInterface(
++ name, name, if_nametoindex(name.c_str()), connection_type,
++ address.address(), prefix_length, ip_attributes));
++ }
++ }
++
++ return true;
++}
++
++} // namespace internal
++
++bool GetNetworkList(NetworkInterfaceList* networks, int policy) {
++ if (networks == NULL)
++ return false;
++
++ // getifaddrs() may require IO operations.
++ base::AssertBlockingAllowed();
++
++ ifaddrs* interfaces;
++ if (getifaddrs(&interfaces) < 0) {
++ PLOG(ERROR) << "getifaddrs";
++ return false;
++ }
++
++ std::unique_ptr<internal::IPAttributesGetterFreeBSD> ip_attributes_getter;
++
++ ip_attributes_getter.reset(new IPAttributesGetterFreeBSDImpl());
++
++ bool result = internal::GetNetworkListImpl(networks, policy, interfaces,
++ ip_attributes_getter.get());
++ freeifaddrs(interfaces);
++ return result;
++}
++
++std::string GetWifiSSID() {
++ NOTIMPLEMENTED();
++ return "";
++}
++
++} // namespace net
diff --git a/devel/electron4/files/patch-net_base_network__interfaces__freebsd.h b/devel/electron4/files/patch-net_base_network__interfaces__freebsd.h
new file mode 100644
index 000000000000..13dd41c9939f
--- /dev/null
+++ b/devel/electron4/files/patch-net_base_network__interfaces__freebsd.h
@@ -0,0 +1,47 @@
+--- net/base/network_interfaces_freebsd.h.orig 2019-03-16 09:17:06 UTC
++++ net/base/network_interfaces_freebsd.h
+@@ -0,0 +1,44 @@
++// Copyright (c) 2014 The Chromium Authors. All rights reserved.
++// Use of this source code is governed by a BSD-style license that can be
++// found in the LICENSE file.
++
++#ifndef NET_BASE_NETWORK_INTERFACES_FREEBSD_H_
++#define NET_BASE_NETWORK_INTERFACES_FREEBSD_H_
++
++// This file is only used to expose some of the internals
++// of network_interfaces_mac.cc to tests.
++
++#include <sys/socket.h>
++
++#include "base/macros.h"
++#include "net/base/net_export.h"
++#include "net/base/network_interfaces.h"
++
++struct ifaddrs;
++struct sockaddr;
++
++namespace net {
++namespace internal {
++
++class NET_EXPORT IPAttributesGetterFreeBSD {
++ public:
++ IPAttributesGetterFreeBSD() {}
++ virtual ~IPAttributesGetterFreeBSD() {}
++ virtual bool IsInitialized() const = 0;
++ virtual bool GetIPAttributes(const char* ifname,
++ const sockaddr* sock_addr,
++ int* native_attributes) = 0;
++
++ private:
++ DISALLOW_COPY_AND_ASSIGN(IPAttributesGetterFreeBSD);
++};
++
++NET_EXPORT bool GetNetworkListImpl(NetworkInterfaceList* networks,
++ int policy,
++ const ifaddrs* interfaces,
++ IPAttributesGetterFreeBSD* ip_attributes_getter);
++
++} // namespace internal
++} // namespace net
++
++#endif // NET_BASE_NETWORK_INTERFACES_FREEBSD_H_
diff --git a/devel/electron4/files/patch-net_base_network__interfaces__posix.h b/devel/electron4/files/patch-net_base_network__interfaces__posix.h
new file mode 100644
index 000000000000..ee53c3184d9c
--- /dev/null
+++ b/devel/electron4/files/patch-net_base_network__interfaces__posix.h
@@ -0,0 +1,11 @@
+--- net/base/network_interfaces_posix.h.orig 2019-03-15 06:25:49 UTC
++++ net/base/network_interfaces_posix.h
+@@ -8,6 +8,8 @@
+ // This file provides some basic functionality shared between
+ // network_interfaces_linux.cc and network_interfaces_getifaddrs.cc.
+
++#include <sys/socket.h>
++
+ #include <string>
+
+ struct sockaddr;
diff --git a/devel/electron4/files/patch-net_disk__cache_blockfile_disk__format.h b/devel/electron4/files/patch-net_disk__cache_blockfile_disk__format.h
new file mode 100644
index 000000000000..64aa3a21344f
--- /dev/null
+++ b/devel/electron4/files/patch-net_disk__cache_blockfile_disk__format.h
@@ -0,0 +1,12 @@
+--- net/disk_cache/blockfile/disk_format.h.orig 2019-03-15 06:25:50 UTC
++++ net/disk_cache/blockfile/disk_format.h
+@@ -149,7 +149,9 @@ struct RankingsNode {
+ };
+ #pragma pack(pop)
+
++#if !defined(OS_BSD)
+ static_assert(sizeof(RankingsNode) == 36, "bad RankingsNode");
++#endif
+
+ } // namespace disk_cache
+
diff --git a/devel/electron4/files/patch-net_dns_address__sorter__posix.cc b/devel/electron4/files/patch-net_dns_address__sorter__posix.cc
new file mode 100644
index 000000000000..633e23199777
--- /dev/null
+++ b/devel/electron4/files/patch-net_dns_address__sorter__posix.cc
@@ -0,0 +1,12 @@
+--- net/dns/address_sorter_posix.cc.orig 2019-03-15 06:37:29 UTC
++++ net/dns/address_sorter_posix.cc
+@@ -13,7 +13,9 @@
+ #include <sys/socket.h> // Must be included before ifaddrs.h.
+ #include <ifaddrs.h>
+ #include <net/if.h>
++#include <net/if_var.h>
+ #include <netinet/in_var.h>
++#include <netinet6/in6_var.h>
+ #include <string.h>
+ #include <sys/ioctl.h>
+ #endif
diff --git a/devel/electron4/files/patch-net_dns_dns__config__service__posix__unittest.cc b/devel/electron4/files/patch-net_dns_dns__config__service__posix__unittest.cc
new file mode 100644
index 000000000000..a30082d24219
--- /dev/null
+++ b/devel/electron4/files/patch-net_dns_dns__config__service__posix__unittest.cc
@@ -0,0 +1,11 @@
+--- net/dns/dns_config_service_posix_unittest.cc.orig 2019-03-15 06:37:29 UTC
++++ net/dns/dns_config_service_posix_unittest.cc
+@@ -2,8 +2,6 @@
+ // Use of this source code is governed by a BSD-style license that can be
+ // found in the LICENSE file.
+
+-#include <resolv.h>
+-
+ #include <memory>
+
+ #include "base/cancelable_callback.h"
diff --git a/devel/electron4/files/patch-net_dns_dns__reloader.cc b/devel/electron4/files/patch-net_dns_dns__reloader.cc
new file mode 100644
index 000000000000..9c42c4673de3
--- /dev/null
+++ b/devel/electron4/files/patch-net_dns_dns__reloader.cc
@@ -0,0 +1,13 @@
+--- net/dns/dns_reloader.cc.orig 2019-03-15 06:37:29 UTC
++++ net/dns/dns_reloader.cc
+@@ -7,6 +7,10 @@
+ #if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_OPENBSD) && \
+ !defined(OS_ANDROID) && !defined(OS_FUCHSIA)
+
++#if defined(OS_FREEBSD)
++#include <netinet/in.h>
++#endif
++
+ #include <resolv.h>
+
+ #include "base/lazy_instance.h"
diff --git a/devel/electron4/files/patch-net_dns_dns__util.cc b/devel/electron4/files/patch-net_dns_dns__util.cc
new file mode 100644
index 000000000000..d103df1b6103
--- /dev/null
+++ b/devel/electron4/files/patch-net_dns_dns__util.cc
@@ -0,0 +1,11 @@
+--- net/dns/dns_util.cc.orig 2019-03-15 06:37:29 UTC
++++ net/dns/dns_util.cc
+@@ -28,6 +28,8 @@ const int kMaxLabelLength = 63;
+
+ } // namespace
+
++#include <sys/socket.h>
++
+ #if defined(OS_POSIX)
+ #include <netinet/in.h>
+ #if !defined(OS_NACL)
diff --git a/devel/electron4/files/patch-net_dns_host__resolver__proc.cc b/devel/electron4/files/patch-net_dns_host__resolver__proc.cc
new file mode 100644
index 000000000000..b68aa21d5c7d
--- /dev/null
+++ b/devel/electron4/files/patch-net_dns_host__resolver__proc.cc
@@ -0,0 +1,11 @@
+--- net/dns/host_resolver_proc.cc.orig 2019-03-15 06:37:29 UTC
++++ net/dns/host_resolver_proc.cc
+@@ -195,7 +195,7 @@ int SystemHostResolverCall(const std::string& host,
+ // current process during that time.
+ base::ScopedBlockingCall scoped_blocking_call(base::BlockingType::WILL_BLOCK);
+
+-#if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_OPENBSD) && \
++#if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_BSD) && \
+ !defined(OS_ANDROID) && !defined(OS_FUCHSIA)
+ DnsReloaderMaybeReload();
+ #endif
diff --git a/devel/electron4/files/patch-net_features.gni b/devel/electron4/files/patch-net_features.gni
new file mode 100644
index 000000000000..8e2cbcaa53a0
--- /dev/null
+++ b/devel/electron4/files/patch-net_features.gni
@@ -0,0 +1,11 @@
+--- net/features.gni.orig 2019-03-15 06:37:29 UTC
++++ net/features.gni
+@@ -27,7 +27,7 @@ declare_args() {
+ disable_brotli_filter = false
+
+ # Multicast DNS.
+- enable_mdns = is_win || is_linux || is_fuchsia
++ enable_mdns = is_win || is_linux || is_fuchsia || is_bsd
+
+ # Reporting not used on iOS.
+ enable_reporting = !is_ios
diff --git a/devel/electron4/files/patch-net_http_http__auth__gssapi__posix.cc b/devel/electron4/files/patch-net_http_http__auth__gssapi__posix.cc
new file mode 100644
index 000000000000..384ff069ccb2
--- /dev/null
+++ b/devel/electron4/files/patch-net_http_http__auth__gssapi__posix.cc
@@ -0,0 +1,14 @@
+--- net/http/http_auth_gssapi_posix.cc.orig 2019-03-15 06:37:29 UTC
++++ net/http/http_auth_gssapi_posix.cc
+@@ -431,8 +431,9 @@ base::NativeLibrary GSSAPISharedLibrary::LoadSharedLib
+ static const char* const kDefaultLibraryNames[] = {
+ #if defined(OS_MACOSX)
+ "/System/Library/Frameworks/GSS.framework/GSS"
+-#elif defined(OS_OPENBSD)
+- "libgssapi.so" // Heimdal - OpenBSD
++#elif defined(OS_BSD)
++ "libgssapi_krb5.so.2", // MIT Kerberos - FreeBSD
++ "libgssapi.so" // Heimdal - OpenBSD, FreeBSD
+ #else
+ "libgssapi_krb5.so.2", // MIT Kerberos - FC, Suse10, Debian
+ "libgssapi.so.4", // Heimdal - Suse10, MDK
diff --git a/devel/electron4/files/patch-net_http_http__network__session.cc b/devel/electron4/files/patch-net_http_http__network__session.cc
new file mode 100644
index 000000000000..646fcbd66fd2
--- /dev/null
+++ b/devel/electron4/files/patch-net_http_http__network__session.cc
@@ -0,0 +1,12 @@
+--- net/http/http_network_session.cc.orig 2019-03-15 06:37:30 UTC
++++ net/http/http_network_session.cc
+@@ -20,7 +20,9 @@
+ #include "base/trace_event/memory_dump_request_args.h"
+ #include "base/trace_event/process_memory_dump.h"
+ #include "base/values.h"
++#if defined(USE_KERBEROS)
+ #include "net/http/http_auth_handler_factory.h"
++#endif
+ #include "net/http/http_response_body_drainer.h"
+ #include "net/http/http_stream_factory.h"
+ #include "net/http/url_security_manager.h"
diff --git a/devel/electron4/files/patch-net_proxy__resolution_proxy__config__service__linux.cc b/devel/electron4/files/patch-net_proxy__resolution_proxy__config__service__linux.cc
new file mode 100644
index 000000000000..ea1d68c5e140
--- /dev/null
+++ b/devel/electron4/files/patch-net_proxy__resolution_proxy__config__service__linux.cc
@@ -0,0 +1,39 @@
+--- net/proxy_resolution/proxy_config_service_linux.cc.orig 2019-03-15 06:37:30 UTC
++++ net/proxy_resolution/proxy_config_service_linux.cc
+@@ -6,7 +6,9 @@
+
+ #include <errno.h>
+ #include <limits.h>
++#if !defined(OS_BSD)
+ #include <sys/inotify.h>
++#endif
+ #include <unistd.h>
+
+ #include <map>
+@@ -493,6 +495,7 @@ int StringToIntOrDefault(base::StringPiece value, int
+ return default_value;
+ }
+
++#if !defined(OS_BSD)
+ // This is the KDE version that reads kioslaverc and simulates gsettings.
+ // Doing this allows the main Delegate code, as well as the unit tests
+ // for it, to stay the same - and the settings map fairly well besides.
+@@ -982,6 +985,7 @@ class SettingGetterImplKDE : public ProxyConfigService
+
+ DISALLOW_COPY_AND_ASSIGN(SettingGetterImplKDE);
+ };
++#endif
+
+ } // namespace
+
+@@ -1197,8 +1201,10 @@ ProxyConfigServiceLinux::Delegate::Delegate(
+ case base::nix::DESKTOP_ENVIRONMENT_KDE3:
+ case base::nix::DESKTOP_ENVIRONMENT_KDE4:
+ case base::nix::DESKTOP_ENVIRONMENT_KDE5:
++#if !defined(OS_BSD)
+ setting_getter_.reset(new SettingGetterImplKDE(env_var_getter_.get()));
+ break;
++#endif
+ case base::nix::DESKTOP_ENVIRONMENT_XFCE:
+ case base::nix::DESKTOP_ENVIRONMENT_OTHER:
+ break;
diff --git a/devel/electron4/files/patch-net_proxy__resolution_proxy__resolution__service.cc b/devel/electron4/files/patch-net_proxy__resolution_proxy__resolution__service.cc
new file mode 100644
index 000000000000..8bda87ff59d5
--- /dev/null
+++ b/devel/electron4/files/patch-net_proxy__resolution_proxy__resolution__service.cc
@@ -0,0 +1,29 @@
+--- net/proxy_resolution/proxy_resolution_service.cc.orig 2019-03-15 06:37:30 UTC
++++ net/proxy_resolution/proxy_resolution_service.cc
+@@ -47,7 +47,7 @@
+ #elif defined(OS_MACOSX)
+ #include "net/proxy_resolution/proxy_config_service_mac.h"
+ #include "net/proxy_resolution/proxy_resolver_mac.h"
+-#elif defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#elif (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS)
+ #include "net/proxy_resolution/proxy_config_service_linux.h"
+ #elif defined(OS_ANDROID)
+ #include "net/proxy_resolution/proxy_config_service_android.h"
+@@ -61,7 +61,7 @@ namespace net {
+ namespace {
+
+ #if defined(OS_WIN) || defined(OS_IOS) || defined(OS_MACOSX) || \
+- (defined(OS_LINUX) && !defined(OS_CHROMEOS))
++ ((defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS))
+ constexpr net::NetworkTrafficAnnotationTag kSystemProxyConfigTrafficAnnotation =
+ net::DefineNetworkTrafficAnnotation("proxy_config_system", R"(
+ semantics {
+@@ -1529,7 +1529,7 @@ ProxyResolutionService::CreateSystemProxyConfigService
+ << "profile_io_data.cc::CreateProxyConfigService and this should "
+ << "be used only for examples.";
+ return std::make_unique<UnsetProxyConfigService>();
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ std::unique_ptr<ProxyConfigServiceLinux> linux_config_service(
+ new ProxyConfigServiceLinux());
+
diff --git a/devel/electron4/files/patch-net_socket_socks5__client__socket.cc b/devel/electron4/files/patch-net_socket_socks5__client__socket.cc
new file mode 100644
index 000000000000..4580e23332e6
--- /dev/null
+++ b/devel/electron4/files/patch-net_socket_socks5__client__socket.cc
@@ -0,0 +1,13 @@
+--- net/socket/socks5_client_socket.cc.orig 2019-03-15 06:37:30 UTC
++++ net/socket/socks5_client_socket.cc
+@@ -4,6 +4,10 @@
+
+ #include "net/socket/socks5_client_socket.h"
+
++#if defined(OS_BSD)
++#include <netinet/in.h>
++#endif
++
+ #include <utility>
+
+ #include "base/callback_helpers.h"
diff --git a/devel/electron4/files/patch-net_socket_udp__socket__posix.cc b/devel/electron4/files/patch-net_socket_udp__socket__posix.cc
new file mode 100644
index 000000000000..0cd590ef675b
--- /dev/null
+++ b/devel/electron4/files/patch-net_socket_udp__socket__posix.cc
@@ -0,0 +1,96 @@
+--- net/socket/udp_socket_posix.cc.orig 2019-03-15 06:37:30 UTC
++++ net/socket/udp_socket_posix.cc
+@@ -68,7 +68,7 @@ const int kActivityMonitorMinimumSamplesForThroughputE
+ const base::TimeDelta kActivityMonitorMsThreshold =
+ base::TimeDelta::FromMilliseconds(100);
+
+-#if defined(OS_MACOSX)
++#if defined(OS_MACOSX) || defined(OS_BSD)
+ // When enabling multicast using setsockopt(IP_MULTICAST_IF) MacOS
+ // requires passing IPv4 address instead of interface index. This function
+ // resolves IPv4 address by interface index. The |address| is returned in
+@@ -97,7 +97,7 @@ int GetIPv4AddressFromIndex(int socket, uint32_t index
+ return OK;
+ }
+
+-#endif // OS_MACOSX
++#endif // OS_MACOSX || OS_BSD
+
+ #if defined(OS_MACOSX) && !defined(OS_IOS)
+
+@@ -632,13 +632,13 @@ int UDPSocketPosix::SetDoNotFragment() {
+ }
+
+ void UDPSocketPosix::SetMsgConfirm(bool confirm) {
+-#if !defined(OS_MACOSX) && !defined(OS_IOS)
++#if !defined(OS_MACOSX) && !defined(OS_IOS) && !defined(OS_BSD)
+ if (confirm) {
+ sendto_flags_ |= MSG_CONFIRM;
+ } else {
+ sendto_flags_ &= ~MSG_CONFIRM;
+ }
+-#endif // !defined(OS_MACOSX) && !defined(OS_IOS)
++#endif // !defined(OS_MACOSX) && !defined(OS_IOS) && !defined(OS_BSD)
+ }
+
+ int UDPSocketPosix::AllowAddressReuse() {
+@@ -653,17 +653,20 @@ int UDPSocketPosix::SetBroadcast(bool broadcast) {
+ DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
+ int value = broadcast ? 1 : 0;
+ int rv;
+-#if defined(OS_MACOSX)
++#if defined(OS_MACOSX) || defined(OS_BSD)
+ // SO_REUSEPORT on OSX permits multiple processes to each receive
+ // UDP multicast or broadcast datagrams destined for the bound
+ // port.
+ // This is only being set on OSX because its behavior is platform dependent
+ // and we are playing it safe by only setting it on platforms where things
+ // break.
++ rv = setsockopt(socket_, SOL_SOCKET, SO_REUSEADDR, &value, sizeof(value));
++ if (rv != 0)
++ return MapSystemError(errno);
+ rv = setsockopt(socket_, SOL_SOCKET, SO_REUSEPORT, &value, sizeof(value));
+ if (rv != 0)
+ return MapSystemError(errno);
+-#endif // defined(OS_MACOSX)
++#endif // defined(OS_MACOSX) || defined(OS_BSD)
+ rv = setsockopt(socket_, SOL_SOCKET, SO_BROADCAST, &value, sizeof(value));
+
+ return rv == 0 ? OK : MapSystemError(errno);
+@@ -901,19 +904,24 @@ int UDPSocketPosix::SetMulticastOptions() {
+ if (multicast_interface_ != 0) {
+ switch (addr_family_) {
+ case AF_INET: {
+-#if defined(OS_MACOSX)
++#if defined(OS_MACOSX) || defined(OS_BSD)
+ ip_mreq mreq = {};
+ int error = GetIPv4AddressFromIndex(socket_, multicast_interface_,
+ &mreq.imr_interface.s_addr);
+ if (error != OK)
+ return error;
+-#else // defined(OS_MACOSX)
++#else // defined(OS_MACOSX) || defined(OS_BSD)
+ ip_mreqn mreq = {};
+ mreq.imr_ifindex = multicast_interface_;
+ mreq.imr_address.s_addr = htonl(INADDR_ANY);
+-#endif // !defined(OS_MACOSX)
++#endif // !defined(OS_MACOSX) || defined(OS_BSD)
+ int rv = setsockopt(socket_, IPPROTO_IP, IP_MULTICAST_IF,
++#ifdef defined(OS_BSD)
++ reinterpret_cast<const char*>(&mreq.imr_interface.s_addr),
++ sizeof(mreq.imr_interface.s_addr));
++#else
+ reinterpret_cast<const char*>(&mreq), sizeof(mreq));
++#endif
+ if (rv)
+ return MapSystemError(errno);
+ break;
+@@ -975,7 +983,7 @@ int UDPSocketPosix::JoinGroup(const IPAddress& group_a
+ if (addr_family_ != AF_INET)
+ return ERR_ADDRESS_INVALID;
+
+-#if defined(OS_MACOSX)
++#if defined(OS_MACOSX) || defined(OS_BSD)
+ ip_mreq mreq = {};
+ int error = GetIPv4AddressFromIndex(socket_, multicast_interface_,
+ &mreq.imr_interface.s_addr);
diff --git a/devel/electron4/files/patch-net_third__party_quic_platform_impl_quic__ip__address__impl.cc b/devel/electron4/files/patch-net_third__party_quic_platform_impl_quic__ip__address__impl.cc
new file mode 100644
index 000000000000..c7e4935f7e13
--- /dev/null
+++ b/devel/electron4/files/patch-net_third__party_quic_platform_impl_quic__ip__address__impl.cc
@@ -0,0 +1,10 @@
+--- net/third_party/quic/platform/impl/quic_ip_address_impl.cc.orig 2019-03-15 06:37:31 UTC
++++ net/third_party/quic/platform/impl/quic_ip_address_impl.cc
+@@ -13,6 +13,7 @@
+ #include <ws2bth.h>
+ #elif defined(OS_POSIX) || defined(OS_FUCHSIA)
+ #include <netinet/in.h>
++#include <sys/socket.h>
+ #endif
+
+ using std::string;
diff --git a/devel/electron4/files/patch-net_tools_cert__verify__tool_cert__verify__tool.cc b/devel/electron4/files/patch-net_tools_cert__verify__tool_cert__verify__tool.cc
new file mode 100644
index 000000000000..63c1a6931fd5
--- /dev/null
+++ b/devel/electron4/files/patch-net_tools_cert__verify__tool_cert__verify__tool.cc
@@ -0,0 +1,20 @@
+--- net/tools/cert_verify_tool/cert_verify_tool.cc.orig 2019-03-15 06:37:31 UTC
++++ net/tools/cert_verify_tool/cert_verify_tool.cc
+@@ -26,7 +26,7 @@
+ #include "net/url_request/url_request_context_builder.h"
+ #include "net/url_request/url_request_context_getter.h"
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include "net/proxy_resolution/proxy_config.h"
+ #include "net/proxy_resolution/proxy_config_service_fixed.h"
+ #endif
+@@ -45,7 +45,7 @@ void SetUpOnNetworkThread(std::unique_ptr<net::URLRequ
+ base::WaitableEvent* initialization_complete_event) {
+ net::URLRequestContextBuilder url_request_context_builder;
+ url_request_context_builder.set_user_agent(GetUserAgent());
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // On Linux, use a fixed ProxyConfigService, since the default one
+ // depends on glib.
+ //
diff --git a/devel/electron4/files/patch-net_url__request_url__request__context__builder.cc b/devel/electron4/files/patch-net_url__request_url__request__context__builder.cc
new file mode 100644
index 000000000000..5597b5c230e3
--- /dev/null
+++ b/devel/electron4/files/patch-net_url__request_url__request__context__builder.cc
@@ -0,0 +1,11 @@
+--- net/url_request/url_request_context_builder.cc.orig 2019-03-15 06:37:31 UTC
++++ net/url_request/url_request_context_builder.cc
+@@ -512,7 +512,7 @@ std::unique_ptr<URLRequestContext> URLRequestContextBu
+ }
+
+ if (!proxy_resolution_service_) {
+-#if !defined(OS_LINUX) && !defined(OS_ANDROID)
++#if !defined(OS_LINUX) && !defined(OS_ANDROID) && !defined(OS_BSD)
+ // TODO(willchan): Switch to using this code when
+ // ProxyResolutionService::CreateSystemProxyConfigService()'s signature
+ // doesn't suck.
diff --git a/devel/electron4/files/patch-pdf_pdfium_pdfium__engine.cc b/devel/electron4/files/patch-pdf_pdfium_pdfium__engine.cc
new file mode 100644
index 000000000000..c26af92bc3da
--- /dev/null
+++ b/devel/electron4/files/patch-pdf_pdfium_pdfium__engine.cc
@@ -0,0 +1,65 @@
+--- pdf/pdfium/pdfium_engine.cc.orig 2019-03-15 06:37:31 UTC
++++ pdf/pdfium/pdfium_engine.cc
+@@ -137,7 +137,7 @@ constexpr bool kIsEditModeTracked = false;
+
+ PDFiumEngine* g_engine_for_fontmapper = nullptr;
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+
+ PP_Instance g_last_instance_id;
+
+@@ -641,7 +641,7 @@ bool InitializeSDK() {
+ config.m_v8EmbedderSlot = gin::kEmbedderPDFium;
+ FPDF_InitLibraryWithConfig(&config);
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Font loading doesn't work in the renderer sandbox in Linux.
+ FPDF_SetSystemFontInfo(&g_font_info);
+ #else
+@@ -666,7 +666,7 @@ bool InitializeSDK() {
+
+ void ShutdownSDK() {
+ FPDF_DestroyLibrary();
+-#if !defined(OS_LINUX)
++#if !defined(OS_LINUX) && !defined(OS_BSD)
+ delete g_font_info;
+ #endif
+ TearDownV8();
+@@ -690,7 +690,7 @@ PDFiumEngine::PDFiumEngine(PDFEngine::Client* client,
+ IFSDK_PAUSE::user = nullptr;
+ IFSDK_PAUSE::NeedToPauseNow = Pause_NeedToPauseNow;
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // PreviewModeClient does not know its pp::Instance.
+ pp::Instance* instance = client_->GetPluginInstance();
+ if (instance)
+@@ -1147,7 +1147,7 @@ pp::Buffer_Dev PDFiumEngine::PrintPagesAsRasterPDF(
+
+ KillFormFocus();
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ g_last_instance_id = client_->GetPluginInstance()->pp_instance();
+ #endif
+
+@@ -2842,7 +2842,7 @@ bool PDFiumEngine::ContinuePaint(int progressive_index
+ DCHECK(image_data);
+
+ last_progressive_start_time_ = base::Time::Now();
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ g_last_instance_id = client_->GetPluginInstance()->pp_instance();
+ #endif
+
+@@ -3320,7 +3320,7 @@ void PDFiumEngine::SetCurrentPage(int index) {
+ FORM_DoPageAAction(old_page, form(), FPDFPAGE_AACTION_CLOSE);
+ }
+ most_visible_page_ = index;
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ g_last_instance_id = client_->GetPluginInstance()->pp_instance();
+ #endif
+ if (most_visible_page_ != -1 && called_do_document_action_) {
diff --git a/devel/electron4/files/patch-ppapi_proxy_file__io__resource.cc b/devel/electron4/files/patch-ppapi_proxy_file__io__resource.cc
new file mode 100644
index 000000000000..7442b5b43732
--- /dev/null
+++ b/devel/electron4/files/patch-ppapi_proxy_file__io__resource.cc
@@ -0,0 +1,48 @@
+--- ppapi/proxy/file_io_resource.cc.orig 2019-03-15 06:37:31 UTC
++++ ppapi/proxy/file_io_resource.cc
+@@ -285,17 +285,19 @@ int32_t FileIOResource::Write(int64_t offset,
+
+ if (check_quota_) {
+ int64_t increase = 0;
+- uint64_t max_offset = 0;
++ uint64_t _max_offset = 0;
++ // (rene) avoid name collission with /usr/include/vm/vm_map.h on FreeBSD
++ // which also defines max_offset
+ bool append = (open_flags_ & PP_FILEOPENFLAG_APPEND) != 0;
+ if (append) {
+ increase = bytes_to_write;
+ } else {
+- uint64_t max_offset = offset + bytes_to_write;
+- if (max_offset >
++ uint64_t _max_offset = offset + bytes_to_write;
++ if (_max_offset >
+ static_cast<uint64_t>(std::numeric_limits<int64_t>::max())) {
+ return PP_ERROR_FAILED; // amount calculation would overflow.
+ }
+- increase = static_cast<int64_t>(max_offset) - max_written_offset_;
++ increase = static_cast<int64_t>(_max_offset) - max_written_offset_;
+ }
+
+ if (increase > 0) {
+@@ -319,7 +321,7 @@ int32_t FileIOResource::Write(int64_t offset,
+ if (append)
+ append_mode_write_amount_ += bytes_to_write;
+ else
+- max_written_offset_ = max_offset;
++ max_written_offset_ = _max_offset;
+ }
+ }
+ return WriteValidated(offset, buffer, bytes_to_write, callback);
+@@ -597,9 +599,9 @@ void FileIOResource::OnRequestWriteQuotaComplete(
+ } else {
+ DCHECK_LE(offset + bytes_to_write - max_written_offset_, granted);
+
+- int64_t max_offset = offset + bytes_to_write;
+- if (max_written_offset_ < max_offset)
+- max_written_offset_ = max_offset;
++ int64_t _max_offset = offset + bytes_to_write;
++ if (max_written_offset_ < _max_offset)
++ max_written_offset_ = _max_offset;
+ }
+
+ if (callback->is_blocking()) {
diff --git a/devel/electron4/files/patch-printing_backend_print__backend__cups.h b/devel/electron4/files/patch-printing_backend_print__backend__cups.h
new file mode 100644
index 000000000000..be0915942f15
--- /dev/null
+++ b/devel/electron4/files/patch-printing_backend_print__backend__cups.h
@@ -0,0 +1,11 @@
+--- printing/backend/print_backend_cups.h.orig 2019-03-15 06:25:50 UTC
++++ printing/backend/print_backend_cups.h
+@@ -5,6 +5,8 @@
+ #ifndef PRINTING_BACKEND_PRINT_BACKEND_CUPS_H_
+ #define PRINTING_BACKEND_PRINT_BACKEND_CUPS_H_
+
++#include <cups/ppd.h>
++
+ #include <string>
+
+ #include "base/files/file_util.h"
diff --git a/devel/electron4/files/patch-printing_cups__config__helper.py b/devel/electron4/files/patch-printing_cups__config__helper.py
new file mode 100644
index 000000000000..d61bd564c8c5
--- /dev/null
+++ b/devel/electron4/files/patch-printing_cups__config__helper.py
@@ -0,0 +1,11 @@
+--- printing/cups_config_helper.py.orig 2019-03-15 06:25:50 UTC
++++ printing/cups_config_helper.py
+@@ -65,7 +65,7 @@ def main():
+ mode = sys.argv[1]
+ if len(sys.argv) > 2 and sys.argv[2]:
+ sysroot = sys.argv[2]
+- cups_config = os.path.join(sysroot, 'usr', 'bin', 'cups-config')
++ cups_config = os.path.join(sysroot, 'bin', 'cups-config')
+ if not os.path.exists(cups_config):
+ print 'cups-config not found: %s' % cups_config
+ return 1
diff --git a/devel/electron4/files/patch-remoting_base_chromoting__event.cc b/devel/electron4/files/patch-remoting_base_chromoting__event.cc
new file mode 100644
index 000000000000..43335fb522d0
--- /dev/null
+++ b/devel/electron4/files/patch-remoting_base_chromoting__event.cc
@@ -0,0 +1,11 @@
+--- remoting/base/chromoting_event.cc.orig 2019-03-15 06:37:31 UTC
++++ remoting/base/chromoting_event.cc
+@@ -186,7 +186,7 @@ void ChromotingEvent::AddSystemInfo() {
+ SetString(kCpuKey, base::SysInfo::OperatingSystemArchitecture());
+ SetString(kOsVersionKey, base::SysInfo::OperatingSystemVersion());
+ SetString(kWebAppVersionKey, STRINGIZE(VERSION));
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ Os os = Os::CHROMOTING_LINUX;
+ #elif defined(OS_CHROMEOS)
+ Os os = Os::CHROMOTING_CHROMEOS;
diff --git a/devel/electron4/files/patch-remoting_client_display_sys__opengl.h b/devel/electron4/files/patch-remoting_client_display_sys__opengl.h
new file mode 100644
index 000000000000..67ed67bfe772
--- /dev/null
+++ b/devel/electron4/files/patch-remoting_client_display_sys__opengl.h
@@ -0,0 +1,11 @@
+--- remoting/client/display/sys_opengl.h.orig 2019-03-15 06:25:51 UTC
++++ remoting/client/display/sys_opengl.h
+@@ -9,7 +9,7 @@
+
+ #if defined(OS_IOS)
+ #include <OpenGLES/ES3/gl.h>
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ #define GL_GLEXT_PROTOTYPES
+ #include <GL/gl.h>
+ #include <GL/glext.h>
diff --git a/devel/electron4/files/patch-remoting_host_evaluate__capability.cc b/devel/electron4/files/patch-remoting_host_evaluate__capability.cc
new file mode 100644
index 000000000000..c453e132d9cb
--- /dev/null
+++ b/devel/electron4/files/patch-remoting_host_evaluate__capability.cc
@@ -0,0 +1,11 @@
+--- remoting/host/evaluate_capability.cc.orig 2019-03-15 06:37:31 UTC
++++ remoting/host/evaluate_capability.cc
+@@ -49,7 +49,7 @@ base::FilePath BuildHostBinaryPath() {
+ }
+ #endif
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ if (path.BaseName().value() ==
+ FILE_PATH_LITERAL("chrome-remote-desktop-host")) {
+ return path;
diff --git a/devel/electron4/files/patch-remoting_host_host__attributes.cc b/devel/electron4/files/patch-remoting_host_host__attributes.cc
new file mode 100644
index 000000000000..7be44d3feae4
--- /dev/null
+++ b/devel/electron4/files/patch-remoting_host_host__attributes.cc
@@ -0,0 +1,11 @@
+--- remoting/host/host_attributes.cc.orig 2019-03-15 06:37:31 UTC
++++ remoting/host/host_attributes.cc
+@@ -122,7 +122,7 @@ std::string GetHostAttributes() {
+ media::InitializeMediaFoundation()) {
+ result.push_back("HWEncoder");
+ }
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ result.push_back("HWEncoder");
+ #endif
+
diff --git a/devel/electron4/files/patch-remoting_host_host__details.cc b/devel/electron4/files/patch-remoting_host_host__details.cc
new file mode 100644
index 000000000000..afb07dcd85c3
--- /dev/null
+++ b/devel/electron4/files/patch-remoting_host_host__details.cc
@@ -0,0 +1,11 @@
+--- remoting/host/host_details.cc.orig 2019-03-15 06:37:31 UTC
++++ remoting/host/host_details.cc
+@@ -22,7 +22,7 @@ std::string GetHostOperatingSystemName() {
+ return "Mac";
+ #elif defined(OS_CHROMEOS)
+ return "ChromeOS";
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ return "Linux";
+ #elif defined(OS_ANDROID)
+ return "Android";
diff --git a/devel/electron4/files/patch-remoting_host_it2me_it2me__native__messaging__host__main.cc b/devel/electron4/files/patch-remoting_host_it2me_it2me__native__messaging__host__main.cc
new file mode 100644
index 000000000000..2527b89ff95a
--- /dev/null
+++ b/devel/electron4/files/patch-remoting_host_it2me_it2me__native__messaging__host__main.cc
@@ -0,0 +1,20 @@
+--- remoting/host/it2me/it2me_native_messaging_host_main.cc.orig 2019-03-15 06:37:31 UTC
++++ remoting/host/it2me/it2me_native_messaging_host_main.cc
+@@ -25,7 +25,7 @@
+ #include "remoting/host/resources.h"
+ #include "remoting/host/usage_stats_consent.h"
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include <gtk/gtk.h>
+
+ #include "base/linux_util.h"
+@@ -102,7 +102,7 @@ int It2MeNativeMessagingHostMain(int argc, char** argv
+
+ remoting::LoadResources("");
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Required in order for us to run multiple X11 threads.
+ XInitThreads();
+
diff --git a/devel/electron4/files/patch-remoting_host_me2me__desktop__environment.cc b/devel/electron4/files/patch-remoting_host_me2me__desktop__environment.cc
new file mode 100644
index 000000000000..453bf3b9fdfb
--- /dev/null
+++ b/devel/electron4/files/patch-remoting_host_me2me__desktop__environment.cc
@@ -0,0 +1,11 @@
+--- remoting/host/me2me_desktop_environment.cc.orig 2019-03-15 06:37:31 UTC
++++ remoting/host/me2me_desktop_environment.cc
+@@ -107,7 +107,7 @@ bool Me2MeDesktopEnvironment::InitializeSecurity(
+
+ // Otherwise, if the session is shared with the local user start monitoring
+ // the local input and create the in-session UI.
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ bool want_user_interface = false;
+ #elif defined(OS_MACOSX)
+ // Don't try to display any UI on top of the system's login screen as this
diff --git a/devel/electron4/files/patch-remoting_host_remoting__me2me__host.cc b/devel/electron4/files/patch-remoting_host_remoting__me2me__host.cc
new file mode 100644
index 000000000000..c6ed900d12d7
--- /dev/null
+++ b/devel/electron4/files/patch-remoting_host_remoting__me2me__host.cc
@@ -0,0 +1,108 @@
+--- remoting/host/remoting_me2me_host.cc.orig 2019-03-15 06:37:31 UTC
++++ remoting/host/remoting_me2me_host.cc
+@@ -114,13 +114,13 @@
+ #include "base/mac/scoped_cftyperef.h"
+ #endif // defined(OS_MACOSX)
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include <gtk/gtk.h>
+ #include "base/linux_util.h"
+ #include "remoting/host/audio_capturer_linux.h"
+ #include "remoting/host/linux/certificate_watcher.h"
+ #include "ui/gfx/x/x11.h"
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+
+ #if defined(OS_WIN)
+ #include <commctrl.h>
+@@ -155,11 +155,11 @@ const char kApplicationName[] = "chromoting";
+ const char kStdinConfigPath[] = "-";
+ #endif // !defined(REMOTING_MULTI_PROCESS)
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // The command line switch used to pass name of the pipe to capture audio on
+ // linux.
+ const char kAudioPipeSwitchName[] = "audio-pipe-name";
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+
+ #if defined(OS_POSIX)
+ // The command line switch used to pass name of the unix domain socket used to
+@@ -350,7 +350,7 @@ class HostProcess : public ConfigWatcher::Delegate,
+
+ std::unique_ptr<ChromotingHostContext> context_;
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Watch for certificate changes and kill the host when changes occur
+ std::unique_ptr<CertificateWatcher> cert_watcher_;
+ #endif
+@@ -564,10 +564,10 @@ bool HostProcess::InitWithCommandLine(const base::Comm
+ enable_window_capture_ = cmd_line->HasSwitch(kWindowIdSwitchName);
+ if (enable_window_capture_) {
+
+-#if defined(OS_LINUX) || defined(OS_WIN)
++#if defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD)
+ LOG(WARNING) << "Window capturing is not fully supported on Linux or "
+ "Windows.";
+-#endif // defined(OS_LINUX) || defined(OS_WIN)
++#endif // defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD)
+
+ // uint32_t is large enough to hold window IDs on all platforms.
+ uint32_t window_id;
+@@ -760,7 +760,7 @@ void HostProcess::CreateAuthenticatorFactory() {
+ DCHECK(third_party_auth_config_.token_url.is_valid());
+ DCHECK(third_party_auth_config_.token_validation_url.is_valid());
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ if (!cert_watcher_) {
+ cert_watcher_.reset(new CertificateWatcher(
+ base::Bind(&HostProcess::ShutdownHost, this, kSuccessExitCode),
+@@ -846,7 +846,7 @@ void HostProcess::StartOnUiThread() {
+ base::Bind(&HostProcess::OnPolicyUpdate, base::Unretained(this)),
+ base::Bind(&HostProcess::OnPolicyError, base::Unretained(this)));
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // If an audio pipe is specific on the command-line then initialize
+ // AudioCapturerLinux to capture from it.
+ base::FilePath audio_pipe_name = base::CommandLine::ForCurrentProcess()->
+@@ -855,7 +855,7 @@ void HostProcess::StartOnUiThread() {
+ remoting::AudioCapturerLinux::InitializePipeReader(
+ context_->audio_task_runner(), audio_pipe_name);
+ }
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+
+ #if defined(OS_POSIX)
+ base::FilePath security_key_socket_name =
+@@ -913,7 +913,7 @@ void HostProcess::ShutdownOnUiThread() {
+ // It is now safe for the HostProcess to be deleted.
+ self_ = nullptr;
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Cause the global AudioPipeReader to be freed, otherwise the audio
+ // thread will remain in-use and prevent the process from exiting.
+ // TODO(wez): DesktopEnvironmentFactory should own the pipe reader.
+@@ -1545,7 +1545,7 @@ void HostProcess::StartHost() {
+ host_->AddExtension(std::make_unique<TestEchoExtension>());
+
+ // TODO(simonmorris): Get the maximum session duration from a policy.
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ host_->SetMaximumSessionDuration(base::TimeDelta::FromHours(20));
+ #endif
+
+@@ -1704,7 +1704,7 @@ void HostProcess::OnCrash(const std::string& function_
+ int HostProcessMain() {
+ HOST_LOG << "Starting host process: version " << STRINGIZE(VERSION);
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ if (!base::CommandLine::ForCurrentProcess()->HasSwitch(
+ kReportOfflineReasonSwitchName)) {
+ // Required in order for us to run multiple X11 threads.
diff --git a/devel/electron4/files/patch-remoting_webapp_base_js_platform.js b/devel/electron4/files/patch-remoting_webapp_base_js_platform.js
new file mode 100644
index 000000000000..ea446671b504
--- /dev/null
+++ b/devel/electron4/files/patch-remoting_webapp_base_js_platform.js
@@ -0,0 +1,17 @@
+--- remoting/webapp/base/js/platform.js.orig 2019-03-15 06:25:51 UTC
++++ remoting/webapp/base/js/platform.js
+@@ -107,6 +107,14 @@ remoting.getSystemInfo = function() {
+ return result;
+ }
+
++ match = new RegExp('FreeBSD ([a-zA-Z0-9_]*)').exec(userAgent);
++ if (match && (match.length >= 2)) {
++ result.osName = remoting.Os.LINUX;
++ result.osVersion = '';
++ result.cpu = match[1];
++ return result;
++ }
++
+ match = new RegExp('([a-zA-Z]*) Mac OS X ([0-9_]*)').exec(userAgent);
+ if (match && (match.length >= 3)) {
+ result.osName = remoting.Os.MAC;
diff --git a/devel/electron4/files/patch-sandbox_features.gni b/devel/electron4/files/patch-sandbox_features.gni
new file mode 100644
index 000000000000..eca97e586a70
--- /dev/null
+++ b/devel/electron4/files/patch-sandbox_features.gni
@@ -0,0 +1,10 @@
+--- sandbox/features.gni.orig 2019-03-15 06:25:51 UTC
++++ sandbox/features.gni
+@@ -12,6 +12,6 @@ use_seccomp_bpf =
+ (is_linux || is_android) &&
+ (current_cpu == "x86" || current_cpu == "x64" || current_cpu == "arm" ||
+ current_cpu == "arm64" || current_cpu == "mipsel" ||
+- current_cpu == "mips64el")
++ current_cpu == "mips64el") && !is_bsd
+
+ use_seccomp_bpf = use_seccomp_bpf || is_nacl_nonsfi
diff --git a/devel/electron4/files/patch-sandbox_linux_BUILD.gn b/devel/electron4/files/patch-sandbox_linux_BUILD.gn
new file mode 100644
index 000000000000..ab1ebd1b77aa
--- /dev/null
+++ b/devel/electron4/files/patch-sandbox_linux_BUILD.gn
@@ -0,0 +1,47 @@
+--- sandbox/linux/BUILD.gn.orig 2019-03-15 06:37:31 UTC
++++ sandbox/linux/BUILD.gn
+@@ -12,12 +12,12 @@ if (is_android) {
+ }
+
+ declare_args() {
+- compile_suid_client = is_linux
++ compile_suid_client = is_linux && !is_bsd
+
+- compile_credentials = is_linux
++ compile_credentials = is_linux && !is_bsd
+
+ # On Android, use plain GTest.
+- use_base_test_suite = is_linux
++ use_base_test_suite = is_linux && !is_bsd
+ }
+
+ if (is_nacl_nonsfi) {
+@@ -398,7 +398,7 @@ component("sandbox_services") {
+ public_deps += [ ":sandbox_services_headers" ]
+ }
+
+- if (is_nacl_nonsfi) {
++ if (is_nacl_nonsfi || is_bsd) {
+ cflags = [ "-fgnu-inline-asm" ]
+
+ sources -= [
+@@ -406,6 +406,8 @@ component("sandbox_services") {
+ "services/init_process_reaper.h",
+ "services/scoped_process.cc",
+ "services/scoped_process.h",
++ "services/syscall_wrappers.cc",
++ "services/syscall_wrappers.h",
+ "services/yama.cc",
+ "services/yama.h",
+ "syscall_broker/broker_channel.cc",
+@@ -424,6 +426,10 @@ component("sandbox_services") {
+ "syscall_broker/broker_process.h",
+ "syscall_broker/broker_simple_message.cc",
+ "syscall_broker/broker_simple_message.h",
++ ]
++ sources += [
++ "services/libc_interceptor.cc",
++ "services/libc_interceptor.h",
+ ]
+ } else if (!is_android) {
+ sources += [
diff --git a/devel/electron4/files/patch-sandbox_linux_services_init__process__reaper.cc b/devel/electron4/files/patch-sandbox_linux_services_init__process__reaper.cc
new file mode 100644
index 000000000000..c225a30573d7
--- /dev/null
+++ b/devel/electron4/files/patch-sandbox_linux_services_init__process__reaper.cc
@@ -0,0 +1,15 @@
+--- sandbox/linux/services/init_process_reaper.cc.orig 2019-03-15 06:25:51 UTC
++++ sandbox/linux/services/init_process_reaper.cc
+@@ -1,6 +1,7 @@
+ // Copyright 2013 The Chromium Authors. All rights reserved.
+ // Use of this source code is governed by a BSD-style license that can be
+ // found in the LICENSE file.
++#if 0
+
+ #include "sandbox/linux/services/init_process_reaper.h"
+
+@@ -100,3 +101,4 @@ bool CreateInitProcessReaper(base::OnceClosure post_fo
+ }
+
+ } // namespace sandbox.
++#endif
diff --git a/devel/electron4/files/patch-sandbox_linux_services_libc__interceptor.cc b/devel/electron4/files/patch-sandbox_linux_services_libc__interceptor.cc
new file mode 100644
index 000000000000..b915db8f9a6f
--- /dev/null
+++ b/devel/electron4/files/patch-sandbox_linux_services_libc__interceptor.cc
@@ -0,0 +1,21 @@
+--- sandbox/linux/services/libc_interceptor.cc.orig 2019-03-15 06:25:51 UTC
++++ sandbox/linux/services/libc_interceptor.cc
+@@ -11,7 +11,9 @@
+ #include <stddef.h>
+ #include <stdint.h>
+ #include <string.h>
++#if !defined(OS_BSD)
+ #include <sys/prctl.h>
++#endif
+ #include <sys/socket.h>
+ #include <sys/types.h>
+ #include <time.h>
+@@ -94,7 +96,7 @@ bool ReadTimeStruct(base::PickleIterator* iter,
+ } else {
+ base::AutoLock lock(g_timezones_lock.Get());
+ auto ret_pair = g_timezones.Get().insert(timezone);
+- output->tm_zone = ret_pair.first->c_str();
++ output->tm_zone = (char *)ret_pair.first->c_str();
+ }
+
+ return true;
diff --git a/devel/electron4/files/patch-services_catalog_public_cpp_manifest__parsing__util.cc b/devel/electron4/files/patch-services_catalog_public_cpp_manifest__parsing__util.cc
new file mode 100644
index 000000000000..6ee7f592d83e
--- /dev/null
+++ b/devel/electron4/files/patch-services_catalog_public_cpp_manifest__parsing__util.cc
@@ -0,0 +1,21 @@
+--- services/catalog/public/cpp/manifest_parsing_util.cc.orig 2019-03-15 06:37:32 UTC
++++ services/catalog/public/cpp/manifest_parsing_util.cc
+@@ -17,7 +17,8 @@ bool IsValidPlatformName(const std::string& name) {
+ name == Store::kRequiredFilesKey_PlatformValue_Linux ||
+ name == Store::kRequiredFilesKey_PlatformValue_MacOSX ||
+ name == Store::kRequiredFilesKey_PlatformValue_Android ||
+- name == Store::kRequiredFilesKey_PlatformValue_Fuchsia;
++ name == Store::kRequiredFilesKey_PlatformValue_Fuchsia ||
++ name == Store::kRequiredFilesKey_PlatformValue_FreeBSD;
+ }
+
+ bool IsCurrentPlatform(const std::string& name) {
+@@ -31,6 +32,8 @@ bool IsCurrentPlatform(const std::string& name) {
+ return name == Store::kRequiredFilesKey_PlatformValue_Android;
+ #elif defined(OS_FUCHSIA)
+ return name == Store::kRequiredFilesKey_PlatformValue_Fuchsia;
++#elif defined(OS_BSD)
++ return name == Store::kRequiredFilesKey_PlatformValue_FreeBSD;
+ #else
+ #error This architecture is not supported.
+ #endif
diff --git a/devel/electron4/files/patch-services_catalog_store.cc b/devel/electron4/files/patch-services_catalog_store.cc
new file mode 100644
index 000000000000..72eb735ee0f9
--- /dev/null
+++ b/devel/electron4/files/patch-services_catalog_store.cc
@@ -0,0 +1,10 @@
+--- services/catalog/store.cc.orig 2019-03-15 06:37:32 UTC
++++ services/catalog/store.cc
+@@ -36,5 +36,7 @@ const char Store::kRequiredFilesKey_PlatformValue_MacO
+ const char Store::kRequiredFilesKey_PlatformValue_Android[] = "android";
+ // static
+ const char Store::kRequiredFilesKey_PlatformValue_Fuchsia[] = "fuchsia";
++// static
++const char Store::kRequiredFilesKey_PlatformValue_FreeBSD[] = "freebsd";
+
+ } // namespace catalog
diff --git a/devel/electron4/files/patch-services_catalog_store.h b/devel/electron4/files/patch-services_catalog_store.h
new file mode 100644
index 000000000000..3a9db1c2e069
--- /dev/null
+++ b/devel/electron4/files/patch-services_catalog_store.h
@@ -0,0 +1,10 @@
+--- services/catalog/store.h.orig 2019-03-15 06:37:32 UTC
++++ services/catalog/store.h
+@@ -36,6 +36,7 @@ class Store {
+ static const char kRequiredFilesKey_PlatformValue_MacOSX[];
+ static const char kRequiredFilesKey_PlatformValue_Android[];
+ static const char kRequiredFilesKey_PlatformValue_Fuchsia[];
++ static const char kRequiredFilesKey_PlatformValue_FreeBSD[];
+ };
+
+ } // namespace catalog
diff --git a/devel/electron4/files/patch-services_content_simple__browser_simple__browser__service.h b/devel/electron4/files/patch-services_content_simple__browser_simple__browser__service.h
new file mode 100644
index 000000000000..a6d5fcca324d
--- /dev/null
+++ b/devel/electron4/files/patch-services_content_simple__browser_simple__browser__service.h
@@ -0,0 +1,20 @@
+--- services/content/simple_browser/simple_browser_service.h.orig 2019-03-15 06:37:32 UTC
++++ services/content/simple_browser/simple_browser_service.h
+@@ -13,7 +13,7 @@
+ #include "build/build_config.h"
+ #include "services/service_manager/public/cpp/service.h"
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include "components/services/font/public/cpp/font_loader.h"
+ #endif
+
+@@ -35,7 +35,7 @@ class COMPONENT_EXPORT(SIMPLE_BROWSER) SimpleBrowserSe
+ // service_manager::Service:
+ void OnStart() override;
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ sk_sp<font_service::FontLoader> font_loader_;
+ #endif
+
diff --git a/devel/electron4/files/patch-services_device_geolocation_location__arbitrator.cc b/devel/electron4/files/patch-services_device_geolocation_location__arbitrator.cc
new file mode 100644
index 000000000000..71875b09d3d8
--- /dev/null
+++ b/devel/electron4/files/patch-services_device_geolocation_location__arbitrator.cc
@@ -0,0 +1,11 @@
+--- services/device/geolocation/location_arbitrator.cc.orig 2019-03-15 06:37:32 UTC
++++ services/device/geolocation/location_arbitrator.cc
+@@ -164,7 +164,7 @@ LocationArbitrator::NewNetworkLocationProvider(
+ std::unique_ptr<LocationProvider>
+ LocationArbitrator::NewSystemLocationProvider() {
+ #if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || \
+- defined(OS_FUCHSIA)
++ defined(OS_FUCHSIA) || defined(OS_BSD)
+ return nullptr;
+ #else
+ return device::NewSystemLocationProvider();
diff --git a/devel/electron4/files/patch-services_device_hid_BUILD.gn b/devel/electron4/files/patch-services_device_hid_BUILD.gn
new file mode 100644
index 000000000000..00b65127952d
--- /dev/null
+++ b/devel/electron4/files/patch-services_device_hid_BUILD.gn
@@ -0,0 +1,22 @@
+--- services/device/hid/BUILD.gn.orig 2019-03-15 06:37:32 UTC
++++ services/device/hid/BUILD.gn
+@@ -51,6 +51,19 @@ source_set("hid") {
+ deps += [ "//device/udev_linux" ]
+ }
+
++ if (is_bsd) {
++ sources -= [
++ "hid_connection_linux.cc",
++ "hid_connection_linux.h",
++ ]
++ sources += [
++ "hid_connection_freebsd.cc",
++ "hid_connection_freebsd.h",
++ "hid_service_freebsd.cc",
++ "hid_service_freebsd.h",
++ ]
++ }
++
+ if (is_chromeos) {
+ deps += [ "//chromeos" ]
+ }
diff --git a/devel/electron4/files/patch-services_device_hid_hid__connection__freebsd.cc b/devel/electron4/files/patch-services_device_hid_hid__connection__freebsd.cc
new file mode 100644
index 000000000000..42a19950b1b0
--- /dev/null
+++ b/devel/electron4/files/patch-services_device_hid_hid__connection__freebsd.cc
@@ -0,0 +1,194 @@
+--- services/device/hid/hid_connection_freebsd.cc.orig 2019-03-16 09:17:07 UTC
++++ services/device/hid/hid_connection_freebsd.cc
+@@ -0,0 +1,191 @@
++// Copyright (c) 2014 The Chromium Authors. All rights reserved.
++// Use of this source code is governed by a BSD-style license that can be
++// found in the LICENSE file.
++
++#include "services/device/hid/hid_connection_freebsd.h"
++
++#include <dev/usb/usbhid.h>
++#include <dev/usb/usb_ioctl.h>
++
++#include "base/bind.h"
++#include "base/files/file_descriptor_watcher_posix.h"
++#include "base/location.h"
++#include "base/numerics/safe_math.h"
++#include "base/posix/eintr_wrapper.h"
++#include "base/single_thread_task_runner.h"
++#include "base/strings/stringprintf.h"
++#include "base/task_scheduler/post_task.h"
++#include "base/threading/thread_restrictions.h"
++#include "base/threading/thread_task_runner_handle.h"
++#include "components/device_event_log/device_event_log.h"
++#include "services/device/hid/hid_service.h"
++
++namespace device {
++
++class HidConnectionFreeBSD::BlockingTaskHelper {
++ public:
++ BlockingTaskHelper(base::ScopedFD fd,
++ scoped_refptr<HidDeviceInfo> device_info,
++ base::WeakPtr<HidConnectionFreeBSD> connection)
++ : fd_(std::move(fd)),
++ connection_(connection),
++ origin_task_runner_(base::ThreadTaskRunnerHandle::Get()) {
++ DETACH_FROM_SEQUENCE(sequence_checker_);
++ // Report buffers must always have room for the report ID.
++ report_buffer_size_ = device_info->max_input_report_size() + 1;
++ has_report_id_ = device_info->has_report_id();
++ }
++
++ ~BlockingTaskHelper() { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); }
++
++ // Starts the FileDescriptorWatcher that reads input events from the device.
++ // Must be called on a thread that has a base::MessageLoopForIO.
++ void Start() {
++ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
++ base::AssertBlockingAllowed();
++ }
++
++ void Write(scoped_refptr<base::RefCountedBytes> buffer,
++ WriteCallback callback) {
++ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
++ auto data = buffer->front();
++ size_t size = buffer->size();
++ // if report id is 0, it shouldn't be included
++ if (data[0] == 0) {
++ data++;
++ size--;
++ }
++
++ ssize_t result = HANDLE_EINTR(write(fd_.get(), data, size));
++ if (result < 0) {
++ HID_PLOG(EVENT) << "Write failed";
++ origin_task_runner_->PostTask(FROM_HERE, base::BindOnce(std::move(callback), false));
++ } else {
++ if (static_cast<size_t>(result) != size)
++ HID_LOG(EVENT) << "Incomplete HID write: " << result << " != " << size;
++ origin_task_runner_->PostTask(FROM_HERE, base::BindOnce(std::move(callback), true));
++ }
++ }
++
++ void GetFeatureReport(uint8_t report_id,
++ scoped_refptr<base::RefCountedBytes> buffer,
++ ReadCallback callback) {
++ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
++ struct usb_gen_descriptor ugd;
++ ugd.ugd_report_type = UHID_FEATURE_REPORT;
++ ugd.ugd_data = buffer->front();
++ ugd.ugd_maxlen = buffer->size();
++ int result = HANDLE_EINTR(
++ ioctl(fd_.get(), USB_GET_REPORT, &ugd));
++ if (result < 0) {
++ HID_PLOG(EVENT) << "Failed to get feature report";
++ origin_task_runner_->PostTask(FROM_HERE,
++ base::BindOnce(std::move(callback), false, nullptr, 0));
++ } else if (result == 0) {
++ HID_LOG(EVENT) << "Get feature result too short.";
++ origin_task_runner_->PostTask(FROM_HERE,
++ base::BindOnce(std::move(callback), false, nullptr, 0));
++ } else {
++ origin_task_runner_->PostTask(FROM_HERE,
++ base::BindOnce(std::move(callback), true, buffer, result));
++ }
++ }
++
++ void SendFeatureReport(scoped_refptr<base::RefCountedBytes> buffer,
++ WriteCallback callback) {
++ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
++ struct usb_gen_descriptor ugd;
++ ugd.ugd_report_type = UHID_FEATURE_REPORT;
++ ugd.ugd_data = buffer->front();
++ ugd.ugd_maxlen = buffer->size();
++ // FreeBSD does not require report id if it's not used
++ if (buffer->front()[0] == 0) {
++ ugd.ugd_data = buffer->front() + 1;
++ ugd.ugd_maxlen = buffer->size() - 1;
++ } else {
++ ugd.ugd_data = buffer->front();
++ ugd.ugd_maxlen = buffer->size();
++ }
++ int result = HANDLE_EINTR(
++ ioctl(fd_.get(), USB_SET_REPORT, &ugd));
++ if (result < 0) {
++ HID_PLOG(EVENT) << "Failed to send feature report";
++ origin_task_runner_->PostTask(FROM_HERE,
++ base::BindOnce(std::move(callback), false));
++ } else {
++ origin_task_runner_->PostTask(FROM_HERE,
++ base::BindOnce(std::move(callback), true));
++ }
++ }
++
++ private:
++ SEQUENCE_CHECKER(sequence_checker_);
++ base::ScopedFD fd_;
++ size_t report_buffer_size_;
++ bool has_report_id_;
++ base::WeakPtr<HidConnectionFreeBSD> connection_;
++ const scoped_refptr<base::SequencedTaskRunner> origin_task_runner_;
++
++ DISALLOW_COPY_AND_ASSIGN(BlockingTaskHelper);
++};
++
++HidConnectionFreeBSD::HidConnectionFreeBSD(
++ scoped_refptr<HidDeviceInfo> device_info,
++ base::ScopedFD fd,
++ scoped_refptr<base::SequencedTaskRunner> blocking_task_runner)
++ : HidConnection(device_info),
++ blocking_task_runner_(std::move(blocking_task_runner)),
++ weak_factory_(this) {
++ helper_ = std::make_unique<BlockingTaskHelper>(std::move(fd), device_info,
++ weak_factory_.GetWeakPtr());
++ blocking_task_runner_->PostTask(
++ FROM_HERE, base::BindOnce(&BlockingTaskHelper::Start,
++ base::Unretained(helper_.get())));
++}
++
++HidConnectionFreeBSD::~HidConnectionFreeBSD() {}
++
++void HidConnectionFreeBSD::PlatformClose() {
++ // By closing the device on the blocking task runner 1) the requirement that
++ // base::ScopedFD is destroyed on a thread where I/O is allowed is satisfied
++ // and 2) any tasks posted to this task runner that refer to this file will
++ // complete before it is closed.
++ blocking_task_runner_->DeleteSoon(FROM_HERE, helper_.release());
++}
++
++void HidConnectionFreeBSD::PlatformWrite(scoped_refptr<base::RefCountedBytes> buffer,
++ WriteCallback callback) {
++
++ blocking_task_runner_->PostTask(
++ FROM_HERE,
++ base::BindOnce(&BlockingTaskHelper::Write, base::Unretained(helper_.get()),
++ buffer, std::move(callback)));
++}
++
++void HidConnectionFreeBSD::PlatformGetFeatureReport(uint8_t report_id,
++ ReadCallback callback) {
++ // The first byte of the destination buffer is the report ID being requested
++ // and is overwritten by the feature report.
++ DCHECK_GT(device_info()->max_feature_report_size(), 0u);
++ scoped_refptr<base::RefCountedBytes> buffer(
++ new base::RefCountedBytes(device_info()->max_feature_report_size() + 1));
++ if (report_id != 0)
++ buffer->data()[0] = report_id;
++
++ blocking_task_runner_->PostTask(
++ FROM_HERE,
++ base::BindOnce(&BlockingTaskHelper::GetFeatureReport,
++ base::Unretained(helper_.get()), report_id,
++ buffer, std::move(callback)));
++}
++
++void HidConnectionFreeBSD::PlatformSendFeatureReport(
++ scoped_refptr<base::RefCountedBytes> buffer,
++ WriteCallback callback) {
++ blocking_task_runner_->PostTask(
++ FROM_HERE,
++ base::BindOnce(&BlockingTaskHelper::SendFeatureReport,
++ base::Unretained(helper_.get()), buffer, std::move(callback)));
++}
++
++} // namespace device
diff --git a/devel/electron4/files/patch-services_device_hid_hid__connection__freebsd.h b/devel/electron4/files/patch-services_device_hid_hid__connection__freebsd.h
new file mode 100644
index 000000000000..1cd62fcd1372
--- /dev/null
+++ b/devel/electron4/files/patch-services_device_hid_hid__connection__freebsd.h
@@ -0,0 +1,73 @@
+--- services/device/hid/hid_connection_freebsd.h.orig 2019-03-16 09:17:07 UTC
++++ services/device/hid/hid_connection_freebsd.h
+@@ -0,0 +1,70 @@
++// Copyright (c) 2014 The Chromium Authors. All rights reserved.
++// Use of this source code is governed by a BSD-style license that can be
++// found in the LICENSE file.
++
++#ifndef DEVICE_HID_HID_CONNECTION_FREEBSD_H_
++#define DEVICE_HID_HID_CONNECTION_FREEBSD_H_
++
++#include <stddef.h>
++#include <stdint.h>
++
++#include "base/files/scoped_file.h"
++#include "base/macros.h"
++#include "base/memory/ptr_util.h"
++#include "base/memory/ref_counted_memory.h"
++#include "base/memory/weak_ptr.h"
++#include "base/sequence_checker.h"
++#include "services/device/hid/hid_connection.h"
++
++namespace base {
++class SequencedTaskRunner;
++}
++
++namespace net {
++class IOBuffer;
++}
++
++namespace device {
++
++class HidConnectionFreeBSD : public HidConnection {
++ public:
++ HidConnectionFreeBSD(
++ scoped_refptr<HidDeviceInfo> device_info,
++ base::ScopedFD fd,
++ scoped_refptr<base::SequencedTaskRunner> blocking_task_runner);
++
++ private:
++ friend class base::RefCountedThreadSafe<HidConnectionFreeBSD>;
++ class BlockingTaskHelper;
++
++ ~HidConnectionFreeBSD() override;
++
++ // HidConnection implementation.
++ void PlatformClose() override;
++ void PlatformWrite(scoped_refptr<base::RefCountedBytes> buffer,
++ WriteCallback callback) override;
++ void PlatformGetFeatureReport(uint8_t report_id,
++ ReadCallback callback) override;
++ void PlatformSendFeatureReport(scoped_refptr<base::RefCountedBytes> buffer,
++ WriteCallback callback) override;
++ void ProcessInputReport(scoped_refptr<base::RefCountedBytes> buffer,
++ size_t size);
++
++ // |helper_| lives on the sequence to which |blocking_task_runner_| posts
++ // tasks so all calls must be posted there including this object's
++ // destruction.
++ std::unique_ptr<BlockingTaskHelper> helper_;
++
++ const scoped_refptr<base::SequencedTaskRunner> blocking_task_runner_;
++ const scoped_refptr<base::SequencedTaskRunner> task_runner_;
++
++ SEQUENCE_CHECKER(sequence_checker_);
++
++ base::WeakPtrFactory<HidConnectionFreeBSD> weak_factory_;
++
++ DISALLOW_COPY_AND_ASSIGN(HidConnectionFreeBSD);
++};
++
++} // namespace device
++
++#endif // DEVICE_HID_HID_CONNECTION_FREEBSD_H_
diff --git a/devel/electron4/files/patch-services_device_hid_hid__service.cc b/devel/electron4/files/patch-services_device_hid_hid__service.cc
new file mode 100644
index 000000000000..9a2e71d86fc8
--- /dev/null
+++ b/devel/electron4/files/patch-services_device_hid_hid__service.cc
@@ -0,0 +1,20 @@
+--- services/device/hid/hid_service.cc.orig 2019-03-15 06:37:32 UTC
++++ services/device/hid/hid_service.cc
+@@ -16,6 +16,8 @@
+
+ #if defined(OS_LINUX) && defined(USE_UDEV)
+ #include "services/device/hid/hid_service_linux.h"
++#elif defined(OS_BSD)
++#include "services/device/hid/hid_service_freebsd.h"
+ #elif defined(OS_MACOSX)
+ #include "services/device/hid/hid_service_mac.h"
+ #elif defined(OS_WIN)
+@@ -36,6 +38,8 @@ constexpr base::TaskTraits HidService::kBlockingTaskTr
+ std::unique_ptr<HidService> HidService::Create() {
+ #if defined(OS_LINUX) && defined(USE_UDEV)
+ return base::WrapUnique(new HidServiceLinux());
++#elif defined(OS_BSD)
++ return base::WrapUnique(new HidServiceFreeBSD());
+ #elif defined(OS_MACOSX)
+ return base::WrapUnique(new HidServiceMac());
+ #elif defined(OS_WIN)
diff --git a/devel/electron4/files/patch-services_device_hid_hid__service__freebsd.cc b/devel/electron4/files/patch-services_device_hid_hid__service__freebsd.cc
new file mode 100644
index 000000000000..263ca29adb81
--- /dev/null
+++ b/devel/electron4/files/patch-services_device_hid_hid__service__freebsd.cc
@@ -0,0 +1,374 @@
+--- services/device/hid/hid_service_freebsd.cc.orig 2019-03-16 09:17:07 UTC
++++ services/device/hid/hid_service_freebsd.cc
+@@ -0,0 +1,371 @@
++// Copyright 2014 The Chromium Authors. All rights reserved.
++// Use of this source code is governed by a BSD-style license that can be
++// found in the LICENSE file.
++
++#include "services/device/hid/hid_service_freebsd.h"
++
++#include <dev/usb/usb_ioctl.h>
++#include <stdint.h>
++#include <sys/socket.h>
++#include <sys/un.h>
++
++#include <set>
++#include <string>
++#include <vector>
++
++#include "base/bind.h"
++#include "base/files/file_descriptor_watcher_posix.h"
++#include "base/files/file_enumerator.h"
++#include "base/location.h"
++#include "base/logging.h"
++#include "base/posix/eintr_wrapper.h"
++#include "base/single_thread_task_runner.h"
++#include "base/stl_util.h"
++#include "base/strings/pattern.h"
++#include "base/strings/stringprintf.h"
++#include "base/strings/sys_string_conversions.h"
++#include "base/strings/string_util.h"
++#include "base/strings/string_split.h"
++#include "base/task_scheduler/post_task.h"
++#include "base/threading/thread_restrictions.h"
++#include "base/threading/thread_task_runner_handle.h"
++#include "components/device_event_log/device_event_log.h"
++#include "services/device/hid/hid_connection_freebsd.h"
++
++const int kMaxPermissionChecks = 5;
++
++namespace device {
++
++struct HidServiceFreeBSD::ConnectParams {
++ ConnectParams(scoped_refptr<HidDeviceInfo> device_info,
++ const ConnectCallback& callback)
++ : device_info(std::move(device_info)),
++ callback(callback),
++ task_runner(base::ThreadTaskRunnerHandle::Get()),
++ blocking_task_runner(
++ base::CreateSequencedTaskRunnerWithTraits(kBlockingTaskTraits)) {}
++ ~ConnectParams() {}
++
++ scoped_refptr<HidDeviceInfo> device_info;
++ ConnectCallback callback;
++ scoped_refptr<base::SequencedTaskRunner> task_runner;
++ scoped_refptr<base::SequencedTaskRunner> blocking_task_runner;
++ base::ScopedFD fd;
++};
++
++class HidServiceFreeBSD::BlockingTaskHelper {
++ public:
++ BlockingTaskHelper(base::WeakPtr<HidServiceFreeBSD> service)
++ : service_(std::move(service)),
++ task_runner_(base::ThreadTaskRunnerHandle::Get()) {
++ DETACH_FROM_SEQUENCE(sequence_checker_);
++
++ timer_.reset(new base::RepeatingTimer());
++ devd_buffer_ = new net::IOBufferWithSize(1024);
++ }
++
++ ~BlockingTaskHelper() {
++ }
++
++ void Start() {
++ base::AssertBlockingAllowed();
++ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
++
++ const base::FilePath kDevRoot("/dev");
++ const std::string kUHIDPattern("/dev/uhid*");
++
++ base::FileEnumerator enumerator(kDevRoot, false, base::FileEnumerator::FILES);
++ do {
++ const base::FilePath next_device_path(enumerator.Next());
++ const std::string next_device = next_device_path.value();
++ if (next_device.empty())
++ break;
++
++ if (base::MatchPattern(next_device, kUHIDPattern))
++ OnDeviceAdded(next_device.substr(5));
++ } while (true);
++
++ SetupDevdMonitor();
++
++ task_runner_->PostTask(
++ FROM_HERE,
++ base::Bind(&HidServiceFreeBSD::FirstEnumerationComplete, service_));
++ }
++
++ bool HaveReadWritePermissions(std::string device_id) {
++ std::string device_node = "/dev/" + device_id;
++ base::AssertBlockingAllowed();
++
++ base::FilePath device_path(device_node);
++ base::File device_file;
++ int flags =
++ base::File::FLAG_OPEN | base::File::FLAG_READ | base::File::FLAG_WRITE;
++ device_file.Initialize(device_path, flags);
++ if (!device_file.IsValid())
++ return false;
++
++ return true;
++ }
++
++ void OnDeviceAdded(std::string device_id) {
++ std::string device_node = "/dev/" + device_id;
++ uint16_t vendor_id = 0xffff;
++ uint16_t product_id = 0xffff;
++ std::string product_name = "";
++ std::string serial_number = "";
++
++ std::vector<uint8_t> report_descriptor;
++
++ base::AssertBlockingAllowed();
++
++ base::FilePath device_path(device_node);
++ base::File device_file;
++ int flags =
++ base::File::FLAG_OPEN | base::File::FLAG_READ | base::File::FLAG_WRITE;
++ device_file.Initialize(device_path, flags);
++ if (!device_file.IsValid()) {
++ HID_LOG(ERROR) << "Failed to open '" << device_node
++ << "': "
++ << base::File::ErrorToString(device_file.error_details());
++ return;
++ }
++
++ base::ScopedFD fd;
++ fd.reset(device_file.TakePlatformFile());
++
++ struct usb_gen_descriptor ugd;
++ ugd.ugd_data = NULL;
++ ugd.ugd_maxlen = 0xffff;
++ int result = HANDLE_EINTR(
++ ioctl(fd.get(), USB_GET_REPORT_DESC, &ugd));
++
++ if (result < 0) {
++ HID_LOG(ERROR) << "Failed to get report descriptor size";
++ return;
++ }
++
++ report_descriptor.resize(ugd.ugd_actlen);
++
++ ugd.ugd_data = report_descriptor.data();
++ ugd.ugd_maxlen = ugd.ugd_actlen;
++ result = HANDLE_EINTR(
++ ioctl(fd.get(), USB_GET_REPORT_DESC, &ugd));
++
++ if (result < 0) {
++ HID_LOG(ERROR) << "Failed to get report descriptor";
++ return;
++ }
++
++ scoped_refptr<HidDeviceInfo> device_info(new HidDeviceInfo(
++ device_id, vendor_id, product_id, product_name, serial_number,
++ device::mojom::HidBusType::kHIDBusTypeUSB,
++ report_descriptor, device_node));
++
++ task_runner_->PostTask(FROM_HERE, base::Bind(&HidServiceFreeBSD::AddDevice,
++ service_, device_info));
++ }
++
++ void OnDeviceRemoved(std::string device_id) {
++ task_runner_->PostTask(
++ FROM_HERE, base::Bind(&HidServiceFreeBSD::RemoveDevice, service_,
++ device_id));
++ }
++
++ private:
++
++ void CheckPendingPermissionChange() {
++ base::AssertBlockingAllowed();
++ std::map<std::string, int>::iterator it;
++ for (it = permissions_checks_attempts_.begin(); it != permissions_checks_attempts_.end();) {
++ std::string device_name = it->first;
++ bool keep = true;
++ if (HaveReadWritePermissions(device_name)) {
++ OnDeviceAdded(device_name);
++ keep = false;
++ }
++ else if (it->second-- <= 0) {
++ HID_LOG(ERROR) << "Still don't have write permissions to '" << device_name
++ << "' after " << kMaxPermissionChecks << " attempts";
++ keep = false;
++ }
++
++ if (keep)
++ ++it;
++ else
++ permissions_checks_attempts_.erase(it++);
++ }
++
++ if (permissions_checks_attempts_.empty())
++ timer_->Stop();
++ }
++
++ void SetupDevdMonitor() {
++ base::AssertBlockingAllowed();
++
++ int devd_fd = socket(AF_UNIX, SOCK_SEQPACKET, 0);
++ if (devd_fd < 0)
++ return;
++
++ struct sockaddr_un sa;
++
++ sa.sun_family = AF_UNIX;
++ strlcpy(sa.sun_path, "/var/run/devd.seqpacket.pipe", sizeof(sa.sun_path));
++ if (connect(devd_fd, (struct sockaddr *) &sa, sizeof(sa)) < 0) {
++ close(devd_fd);
++ return;
++ }
++
++ devd_fd_.reset(devd_fd);
++ file_watcher_ = base::FileDescriptorWatcher::WatchReadable(
++ devd_fd_.get(), base::Bind(&BlockingTaskHelper::OnDevdMessageCanBeRead,
++ base::Unretained(this)));
++ }
++
++ void OnDevdMessageCanBeRead() {
++ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
++ ssize_t bytes_read = HANDLE_EINTR(recv(devd_fd_.get(), devd_buffer_->data(),
++ devd_buffer_->size() - 1, MSG_WAITALL));
++ if (bytes_read < 0) {
++ if (errno != EAGAIN) {
++ HID_LOG(ERROR) << "Read failed";
++ file_watcher_.reset();
++ }
++ return;
++ }
++
++ devd_buffer_->data()[bytes_read] = 0;
++ char *data = devd_buffer_->data();
++ // It may take some time for devd to change permissions
++ // on /dev/uhidX node. So do not fail immediately if
++ // open fail. Retry each second for kMaxPermissionChecks
++ // times before giving up entirely
++ if (base::StartsWith(data, "+uhid", base::CompareCase::SENSITIVE)) {
++ std::vector<std::string> parts = base::SplitString(
++ data, " ", base::TRIM_WHITESPACE, base::SPLIT_WANT_ALL);
++ if (!parts.empty()) {
++ std::string device_name = parts[0].substr(1); // skip '+'
++ if (HaveReadWritePermissions(device_name))
++ OnDeviceAdded(parts[0].substr(1));
++ else {
++ // Do not re-add to checks
++ if (permissions_checks_attempts_.find(device_name) == permissions_checks_attempts_.end()) {
++ permissions_checks_attempts_.insert(std::pair<std::string, int>(device_name, kMaxPermissionChecks));
++ timer_->Start(FROM_HERE, base::TimeDelta::FromSeconds(1),
++ this, &BlockingTaskHelper::CheckPendingPermissionChange);
++ }
++ }
++ }
++ }
++
++ if (base::StartsWith(data, "-uhid", base::CompareCase::SENSITIVE)) {
++ std::vector<std::string> parts = base::SplitString(
++ data, " ", base::TRIM_WHITESPACE, base::SPLIT_WANT_ALL);
++ if (!parts.empty()) {
++ std::string device_name = parts[0].substr(1); // skip '-'
++ auto it = permissions_checks_attempts_.find(device_name);
++ if (it != permissions_checks_attempts_.end()) {
++ permissions_checks_attempts_.erase(it);
++ if (permissions_checks_attempts_.empty())
++ timer_->Stop();
++ }
++ OnDeviceRemoved(parts[0].substr(1));
++ }
++ }
++ }
++
++ SEQUENCE_CHECKER(sequence_checker_);
++
++ // This weak pointer is only valid when checked on this task runner.
++ base::WeakPtr<HidServiceFreeBSD> service_;
++ scoped_refptr<base::SequencedTaskRunner> task_runner_;
++ std::unique_ptr<base::FileDescriptorWatcher::Controller> file_watcher_;
++ std::unique_ptr<base::RepeatingTimer> timer_;
++ base::ScopedFD devd_fd_;
++ scoped_refptr<net::IOBufferWithSize> devd_buffer_;
++ std::map<std::string, int> permissions_checks_attempts_;
++
++ DISALLOW_COPY_AND_ASSIGN(BlockingTaskHelper);
++};
++
++HidServiceFreeBSD::HidServiceFreeBSD()
++ : task_runner_(base::ThreadTaskRunnerHandle::Get()),
++ blocking_task_runner_(
++ base::CreateSequencedTaskRunnerWithTraits(kBlockingTaskTraits)),
++ weak_factory_(this) {
++ helper_ = std::make_unique<BlockingTaskHelper>(weak_factory_.GetWeakPtr());
++ blocking_task_runner_->PostTask(
++ FROM_HERE,
++ base::Bind(&BlockingTaskHelper::Start, base::Unretained(helper_.get())));
++}
++
++HidServiceFreeBSD::~HidServiceFreeBSD() {
++ blocking_task_runner_->DeleteSoon(FROM_HERE, helper_.release());
++}
++
++base::WeakPtr<HidService> HidServiceFreeBSD::GetWeakPtr() {
++ return weak_factory_.GetWeakPtr();
++}
++
++// static
++void HidServiceFreeBSD::OpenOnBlockingThread(
++ std::unique_ptr<ConnectParams> params) {
++ base::AssertBlockingAllowed();
++ scoped_refptr<base::SequencedTaskRunner> task_runner = params->task_runner;
++
++ base::FilePath device_path(params->device_info->device_node());
++ base::File device_file;
++ int flags =
++ base::File::FLAG_OPEN | base::File::FLAG_READ | base::File::FLAG_WRITE;
++ device_file.Initialize(device_path, flags);
++ if (!device_file.IsValid()) {
++ HID_LOG(EVENT) << "Failed to open '" << params->device_info->device_node()
++ << "': "
++ << base::File::ErrorToString(device_file.error_details());
++ task_runner->PostTask(FROM_HERE, base::Bind(params->callback, nullptr));
++ return;
++ }
++ params->fd.reset(device_file.TakePlatformFile());
++ FinishOpen(std::move(params));
++}
++
++void HidServiceFreeBSD::Connect(const std::string& device_guid,
++ const ConnectCallback& callback) {
++ DCHECK(thread_checker_.CalledOnValidThread());
++
++ const auto& map_entry = devices().find(device_guid);
++ if (map_entry == devices().end()) {
++ base::ThreadTaskRunnerHandle::Get()->PostTask(
++ FROM_HERE, base::Bind(callback, nullptr));
++ return;
++ }
++
++ scoped_refptr<HidDeviceInfo> device_info = map_entry->second;
++
++ auto params = std::make_unique<ConnectParams>(device_info, callback);
++
++ scoped_refptr<base::SequencedTaskRunner> blocking_task_runner =
++ params->blocking_task_runner;
++ blocking_task_runner->PostTask(
++ FROM_HERE, base::Bind(&HidServiceFreeBSD::OpenOnBlockingThread,
++ base::Passed(&params)));
++}
++
++// static
++void HidServiceFreeBSD::FinishOpen(std::unique_ptr<ConnectParams> params) {
++ base::AssertBlockingAllowed();
++ scoped_refptr<base::SequencedTaskRunner> task_runner = params->task_runner;
++
++ task_runner->PostTask(
++ FROM_HERE,
++ base::Bind(&HidServiceFreeBSD::CreateConnection, base::Passed(&params)));
++}
++
++// static
++void HidServiceFreeBSD::CreateConnection(std::unique_ptr<ConnectParams> params) {
++ DCHECK(params->fd.is_valid());
++ params->callback.Run(base::MakeRefCounted<HidConnectionFreeBSD>(
++ std::move(params->device_info), std::move(params->fd),
++ std::move(params->blocking_task_runner)));
++}
++
++} // namespace device
diff --git a/devel/electron4/files/patch-services_device_hid_hid__service__freebsd.h b/devel/electron4/files/patch-services_device_hid_hid__service__freebsd.h
new file mode 100644
index 000000000000..e0571be765e7
--- /dev/null
+++ b/devel/electron4/files/patch-services_device_hid_hid__service__freebsd.h
@@ -0,0 +1,51 @@
+--- services/device/hid/hid_service_freebsd.h.orig 2019-03-16 09:17:07 UTC
++++ services/device/hid/hid_service_freebsd.h
+@@ -0,0 +1,48 @@
++// Copyright 2014 The Chromium Authors. All rights reserved.
++// Use of this source code is governed by a BSD-style license that can be
++// found in the LICENSE file.
++
++#ifndef DEVICE_HID_HID_SERVICE_FREEBSD_H_
++#define DEVICE_HID_HID_SERVICE_FREEBSD_H_
++
++#include <string>
++
++#include "base/macros.h"
++#include "base/memory/ref_counted.h"
++#include "base/memory/weak_ptr.h"
++#include "base/timer/timer.h"
++#include "services/device/hid/hid_service.h"
++#include "net/base/io_buffer.h"
++
++namespace device {
++
++class HidServiceFreeBSD : public HidService {
++ public:
++ HidServiceFreeBSD();
++ ~HidServiceFreeBSD() override;
++
++ void Connect(const std::string& device_guid,
++ const ConnectCallback& connect) override;
++ base::WeakPtr<HidService> GetWeakPtr() override;
++
++ private:
++ struct ConnectParams;
++ class BlockingTaskHelper;
++
++ static void OpenOnBlockingThread(std::unique_ptr<ConnectParams> params);
++ static void FinishOpen(std::unique_ptr<ConnectParams> params);
++ static void CreateConnection(std::unique_ptr<ConnectParams> params);
++
++ const scoped_refptr<base::SequencedTaskRunner> task_runner_;
++ const scoped_refptr<base::SequencedTaskRunner> blocking_task_runner_;
++ // |helper_| lives on the sequence |blocking_task_runner_| posts to and holds
++ // a weak reference back to the service that owns it.
++ std::unique_ptr<BlockingTaskHelper> helper_;
++ base::WeakPtrFactory<HidServiceFreeBSD> weak_factory_;
++
++ DISALLOW_COPY_AND_ASSIGN(HidServiceFreeBSD);
++};
++
++} // namespace device
++
++#endif // DEVICE_HID_HID_SERVICE_FREEBSD_H_
diff --git a/devel/electron4/files/patch-services_device_time__zone__monitor_time__zone__monitor.cc b/devel/electron4/files/patch-services_device_time__zone__monitor_time__zone__monitor.cc
new file mode 100644
index 000000000000..55aeb6029ea4
--- /dev/null
+++ b/devel/electron4/files/patch-services_device_time__zone__monitor_time__zone__monitor.cc
@@ -0,0 +1,11 @@
+--- services/device/time_zone_monitor/time_zone_monitor.cc.orig 2019-03-15 06:37:32 UTC
++++ services/device/time_zone_monitor/time_zone_monitor.cc
+@@ -41,7 +41,7 @@ void TimeZoneMonitor::NotifyClients() {
+ #else
+ std::unique_ptr<icu::TimeZone> new_zone(icu::TimeZone::detectHostTimeZone());
+ #endif
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // We get here multiple times on Linux per a single tz change, but
+ // want to update the ICU default zone and notify renderer only once.
+ std::unique_ptr<icu::TimeZone> current_zone(icu::TimeZone::createDefault());
diff --git a/devel/electron4/files/patch-services_device_time__zone__monitor_time__zone__monitor__linux.cc b/devel/electron4/files/patch-services_device_time__zone__monitor_time__zone__monitor__linux.cc
new file mode 100644
index 000000000000..601d3deda732
--- /dev/null
+++ b/devel/electron4/files/patch-services_device_time__zone__monitor_time__zone__monitor__linux.cc
@@ -0,0 +1,14 @@
+--- services/device/time_zone_monitor/time_zone_monitor_linux.cc.orig 2019-03-15 06:37:32 UTC
++++ services/device/time_zone_monitor/time_zone_monitor_linux.cc
+@@ -89,7 +89,11 @@ class TimeZoneMonitorLinuxImpl
+ // false positives are harmless, assuming the false positive rate is
+ // reasonable.
+ const char* const kFilesToWatch[] = {
++#if defined(OS_BSD)
++ "/etc/localtime",
++#else
+ "/etc/localtime", "/etc/timezone", "/etc/TZ",
++#endif
+ };
+
+ for (size_t index = 0; index < arraysize(kFilesToWatch); ++index) {
diff --git a/devel/electron4/files/patch-services_network_BUILD.gn b/devel/electron4/files/patch-services_network_BUILD.gn
new file mode 100644
index 000000000000..1913237a8c1f
--- /dev/null
+++ b/devel/electron4/files/patch-services_network_BUILD.gn
@@ -0,0 +1,10 @@
+--- services/network/BUILD.gn.orig 2019-03-15 06:37:32 UTC
++++ services/network/BUILD.gn
+@@ -160,7 +160,6 @@ component("network_service") {
+
+ if (is_linux) {
+ deps += [
+- "//sandbox/linux:sandbox_services",
+ "//services/service_manager/sandbox:sandbox",
+ ]
+ }
diff --git a/devel/electron4/files/patch-services_network_network__context.cc b/devel/electron4/files/patch-services_network_network__context.cc
new file mode 100644
index 000000000000..3e1ff9add3cc
--- /dev/null
+++ b/devel/electron4/files/patch-services_network_network__context.cc
@@ -0,0 +1,38 @@
+--- services/network/network_context.cc.orig 2019-03-16 09:15:20 UTC
++++ services/network/network_context.cc
+@@ -103,7 +103,7 @@
+ #endif // defined(USE_NSS_CERTS)
+
+ #if defined(OS_ANDROID) || defined(OS_FUCHSIA) || \
+- (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_MACOSX)
++ ((defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS)) || defined(OS_MACOSX)
+ #include "net/cert/cert_net_fetcher.h"
+ #include "net/cert_net/cert_net_fetcher_impl.h"
+ #endif
+@@ -380,7 +380,7 @@ NetworkContext::~NetworkContext() {
+ #endif
+
+ #if defined(OS_ANDROID) || defined(OS_FUCHSIA) || \
+- (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_MACOSX)
++ ((defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS)) || defined(OS_MACOSX)
+ net::ShutdownGlobalCertNetFetcher();
+ #endif
+ }
+@@ -833,7 +833,7 @@ URLRequestContextOwner NetworkContext::ApplyContextPar
+
+ net::CookieCryptoDelegate* crypto_delegate = nullptr;
+ if (params_->enable_encrypted_cookies) {
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) && !defined(IS_CHROMECAST)
++#if (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS) && !defined(IS_CHROMECAST)
+ DCHECK(network_service_->os_crypt_config_set())
+ << "NetworkService::SetCryptConfig must be called before creating a "
+ "NetworkContext with encrypted cookies.";
+@@ -1105,7 +1105,7 @@ URLRequestContextOwner NetworkContext::ApplyContextPar
+ net::SetURLRequestContextForNSSHttpIO(result.url_request_context.get());
+ #endif
+ #if defined(OS_ANDROID) || defined(OS_FUCHSIA) || \
+- (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_MACOSX)
++ ((defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS)) || defined(OS_MACOSX)
+ net::SetGlobalCertNetFetcher(
+ net::CreateCertNetFetcher(result.url_request_context.get()));
+ #endif
diff --git a/devel/electron4/files/patch-services_network_network__sandbox__hook__linux.cc b/devel/electron4/files/patch-services_network_network__sandbox__hook__linux.cc
new file mode 100644
index 000000000000..1c1ca125bbdc
--- /dev/null
+++ b/devel/electron4/files/patch-services_network_network__sandbox__hook__linux.cc
@@ -0,0 +1,18 @@
+--- services/network/network_sandbox_hook_linux.cc.orig 2019-03-15 06:37:32 UTC
++++ services/network/network_sandbox_hook_linux.cc
+@@ -14,6 +14,7 @@ using sandbox::syscall_broker::MakeBrokerCommandSet;
+ namespace network {
+
+ bool NetworkPreSandboxHook(service_manager::SandboxLinux::Options options) {
++#if !defined(OS_BSD)
+ auto* instance = service_manager::SandboxLinux::GetInstance();
+
+ // TODO(tsepez): remove universal permission under filesytem root.
+@@ -32,6 +33,7 @@ bool NetworkPreSandboxHook(service_manager::SandboxLin
+ service_manager::SandboxLinux::PreSandboxHook(), options);
+
+ instance->EngageNamespaceSandbox(false /* from_zygote */);
++#endif
+ return true;
+ }
+
diff --git a/devel/electron4/files/patch-services_network_network__service.cc b/devel/electron4/files/patch-services_network_network__service.cc
new file mode 100644
index 000000000000..d0336da449ca
--- /dev/null
+++ b/devel/electron4/files/patch-services_network_network__service.cc
@@ -0,0 +1,20 @@
+--- services/network/network_service.cc.orig 2019-04-06 12:09:25 UTC
++++ services/network/network_service.cc
+@@ -39,7 +39,7 @@
+ #include "third_party/boringssl/src/include/openssl/cpu.h"
+ #endif
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) && !defined(IS_CHROMECAST)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS) && !defined(IS_CHROMECAST)) || defined(OS_BSD)
+ #include "components/os_crypt/key_storage_config_linux.h"
+ #include "components/os_crypt/os_crypt.h"
+ #endif
+@@ -379,7 +379,7 @@ void NetworkService::UpdateSignedTreeHead(const net::c
+ sth_distributor_->NewSTHObserved(sth);
+ }
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ void NetworkService::SetCryptConfig(mojom::CryptConfigPtr crypt_config) {
+ #if !defined(IS_CHROMECAST)
+ DCHECK(!os_crypt_config_set_);
diff --git a/devel/electron4/files/patch-services_network_network__service.h b/devel/electron4/files/patch-services_network_network__service.h
new file mode 100644
index 000000000000..e7a89927de5d
--- /dev/null
+++ b/devel/electron4/files/patch-services_network_network__service.h
@@ -0,0 +1,11 @@
+--- services/network/network_service.h.orig 2019-03-16 09:15:20 UTC
++++ services/network/network_service.h
+@@ -138,7 +138,7 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) NetworkService
+ void GetTotalNetworkUsages(
+ mojom::NetworkService::GetTotalNetworkUsagesCallback callback) override;
+ void UpdateSignedTreeHead(const net::ct::SignedTreeHead& sth) override;
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ void SetCryptConfig(mojom::CryptConfigPtr crypt_config) override;
+ #endif
+
diff --git a/devel/electron4/files/patch-services_resource__coordinator_public_cpp_memory__instrumentation_os__metrics.h b/devel/electron4/files/patch-services_resource__coordinator_public_cpp_memory__instrumentation_os__metrics.h
new file mode 100644
index 000000000000..08fdffc56724
--- /dev/null
+++ b/devel/electron4/files/patch-services_resource__coordinator_public_cpp_memory__instrumentation_os__metrics.h
@@ -0,0 +1,11 @@
+--- services/resource_coordinator/public/cpp/memory_instrumentation/os_metrics.h.orig 2019-03-15 06:37:32 UTC
++++ services/resource_coordinator/public/cpp/memory_instrumentation/os_metrics.h
+@@ -36,7 +36,7 @@ class SERVICES_RESOURCE_COORDINATOR_PUBLIC_CPP_EXPORT
+ static std::vector<mojom::VmRegionPtr> GetProcessModules(base::ProcessId);
+ #endif
+
+-#if defined(OS_LINUX) || defined(OS_ANDROID)
++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
+ static void SetProcSmapsForTesting(FILE*);
+ #endif // defined(OS_LINUX)
+ };
diff --git a/devel/electron4/files/patch-services_resource__coordinator_public_cpp_memory__instrumentation_os__metrics__linux.cc b/devel/electron4/files/patch-services_resource__coordinator_public_cpp_memory__instrumentation_os__metrics__linux.cc
new file mode 100644
index 000000000000..25b030d1bc5f
--- /dev/null
+++ b/devel/electron4/files/patch-services_resource__coordinator_public_cpp_memory__instrumentation_os__metrics__linux.cc
@@ -0,0 +1,40 @@
+--- services/resource_coordinator/public/cpp/memory_instrumentation/os_metrics_linux.cc.orig 2019-03-15 06:37:32 UTC
++++ services/resource_coordinator/public/cpp/memory_instrumentation/os_metrics_linux.cc
+@@ -16,8 +16,10 @@
+ #include "build/build_config.h"
+ #include "services/resource_coordinator/public/cpp/memory_instrumentation/os_metrics.h"
+
++#if !defined(OS_BSD)
+ // Symbol with virtual address of the start of ELF header of the current binary.
+ extern char __ehdr_start;
++#endif
+
+ namespace memory_instrumentation {
+
+@@ -101,7 +103,7 @@ bool ParseSmapsHeader(const char* header_line, VmRegio
+ // Build ID is needed to symbolize heap profiles, and is generated only on
+ // official builds. Build ID is only added for the current library (chrome)
+ // since it is racy to read other libraries which can be unmapped any time.
+-#if defined(OFFICIAL_BUILD)
++#if defined(OFFICIAL_BUILD) && !defined(OS_BSD)
+ uintptr_t addr = reinterpret_cast<uintptr_t>(&ParseSmapsHeader);
+ if (addr >= region->start_address && addr < end_addr) {
+ base::Optional<std::string> buildid =
+@@ -196,6 +198,9 @@ void OSMetrics::SetProcSmapsForTesting(FILE* f) {
+ // static
+ bool OSMetrics::FillOSMemoryDump(base::ProcessId pid,
+ mojom::RawOSMemDump* dump) {
++#if defined(OS_BSD)
++ return false;
++#else
+ base::ScopedFD autoclose = OpenStatm(pid);
+ int statm_fd = autoclose.get();
+
+@@ -221,6 +226,7 @@ bool OSMetrics::FillOSMemoryDump(base::ProcessId pid,
+ dump->resident_set_kb = process_metrics->GetResidentSetSize() / 1024;
+
+ return true;
++#endif
+ }
+
+ // static
diff --git a/devel/electron4/files/patch-services_service__manager_embedder_main.cc b/devel/electron4/files/patch-services_service__manager_embedder_main.cc
new file mode 100644
index 000000000000..b4f14c9b8078
--- /dev/null
+++ b/devel/electron4/files/patch-services_service__manager_embedder_main.cc
@@ -0,0 +1,11 @@
+--- services/service_manager/embedder/main.cc.orig 2019-03-15 06:37:32 UTC
++++ services/service_manager/embedder/main.cc
+@@ -331,7 +331,7 @@ int Main(const MainParams& params) {
+ #endif
+ base::EnableTerminationOnOutOfMemory();
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // The various desktop environments set this environment variable that
+ // allows the dbus client library to connect directly to the bus. When this
+ // variable is not set (test environments like xvfb-run), the dbus client
diff --git a/devel/electron4/files/patch-services_service__manager_embedder_set__process__title__linux.cc b/devel/electron4/files/patch-services_service__manager_embedder_set__process__title__linux.cc
new file mode 100644
index 000000000000..6f52967eb2c1
--- /dev/null
+++ b/devel/electron4/files/patch-services_service__manager_embedder_set__process__title__linux.cc
@@ -0,0 +1,19 @@
+--- services/service_manager/embedder/set_process_title_linux.cc.orig 2019-03-15 06:25:51 UTC
++++ services/service_manager/embedder/set_process_title_linux.cc
+@@ -49,6 +49,8 @@
+ extern char** environ;
+
+ static char** g_main_argv = NULL;
++
++#if !defined(OS_FREEBSD)
+ static char* g_orig_argv0 = NULL;
+
+ void setproctitle(const char* fmt, ...) {
+@@ -101,6 +103,7 @@ void setproctitle(const char* fmt, ...) {
+ va_end(ap);
+ g_main_argv[1] = NULL;
+ }
++#endif
+
+ // A version of this built into glibc would not need this function, since
+ // it could stash the argv pointer in __libc_start_main(). But we need it.
diff --git a/devel/electron4/files/patch-services_service__manager_embedder_set__process__title__linux.h b/devel/electron4/files/patch-services_service__manager_embedder_set__process__title__linux.h
new file mode 100644
index 000000000000..04f03d041f15
--- /dev/null
+++ b/devel/electron4/files/patch-services_service__manager_embedder_set__process__title__linux.h
@@ -0,0 +1,20 @@
+--- services/service_manager/embedder/set_process_title_linux.h.orig 2019-03-15 06:25:51 UTC
++++ services/service_manager/embedder/set_process_title_linux.h
+@@ -5,6 +5,9 @@
+ #ifndef SERVICES_SERVICE_MANAGER_EMBEDDER_SET_PROCESS_TITLE_LINUX_H_
+ #define SERVICES_SERVICE_MANAGER_EMBEDDER_SET_PROCESS_TITLE_LINUX_H_
+
++#include "build/build_config.h"
++
++#if !defined(OS_FREEBSD)
+ // Set the process title that will show in "ps" and similar tools. Takes
+ // printf-style format string and arguments. After calling setproctitle()
+ // the original main() argv[] array should not be used. By default, the
+@@ -14,6 +17,7 @@
+ // This signature and naming is to be compatible with most other Unix
+ // implementations of setproctitle().
+ void setproctitle(const char* fmt, ...);
++#endif
+
+ // Initialize state needed for setproctitle() on Linux. Pass the argv pointer
+ // from main() to setproctitle_init() before calling setproctitle().
diff --git a/devel/electron4/files/patch-services_service__manager_public_cpp_standalone__service_BUILD.gn b/devel/electron4/files/patch-services_service__manager_public_cpp_standalone__service_BUILD.gn
new file mode 100644
index 000000000000..3d83a650f700
--- /dev/null
+++ b/devel/electron4/files/patch-services_service__manager_public_cpp_standalone__service_BUILD.gn
@@ -0,0 +1,11 @@
+--- services/service_manager/public/cpp/standalone_service/BUILD.gn.orig 2019-03-15 06:37:32 UTC
++++ services/service_manager/public/cpp/standalone_service/BUILD.gn
+@@ -25,7 +25,7 @@ source_set("standalone_service") {
+ "//services/service_manager/public/mojom",
+ ]
+
+- if (is_linux) {
++ if (is_linux && !is_bsd) {
+ deps += [
+ "//sandbox/linux:sandbox",
+ "//sandbox/linux:sandbox_services",
diff --git a/devel/electron4/files/patch-services_service__manager_public_cpp_standalone__service_standalone__service.cc b/devel/electron4/files/patch-services_service__manager_public_cpp_standalone__service_standalone__service.cc
new file mode 100644
index 000000000000..30966c441c7e
--- /dev/null
+++ b/devel/electron4/files/patch-services_service__manager_public_cpp_standalone__service_standalone__service.cc
@@ -0,0 +1,11 @@
+--- services/service_manager/public/cpp/standalone_service/standalone_service.cc.orig 2019-03-15 06:37:32 UTC
++++ services/service_manager/public/cpp/standalone_service/standalone_service.cc
+@@ -62,6 +62,8 @@ void RunStandaloneService(const StandaloneServiceCallb
+ command_line.GetSwitchValueASCII(switches::kServiceSandboxType)),
+ SandboxLinux::PreSandboxHook(), sandbox_options);
+ }
++#elif defined(OS_BSD)
++ NOTIMPLEMENTED();
+ #endif
+
+ mojo::core::Init();
diff --git a/devel/electron4/files/patch-services_service__manager_runner_host_BUILD.gn b/devel/electron4/files/patch-services_service__manager_runner_host_BUILD.gn
new file mode 100644
index 000000000000..33b6a6ab1695
--- /dev/null
+++ b/devel/electron4/files/patch-services_service__manager_runner_host_BUILD.gn
@@ -0,0 +1,11 @@
+--- services/service_manager/runner/host/BUILD.gn.orig 2019-03-15 06:37:32 UTC
++++ services/service_manager/runner/host/BUILD.gn
+@@ -31,7 +31,7 @@ source_set("lib") {
+ "//mojo/public/cpp/system",
+ ]
+
+- if (is_linux) {
++ if (is_linux && !is_bsd) {
+ deps += [ "//sandbox/linux:sandbox_services" ]
+ }
+
diff --git a/devel/electron4/files/patch-services_service__manager_sandbox_BUILD.gn b/devel/electron4/files/patch-services_service__manager_sandbox_BUILD.gn
new file mode 100644
index 000000000000..a98944b9589a
--- /dev/null
+++ b/devel/electron4/files/patch-services_service__manager_sandbox_BUILD.gn
@@ -0,0 +1,11 @@
+--- services/service_manager/sandbox/BUILD.gn.orig 2019-03-15 06:37:32 UTC
++++ services/service_manager/sandbox/BUILD.gn
+@@ -28,7 +28,7 @@ component("sandbox") {
+ "//base",
+ "//sandbox:common",
+ ]
+- if (is_linux) {
++ if (is_linux && !is_bsd) {
+ sources += [
+ "linux/bpf_base_policy_linux.cc",
+ "linux/bpf_base_policy_linux.h",
diff --git a/devel/electron4/files/patch-services_service__manager_zygote_common_zygote__features.gni b/devel/electron4/files/patch-services_service__manager_zygote_common_zygote__features.gni
new file mode 100644
index 000000000000..e1c157dde249
--- /dev/null
+++ b/devel/electron4/files/patch-services_service__manager_zygote_common_zygote__features.gni
@@ -0,0 +1,8 @@
+--- services/service_manager/zygote/common/zygote_features.gni.orig 2019-03-15 06:25:51 UTC
++++ services/service_manager/zygote/common/zygote_features.gni
+@@ -2,4 +2,4 @@
+ # Use of this source code is governed by a BSD-style license that can be
+ # found in the LICENSE file.
+
+-use_zygote_handle = is_posix && !is_android && !is_mac
++use_zygote_handle = is_posix && !is_android && !is_mac && !is_bsd
diff --git a/devel/electron4/files/patch-services_service__manager_zygote_host_zygote__host__impl__linux.cc b/devel/electron4/files/patch-services_service__manager_zygote_host_zygote__host__impl__linux.cc
new file mode 100644
index 000000000000..ba7c5d496f74
--- /dev/null
+++ b/devel/electron4/files/patch-services_service__manager_zygote_host_zygote__host__impl__linux.cc
@@ -0,0 +1,40 @@
+--- services/service_manager/zygote/host/zygote_host_impl_linux.cc.orig 2019-03-15 06:37:32 UTC
++++ services/service_manager/zygote/host/zygote_host_impl_linux.cc
+@@ -72,6 +72,7 @@ ZygoteHostImpl* ZygoteHostImpl::GetInstance() {
+ }
+
+ void ZygoteHostImpl::Init(const base::CommandLine& command_line) {
++#if !defined(OS_BSD)
+ if (command_line.HasSwitch(service_manager::switches::kNoSandbox)) {
+ return;
+ }
+@@ -122,6 +123,7 @@ void ZygoteHostImpl::Init(const base::CommandLine& com
+ "you can try using --"
+ << service_manager::switches::kNoSandbox << ".";
+ }
++#endif
+ }
+
+ void ZygoteHostImpl::AddZygotePid(pid_t pid) {
+@@ -146,6 +148,7 @@ pid_t ZygoteHostImpl::LaunchZygote(
+ base::CommandLine* cmd_line,
+ base::ScopedFD* control_fd,
+ base::FileHandleMappingVector additional_remapped_fds) {
++#if !defined(OS_BSD)
+ int fds[2];
+ CHECK_EQ(0, socketpair(AF_UNIX, SOCK_SEQPACKET, 0, fds));
+ CHECK(base::UnixDomainSocket::EnableReceiveProcessId(fds[0]));
+@@ -210,9 +213,12 @@ pid_t ZygoteHostImpl::LaunchZygote(
+
+ AddZygotePid(pid);
+ return pid;
++#else
++ return 0;
++#endif
+ }
+
+-#if !defined(OS_OPENBSD)
++#if !defined(OS_BSD)
+ void ZygoteHostImpl::AdjustRendererOOMScore(base::ProcessHandle pid,
+ int score) {
+ // 1) You can't change the oom_score_adj of a non-dumpable process
diff --git a/devel/electron4/files/patch-services_service__manager_zygote_host_zygote__host__impl__linux.h b/devel/electron4/files/patch-services_service__manager_zygote_host_zygote__host__impl__linux.h
new file mode 100644
index 000000000000..31944c53348f
--- /dev/null
+++ b/devel/electron4/files/patch-services_service__manager_zygote_host_zygote__host__impl__linux.h
@@ -0,0 +1,13 @@
+--- services/service_manager/zygote/host/zygote_host_impl_linux.h.orig 2019-03-15 06:37:32 UTC
++++ services/service_manager/zygote/host/zygote_host_impl_linux.h
+@@ -44,8 +44,10 @@ class COMPONENT_EXPORT(SERVICE_MANAGER_ZYGOTE) ZygoteH
+ base::ScopedFD* control_fd,
+ base::FileHandleMappingVector additional_remapped_fds);
+
++#if !defined(OS_BSD)
+ void AdjustRendererOOMScore(base::ProcessHandle process_handle,
+ int score) override;
++#endif
+
+ private:
+ friend struct base::DefaultSingletonTraits<ZygoteHostImpl>;
diff --git a/devel/electron4/files/patch-services_service__manager_zygote_zygote__host__linux.h b/devel/electron4/files/patch-services_service__manager_zygote_zygote__host__linux.h
new file mode 100644
index 000000000000..d97c707f66f3
--- /dev/null
+++ b/devel/electron4/files/patch-services_service__manager_zygote_zygote__host__linux.h
@@ -0,0 +1,16 @@
+--- services/service_manager/zygote/zygote_host_linux.h.orig 2019-03-15 06:25:51 UTC
++++ services/service_manager/zygote/zygote_host_linux.h
+@@ -30,11 +30,13 @@ class ZygoteHost {
+ // after the first render has been forked.
+ virtual int GetRendererSandboxStatus() const = 0;
+
++#if !defined(OS_BSD)
+ // Adjust the OOM score of the given renderer's PID. The allowed
+ // range for the score is [0, 1000], where higher values are more
+ // likely to be killed by the OOM killer.
+ virtual void AdjustRendererOOMScore(base::ProcessHandle process_handle,
+ int score) = 0;
++#endif
+ };
+
+ } // namespace service_manager
diff --git a/devel/electron4/files/patch-services_service__manager_zygote_zygote__linux.cc b/devel/electron4/files/patch-services_service__manager_zygote_zygote__linux.cc
new file mode 100644
index 000000000000..54925c175d6e
--- /dev/null
+++ b/devel/electron4/files/patch-services_service__manager_zygote_zygote__linux.cc
@@ -0,0 +1,15 @@
+--- services/service_manager/zygote/zygote_linux.cc.orig 2019-03-15 06:25:51 UTC
++++ services/service_manager/zygote/zygote_linux.cc
+@@ -1,6 +1,7 @@
+ // Copyright (c) 2012 The Chromium Authors. All rights reserved.
+ // Use of this source code is governed by a BSD-style license that can be
+ // found in the LICENSE file.
++#if 0
+
+ #include "services/service_manager/zygote/zygote_linux.h"
+
+@@ -664,3 +665,4 @@ bool Zygote::HandleGetSandboxStatus(int fd, base::Pick
+ }
+
+ } // namespace service_manager
++#endif
diff --git a/devel/electron4/files/patch-services_service__manager_zygote_zygote__main__linux.cc b/devel/electron4/files/patch-services_service__manager_zygote_zygote__main__linux.cc
new file mode 100644
index 000000000000..d1ed79c1c352
--- /dev/null
+++ b/devel/electron4/files/patch-services_service__manager_zygote_zygote__main__linux.cc
@@ -0,0 +1,48 @@
+--- services/service_manager/zygote/zygote_main_linux.cc.orig 2019-03-15 06:37:32 UTC
++++ services/service_manager/zygote/zygote_main_linux.cc
+@@ -11,7 +11,9 @@
+ #include <stddef.h>
+ #include <stdint.h>
+ #include <string.h>
++#if !defined(OS_BSD)
+ #include <sys/prctl.h>
++#endif
+ #include <sys/socket.h>
+ #include <sys/types.h>
+ #include <unistd.h>
+@@ -101,6 +103,7 @@ static bool CreateInitProcessReaper(
+ // created through the setuid sandbox.
+ static bool EnterSuidSandbox(sandbox::SetuidSandboxClient* setuid_sandbox,
+ base::OnceClosure post_fork_parent_callback) {
++#if !defined(OS_BSD)
+ DCHECK(setuid_sandbox);
+ DCHECK(setuid_sandbox->IsSuidSandboxChild());
+
+@@ -133,6 +136,9 @@ static bool EnterSuidSandbox(sandbox::SetuidSandboxCli
+
+ CHECK(service_manager::SandboxDebugHandling::SetDumpableStatusAndHandlers());
+ return true;
++#else
++ return false;
++#endif
+ }
+
+ static void DropAllCapabilities(int proc_fd) {
+@@ -178,6 +184,7 @@ static void EnterLayerOneSandbox(service_manager::Sand
+
+ bool ZygoteMain(
+ std::vector<std::unique_ptr<ZygoteForkDelegate>> fork_delegates) {
++#if !defined(OS_BSD)
+ sandbox::SetAmZygoteOrRenderer(true, GetSandboxFD());
+
+ auto* linux_sandbox = service_manager::SandboxLinux::GetInstance();
+@@ -240,6 +247,9 @@ bool ZygoteMain(
+
+ // This function call can return multiple times, once per fork().
+ return zygote.ProcessRequests();
++#else
++ return false;
++#endif
+ }
+
+ } // namespace service_manager
diff --git a/devel/electron4/files/patch-services_tracing_public_cpp_trace__event__agent.cc b/devel/electron4/files/patch-services_tracing_public_cpp_trace__event__agent.cc
new file mode 100644
index 000000000000..6301a89a6a75
--- /dev/null
+++ b/devel/electron4/files/patch-services_tracing_public_cpp_trace__event__agent.cc
@@ -0,0 +1,11 @@
+--- services/tracing/public/cpp/trace_event_agent.cc.orig 2019-03-15 06:37:32 UTC
++++ services/tracing/public/cpp/trace_event_agent.cc
+@@ -23,7 +23,7 @@
+ #include "services/tracing/public/mojom/constants.mojom.h"
+
+ #if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_MACOSX) || \
+- defined(OS_WIN)
++ defined(OS_WIN) || defined(OS_BSD)
+ #define PERFETTO_AVAILABLE
+ #include "services/tracing/public/cpp/perfetto/producer_client.h"
+ #endif
diff --git a/devel/electron4/files/patch-services_tracing_tracing__service.h b/devel/electron4/files/patch-services_tracing_tracing__service.h
new file mode 100644
index 000000000000..65df59fb98dc
--- /dev/null
+++ b/devel/electron4/files/patch-services_tracing_tracing__service.h
@@ -0,0 +1,11 @@
+--- services/tracing/tracing_service.h.orig 2019-03-15 06:37:32 UTC
++++ services/tracing/tracing_service.h
+@@ -18,7 +18,7 @@
+ #include "services/tracing/coordinator.h"
+
+ #if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_MACOSX) || \
+- defined(OS_WIN)
++ defined(OS_WIN) || defined(OS_BSD)
+ #define PERFETTO_SERVICE_AVAILABLE
+ #endif
+
diff --git a/devel/electron4/files/patch-skia_ext_SkMemory__new__handler.cpp b/devel/electron4/files/patch-skia_ext_SkMemory__new__handler.cpp
new file mode 100644
index 000000000000..335dbf8417c3
--- /dev/null
+++ b/devel/electron4/files/patch-skia_ext_SkMemory__new__handler.cpp
@@ -0,0 +1,20 @@
+--- skia/ext/SkMemory_new_handler.cpp.orig 2019-03-15 06:25:51 UTC
++++ skia/ext/SkMemory_new_handler.cpp
+@@ -77,7 +77,7 @@ static void* malloc_nothrow(size_t size) {
+ // TODO(b.kelemen): we should always use UncheckedMalloc but currently it
+ // doesn't work as intended everywhere.
+ void* result;
+-#if defined(OS_IOS)
++#if defined(OS_IOS) || defined(OS_BSD)
+ result = malloc(size);
+ #else
+ // It's the responsibility of the caller to check the return value.
+@@ -97,7 +97,7 @@ static void* calloc_nothrow(size_t size) {
+ // TODO(b.kelemen): we should always use UncheckedCalloc but currently it
+ // doesn't work as intended everywhere.
+ void* result;
+-#if defined(OS_IOS)
++#if defined(OS_IOS) || defined(OS_BSD)
+ result = calloc(1, size);
+ #else
+ // It's the responsibility of the caller to check the return value.
diff --git a/devel/electron4/files/patch-third__party_angle_BUILD.gn b/devel/electron4/files/patch-third__party_angle_BUILD.gn
new file mode 100644
index 000000000000..a2105804f1a5
--- /dev/null
+++ b/devel/electron4/files/patch-third__party_angle_BUILD.gn
@@ -0,0 +1,21 @@
+--- third_party/angle/BUILD.gn.orig 2019-03-15 06:40:08 UTC
++++ third_party/angle/BUILD.gn
+@@ -275,6 +275,7 @@ static_library("angle_gpu_info_util") {
+ "X11",
+ "Xi",
+ "Xext",
++ "GL",
+ ]
+ }
+ }
+@@ -842,10 +843,6 @@ foreach(is_shared_library,
+ libs = []
+ if (is_linux) {
+ sources += rebase_path(util_gypi.util_linux_sources, ".", "util")
+- libs += [
+- "rt",
+- "dl",
+- ]
+ }
+
+ if (is_mac) {
diff --git a/devel/electron4/files/patch-third__party_angle_src_gpu__info__util_SystemInfo__internal.h b/devel/electron4/files/patch-third__party_angle_src_gpu__info__util_SystemInfo__internal.h
new file mode 100644
index 000000000000..8d9df6d18f7b
--- /dev/null
+++ b/devel/electron4/files/patch-third__party_angle_src_gpu__info__util_SystemInfo__internal.h
@@ -0,0 +1,16 @@
+--- third_party/angle/src/gpu_info_util/SystemInfo_internal.h.orig 2019-03-15 06:27:28 UTC
++++ third_party/angle/src/gpu_info_util/SystemInfo_internal.h
+@@ -14,8 +14,13 @@
+ namespace angle
+ {
+
++bool CollectMesaCardInfo(std::vector<GPUDeviceInfo> *devices);
++
+ // Defined in SystemInfo_libpci when GPU_INFO_USE_LIBPCI is defined.
+ bool GetPCIDevicesWithLibPCI(std::vector<GPUDeviceInfo> *devices);
++#if defined(__FreeBSD__)
++bool GetPCIDevicesFreeBSD(std::vector<GPUDeviceInfo> *devices);
++#endif
+ // Defined in SystemInfo_x11 when GPU_INFO_USE_X11 is defined.
+ bool GetNvidiaDriverVersionWithXNVCtrl(std::string *version);
+
diff --git a/devel/electron4/files/patch-third__party_angle_src_gpu__info__util_SystemInfo__libpci.cpp b/devel/electron4/files/patch-third__party_angle_src_gpu__info__util_SystemInfo__libpci.cpp
new file mode 100644
index 000000000000..58de65fda60a
--- /dev/null
+++ b/devel/electron4/files/patch-third__party_angle_src_gpu__info__util_SystemInfo__libpci.cpp
@@ -0,0 +1,90 @@
+--- third_party/angle/src/gpu_info_util/SystemInfo_libpci.cpp.orig 2019-03-15 06:40:10 UTC
++++ third_party/angle/src/gpu_info_util/SystemInfo_libpci.cpp
+@@ -12,6 +12,11 @@
+ #include <pci/pci.h>
+ #include <unistd.h>
+
++#if defined(__FreeBSD__)
++#include <fcntl.h>
++#include <sys/pciio.h>
++#endif
++
+ #include "common/angleutils.h"
+ #include "common/debug.h"
+
+@@ -82,6 +87,75 @@ struct LibPCI : private angle::NonCopyable
+ };
+
+ } // anonymous namespace
++
++#if defined(__FreeBSD__)
++// Adds an entry per PCI GPU found and fills the device and vendor ID.
++bool GetPCIDevicesFreeBSD(std::vector<GPUDeviceInfo> *devices)
++{
++ int fd;
++ struct pci_conf_io conf;
++ struct pci_conf *matches;
++ uint32_t offset = 0;
++
++ fd = open("/dev/pci", O_RDONLY);
++ if (fd < 0)
++ return false;
++
++ matches = new struct pci_conf[32];
++ conf.generation = 0;
++ do {
++ conf.pat_buf_len = 0;
++ conf.num_patterns = 0;
++ conf.patterns = NULL;
++ conf.match_buf_len = 32 * sizeof(struct pci_conf);
++ conf.num_matches = 32;
++ conf.matches = matches;
++ conf.offset = offset;
++ conf.status = PCI_GETCONF_ERROR;
++ if (ioctl(fd, PCIOCGETCONF, &conf) < 0) {
++ if (errno == ENODEV)
++ break;
++ }
++ /* PCI_GETCONF_LIST_CHANGED would require us to start over. */
++ if (conf.status == PCI_GETCONF_ERROR || conf.status == PCI_GETCONF_LIST_CHANGED) {
++ break;
++ }
++
++ for (unsigned int i = 0; i < conf.num_matches; i++) {
++ uint16_t device_class = (matches[i].pc_class << 8) | matches[i].pc_subclass;
++
++ // Skip non-GPU devices
++ switch (device_class)
++ {
++ case PCI_CLASS_DISPLAY_VGA:
++ case PCI_CLASS_DISPLAY_XGA:
++ case PCI_CLASS_DISPLAY_3D:
++ break;
++ default:
++ continue;
++ }
++
++ // Skip unknown devices
++ if (matches[i].pc_vendor == 0 || matches[i].pc_device == 0) {
++ continue;
++ }
++
++ GPUDeviceInfo info;
++ info.vendorId = matches[i].pc_vendor;
++ info.deviceId = matches[i].pc_device;
++
++ devices->push_back(info);
++ }
++ offset += conf.num_matches;
++ } while (conf.status == PCI_GETCONF_MORE_DEVS);
++
++ delete[] matches;
++
++ close(fd);
++
++ return true;
++}
++#endif
+
+ // Adds an entry per PCI GPU found and fills the device and vendor ID.
+ bool GetPCIDevicesWithLibPCI(std::vector<GPUDeviceInfo> *devices)
diff --git a/devel/electron4/files/patch-third__party_angle_src_gpu__info__util_SystemInfo__linux.cpp b/devel/electron4/files/patch-third__party_angle_src_gpu__info__util_SystemInfo__linux.cpp
new file mode 100644
index 000000000000..d44e4f488ca6
--- /dev/null
+++ b/devel/electron4/files/patch-third__party_angle_src_gpu__info__util_SystemInfo__linux.cpp
@@ -0,0 +1,21 @@
+--- third_party/angle/src/gpu_info_util/SystemInfo_linux.cpp.orig 2019-03-15 06:27:28 UTC
++++ third_party/angle/src/gpu_info_util/SystemInfo_linux.cpp
+@@ -71,10 +71,18 @@ bool GetPCIDevicesWithLibPCI(std::vector<GPUDeviceInfo
+
+ bool GetSystemInfo(SystemInfo *info)
+ {
++#if defined(__FreeBSD__)
++ if (!CollectMesaCardInfo(&(info->gpus)))
++ {
++ if (!GetPCIDevicesFreeBSD(&(info->gpus)))
++ return false;
++ }
++#else
+ if (!GetPCIDevicesWithLibPCI(&(info->gpus)))
+ {
+ return false;
+ }
++#endif
+
+ if (info->gpus.size() == 0)
+ {
diff --git a/devel/electron4/files/patch-third__party_angle_src_gpu__info__util_SystemInfo__x11.cpp b/devel/electron4/files/patch-third__party_angle_src_gpu__info__util_SystemInfo__x11.cpp
new file mode 100644
index 000000000000..1fcd6b8b7fd0
--- /dev/null
+++ b/devel/electron4/files/patch-third__party_angle_src_gpu__info__util_SystemInfo__x11.cpp
@@ -0,0 +1,55 @@
+--- third_party/angle/src/gpu_info_util/SystemInfo_x11.cpp.orig 2019-03-15 06:40:10 UTC
++++ third_party/angle/src/gpu_info_util/SystemInfo_x11.cpp
+@@ -8,6 +8,8 @@
+
+ #include "gpu_info_util/SystemInfo_internal.h"
+
++#include <GL/glx.h>
++#include <GL/glxext.h>
+ #include <X11/Xlib.h>
+
+ #include "common/debug.h"
+@@ -18,8 +20,43 @@
+ #error SystemInfo_x11.cpp compiled without GPU_INFO_USE_X11
+ #endif
+
++#define GLX_RENDERER_VENDOR_ID_MESA 0x8183
++#define GLX_RENDERER_DEVICE_ID_MESA 0x8184
++
+ namespace angle
+ {
++
++bool CollectMesaCardInfo(std::vector<GPUDeviceInfo> *devices)
++{
++
++ unsigned int vid[3], did[3];
++
++ Display *display = XOpenDisplay(NULL);
++ if (!display) {
++ return false;
++ }
++
++ PFNGLXQUERYRENDERERINTEGERMESAPROC queryInteger =
++ (PFNGLXQUERYRENDERERINTEGERMESAPROC) glXGetProcAddressARB((const GLubyte *)
++ "glXQueryRendererIntegerMESA");
++
++ if (!queryInteger)
++ return false;
++
++ bool vendor_ret =
++ queryInteger(display, 0, 0, GLX_RENDERER_VENDOR_ID_MESA, vid);
++ bool device_ret =
++ queryInteger(display, 0, 0, GLX_RENDERER_DEVICE_ID_MESA, did);
++
++ if (vendor_ret && device_ret) {
++ GPUDeviceInfo info;
++ info.vendorId = vid[0];
++ info.deviceId = did[0];
++ devices->push_back(info);
++ }
++
++ return true;
++}
+
+ bool GetNvidiaDriverVersionWithXNVCtrl(std::string *version)
+ {
diff --git a/devel/electron4/files/patch-third__party_angle_src_libANGLE_Display.cpp b/devel/electron4/files/patch-third__party_angle_src_libANGLE_Display.cpp
new file mode 100644
index 000000000000..bf8a3fed2aa1
--- /dev/null
+++ b/devel/electron4/files/patch-third__party_angle_src_libANGLE_Display.cpp
@@ -0,0 +1,20 @@
+--- third_party/angle/src/libANGLE/Display.cpp.orig 2019-03-15 06:40:10 UTC
++++ third_party/angle/src/libANGLE/Display.cpp
+@@ -63,7 +63,7 @@
+ #if defined(ANGLE_ENABLE_VULKAN)
+ #if defined(ANGLE_PLATFORM_WINDOWS)
+ #include "libANGLE/renderer/vulkan/win32/DisplayVkWin32.h"
+-#elif defined(ANGLE_PLATFORM_LINUX)
++#elif defined(ANGLE_PLATFORM_POSIX)
+ #include "libANGLE/renderer/vulkan/xcb/DisplayVkXcb.h"
+ #elif defined(ANGLE_PLATFORM_ANDROID)
+ #include "libANGLE/renderer/vulkan/android/DisplayVkAndroid.h"
+@@ -211,7 +211,7 @@ rx::DisplayImpl *CreateDisplayFromAttribs(const Attrib
+ #if defined(ANGLE_ENABLE_VULKAN)
+ #if defined(ANGLE_PLATFORM_WINDOWS)
+ impl = new rx::DisplayVkWin32(state);
+-#elif defined(ANGLE_PLATFORM_LINUX)
++#elif defined(ANGLE_PLATFORM_POSIX)
+ impl = new rx::DisplayVkXcb(state);
+ #elif defined(ANGLE_PLATFORM_ANDROID)
+ impl = new rx::DisplayVkAndroid(state);
diff --git a/devel/electron4/files/patch-third__party_angle_src_libANGLE_renderer_gl_renderergl__utils.cpp b/devel/electron4/files/patch-third__party_angle_src_libANGLE_renderer_gl_renderergl__utils.cpp
new file mode 100644
index 000000000000..404c0be2d10d
--- /dev/null
+++ b/devel/electron4/files/patch-third__party_angle_src_libANGLE_renderer_gl_renderergl__utils.cpp
@@ -0,0 +1,11 @@
+--- third_party/angle/src/libANGLE/renderer/gl/renderergl_utils.cpp.orig 2019-03-15 06:40:12 UTC
++++ third_party/angle/src/libANGLE/renderer/gl/renderergl_utils.cpp
+@@ -1127,7 +1127,7 @@ void GenerateWorkarounds(const FunctionsGL *functions,
+ workarounds->doesSRGBClearsOnLinearFramebufferAttachments =
+ functions->standard == STANDARD_GL_DESKTOP && (IsIntel(vendor) || IsAMD(vendor));
+
+-#if defined(ANGLE_PLATFORM_LINUX)
++#if defined(ANGLE_PLATFORM_POSIX)
+ workarounds->emulateMaxVertexAttribStride =
+ functions->standard == STANDARD_GL_DESKTOP && IsAMD(vendor);
+ workarounds->useUnusedBlocksWithStandardOrSharedLayout = IsAMD(vendor);
diff --git a/devel/electron4/files/patch-third__party_angle_third__party_glslang_src_glslang_Include_PoolAlloc.h b/devel/electron4/files/patch-third__party_angle_third__party_glslang_src_glslang_Include_PoolAlloc.h
new file mode 100644
index 000000000000..4b4d165d2eee
--- /dev/null
+++ b/devel/electron4/files/patch-third__party_angle_third__party_glslang_src_glslang_Include_PoolAlloc.h
@@ -0,0 +1,10 @@
+--- third_party/angle/third_party/glslang/src/glslang/Include/PoolAlloc.h.orig 2020-03-14 11:01:09 UTC
++++ third_party/angle/third_party/glslang/src/glslang/Include/PoolAlloc.h
+@@ -304,7 +304,6 @@ class pool_allocator { (public)
+ size_type max_size() const { return static_cast<size_type>(-1) / sizeof(T); }
+ size_type max_size(int size) const { return static_cast<size_type>(-1) / size; }
+
+- void setAllocator(TPoolAllocator* a) { allocator = *a; }
+ TPoolAllocator& getAllocator() const { return allocator; }
+
+ protected:
diff --git a/devel/electron4/files/patch-third__party_angle_third__party_vulkan-loader_src_loader_loader.c b/devel/electron4/files/patch-third__party_angle_third__party_vulkan-loader_src_loader_loader.c
new file mode 100644
index 000000000000..a96a60c3e8f3
--- /dev/null
+++ b/devel/electron4/files/patch-third__party_angle_third__party_vulkan-loader_src_loader_loader.c
@@ -0,0 +1,11 @@
+--- third_party/angle/third_party/vulkan-loader/src/loader/loader.c.orig 2019-03-15 06:41:41 UTC
++++ third_party/angle/third_party/vulkan-loader/src/loader/loader.c
+@@ -213,7 +213,7 @@ void *loader_device_heap_realloc(const struct loader_d
+ }
+
+ // Environment variables
+-#if defined(__linux__) || defined(__APPLE__)
++#if defined(__linux__) || defined(__APPLE__) || defined(__FreeBSD__)
+
+ static inline char *loader_getenv(const char *name, const struct loader_instance *inst) {
+ // No allocation of memory necessary for Linux, but we should at least touch
diff --git a/devel/electron4/files/patch-third__party_angle_third__party_vulkan-loader_src_loader_vk__loader__platform.h b/devel/electron4/files/patch-third__party_angle_third__party_vulkan-loader_src_loader_vk__loader__platform.h
new file mode 100644
index 000000000000..de24aa2e2351
--- /dev/null
+++ b/devel/electron4/files/patch-third__party_angle_third__party_vulkan-loader_src_loader_vk__loader__platform.h
@@ -0,0 +1,11 @@
+--- third_party/angle/third_party/vulkan-loader/src/loader/vk_loader_platform.h.orig 2019-03-15 06:41:41 UTC
++++ third_party/angle/third_party/vulkan-loader/src/loader/vk_loader_platform.h
+@@ -31,7 +31,7 @@
+ #include "vulkan/vk_platform.h"
+ #include "vulkan/vk_sdk_platform.h"
+
+-#if defined(__linux__) || defined(__APPLE__)
++#if defined(__linux__) || defined(__APPLE__) || defined(__FreeBSD__)
+ /* Linux-specific common code: */
+
+ // Headers:
diff --git a/devel/electron4/files/patch-third__party_angle_third__party_vulkan-validation-layers_src_layers_vk__loader__platform.h b/devel/electron4/files/patch-third__party_angle_third__party_vulkan-validation-layers_src_layers_vk__loader__platform.h
new file mode 100644
index 000000000000..67596e4dcfba
--- /dev/null
+++ b/devel/electron4/files/patch-third__party_angle_third__party_vulkan-validation-layers_src_layers_vk__loader__platform.h
@@ -0,0 +1,11 @@
+--- third_party/angle/third_party/vulkan-validation-layers/src/layers/vk_loader_platform.h.orig 2019-03-15 06:30:51 UTC
++++ third_party/angle/third_party/vulkan-validation-layers/src/layers/vk_loader_platform.h
+@@ -31,7 +31,7 @@
+ #include "vulkan/vk_platform.h"
+ #include "vulkan/vk_sdk_platform.h"
+
+-#if defined(__linux__) || defined(__APPLE__)
++#if defined(__linux__) || defined(__APPLE__) || defined(__FreeBSD__)
+ /* Linux-specific common code: */
+
+ // Headers:
diff --git a/devel/electron4/files/patch-third__party_blink_renderer_core_editing_editing__behavior.cc b/devel/electron4/files/patch-third__party_blink_renderer_core_editing_editing__behavior.cc
new file mode 100644
index 000000000000..56a5c42eba05
--- /dev/null
+++ b/devel/electron4/files/patch-third__party_blink_renderer_core_editing_editing__behavior.cc
@@ -0,0 +1,11 @@
+--- third_party/blink/renderer/core/editing/editing_behavior.cc.orig 2019-03-15 06:38:12 UTC
++++ third_party/blink/renderer/core/editing/editing_behavior.cc
+@@ -270,7 +270,7 @@ bool EditingBehavior::ShouldInsertCharacter(const Keyb
+ // unexpected behaviour
+ if (ch < ' ')
+ return false;
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // According to XKB map no keyboard combinations with ctrl key are mapped to
+ // printable characters, however we need the filter as the DomKey/text could
+ // contain printable characters.
diff --git a/devel/electron4/files/patch-third__party_blink_renderer_core_html_canvas_canvas__async__blob__creator.cc b/devel/electron4/files/patch-third__party_blink_renderer_core_html_canvas_canvas__async__blob__creator.cc
new file mode 100644
index 000000000000..fc23e3e24784
--- /dev/null
+++ b/devel/electron4/files/patch-third__party_blink_renderer_core_html_canvas_canvas__async__blob__creator.cc
@@ -0,0 +1,11 @@
+--- third_party/blink/renderer/core/html/canvas/canvas_async_blob_creator.cc.orig 2019-03-15 06:38:13 UTC
++++ third_party/blink/renderer/core/html/canvas/canvas_async_blob_creator.cc
+@@ -34,7 +34,7 @@ namespace {
+ constexpr TimeDelta kSlackBeforeDeadline = TimeDelta::FromMilliseconds(1);
+
+ /* The value is based on user statistics on Nov 2017. */
+-#if (defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN))
++#if (defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN)) || defined(OS_BSD)
+ const double kIdleTaskStartTimeoutDelayMs = 1000.0;
+ #else
+ const double kIdleTaskStartTimeoutDelayMs = 4000.0; // For ChromeOS, Mobile
diff --git a/devel/electron4/files/patch-third__party_blink_renderer_core_html_forms_internal__popup__menu.cc b/devel/electron4/files/patch-third__party_blink_renderer_core_html_forms_internal__popup__menu.cc
new file mode 100644
index 000000000000..24d452072379
--- /dev/null
+++ b/devel/electron4/files/patch-third__party_blink_renderer_core_html_forms_internal__popup__menu.cc
@@ -0,0 +1,11 @@
+--- third_party/blink/renderer/core/html/forms/internal_popup_menu.cc.orig 2019-03-15 06:38:14 UTC
++++ third_party/blink/renderer/core/html/forms/internal_popup_menu.cc
+@@ -126,7 +126,7 @@ class InternalPopupMenu::ItemIterationContext {
+ is_in_group_(false),
+ buffer_(buffer) {
+ DCHECK(buffer_);
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // On other platforms, the <option> background color is the same as the
+ // <select> background color. On Linux, that makes the <option>
+ // background color very dark, so by default, try to use a lighter
diff --git a/devel/electron4/files/patch-third__party_blink_renderer_core_inspector_inspector__memory__agent.cc b/devel/electron4/files/patch-third__party_blink_renderer_core_inspector_inspector__memory__agent.cc
new file mode 100644
index 000000000000..b45d31a34693
--- /dev/null
+++ b/devel/electron4/files/patch-third__party_blink_renderer_core_inspector_inspector__memory__agent.cc
@@ -0,0 +1,11 @@
+--- third_party/blink/renderer/core/inspector/inspector_memory_agent.cc.orig 2019-03-15 06:38:14 UTC
++++ third_party/blink/renderer/core/inspector/inspector_memory_agent.cc
+@@ -162,7 +162,7 @@ InspectorMemoryAgent::GetSamplingProfileById(uint32_t
+
+ std::vector<std::string> InspectorMemoryAgent::Symbolize(
+ const std::vector<void*>& addresses) {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // TODO(alph): Move symbolization to the client.
+ std::vector<void*> addresses_to_symbolize;
+ for (void* address : addresses) {
diff --git a/devel/electron4/files/patch-third__party_blink_renderer_platform_BUILD.gn b/devel/electron4/files/patch-third__party_blink_renderer_platform_BUILD.gn
new file mode 100644
index 000000000000..b0446bbbb974
--- /dev/null
+++ b/devel/electron4/files/patch-third__party_blink_renderer_platform_BUILD.gn
@@ -0,0 +1,10 @@
+--- third_party/blink/renderer/platform/BUILD.gn.orig 2019-03-16 09:15:20 UTC
++++ third_party/blink/renderer/platform/BUILD.gn
+@@ -144,6 +144,7 @@ executable("character_data_generator") {
+ "//build/win:default_exe_manifest",
+ "//third_party/icu",
+ ]
++ libs = [ "cxxrt" ]
+ }
+
+ # This isn't strictly necessary since we can just add the deps to "platform",
diff --git a/devel/electron4/files/patch-third__party_blink_renderer_platform_fonts_font__cache.cc b/devel/electron4/files/patch-third__party_blink_renderer_platform_fonts_font__cache.cc
new file mode 100644
index 000000000000..7ecfd18174c4
--- /dev/null
+++ b/devel/electron4/files/patch-third__party_blink_renderer_platform_fonts_font__cache.cc
@@ -0,0 +1,20 @@
+--- third_party/blink/renderer/platform/fonts/font_cache.cc.orig 2019-03-15 06:38:17 UTC
++++ third_party/blink/renderer/platform/fonts/font_cache.cc
+@@ -65,7 +65,7 @@ namespace blink {
+
+ SkFontMgr* FontCache::static_font_manager_ = nullptr;
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ float FontCache::device_scale_factor_ = 1.0;
+ #endif
+
+@@ -88,7 +88,7 @@ FontCache::FontCache()
+ FontPlatformData* FontCache::SystemFontPlatformData(
+ const FontDescription& font_description) {
+ const AtomicString& family = FontCache::SystemFontFamily();
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ if (family.IsEmpty() || family == FontFamilyNames::system_ui)
+ return nullptr;
+ #else
diff --git a/devel/electron4/files/patch-third__party_blink_renderer_platform_fonts_font__cache.h b/devel/electron4/files/patch-third__party_blink_renderer_platform_fonts_font__cache.h
new file mode 100644
index 000000000000..d8c3a76cffc3
--- /dev/null
+++ b/devel/electron4/files/patch-third__party_blink_renderer_platform_fonts_font__cache.h
@@ -0,0 +1,38 @@
+--- third_party/blink/renderer/platform/fonts/font_cache.h.orig 2019-03-15 06:38:17 UTC
++++ third_party/blink/renderer/platform/fonts/font_cache.h
+@@ -156,7 +156,7 @@ class PLATFORM_EXPORT FontCache {
+ sk_sp<SkFontMgr> FontManager() { return font_manager_; }
+ static void SetFontManager(sk_sp<SkFontMgr>);
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ // These are needed for calling QueryRenderStyleForStrike, since
+ // gfx::GetFontRenderParams makes distinctions based on DSF.
+ static float DeviceScaleFactor() { return device_scale_factor_; }
+@@ -217,7 +217,7 @@ class PLATFORM_EXPORT FontCache {
+ const FontDescription&);
+ #endif // defined(OS_ANDROID)
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ struct PlatformFallbackFont {
+ String name;
+ CString filename;
+@@ -291,7 +291,7 @@ class PLATFORM_EXPORT FontCache {
+ const FontFaceCreationParams&,
+ CString& name);
+
+-#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_FUCHSIA)
++#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_FUCHSIA) || defined(OS_BSD)
+ static AtomicString GetFamilyNameForCharacter(SkFontMgr*,
+ UChar32,
+ const FontDescription&,
+@@ -327,7 +327,7 @@ class PLATFORM_EXPORT FontCache {
+ bool is_test_font_mgr_ = false;
+ #endif // defined(OS_WIN)
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ static float device_scale_factor_;
+ #endif
+
diff --git a/devel/electron4/files/patch-third__party_blink_renderer_platform_fonts_font__description.cc b/devel/electron4/files/patch-third__party_blink_renderer_platform_fonts_font__description.cc
new file mode 100644
index 000000000000..ce7e8a74bc0f
--- /dev/null
+++ b/devel/electron4/files/patch-third__party_blink_renderer_platform_fonts_font__description.cc
@@ -0,0 +1,20 @@
+--- third_party/blink/renderer/platform/fonts/font_description.cc.orig 2019-03-15 06:38:17 UTC
++++ third_party/blink/renderer/platform/fonts/font_description.cc
+@@ -38,7 +38,7 @@
+ #include "third_party/blink/renderer/platform/wtf/text/atomic_string_hash.h"
+ #include "third_party/blink/renderer/platform/wtf/text/string_hash.h"
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ #include "third_party/blink/renderer/platform/fonts/font_cache.h"
+ #endif
+
+@@ -222,7 +222,7 @@ FontCacheKey FontDescription::CacheKey(
+ static_cast<unsigned>(fields_.orientation_) << 1 | // bit 2-3
+ static_cast<unsigned>(fields_.subpixel_text_position_); // bit 1
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ float device_scale_factor_for_key = FontCache::DeviceScaleFactor();
+ #else
+ float device_scale_factor_for_key = 1.0f;
diff --git a/devel/electron4/files/patch-third__party_blink_renderer_platform_fonts_font__metrics.cc b/devel/electron4/files/patch-third__party_blink_renderer_platform_fonts_font__metrics.cc
new file mode 100644
index 000000000000..6bfdd523e0df
--- /dev/null
+++ b/devel/electron4/files/patch-third__party_blink_renderer_platform_fonts_font__metrics.cc
@@ -0,0 +1,29 @@
+--- third_party/blink/renderer/platform/fonts/font_metrics.cc.orig 2019-03-15 06:38:17 UTC
++++ third_party/blink/renderer/platform/fonts/font_metrics.cc
+@@ -38,7 +38,7 @@
+
+ namespace blink {
+
+-#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_FUCHSIA)
++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_FUCHSIA) || defined(OS_BSD)
+ // This is the largest VDMX table which we'll try to load and parse.
+ static const size_t kMaxVDMXTableSize = 1024 * 1024; // 1 MB
+ #endif
+@@ -60,7 +60,7 @@ void FontMetrics::AscentDescentWithHacks(
+ int vdmx_ascent = 0, vdmx_descent = 0;
+ bool is_vdmx_valid = false;
+
+-#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_FUCHSIA)
++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_FUCHSIA) || defined(OS_BSD)
+ // Manually digging up VDMX metrics is only applicable when bytecode hinting
+ // using FreeType. With DirectWrite or CoreText, no bytecode hinting is ever
+ // done. This code should be pushed into FreeType (hinted font metrics).
+@@ -106,7 +106,7 @@ void FontMetrics::AscentDescentWithHacks(
+ visual_overflow_inflation_for_ascent = 1;
+ if (descent < metrics.fDescent) {
+ visual_overflow_inflation_for_descent = 1;
+-#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_FUCHSIA)
++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_FUCHSIA) || defined(OS_BSD)
+ // When subpixel positioning is enabled, if the descent is rounded down,
+ // the descent part of the glyph may be truncated when displayed in a
+ // 'overflow: hidden' container. To avoid that, borrow 1 unit from the
diff --git a/devel/electron4/files/patch-third__party_blink_renderer_platform_fonts_skia_font__cache__skia.cc b/devel/electron4/files/patch-third__party_blink_renderer_platform_fonts_skia_font__cache__skia.cc
new file mode 100644
index 000000000000..ea4249c38945
--- /dev/null
+++ b/devel/electron4/files/patch-third__party_blink_renderer_platform_fonts_skia_font__cache__skia.cc
@@ -0,0 +1,20 @@
+--- third_party/blink/renderer/platform/fonts/skia/font_cache_skia.cc.orig 2019-03-15 06:38:17 UTC
++++ third_party/blink/renderer/platform/fonts/skia/font_cache_skia.cc
+@@ -59,7 +59,7 @@ AtomicString ToAtomicString(const SkString& str) {
+ return AtomicString::FromUTF8(str.c_str(), str.size());
+ }
+
+-#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_FUCHSIA)
++#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_FUCHSIA) || defined(OS_BSD)
+ // Android special locale for retrieving the color emoji font
+ // based on the proposed changes in UTR #51 for introducing
+ // an Emoji script code:
+@@ -248,7 +248,7 @@ PaintTypeface FontCache::CreateTypeface(
+ }
+ #endif
+
+-#if defined(OS_LINUX) || defined(OS_WIN)
++#if defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD)
+ // On linux if the fontManager has been overridden then we should be calling
+ // the embedder provided font Manager rather than calling
+ // SkTypeface::CreateFromName which may redirect the call to the default font
diff --git a/devel/electron4/files/patch-third__party_blink_renderer_platform_heap_stack__frame__depth.cc b/devel/electron4/files/patch-third__party_blink_renderer_platform_heap_stack__frame__depth.cc
new file mode 100644
index 000000000000..89618de1b132
--- /dev/null
+++ b/devel/electron4/files/patch-third__party_blink_renderer_platform_heap_stack__frame__depth.cc
@@ -0,0 +1,14 @@
+--- third_party/blink/renderer/platform/heap/stack_frame_depth.cc.orig 2019-03-15 06:26:13 UTC
++++ third_party/blink/renderer/platform/heap/stack_frame_depth.cc
+@@ -15,6 +15,11 @@
+ extern "C" void* __libc_stack_end; // NOLINT
+ #endif
+
++#if defined(OS_FREEBSD)
++#include <sys/signal.h>
++#include <pthread_np.h>
++#endif
++
+ namespace blink {
+
+ static const char* g_avoid_optimization = nullptr;
diff --git a/devel/electron4/files/patch-third__party_blink_renderer_platform_wtf_BUILD.gn b/devel/electron4/files/patch-third__party_blink_renderer_platform_wtf_BUILD.gn
new file mode 100644
index 000000000000..1e1c236a6e74
--- /dev/null
+++ b/devel/electron4/files/patch-third__party_blink_renderer_platform_wtf_BUILD.gn
@@ -0,0 +1,16 @@
+--- third_party/blink/renderer/platform/wtf/BUILD.gn.orig 2019-03-15 06:38:18 UTC
++++ third_party/blink/renderer/platform/wtf/BUILD.gn
+@@ -276,8 +276,12 @@ jumbo_component("wtf") {
+ if (is_android) {
+ libs = [ "log" ]
+ }
+- if (is_linux) {
++ if (is_linux && !is_bsd) {
+ libs = [ "dl" ]
++ }
++
++ if (is_bsd) {
++ libs = [ "execinfo" ]
+ }
+
+ if (is_mac) {
diff --git a/devel/electron4/files/patch-third__party_blink_renderer_platform_wtf_assertions.cc b/devel/electron4/files/patch-third__party_blink_renderer_platform_wtf_assertions.cc
new file mode 100644
index 000000000000..564ccc6a0af6
--- /dev/null
+++ b/devel/electron4/files/patch-third__party_blink_renderer_platform_wtf_assertions.cc
@@ -0,0 +1,11 @@
+--- third_party/blink/renderer/platform/wtf/assertions.cc.orig 2019-03-15 06:38:18 UTC
++++ third_party/blink/renderer/platform/wtf/assertions.cc
+@@ -48,7 +48,7 @@
+ #include <windows.h>
+ #endif
+
+-#if defined(OS_MACOSX) || (defined(OS_LINUX) && !defined(__UCLIBC__))
++#if defined(OS_MACOSX) || ((defined(OS_LINUX) || defined(OS_BSD)) && !defined(__UCLIBC__))
+ #include <cxxabi.h>
+ #include <dlfcn.h>
+ #include <execinfo.h>
diff --git a/devel/electron4/files/patch-third__party_blink_renderer_platform_wtf_atomics.h b/devel/electron4/files/patch-third__party_blink_renderer_platform_wtf_atomics.h
new file mode 100644
index 000000000000..596f595c9707
--- /dev/null
+++ b/devel/electron4/files/patch-third__party_blink_renderer_platform_wtf_atomics.h
@@ -0,0 +1,11 @@
+--- third_party/blink/renderer/platform/wtf/atomics.h.orig 2019-03-15 06:38:18 UTC
++++ third_party/blink/renderer/platform/wtf/atomics.h
+@@ -176,7 +176,7 @@ ALWAYS_INLINE void AtomicSetOneToZero(int volatile* pt
+ #if defined(THREAD_SANITIZER)
+ // The definitions below assume an LP64 data model. This is fine because
+ // TSan is only supported on x86_64 Linux.
+-#if defined(ARCH_CPU_64_BITS) && defined(OS_LINUX)
++#if defined(ARCH_CPU_64_BITS) && defined(OS_LINUX) || defined(OS_BSD)
+ ALWAYS_INLINE void ReleaseStore(volatile int* ptr, int value) {
+ __tsan_atomic32_store(ptr, value, __tsan_memory_order_release);
+ }
diff --git a/devel/electron4/files/patch-third__party_blink_renderer_platform_wtf_container__annotations.h b/devel/electron4/files/patch-third__party_blink_renderer_platform_wtf_container__annotations.h
new file mode 100644
index 000000000000..80946c3226d0
--- /dev/null
+++ b/devel/electron4/files/patch-third__party_blink_renderer_platform_wtf_container__annotations.h
@@ -0,0 +1,11 @@
+--- third_party/blink/renderer/platform/wtf/container_annotations.h.orig 2019-03-15 06:38:18 UTC
++++ third_party/blink/renderer/platform/wtf/container_annotations.h
+@@ -10,7 +10,7 @@
+
+ // TODO(ochang): Remove the ARCH_CPU_X86_64 condition to enable this for X86
+ // once the crashes there have been fixed: http://crbug.com/461406
+-#if defined(ADDRESS_SANITIZER) && defined(OS_LINUX) && defined(ARCH_CPU_X86_64)
++#if defined(ADDRESS_SANITIZER) && (defined(OS_LINUX) || defined(OS_BSD)) && defined(ARCH_CPU_X86_64)
+ #define ANNOTATE_CONTIGUOUS_CONTAINER
+ #define ANNOTATE_NEW_BUFFER(buffer, capacity, newSize) \
+ if (buffer) { \
diff --git a/devel/electron4/files/patch-third__party_blink_renderer_platform_wtf_stack__util.cc b/devel/electron4/files/patch-third__party_blink_renderer_platform_wtf_stack__util.cc
new file mode 100644
index 000000000000..a30eb25333c9
--- /dev/null
+++ b/devel/electron4/files/patch-third__party_blink_renderer_platform_wtf_stack__util.cc
@@ -0,0 +1,14 @@
+--- third_party/blink/renderer/platform/wtf/stack_util.cc.orig 2019-03-15 06:38:18 UTC
++++ third_party/blink/renderer/platform/wtf/stack_util.cc
+@@ -16,6 +16,11 @@
+ extern "C" void* __libc_stack_end; // NOLINT
+ #endif
+
++#if defined(OS_FREEBSD)
++#include <sys/signal.h>
++#include <pthread_np.h>
++#endif
++
+ namespace WTF {
+
+ size_t GetUnderestimatedStackSize() {
diff --git a/devel/electron4/files/patch-third__party_blink_renderer_platform_wtf_threading__pthreads.cc b/devel/electron4/files/patch-third__party_blink_renderer_platform_wtf_threading__pthreads.cc
new file mode 100644
index 000000000000..adceb86714c7
--- /dev/null
+++ b/devel/electron4/files/patch-third__party_blink_renderer_platform_wtf_threading__pthreads.cc
@@ -0,0 +1,22 @@
+--- third_party/blink/renderer/platform/wtf/threading_pthreads.cc.orig 2019-03-15 06:38:18 UTC
++++ third_party/blink/renderer/platform/wtf/threading_pthreads.cc
+@@ -51,12 +51,17 @@
+ #include <objc/objc-auto.h>
+ #endif
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include <sys/syscall.h>
+ #endif
+
+-#if defined(OS_LINUX) || defined(OS_ANDROID)
++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
+ #include <unistd.h>
++#endif
++
++#if defined(OS_BSD)
++#include <sys/signal.h>
++#include <pthread_np.h>
+ #endif
+
+ namespace WTF {
diff --git a/devel/electron4/files/patch-third__party_boringssl_BUILD.gn b/devel/electron4/files/patch-third__party_boringssl_BUILD.gn
new file mode 100644
index 000000000000..f1c1ff79cfc3
--- /dev/null
+++ b/devel/electron4/files/patch-third__party_boringssl_BUILD.gn
@@ -0,0 +1,36 @@
+--- third_party/boringssl/BUILD.gn.orig 2019-03-16 09:15:20 UTC
++++ third_party/boringssl/BUILD.gn
+@@ -85,7 +85,7 @@ if (is_win && !is_msan) {
+ } else if (current_cpu == "x64") {
+ if (is_mac) {
+ sources += crypto_sources_mac_x86_64
+- } else if (is_linux || is_android) {
++ } else if (is_linux || is_bsd || is_android) {
+ sources += crypto_sources_linux_x86_64
+ } else {
+ public_configs = [ ":no_asm_config" ]
+@@ -93,13 +93,13 @@ if (is_win && !is_msan) {
+ } else if (current_cpu == "x86") {
+ if (is_mac) {
+ sources += crypto_sources_mac_x86
+- } else if (is_linux || is_android) {
++ } else if (is_linux || is_bsd || is_android) {
+ sources += crypto_sources_linux_x86
+ } else {
+ public_configs = [ ":no_asm_config" ]
+ }
+ } else if (current_cpu == "arm") {
+- if (is_linux || is_android) {
++ if (is_linux || is_bsd || is_android) {
+ sources += crypto_sources_linux_arm
+ } else if (is_ios) {
+ sources += crypto_sources_ios_arm
+@@ -107,7 +107,7 @@ if (is_win && !is_msan) {
+ public_configs = [ ":no_asm_config" ]
+ }
+ } else if (current_cpu == "arm64") {
+- if (is_linux || is_android) {
++ if (is_linux || is_bsd || is_android) {
+ sources += crypto_sources_linux_aarch64
+ } else if (is_ios) {
+ sources += crypto_sources_ios_aarch64
diff --git a/devel/electron4/files/patch-third__party_boringssl_src_crypto_cpu-aarch64-linux.c b/devel/electron4/files/patch-third__party_boringssl_src_crypto_cpu-aarch64-linux.c
new file mode 100644
index 000000000000..c8951969bf3c
--- /dev/null
+++ b/devel/electron4/files/patch-third__party_boringssl_src_crypto_cpu-aarch64-linux.c
@@ -0,0 +1,54 @@
+--- third_party/boringssl/src/crypto/cpu-aarch64-linux.c.orig 2019-03-15 06:27:31 UTC
++++ third_party/boringssl/src/crypto/cpu-aarch64-linux.c
+@@ -14,49 +14,7 @@
+
+ #include <openssl/cpu.h>
+
+-#if defined(OPENSSL_AARCH64) && defined(OPENSSL_LINUX) && \
+- !defined(OPENSSL_STATIC_ARMCAP)
+-
+-#include <sys/auxv.h>
+-
+-#include <openssl/arm_arch.h>
+-
+-#include "internal.h"
+-
+-
+-extern uint32_t OPENSSL_armcap_P;
+-
++#ifdef __FreeBSD__
+ void OPENSSL_cpuid_setup(void) {
+- unsigned long hwcap = getauxval(AT_HWCAP);
+-
+- // See /usr/include/asm/hwcap.h on an aarch64 installation for the source of
+- // these values.
+- static const unsigned long kNEON = 1 << 1;
+- static const unsigned long kAES = 1 << 3;
+- static const unsigned long kPMULL = 1 << 4;
+- static const unsigned long kSHA1 = 1 << 5;
+- static const unsigned long kSHA256 = 1 << 6;
+-
+- if ((hwcap & kNEON) == 0) {
+- // Matching OpenSSL, if NEON is missing, don't report other features
+- // either.
+- return;
+- }
+-
+- OPENSSL_armcap_P |= ARMV7_NEON;
+-
+- if (hwcap & kAES) {
+- OPENSSL_armcap_P |= ARMV8_AES;
+- }
+- if (hwcap & kPMULL) {
+- OPENSSL_armcap_P |= ARMV8_PMULL;
+- }
+- if (hwcap & kSHA1) {
+- OPENSSL_armcap_P |= ARMV8_SHA1;
+- }
+- if (hwcap & kSHA256) {
+- OPENSSL_armcap_P |= ARMV8_SHA256;
+- }
+ }
+-
+-#endif // OPENSSL_AARCH64 && !OPENSSL_STATIC_ARMCAP
++#endif
diff --git a/devel/electron4/files/patch-third__party_boringssl_src_crypto_ex__data.c b/devel/electron4/files/patch-third__party_boringssl_src_crypto_ex__data.c
new file mode 100644
index 000000000000..e4b0317f6f49
--- /dev/null
+++ b/devel/electron4/files/patch-third__party_boringssl_src_crypto_ex__data.c
@@ -0,0 +1,13 @@
+--- third_party/boringssl/src/crypto/ex_data.c.orig 2019-03-15 06:27:31 UTC
++++ third_party/boringssl/src/crypto/ex_data.c
+@@ -186,7 +186,9 @@ int CRYPTO_set_ex_data(CRYPTO_EX_DATA *ad, int index,
+ }
+ }
+
+- sk_void_set(ad->sk, index, val);
++ // expression result unused; should this cast be to 'void'?
++ // seems it should, feel free to investigate those #def
++ (void) sk_void_set(ad->sk, index, val);
+ return 1;
+ }
+
diff --git a/devel/electron4/files/patch-third__party_breakpad_breakpad_src_common_simple__string__dictionary.h b/devel/electron4/files/patch-third__party_breakpad_breakpad_src_common_simple__string__dictionary.h
new file mode 100644
index 000000000000..af2179917fc5
--- /dev/null
+++ b/devel/electron4/files/patch-third__party_breakpad_breakpad_src_common_simple__string__dictionary.h
@@ -0,0 +1,11 @@
+--- third_party/breakpad/breakpad/src/common/simple_string_dictionary.h.orig 2019-03-15 06:27:08 UTC
++++ third_party/breakpad/breakpad/src/common/simple_string_dictionary.h
+@@ -33,7 +33,7 @@
+ #include <assert.h>
+ #include <string.h>
+
+-#include "common/basictypes.h"
++#include "third_party/breakpad/breakpad/src/common/basictypes.h"
+
+ namespace google_breakpad {
+
diff --git a/devel/electron4/files/patch-third__party_cacheinvalidation_src_google_cacheinvalidation_include_types.h b/devel/electron4/files/patch-third__party_cacheinvalidation_src_google_cacheinvalidation_include_types.h
new file mode 100644
index 000000000000..57d9efb86307
--- /dev/null
+++ b/devel/electron4/files/patch-third__party_cacheinvalidation_src_google_cacheinvalidation_include_types.h
@@ -0,0 +1,11 @@
+--- third_party/cacheinvalidation/src/google/cacheinvalidation/include/types.h.orig 2019-03-15 06:26:35 UTC
++++ third_party/cacheinvalidation/src/google/cacheinvalidation/include/types.h
+@@ -334,6 +334,8 @@ class Status {
+ */
+ PERMANENT_FAILURE
+ };
++
++ Status() : code_(SUCCESS), message_() {}
+
+ /* Creates a new Status object given the code and message. */
+ Status(Code code, const string& message) : code_(code), message_(message) {}
diff --git a/devel/electron4/files/patch-third__party_crashpad_crashpad_build_crashpad__buildconfig.gni b/devel/electron4/files/patch-third__party_crashpad_crashpad_build_crashpad__buildconfig.gni
new file mode 100644
index 000000000000..d8bd15d49570
--- /dev/null
+++ b/devel/electron4/files/patch-third__party_crashpad_crashpad_build_crashpad__buildconfig.gni
@@ -0,0 +1,11 @@
+--- third_party/crashpad/crashpad/build/crashpad_buildconfig.gni.orig 2019-03-15 06:38:19 UTC
++++ third_party/crashpad/crashpad/build/crashpad_buildconfig.gni
+@@ -38,7 +38,7 @@ crashpad_is_standalone = crashpad_dependencies == "sta
+ if (crashpad_is_in_chromium) {
+ crashpad_is_mac = is_mac
+ crashpad_is_win = is_win
+- crashpad_is_linux = is_linux
++ crashpad_is_linux = is_linux && !is_bsd
+ crashpad_is_android = is_android
+ crashpad_is_fuchsia = is_fuchsia
+
diff --git a/devel/electron4/files/patch-third__party_crashpad_crashpad_util_misc_address__types.h b/devel/electron4/files/patch-third__party_crashpad_crashpad_util_misc_address__types.h
new file mode 100644
index 000000000000..d174f8d828f5
--- /dev/null
+++ b/devel/electron4/files/patch-third__party_crashpad_crashpad_util_misc_address__types.h
@@ -0,0 +1,20 @@
+--- third_party/crashpad/crashpad/util/misc/address_types.h.orig 2019-03-15 06:26:36 UTC
++++ third_party/crashpad/crashpad/util/misc/address_types.h
+@@ -25,7 +25,7 @@
+ #include <mach/mach_types.h>
+ #elif defined(OS_WIN)
+ #include "util/win/address_types.h"
+-#elif defined(OS_LINUX) || defined(OS_ANDROID)
++#elif defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
+ #include "util/linux/address_types.h"
+ #elif defined(OS_FUCHSIA)
+ #include <zircon/types.h>
+@@ -55,7 +55,7 @@ using VMSize = mach_vm_size_t;
+ using VMAddress = WinVMAddress;
+ using VMSize = WinVMSize;
+
+-#elif defined(OS_LINUX) || defined(OS_ANDROID)
++#elif defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
+
+ using VMAddress = LinuxVMAddress;
+ using VMSize = LinuxVMSize;
diff --git a/devel/electron4/files/patch-third__party_crashpad_crashpad_util_misc_capture__context.h b/devel/electron4/files/patch-third__party_crashpad_crashpad_util_misc_capture__context.h
new file mode 100644
index 000000000000..7e68da3c498a
--- /dev/null
+++ b/devel/electron4/files/patch-third__party_crashpad_crashpad_util_misc_capture__context.h
@@ -0,0 +1,20 @@
+--- third_party/crashpad/crashpad/util/misc/capture_context.h.orig 2019-03-15 06:26:36 UTC
++++ third_party/crashpad/crashpad/util/misc/capture_context.h
+@@ -21,7 +21,7 @@
+ #include <mach/mach.h>
+ #elif defined(OS_WIN)
+ #include <windows.h>
+-#elif defined(OS_LINUX) || defined(OS_ANDROID)
++#elif defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
+ #include <ucontext.h>
+ #elif defined(OS_FUCHSIA)
+ #include <signal.h>
+@@ -35,7 +35,7 @@ using NativeCPUContext = x86_thread_state;
+ #endif
+ #elif defined(OS_WIN)
+ using NativeCPUContext = CONTEXT;
+-#elif defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_FUCHSIA)
++#elif defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_FUCHSIA) || defined(OS_BSD)
+ using NativeCPUContext = ucontext_t;
+ #endif // OS_MACOSX
+
diff --git a/devel/electron4/files/patch-third__party_crashpad_crashpad_util_misc_metrics.cc b/devel/electron4/files/patch-third__party_crashpad_crashpad_util_misc_metrics.cc
new file mode 100644
index 000000000000..7d86d9babc7b
--- /dev/null
+++ b/devel/electron4/files/patch-third__party_crashpad_crashpad_util_misc_metrics.cc
@@ -0,0 +1,11 @@
+--- third_party/crashpad/crashpad/util/misc/metrics.cc.orig 2019-03-15 06:38:19 UTC
++++ third_party/crashpad/crashpad/util/misc/metrics.cc
+@@ -24,7 +24,7 @@
+ #define METRICS_OS_NAME "Win"
+ #elif defined(OS_ANDROID)
+ #define METRICS_OS_NAME "Android"
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ #define METRICS_OS_NAME "Linux"
+ #elif defined(OS_FUCHSIA)
+ #define METRICS_OS_NAME "Fuchsia"
diff --git a/devel/electron4/files/patch-third__party_crashpad_crashpad_util_misc_uuid.cc b/devel/electron4/files/patch-third__party_crashpad_crashpad_util_misc_uuid.cc
new file mode 100644
index 000000000000..6ce7a52e55f4
--- /dev/null
+++ b/devel/electron4/files/patch-third__party_crashpad_crashpad_util_misc_uuid.cc
@@ -0,0 +1,11 @@
+--- third_party/crashpad/crashpad/util/misc/uuid.cc.orig 2019-03-15 06:26:36 UTC
++++ third_party/crashpad/crashpad/util/misc/uuid.cc
+@@ -95,7 +95,7 @@ bool UUID::InitializeWithNew() {
+ InitializeFromBytes(uuid);
+ return true;
+ #elif defined(OS_WIN) || defined(OS_LINUX) || defined(OS_ANDROID) || \
+- defined(OS_FUCHSIA)
++ defined(OS_FUCHSIA) || defined(OS_BSD)
+ // Linux, Android, and Fuchsia do not provide a UUID generator in a
+ // widely-available system library. On Linux and Android, uuid_generate()
+ // from libuuid is not available everywhere.
diff --git a/devel/electron4/files/patch-third__party_crashpad_crashpad_util_posix_close__multiple.cc b/devel/electron4/files/patch-third__party_crashpad_crashpad_util_posix_close__multiple.cc
new file mode 100644
index 000000000000..b8deba52a93e
--- /dev/null
+++ b/devel/electron4/files/patch-third__party_crashpad_crashpad_util_posix_close__multiple.cc
@@ -0,0 +1,11 @@
+--- third_party/crashpad/crashpad/util/posix/close_multiple.cc.orig 2019-03-15 06:38:19 UTC
++++ third_party/crashpad/crashpad/util/posix/close_multiple.cc
+@@ -71,7 +71,7 @@ void CloseNowOrOnExec(int fd, bool ebadf_ok) {
+ // This is an advantage over looping over all possible file descriptors, because
+ // no attempt needs to be made to close file descriptors that are not open.
+ bool CloseMultipleNowOrOnExecUsingFDDir(int min_fd, int preserve_fd) {
+-#if defined(OS_MACOSX)
++#if defined(OS_MACOSX) || defined(OS_BSD)
+ static constexpr char kFDDir[] = "/dev/fd";
+ #elif defined(OS_LINUX) || defined(OS_ANDROID)
+ static constexpr char kFDDir[] = "/proc/self/fd";
diff --git a/devel/electron4/files/patch-third__party_crashpad_crashpad_util_posix_drop__privileges.cc b/devel/electron4/files/patch-third__party_crashpad_crashpad_util_posix_drop__privileges.cc
new file mode 100644
index 000000000000..8debecc79ae3
--- /dev/null
+++ b/devel/electron4/files/patch-third__party_crashpad_crashpad_util_posix_drop__privileges.cc
@@ -0,0 +1,11 @@
+--- third_party/crashpad/crashpad/util/posix/drop_privileges.cc.orig 2019-03-15 06:26:36 UTC
++++ third_party/crashpad/crashpad/util/posix/drop_privileges.cc
+@@ -23,7 +23,7 @@ void DropPrivileges() {
+ gid_t gid = getgid();
+ uid_t uid = getuid();
+
+-#if defined(OS_MACOSX)
++#if defined(OS_MACOSX) || defined(OS_BSD)
+ // Based on the POSIX.1-2008 2013 edition documentation for setreuid() and
+ // setregid(), setreuid() and setregid() alone should be sufficient to drop
+ // privileges. The standard specifies that the saved ID should be set to the
diff --git a/devel/electron4/files/patch-third__party_crashpad_crashpad_util_posix_signals.cc b/devel/electron4/files/patch-third__party_crashpad_crashpad_util_posix_signals.cc
new file mode 100644
index 000000000000..97e00f3fba13
--- /dev/null
+++ b/devel/electron4/files/patch-third__party_crashpad_crashpad_util_posix_signals.cc
@@ -0,0 +1,33 @@
+--- third_party/crashpad/crashpad/util/posix/signals.cc.orig 2019-03-15 06:38:19 UTC
++++ third_party/crashpad/crashpad/util/posix/signals.cc
+@@ -44,7 +44,7 @@ constexpr int kCrashSignals[] = {
+ #if defined(SIGEMT)
+ SIGEMT,
+ #endif // defined(SIGEMT)
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ SIGXCPU,
+ SIGXFSZ,
+ #endif // defined(OS_LINUX)
+@@ -84,7 +84,7 @@ constexpr int kTerminateSignals[] = {
+ SIGXCPU,
+ SIGXFSZ,
+ #endif // defined(OS_MACOSX)
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ SIGIO,
+ #endif // defined(OS_LINUX)
+ };
+@@ -214,8 +214,12 @@ bool Signals::WillSignalReraiseAutonomously(const sigi
+ // remains. See 10.12.3 xnu-3789.41.3/bsd/kern/kern_sig.c
+ // psignal_internal().
+ (code > 0 &&
++#if defined(SI_ASYNCIO)
+ code != SI_ASYNCIO &&
++#endif
++#if defined(SI_MESGQ)
+ code != SI_MESGQ &&
++#endif
+ code != SI_QUEUE &&
+ code != SI_TIMER &&
+ code != SI_USER &&
diff --git a/devel/electron4/files/patch-third__party_crashpad_crashpad_util_posix_symbolic__constants__posix.cc b/devel/electron4/files/patch-third__party_crashpad_crashpad_util_posix_symbolic__constants__posix.cc
new file mode 100644
index 000000000000..255741801c8f
--- /dev/null
+++ b/devel/electron4/files/patch-third__party_crashpad_crashpad_util_posix_symbolic__constants__posix.cc
@@ -0,0 +1,20 @@
+--- third_party/crashpad/crashpad/util/posix/symbolic_constants_posix.cc.orig 2019-03-15 06:38:19 UTC
++++ third_party/crashpad/crashpad/util/posix/symbolic_constants_posix.cc
+@@ -64,7 +64,7 @@ constexpr const char* kSignalNames[] = {
+ "INFO",
+ "USR1",
+ "USR2",
+-#elif defined(OS_LINUX) || defined(OS_ANDROID)
++#elif defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
+ #if defined(ARCH_CPU_MIPS_FAMILY)
+ "HUP",
+ "INT",
+@@ -135,7 +135,7 @@ constexpr const char* kSignalNames[] = {
+ #endif // defined(ARCH_CPU_MIPS_FAMILY)
+ #endif
+ };
+-#if defined(OS_LINUX) || defined(OS_ANDROID)
++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
+ // NSIG is 64 to account for real-time signals.
+ static_assert(arraysize(kSignalNames) == 32, "kSignalNames length");
+ #else
diff --git a/devel/electron4/files/patch-third__party_crc32c_src_src_crc32c__arm64__linux__check.h b/devel/electron4/files/patch-third__party_crc32c_src_src_crc32c__arm64__linux__check.h
new file mode 100644
index 000000000000..093b60ae3aec
--- /dev/null
+++ b/devel/electron4/files/patch-third__party_crc32c_src_src_crc32c__arm64__linux__check.h
@@ -0,0 +1,19 @@
+--- third_party/crc32c/src/src/crc32c_arm64_linux_check.h.orig 2019-03-15 06:27:10 UTC
++++ third_party/crc32c/src/src/crc32c_arm64_linux_check.h
+@@ -29,6 +29,8 @@ extern "C" unsigned long getauxval(unsigned long type)
+ namespace crc32c {
+
+ inline bool CanUseArm64Linux() {
++return false;
++#if 0
+ #if HAVE_STRONG_GETAUXVAL || HAVE_WEAK_GETAUXVAL
+ // From 'arch/arm64/include/uapi/asm/hwcap.h' in Linux kernel source code.
+ constexpr unsigned long kHWCAP_PMULL = 1 << 4;
+@@ -39,6 +41,7 @@ inline bool CanUseArm64Linux() {
+ #else
+ return false;
+ #endif // HAVE_STRONG_GETAUXVAL || HAVE_WEAK_GETAUXVAL
++#endif
+ }
+
+ } // namespace crc32c
diff --git a/devel/electron4/files/patch-third__party_electron__node_common.gypi b/devel/electron4/files/patch-third__party_electron__node_common.gypi
new file mode 100644
index 000000000000..fbace0dcccf4
--- /dev/null
+++ b/devel/electron4/files/patch-third__party_electron__node_common.gypi
@@ -0,0 +1,18 @@
+--- third_party/electron_node/common.gypi.orig 2020-05-09 08:13:10 UTC
++++ third_party/electron_node/common.gypi
+@@ -507,15 +507,6 @@
+ 'libraries': [ '-lelf' ],
+ }],
+ ['OS=="freebsd"', {
+- 'conditions': [
+- ['"0" < llvm_version < "4.0"', {
+- # Use this flag because on FreeBSD std::pairs copy constructor is non-trivial.
+- # Doesn't apply to llvm 4.0 (FreeBSD 11.1) or later.
+- # Refs: https://lists.freebsd.org/pipermail/freebsd-toolchain/2016-March/002094.html
+- # Refs: https://svnweb.freebsd.org/ports/head/www/node/Makefile?revision=444555&view=markup
+- 'cflags': [ '-D_LIBCPP_TRIVIAL_PAIR_COPY_CTOR=1' ],
+- }],
+- ],
+ 'ldflags': [
+ '-Wl,--export-dynamic',
+ ],
diff --git a/devel/electron4/files/patch-third__party_electron__node_deps_uv_BUILD.gn b/devel/electron4/files/patch-third__party_electron__node_deps_uv_BUILD.gn
new file mode 100644
index 000000000000..fe82e3a57a29
--- /dev/null
+++ b/devel/electron4/files/patch-third__party_electron__node_deps_uv_BUILD.gn
@@ -0,0 +1,44 @@
+--- third_party/electron_node/deps/uv/BUILD.gn.orig 2019-03-16 10:00:16 UTC
++++ third_party/electron_node/deps/uv/BUILD.gn
+@@ -3,7 +3,7 @@ config("libuv_config") {
+
+ defines = []
+
+- if (is_linux) {
++ if (is_linux && !is_bsd) {
+ defines += [ "_POSIX_C_SOURCE=200112" ]
+ }
+ if (!is_win) {
+@@ -145,7 +145,7 @@ static_library("uv") {
+ libs += [ "m" ]
+ ldflags += [ "-pthread" ]
+ }
+- if (is_mac || is_linux) {
++ if (is_mac || (is_linux && !is_bsd)) {
+ sources += [ "src/unix/proctitle.c" ]
+ }
+ if (is_mac) {
+@@ -159,7 +159,7 @@ static_library("uv") {
+ "_DARWIN_UNLIMITED_SELECT=1",
+ ]
+ }
+- if (is_linux) {
++ if (is_linux && !is_bsd) {
+ defines += [ "_GNU_SOURCE" ]
+ sources += [
+ "src/unix/linux-core.c",
+@@ -179,6 +179,14 @@ static_library("uv") {
+ sources += [
+ "src/unix/bsd-ifaddrs.c",
+ "src/unix/kqueue.c",
++ ]
++ }
++ if (is_bsd) {
++ sources += [
++ "src/unix/bsd-ifaddrs.c",
++ "src/unix/freebsd.c",
++ "src/unix/kqueue.c",
++ "src/unix/posix-hrtime.c",
+ ]
+ }
+ }
diff --git a/devel/electron4/files/patch-third__party_ffmpeg_libavutil_mem.c b/devel/electron4/files/patch-third__party_ffmpeg_libavutil_mem.c
new file mode 100644
index 000000000000..753164f18794
--- /dev/null
+++ b/devel/electron4/files/patch-third__party_ffmpeg_libavutil_mem.c
@@ -0,0 +1,12 @@
+--- third_party/ffmpeg/libavutil/mem.c.orig 2019-03-15 06:40:46 UTC
++++ third_party/ffmpeg/libavutil/mem.c
+@@ -32,9 +32,6 @@
+ #include <stdint.h>
+ #include <stdlib.h>
+ #include <string.h>
+-#if HAVE_MALLOC_H
+-#include <malloc.h>
+-#endif
+
+ #include "avassert.h"
+ #include "avutil.h"
diff --git a/devel/electron4/files/patch-third__party_googletest_src_googletest_include_gtest_internal_gtest-port.h b/devel/electron4/files/patch-third__party_googletest_src_googletest_include_gtest_internal_gtest-port.h
new file mode 100644
index 000000000000..df91aba5ab2e
--- /dev/null
+++ b/devel/electron4/files/patch-third__party_googletest_src_googletest_include_gtest_internal_gtest-port.h
@@ -0,0 +1,11 @@
+--- third_party/googletest/src/googletest/include/gtest/internal/gtest-port.h.orig 2019-03-15 06:40:20 UTC
++++ third_party/googletest/src/googletest/include/gtest/internal/gtest-port.h
+@@ -841,7 +841,7 @@ typedef struct _RTL_CRITICAL_SECTION GTEST_CRITICAL_SE
+ (GTEST_OS_WINDOWS || GTEST_OS_CYGWIN || GTEST_OS_SYMBIAN || GTEST_OS_AIX)
+
+ // Determines whether test results can be streamed to a socket.
+-#if GTEST_OS_LINUX
++#if GTEST_OS_LINUX || GTEST_OS_FREEBSD
+ # define GTEST_CAN_STREAM_RESULTS_ 1
+ #endif
+
diff --git a/devel/electron4/files/patch-third__party_googletest_src_googletest_src_gtest-port.cc b/devel/electron4/files/patch-third__party_googletest_src_googletest_src_gtest-port.cc
new file mode 100644
index 000000000000..263fcca64d13
--- /dev/null
+++ b/devel/electron4/files/patch-third__party_googletest_src_googletest_src_gtest-port.cc
@@ -0,0 +1,43 @@
+--- third_party/googletest/src/googletest/src/gtest-port.cc.orig 2019-03-15 06:40:20 UTC
++++ third_party/googletest/src/googletest/src/gtest-port.cc
+@@ -52,6 +52,11 @@
+ # include <mach/vm_map.h>
+ #endif // GTEST_OS_MAC
+
++#if GTEST_OS_FREEBSD
++#include <sys/sysctl.h>
++#include <sys/user.h>
++#endif
++
+ #if GTEST_OS_QNX
+ # include <devctl.h>
+ # include <fcntl.h>
+@@ -126,6 +131,28 @@ size_t GetThreadCount() {
+ } else {
+ return 0;
+ }
++}
++
++#elif GTEST_OS_FREEBSD
++
++#define KP_NLWP(kp) (kp.ki_numthreads)
++
++// Return the number of threads running in the process, or 0 to indicate that
++// we cannot detect it.
++size_t GetThreadCount() {
++ int mib[] = {
++ CTL_KERN,
++ KERN_PROC,
++ KERN_PROC_PID,
++ getpid(),
++ };
++ u_int miblen = sizeof(mib) / sizeof(mib[0]);
++ struct kinfo_proc(info);
++ size_t size = sizeof(info);
++ if (sysctl(mib, miblen, &info, &size, NULL, 0)) {
++ return 0;
++ }
++ return KP_NLWP(info);
+ }
+
+ #elif GTEST_OS_QNX
diff --git a/devel/electron4/files/patch-third__party_googletest_src_googletest_src_gtest.cc b/devel/electron4/files/patch-third__party_googletest_src_googletest_src_gtest.cc
new file mode 100644
index 000000000000..5aa4ce19177e
--- /dev/null
+++ b/devel/electron4/files/patch-third__party_googletest_src_googletest_src_gtest.cc
@@ -0,0 +1,10 @@
+--- third_party/googletest/src/googletest/src/gtest.cc.orig 2019-03-15 06:40:20 UTC
++++ third_party/googletest/src/googletest/src/gtest.cc
+@@ -128,6 +128,7 @@
+
+ #if GTEST_CAN_STREAM_RESULTS_
+ # include <arpa/inet.h> // NOLINT
++# include <sys/socket.h> // NOLINT
+ # include <netdb.h> // NOLINT
+ # include <sys/socket.h> // NOLINT
+ # include <sys/types.h> // NOLINT
diff --git a/devel/electron4/files/patch-third__party_leveldatabase_env__chromium.cc b/devel/electron4/files/patch-third__party_leveldatabase_env__chromium.cc
new file mode 100644
index 000000000000..5d81cd00e6f7
--- /dev/null
+++ b/devel/electron4/files/patch-third__party_leveldatabase_env__chromium.cc
@@ -0,0 +1,14 @@
+--- third_party/leveldatabase/env_chromium.cc.orig 2019-03-15 06:38:20 UTC
++++ third_party/leveldatabase/env_chromium.cc
+@@ -38,7 +38,11 @@
+ #include "third_party/leveldatabase/chromium_logger.h"
+ #include "third_party/leveldatabase/leveldb_chrome.h"
+ #include "third_party/leveldatabase/src/include/leveldb/options.h"
++#if defined(OS_BSD)
++#include <re2/re2.h>
++#else
+ #include "third_party/re2/src/re2/re2.h"
++#endif
+
+ using base::FilePath;
+ using base::trace_event::MemoryAllocatorDump;
diff --git a/devel/electron4/files/patch-third__party_libXNVCtrl_NVCtrl.c b/devel/electron4/files/patch-third__party_libXNVCtrl_NVCtrl.c
new file mode 100644
index 000000000000..3e574a3ea88c
--- /dev/null
+++ b/devel/electron4/files/patch-third__party_libXNVCtrl_NVCtrl.c
@@ -0,0 +1,25 @@
+--- third_party/libXNVCtrl/NVCtrl.c.orig 2019-03-15 06:26:36 UTC
++++ third_party/libXNVCtrl/NVCtrl.c
+@@ -27,10 +27,6 @@
+ * libXNVCtrl library properly protects the Display connection.
+ */
+
+-#if !defined(XTHREADS)
+-#define XTHREADS
+-#endif /* XTHREADS */
+-
+ #define NEED_EVENTS
+ #define NEED_REPLIES
+ #include <stdint.h>
+@@ -39,6 +35,11 @@
+ #include <X11/Xutil.h>
+ #include <X11/extensions/Xext.h>
+ #include <X11/extensions/extutil.h>
++
++#if !defined(XTHREADS)
++#define XTHREADS
++#endif /* XTHREADS */
++
+ #include "NVCtrlLib.h"
+ #include "nv_control.h"
+
diff --git a/devel/electron4/files/patch-third__party_libjingle__xmpp_task__runner_taskrunner.cc b/devel/electron4/files/patch-third__party_libjingle__xmpp_task__runner_taskrunner.cc
new file mode 100644
index 000000000000..33288be95e97
--- /dev/null
+++ b/devel/electron4/files/patch-third__party_libjingle__xmpp_task__runner_taskrunner.cc
@@ -0,0 +1,11 @@
+--- third_party/libjingle_xmpp/task_runner/taskrunner.cc.orig 2019-03-15 06:38:20 UTC
++++ third_party/libjingle_xmpp/task_runner/taskrunner.cc
+@@ -95,7 +95,7 @@ void TaskRunner::InternalRunTasks(bool in_destructor)
+ std::vector<Task *>::iterator it;
+ it = std::remove(tasks_.begin(),
+ tasks_.end(),
+- reinterpret_cast<Task *>(NULL));
++ static_cast<Task *>(NULL));
+
+ tasks_.erase(it, tasks_.end());
+
diff --git a/devel/electron4/files/patch-third__party_libphonenumber_dist_cpp_src_phonenumbers_base_memory_singleton.h b/devel/electron4/files/patch-third__party_libphonenumber_dist_cpp_src_phonenumbers_base_memory_singleton.h
new file mode 100644
index 000000000000..64df6a6843c4
--- /dev/null
+++ b/devel/electron4/files/patch-third__party_libphonenumber_dist_cpp_src_phonenumbers_base_memory_singleton.h
@@ -0,0 +1,11 @@
+--- third_party/libphonenumber/dist/cpp/src/phonenumbers/base/memory/singleton.h.orig 2019-03-15 06:28:26 UTC
++++ third_party/libphonenumber/dist/cpp/src/phonenumbers/base/memory/singleton.h
+@@ -56,7 +56,7 @@ template <class T> boost::once_flag Singleton<T>::flag
+ #include "phonenumbers/base/logging.h"
+ #include "phonenumbers/base/thread_checker.h"
+
+-#if !defined(__linux__) && !defined(__APPLE__)
++#if !defined(__linux__) && !defined(__APPLE__) && !defined(__FreeBSD__) && !defined(__OpenBSD__)
+
+ namespace i18n {
+ namespace phonenumbers {
diff --git a/devel/electron4/files/patch-third__party_libphonenumber_dist_cpp_src_phonenumbers_base_synchronization_lock.h b/devel/electron4/files/patch-third__party_libphonenumber_dist_cpp_src_phonenumbers_base_synchronization_lock.h
new file mode 100644
index 000000000000..53f5bac82614
--- /dev/null
+++ b/devel/electron4/files/patch-third__party_libphonenumber_dist_cpp_src_phonenumbers_base_synchronization_lock.h
@@ -0,0 +1,11 @@
+--- third_party/libphonenumber/dist/cpp/src/phonenumbers/base/synchronization/lock.h.orig 2019-03-15 06:28:26 UTC
++++ third_party/libphonenumber/dist/cpp/src/phonenumbers/base/synchronization/lock.h
+@@ -37,7 +37,7 @@ typedef boost::mutex::scoped_lock AutoLock;
+ // Dummy lock implementation on non-POSIX platforms. If you are running on a
+ // different platform and care about thread-safety, please compile with
+ // -DI18N_PHONENUMBERS_USE_BOOST.
+-#if !defined(__linux__) && !defined(__APPLE__)
++#if !defined(__linux__) && !defined(__APPLE__) && !defined(__FreeBSD__) && !defined(__OpenBSD__)
+
+ namespace i18n {
+ namespace phonenumbers {
diff --git a/devel/electron4/files/patch-third__party_libphonenumber_dist_cpp_src_phonenumbers_base_thread__checker.h b/devel/electron4/files/patch-third__party_libphonenumber_dist_cpp_src_phonenumbers_base_thread__checker.h
new file mode 100644
index 000000000000..998d97206463
--- /dev/null
+++ b/devel/electron4/files/patch-third__party_libphonenumber_dist_cpp_src_phonenumbers_base_thread__checker.h
@@ -0,0 +1,19 @@
+--- third_party/libphonenumber/dist/cpp/src/phonenumbers/base/thread_checker.h.orig 2019-03-15 06:28:26 UTC
++++ third_party/libphonenumber/dist/cpp/src/phonenumbers/base/thread_checker.h
+@@ -23,6 +23,7 @@
+ // user of the library know that it can't be used in a thread-safe manner when
+ // it is not depending on Boost.
+ #if !defined(__linux__) && !defined(__APPLE__) && \
++ !defined(__FreeBSD__) && !defined(__OpenBSD__) && \
+ !defined(I18N_PHONENUMBERS_NO_THREAD_SAFETY)
+ #error Building without Boost, please provide \
+ -DI18N_PHONENUMBERS_NO_THREAD_SAFETY
+@@ -31,7 +32,7 @@
+ #endif
+
+ #if !defined(NDEBUG) && !defined(I18N_PHONENUMBERS_USE_BOOST) && \
+- (defined(__linux__) || defined(__apple__))
++ (defined(__linux__) || defined(__apple__)) || defined(__FreeBSD__) || defined(__OpenBSD__)
+
+ #include <pthread.h>
+
diff --git a/devel/electron4/files/patch-third__party_libyuv_include_libyuv_row.h b/devel/electron4/files/patch-third__party_libyuv_include_libyuv_row.h
new file mode 100644
index 000000000000..caf8e923fb29
--- /dev/null
+++ b/devel/electron4/files/patch-third__party_libyuv_include_libyuv_row.h
@@ -0,0 +1,37 @@
+--- third_party/libyuv/include/libyuv/row.h.orig 2019-03-15 06:40:37 UTC
++++ third_party/libyuv/include/libyuv/row.h
+@@ -157,10 +157,14 @@ extern "C" {
+ #define HAS_ARGBSHADEROW_SSE2
+ #define HAS_ARGBSUBTRACTROW_SSE2
+ #define HAS_ARGBUNATTENUATEROW_SSE2
++#if !(defined(__i386__) && defined(__GNUC__))
+ #define HAS_BLENDPLANEROW_SSSE3
++#endif
+ #define HAS_COMPUTECUMULATIVESUMROW_SSE2
+ #define HAS_CUMULATIVESUMTOAVERAGEROW_SSE2
++#if !(defined(__i386__) && defined(__GNUC__))
+ #define HAS_INTERPOLATEROW_SSSE3
++#endif
+ #define HAS_RGBCOLORTABLEROW_X86
+ #define HAS_SOBELROW_SSE2
+ #define HAS_SOBELTOPLANEROW_SSE2
+@@ -206,7 +210,9 @@ extern "C" {
+ #define HAS_I422TORGB565ROW_AVX2
+ #define HAS_I422TORGBAROW_AVX2
+ #define HAS_I444TOARGBROW_AVX2
++#if !(defined(__i386__) && defined(__GNUC__))
+ #define HAS_INTERPOLATEROW_AVX2
++#endif
+ #define HAS_J422TOARGBROW_AVX2
+ #define HAS_MERGEUVROW_AVX2
+ #define HAS_MIRRORROW_AVX2
+@@ -231,7 +237,9 @@ extern "C" {
+ #define HAS_ARGBMULTIPLYROW_AVX2
+ #define HAS_ARGBSUBTRACTROW_AVX2
+ #define HAS_ARGBUNATTENUATEROW_AVX2
++#if !(defined(__i386__) && defined(__GNUC__))
+ #define HAS_BLENDPLANEROW_AVX2
++#endif
+
+ #if defined(__x86_64__) || !defined(__pic__) || defined(__clang__) || \
+ defined(_MSC_VER)
diff --git a/devel/electron4/files/patch-third__party_node_node.py b/devel/electron4/files/patch-third__party_node_node.py
new file mode 100644
index 000000000000..46a6aa460643
--- /dev/null
+++ b/devel/electron4/files/patch-third__party_node_node.py
@@ -0,0 +1,10 @@
+--- third_party/node/node.py.orig 2019-03-15 06:26:37 UTC
++++ third_party/node/node.py
+@@ -12,6 +12,7 @@ import sys
+ def GetBinaryPath():
+ return os_path.join(os_path.dirname(__file__), *{
+ 'Darwin': ('mac', 'node-darwin-x64', 'bin', 'node'),
++ 'FreeBSD': ('freebsd', 'node-freebsd-x64', 'bin', 'node'),
+ 'Linux': ('linux', 'node-linux-x64', 'bin', 'node'),
+ 'Windows': ('win', 'node.exe'),
+ }[platform.system()])
diff --git a/devel/electron4/files/patch-third__party_pdfium_core_fxcrt_fx__system.h b/devel/electron4/files/patch-third__party_pdfium_core_fxcrt_fx__system.h
new file mode 100644
index 000000000000..f6ab540dd002
--- /dev/null
+++ b/devel/electron4/files/patch-third__party_pdfium_core_fxcrt_fx__system.h
@@ -0,0 +1,11 @@
+--- third_party/pdfium/core/fxcrt/fx_system.h.orig 2019-03-15 06:29:29 UTC
++++ third_party/pdfium/core/fxcrt/fx_system.h
+@@ -41,7 +41,7 @@
+ #elif defined(_WIN64)
+ #define _FX_OS_ _FX_OS_WIN64_
+ #define _FX_PLATFORM_ _FX_PLATFORM_WINDOWS_
+-#elif defined(__linux__)
++#elif defined(__linux__) || defined(__FreeBSD__)
+ #define _FX_OS_ _FX_OS_LINUX_
+ #define _FX_PLATFORM_ _FX_PLATFORM_LINUX_
+ #elif defined(__APPLE__)
diff --git a/devel/electron4/files/patch-third__party_pdfium_core_fxge_fx__ge__linux.cpp b/devel/electron4/files/patch-third__party_pdfium_core_fxge_fx__ge__linux.cpp
new file mode 100644
index 000000000000..8586f9b4e087
--- /dev/null
+++ b/devel/electron4/files/patch-third__party_pdfium_core_fxge_fx__ge__linux.cpp
@@ -0,0 +1,14 @@
+--- third_party/pdfium/core/fxge/fx_ge_linux.cpp.orig 2019-03-15 06:41:33 UTC
++++ third_party/pdfium/core/fxge/fx_ge_linux.cpp
+@@ -146,9 +146,8 @@ std::unique_ptr<SystemFontInfoIface> SystemFontInfoIfa
+ const char** pUserPaths) {
+ auto pInfo = pdfium::MakeUnique<CFX_LinuxFontInfo>();
+ if (!pInfo->ParseFontCfg(pUserPaths)) {
+- pInfo->AddPath("/usr/share/fonts");
+- pInfo->AddPath("/usr/share/X11/fonts/Type1");
+- pInfo->AddPath("/usr/share/X11/fonts/TTF");
++ pInfo->AddPath("/usr/local/share/fonts/Type1");
++ pInfo->AddPath("/usr/local/share/fonts/TTF");
+ pInfo->AddPath("/usr/local/share/fonts");
+ }
+ return std::move(pInfo);
diff --git a/devel/electron4/files/patch-third__party_pdfium_fxjs_cjs__publicmethods.cpp b/devel/electron4/files/patch-third__party_pdfium_fxjs_cjs__publicmethods.cpp
new file mode 100644
index 000000000000..4f9c980e4d52
--- /dev/null
+++ b/devel/electron4/files/patch-third__party_pdfium_fxjs_cjs__publicmethods.cpp
@@ -0,0 +1,106 @@
+--- third_party/pdfium/fxjs/cjs_publicmethods.cpp.orig 2019-03-15 06:41:33 UTC
++++ third_party/pdfium/fxjs/cjs_publicmethods.cpp
+@@ -72,6 +72,103 @@ const wchar_t* const kFullMonths[] = {L"January", L"Fe
+ L"July", L"August", L"September",
+ L"October", L"November", L"December"};
+
++#if defined(__FreeBSD__)
++/*
++ * cvt.c - IEEE floating point formatting routines for FreeBSD
++ * from GNU libc-4.6.27
++ */
++
++/*
++ * ap_ecvt converts to decimal
++ * the number of digits is specified by ndigit
++ * decpt is set to the position of the decimal point
++ * sign is set to 0 for positive, 1 for negative
++ */
++
++#define NDIG 80
++
++static char *
++ ap_cvt(double arg, int ndigits, int *decpt, int *sign, int eflag)
++{
++ register int r2;
++ double fi, fj;
++ register char *p, *p1;
++ static char buf[NDIG];
++
++ if (ndigits >= NDIG - 1)
++ ndigits = NDIG - 2;
++ r2 = 0;
++ *sign = 0;
++ p = &buf[0];
++ if (arg < 0) {
++ *sign = 1;
++ arg = -arg;
++ }
++ arg = modf(arg, &fi);
++ p1 = &buf[NDIG];
++ /*
++ * Do integer part
++ */
++ if (fi != 0) {
++ p1 = &buf[NDIG];
++ while (fi != 0) {
++ fj = modf(fi / 10, &fi);
++ *--p1 = (int) ((fj + .03) * 10) + '0';
++ r2++;
++ }
++ while (p1 < &buf[NDIG])
++ *p++ = *p1++;
++ }
++ else if (arg > 0) {
++ while ((fj = arg * 10) < 1) {
++ arg = fj;
++ r2--;
++ }
++ }
++ p1 = &buf[ndigits];
++ if (eflag == 0)
++ p1 += r2;
++ *decpt = r2;
++ if (p1 < &buf[0]) {
++ buf[0] = '\0';
++ return (buf);
++ }
++ while (p <= p1 && p < &buf[NDIG]) {
++ arg *= 10;
++ arg = modf(arg, &fj);
++ *p++ = (int) fj + '0';
++ }
++ if (p1 >= &buf[NDIG]) {
++ buf[NDIG - 1] = '\0';
++ return (buf);
++ }
++ p = p1;
++ *p1 += 5;
++ while (*p1 > '9') {
++ *p1 = '0';
++ if (p1 > buf)
++ ++ * --p1;
++ else {
++ *p1 = '1';
++ (*decpt)++;
++ if (eflag == 0) {
++ if (p > buf)
++ *p = '0';
++ p++;
++ }
++ }
++ }
++ *p = '\0';
++ return (buf);
++}
++
++static char *
++ fcvt(double arg, int ndigits, int *decpt, int *sign)
++{
++ return (ap_cvt(arg, ndigits, decpt, sign, 0));
++}
++#endif // defined(__FreeBSD__)
++
+ template <typename T>
+ T StrTrim(const T& str) {
+ T result = str;
diff --git a/devel/electron4/files/patch-third__party_pdfium_fxjs_js__define.cpp b/devel/electron4/files/patch-third__party_pdfium_fxjs_js__define.cpp
new file mode 100644
index 000000000000..a38fdbf80d49
--- /dev/null
+++ b/devel/electron4/files/patch-third__party_pdfium_fxjs_js__define.cpp
@@ -0,0 +1,22 @@
+--- third_party/pdfium/fxjs/js_define.cpp.orig 2019-03-15 06:41:33 UTC
++++ third_party/pdfium/fxjs/js_define.cpp
+@@ -23,6 +23,11 @@ double GetLocalTZA() {
+ return 0;
+ time_t t = 0;
+ time(&t);
++#ifdef __FreeBSD__
++ struct tm lt;
++ localtime_r(&t, &lt);
++ return (double)(-(lt.tm_gmtoff * 1000));
++#else
+ localtime(&t);
+ #if _FX_PLATFORM_ == _FX_PLATFORM_WINDOWS_
+ // In gcc 'timezone' is a global variable declared in time.h. In VC++, that
+@@ -31,6 +36,7 @@ double GetLocalTZA() {
+ _get_timezone(&timezone);
+ #endif // _FX_PLATFORM_ == _FX_PLATFORM_WINDOWS_
+ return (double)(-(timezone * 1000));
++#endif // __FreeBSD__
+ }
+
+ int GetDaylightSavingTA(double d) {
diff --git a/devel/electron4/files/patch-third__party_pdfium_third__party_base_logging.h b/devel/electron4/files/patch-third__party_pdfium_third__party_base_logging.h
new file mode 100644
index 000000000000..30adc593812f
--- /dev/null
+++ b/devel/electron4/files/patch-third__party_pdfium_third__party_base_logging.h
@@ -0,0 +1,11 @@
+--- third_party/pdfium/third_party/base/logging.h.orig 2019-03-15 06:41:33 UTC
++++ third_party/pdfium/third_party/base/logging.h
+@@ -10,7 +10,7 @@
+
+ #ifndef _WIN32
+ #define NULL_DEREF_IF_POSSIBLE \
+- *(reinterpret_cast<volatile char*>(NULL) + 42) = 0x42;
++ *(reinterpret_cast<volatile char*>(__null) + 42) = 0x42;
+ #else
+ #define NULL_DEREF_IF_POSSIBLE
+ #endif
diff --git a/devel/electron4/files/patch-third__party_perfetto_include_perfetto_base_build__config.h b/devel/electron4/files/patch-third__party_perfetto_include_perfetto_base_build__config.h
new file mode 100644
index 000000000000..8bfa807479e3
--- /dev/null
+++ b/devel/electron4/files/patch-third__party_perfetto_include_perfetto_base_build__config.h
@@ -0,0 +1,37 @@
+--- third_party/perfetto/include/perfetto/base/build_config.h.orig 2019-03-15 06:40:52 UTC
++++ third_party/perfetto/include/perfetto/base/build_config.h
+@@ -28,6 +28,7 @@
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_ANDROID() 1
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_MACOSX() 0
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_LINUX() 0
++#define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_FREEBSD() 0
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_WIN() 0
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_WASM() 0
+ #elif defined(__APPLE__)
+@@ -36,22 +37,25 @@
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_LINUX() 0
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_WIN() 0
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_WASM() 0
+-#elif defined(__linux__)
++#elif defined(__linux__) || defined(__FreeBSD__)
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_ANDROID() 0
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_MACOSX() 0
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_LINUX() 1
++#define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_FREEBSD() 1
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_WIN() 0
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_WASM() 0
+ #elif defined(_WIN32)
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_ANDROID() 0
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_MACOSX() 0
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_LINUX() 0
++#define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_FREEBSD() 0
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_WIN() 1
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_WASM() 0
+ #elif defined(__EMSCRIPTEN__)
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_ANDROID() 0
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_MACOSX() 0
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_LINUX() 0
++#define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_FREEBSD() 0
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_WIN() 0
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_WASM() 1
+ #else
diff --git a/devel/electron4/files/patch-third__party_perfetto_include_perfetto_base_watchdog__posix.h b/devel/electron4/files/patch-third__party_perfetto_include_perfetto_base_watchdog__posix.h
new file mode 100644
index 000000000000..bfdd3e46f67e
--- /dev/null
+++ b/devel/electron4/files/patch-third__party_perfetto_include_perfetto_base_watchdog__posix.h
@@ -0,0 +1,11 @@
+--- third_party/perfetto/include/perfetto/base/watchdog_posix.h.orig 2019-03-15 06:40:52 UTC
++++ third_party/perfetto/include/perfetto/base/watchdog_posix.h
+@@ -45,7 +45,7 @@ class Watchdog {
+ Timer(const Timer&) = delete;
+ Timer& operator=(const Timer&) = delete;
+
+- timer_t timerid_ = nullptr;
++ timer_t timerid_ = 0;
+ };
+ virtual ~Watchdog();
+
diff --git a/devel/electron4/files/patch-third__party_perfetto_src_base_unix__task__runner.cc b/devel/electron4/files/patch-third__party_perfetto_src_base_unix__task__runner.cc
new file mode 100644
index 000000000000..ab28f410bbe4
--- /dev/null
+++ b/devel/electron4/files/patch-third__party_perfetto_src_base_unix__task__runner.cc
@@ -0,0 +1,11 @@
+--- third_party/perfetto/src/base/unix_task_runner.cc.orig 2019-03-15 06:40:54 UTC
++++ third_party/perfetto/src/base/unix_task_runner.cc
+@@ -45,7 +45,7 @@ UnixTaskRunner::UnixTaskRunner() {
+ control_read_.reset(pipe_fds[0]);
+ control_write_.reset(pipe_fds[1]);
+
+-#if PERFETTO_BUILDFLAG(PERFETTO_OS_LINUX)
++#if PERFETTO_BUILDFLAG(PERFETTO_OS_LINUX) && !PERFETTO_BUILDFLAG(PERFETTO_OS_FREEBSD)
+ // We are never expecting to have more than a few bytes in the wake-up pipe.
+ // Reduce the buffer size on Linux. Note that this gets rounded up to the page
+ // size.
diff --git a/devel/electron4/files/patch-third__party_perfetto_src_tracing_core_tracing__service__impl.cc b/devel/electron4/files/patch-third__party_perfetto_src_tracing_core_tracing__service__impl.cc
new file mode 100644
index 000000000000..cc61c8455e48
--- /dev/null
+++ b/devel/electron4/files/patch-third__party_perfetto_src_tracing_core_tracing__service__impl.cc
@@ -0,0 +1,12 @@
+--- third_party/perfetto/src/tracing/core/tracing_service_impl.cc.orig 2019-03-15 06:40:55 UTC
++++ third_party/perfetto/src/tracing/core/tracing_service_impl.cc
+@@ -1050,7 +1050,8 @@ void TracingServiceImpl::MaybeSnapshotClocks(
+ protos::ClockSnapshot* clock_snapshot = packet.mutable_clock_snapshot();
+
+ #if !PERFETTO_BUILDFLAG(PERFETTO_OS_MACOSX) && \
+- !PERFETTO_BUILDFLAG(PERFETTO_OS_WIN)
++ !PERFETTO_BUILDFLAG(PERFETTO_OS_WIN) && \
++ !PERFETTO_BUILDFLAG(PERFETTO_OS_FREEBSD)
+ struct {
+ clockid_t id;
+ protos::ClockSnapshot::Clock::Type type;
diff --git a/devel/electron4/files/patch-third__party_protobuf_src_google_protobuf_stubs_platform__macros.h b/devel/electron4/files/patch-third__party_protobuf_src_google_protobuf_stubs_platform__macros.h
new file mode 100644
index 000000000000..874b6fae9ed6
--- /dev/null
+++ b/devel/electron4/files/patch-third__party_protobuf_src_google_protobuf_stubs_platform__macros.h
@@ -0,0 +1,11 @@
+--- third_party/protobuf/src/google/protobuf/stubs/platform_macros.h.orig 2019-03-15 06:38:22 UTC
++++ third_party/protobuf/src/google/protobuf/stubs/platform_macros.h
+@@ -114,7 +114,7 @@ GOOGLE_PROTOBUF_PLATFORM_ERROR
+
+ #undef GOOGLE_PROTOBUF_PLATFORM_ERROR
+
+-#if defined(GOOGLE_PROTOBUF_OS_ANDROID) || defined(GOOGLE_PROTOBUF_OS_IPHONE) || defined(__OpenBSD__)
++#if defined(GOOGLE_PROTOBUF_OS_ANDROID) || defined(GOOGLE_PROTOBUF_OS_IPHONE) || defined(__FreeBSD__)
+ // Android ndk does not support the __thread keyword very well yet. Here
+ // we use pthread_key_create()/pthread_getspecific()/... methods for
+ // TLS support on android.
diff --git a/devel/electron4/files/patch-third__party_sfntly_src_cpp_src_sfntly_table_core_cmap__table.cc b/devel/electron4/files/patch-third__party_sfntly_src_cpp_src_sfntly_table_core_cmap__table.cc
new file mode 100644
index 000000000000..a6062ddfd686
--- /dev/null
+++ b/devel/electron4/files/patch-third__party_sfntly_src_cpp_src_sfntly_table_core_cmap__table.cc
@@ -0,0 +1,47 @@
+--- third_party/sfntly/src/cpp/src/sfntly/table/core/cmap_table.cc.orig 2019-03-15 06:29:31 UTC
++++ third_party/sfntly/src/cpp/src/sfntly/table/core/cmap_table.cc
+@@ -439,7 +439,7 @@ CMapTable::CMapFormat0::Builder::Builder(
+ }
+
+ CMapTable::CMapFormat0::Builder::Builder(const CMapId& cmap_id)
+- : CMap::Builder(reinterpret_cast<ReadableFontData*>(NULL),
++ : CMap::Builder(static_cast<ReadableFontData*>(NULL),
+ CMapFormat::kFormat0,
+ cmap_id) {
+ }
+@@ -563,7 +563,7 @@ CMapTable::CMapFormat2::Builder::Builder(WritableFontD
+ : CMapTable::CMap::Builder(data ? down_cast<WritableFontData*>(
+ data->Slice(offset, data->ReadUShort(
+ offset + Offset::kFormat0Length)))
+- : reinterpret_cast<WritableFontData*>(NULL),
++ : static_cast<WritableFontData*>(NULL),
+ CMapFormat::kFormat2, cmap_id) {
+ // TODO(arthurhsu): FIXIT: heavy lifting and leak, need fix.
+ }
+@@ -574,7 +574,7 @@ CMapTable::CMapFormat2::Builder::Builder(ReadableFontD
+ : CMapTable::CMap::Builder(data ? down_cast<ReadableFontData*>(
+ data->Slice(offset, data->ReadUShort(
+ offset + Offset::kFormat0Length)))
+- : reinterpret_cast<ReadableFontData*>(NULL),
++ : static_cast<ReadableFontData*>(NULL),
+ CMapFormat::kFormat2, cmap_id) {
+ // TODO(arthurhsu): FIXIT: heavy lifting and leak, need fix.
+ }
+@@ -958,7 +958,7 @@ CMapTable::CMapFormat4::Builder::Builder(WritableFontD
+ CMapTable::CMapFormat4::Builder::Builder(SegmentList* segments,
+ std::vector<int32_t>* glyph_id_array,
+ const CMapId& cmap_id)
+- : CMap::Builder(reinterpret_cast<ReadableFontData*>(NULL),
++ : CMap::Builder(static_cast<ReadableFontData*>(NULL),
+ CMapFormat::kFormat4, cmap_id),
+ segments_(segments->begin(), segments->end()),
+ glyph_id_array_(glyph_id_array->begin(), glyph_id_array->end()) {
+@@ -966,7 +966,7 @@ CMapTable::CMapFormat4::Builder::Builder(SegmentList*
+ }
+
+ CMapTable::CMapFormat4::Builder::Builder(const CMapId& cmap_id)
+- : CMap::Builder(reinterpret_cast<ReadableFontData*>(NULL),
++ : CMap::Builder(static_cast<ReadableFontData*>(NULL),
+ CMapFormat::kFormat4, cmap_id) {
+ }
+
diff --git a/devel/electron4/files/patch-third__party_skia_src_core_SkCpu.cpp b/devel/electron4/files/patch-third__party_skia_src_core_SkCpu.cpp
new file mode 100644
index 000000000000..aecee950ad5c
--- /dev/null
+++ b/devel/electron4/files/patch-third__party_skia_src_core_SkCpu.cpp
@@ -0,0 +1,19 @@
+--- third_party/skia/src/core/SkCpu.cpp.orig 2019-03-15 06:31:12 UTC
++++ third_party/skia/src/core/SkCpu.cpp
+@@ -74,6 +74,8 @@
+ #include <sys/auxv.h>
+
+ static uint32_t read_cpu_features() {
++return 0;
++#if 0
+ const uint32_t kHWCAP_CRC32 = (1<< 7),
+ kHWCAP_ASIMDHP = (1<<10);
+
+@@ -82,6 +84,7 @@
+ if (hwcaps & kHWCAP_CRC32 ) { features |= SkCpu::CRC32; }
+ if (hwcaps & kHWCAP_ASIMDHP) { features |= SkCpu::ASIMDHP; }
+ return features;
++#endif
+ }
+
+ #elif defined(SK_CPU_ARM32) && __has_include(<sys/auxv.h>) && \
diff --git a/devel/electron4/files/patch-third__party_skia_src_gpu_GrAutoLocaleSetter.h b/devel/electron4/files/patch-third__party_skia_src_gpu_GrAutoLocaleSetter.h
new file mode 100644
index 000000000000..13c8ea76b41e
--- /dev/null
+++ b/devel/electron4/files/patch-third__party_skia_src_gpu_GrAutoLocaleSetter.h
@@ -0,0 +1,11 @@
+--- third_party/skia/src/gpu/GrAutoLocaleSetter.h.orig 2019-03-15 06:31:12 UTC
++++ third_party/skia/src/gpu/GrAutoLocaleSetter.h
+@@ -27,7 +27,7 @@
+ #define HAVE_XLOCALE 0
+ #endif
+
+-#if defined(SK_BUILD_FOR_ANDROID) || defined(__UCLIBC__) || defined(_NEWLIB_VERSION)
++#if defined(SK_BUILD_FOR_ANDROID) || defined(__UCLIBC__) || defined(_NEWLIB_VERSION) || defined(__FreeBSD__)
+ #define HAVE_LOCALE_T 0
+ #else
+ #define HAVE_LOCALE_T 1
diff --git a/devel/electron4/files/patch-third__party_skia_src_images_SkJpegEncoder.cpp b/devel/electron4/files/patch-third__party_skia_src_images_SkJpegEncoder.cpp
new file mode 100644
index 000000000000..4e55952fe38d
--- /dev/null
+++ b/devel/electron4/files/patch-third__party_skia_src_images_SkJpegEncoder.cpp
@@ -0,0 +1,41 @@
+--- third_party/skia/src/images/SkJpegEncoder.cpp.orig 2019-03-15 06:41:36 UTC
++++ third_party/skia/src/images/SkJpegEncoder.cpp
+@@ -77,9 +77,14 @@ bool SkJpegEncoderMgr::setParams(const SkImageInfo& sr
+ return transform_scanline_to_premul_legacy;
+ };
+
++#ifdef JCS_EXTENSIONS
+ J_COLOR_SPACE jpegColorType = JCS_EXT_RGBA;
++#else
++ J_COLOR_SPACE jpegColorType = JCS_RGB;
++#endif
+ int numComponents = 0;
+ switch (srcInfo.colorType()) {
++#ifdef JCS_EXTENSIONS
+ case kRGBA_8888_SkColorType:
+ fProc = chooseProc8888();
+ jpegColorType = JCS_EXT_RGBA;
+@@ -90,6 +95,7 @@ bool SkJpegEncoderMgr::setParams(const SkImageInfo& sr
+ jpegColorType = JCS_EXT_BGRA;
+ numComponents = 4;
+ break;
++#endif
+ case kRGB_565_SkColorType:
+ fProc = transform_scanline_565;
+ jpegColorType = JCS_RGB;
+@@ -109,6 +115,7 @@ bool SkJpegEncoderMgr::setParams(const SkImageInfo& sr
+ jpegColorType = JCS_GRAYSCALE;
+ numComponents = 1;
+ break;
++#ifdef JCS_EXTENSIONS
+ case kRGBA_F16_SkColorType:
+ if (!srcInfo.colorSpace()) {
+ return false;
+@@ -124,6 +131,7 @@ bool SkJpegEncoderMgr::setParams(const SkImageInfo& sr
+ jpegColorType = JCS_EXT_RGBA;
+ numComponents = 4;
+ break;
++#endif
+ default:
+ return false;
+ }
diff --git a/devel/electron4/files/patch-third__party_skia_src_opts_SkRasterPipeline__opts.h b/devel/electron4/files/patch-third__party_skia_src_opts_SkRasterPipeline__opts.h
new file mode 100644
index 000000000000..cdfbea65bb96
--- /dev/null
+++ b/devel/electron4/files/patch-third__party_skia_src_opts_SkRasterPipeline__opts.h
@@ -0,0 +1,20 @@
+--- third_party/skia/src/opts/SkRasterPipeline_opts.h.orig 2019-03-15 06:41:36 UTC
++++ third_party/skia/src/opts/SkRasterPipeline_opts.h
+@@ -657,7 +657,7 @@ SI F approx_powf(F x, F y) {
+ }
+
+ SI F from_half(U16 h) {
+-#if defined(__aarch64__) && !defined(SK_BUILD_FOR_GOOGLE3) // Temporary workaround for some Google3 builds.
++#if defined(JUMPER_IS_NEON) && defined(__aarch64__) && !defined(SK_BUILD_FOR_GOOGLE3) // Temporary workaround for some Google3 builds.
+ return vcvt_f32_f16(h);
+
+ #elif defined(JUMPER_IS_HSW) || defined(JUMPER_IS_AVX512)
+@@ -677,7 +677,7 @@ SI F from_half(U16 h) {
+ }
+
+ SI U16 to_half(F f) {
+-#if defined(__aarch64__) && !defined(SK_BUILD_FOR_GOOGLE3) // Temporary workaround for some Google3 builds.
++#if defined(JUMPER_IS_NEON) && defined(__aarch64__) && !defined(SK_BUILD_FOR_GOOGLE3) // Temporary workaround for some Google3 builds.
+ return vcvt_f16_f32(f);
+
+ #elif defined(JUMPER_IS_HSW) || defined(JUMPER_IS_AVX512)
diff --git a/devel/electron4/files/patch-third__party_skia_src_ports_SkFontHost__FreeType.cpp b/devel/electron4/files/patch-third__party_skia_src_ports_SkFontHost__FreeType.cpp
new file mode 100644
index 000000000000..183f141d6406
--- /dev/null
+++ b/devel/electron4/files/patch-third__party_skia_src_ports_SkFontHost__FreeType.cpp
@@ -0,0 +1,77 @@
+--- third_party/skia/src/ports/SkFontHost_FreeType.cpp.orig 2019-03-15 06:41:36 UTC
++++ third_party/skia/src/ports/SkFontHost_FreeType.cpp
+@@ -112,8 +112,6 @@ class FreeTypeLibrary : SkNoncopyable { (public)
+ : fGetVarDesignCoordinates(nullptr)
+ , fGetVarAxisFlags(nullptr)
+ , fLibrary(nullptr)
+- , fIsLCDSupported(false)
+- , fLCDExtra(0)
+ {
+ if (FT_New_Library(&gFTMemory, &fLibrary)) {
+ return;
+@@ -173,12 +171,7 @@ class FreeTypeLibrary : SkNoncopyable { (public)
+ }
+ #endif
+
+- // Setup LCD filtering. This reduces color fringes for LCD smoothed glyphs.
+- // The default has changed over time, so this doesn't mean the same thing to all users.
+- if (FT_Library_SetLcdFilter(fLibrary, FT_LCD_FILTER_DEFAULT) == 0) {
+- fIsLCDSupported = true;
+- fLCDExtra = 2; //Using a filter adds one full pixel to each side.
+- }
++ FT_Library_SetLcdFilter(fLibrary, FT_LCD_FILTER_DEFAULT);
+ }
+ ~FreeTypeLibrary() {
+ if (fLibrary) {
+@@ -187,8 +180,6 @@ class FreeTypeLibrary : SkNoncopyable { (public)
+ }
+
+ FT_Library library() { return fLibrary; }
+- bool isLCDSupported() { return fIsLCDSupported; }
+- int lcdExtra() { return fLCDExtra; }
+
+ // FT_Get_{MM,Var}_{Blend,Design}_Coordinates were added in FreeType 2.7.1.
+ // Prior to this there was no way to get the coordinates out of the FT_Face.
+@@ -205,8 +196,6 @@ class FreeTypeLibrary : SkNoncopyable { (public)
+
+ private:
+ FT_Library fLibrary;
+- bool fIsLCDSupported;
+- int fLCDExtra;
+
+ // FT_Library_SetLcdFilterWeights was introduced in FreeType 2.4.0.
+ // The following platforms provide FreeType of at least 2.4.0.
+@@ -704,17 +693,6 @@ void SkTypeface_FreeType::onFilterRec(SkScalerContextR
+ rec->fTextSize = SkIntToScalar(1 << 14);
+ }
+
+- if (isLCD(*rec)) {
+- // TODO: re-work so that FreeType is set-up and selected by the SkFontMgr.
+- SkAutoMutexAcquire ama(gFTMutex);
+- ref_ft_library();
+- if (!gFTLibrary->isLCDSupported()) {
+- // If the runtime Freetype library doesn't support LCD, disable it here.
+- rec->fMaskFormat = SkMask::kA8_Format;
+- }
+- unref_ft_library();
+- }
+-
+ SkPaint::Hinting h = rec->getHinting();
+ if (SkPaint::kFull_Hinting == h && !isLCD(*rec)) {
+ // collapse full->normal hinting if we're not doing LCD
+@@ -1109,11 +1087,11 @@ bool SkScalerContext_FreeType::getCBoxForLetter(char l
+ void SkScalerContext_FreeType::updateGlyphIfLCD(SkGlyph* glyph) {
+ if (isLCD(fRec)) {
+ if (fLCDIsVert) {
+- glyph->fHeight += gFTLibrary->lcdExtra();
+- glyph->fTop -= gFTLibrary->lcdExtra() >> 1;
++ glyph->fHeight += 2;
++ glyph->fTop -= 1;
+ } else {
+- glyph->fWidth += gFTLibrary->lcdExtra();
+- glyph->fLeft -= gFTLibrary->lcdExtra() >> 1;
++ glyph->fWidth += 2;
++ glyph->fLeft -= 1;
+ }
+ }
+ }
diff --git a/devel/electron4/files/patch-third__party_skia_src_ports_SkOSFile__stdio.cpp b/devel/electron4/files/patch-third__party_skia_src_ports_SkOSFile__stdio.cpp
new file mode 100644
index 000000000000..d7a6d0d3adff
--- /dev/null
+++ b/devel/electron4/files/patch-third__party_skia_src_ports_SkOSFile__stdio.cpp
@@ -0,0 +1,11 @@
+--- third_party/skia/src/ports/SkOSFile_stdio.cpp.orig 2019-03-15 06:41:36 UTC
++++ third_party/skia/src/ports/SkOSFile_stdio.cpp
+@@ -129,7 +129,7 @@ void sk_fflush(FILE* f) {
+
+ void sk_fsync(FILE* f) {
+ #if !defined(_WIN32) && !defined(SK_BUILD_FOR_ANDROID) && !defined(__UCLIBC__) \
+- && !defined(_NEWLIB_VERSION)
++ && !defined(_NEWLIB_VERSION) && !defined(__FreeBSD__)
+ int fd = fileno(f);
+ fsync(fd);
+ #endif
diff --git a/devel/electron4/files/patch-third__party_skia_src_sksl_SkSLString.h b/devel/electron4/files/patch-third__party_skia_src_sksl_SkSLString.h
new file mode 100644
index 000000000000..0006ccd1e37b
--- /dev/null
+++ b/devel/electron4/files/patch-third__party_skia_src_sksl_SkSLString.h
@@ -0,0 +1,11 @@
+--- third_party/skia/src/sksl/SkSLString.h.orig 2019-03-15 06:41:36 UTC
++++ third_party/skia/src/sksl/SkSLString.h
+@@ -22,6 +22,8 @@
+ #include "SkString.h"
+ #endif
+
++#include <stdarg.h>
++
+ namespace SkSL {
+
+ // Represents a (not necessarily null-terminated) slice of a string.
diff --git a/devel/electron4/files/patch-third__party_skia_third__party_vulkanmemoryallocator_include_vk__mem__alloc.h b/devel/electron4/files/patch-third__party_skia_third__party_vulkanmemoryallocator_include_vk__mem__alloc.h
new file mode 100644
index 000000000000..17906c15830c
--- /dev/null
+++ b/devel/electron4/files/patch-third__party_skia_third__party_vulkanmemoryallocator_include_vk__mem__alloc.h
@@ -0,0 +1,11 @@
+--- third_party/skia/third_party/vulkanmemoryallocator/include/vk_mem_alloc.h.orig 2019-03-16 09:15:20 UTC
++++ third_party/skia/third_party/vulkanmemoryallocator/include/vk_mem_alloc.h
+@@ -2232,7 +2232,7 @@ remove them if not needed.
+ #include <mutex> // for std::mutex
+ #include <atomic> // for std::atomic
+
+-#if !defined(_WIN32) && !defined(__APPLE__)
++#if !defined(_WIN32) && !defined(__APPLE__) && !defined(__FreeBSD__)
+ #include <malloc.h> // for aligned_alloc()
+ #endif
+
diff --git a/devel/electron4/files/patch-third__party_snappy_src_snappy.h b/devel/electron4/files/patch-third__party_snappy_src_snappy.h
new file mode 100644
index 000000000000..df563c71e1cb
--- /dev/null
+++ b/devel/electron4/files/patch-third__party_snappy_src_snappy.h
@@ -0,0 +1,20 @@
+--- third_party/snappy/src/snappy.h.orig 2019-03-19 09:09:00 UTC
++++ third_party/snappy/src/snappy.h
+@@ -73,7 +73,7 @@ namespace snappy {
+ // Original contents of *output are lost.
+ //
+ // REQUIRES: "input[]" is not an alias of "*output".
+- size_t Compress(const char* input, size_t input_length, string* output);
++ size_t Compress(const char* input, size_t input_length, std::string* output);
+
+ // Decompresses "compressed[0,compressed_length-1]" to "*uncompressed".
+ // Original contents of "*uncompressed" are lost.
+@@ -82,7 +82,7 @@ namespace snappy {
+ //
+ // returns false if the message is corrupted and could not be decompressed
+ bool Uncompress(const char* compressed, size_t compressed_length,
+- string* uncompressed);
++ std::string* uncompressed);
+
+ // Decompresses "compressed" to "*uncompressed".
+ //
diff --git a/devel/electron4/files/patch-third__party_sqlite_BUILD.gn b/devel/electron4/files/patch-third__party_sqlite_BUILD.gn
new file mode 100644
index 000000000000..3407106ed016
--- /dev/null
+++ b/devel/electron4/files/patch-third__party_sqlite_BUILD.gn
@@ -0,0 +1,11 @@
+--- third_party/sqlite/BUILD.gn.orig 2019-03-16 09:15:21 UTC
++++ third_party/sqlite/BUILD.gn
+@@ -240,7 +240,7 @@ config("sqlite_warnings") {
+ ]
+ }
+ }
+- if (is_linux) {
++ if (is_linux && !is_bsd) {
+ cflags += [
+ # SQLite doesn't believe in compiler warnings, preferring testing.
+ # http://www.sqlite.org/faq.html#q17
diff --git a/devel/electron4/files/patch-third__party_swiftshader_BUILD.gn b/devel/electron4/files/patch-third__party_swiftshader_BUILD.gn
new file mode 100644
index 000000000000..bfbc8dbee204
--- /dev/null
+++ b/devel/electron4/files/patch-third__party_swiftshader_BUILD.gn
@@ -0,0 +1,10 @@
+--- third_party/swiftshader/BUILD.gn.orig 2019-03-15 06:41:56 UTC
++++ third_party/swiftshader/BUILD.gn
+@@ -100,7 +100,6 @@ config("swiftshader_config") {
+
+ if (is_linux) {
+ ldflags = [
+- "-Wl,--hash-style=both",
+ "-Wl,--gc-sections",
+ ]
+
diff --git a/devel/electron4/files/patch-third__party_swiftshader_src_Common_Configurator.cpp b/devel/electron4/files/patch-third__party_swiftshader_src_Common_Configurator.cpp
new file mode 100644
index 000000000000..81635f9b4123
--- /dev/null
+++ b/devel/electron4/files/patch-third__party_swiftshader_src_Common_Configurator.cpp
@@ -0,0 +1,12 @@
+--- third_party/swiftshader/src/Common/Configurator.cpp.orig 2019-03-15 06:41:56 UTC
++++ third_party/swiftshader/src/Common/Configurator.cpp
+@@ -42,6 +42,9 @@ namespace sw
+
+ bool Configurator::readFile()
+ {
++#if defined(__FreeBSD__)
++ return false;
++#endif
+ #if defined(__unix__)
+ if(access(path.c_str(), R_OK) != 0)
+ {
diff --git a/devel/electron4/files/patch-third__party_swiftshader_src_Common_MutexLock.hpp b/devel/electron4/files/patch-third__party_swiftshader_src_Common_MutexLock.hpp
new file mode 100644
index 000000000000..77b5638046b7
--- /dev/null
+++ b/devel/electron4/files/patch-third__party_swiftshader_src_Common_MutexLock.hpp
@@ -0,0 +1,11 @@
+--- third_party/swiftshader/src/Common/MutexLock.hpp.orig 2019-03-15 06:41:56 UTC
++++ third_party/swiftshader/src/Common/MutexLock.hpp
+@@ -17,7 +17,7 @@
+
+ #include "Thread.hpp"
+
+-#if defined(__linux__)
++#if defined(__linux__) || defined(__FreeBSD__)
+ // Use a pthread mutex on Linux. Since many processes may use SwiftShader
+ // at the same time it's best to just have the scheduler overhead.
+ #include <pthread.h>
diff --git a/devel/electron4/files/patch-third__party_swiftshader_src_Common_SharedLibrary.hpp b/devel/electron4/files/patch-third__party_swiftshader_src_Common_SharedLibrary.hpp
new file mode 100644
index 000000000000..dfaf60d07695
--- /dev/null
+++ b/devel/electron4/files/patch-third__party_swiftshader_src_Common_SharedLibrary.hpp
@@ -0,0 +1,11 @@
+--- third_party/swiftshader/src/Common/SharedLibrary.hpp.orig 2019-03-15 06:41:56 UTC
++++ third_party/swiftshader/src/Common/SharedLibrary.hpp
+@@ -115,7 +115,7 @@ void *loadLibrary(const std::string &libraryDirectory,
+
+ inline void *getLibraryHandle(const char *path)
+ {
+- #ifdef __ANDROID__
++ #if defined( __ANDROID__) || defined(__FreeBSD__)
+ // bionic doesn't support RTLD_NOLOAD before L
+ return dlopen(path, RTLD_NOW | RTLD_LOCAL);
+ #else
diff --git a/devel/electron4/files/patch-third__party_swiftshader_src_Main_SwiftConfig.cpp b/devel/electron4/files/patch-third__party_swiftshader_src_Main_SwiftConfig.cpp
new file mode 100644
index 000000000000..c96dff8a3c90
--- /dev/null
+++ b/devel/electron4/files/patch-third__party_swiftshader_src_Main_SwiftConfig.cpp
@@ -0,0 +1,14 @@
+--- third_party/swiftshader/src/Main/SwiftConfig.cpp.orig 2019-03-15 06:41:56 UTC
++++ third_party/swiftshader/src/Main/SwiftConfig.cpp
+@@ -762,7 +762,11 @@ namespace sw
+ struct stat status;
+ int lastModified = ini.getInteger("LastModified", "Time", 0);
+
++#if !defined(__FreeBSD__)
+ bool noConfig = stat("SwiftShader.ini", &status) != 0;
++#else
++ bool noConfig = false;
++#endif
+ newConfig = !noConfig && abs((int)status.st_mtime - lastModified) > 1;
+
+ if(disableServerOverride)
diff --git a/devel/electron4/files/patch-third__party_swiftshader_src_OpenGL_libEGL_libEGL.cpp b/devel/electron4/files/patch-third__party_swiftshader_src_OpenGL_libEGL_libEGL.cpp
new file mode 100644
index 000000000000..5573e799090b
--- /dev/null
+++ b/devel/electron4/files/patch-third__party_swiftshader_src_OpenGL_libEGL_libEGL.cpp
@@ -0,0 +1,29 @@
+--- third_party/swiftshader/src/OpenGL/libEGL/libEGL.cpp.orig 2019-03-15 06:41:56 UTC
++++ third_party/swiftshader/src/OpenGL/libEGL/libEGL.cpp
+@@ -119,7 +119,7 @@ EGLDisplay GetDisplay(EGLNativeDisplayType display_id)
+ // FIXME: Check if display_id is the default display
+ }
+
+- #if defined(__linux__) && !defined(__ANDROID__)
++ #if (defined(__linux__) || defined(__FreeBSD)) && !defined(__ANDROID__)
+ #if defined(USE_X11)
+ if(!libX11)
+ #endif // Non X11 linux is headless only
+@@ -178,7 +178,7 @@ const char *QueryString(EGLDisplay dpy, EGLint name)
+ {
+ return success(
+ "EGL_KHR_client_get_all_proc_addresses "
+-#if defined(__linux__) && !defined(__ANDROID__)
++#if (defined(__linux__) || defined(__FreeBSD__)) && !defined(__ANDROID__)
+ "EGL_KHR_platform_gbm "
+ #endif
+ #if defined(USE_X11)
+@@ -1172,7 +1172,7 @@ EGLDisplay GetPlatformDisplayEXT(EGLenum platform, voi
+ {
+ TRACE("(EGLenum platform = 0x%X, void *native_display = %p, const EGLint *attrib_list = %p)", platform, native_display, attrib_list);
+
+- #if defined(__linux__) && !defined(__ANDROID__)
++ #if (defined(__linux__) || defined(__FreeBSD__)) && !defined(__ANDROID__)
+ switch(platform)
+ {
+ #if defined(USE_X11)
diff --git a/devel/electron4/files/patch-third__party_swiftshader_src_OpenGL_libEGL_libEGL.hpp b/devel/electron4/files/patch-third__party_swiftshader_src_OpenGL_libEGL_libEGL.hpp
new file mode 100644
index 000000000000..638f09a578b5
--- /dev/null
+++ b/devel/electron4/files/patch-third__party_swiftshader_src_OpenGL_libEGL_libEGL.hpp
@@ -0,0 +1,11 @@
+--- third_party/swiftshader/src/OpenGL/libEGL/libEGL.hpp.orig 2019-03-15 06:41:56 UTC
++++ third_party/swiftshader/src/OpenGL/libEGL/libEGL.hpp
+@@ -100,7 +100,7 @@ class LibEGL (private)
+ #endif
+ #elif defined(__ANDROID__)
+ const char *libEGL_lib[] = {"libEGL_swiftshader.so", "libEGL_swiftshader.so"};
+- #elif defined(__linux__)
++ #elif defined(__linux__) || defined(__FreeBSD__)
+ #if defined(__LP64__)
+ const char *libEGL_lib[] = {"lib64EGL_translator.so", "libEGL.so.1", "libEGL.so"};
+ #else
diff --git a/devel/electron4/files/patch-third__party_swiftshader_src_OpenGL_libGLES__CM_libGLES__CM.hpp b/devel/electron4/files/patch-third__party_swiftshader_src_OpenGL_libGLES__CM_libGLES__CM.hpp
new file mode 100644
index 000000000000..6fa9fab484bd
--- /dev/null
+++ b/devel/electron4/files/patch-third__party_swiftshader_src_OpenGL_libGLES__CM_libGLES__CM.hpp
@@ -0,0 +1,11 @@
+--- third_party/swiftshader/src/OpenGL/libGLES_CM/libGLES_CM.hpp.orig 2019-03-15 06:41:56 UTC
++++ third_party/swiftshader/src/OpenGL/libGLES_CM/libGLES_CM.hpp
+@@ -261,7 +261,7 @@ class LibGLES_CM (private)
+ #endif
+ #elif defined(__ANDROID__)
+ const char *libGLES_CM_lib[] = {"libGLESv1_CM_swiftshader.so", "libGLESv1_CM_swiftshader.so"};
+- #elif defined(__linux__)
++ #elif defined(__linux__) || defined(__FreeBSD__)
+ #if defined(__LP64__)
+ const char *libGLES_CM_lib[] = {"lib64GLES_CM_translator.so", "libGLES_CM.so.1", "libGLES_CM.so"};
+ #else
diff --git a/devel/electron4/files/patch-third__party_swiftshader_src_OpenGL_libGLESv2_libGLESv2.hpp b/devel/electron4/files/patch-third__party_swiftshader_src_OpenGL_libGLESv2_libGLESv2.hpp
new file mode 100644
index 000000000000..01f956f6a603
--- /dev/null
+++ b/devel/electron4/files/patch-third__party_swiftshader_src_OpenGL_libGLESv2_libGLESv2.hpp
@@ -0,0 +1,11 @@
+--- third_party/swiftshader/src/OpenGL/libGLESv2/libGLESv2.hpp.orig 2019-03-15 06:41:56 UTC
++++ third_party/swiftshader/src/OpenGL/libGLESv2/libGLESv2.hpp
+@@ -286,7 +286,7 @@ class LibGLESv2 (private)
+ #endif
+ #elif defined(__ANDROID__)
+ const char *libGLESv2_lib[] = {"libGLESv2_swiftshader.so", "libGLESv2_swiftshader.so"};
+- #elif defined(__linux__)
++ #elif defined(__linux__) || defined(__FreeBSD__)
+ #if defined(__LP64__)
+ const char *libGLESv2_lib[] = {"lib64GLES_V2_translator.so", "libGLESv2.so.2", "libGLESv2.so"};
+ #else
diff --git a/devel/electron4/files/patch-third__party_swiftshader_third__party_llvm-subzero_build_Linux_include_llvm_Config_config.h b/devel/electron4/files/patch-third__party_swiftshader_third__party_llvm-subzero_build_Linux_include_llvm_Config_config.h
new file mode 100644
index 000000000000..11d911e663ad
--- /dev/null
+++ b/devel/electron4/files/patch-third__party_swiftshader_third__party_llvm-subzero_build_Linux_include_llvm_Config_config.h
@@ -0,0 +1,29 @@
+--- third_party/swiftshader/third_party/llvm-subzero/build/Linux/include/llvm/Config/config.h.orig 2019-03-15 06:30:14 UTC
++++ third_party/swiftshader/third_party/llvm-subzero/build/Linux/include/llvm/Config/config.h
+@@ -121,7 +121,7 @@
+ #define HAVE_LINK_H 1
+
+ /* Define to 1 if you have the `lseek64' function. */
+-#define HAVE_LSEEK64 1
++/* #undef HAVE_LSEEK64 */
+
+ /* Define to 1 if you have the <mach/mach.h> header file. */
+ /* #undef HAVE_MACH_MACH_H */
+@@ -130,7 +130,7 @@
+ /* #undef HAVE_MALLCTL */
+
+ /* Define to 1 if you have the `mallinfo' function. */
+-#define HAVE_MALLINFO 1
++/* #undef HAVE_MALLINFO */
+
+ /* Define to 1 if you have the <malloc.h> header file. */
+ #define HAVE_MALLOC_H 1
+@@ -154,7 +154,7 @@
+ /* #undef HAVE_NDIR_H */
+
+ /* Define to 1 if you have the `posix_fallocate' function. */
+-#define HAVE_POSIX_FALLOCATE 1
++/* #undef HAVE_POSIX_FALLOCATE */
+
+ /* Define to 1 if you have the `posix_spawn' function. */
+ #define HAVE_POSIX_SPAWN 1
diff --git a/devel/electron4/files/patch-third__party_swiftshader_third__party_llvm-subzero_lib_Support_Unix_Process.inc b/devel/electron4/files/patch-third__party_swiftshader_third__party_llvm-subzero_lib_Support_Unix_Process.inc
new file mode 100644
index 000000000000..98bb3bcfd5d9
--- /dev/null
+++ b/devel/electron4/files/patch-third__party_swiftshader_third__party_llvm-subzero_lib_Support_Unix_Process.inc
@@ -0,0 +1,11 @@
+--- third_party/swiftshader/third_party/llvm-subzero/lib/Support/Unix/Process.inc.orig 2019-03-15 06:30:14 UTC
++++ third_party/swiftshader/third_party/llvm-subzero/lib/Support/Unix/Process.inc
+@@ -35,7 +35,7 @@
+ // DragonFlyBSD, OpenBSD, and Bitrig have deprecated <malloc.h> for
+ // <stdlib.h> instead. Unix.h includes this for us already.
+ #if defined(HAVE_MALLOC_H) && !defined(__DragonFly__) && \
+- !defined(__OpenBSD__) && !defined(__Bitrig__)
++ !defined(__FreeBSD__) && !defined(__OpenBSD__) && !defined(__Bitrig__)
+ #include <malloc.h>
+ #endif
+ #if defined(HAVE_MALLCTL)
diff --git a/devel/electron4/files/patch-third__party_usrsctp_BUILD.gn b/devel/electron4/files/patch-third__party_usrsctp_BUILD.gn
new file mode 100644
index 000000000000..39b9266d5b93
--- /dev/null
+++ b/devel/electron4/files/patch-third__party_usrsctp_BUILD.gn
@@ -0,0 +1,20 @@
+--- third_party/usrsctp/BUILD.gn.orig 2019-03-15 06:26:39 UTC
++++ third_party/usrsctp/BUILD.gn
+@@ -116,11 +116,16 @@ static_library("usrsctp") {
+ "-UINET6",
+ ]
+
+- if (is_linux || is_android) {
++ if ((is_linux && !is_bsd) || is_android ) {
+ defines += [
+ "__Userspace_os_Linux",
+ "_GNU_SOURCE",
+ ]
++ } else if (is_bsd) {
++ defines += [
++ "__Userspace_os_FreeBSD",
++ ]
++ cflags += [ "-U__FreeBSD__" ]
+ } else if (is_mac || is_ios) {
+ defines += [
+ "HAVE_SA_LEN",
diff --git a/devel/electron4/files/patch-third__party_webrtc_BUILD.gn b/devel/electron4/files/patch-third__party_webrtc_BUILD.gn
new file mode 100644
index 000000000000..c33559a7e7bf
--- /dev/null
+++ b/devel/electron4/files/patch-third__party_webrtc_BUILD.gn
@@ -0,0 +1,12 @@
+--- third_party/webrtc/BUILD.gn.orig 2019-03-15 06:42:00 UTC
++++ third_party/webrtc/BUILD.gn
+@@ -132,6 +132,9 @@ config("common_inherited_config") {
+ if (is_linux) {
+ defines += [ "WEBRTC_LINUX" ]
+ }
++ if (is_bsd) {
++ defines += [ "WEBRTC_BSD" ]
++ }
+ if (is_mac) {
+ defines += [ "WEBRTC_MAC" ]
+ }
diff --git a/devel/electron4/files/patch-third__party_webrtc_modules_audio__device_BUILD.gn b/devel/electron4/files/patch-third__party_webrtc_modules_audio__device_BUILD.gn
new file mode 100644
index 000000000000..7b2b791b6e1c
--- /dev/null
+++ b/devel/electron4/files/patch-third__party_webrtc_modules_audio__device_BUILD.gn
@@ -0,0 +1,11 @@
+--- third_party/webrtc/modules/audio_device/BUILD.gn.orig 2019-03-15 06:42:01 UTC
++++ third_party/webrtc/modules/audio_device/BUILD.gn
+@@ -331,7 +331,7 @@ rtc_source_set("audio_device_impl") {
+ if (rtc_use_dummy_audio_file_devices) {
+ defines += [ "WEBRTC_DUMMY_FILE_DEVICES" ]
+ } else {
+- if (is_linux) {
++ if (is_linux && !is_bsd) {
+ sources += [
+ "linux/alsasymboltable_linux.cc",
+ "linux/alsasymboltable_linux.h",
diff --git a/devel/electron4/files/patch-third__party_webrtc_modules_rtp__rtcp_source_forward__error__correction.cc b/devel/electron4/files/patch-third__party_webrtc_modules_rtp__rtcp_source_forward__error__correction.cc
new file mode 100644
index 000000000000..2aaca46a6d00
--- /dev/null
+++ b/devel/electron4/files/patch-third__party_webrtc_modules_rtp__rtcp_source_forward__error__correction.cc
@@ -0,0 +1,10 @@
+--- third_party/webrtc/modules/rtp_rtcp/source/forward_error_correction.cc.orig 2019-03-15 06:42:01 UTC
++++ third_party/webrtc/modules/rtp_rtcp/source/forward_error_correction.cc
+@@ -13,6 +13,7 @@
+ #include <string.h>
+
+ #include <algorithm>
++#include <cstdlib>
+ #include <iterator>
+ #include <utility>
+
diff --git a/devel/electron4/files/patch-third__party_webrtc_rtc__base_BUILD.gn b/devel/electron4/files/patch-third__party_webrtc_rtc__base_BUILD.gn
new file mode 100644
index 000000000000..0d9424e1f857
--- /dev/null
+++ b/devel/electron4/files/patch-third__party_webrtc_rtc__base_BUILD.gn
@@ -0,0 +1,20 @@
+--- third_party/webrtc/rtc_base/BUILD.gn.orig 2019-03-15 06:42:01 UTC
++++ third_party/webrtc/rtc_base/BUILD.gn
+@@ -907,8 +907,6 @@ rtc_static_library("rtc_base_generic") {
+
+ if (rtc_use_x11) {
+ libs += [
+- "dl",
+- "rt",
+ "Xext",
+ "X11",
+ "Xcomposite",
+@@ -916,7 +914,7 @@ rtc_static_library("rtc_base_generic") {
+ ]
+ }
+
+- if (is_linux) {
++ if (is_linux && !is_bsd) {
+ libs += [
+ "dl",
+ "rt",
diff --git a/devel/electron4/files/patch-third__party_webrtc_rtc__base_byteorder.h b/devel/electron4/files/patch-third__party_webrtc_rtc__base_byteorder.h
new file mode 100644
index 000000000000..10805aa87dfb
--- /dev/null
+++ b/devel/electron4/files/patch-third__party_webrtc_rtc__base_byteorder.h
@@ -0,0 +1,11 @@
+--- third_party/webrtc/rtc_base/byteorder.h.orig 2019-03-15 06:42:01 UTC
++++ third_party/webrtc/rtc_base/byteorder.h
+@@ -79,7 +79,7 @@
+ #error WEBRTC_ARCH_BIG_ENDIAN or WEBRTC_ARCH_LITTLE_ENDIAN must be defined.
+ #endif // defined(WEBRTC_ARCH_LITTLE_ENDIAN)
+ #elif defined(WEBRTC_POSIX)
+-#include <endian.h>
++#include <sys/endian.h>
+ #endif
+
+ namespace rtc {
diff --git a/devel/electron4/files/patch-third__party_webrtc_rtc__base_httpcommon.cc b/devel/electron4/files/patch-third__party_webrtc_rtc__base_httpcommon.cc
new file mode 100644
index 000000000000..e921dff4ac1e
--- /dev/null
+++ b/devel/electron4/files/patch-third__party_webrtc_rtc__base_httpcommon.cc
@@ -0,0 +1,11 @@
+--- third_party/webrtc/rtc_base/httpcommon.cc.orig 2019-03-15 06:42:01 UTC
++++ third_party/webrtc/rtc_base/httpcommon.cc
+@@ -459,7 +459,7 @@ bool HttpDateToSeconds(const std::string& date, time_t
+ }
+ // TODO: Android should support timezone, see b/2441195
+ #if defined(WEBRTC_MAC) && !defined(WEBRTC_IOS) || defined(WEBRTC_ANDROID) || \
+- defined(BSD)
++ defined(WEBRTC_BSD)
+ tm* tm_for_timezone = localtime(&gmt);
+ *seconds = gmt + tm_for_timezone->tm_gmtoff;
+ #else
diff --git a/devel/electron4/files/patch-third__party_webrtc_rtc__base_ifaddrs__converter.h b/devel/electron4/files/patch-third__party_webrtc_rtc__base_ifaddrs__converter.h
new file mode 100644
index 000000000000..d236fc85709e
--- /dev/null
+++ b/devel/electron4/files/patch-third__party_webrtc_rtc__base_ifaddrs__converter.h
@@ -0,0 +1,11 @@
+--- third_party/webrtc/rtc_base/ifaddrs_converter.h.orig 2019-03-15 06:42:01 UTC
++++ third_party/webrtc/rtc_base/ifaddrs_converter.h
+@@ -14,6 +14,8 @@
+ #if defined(WEBRTC_ANDROID)
+ #include "rtc_base/ifaddrs-android.h"
+ #else
++#include <sys/types.h>
++#include <sys/socket.h>
+ #include <ifaddrs.h>
+ #endif // WEBRTC_ANDROID
+
diff --git a/devel/electron4/files/patch-third__party_webrtc_rtc__base_ipaddress.h b/devel/electron4/files/patch-third__party_webrtc_rtc__base_ipaddress.h
new file mode 100644
index 000000000000..326f5f7f696b
--- /dev/null
+++ b/devel/electron4/files/patch-third__party_webrtc_rtc__base_ipaddress.h
@@ -0,0 +1,13 @@
+--- third_party/webrtc/rtc_base/ipaddress.h.orig 2019-03-15 06:42:01 UTC
++++ third_party/webrtc/rtc_base/ipaddress.h
+@@ -17,6 +17,10 @@
+ #include <netinet/in.h>
+ #include <sys/socket.h>
+ #endif
++#if defined(WEBRTC_BSD)
++#include <sys/types.h>
++#include <sys/socket.h>
++#endif
+ #if defined(WEBRTC_WIN)
+ #include <winsock2.h>
+ #include <ws2tcpip.h>
diff --git a/devel/electron4/files/patch-third__party_webrtc_rtc__base_network.cc b/devel/electron4/files/patch-third__party_webrtc_rtc__base_network.cc
new file mode 100644
index 000000000000..4a37e57af788
--- /dev/null
+++ b/devel/electron4/files/patch-third__party_webrtc_rtc__base_network.cc
@@ -0,0 +1,29 @@
+--- third_party/webrtc/rtc_base/network.cc.orig 2019-03-15 06:42:01 UTC
++++ third_party/webrtc/rtc_base/network.cc
+@@ -14,7 +14,7 @@
+ // linux/if.h can't be included at the same time as the posix sys/if.h, and
+ // it's transitively required by linux/route.h, so include that version on
+ // linux instead of the standard posix one.
+-#if defined(WEBRTC_LINUX)
++#if defined(WEBRTC_LINUX) && !defined(WEBRTC_BSD)
+ #include <linux/if.h>
+ #include <linux/route.h>
+ #elif !defined(__native_client__)
+@@ -764,7 +764,7 @@ bool BasicNetworkManager::CreateNetworks(bool include_
+ }
+ #endif // WEBRTC_WIN
+
+-#if defined(WEBRTC_LINUX)
++#if defined(WEBRTC_LINUX) && !defined(WEBRTC_BSD)
+ bool IsDefaultRoute(const std::string& network_name) {
+ FileStream fs;
+ if (!fs.Open("/proc/net/route", "r", nullptr)) {
+@@ -805,7 +805,7 @@ bool BasicNetworkManager::IsIgnoredNetwork(const Netwo
+ strncmp(network.name().c_str(), "vboxnet", 7) == 0) {
+ return true;
+ }
+-#if defined(WEBRTC_LINUX)
++#if defined(WEBRTC_LINUX) && !defined(WEBRTC_BSD)
+ // Make sure this is a default route, if we're ignoring non-defaults.
+ if (ignore_non_default_routes_ && !IsDefaultRoute(network.name())) {
+ return true;
diff --git a/devel/electron4/files/patch-third__party_webrtc_rtc__base_network.h b/devel/electron4/files/patch-third__party_webrtc_rtc__base_network.h
new file mode 100644
index 000000000000..f405694e5721
--- /dev/null
+++ b/devel/electron4/files/patch-third__party_webrtc_rtc__base_network.h
@@ -0,0 +1,13 @@
+--- third_party/webrtc/rtc_base/network.h.orig 2019-03-15 06:42:01 UTC
++++ third_party/webrtc/rtc_base/network.h
+@@ -24,6 +24,10 @@
+ #include "rtc_base/networkmonitor.h"
+ #include "rtc_base/sigslot.h"
+
++#if defined(WEBRTC_BSD)
++#include <sys/types.h>
++#endif
++
+ #if defined(WEBRTC_POSIX)
+ struct ifaddrs;
+ #endif // defined(WEBRTC_POSIX)
diff --git a/devel/electron4/files/patch-third__party_webrtc_rtc__base_physicalsocketserver.cc b/devel/electron4/files/patch-third__party_webrtc_rtc__base_physicalsocketserver.cc
new file mode 100644
index 000000000000..9af2699fa32e
--- /dev/null
+++ b/devel/electron4/files/patch-third__party_webrtc_rtc__base_physicalsocketserver.cc
@@ -0,0 +1,56 @@
+--- third_party/webrtc/rtc_base/physicalsocketserver.cc.orig 2019-03-15 06:42:01 UTC
++++ third_party/webrtc/rtc_base/physicalsocketserver.cc
+@@ -67,7 +67,7 @@ typedef void* SockOptArg;
+
+ #endif // WEBRTC_POSIX
+
+-#if defined(WEBRTC_POSIX) && !defined(WEBRTC_MAC) && !defined(__native_client__)
++#if defined(WEBRTC_POSIX) && !defined(WEBRTC_MAC) && !defined(WEBRTC_BSD) && !defined(__native_client__)
+
+ int64_t GetSocketRecvTimestamp(int socket) {
+ struct timeval tv_ioctl;
+@@ -295,7 +295,7 @@ int PhysicalSocket::GetOption(Option opt, int* value)
+ socklen_t optlen = sizeof(*value);
+ int ret = ::getsockopt(s_, slevel, sopt, (SockOptArg)value, &optlen);
+ if (ret != -1 && opt == OPT_DONTFRAGMENT) {
+-#if defined(WEBRTC_LINUX) && !defined(WEBRTC_ANDROID)
++#if defined(WEBRTC_LINUX) && !defined(WEBRTC_ANDROID) && !defined(WEBRTC_BSD)
+ *value = (*value != IP_PMTUDISC_DONT) ? 1 : 0;
+ #endif
+ }
+@@ -308,7 +308,7 @@ int PhysicalSocket::SetOption(Option opt, int value) {
+ if (TranslateOption(opt, &slevel, &sopt) == -1)
+ return -1;
+ if (opt == OPT_DONTFRAGMENT) {
+-#if defined(WEBRTC_LINUX) && !defined(WEBRTC_ANDROID)
++#if defined(WEBRTC_LINUX) && !defined(WEBRTC_ANDROID) && !defined(WEBRTC_BSD)
+ value = (value) ? IP_PMTUDISC_DO : IP_PMTUDISC_DONT;
+ #endif
+ }
+@@ -318,7 +318,7 @@ int PhysicalSocket::SetOption(Option opt, int value) {
+ int PhysicalSocket::Send(const void* pv, size_t cb) {
+ int sent = DoSend(
+ s_, reinterpret_cast<const char*>(pv), static_cast<int>(cb),
+-#if defined(WEBRTC_LINUX) && !defined(WEBRTC_ANDROID)
++#if defined(WEBRTC_LINUX) && !defined(WEBRTC_ANDROID) && !defined(WEBRTC_BSD)
+ // Suppress SIGPIPE. Without this, attempting to send on a socket whose
+ // other end is closed will result in a SIGPIPE signal being raised to
+ // our process, which by default will terminate the process, which we
+@@ -347,7 +347,7 @@ int PhysicalSocket::SendTo(const void* buffer,
+ size_t len = addr.ToSockAddrStorage(&saddr);
+ int sent =
+ DoSendTo(s_, static_cast<const char*>(buffer), static_cast<int>(length),
+-#if defined(WEBRTC_LINUX) && !defined(WEBRTC_ANDROID)
++#if defined(WEBRTC_LINUX) && !defined(WEBRTC_ANDROID) && !defined(WEBRTC_BSD)
+ // Suppress SIGPIPE. See above for explanation.
+ MSG_NOSIGNAL,
+ #else
+@@ -538,7 +538,7 @@ int PhysicalSocket::TranslateOption(Option opt, int* s
+ *slevel = IPPROTO_IP;
+ *sopt = IP_DONTFRAGMENT;
+ break;
+-#elif defined(WEBRTC_MAC) || defined(BSD) || defined(__native_client__)
++#elif defined(WEBRTC_MAC) || defined(WEBRTC_BSD) || defined(__native_client__)
+ RTC_LOG(LS_WARNING) << "Socket::OPT_DONTFRAGMENT not supported.";
+ return -1;
+ #elif defined(WEBRTC_POSIX)
diff --git a/devel/electron4/files/patch-third__party_webrtc_rtc__base_physicalsocketserver.h b/devel/electron4/files/patch-third__party_webrtc_rtc__base_physicalsocketserver.h
new file mode 100644
index 000000000000..b18898ad4cfb
--- /dev/null
+++ b/devel/electron4/files/patch-third__party_webrtc_rtc__base_physicalsocketserver.h
@@ -0,0 +1,11 @@
+--- third_party/webrtc/rtc_base/physicalsocketserver.h.orig 2019-03-15 06:42:01 UTC
++++ third_party/webrtc/rtc_base/physicalsocketserver.h
+@@ -11,7 +11,7 @@
+ #ifndef RTC_BASE_PHYSICALSOCKETSERVER_H_
+ #define RTC_BASE_PHYSICALSOCKETSERVER_H_
+
+-#if defined(WEBRTC_POSIX) && defined(WEBRTC_LINUX)
++#if defined(WEBRTC_POSIX) && defined(WEBRTC_LINUX) && !defined(WEBRTC_BSD)
+ #include <sys/epoll.h>
+ #define WEBRTC_USE_EPOLL 1
+ #endif
diff --git a/devel/electron4/files/patch-third__party_webrtc_rtc__base_platform__thread.cc b/devel/electron4/files/patch-third__party_webrtc_rtc__base_platform__thread.cc
new file mode 100644
index 000000000000..3b822e535384
--- /dev/null
+++ b/devel/electron4/files/patch-third__party_webrtc_rtc__base_platform__thread.cc
@@ -0,0 +1,12 @@
+--- third_party/webrtc/rtc_base/platform_thread.cc.orig 2019-03-15 06:42:01 UTC
++++ third_party/webrtc/rtc_base/platform_thread.cc
+@@ -15,7 +15,9 @@
+ #include "rtc_base/timeutils.h"
+
+ #if defined(WEBRTC_LINUX)
++#if !defined(__FreeBSD__)
+ #include <sys/prctl.h>
++#endif
+ #include <sys/syscall.h>
+ #endif
+
diff --git a/devel/electron4/files/patch-third__party_webrtc_rtc__base_platform__thread__types.cc b/devel/electron4/files/patch-third__party_webrtc_rtc__base_platform__thread__types.cc
new file mode 100644
index 000000000000..d0f8365b95dd
--- /dev/null
+++ b/devel/electron4/files/patch-third__party_webrtc_rtc__base_platform__thread__types.cc
@@ -0,0 +1,40 @@
+--- third_party/webrtc/rtc_base/platform_thread_types.cc.orig 2019-03-15 06:30:53 UTC
++++ third_party/webrtc/rtc_base/platform_thread_types.cc
+@@ -11,7 +11,9 @@
+ #include "rtc_base/platform_thread_types.h"
+
+ #if defined(WEBRTC_LINUX)
++#if !defined(__FreeBSD__)
+ #include <sys/prctl.h>
++#endif
+ #include <sys/syscall.h>
+ #endif
+
+@@ -27,8 +29,10 @@ PlatformThreadId CurrentThreadId() {
+ return gettid();
+ #elif defined(WEBRTC_FUCHSIA)
+ return zx_thread_self();
+-#elif defined(WEBRTC_LINUX)
++#elif defined(WEBRTC_LINUX) && !defined(__FreeBSD__)
+ return syscall(__NR_gettid);
++#elif defined(__FreeBSD__)
++ return reinterpret_cast<uint64_t>(pthread_self());
+ #else
+ // Default implementation for nacl and solaris.
+ return reinterpret_cast<pid_t>(pthread_self());
+@@ -55,6 +59,7 @@ bool IsThreadRefEqual(const PlatformThreadRef& a, cons
+ }
+
+ void SetCurrentThreadName(const char* name) {
++#if !defined(__FreeBSD__)
+ #if defined(WEBRTC_WIN)
+ struct {
+ DWORD dwType;
+@@ -72,6 +77,7 @@ void SetCurrentThreadName(const char* name) {
+ prctl(PR_SET_NAME, reinterpret_cast<unsigned long>(name)); // NOLINT
+ #elif defined(WEBRTC_MAC) || defined(WEBRTC_IOS)
+ pthread_setname_np(name);
++#endif
+ #endif
+ }
+
diff --git a/devel/electron4/files/patch-third__party_webrtc_rtc__base_stringutils.h b/devel/electron4/files/patch-third__party_webrtc_rtc__base_stringutils.h
new file mode 100644
index 000000000000..49896b83d015
--- /dev/null
+++ b/devel/electron4/files/patch-third__party_webrtc_rtc__base_stringutils.h
@@ -0,0 +1,17 @@
+--- third_party/webrtc/rtc_base/stringutils.h.orig 2019-03-15 06:42:01 UTC
++++ third_party/webrtc/rtc_base/stringutils.h
+@@ -24,11 +24,11 @@
+ #endif // WEBRTC_WIN
+
+ #if defined(WEBRTC_POSIX)
+-#ifdef BSD
++#if defined(WEBRTC_BSD) || defined(BSD)
+ #include <stdlib.h>
+-#else // BSD
++#else // WEBRTC_BSD
+ #include <alloca.h>
+-#endif // !BSD
++#endif // !WEBRTC_BSD
+ #endif // WEBRTC_POSIX
+
+ #include <string>
diff --git a/devel/electron4/files/patch-third__party_webrtc_system__wrappers_BUILD.gn b/devel/electron4/files/patch-third__party_webrtc_system__wrappers_BUILD.gn
new file mode 100644
index 000000000000..705c548fb8ea
--- /dev/null
+++ b/devel/electron4/files/patch-third__party_webrtc_system__wrappers_BUILD.gn
@@ -0,0 +1,11 @@
+--- third_party/webrtc/system_wrappers/BUILD.gn.orig 2019-03-15 06:42:01 UTC
++++ third_party/webrtc/system_wrappers/BUILD.gn
+@@ -75,8 +75,6 @@ rtc_static_library("system_wrappers") {
+ if (!build_with_chromium) {
+ deps += [ ":cpu_features_linux" ]
+ }
+-
+- libs += [ "rt" ]
+ }
+
+ if (is_ios || is_mac) {
diff --git a/devel/electron4/files/patch-third__party_webrtc_webrtc.gni b/devel/electron4/files/patch-third__party_webrtc_webrtc.gni
new file mode 100644
index 000000000000..c27fafce71e3
--- /dev/null
+++ b/devel/electron4/files/patch-third__party_webrtc_webrtc.gni
@@ -0,0 +1,11 @@
+--- third_party/webrtc/webrtc.gni.orig 2019-03-15 06:42:01 UTC
++++ third_party/webrtc/webrtc.gni
+@@ -206,7 +206,7 @@ rtc_libvpx_dir = "//third_party/libvpx"
+ rtc_opus_dir = "//third_party/opus"
+
+ # Desktop capturer is supported only on Windows, OSX and Linux.
+-rtc_desktop_capture_supported = is_win || is_mac || (is_linux && rtc_use_x11)
++rtc_desktop_capture_supported = is_win || is_mac || ((is_linux && rtc_use_x11) && !is_bsd)
+
+ ###############################################################################
+ # Templates
diff --git a/devel/electron4/files/patch-third__party_yasm_BUILD.gn b/devel/electron4/files/patch-third__party_yasm_BUILD.gn
new file mode 100644
index 000000000000..89e999d65f98
--- /dev/null
+++ b/devel/electron4/files/patch-third__party_yasm_BUILD.gn
@@ -0,0 +1,16 @@
+--- third_party/yasm/BUILD.gn.orig 2019-03-15 06:38:25 UTC
++++ third_party/yasm/BUILD.gn
+@@ -60,7 +60,12 @@ if (current_toolchain == host_toolchain) {
+ # x86insn_nasm.c. These files were previously generated during the build but
+ # are now shipped pre-generated by yasm.
+ yasm_gen_include_dir = "$target_gen_dir/gen_include"
+- config_makefile = "source/config/Makefile"
++ # Hack for all BSD derivatives use OpenBSD include directory
++ if (is_bsd) {
++ config_makefile = "source/config/openbsd/Makefile"
++ } else {
++ config_makefile = "source/config/$host_os/Makefile"
++ }
+ version_file = "version.mac"
+
+ import("//build/compiled_action.gni")
diff --git a/devel/electron4/files/patch-third__party_zlib_BUILD.gn b/devel/electron4/files/patch-third__party_zlib_BUILD.gn
new file mode 100644
index 000000000000..c0a5cf7644b7
--- /dev/null
+++ b/devel/electron4/files/patch-third__party_zlib_BUILD.gn
@@ -0,0 +1,20 @@
+--- third_party/zlib/BUILD.gn.orig 2019-03-15 06:38:25 UTC
++++ third_party/zlib/BUILD.gn
+@@ -68,7 +68,7 @@ config("zlib_arm_crc32_config") {
+ if (is_android) {
+ defines += [ "ARMV8_OS_ANDROID" ]
+ } else if (is_linux || is_chromeos) {
+- defines += [ "ARMV8_OS_LINUX" ]
++# defines += [ "ARMV8_OS_LINUX" ]
+ }
+ }
+ }
+@@ -327,7 +327,7 @@ static_library("minizip") {
+ ]
+ }
+
+- if (is_mac || is_ios || is_android || is_nacl) {
++ if (is_mac || is_ios || is_android || is_nacl || is_bsd) {
+ # Mac, Android and the BSDs don't have fopen64, ftello64, or fseeko64. We
+ # use fopen, ftell, and fseek instead on these systems.
+ defines = [ "USE_FILE32API" ]
diff --git a/devel/electron4/files/patch-third__party_zlib_arm__features.c b/devel/electron4/files/patch-third__party_zlib_arm__features.c
new file mode 100644
index 000000000000..ba73caed182c
--- /dev/null
+++ b/devel/electron4/files/patch-third__party_zlib_arm__features.c
@@ -0,0 +1,29 @@
+--- third_party/zlib/arm_features.c.orig 2019-03-15 06:38:25 UTC
++++ third_party/zlib/arm_features.c
+@@ -16,12 +16,13 @@
+ #include <asm/hwcap.h>
+ #include <sys/auxv.h>
+ #else
+-#error ### No ARM CPU features detection in your platform/OS
++/* #error ### No ARM CPU features detection in your platform/OS */
+ #endif
+
+ int ZLIB_INTERNAL arm_cpu_enable_crc32 = 0;
+ int ZLIB_INTERNAL arm_cpu_enable_pmull = 0;
+
++#ifdef ARMV8_OS_LINUX
+ static pthread_once_t cpu_check_inited_once = PTHREAD_ONCE_INIT;
+
+ static void init_arm_features(void)
+@@ -53,8 +54,11 @@ static void init_arm_features(void)
+ if (capabilities & flag_pmull)
+ arm_cpu_enable_pmull = 1;
+ }
++#endif
+
+ void ZLIB_INTERNAL arm_check_features(void)
+ {
++#ifdef ARMV8_OS_LINUX
+ pthread_once(&cpu_check_inited_once, init_arm_features);
++#endif
+ }
diff --git a/devel/electron4/files/patch-tools_gn_base_files_file__posix.cc b/devel/electron4/files/patch-tools_gn_base_files_file__posix.cc
new file mode 100644
index 000000000000..cd67de1b31bf
--- /dev/null
+++ b/devel/electron4/files/patch-tools_gn_base_files_file__posix.cc
@@ -0,0 +1,11 @@
+--- tools/gn/base/files/file_posix.cc.orig 2019-08-26 19:07:16 UTC
++++ tools/gn/base/files/file_posix.cc
+@@ -414,7 +414,7 @@ void File::DoInitialize(const FilePath& path, uint32_t
+ bool File::Flush() {
+ DCHECK(IsValid());
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ return !HANDLE_EINTR(fdatasync(file_.get()));
+ #else
+ return !HANDLE_EINTR(fsync(file_.get()));
diff --git a/devel/electron4/files/patch-tools_gn_base_files_file__util.h b/devel/electron4/files/patch-tools_gn_base_files_file__util.h
new file mode 100644
index 000000000000..50e6f6d47d46
--- /dev/null
+++ b/devel/electron4/files/patch-tools_gn_base_files_file__util.h
@@ -0,0 +1,11 @@
+--- tools/gn/base/files/file_util.h.orig 2019-08-26 19:07:16 UTC
++++ tools/gn/base/files/file_util.h
+@@ -361,7 +361,7 @@ bool VerifyPathControlledByAdmin(const base::FilePath&
+ // the directory |path|, in the number of FilePath::CharType, or -1 on failure.
+ int GetMaximumPathComponentLength(const base::FilePath& path);
+
+-#if defined(OS_LINUX) || defined(OS_AIX)
++#if defined(OS_LINUX) || defined(OS_AIX) || defined(OS_BSD)
+ // Broad categories of file systems as returned by statfs() on Linux.
+ enum FileSystemType {
+ FILE_SYSTEM_UNKNOWN, // statfs failed.
diff --git a/devel/electron4/files/patch-tools_gn_base_files_file__util__posix.cc b/devel/electron4/files/patch-tools_gn_base_files_file__util__posix.cc
new file mode 100644
index 000000000000..9371e261d354
--- /dev/null
+++ b/devel/electron4/files/patch-tools_gn_base_files_file__util__posix.cc
@@ -0,0 +1,11 @@
+--- tools/gn/base/files/file_util_posix.cc.orig 2019-08-26 19:07:16 UTC
++++ tools/gn/base/files/file_util_posix.cc
+@@ -254,7 +254,7 @@ bool ReplaceFile(const FilePath& from_path,
+ #endif // !defined(OS_NACL_NONSFI)
+
+ bool CreateLocalNonBlockingPipe(int fds[2]) {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ return pipe2(fds, O_CLOEXEC | O_NONBLOCK) == 0;
+ #else
+ int raw_fds[2];
diff --git a/devel/electron4/files/patch-tools_gn_base_files_scoped__file.cc b/devel/electron4/files/patch-tools_gn_base_files_scoped__file.cc
new file mode 100644
index 000000000000..62938b8813c6
--- /dev/null
+++ b/devel/electron4/files/patch-tools_gn_base_files_scoped__file.cc
@@ -0,0 +1,11 @@
+--- tools/gn/base/files/scoped_file.cc.orig 2019-08-26 19:07:16 UTC
++++ tools/gn/base/files/scoped_file.cc
+@@ -30,7 +30,7 @@ void ScopedFDCloseTraits::Free(int fd) {
+ // a single open directory would bypass the entire security model.
+ int ret = IGNORE_EINTR(close(fd));
+
+-#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_FUCHSIA) || \
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_FUCHSIA) || defined(OS_BSD) || \
+ defined(OS_ANDROID)
+ // NB: Some file descriptors can return errors from close() e.g. network
+ // filesystems such as NFS and Linux input devices. On Linux, macOS, and
diff --git a/devel/electron4/files/patch-tools_gn_build_gen.py b/devel/electron4/files/patch-tools_gn_build_gen.py
new file mode 100644
index 000000000000..17c1d1dad583
--- /dev/null
+++ b/devel/electron4/files/patch-tools_gn_build_gen.py
@@ -0,0 +1,33 @@
+--- tools/gn/build/gen.py.orig 2019-08-26 19:07:16 UTC
++++ tools/gn/build/gen.py
+@@ -46,7 +46,7 @@ class Platform(object):
+
+ @staticmethod
+ def known_platforms():
+- return ['linux', 'darwin', 'msvc', 'aix', 'fuchsia', 'openbsd']
++ return ['linux', 'darwin', 'msvc', 'aix', 'fuchsia', 'openbsd', 'freebsd']
+
+ def platform(self):
+ return self._platform
+@@ -69,6 +69,9 @@ class Platform(object):
+ def is_aix(self):
+ return self._platform == 'aix'
+
++ def is_freebsd(self):
++ return self._platform == 'freebsd'
++
+ def is_posix(self):
+ return self._platform in ['linux', 'freebsd', 'darwin', 'aix', 'openbsd']
+
+@@ -335,6 +338,11 @@ def WriteGNNinja(path, platform, host, options):
+ elif platform.is_aix():
+ cflags_cc.append('-maix64')
+ ldflags.append('-maix64')
++ elif platform.is_freebsd():
++ cflags.extend(['-Wno-deprecated-register', '-Wno-parentheses-equality'])
++ ldflags.extend(['-pthread'])
++ libs.extend(['-lexecinfo', '-lkvm', '-lutil'])
++ include_dirs += ['/usr/local/include']
+
+ if platform.is_posix():
+ ldflags.append('-pthread')
diff --git a/devel/electron4/files/patch-tools_gn_tools_gn_exec__process.cc b/devel/electron4/files/patch-tools_gn_tools_gn_exec__process.cc
new file mode 100644
index 000000000000..db7042144c3f
--- /dev/null
+++ b/devel/electron4/files/patch-tools_gn_tools_gn_exec__process.cc
@@ -0,0 +1,13 @@
+--- tools/gn/tools/gn/exec_process.cc.orig 2019-08-26 19:07:16 UTC
++++ tools/gn/tools/gn/exec_process.cc
+@@ -29,6 +29,10 @@
+ #include "base/posix/file_descriptor_shuffle.h"
+ #endif
+
++#if defined(OS_BSD)
++#include <signal.h>
++#endif
++
+ namespace internal {
+
+ #if defined(OS_WIN)
diff --git a/devel/electron4/files/patch-tools_gn_util_sys__info.cc b/devel/electron4/files/patch-tools_gn_util_sys__info.cc
new file mode 100644
index 000000000000..408fd97444a1
--- /dev/null
+++ b/devel/electron4/files/patch-tools_gn_util_sys__info.cc
@@ -0,0 +1,11 @@
+--- tools/gn/util/sys_info.cc.orig 2019-08-26 19:07:16 UTC
++++ tools/gn/util/sys_info.cc
+@@ -28,6 +28,8 @@ std::string OperatingSystemArchitecture() {
+ arch = "x86";
+ } else if (arch == "amd64") {
+ arch = "x86_64";
++ } else if (arch == "arm64") {
++ arch = "aarch64";
+ } else if (std::string(info.sysname) == "AIX") {
+ arch = "ppc64";
+ }
diff --git a/devel/electron4/files/patch-tools_json__schema__compiler_feature__compiler.py b/devel/electron4/files/patch-tools_json__schema__compiler_feature__compiler.py
new file mode 100644
index 000000000000..605bac419cf5
--- /dev/null
+++ b/devel/electron4/files/patch-tools_json__schema__compiler_feature__compiler.py
@@ -0,0 +1,10 @@
+--- tools/json_schema_compiler/feature_compiler.py.orig 2019-03-15 06:38:26 UTC
++++ tools/json_schema_compiler/feature_compiler.py
+@@ -205,6 +205,7 @@ FEATURE_GRAMMAR = (
+ 'enum_map': {
+ 'chromeos': 'Feature::CHROMEOS_PLATFORM',
+ 'linux': 'Feature::LINUX_PLATFORM',
++ 'bsd': 'Feature::LINUX_PLATFORM',
+ 'mac': 'Feature::MACOSX_PLATFORM',
+ 'win': 'Feature::WIN_PLATFORM',
+ }
diff --git a/devel/electron4/files/patch-tools_json__schema__compiler_model.py b/devel/electron4/files/patch-tools_json__schema__compiler_model.py
new file mode 100644
index 000000000000..ba410a564759
--- /dev/null
+++ b/devel/electron4/files/patch-tools_json__schema__compiler_model.py
@@ -0,0 +1,11 @@
+--- tools/json_schema_compiler/model.py.orig 2019-03-15 06:26:40 UTC
++++ tools/json_schema_compiler/model.py
+@@ -602,7 +602,7 @@ class Platforms(object):
+ """
+ CHROMEOS = _PlatformInfo("chromeos")
+ CHROMEOS_TOUCH = _PlatformInfo("chromeos_touch")
+- LINUX = _PlatformInfo("linux")
++ LINUX = _PlatformInfo("bsd")
+ MAC = _PlatformInfo("mac")
+ WIN = _PlatformInfo("win")
+
diff --git a/devel/electron4/files/patch-tools_perf_chrome__telemetry__build_BUILD.gn b/devel/electron4/files/patch-tools_perf_chrome__telemetry__build_BUILD.gn
new file mode 100644
index 000000000000..31950f5648a9
--- /dev/null
+++ b/devel/electron4/files/patch-tools_perf_chrome__telemetry__build_BUILD.gn
@@ -0,0 +1,11 @@
+--- tools/perf/chrome_telemetry_build/BUILD.gn.orig 2019-03-15 06:38:26 UTC
++++ tools/perf/chrome_telemetry_build/BUILD.gn
+@@ -44,7 +44,7 @@ group("telemetry_chrome_test") {
+ data_deps += [ "//chrome:reorder_imports" ]
+ }
+
+- if (is_linux) {
++ if (is_linux && !is_bsd) {
+ data_deps += [ "//third_party/breakpad:dump_syms($host_toolchain)" ]
+ }
+
diff --git a/devel/electron4/files/patch-tools_variations_fieldtrial__to__struct.py b/devel/electron4/files/patch-tools_variations_fieldtrial__to__struct.py
new file mode 100644
index 000000000000..efaf20b67755
--- /dev/null
+++ b/devel/electron4/files/patch-tools_variations_fieldtrial__to__struct.py
@@ -0,0 +1,10 @@
+--- tools/variations/fieldtrial_to_struct.py.orig 2019-03-15 06:26:43 UTC
++++ tools/variations/fieldtrial_to_struct.py
+@@ -24,6 +24,7 @@ finally:
+ _platforms = [
+ 'android',
+ 'android_webview',
++ 'freebsd',
+ 'chromeos',
+ 'fuchsia',
+ 'ios',
diff --git a/devel/electron4/files/patch-ui_base_dragdrop_os__exchange__data__provider__factory.cc b/devel/electron4/files/patch-ui_base_dragdrop_os__exchange__data__provider__factory.cc
new file mode 100644
index 000000000000..398daaa0da94
--- /dev/null
+++ b/devel/electron4/files/patch-ui_base_dragdrop_os__exchange__data__provider__factory.cc
@@ -0,0 +1,20 @@
+--- ui/base/dragdrop/os_exchange_data_provider_factory.cc.orig 2019-03-15 06:26:43 UTC
++++ ui/base/dragdrop/os_exchange_data_provider_factory.cc
+@@ -8,7 +8,7 @@
+
+ #if defined(USE_X11)
+ #include "ui/base/dragdrop/os_exchange_data_provider_aurax11.h"
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ #include "ui/base/dragdrop/os_exchange_data_provider_aura.h"
+ #elif defined(OS_MACOSX)
+ #include "ui/base/dragdrop/os_exchange_data_provider_builder_mac.h"
+@@ -42,7 +42,7 @@ OSExchangeDataProviderFactory::CreateProvider() {
+
+ #if defined(USE_X11)
+ return std::make_unique<OSExchangeDataProviderAuraX11>();
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ return std::make_unique<OSExchangeDataProviderAura>();
+ #elif defined(OS_MACOSX)
+ return ui::BuildOSExchangeDataProviderMac();
diff --git a/devel/electron4/files/patch-ui_base_ime_ime__engine__handler__interface.h b/devel/electron4/files/patch-ui_base_ime_ime__engine__handler__interface.h
new file mode 100644
index 000000000000..1b5d84d6e7f5
--- /dev/null
+++ b/devel/electron4/files/patch-ui_base_ime_ime__engine__handler__interface.h
@@ -0,0 +1,11 @@
+--- ui/base/ime/ime_engine_handler_interface.h.orig 2019-03-15 06:38:27 UTC
++++ ui/base/ime/ime_engine_handler_interface.h
+@@ -162,7 +162,7 @@ class UI_BASE_IME_EXPORT IMEEngineHandlerInterface {
+ // Hides the input view window (from API call).
+ virtual void HideInputView() = 0;
+
+-#elif defined(OS_LINUX) || defined(OS_WIN)
++#elif defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD)
+
+ // Get the id of the IME extension.
+ virtual std::string GetExtensionId() const = 0;
diff --git a/devel/electron4/files/patch-ui_base_ime_input__method__initializer.cc b/devel/electron4/files/patch-ui_base_ime_input__method__initializer.cc
new file mode 100644
index 000000000000..c1d1849078d2
--- /dev/null
+++ b/devel/electron4/files/patch-ui_base_ime_input__method__initializer.cc
@@ -0,0 +1,38 @@
+--- ui/base/ime/input_method_initializer.cc.orig 2019-03-15 06:26:43 UTC
++++ ui/base/ime/input_method_initializer.cc
+@@ -8,7 +8,7 @@
+
+ #if defined(OS_CHROMEOS)
+ #include "ui/base/ime/ime_bridge.h"
+-#elif defined(USE_AURA) && defined(OS_LINUX)
++#elif defined(USE_AURA) && (defined(OS_LINUX) || defined(OS_BSD))
+ #include "base/logging.h"
+ #include "ui/base/ime/linux/fake_input_method_context_factory.h"
+ #elif defined(OS_WIN)
+@@ -18,7 +18,7 @@
+
+ namespace {
+
+-#if !defined(OS_CHROMEOS) && defined(USE_AURA) && defined(OS_LINUX)
++#if !defined(OS_CHROMEOS) && defined(USE_AURA) && (defined(OS_LINUX) || defined(OS_BSD))
+ const ui::LinuxInputMethodContextFactory*
+ g_linux_input_method_context_factory_for_testing;
+ #endif
+@@ -46,7 +46,7 @@ void ShutdownInputMethod() {
+ void InitializeInputMethodForTesting() {
+ #if defined(OS_CHROMEOS)
+ IMEBridge::Initialize();
+-#elif defined(USE_AURA) && defined(OS_LINUX)
++#elif defined(USE_AURA) && (defined(OS_LINUX) || defined(OS_BSD))
+ if (!g_linux_input_method_context_factory_for_testing)
+ g_linux_input_method_context_factory_for_testing =
+ new FakeInputMethodContextFactory();
+@@ -67,7 +67,7 @@ void InitializeInputMethodForTesting() {
+ void ShutdownInputMethodForTesting() {
+ #if defined(OS_CHROMEOS)
+ IMEBridge::Shutdown();
+-#elif defined(USE_AURA) && defined(OS_LINUX)
++#elif defined(USE_AURA) && (defined(OS_LINUX) || defined(OS_BSD))
+ const LinuxInputMethodContextFactory* factory =
+ LinuxInputMethodContextFactory::instance();
+ CHECK(!factory || factory == g_linux_input_method_context_factory_for_testing)
diff --git a/devel/electron4/files/patch-ui_base_resource_resource__bundle.cc b/devel/electron4/files/patch-ui_base_resource_resource__bundle.cc
new file mode 100644
index 000000000000..2676a9494f09
--- /dev/null
+++ b/devel/electron4/files/patch-ui_base_resource_resource__bundle.cc
@@ -0,0 +1,20 @@
+--- ui/base/resource/resource_bundle.cc.orig 2019-03-15 06:38:27 UTC
++++ ui/base/resource/resource_bundle.cc
+@@ -720,7 +720,7 @@ void ResourceBundle::ReloadFonts() {
+ }
+
+ ScaleFactor ResourceBundle::GetMaxScaleFactor() const {
+-#if defined(OS_WIN) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD)
+ return max_scale_factor_;
+ #else
+ return GetSupportedScaleFactors().back();
+@@ -766,7 +766,7 @@ void ResourceBundle::InitSharedInstance(Delegate* dele
+ // On platforms other than iOS, 100P is always a supported scale factor.
+ // For Windows we have a separate case in this function.
+ supported_scale_factors.push_back(SCALE_FACTOR_100P);
+-#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_WIN)
++#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD)
+ supported_scale_factors.push_back(SCALE_FACTOR_200P);
+ #endif
+ #endif
diff --git a/devel/electron4/files/patch-ui_base_resource_resource__bundle__freebsd.cc b/devel/electron4/files/patch-ui_base_resource_resource__bundle__freebsd.cc
new file mode 100644
index 000000000000..7e8a1a3ff7dc
--- /dev/null
+++ b/devel/electron4/files/patch-ui_base_resource_resource__bundle__freebsd.cc
@@ -0,0 +1,24 @@
+--- ui/base/resource/resource_bundle_freebsd.cc.orig 2019-03-16 09:18:33 UTC
++++ ui/base/resource/resource_bundle_freebsd.cc
+@@ -0,0 +1,21 @@
++// Copyright 2017 The Chromium Authors. All rights reserved.
++// Use of this source code is governed by a BSD-style license that can be
++// found in the LICENSE file.
++
++#include "ui/base/resource/resource_bundle.h"
++
++#include "base/logging.h"
++#include "base/macros.h"
++#include "ui/gfx/image/image.h"
++
++namespace ui {
++
++void ResourceBundle::LoadCommonResources() {
++ LoadChromeResources();
++}
++
++gfx::Image& ResourceBundle::GetNativeImageNamed(int resource_id) {
++ return GetImageNamed(resource_id);
++}
++
++} // namespace ui
diff --git a/devel/electron4/files/patch-ui_base_ui__base__features.cc b/devel/electron4/files/patch-ui_base_ui__base__features.cc
new file mode 100644
index 000000000000..4fc705e86fe1
--- /dev/null
+++ b/devel/electron4/files/patch-ui_base_ui__base__features.cc
@@ -0,0 +1,20 @@
+--- ui/base/ui_base_features.cc.orig 2019-03-16 09:15:20 UTC
++++ ui/base/ui_base_features.cc
+@@ -120,7 +120,7 @@ const base::Feature kPrecisionTouchpadScrollPhase{
+ "PrecisionTouchpadScrollPhase", base::FEATURE_ENABLED_BY_DEFAULT};
+ #endif // defined(OS_WIN)
+
+-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+ // Enables stylus appearing as touch when in contact with digitizer.
+ const base::Feature kDirectManipulationStylus = {
+ "DirectManipulationStylus",
+@@ -130,7 +130,7 @@ const base::Feature kDirectManipulationStylus = {
+ base::FEATURE_DISABLED_BY_DEFAULT
+ #endif
+ };
+-#endif // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
++#endif // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+
+ const base::Feature kMash = {"Mash", base::FEATURE_DISABLED_BY_DEFAULT};
+
diff --git a/devel/electron4/files/patch-ui_base_ui__base__features.h b/devel/electron4/files/patch-ui_base_ui__base__features.h
new file mode 100644
index 000000000000..228bed5866e8
--- /dev/null
+++ b/devel/electron4/files/patch-ui_base_ui__base__features.h
@@ -0,0 +1,14 @@
+--- ui/base/ui_base_features.h.orig 2019-03-15 06:38:27 UTC
++++ ui/base/ui_base_features.h
+@@ -43,9 +43,9 @@ UI_BASE_EXPORT extern const base::Feature kTSFImeSuppo
+ UI_BASE_EXPORT bool IsUsingWMPointerForTouch();
+ #endif // defined(OS_WIN)
+
+-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+ UI_BASE_EXPORT extern const base::Feature kDirectManipulationStylus;
+-#endif // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
++#endif // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+
+ // Used to have ash (Chrome OS system UI) run in its own process.
+ // TODO(jamescook): Make flag only available in Chrome OS.
diff --git a/devel/electron4/files/patch-ui_base_webui_web__ui__util.cc b/devel/electron4/files/patch-ui_base_webui_web__ui__util.cc
new file mode 100644
index 000000000000..01efb48bf550
--- /dev/null
+++ b/devel/electron4/files/patch-ui_base_webui_web__ui__util.cc
@@ -0,0 +1,11 @@
+--- ui/base/webui/web_ui_util.cc.orig 2019-03-15 06:26:43 UTC
++++ ui/base/webui/web_ui_util.cc
+@@ -217,7 +217,7 @@ std::string GetFontFamily() {
+
+ // TODO(dnicoara) Remove Ozone check when PlatformFont support is introduced
+ // into Ozone: crbug.com/320050
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) && !defined(USE_OZONE)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS) && !defined(USE_OZONE)
+ font_family = ui::ResourceBundle::GetSharedInstance().GetFont(
+ ui::ResourceBundle::BaseFont).GetFontName() + ", " + font_family;
+ #endif
diff --git a/devel/electron4/files/patch-ui_events_devices_x11_device__data__manager__x11.cc b/devel/electron4/files/patch-ui_events_devices_x11_device__data__manager__x11.cc
new file mode 100644
index 000000000000..1aaf1647bc0b
--- /dev/null
+++ b/devel/electron4/files/patch-ui_events_devices_x11_device__data__manager__x11.cc
@@ -0,0 +1,19 @@
+--- ui/events/devices/x11/device_data_manager_x11.cc.orig 2019-03-15 06:38:27 UTC
++++ ui/events/devices/x11/device_data_manager_x11.cc
+@@ -829,6 +829,8 @@ void DeviceDataManagerX11::SetDisabledKeyboardAllowedK
+ }
+
+ void DeviceDataManagerX11::DisableDevice(int deviceid) {
++ NOTIMPLEMENTED();
++#if !defined(OS_BSD)
+ blocked_devices_.set(deviceid, true);
+ // TODO(rsadam@): Support blocking touchscreen devices.
+ std::vector<InputDevice> keyboards = GetKeyboardDevices();
+@@ -840,6 +842,7 @@ void DeviceDataManagerX11::DisableDevice(int deviceid)
+ keyboards.erase(it);
+ DeviceDataManager::OnKeyboardDevicesUpdated(keyboards);
+ }
++#endif
+ }
+
+ void DeviceDataManagerX11::EnableDevice(int deviceid) {
diff --git a/devel/electron4/files/patch-ui_events_event__switches.cc b/devel/electron4/files/patch-ui_events_event__switches.cc
new file mode 100644
index 000000000000..1abe4f4d87b6
--- /dev/null
+++ b/devel/electron4/files/patch-ui_events_event__switches.cc
@@ -0,0 +1,11 @@
+--- ui/events/event_switches.cc.orig 2019-03-15 06:38:27 UTC
++++ ui/events/event_switches.cc
+@@ -17,7 +17,7 @@ const char kEnableScrollPrediction[] = "enable-scroll-
+ const char kCompensateForUnstablePinchZoom[] =
+ "compensate-for-unstable-pinch-zoom";
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_FREEBSD)
+ // Tells chrome to interpret events from these devices as touch events. Only
+ // available with XInput 2 (i.e. X server 1.8 or above). The id's of the
+ // devices can be retrieved from 'xinput list'.
diff --git a/devel/electron4/files/patch-ui_events_event__switches.h b/devel/electron4/files/patch-ui_events_event__switches.h
new file mode 100644
index 000000000000..c108eddfd102
--- /dev/null
+++ b/devel/electron4/files/patch-ui_events_event__switches.h
@@ -0,0 +1,11 @@
+--- ui/events/event_switches.h.orig 2019-03-15 06:38:27 UTC
++++ ui/events/event_switches.h
+@@ -14,7 +14,7 @@ namespace switches {
+ EVENTS_BASE_EXPORT extern const char kEnableScrollPrediction[];
+ EVENTS_BASE_EXPORT extern const char kCompensateForUnstablePinchZoom[];
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_FREEBSD)
+ EVENTS_BASE_EXPORT extern const char kTouchDevices[];
+ EVENTS_BASE_EXPORT extern const char kPenDevices[];
+ #endif
diff --git a/devel/electron4/files/patch-ui_events_keycodes_dom_keycode__converter.cc b/devel/electron4/files/patch-ui_events_keycodes_dom_keycode__converter.cc
new file mode 100644
index 000000000000..32924a65ea0a
--- /dev/null
+++ b/devel/electron4/files/patch-ui_events_keycodes_dom_keycode__converter.cc
@@ -0,0 +1,11 @@
+--- ui/events/keycodes/dom/keycode_converter.cc.orig 2019-03-15 06:38:27 UTC
++++ ui/events/keycodes/dom/keycode_converter.cc
+@@ -20,7 +20,7 @@ namespace {
+ // and DOM Level 3 |code| strings.
+ #if defined(OS_WIN)
+ #define USB_KEYMAP(usb, evdev, xkb, win, mac, code, id) {usb, win, code}
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ #define USB_KEYMAP(usb, evdev, xkb, win, mac, code, id) {usb, xkb, code}
+ #elif defined(OS_MACOSX)
+ #define USB_KEYMAP(usb, evdev, xkb, win, mac, code, id) {usb, mac, code}
diff --git a/devel/electron4/files/patch-ui_gfx_BUILD.gn b/devel/electron4/files/patch-ui_gfx_BUILD.gn
new file mode 100644
index 000000000000..39910503a685
--- /dev/null
+++ b/devel/electron4/files/patch-ui_gfx_BUILD.gn
@@ -0,0 +1,11 @@
+--- ui/gfx/BUILD.gn.orig 2019-03-15 06:38:28 UTC
++++ ui/gfx/BUILD.gn
+@@ -572,7 +572,7 @@ source_set("memory_buffer_sources") {
+ deps += [ "//third_party/libdrm" ]
+ }
+
+- if (is_linux || is_android) {
++ if ((is_linux || is_android) && !is_bsd) {
+ deps += [ "//third_party/libsync" ]
+ }
+
diff --git a/devel/electron4/files/patch-ui_gfx_canvas__skia.cc b/devel/electron4/files/patch-ui_gfx_canvas__skia.cc
new file mode 100644
index 000000000000..32a258735fdf
--- /dev/null
+++ b/devel/electron4/files/patch-ui_gfx_canvas__skia.cc
@@ -0,0 +1,11 @@
+--- ui/gfx/canvas_skia.cc.orig 2019-03-15 06:38:28 UTC
++++ ui/gfx/canvas_skia.cc
+@@ -208,7 +208,7 @@ void Canvas::DrawStringRectWithFlags(const base::strin
+ Range range = StripAcceleratorChars(flags, &adjusted_text);
+ bool elide_text = ((flags & NO_ELLIPSIS) == 0);
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // On Linux, eliding really means fading the end of the string. But only
+ // for LTR text. RTL text is still elided (on the left) with "...".
+ if (elide_text) {
diff --git a/devel/electron4/files/patch-ui_gfx_codec_jpeg__codec.cc b/devel/electron4/files/patch-ui_gfx_codec_jpeg__codec.cc
new file mode 100644
index 000000000000..3c8a0151087b
--- /dev/null
+++ b/devel/electron4/files/patch-ui_gfx_codec_jpeg__codec.cc
@@ -0,0 +1,20 @@
+--- ui/gfx/codec/jpeg_codec.cc.orig 2019-03-15 06:38:28 UTC
++++ ui/gfx/codec/jpeg_codec.cc
+@@ -219,6 +219,7 @@ bool JPEGCodec::Decode(const unsigned char* input, siz
+ case JCS_GRAYSCALE:
+ case JCS_RGB:
+ case JCS_YCbCr:
++#ifdef JCS_EXTENSIONS
+ // Choose an output colorspace and return if it is an unsupported one.
+ // Same as JPEGCodec::Encode(), libjpeg-turbo supports all input formats
+ // used by Chromium (i.e. RGBA and BGRA) and we just map the input
+@@ -237,6 +238,9 @@ bool JPEGCodec::Decode(const unsigned char* input, siz
+ NOTREACHED() << "Invalid pixel format";
+ return false;
+ }
++#else
++ cinfo.out_color_space = JCS_RGB;
++#endif
+ break;
+ case JCS_CMYK:
+ case JCS_YCCK:
diff --git a/devel/electron4/files/patch-ui_gfx_font__fallback__linux.cc b/devel/electron4/files/patch-ui_gfx_font__fallback__linux.cc
new file mode 100644
index 000000000000..b9a974af937a
--- /dev/null
+++ b/devel/electron4/files/patch-ui_gfx_font__fallback__linux.cc
@@ -0,0 +1,13 @@
+--- ui/gfx/font_fallback_linux.cc.orig 2019-03-15 06:38:28 UTC
++++ ui/gfx/font_fallback_linux.cc
+@@ -15,6 +15,10 @@
+ #include "base/memory/ptr_util.h"
+ #include "ui/gfx/font.h"
+
++#if defined(OS_BSD)
++#include <unistd.h>
++#endif
++
+ namespace gfx {
+
+ namespace {
diff --git a/devel/electron4/files/patch-ui_gfx_font__list.cc b/devel/electron4/files/patch-ui_gfx_font__list.cc
new file mode 100644
index 000000000000..1bfc9560ae4f
--- /dev/null
+++ b/devel/electron4/files/patch-ui_gfx_font__list.cc
@@ -0,0 +1,11 @@
+--- ui/gfx/font_list.cc.orig 2019-03-15 06:26:44 UTC
++++ ui/gfx/font_list.cc
+@@ -24,7 +24,7 @@ base::LazyInstance<scoped_refptr<gfx::FontListImpl>>::
+ bool g_default_impl_initialized = false;
+
+ bool IsFontFamilyAvailable(const std::string& family, SkFontMgr* fontManager) {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ return !!fontManager->legacyMakeTypeface(family.c_str(), SkFontStyle());
+ #else
+ sk_sp<SkFontStyleSet> set(fontManager->matchFamily(family.c_str()));
diff --git a/devel/electron4/files/patch-ui_gfx_font__render__params.h b/devel/electron4/files/patch-ui_gfx_font__render__params.h
new file mode 100644
index 000000000000..dd0c428d0b32
--- /dev/null
+++ b/devel/electron4/files/patch-ui_gfx_font__render__params.h
@@ -0,0 +1,18 @@
+--- ui/gfx/font_render_params.h.orig 2019-03-15 06:38:28 UTC
++++ ui/gfx/font_render_params.h
+@@ -111,13 +111,13 @@ GFX_EXPORT FontRenderParams GetFontRenderParams(
+ const FontRenderParamsQuery& query,
+ std::string* family_out);
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Clears GetFontRenderParams()'s cache. Intended to be called by tests that are
+ // changing Fontconfig's configuration.
+ GFX_EXPORT void ClearFontRenderParamsCacheForTest();
+ #endif
+
+-#if defined(OS_LINUX) || (defined(OS_ANDROID) && BUILDFLAG(ENABLE_VR))
++#if defined(OS_LINUX) || (defined(OS_ANDROID) && BUILDFLAG(ENABLE_VR)) || defined(OS_BSD)
+ // Gets the device scale factor to query the FontRenderParams.
+ GFX_EXPORT float GetFontRenderParamsDeviceScaleFactor();
+
diff --git a/devel/electron4/files/patch-ui_gfx_gpu__memory__buffer.h b/devel/electron4/files/patch-ui_gfx_gpu__memory__buffer.h
new file mode 100644
index 000000000000..aa2b8ce19449
--- /dev/null
+++ b/devel/electron4/files/patch-ui_gfx_gpu__memory__buffer.h
@@ -0,0 +1,20 @@
+--- ui/gfx/gpu_memory_buffer.h.orig 2019-03-15 06:38:28 UTC
++++ ui/gfx/gpu_memory_buffer.h
+@@ -16,7 +16,7 @@
+ #include "ui/gfx/geometry/rect.h"
+ #include "ui/gfx/gfx_export.h"
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include "ui/gfx/native_pixmap_handle.h"
+ #elif defined(OS_MACOSX) && !defined(OS_IOS)
+ #include "ui/gfx/mac/io_surface.h"
+@@ -57,7 +57,7 @@ struct GFX_EXPORT GpuMemoryBufferHandle {
+ base::SharedMemoryHandle handle;
+ uint32_t offset;
+ int32_t stride;
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ NativePixmapHandle native_pixmap_handle;
+ #elif defined(OS_MACOSX) && !defined(OS_IOS)
+ ScopedRefCountedIOSurfaceMachPort mach_port;
diff --git a/devel/electron4/files/patch-ui_gfx_ipc_gfx__param__traits__macros.h b/devel/electron4/files/patch-ui_gfx_ipc_gfx__param__traits__macros.h
new file mode 100644
index 000000000000..9f13d36dd3c5
--- /dev/null
+++ b/devel/electron4/files/patch-ui_gfx_ipc_gfx__param__traits__macros.h
@@ -0,0 +1,29 @@
+--- ui/gfx/ipc/gfx_param_traits_macros.h.orig 2019-03-15 06:38:28 UTC
++++ ui/gfx/ipc/gfx_param_traits_macros.h
+@@ -18,7 +18,7 @@
+ #include "ui/gfx/selection_bound.h"
+ #include "ui/gfx/swap_result.h"
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include "ui/gfx/native_pixmap_handle.h"
+ #endif
+
+@@ -51,7 +51,7 @@ IPC_STRUCT_TRAITS_BEGIN(gfx::GpuMemoryBufferHandle)
+ IPC_STRUCT_TRAITS_MEMBER(handle)
+ IPC_STRUCT_TRAITS_MEMBER(offset)
+ IPC_STRUCT_TRAITS_MEMBER(stride)
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ IPC_STRUCT_TRAITS_MEMBER(native_pixmap_handle)
+ #elif defined(OS_MACOSX)
+ IPC_STRUCT_TRAITS_MEMBER(mach_port)
+@@ -66,7 +66,7 @@ IPC_STRUCT_TRAITS_BEGIN(gfx::GpuMemoryBufferId)
+ IPC_STRUCT_TRAITS_MEMBER(id)
+ IPC_STRUCT_TRAITS_END()
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ IPC_STRUCT_TRAITS_BEGIN(gfx::NativePixmapPlane)
+ IPC_STRUCT_TRAITS_MEMBER(stride)
+ IPC_STRUCT_TRAITS_MEMBER(offset)
diff --git a/devel/electron4/files/patch-ui_gfx_linux_client__native__pixmap__dmabuf.cc b/devel/electron4/files/patch-ui_gfx_linux_client__native__pixmap__dmabuf.cc
new file mode 100644
index 000000000000..0bfbc00496ad
--- /dev/null
+++ b/devel/electron4/files/patch-ui_gfx_linux_client__native__pixmap__dmabuf.cc
@@ -0,0 +1,25 @@
+--- ui/gfx/linux/client_native_pixmap_dmabuf.cc.orig 2019-03-15 06:38:28 UTC
++++ ui/gfx/linux/client_native_pixmap_dmabuf.cc
+@@ -5,7 +5,9 @@
+ #include "ui/gfx/linux/client_native_pixmap_dmabuf.h"
+
+ #include <fcntl.h>
++#if !defined(__FreeBSD__)
+ #include <linux/version.h>
++#endif
+ #include <stddef.h>
+ #include <sys/ioctl.h>
+ #include <sys/mman.h>
+@@ -17,11 +19,7 @@
+ #include "base/strings/stringprintf.h"
+ #include "base/trace_event/trace_event.h"
+
+-#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 11, 0)
+-#include <linux/dma-buf.h>
+-#else
+-#include <linux/types.h>
+-
++#if defined(__FreeBSD__)
+ struct dma_buf_sync {
+ __u64 flags;
+ };
diff --git a/devel/electron4/files/patch-ui_gfx_mojo_buffer__types__struct__traits.cc b/devel/electron4/files/patch-ui_gfx_mojo_buffer__types__struct__traits.cc
new file mode 100644
index 000000000000..25e9e31b6b1c
--- /dev/null
+++ b/devel/electron4/files/patch-ui_gfx_mojo_buffer__types__struct__traits.cc
@@ -0,0 +1,42 @@
+--- ui/gfx/mojo/buffer_types_struct_traits.cc.orig 2019-03-15 06:38:28 UTC
++++ ui/gfx/mojo/buffer_types_struct_traits.cc
+@@ -27,10 +27,10 @@ std::vector<mojo::ScopedHandle>
+ StructTraits<gfx::mojom::NativePixmapHandleDataView, gfx::NativePixmapHandle>::
+ fds(const gfx::NativePixmapHandle& pixmap_handle) {
+ std::vector<mojo::ScopedHandle> handles;
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ for (const base::FileDescriptor& fd : pixmap_handle.fds)
+ handles.emplace_back(mojo::WrapPlatformFile(fd.fd));
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+ return handles;
+ }
+
+@@ -38,7 +38,7 @@ bool StructTraits<
+ gfx::mojom::NativePixmapHandleDataView,
+ gfx::NativePixmapHandle>::Read(gfx::mojom::NativePixmapHandleDataView data,
+ gfx::NativePixmapHandle* out) {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ mojo::ArrayDataView<mojo::ScopedHandle> handles_data_view;
+ data.GetFdsDataView(&handles_data_view);
+ for (size_t i = 0; i < handles_data_view.size(); ++i) {
+@@ -71,7 +71,7 @@ const gfx::NativePixmapHandle&
+ StructTraits<gfx::mojom::GpuMemoryBufferHandleDataView,
+ gfx::GpuMemoryBufferHandle>::
+ native_pixmap_handle(const gfx::GpuMemoryBufferHandle& handle) {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ return handle.native_pixmap_handle;
+ #else
+ static gfx::NativePixmapHandle pixmap_handle;
+@@ -154,7 +154,7 @@ bool StructTraits<gfx::mojom::GpuMemoryBufferHandleDat
+ out->offset = data.offset();
+ out->stride = data.stride();
+ }
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ if (out->type == gfx::NATIVE_PIXMAP &&
+ !data.ReadNativePixmapHandle(&out->native_pixmap_handle))
+ return false;
diff --git a/devel/electron4/files/patch-ui_gfx_mojo_buffer__types__struct__traits.h b/devel/electron4/files/patch-ui_gfx_mojo_buffer__types__struct__traits.h
new file mode 100644
index 000000000000..2e6549b7902c
--- /dev/null
+++ b/devel/electron4/files/patch-ui_gfx_mojo_buffer__types__struct__traits.h
@@ -0,0 +1,11 @@
+--- ui/gfx/mojo/buffer_types_struct_traits.h.orig 2019-03-15 06:38:28 UTC
++++ ui/gfx/mojo/buffer_types_struct_traits.h
+@@ -291,7 +291,7 @@ template <>
+ struct StructTraits<gfx::mojom::NativePixmapHandleDataView,
+ gfx::NativePixmapHandle> {
+ static bool IsNull(const gfx::NativePixmapHandle& handle) {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ return false;
+ #else
+ // NativePixmapHandle are not used on non-linux platforms.
diff --git a/devel/electron4/files/patch-ui_gfx_native__pixmap__handle.cc b/devel/electron4/files/patch-ui_gfx_native__pixmap__handle.cc
new file mode 100644
index 000000000000..e6e30eb3e98b
--- /dev/null
+++ b/devel/electron4/files/patch-ui_gfx_native__pixmap__handle.cc
@@ -0,0 +1,28 @@
+--- ui/gfx/native_pixmap_handle.cc.orig 2019-03-15 06:26:44 UTC
++++ ui/gfx/native_pixmap_handle.cc
+@@ -4,14 +4,14 @@
+
+ #include "ui/gfx/native_pixmap_handle.h"
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include <drm_fourcc.h>
+ #include "base/posix/eintr_wrapper.h"
+ #endif
+
+ namespace gfx {
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ static_assert(NativePixmapPlane::kNoModifier == DRM_FORMAT_MOD_INVALID,
+ "gfx::NativePixmapPlane::kNoModifier should be an alias for"
+ "DRM_FORMAT_MOD_INVALID");
+@@ -36,7 +36,7 @@ NativePixmapHandle::NativePixmapHandle(const NativePix
+
+ NativePixmapHandle::~NativePixmapHandle() {}
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ NativePixmapHandle CloneHandleForIPC(const NativePixmapHandle& handle) {
+ NativePixmapHandle clone;
+ std::vector<base::ScopedFD> scoped_fds;
diff --git a/devel/electron4/files/patch-ui_gfx_native__pixmap__handle.h b/devel/electron4/files/patch-ui_gfx_native__pixmap__handle.h
new file mode 100644
index 000000000000..121b259ef55a
--- /dev/null
+++ b/devel/electron4/files/patch-ui_gfx_native__pixmap__handle.h
@@ -0,0 +1,28 @@
+--- ui/gfx/native_pixmap_handle.h.orig 2019-03-15 06:26:44 UTC
++++ ui/gfx/native_pixmap_handle.h
+@@ -13,7 +13,7 @@
+ #include "build/build_config.h"
+ #include "ui/gfx/gfx_export.h"
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include "base/file_descriptor_posix.h"
+ #endif
+
+@@ -54,14 +54,14 @@ struct GFX_EXPORT NativePixmapHandle {
+
+ ~NativePixmapHandle();
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // File descriptors for the underlying memory objects (usually dmabufs).
+ std::vector<base::FileDescriptor> fds;
+ #endif
+ std::vector<NativePixmapPlane> planes;
+ };
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Returns an instance of |handle| which can be sent over IPC. This duplicates
+ // the file-handles, so that the IPC code take ownership of them, without
+ // invalidating |handle|.
diff --git a/devel/electron4/files/patch-ui_gfx_render__text.cc b/devel/electron4/files/patch-ui_gfx_render__text.cc
new file mode 100644
index 000000000000..417ab322a581
--- /dev/null
+++ b/devel/electron4/files/patch-ui_gfx_render__text.cc
@@ -0,0 +1,46 @@
+--- ui/gfx/render_text.cc.orig 2019-03-15 06:38:28 UTC
++++ ui/gfx/render_text.cc
+@@ -942,32 +942,33 @@ void RenderText::SetDisplayOffset(int horizontal_offse
+ const int extra_content = GetContentWidth() - display_rect_.width();
+ const int cursor_width = cursor_enabled_ ? 1 : 0;
+
+- int min_offset = 0;
+- int max_offset = 0;
++ // avoid collisions with vm_map.h on FreeBSD --cmt
++ int _min_offset = 0;
++ int _max_offset = 0;
+ if (extra_content > 0) {
+ switch (GetCurrentHorizontalAlignment()) {
+ case ALIGN_LEFT:
+- min_offset = -extra_content;
++ _min_offset = -extra_content;
+ break;
+ case ALIGN_RIGHT:
+- max_offset = extra_content;
++ _max_offset = extra_content;
+ break;
+ case ALIGN_CENTER:
+ // The extra space reserved for cursor at the end of the text is ignored
+ // when centering text. So, to calculate the valid range for offset, we
+ // exclude that extra space, calculate the range, and add it back to the
+ // range (if cursor is enabled).
+- min_offset = -(extra_content - cursor_width + 1) / 2 - cursor_width;
+- max_offset = (extra_content - cursor_width) / 2;
++ _min_offset = -(extra_content - cursor_width + 1) / 2 - cursor_width;
++ _max_offset = (extra_content - cursor_width) / 2;
+ break;
+ default:
+ break;
+ }
+ }
+- if (horizontal_offset < min_offset)
+- horizontal_offset = min_offset;
+- else if (horizontal_offset > max_offset)
+- horizontal_offset = max_offset;
++ if (horizontal_offset < _min_offset)
++ horizontal_offset = _min_offset;
++ else if (horizontal_offset > _max_offset)
++ horizontal_offset = _max_offset;
+
+ cached_bounds_and_offset_valid_ = true;
+ display_offset_.set_x(horizontal_offset);
diff --git a/devel/electron4/files/patch-ui_gl_BUILD.gn b/devel/electron4/files/patch-ui_gl_BUILD.gn
new file mode 100644
index 000000000000..a564bd3ba249
--- /dev/null
+++ b/devel/electron4/files/patch-ui_gl_BUILD.gn
@@ -0,0 +1,11 @@
+--- ui/gl/BUILD.gn.orig 2019-03-15 06:38:28 UTC
++++ ui/gl/BUILD.gn
+@@ -209,7 +209,7 @@ component("gl") {
+ }
+ }
+
+- if (is_posix && !is_fuchsia && !is_mac) {
++ if (is_posix && !is_fuchsia && !is_mac && !is_bsd) {
+ # Windows has USE_EGL but doesn't support base::FileDescriptor.
+ # libsync isn't supported or needed on MacOSX.
+ # Fuchsia is excluded due to a libsync dependency and because it's
diff --git a/devel/electron4/files/patch-ui_gl_generate__bindings.py b/devel/electron4/files/patch-ui_gl_generate__bindings.py
new file mode 100644
index 000000000000..9d1377de5121
--- /dev/null
+++ b/devel/electron4/files/patch-ui_gl_generate__bindings.py
@@ -0,0 +1,12 @@
+--- ui/gl/generate_bindings.py.orig 2019-03-15 06:38:28 UTC
++++ ui/gl/generate_bindings.py
+@@ -2347,6 +2347,9 @@ GLX_FUNCTIONS = [
+ 'arguments':
+ 'Display* dpy, GLXDrawable drawable, int32_t* numerator, '
+ 'int32_t* denominator' },
++{ 'return_type': '__GLXextFuncPtr',
++ 'names': ['glXGetProcAddressARB'],
++ 'arguments': 'const GLubyte* procName', },
+ { 'return_type': 'void',
+ 'names': ['glXGetSelectedEvent'],
+ 'arguments': 'Display* dpy, GLXDrawable drawable, unsigned long* mask', },
diff --git a/devel/electron4/files/patch-ui_gl_gl__bindings__api__autogen__glx.h b/devel/electron4/files/patch-ui_gl_gl__bindings__api__autogen__glx.h
new file mode 100644
index 000000000000..466082e3789a
--- /dev/null
+++ b/devel/electron4/files/patch-ui_gl_gl__bindings__api__autogen__glx.h
@@ -0,0 +1,10 @@
+--- ui/gl/gl_bindings_api_autogen_glx.h.orig 2019-03-15 06:38:28 UTC
++++ ui/gl/gl_bindings_api_autogen_glx.h
+@@ -84,6 +84,7 @@ bool glXGetMscRateOMLFn(Display* dpy,
+ GLXDrawable drawable,
+ int32_t* numerator,
+ int32_t* denominator) override;
++__GLXextFuncPtr glXGetProcAddressARBFn(const GLubyte* procName) override;
+ void glXGetSelectedEventFn(Display* dpy,
+ GLXDrawable drawable,
+ unsigned long* mask) override;
diff --git a/devel/electron4/files/patch-ui_gl_gl__bindings__autogen__glx.cc b/devel/electron4/files/patch-ui_gl_gl__bindings__autogen__glx.cc
new file mode 100644
index 000000000000..a06b87288b6e
--- /dev/null
+++ b/devel/electron4/files/patch-ui_gl_gl__bindings__autogen__glx.cc
@@ -0,0 +1,61 @@
+--- ui/gl/gl_bindings_autogen_glx.cc.orig 2019-03-15 06:26:44 UTC
++++ ui/gl/gl_bindings_autogen_glx.cc
+@@ -115,6 +115,8 @@ void DriverGLX::InitializeExtensionBindings() {
+
+ ext.b_GLX_ARB_create_context =
+ gfx::HasExtension(extensions, "GLX_ARB_create_context");
++ ext.b_GLX_ARB_get_proc_address =
++ gfx::HasExtension(extensions, "GLX_ARB_get_proc_address");
+ ext.b_GLX_EXT_swap_control =
+ gfx::HasExtension(extensions, "GLX_EXT_swap_control");
+ ext.b_GLX_EXT_texture_from_pixmap =
+@@ -145,6 +147,11 @@ void DriverGLX::InitializeExtensionBindings() {
+ GetGLProcAddress("glXCreateContextAttribsARB"));
+ }
+
++ if (ext.b_GLX_ARB_get_proc_address) {
++ fn.glXGetProcAddressARBFn = reinterpret_cast<glXGetProcAddressARBProc>(
++ GetGLProcAddress("glXGetProcAddressARB"));
++ }
++
+ if (ext.b_GLX_SGIX_fbconfig) {
+ fn.glXGetFBConfigFromVisualSGIXFn =
+ reinterpret_cast<glXGetFBConfigFromVisualSGIXProc>(
+@@ -346,6 +353,10 @@ bool GLXApiBase::glXGetMscRateOMLFn(Display* dpy,
+ return driver_->fn.glXGetMscRateOMLFn(dpy, drawable, numerator, denominator);
+ }
+
++__GLXextFuncPtr GLXApiBase::glXGetProcAddressARBFn(const GLubyte* procName) {
++ return driver_->fn.glXGetProcAddressARBFn(procName);
++}
++
+ void GLXApiBase::glXGetSelectedEventFn(Display* dpy,
+ GLXDrawable drawable,
+ unsigned long* mask) {
+@@ -646,6 +657,11 @@ bool TraceGLXApi::glXGetMscRateOMLFn(Display* dpy,
+ return glx_api_->glXGetMscRateOMLFn(dpy, drawable, numerator, denominator);
+ }
+
++__GLXextFuncPtr TraceGLXApi::glXGetProcAddressARBFn(const GLubyte* procName) {
++ TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glXGetProcAddressARB")
++ return glx_api_->glXGetProcAddressARBFn(procName);
++}
++
+ void TraceGLXApi::glXGetSelectedEventFn(Display* dpy,
+ GLXDrawable drawable,
+ unsigned long* mask) {
+@@ -1068,6 +1084,14 @@ bool DebugGLXApi::glXGetMscRateOMLFn(Display* dpy,
+ << static_cast<const void*>(denominator) << ")");
+ bool result =
+ glx_api_->glXGetMscRateOMLFn(dpy, drawable, numerator, denominator);
++ GL_SERVICE_LOG("GL_RESULT: " << result);
++ return result;
++}
++
++__GLXextFuncPtr DebugGLXApi::glXGetProcAddressARBFn(const GLubyte* procName) {
++ GL_SERVICE_LOG("glXGetProcAddressARB"
++ << "(" << static_cast<const void*>(procName) << ")");
++ __GLXextFuncPtr result = glx_api_->glXGetProcAddressARBFn(procName);
+ GL_SERVICE_LOG("GL_RESULT: " << result);
+ return result;
+ }
diff --git a/devel/electron4/files/patch-ui_gl_gl__bindings__autogen__glx.h b/devel/electron4/files/patch-ui_gl_gl__bindings__autogen__glx.h
new file mode 100644
index 000000000000..0c706e183054
--- /dev/null
+++ b/devel/electron4/files/patch-ui_gl_gl__bindings__autogen__glx.h
@@ -0,0 +1,43 @@
+--- ui/gl/gl_bindings_autogen_glx.h.orig 2019-03-15 06:26:44 UTC
++++ ui/gl/gl_bindings_autogen_glx.h
+@@ -104,6 +104,8 @@ typedef bool(GL_BINDING_CALL* glXGetMscRateOMLProc)(Di
+ GLXDrawable drawable,
+ int32_t* numerator,
+ int32_t* denominator);
++typedef __GLXextFuncPtr(GL_BINDING_CALL* glXGetProcAddressARBProc)(
++ const GLubyte* procName);
+ typedef void(GL_BINDING_CALL* glXGetSelectedEventProc)(Display* dpy,
+ GLXDrawable drawable,
+ unsigned long* mask);
+@@ -166,6 +168,7 @@ typedef void(GL_BINDING_CALL* glXWaitXProc)(void);
+
+ struct ExtensionsGLX {
+ bool b_GLX_ARB_create_context;
++ bool b_GLX_ARB_get_proc_address;
+ bool b_GLX_EXT_swap_control;
+ bool b_GLX_EXT_texture_from_pixmap;
+ bool b_GLX_MESA_copy_sub_buffer;
+@@ -203,6 +206,7 @@ struct ProcsGLX {
+ glXGetFBConfigFromVisualSGIXProc glXGetFBConfigFromVisualSGIXFn;
+ glXGetFBConfigsProc glXGetFBConfigsFn;
+ glXGetMscRateOMLProc glXGetMscRateOMLFn;
++ glXGetProcAddressARBProc glXGetProcAddressARBFn;
+ glXGetSelectedEventProc glXGetSelectedEventFn;
+ glXGetSyncValuesOMLProc glXGetSyncValuesOMLFn;
+ glXGetVisualFromFBConfigProc glXGetVisualFromFBConfigFn;
+@@ -310,6 +314,7 @@ class GL_EXPORT GLXApi {
+ GLXDrawable drawable,
+ int32_t* numerator,
+ int32_t* denominator) = 0;
++ virtual __GLXextFuncPtr glXGetProcAddressARBFn(const GLubyte* procName) = 0;
+ virtual void glXGetSelectedEventFn(Display* dpy,
+ GLXDrawable drawable,
+ unsigned long* mask) = 0;
+@@ -394,6 +399,7 @@ class GL_EXPORT GLXApi {
+ ::gl::g_current_glx_context->glXGetFBConfigFromVisualSGIXFn
+ #define glXGetFBConfigs ::gl::g_current_glx_context->glXGetFBConfigsFn
+ #define glXGetMscRateOML ::gl::g_current_glx_context->glXGetMscRateOMLFn
++#define glXGetProcAddressARB ::gl::g_current_glx_context->glXGetProcAddressARBFn
+ #define glXGetSelectedEvent ::gl::g_current_glx_context->glXGetSelectedEventFn
+ #define glXGetSyncValuesOML ::gl::g_current_glx_context->glXGetSyncValuesOMLFn
+ #define glXGetVisualFromFBConfig \
diff --git a/devel/electron4/files/patch-ui_gl_gl__fence.cc b/devel/electron4/files/patch-ui_gl_gl__fence.cc
new file mode 100644
index 000000000000..f45c46314199
--- /dev/null
+++ b/devel/electron4/files/patch-ui_gl_gl__fence.cc
@@ -0,0 +1,11 @@
+--- ui/gl/gl_fence.cc.orig 2019-03-15 06:26:44 UTC
++++ ui/gl/gl_fence.cc
+@@ -18,7 +18,7 @@
+ #include "ui/gl/gl_fence_apple.h"
+ #endif
+
+-#if defined(USE_EGL) && defined(OS_POSIX) && !defined(OS_MACOSX)
++#if defined(USE_EGL) && defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_FREEBSD)
+ #define USE_GL_FENCE_ANDROID_NATIVE_FENCE_SYNC
+ #include "ui/gl/gl_fence_android_native_fence_sync.h"
+ #include "ui/gl/gl_surface_egl.h"
diff --git a/devel/electron4/files/patch-ui_gl_sync__control__vsync__provider.cc b/devel/electron4/files/patch-ui_gl_sync__control__vsync__provider.cc
new file mode 100644
index 000000000000..8fbfd8957503
--- /dev/null
+++ b/devel/electron4/files/patch-ui_gl_sync__control__vsync__provider.cc
@@ -0,0 +1,43 @@
+--- ui/gl/sync_control_vsync_provider.cc.orig 2019-03-15 06:38:28 UTC
++++ ui/gl/sync_control_vsync_provider.cc
+@@ -11,7 +11,7 @@
+ #include "base/trace_event/trace_event.h"
+ #include "build/build_config.h"
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // These constants define a reasonable range for a calculated refresh interval.
+ // Calculating refreshes out of this range will be considered a fatal error.
+ const int64_t kMinVsyncIntervalUs = base::Time::kMicrosecondsPerSecond / 400;
+@@ -26,7 +26,7 @@ const double kRelativeIntervalDifferenceThreshold = 0.
+ namespace gl {
+
+ SyncControlVSyncProvider::SyncControlVSyncProvider() : gfx::VSyncProvider() {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // On platforms where we can't get an accurate reading on the refresh
+ // rate we fall back to the assumption that we're displaying 60 frames
+ // per second.
+@@ -48,7 +48,7 @@ bool SyncControlVSyncProvider::GetVSyncParametersIfAva
+ base::TimeTicks* timebase_out,
+ base::TimeDelta* interval_out) {
+ TRACE_EVENT0("gpu", "SyncControlVSyncProvider::GetVSyncParameters");
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // The actual clock used for the system time returned by glXGetSyncValuesOML
+ // is unspecified. In practice, the clock used is likely to be either
+ // CLOCK_REALTIME or CLOCK_MONOTONIC, so we compare the returned time to the
+@@ -157,11 +157,11 @@ bool SyncControlVSyncProvider::GetVSyncParametersIfAva
+ return true;
+ #else
+ return false;
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+ }
+
+ bool SyncControlVSyncProvider::SupportGetVSyncParametersIfAvailable() const {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ return true;
+ #else
+ return false;
diff --git a/devel/electron4/files/patch-ui_gl_sync__control__vsync__provider.h b/devel/electron4/files/patch-ui_gl_sync__control__vsync__provider.h
new file mode 100644
index 000000000000..0ea826154fd3
--- /dev/null
+++ b/devel/electron4/files/patch-ui_gl_sync__control__vsync__provider.h
@@ -0,0 +1,34 @@
+--- ui/gl/sync_control_vsync_provider.h.orig 2019-03-15 06:38:28 UTC
++++ ui/gl/sync_control_vsync_provider.h
+@@ -26,11 +26,11 @@ class SyncControlVSyncProvider : public gfx::VSyncProv
+ bool SupportGetVSyncParametersIfAvailable() const override;
+
+ static constexpr bool IsSupported() {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ return true;
+ #else
+ return false;
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+ }
+
+ protected:
+@@ -41,7 +41,7 @@ class SyncControlVSyncProvider : public gfx::VSyncProv
+ virtual bool GetMscRate(int32_t* numerator, int32_t* denominator) = 0;
+
+ private:
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ base::TimeTicks last_timebase_;
+ uint64_t last_media_stream_counter_ = 0;
+ base::TimeDelta last_good_interval_;
+@@ -52,7 +52,7 @@ class SyncControlVSyncProvider : public gfx::VSyncProv
+ // from configuration change (monitor reconfiguration, moving windows
+ // between monitors, suspend and resume, etc.).
+ base::queue<base::TimeDelta> last_computed_intervals_;
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+
+ DISALLOW_COPY_AND_ASSIGN(SyncControlVSyncProvider);
+ };
diff --git a/devel/electron4/files/patch-ui_message__center_public_cpp_message__center__constants.h b/devel/electron4/files/patch-ui_message__center_public_cpp_message__center__constants.h
new file mode 100644
index 000000000000..a8975f8c9b08
--- /dev/null
+++ b/devel/electron4/files/patch-ui_message__center_public_cpp_message__center__constants.h
@@ -0,0 +1,11 @@
+--- ui/message_center/public/cpp/message_center_constants.h.orig 2019-03-15 06:38:28 UTC
++++ ui/message_center/public/cpp/message_center_constants.h
+@@ -106,7 +106,7 @@ const int kButtonHorizontalPadding = 16; // In DIPs.
+ const int kButtonIconTopPadding = 11; // In DIPs.
+ const int kButtonIconToTitlePadding = 16; // In DIPs.
+
+-#if !defined(OS_LINUX) || defined(USE_AURA)
++#if (!defined(OS_LINUX) && !defined(OS_BSD)) || defined(USE_AURA)
+ constexpr SkColor kButtonSeparatorColor = SkColorSetRGB(234, 234, 234);
+ constexpr SkColor kHoveredButtonBackgroundColor = SkColorSetRGB(243, 243, 243);
+ #endif
diff --git a/devel/electron4/files/patch-ui_native__theme_native__theme.h b/devel/electron4/files/patch-ui_native__theme_native__theme.h
new file mode 100644
index 000000000000..ffd3cf0d1807
--- /dev/null
+++ b/devel/electron4/files/patch-ui_native__theme_native__theme.h
@@ -0,0 +1,11 @@
+--- ui/native_theme/native_theme.h.orig 2019-03-15 06:38:28 UTC
++++ ui/native_theme/native_theme.h
+@@ -47,7 +47,7 @@ class NATIVE_THEME_EXPORT NativeTheme {
+ // The part to be painted / sized.
+ enum Part {
+ kCheckbox,
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ kFrameTopArea,
+ #endif
+ kInnerSpinButton,
diff --git a/devel/electron4/files/patch-ui_native__theme_native__theme__base.cc b/devel/electron4/files/patch-ui_native__theme_native__theme__base.cc
new file mode 100644
index 000000000000..11f346176e92
--- /dev/null
+++ b/devel/electron4/files/patch-ui_native__theme_native__theme__base.cc
@@ -0,0 +1,11 @@
+--- ui/native_theme/native_theme_base.cc.orig 2019-03-15 06:26:44 UTC
++++ ui/native_theme/native_theme_base.cc
+@@ -172,7 +172,7 @@ void NativeThemeBase::Paint(cc::PaintCanvas* canvas,
+ case kCheckbox:
+ PaintCheckbox(canvas, state, rect, extra.button);
+ break;
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ case kFrameTopArea:
+ PaintFrameTopArea(canvas, state, rect, extra.frame_top_area);
+ break;
diff --git a/devel/electron4/files/patch-ui_strings_app__locale__settings.grd b/devel/electron4/files/patch-ui_strings_app__locale__settings.grd
new file mode 100644
index 000000000000..0f5b219b740f
--- /dev/null
+++ b/devel/electron4/files/patch-ui_strings_app__locale__settings.grd
@@ -0,0 +1,11 @@
+--- ui/strings/app_locale_settings.grd.orig 2019-03-15 06:26:44 UTC
++++ ui/strings/app_locale_settings.grd
+@@ -187,7 +187,7 @@
+ 75%
+ </message>
+ </if>
+- <if expr="(is_linux or is_android or is_bsd) and not chromeos">
++ <if expr="is_posix and not chromeos">
+ <!-- The font used in Web UI (e.g. History). Note that these are only
+ backups. We try to use the system font if possible. -->
+ <message name="IDS_WEB_FONT_FAMILY" use_name_for_id="true">
diff --git a/devel/electron4/files/patch-ui_views_controls_label.cc b/devel/electron4/files/patch-ui_views_controls_label.cc
new file mode 100644
index 000000000000..a4c5af861fa8
--- /dev/null
+++ b/devel/electron4/files/patch-ui_views_controls_label.cc
@@ -0,0 +1,20 @@
+--- ui/views/controls/label.cc.orig 2019-03-15 06:38:29 UTC
++++ ui/views/controls/label.cc
+@@ -549,7 +549,7 @@ bool Label::OnMousePressed(const ui::MouseEvent& event
+ GetFocusManager()->SetFocusedView(this);
+ }
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ if (event.IsOnlyMiddleMouseButton() && GetFocusManager() && !had_focus)
+ GetFocusManager()->SetFocusedView(this);
+ #endif
+@@ -734,7 +734,7 @@ bool Label::PasteSelectionClipboard() {
+ }
+
+ void Label::UpdateSelectionClipboard() {
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ if (!obscured()) {
+ ui::ScopedClipboardWriter(ui::CLIPBOARD_TYPE_SELECTION)
+ .WriteText(GetSelectedText());
diff --git a/devel/electron4/files/patch-ui_views_controls_textfield_textfield.cc b/devel/electron4/files/patch-ui_views_controls_textfield_textfield.cc
new file mode 100644
index 000000000000..ac4914f5166a
--- /dev/null
+++ b/devel/electron4/files/patch-ui_views_controls_textfield_textfield.cc
@@ -0,0 +1,73 @@
+--- ui/views/controls/textfield/textfield.cc.orig 2019-07-24 10:33:28 UTC
++++ ui/views/controls/textfield/textfield.cc
+@@ -59,7 +59,7 @@
+ #include "base/win/win_util.h"
+ #endif
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ #include "base/strings/utf_string_conversions.h"
+ #include "ui/base/ime/linux/text_edit_command_auralinux.h"
+ #include "ui/base/ime/linux/text_edit_key_bindings_delegate_auralinux.h"
+@@ -156,14 +156,14 @@ ui::TextEditCommand GetCommandForKeyEvent(const ui::Ke
+ case ui::VKEY_BACK:
+ if (!control)
+ return ui::TextEditCommand::DELETE_BACKWARD;
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Only erase by line break on Linux and ChromeOS.
+ if (shift)
+ return ui::TextEditCommand::DELETE_TO_BEGINNING_OF_LINE;
+ #endif
+ return ui::TextEditCommand::DELETE_WORD_BACKWARD;
+ case ui::VKEY_DELETE:
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Only erase by line break on Linux and ChromeOS.
+ if (shift && control)
+ return ui::TextEditCommand::DELETE_TO_END_OF_LINE;
+@@ -219,7 +219,7 @@ bool IsControlKeyModifier(int flags) {
+ // Control-modified key combination, but we cannot extend it to other platforms
+ // as Control has different meanings and behaviors.
+ // https://crrev.com/2580483002/#msg46
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ return flags & ui::EF_CONTROL_DOWN;
+ #else
+ return false;
+@@ -671,7 +671,7 @@ bool Textfield::OnMousePressed(const ui::MouseEvent& e
+ #endif
+ }
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ if (!handled && !had_focus && event.IsOnlyMiddleMouseButton())
+ RequestFocusWithPointer(ui::EventPointerType::POINTER_TYPE_MOUSE);
+ #endif
+@@ -715,7 +715,7 @@ bool Textfield::OnKeyPressed(const ui::KeyEvent& event
+ if (!textfield)
+ return handled;
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ ui::TextEditKeyBindingsDelegateAuraLinux* delegate =
+ ui::GetTextEditKeyBindingsDelegate();
+ std::vector<ui::TextEditCommandAuraLinux> commands;
+@@ -883,7 +883,7 @@ void Textfield::AboutToRequestFocusFromTabTraversal(bo
+ }
+
+ bool Textfield::SkipDefaultKeyEventProcessing(const ui::KeyEvent& event) {
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ // Skip any accelerator handling that conflicts with custom keybindings.
+ ui::TextEditKeyBindingsDelegateAuraLinux* delegate =
+ ui::GetTextEditKeyBindingsDelegate();
+@@ -2079,7 +2079,7 @@ bool Textfield::PasteSelectionClipboard() {
+ }
+
+ void Textfield::UpdateSelectionClipboard() {
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ if (text_input_type_ != ui::TEXT_INPUT_TYPE_PASSWORD) {
+ ui::ScopedClipboardWriter(ui::CLIPBOARD_TYPE_SELECTION)
+ .WriteText(GetSelectedText());
diff --git a/devel/electron4/files/patch-ui_views_corewm_tooltip__aura.cc b/devel/electron4/files/patch-ui_views_corewm_tooltip__aura.cc
new file mode 100644
index 000000000000..fd4e5098b22c
--- /dev/null
+++ b/devel/electron4/files/patch-ui_views_corewm_tooltip__aura.cc
@@ -0,0 +1,11 @@
+--- ui/views/corewm/tooltip_aura.cc.orig 2019-03-15 06:38:29 UTC
++++ ui/views/corewm/tooltip_aura.cc
+@@ -34,7 +34,7 @@ const int kCursorOffsetY = 15;
+
+ // TODO(varkha): Update if native widget can be transparent on Linux.
+ bool CanUseTranslucentTooltipWidget() {
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ return false;
+ #else
+ return true;
diff --git a/devel/electron4/files/patch-ui_views_examples_widget__example.cc b/devel/electron4/files/patch-ui_views_examples_widget__example.cc
new file mode 100644
index 000000000000..83248556db62
--- /dev/null
+++ b/devel/electron4/files/patch-ui_views_examples_widget__example.cc
@@ -0,0 +1,11 @@
+--- ui/views/examples/widget_example.cc.orig 2019-03-15 06:26:45 UTC
++++ ui/views/examples/widget_example.cc
+@@ -79,7 +79,7 @@ void WidgetExample::CreateExampleView(View* container)
+ BuildButton(container, "Popup widget", POPUP);
+ BuildButton(container, "Dialog widget", DIALOG);
+ BuildButton(container, "Modal Dialog", MODAL_DIALOG);
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Windows does not support TYPE_CONTROL top-level widgets.
+ BuildButton(container, "Child widget", CHILD);
+ #endif
diff --git a/devel/electron4/files/patch-ui_views_selection__controller.cc b/devel/electron4/files/patch-ui_views_selection__controller.cc
new file mode 100644
index 000000000000..f5e64ee2f8b0
--- /dev/null
+++ b/devel/electron4/files/patch-ui_views_selection__controller.cc
@@ -0,0 +1,11 @@
+--- ui/views/selection_controller.cc.orig 2019-03-15 06:38:29 UTC
++++ ui/views/selection_controller.cc
+@@ -20,7 +20,7 @@ SelectionController::SelectionController(SelectionCont
+ delegate_(delegate),
+ handles_selection_clipboard_(false) {
+ // On Linux, update the selection clipboard on a text selection.
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ set_handles_selection_clipboard(true);
+ #endif
+
diff --git a/devel/electron4/files/patch-ui_views_style_platform__style.cc b/devel/electron4/files/patch-ui_views_style_platform__style.cc
new file mode 100644
index 000000000000..faccc0bdf486
--- /dev/null
+++ b/devel/electron4/files/patch-ui_views_style_platform__style.cc
@@ -0,0 +1,11 @@
+--- ui/views/style/platform_style.cc.orig 2019-03-15 06:38:29 UTC
++++ ui/views/style/platform_style.cc
+@@ -19,7 +19,7 @@
+
+ #if defined(OS_CHROMEOS)
+ #include "ui/views/controls/scrollbar/overlay_scroll_bar.h"
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ #define DESKTOP_LINUX
+ #endif
+
diff --git a/devel/electron4/files/patch-ui_views_views__delegate.cc b/devel/electron4/files/patch-ui_views_views__delegate.cc
new file mode 100644
index 000000000000..5db37da2c5d2
--- /dev/null
+++ b/devel/electron4/files/patch-ui_views_views__delegate.cc
@@ -0,0 +1,11 @@
+--- ui/views/views_delegate.cc.orig 2019-03-15 06:38:29 UTC
++++ ui/views/views_delegate.cc
+@@ -87,7 +87,7 @@ HICON ViewsDelegate::GetSmallWindowIcon() const {
+ bool ViewsDelegate::IsWindowInMetro(gfx::NativeWindow window) const {
+ return false;
+ }
+-#elif defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#elif (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_FREEBSD)
+ gfx::ImageSkia* ViewsDelegate::GetDefaultWindowIcon() const {
+ return nullptr;
+ }
diff --git a/devel/electron4/files/patch-ui_views_views__delegate.h b/devel/electron4/files/patch-ui_views_views__delegate.h
new file mode 100644
index 000000000000..cc83d3ed30cd
--- /dev/null
+++ b/devel/electron4/files/patch-ui_views_views__delegate.h
@@ -0,0 +1,11 @@
+--- ui/views/views_delegate.h.orig 2019-03-15 06:38:29 UTC
++++ ui/views/views_delegate.h
+@@ -155,7 +155,7 @@ class VIEWS_EXPORT ViewsDelegate {
+ // Returns true if the window passed in is in the Windows 8 metro
+ // environment.
+ virtual bool IsWindowInMetro(gfx::NativeWindow window) const;
+-#elif defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#elif defined(OS_LINUX) && !defined(OS_CHROMEOS) || defined(OS_FREEBSD)
+ virtual gfx::ImageSkia* GetDefaultWindowIcon() const;
+ #endif
+
diff --git a/devel/electron4/files/patch-ui_views_window_custom__frame__view.cc b/devel/electron4/files/patch-ui_views_window_custom__frame__view.cc
new file mode 100644
index 000000000000..a6db791500f5
--- /dev/null
+++ b/devel/electron4/files/patch-ui_views_window_custom__frame__view.cc
@@ -0,0 +1,11 @@
+--- ui/views/window/custom_frame_view.cc.orig 2019-03-15 06:38:29 UTC
++++ ui/views/window/custom_frame_view.cc
+@@ -301,7 +301,7 @@ int CustomFrameView::NonClientTopBorderHeight() const
+ int CustomFrameView::CaptionButtonY() const {
+ // Maximized buttons start at window top so that even if their images aren't
+ // drawn flush with the screen edge, they still obey Fitts' Law.
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if defined(OS_LINUX) && !defined(OS_CHROMEOS) || defined(OS_BSD)
+ return FrameBorderThickness();
+ #else
+ return frame_->IsMaximized() ? FrameBorderThickness() : kFrameShadowThickness;
diff --git a/devel/electron4/files/patch-ui_views_window_dialog__delegate.cc b/devel/electron4/files/patch-ui_views_window_dialog__delegate.cc
new file mode 100644
index 000000000000..e74b3c6407e3
--- /dev/null
+++ b/devel/electron4/files/patch-ui_views_window_dialog__delegate.cc
@@ -0,0 +1,11 @@
+--- ui/views/window/dialog_delegate.cc.orig 2019-03-15 06:38:29 UTC
++++ ui/views/window/dialog_delegate.cc
+@@ -65,7 +65,7 @@ Widget::InitParams DialogDelegate::GetDialogWidgetInit
+ params.bounds = bounds;
+ DialogDelegate* dialog = delegate->AsDialogDelegate();
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ // The new style doesn't support unparented dialogs on Linux desktop.
+ if (dialog)
+ dialog->supports_custom_frame_ &= parent != NULL;
diff --git a/devel/electron4/files/patch-ui_views_window_frame__background.cc b/devel/electron4/files/patch-ui_views_window_frame__background.cc
new file mode 100644
index 000000000000..965a8e3036e9
--- /dev/null
+++ b/devel/electron4/files/patch-ui_views_window_frame__background.cc
@@ -0,0 +1,11 @@
+--- ui/views/window/frame_background.cc.orig 2019-03-15 06:26:45 UTC
++++ ui/views/window/frame_background.cc
+@@ -122,7 +122,7 @@ void FrameBackground::PaintMaximized(gfx::Canvas* canv
+ const View* view) const {
+ // Fill the top with the frame color first so we have a constant background
+ // for areas not covered by the theme image.
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ auto* native_theme = view->GetNativeTheme();
+ ui::NativeTheme::ExtraParams params;
+ params.frame_top_area.use_custom_frame = use_custom_frame_;
diff --git a/devel/electron4/files/patch-ui_webui_resources_js_cr.js b/devel/electron4/files/patch-ui_webui_resources_js_cr.js
new file mode 100644
index 000000000000..e3bf65d8ae23
--- /dev/null
+++ b/devel/electron4/files/patch-ui_webui_resources_js_cr.js
@@ -0,0 +1,14 @@
+--- ui/webui/resources/js/cr.js.orig 2019-03-15 06:38:29 UTC
++++ ui/webui/resources/js/cr.js
+@@ -455,6 +455,11 @@ var cr = cr || function() {
+ get doc() {
+ return document;
+ },
++
++ /** Whether this is on *BSD. */
++ get isBSD() {
++ return /BSD/.test(navigator.userAgent);
++ },
+
+ /** Whether we are using a Mac or not. */
+ get isMac() {
diff --git a/devel/electron4/files/patch-ui_webui_resources_js_icon.js b/devel/electron4/files/patch-ui_webui_resources_js_icon.js
new file mode 100644
index 000000000000..ab3da3479ac9
--- /dev/null
+++ b/devel/electron4/files/patch-ui_webui_resources_js_icon.js
@@ -0,0 +1,11 @@
+--- ui/webui/resources/js/icon.js.orig 2019-03-15 06:38:29 UTC
++++ ui/webui/resources/js/icon.js
+@@ -14,7 +14,7 @@ cr.define('cr.icon', function() {
+ // supports SCALE_FACTOR_100P on all non-iOS platforms.
+ supportedScaleFactors.push(1);
+ }
+- if (cr.isMac || cr.isChromeOS || cr.isWindows || cr.isLinux) {
++ if (cr.isMac || cr.isChromeOS || cr.isWindows || cr.isLinux || cr.isBSD) {
+ // All desktop platforms support zooming which also updates the renderer's
+ // device scale factors (a.k.a devicePixelRatio), and these platforms have
+ // high DPI assets for 2x. Let the renderer pick the closest image for
diff --git a/devel/electron4/files/patch-v8_BUILD.gn b/devel/electron4/files/patch-v8_BUILD.gn
new file mode 100644
index 000000000000..ff8acf2302e5
--- /dev/null
+++ b/devel/electron4/files/patch-v8_BUILD.gn
@@ -0,0 +1,41 @@
+--- v8/BUILD.gn.orig 2019-06-07 04:25:16 UTC
++++ v8/BUILD.gn
+@@ -2610,7 +2610,7 @@ v8_source_set("v8_base") {
+ "src/x64/simulator-x64.h",
+ "src/x64/sse-instr.h",
+ ]
+- if (is_linux) {
++ if (is_linux && !is_bsd) {
+ sources += [
+ "src/trap-handler/handler-inside-linux.cc",
+ "src/trap-handler/handler-outside-linux.cc",
+@@ -2959,7 +2959,7 @@ v8_component("v8_libbase") {
+ }
+ }
+
+- if (is_linux) {
++ if (is_linux && !is_bsd) {
+ sources += [
+ "src/base/debug/stack_trace_posix.cc",
+ "src/base/platform/platform-linux.cc",
+@@ -2979,6 +2979,12 @@ v8_component("v8_libbase") {
+ "dl",
+ "rt",
+ ]
++ } else if (is_bsd) {
++ sources += [
++ "src/base/debug/stack_trace_posix.cc",
++ "src/base/platform/platform-freebsd.cc",
++ ]
++ libs = [ "rt", "execinfo" ]
+ } else if (is_android) {
+ if (current_toolchain == host_toolchain) {
+ libs = [
+@@ -3148,6 +3154,7 @@ if (v8_use_snapshot && current_toolchain == v8_snapsho
+ sources = [
+ "src/snapshot/mksnapshot.cc",
+ ]
++ libs = ["execinfo"]
+
+ configs = [ ":internal_config" ]
+
diff --git a/devel/electron4/files/patch-v8_src_base_cpu.cc b/devel/electron4/files/patch-v8_src_base_cpu.cc
new file mode 100644
index 000000000000..ea691832cc39
--- /dev/null
+++ b/devel/electron4/files/patch-v8_src_base_cpu.cc
@@ -0,0 +1,18 @@
+--- v8/src/base/cpu.cc.orig 2019-03-15 06:33:46 UTC
++++ v8/src/base/cpu.cc
+@@ -424,6 +424,7 @@ CPU::CPU()
+
+ #if V8_OS_LINUX
+
++#if V8_OS_LINUX
+ CPUInfo cpu_info;
+
+ // Extract implementor from the "CPU implementer" field.
+@@ -457,6 +458,7 @@ CPU::CPU()
+ }
+ delete[] part;
+ }
++#endif
+
+ // Extract architecture from the "CPU Architecture" field.
+ // The list is well-known, unlike the the output of
diff --git a/devel/electron4/files/patch-v8_src_base_platform_platform-posix.cc b/devel/electron4/files/patch-v8_src_base_platform_platform-posix.cc
new file mode 100644
index 000000000000..e04c5a61e963
--- /dev/null
+++ b/devel/electron4/files/patch-v8_src_base_platform_platform-posix.cc
@@ -0,0 +1,15 @@
+--- v8/src/base/platform/platform-posix.cc.orig 2019-03-15 06:42:04 UTC
++++ v8/src/base/platform/platform-posix.cc
+@@ -496,6 +496,12 @@ int OS::GetCurrentThreadId() {
+ return static_cast<int>(syscall(__NR_gettid));
+ #elif V8_OS_ANDROID
+ return static_cast<int>(gettid());
++#elif V8_OS_DRAGONFLYBSD || defined(__DragonFly__)
++ return static_cast<int>(lwp_gettid());
++#elif V8_OS_FREEBSD
++ return static_cast<int>(pthread_getthreadid_np());
++#elif V8_OS_NETBSD
++ return static_cast<int>(_lwp_self());
+ #elif V8_OS_AIX
+ return static_cast<int>(thread_self());
+ #elif V8_OS_FUCHSIA
diff --git a/devel/electron4/files/patch-v8_src_log-utils.h b/devel/electron4/files/patch-v8_src_log-utils.h
new file mode 100644
index 000000000000..1378eb7f2442
--- /dev/null
+++ b/devel/electron4/files/patch-v8_src_log-utils.h
@@ -0,0 +1,11 @@
+--- v8/src/log-utils.h.orig 2019-03-15 06:42:05 UTC
++++ v8/src/log-utils.h
+@@ -15,6 +15,8 @@
+ #include "src/flags.h"
+ #include "src/ostreams.h"
+
++#include <stdarg.h>
++
+ namespace v8 {
+ namespace internal {
+
diff --git a/devel/electron4/pkg-descr b/devel/electron4/pkg-descr
new file mode 100644
index 000000000000..bb5485e9e735
--- /dev/null
+++ b/devel/electron4/pkg-descr
@@ -0,0 +1,10 @@
+Build cross platform desktop apps with JavaScript, HTML, and CSS.
+
+It's easier than you think.
+
+If you can build a website, you can build a desktop app. Electron is a
+framework for creating native applications with web technologies like
+JavaScript, HTML, and CSS. It takes care of the hard parts so you can
+focus on the core of your application.
+
+WWW: https://electronjs.org/
diff --git a/devel/electron4/pkg-plist b/devel/electron4/pkg-plist
new file mode 100644
index 000000000000..48ff3d8f1952
--- /dev/null
+++ b/devel/electron4/pkg-plist
@@ -0,0 +1,122 @@
+bin/electron%%ELECTRON_VER_MAJOR%%
+%%DATADIR%%/LICENSE
+%%DATADIR%%/LICENSES.chromium.html
+%%DATADIR%%/chrome_100_percent.pak
+%%DATADIR%%/chrome_200_percent.pak
+%%DRIVER%%%%DATADIR%%/chromedriver
+%%DATADIR%%/electron
+%%DATADIR%%/icudtl.dat
+%%DATADIR%%/libEGL.so
+%%DATADIR%%/libGLESv2.so
+%%DATADIR%%/locales/am.pak
+%%DATADIR%%/locales/ar.pak
+%%DATADIR%%/locales/bg.pak
+%%DATADIR%%/locales/bn.pak
+%%DATADIR%%/locales/ca.pak
+%%DATADIR%%/locales/cs.pak
+%%DATADIR%%/locales/da.pak
+%%DATADIR%%/locales/de.pak
+%%DATADIR%%/locales/el.pak
+%%DATADIR%%/locales/en-GB.pak
+%%DATADIR%%/locales/en-US.pak
+%%DATADIR%%/locales/es-419.pak
+%%DATADIR%%/locales/es.pak
+%%DATADIR%%/locales/et.pak
+%%DATADIR%%/locales/fa.pak
+%%DATADIR%%/locales/fi.pak
+%%DATADIR%%/locales/fil.pak
+%%DATADIR%%/locales/fr.pak
+%%DATADIR%%/locales/gu.pak
+%%DATADIR%%/locales/he.pak
+%%DATADIR%%/locales/hi.pak
+%%DATADIR%%/locales/hr.pak
+%%DATADIR%%/locales/hu.pak
+%%DATADIR%%/locales/id.pak
+%%DATADIR%%/locales/it.pak
+%%DATADIR%%/locales/ja.pak
+%%DATADIR%%/locales/kn.pak
+%%DATADIR%%/locales/ko.pak
+%%DATADIR%%/locales/lt.pak
+%%DATADIR%%/locales/lv.pak
+%%DATADIR%%/locales/ml.pak
+%%DATADIR%%/locales/mr.pak
+%%DATADIR%%/locales/ms.pak
+%%DATADIR%%/locales/nb.pak
+%%DATADIR%%/locales/nl.pak
+%%DATADIR%%/locales/pl.pak
+%%DATADIR%%/locales/pt-BR.pak
+%%DATADIR%%/locales/pt-PT.pak
+%%DATADIR%%/locales/ro.pak
+%%DATADIR%%/locales/ru.pak
+%%DATADIR%%/locales/sk.pak
+%%DATADIR%%/locales/sl.pak
+%%DATADIR%%/locales/sr.pak
+%%DATADIR%%/locales/sv.pak
+%%DATADIR%%/locales/sw.pak
+%%DATADIR%%/locales/ta.pak
+%%DATADIR%%/locales/te.pak
+%%DATADIR%%/locales/th.pak
+%%DATADIR%%/locales/tr.pak
+%%DATADIR%%/locales/uk.pak
+%%DATADIR%%/locales/vi.pak
+%%DATADIR%%/locales/zh-CN.pak
+%%DATADIR%%/locales/zh-TW.pak
+%%DATADIR%%/mksnapshot
+%%DATADIR%%/natives_blob.bin
+%%DATADIR%%/node_headers/include/node/common.gypi
+%%DATADIR%%/node_headers/include/node/config.gypi
+%%DATADIR%%/node_headers/include/node/libplatform/libplatform-export.h
+%%DATADIR%%/node_headers/include/node/libplatform/libplatform.h
+%%DATADIR%%/node_headers/include/node/libplatform/v8-tracing.h
+%%DATADIR%%/node_headers/include/node/node.h
+%%DATADIR%%/node_headers/include/node/node_api.h
+%%DATADIR%%/node_headers/include/node/node_api_types.h
+%%DATADIR%%/node_headers/include/node/node_buffer.h
+%%DATADIR%%/node_headers/include/node/node_object_wrap.h
+%%DATADIR%%/node_headers/include/node/node_version.h
+%%DATADIR%%/node_headers/include/node/uv.h
+%%DATADIR%%/node_headers/include/node/uv/aix.h
+%%DATADIR%%/node_headers/include/node/uv/android-ifaddrs.h
+%%DATADIR%%/node_headers/include/node/uv/bsd.h
+%%DATADIR%%/node_headers/include/node/uv/darwin.h
+%%DATADIR%%/node_headers/include/node/uv/errno.h
+%%DATADIR%%/node_headers/include/node/uv/linux.h
+%%DATADIR%%/node_headers/include/node/uv/os390.h
+%%DATADIR%%/node_headers/include/node/uv/posix.h
+%%DATADIR%%/node_headers/include/node/uv/pthread-barrier.h
+%%DATADIR%%/node_headers/include/node/uv/stdint-msvc2008.h
+%%DATADIR%%/node_headers/include/node/uv/sunos.h
+%%DATADIR%%/node_headers/include/node/uv/threadpool.h
+%%DATADIR%%/node_headers/include/node/uv/tree.h
+%%DATADIR%%/node_headers/include/node/uv/unix.h
+%%DATADIR%%/node_headers/include/node/uv/version.h
+%%DATADIR%%/node_headers/include/node/uv/win.h
+%%DATADIR%%/node_headers/include/node/v8-inspector-protocol.h
+%%DATADIR%%/node_headers/include/node/v8-inspector.h
+%%DATADIR%%/node_headers/include/node/v8-platform.h
+%%DATADIR%%/node_headers/include/node/v8-profiler.h
+%%DATADIR%%/node_headers/include/node/v8-testing.h
+%%DATADIR%%/node_headers/include/node/v8-util.h
+%%DATADIR%%/node_headers/include/node/v8-value-serializer-version.h
+%%DATADIR%%/node_headers/include/node/v8-version-string.h
+%%DATADIR%%/node_headers/include/node/v8-version.h
+%%DATADIR%%/node_headers/include/node/v8.h
+%%DATADIR%%/node_headers/include/node/v8config.h
+%%DATADIR%%/node_headers/include/node/zconf.h
+%%DATADIR%%/node_headers/include/node/zlib.h
+%%DIST%%%%DATADIR%%/releases/SHASUMS256.txt
+%%DIST%%%%AMD64%%%%DATADIR%%/releases/chromedriver-v%%ELECTRON_VER%%-freebsd-x64.zip
+%%DIST%%%%I386%%%%DATADIR%%/releases/chromedriver-v%%ELECTRON_VER%%-freebsd-ia32.zip
+%%DIST%%%%AMD64%%%%DATADIR%%/releases/electron-v%%ELECTRON_VER%%-freebsd-x64.zip
+%%DIST%%%%I386%%%%DATADIR%%/releases/electron-v%%ELECTRON_VER%%-freebsd-ia32.zip
+%%DIST%%%%AMD64%%%%DATADIR%%/releases/mksnapshot-v%%ELECTRON_VER%%-freebsd-x64.zip
+%%DIST%%%%I386%%%%DATADIR%%/releases/mksnapshot-v%%ELECTRON_VER%%-freebsd-ia32.zip
+%%DATADIR%%/resources.pak
+%%DATADIR%%/resources/default_app.asar
+%%DATADIR%%/resources/electron.asar
+%%DATADIR%%/snapshot_blob.bin
+%%DATADIR%%/swiftshader/libEGL.so
+%%DATADIR%%/swiftshader/libGLESv2.so
+%%DATADIR%%/v8_context_snapshot.bin
+%%DATADIR%%/v8_context_snapshot_generator
+%%DATADIR%%/version
diff --git a/devel/electron5/Makefile b/devel/electron5/Makefile
new file mode 100644
index 000000000000..c45406deadfe
--- /dev/null
+++ b/devel/electron5/Makefile
@@ -0,0 +1,302 @@
+# $FreeBSD$
+
+PORTNAME= electron
+DISTVERSIONPREFIX= v
+DISTVERSION= ${ELECTRON_VER:S/-beta./.b/}
+CATEGORIES= devel java
+MASTER_SITES= https://github.com/tagattie/FreeBSD-Electron/releases/download/v5.0.1/:chromium \
+ https://commondatastorage.googleapis.com/chromium-browser-official/:chromium_official \
+ https://commondatastorage.googleapis.com/chromium-nodejs/:chromium_node \
+ https://commondatastorage.googleapis.com/chromium-fonts/:chromium_testfonts
+PKGNAMESUFFIX= ${ELECTRON_VER_MAJOR}
+DISTFILES= chromium-${CHROMIUM_VER}${EXTRACT_SUFX}:chromium \
+ chromium-${CHROMIUM_OFFICIAL_VER}${EXTRACT_SUFX}:chromium_official \
+ ${CHROMIUM_NODE_MODULES_HASH}:chromium_node \
+ ${CHROMIUM_TEST_FONTS_HASH}:chromium_testfonts \
+ electron-npm-modules-${ELECTRON_VER}${EXTRACT_SUFX}:prefetch
+DIST_SUBDIR= ${PORTNAME}
+
+MAINTAINER= tagattie@FreeBSD.org
+COMMENT= Build cross-platform desktop apps with JavaScript, HTML, and CSS
+
+LICENSE= MIT
+LICENSE_FILE= ${WRKSRC}/electron/LICENSE
+
+ONLY_FOR_ARCHS= amd64
+
+FETCH_DEPENDS= npm-node12>0:www/npm-node12
+PATCH_DEPENDS= git:devel/git
+BUILD_DEPENDS= ${LOCALBASE}/bin/ar:devel/binutils \
+ gperf:devel/gperf \
+ yasm:devel/yasm \
+ ${LOCALBASE}/include/linux/videodev2.h:multimedia/v4l_compat \
+ node12>0:www/node12 \
+ npm-node12>0:www/npm-node12
+LIB_DEPENDS= libatk-bridge-2.0.so:accessibility/at-spi2-atk \
+ libatspi.so:accessibility/at-spi2-core \
+ libsnappy.so:archivers/snappy \
+ libFLAC.so:audio/flac \
+ libopus.so:audio/opus \
+ libdbus-1.so:devel/dbus \
+ libnotify.so:devel/libnotify \
+ libpci.so:devel/libpci \
+ libnspr4.so:devel/nspr \
+ libre2.so:devel/re2 \
+ liblcms2.so:graphics/lcms2 \
+ libdrm.so:graphics/libdrm \
+ libwebp.so:graphics/webp \
+ libavcodec.so:multimedia/ffmpeg \
+ libvpx.so:multimedia/libvpx \
+ libopenh264.so:multimedia/openh264 \
+ libfreetype.so:print/freetype2 \
+ libharfbuzz.so:print/harfbuzz \
+ libsecret-1.so:security/libsecret \
+ libnss3.so:security/nss \
+ libexpat.so:textproc/expat2 \
+ libfontconfig.so:x11-fonts/fontconfig
+RUN_DEPENDS= xdg-open:devel/xdg-utils
+TEST_DEPENDS= ${PYTHON_PKGNAMEPREFIX}python-dbusmock>0:devel/py-python-dbusmock@${PY_FLAVOR} \
+ npm-node12>0:www/npm-node12
+
+USES= bison dos2unix gettext-tools gl gnome jpeg localbase:ldflags \
+ ninja pkgconfig python:2.7,build,test tar:xz xorg
+
+USE_GITHUB= yes
+GH_TAGNAME= ${DISTVERSIONPREFIX}${ELECTRON_VER}
+# See ${WRKSRC}/electron/DEPS for GH_TAGNAME_node
+GH_TUPLE= electron:node:666c67e078bddc32f25409f4a929c1e9b5f47373:node
+
+# Official chromium version containing "gn" which is known to work
+CHROMIUM_OFFICIAL_VER= 76.0.3809.132
+# See ${WRKSRC}/electron/DEPS for CHROMIUM_VER
+CHROMIUM_VER= 73.0.3683.121
+# See ${WRKSRC}/third_party/node/node_modules.tar.gz.sha1 for CHROMIUM_NODE_MODULES_HASH
+CHROMIUM_NODE_MODULES_HASH= c0e0f34498afb3f363cc37cd2e9c1a020cb020d9
+# See ${WRKSRC}/third_party/test_fonts/test_fonts.tar.gz.sha1 for CHROMIUM_TEST_FONTS_HASH
+CHROMIUM_TEST_FONTS_HASH= a22de844e32a3f720d219e3911c3da3478039f89
+
+NO_WRKSUBDIR= yes
+WRKSRC_SUBDIR= src
+
+DATADIR= ${PREFIX}/share/${PORTNAME}${PKGNAMESUFFIX}
+
+DOS2UNIX_FILES= third_party/skia/third_party/vulkanmemoryallocator/include/vk_mem_alloc.h
+BINARY_ALIAS= python=${PYTHON_CMD}
+
+USE_XORG= x11 xcb xcomposite xcursor xdamage xext xfixes xi xrandr \
+ xrender xscrnsaver xtst
+USE_GL= gl glesv2
+USE_GNOME= atk cairo pango gdkpixbuf2 gtk30 libxml2 libxslt
+USE_JAVA= yes
+JAVA_VERSION= 1.8
+JAVA_BUILD= yes
+
+USE_LDCONFIG= ${DATADIR}
+
+GN_ARGS+= clang_use_chrome_plugins=false \
+ enable_hangout_services_extension=true \
+ enable_nacl=false \
+ enable_remoting=false \
+ fieldtrial_testing_like_official_build=true \
+ is_clang=true \
+ jumbo_file_merge_limit=8 \
+ toolkit_views=true \
+ treat_warnings_as_errors=false \
+ use_allocator="none" \
+ use_allocator_shim=false \
+ use_aura=true \
+ use_custom_libcxx=false \
+ use_gnome_keyring=false \
+ use_jumbo_build=true \
+ use_lld=true \
+ use_sysroot=false \
+ use_system_freetype=true \
+ use_system_harfbuzz=true \
+ use_system_lcms2=true \
+ use_system_libdrm=true \
+ use_system_libjpeg=true \
+ extra_cxxflags="${CXXFLAGS}" \
+ extra_ldflags="${LDFLAGS}"
+GN_BOOTSTRAP_FLAGS= --no-clean --no-rebuild --skip-generate-buildfiles
+
+ALL_TARGET= electron third_party/electron_node:headers
+MAKE_ARGS= -C out/${BUILDTYPE}
+MAKE_ENV+= C_INCLUDE_PATH=${LOCALBASE}/include \
+ CPLUS_INCLUDE_PATH=${LOCALBASE}/include
+
+OPTIONS_DEFINE= CUPS DEBUG DIST DRIVER KERBEROS
+DIST_DESC= Build distribution zip files
+DRIVER_DESC= Install chromedriver
+OPTIONS_GROUP= AUDIO
+OPTIONS_GROUP_AUDIO= ALSA PULSEAUDIO
+OPTIONS_DEFAULT= CUPS DRIVER KERBEROS ALSA
+OPTIONS_SUB= yes
+
+ALSA_LIB_DEPENDS= libasound.so:audio/alsa-lib
+ALSA_RUN_DEPENDS= ${LOCALBASE}/lib/alsa-lib/libasound_module_pcm_oss.so:audio/alsa-plugins
+ALSA_VARS= GN_ARGS+=use_alsa=true
+ALSA_VARS_OFF= GN_ARGS+=use_alsa=false
+
+CUPS_LIB_DEPENDS= libcups.so:print/cups
+CUPS_VARS= GN_ARGS+=use_cups=true
+CUPS_VARS_OFF= GN_ARGS+=use_cups=false
+
+DEBUG_VARS= BUILDTYPE=Debug \
+ GN_ARGS+=is_component_build=false
+DEBUG_VARS_OFF= BUILDTYPE=Release
+
+DIST_IMPLIES= DRIVER
+
+DRIVER_ALL_TARGET= chromedriver
+
+KERBEROS_VARS= GN_ARGS+=use_kerberos=true
+KERBEROS_VARS_OFF= GN_ARGS+=use_kerberos=false
+
+PULSEAUDIO_LIB_DEPENDS= libpulse.so:audio/pulseaudio
+PULSEAUDIO_VARS= GN_ARGS+=use_pulseaudio=true
+PULSEAUDIO_VARS_OFF= GN_ARGS+=use_pulseaudio=false
+
+POST_BUILD_TARGETS= licenses version
+POST_BUILD_DIST_TARGETS= electron_dist_zip electron_chromedriver_zip electron_mksnapshot_zip
+
+NPM_TIMESTAMP= 1576733942
+
+PLIST_SUB= ELECTRON_VER=${ELECTRON_VER} \
+ ELECTRON_VER_MAJOR=${ELECTRON_VER_MAJOR}
+
+.include "Makefile.version"
+.include "Makefile.tests"
+.include <bsd.port.pre.mk>
+
+.if ${ARCH} == "amd64"
+PLIST_SUB+= AMD64=""
+.else
+PLIST_SUB+= AMD64="@comment "
+.endif
+
+.if ${ARCH} == "i386"
+PLIST_SUB+= I386=""
+.else
+PLIST_SUB+= I386="@comment "
+.endif
+
+pre-fetch:
+ @${MKDIR} ${DISTDIR}/${DIST_SUBDIR}
+ if [ ! -f ${DISTDIR}/${DIST_SUBDIR}/electron-npm-modules-${ELECTRON_VER}${EXTRACT_SUFX} ]; \
+ then ${MKDIR} ${WRKDIR}/npm-cache; \
+ ${CP} ${FILESDIR}/package.json \
+ ${FILESDIR}/package-lock.json ${WRKDIR}/npm-cache; \
+ cd ${WRKDIR}/npm-cache && \
+ ${SETENV} HOME=${WRKDIR} npm ci --verbose --no-progress && \
+ ${MV} node_modules npm_modules; \
+ ${MTREE_CMD} -cbnSp npm_modules | ${MTREE_CMD} -C | ${SED} \
+ -e 's:time=[0-9.]*:time=${NPM_TIMESTAMP}.000000000:' \
+ -e 's:\([gu]id\)=[0-9]*:\1=0:g' \
+ -e 's:flags=.*:flags=none:' \
+ -e 's:^\.:./npm_modules:' > npm_modules.mtree; \
+ ${TAR} cJf ${DISTDIR}/${DIST_SUBDIR}/electron-npm-modules-${ELECTRON_VER}${EXTRACT_SUFX} \
+ @npm_modules.mtree; \
+ ${RM} -r ${WRKDIR}/npm-cache; \
+ fi
+
+post-extract:
+ ${MV} ${WRKDIR}/${PORTNAME}-${ELECTRON_VER}/chromium-${CHROMIUM_VER} ${WRKSRC}
+ ${RM} -r ${WRKSRC}/tools/gn
+ ${MV} ${WRKDIR}/${PORTNAME}-${ELECTRON_VER}/chromium-${CHROMIUM_OFFICIAL_VER}/tools/gn \
+ ${WRKSRC}/tools/gn
+ ${MV} ${WRKDIR}/${PORTNAME}-${ELECTRON_VER}/${PORTNAME}-${ELECTRON_VER} ${WRKSRC}/electron
+ ${MV} ${WRKDIR}/${PORTNAME}-${ELECTRON_VER}/${GH_PROJECT_node}-${GH_TAGNAME_node} \
+ ${WRKSRC}/third_party/${GH_ACCOUNT_node}_${GH_PROJECT_node}
+ ${MV} ${WRKDIR}/${PORTNAME}-${ELECTRON_VER}/node_modules ${WRKSRC}/third_party/node
+ ${MV} ${WRKDIR}/${PORTNAME}-${ELECTRON_VER}/test_fonts ${WRKSRC}/third_party/test_fonts
+ ${MV} ${WRKDIR}/${PORTNAME}-${ELECTRON_VER}/npm_modules ${WRKSRC}/electron/node_modules
+
+pre-patch:
+ ${SH} ${FILESDIR}/apply-electron-patches.sh ${WRKSRC}
+ # ${FIND} ${WRKSRC} -type f -name '*.orig' -print -delete
+ # ${FIND} ${WRKSRC} -type f -name '*~' -print -delete
+
+pre-configure:
+ # We used to remove bundled libraries to be sure that chromium uses
+ # system libraries and not shipped ones.
+ # cd ${WRKSRC} && ${PYTHON_CMD} \
+ #./build/linux/unbundle/remove_bundled_libraries.py [list of preserved]
+ cd ${WRKSRC} && ${SETENV} ${CONFIGURE_ENV} ${PYTHON_CMD} \
+ ./build/linux/unbundle/replace_gn_files.py --system-libraries \
+ ffmpeg flac fontconfig freetype harfbuzz-ng libdrm libjpeg \
+ libusb libvpx libwebp libxml libxslt openh264 opus re2 snappy \
+ yasm || ${FALSE}
+
+do-configure:
+ # GN generator bootstrapping and generating ninja files
+ cd ${WRKSRC} && ${SETENV} ${CONFIGURE_ENV} CC=${CC} CXX=${CXX} LD=${CXX} \
+ READELF=${READELF} AR=${AR} NM=${NM} ${PYTHON_CMD} \
+ ./tools/gn/bootstrap/bootstrap.py ${GN_BOOTSTRAP_FLAGS}
+ cd ${WRKSRC} && ${SETENV} ${CONFIGURE_ENV} ./out/${BUILDTYPE}/gn gen out/${BUILDTYPE} \
+ --args='import("//electron/build/args/${BUILDTYPE:tl}.gn") ${GN_ARGS}'
+ # Setup nodejs dependency
+ ${MKDIR} ${WRKSRC}/third_party/node/freebsd/node-freebsd-x64/bin
+ ${LN} -sf ${LOCALBASE}/bin/node ${WRKSRC}/third_party/node/freebsd/node-freebsd-x64/bin/node
+ # Setup java dependency
+ ${MKDIR} ${WRKDIR}/bin
+ ${LN} -sf ${LOCALBASE}/openjdk8/bin/java ${WRKDIR}/bin/java
+
+post-build:
+ cd ${WRKSRC} && ${SETENV} ${MAKE_ENV} \
+ ${MAKE_CMD} ${MAKE_ARGS} ${POST_BUILD_TARGETS}
+
+post-build-DIST-on:
+ cd ${WRKSRC} && ${SETENV} ${MAKE_ENV} \
+ ${MAKE_CMD} ${MAKE_ARGS} ${POST_BUILD_DIST_TARGETS}
+ cd ${WRKSRC}/out/${BUILDTYPE} && \
+ ${CP} chromedriver.zip chromedriver-v${ELECTRON_VER}-freebsd-${ARCH:S/amd64/x64/:S/i386/ia32/}.zip && \
+ ${CP} dist.zip electron-v${ELECTRON_VER}-freebsd-${ARCH:S/amd64/x64/:S/i386/ia32/}.zip && \
+ ${CP} mksnapshot.zip mksnapshot-v${ELECTRON_VER}-freebsd-${ARCH:S/amd64/x64/:S/i386/ia32/}.zip && \
+ ${SHA256} -r *-v${ELECTRON_VER}-freebsd-*.zip | ${SED} -e 's/ / */' > SHASUMS256.txt
+
+do-install:
+ ${MKDIR} ${STAGEDIR}${DATADIR}
+.for f in electron mksnapshot v8_context_snapshot_generator
+ ${INSTALL_PROGRAM} ${WRKSRC}/out/${BUILDTYPE}/${f} ${STAGEDIR}${DATADIR}
+.endfor
+.for f in libEGL.so libGLESv2.so
+ ${INSTALL_LIB} ${WRKSRC}/out/${BUILDTYPE}/${f} ${STAGEDIR}${DATADIR}
+.endfor
+ ${MKDIR} ${STAGEDIR}${DATADIR}/swiftshader
+.for f in libEGL.so libGLESv2.so
+ ${INSTALL_LIB} ${WRKSRC}/out/${BUILDTYPE}/swiftshader/${f} ${STAGEDIR}${DATADIR}/swiftshader
+.endfor
+.for f in LICENSE LICENSES.chromium.html icudtl.dat natives_blob.bin snapshot_blob.bin v8_context_snapshot.bin version
+ ${INSTALL_DATA} ${WRKSRC}/out/${BUILDTYPE}/${f} ${STAGEDIR}${DATADIR}
+.endfor
+.for f in chrome_100_percent.pak chrome_200_percent.pak resources.pak
+ ${INSTALL_DATA} ${WRKSRC}/out/${BUILDTYPE}/${f} ${STAGEDIR}${DATADIR}
+.endfor
+ ${MKDIR} ${STAGEDIR}${DATADIR}/locales
+ ${INSTALL_DATA} ${WRKSRC}/out/${BUILDTYPE}/locales/*.pak ${STAGEDIR}${DATADIR}/locales
+ ${MKDIR} ${STAGEDIR}${DATADIR}/resources
+.for f in default_app.asar electron.asar
+ ${INSTALL_DATA} ${WRKSRC}/out/${BUILDTYPE}/resources/${f} ${STAGEDIR}${DATADIR}/resources
+.endfor
+ cd ${WRKSRC}/out/${BUILDTYPE}/gen && ${COPYTREE_SHARE} node_headers ${STAGEDIR}${DATADIR}
+ ${RLN} ${STAGEDIR}${DATADIR}/electron ${STAGEDIR}${PREFIX}/bin/electron${PKGNAMESUFFIX}
+
+post-install-DIST-on:
+ ${MKDIR} ${STAGEDIR}${DATADIR}/releases
+ ${INSTALL_DATA} ${WRKSRC}/out/${BUILDTYPE}/SHASUMS256.txt ${STAGEDIR}${DATADIR}/releases
+ ${INSTALL_DATA} ${WRKSRC}/out/${BUILDTYPE}/*-v${ELECTRON_VER}-freebsd-*.zip ${STAGEDIR}${DATADIR}/releases
+
+post-install-DRIVER-on:
+ ${INSTALL_PROGRAM} ${WRKSRC}/out/${BUILDTYPE}/chromedriver ${STAGEDIR}${DATADIR}
+
+do-test:
+ # Note 1: "npm install" will run before actual tests are executed
+ # Note 2: Xvfb or something similar is necessary for headless testing
+ # Note 3: unit test won't run. (robotjs doesn't build.)
+.for t in ${TEST_MODULES}
+ cd ${WRKSRC}/electron && \
+ ${SETENV} ${TEST_ENV} ELECTRON_OUT_DIR=${BUILDTYPE} \
+ npm run test -- --ci -g '${t}' || ${TRUE}
+.endfor
+
+.include <bsd.port.post.mk>
diff --git a/devel/electron5/Makefile.tests b/devel/electron5/Makefile.tests
new file mode 100644
index 000000000000..a3145ff9eb4f
--- /dev/null
+++ b/devel/electron5/Makefile.tests
@@ -0,0 +1,55 @@
+# $FreeBSD$
+
+TEST_MODULES= electron\ module \
+ app\ module \
+ default\ behavior \
+ autoUpdater\ module \
+ BrowserView\ module \
+ BrowserWindow\ with\ affinity\ module \
+ BrowserWindow\ module \
+ CallbacksRegistry\ module \
+ clipboard\ module \
+ contentTracing \
+ debugger\ module \
+ deprecations \
+ desktopCapturer \
+ dialog\ module \
+ globalShortcut\ module \
+ ipc\ main\ module \
+ ipc\ renderer\ module \
+ MenuItems \
+ Menu\ module \
+ nativeImage\ module \
+ netLog\ module \
+ net\ module \
+ Notification\ module \
+ powerMonitor \
+ powerSaveBlocker\ module \
+ process\ module \
+ protocol\ module \
+ remote\ module \
+ screen\ module \
+ session\ module \
+ shell\ module \
+ renderer\ nodeIntegrationInSubFrames \
+ systemPreferences\ module \
+ TouchBar\ module \
+ tray\ module \
+ View \
+ webContents\ module \
+ WebContentsView \
+ webFrame\ module \
+ webRequest\ module \
+ asar\ package \
+ chromium\ feature \
+ font\ fallback \
+ feature-string\ parsing \
+ modules\ support \
+ node\ feature \
+ security\ warnings \
+ bump-version\ utils \
+ bump-version\ script \
+ <webview>\ tag
+
+# crashReporter\ module \
+# inAppPurchase\ module \
diff --git a/devel/electron5/Makefile.version b/devel/electron5/Makefile.version
new file mode 100644
index 000000000000..213ed54f9118
--- /dev/null
+++ b/devel/electron5/Makefile.version
@@ -0,0 +1,4 @@
+# $FreeBSD$
+
+ELECTRON_VER= 5.0.13
+ELECTRON_VER_MAJOR= ${ELECTRON_VER:C/\..*//}
diff --git a/devel/electron5/distinfo b/devel/electron5/distinfo
new file mode 100644
index 000000000000..66a37b79e575
--- /dev/null
+++ b/devel/electron5/distinfo
@@ -0,0 +1,15 @@
+TIMESTAMP = 1576734588
+SHA256 (electron/chromium-73.0.3683.121.tar.xz) = 1adbc4b118c55cb24ca82e87bfa251dc5d6e46a1f946719b961c15c499e007df
+SIZE (electron/chromium-73.0.3683.121.tar.xz) = 1447269608
+SHA256 (electron/chromium-76.0.3809.132.tar.xz) = d54e4640b5e399d170dffbc5bcff65157eb1b29314b94b5d808f727d9ce45241
+SIZE (electron/chromium-76.0.3809.132.tar.xz) = 728899912
+SHA256 (electron/c0e0f34498afb3f363cc37cd2e9c1a020cb020d9) = 656d38e92fc26271822cc07add8993e926b367da135d349f88f30d3b7f5f3719
+SIZE (electron/c0e0f34498afb3f363cc37cd2e9c1a020cb020d9) = 4436810
+SHA256 (electron/electron-npm-modules-5.0.13.tar.xz) = fe7d5946412513d7930acfc22072791eba72f1284d0b96acaf057690ef76a020
+SIZE (electron/electron-npm-modules-5.0.13.tar.xz) = 15849284
+SHA256 (electron/a22de844e32a3f720d219e3911c3da3478039f89) = 6e331676d098a57c53c1250821dc47ed84c47f823901bf30c4704df90d8a34be
+SIZE (electron/a22de844e32a3f720d219e3911c3da3478039f89) = 17469927
+SHA256 (electron/electron-electron-v5.0.13_GH0.tar.gz) = 318e8ebd41c0ed3935c05b0b781e0a42525131fea1b15a8eeb94cde3136b20a4
+SIZE (electron/electron-electron-v5.0.13_GH0.tar.gz) = 4026612
+SHA256 (electron/electron-node-666c67e078bddc32f25409f4a929c1e9b5f47373_GH0.tar.gz) = e788406fc7818eeae9fa48d6d75e142655c890ccec5a8401e5fb17631194476a
+SIZE (electron/electron-node-666c67e078bddc32f25409f4a929c1e9b5f47373_GH0.tar.gz) = 71509702
diff --git a/devel/electron5/files/apply-electron-patches.sh b/devel/electron5/files/apply-electron-patches.sh
new file mode 100644
index 000000000000..300c8166f223
--- /dev/null
+++ b/devel/electron5/files/apply-electron-patches.sh
@@ -0,0 +1,20 @@
+#! /bin/sh
+
+PATH=/bin:/usr/bin:/usr/local/bin
+
+PATCH_CMD="git apply"
+#PATCH_FLAGS="--numstat --check" # for debugging
+PATCH_FLAGS="--verbose --reject"
+
+WRKSRC=$1
+PATCH_CONF=${WRKSRC}/electron/patches/common/config.json
+
+PATCHD_REPOD_PAIRS=$(sed -e '1d; $d; /^$/d; s/[",]//g; s/: */:/' "${PATCH_CONF}")
+for prp in ${PATCHD_REPOD_PAIRS}; do
+ pd=$(echo "${prp}" | awk -F: '{print $1}' | sed -e 's/src/./')
+ rd=$(echo "${prp}" | awk -F: '{print $2}' | sed -e 's/src/./')
+ (cd "${WRKSRC}/${rd}" && \
+ while read -r p; do
+ ${PATCH_CMD} ${PATCH_FLAGS} "${WRKSRC}/${pd}/${p}"
+ done < "${WRKSRC}/${pd}/.patches")
+done
diff --git a/devel/electron5/files/package-lock.json b/devel/electron5/files/package-lock.json
new file mode 100644
index 000000000000..4069b69a54ee
--- /dev/null
+++ b/devel/electron5/files/package-lock.json
@@ -0,0 +1,13356 @@
+{
+ "name": "electron",
+ "version": "5.0.13",
+ "lockfileVersion": 1,
+ "requires": true,
+ "dependencies": {
+ "@babel/code-frame": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0.tgz",
+ "integrity": "sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA==",
+ "dev": true,
+ "requires": {
+ "@babel/highlight": "^7.0.0"
+ }
+ },
+ "@babel/highlight": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0.tgz",
+ "integrity": "sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw==",
+ "dev": true,
+ "requires": {
+ "chalk": "^2.0.0",
+ "esutils": "^2.0.2",
+ "js-tokens": "^4.0.0"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "dev": true,
+ "requires": {
+ "color-convert": "^1.9.0"
+ }
+ },
+ "chalk": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz",
+ "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ }
+ },
+ "has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
+ "dev": true
+ },
+ "js-tokens": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
+ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^3.0.0"
+ }
+ }
+ }
+ },
+ "@iamstarkov/listr-update-renderer": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/@iamstarkov/listr-update-renderer/-/listr-update-renderer-0.4.1.tgz",
+ "integrity": "sha512-IJyxQWsYDEkf8C8QthBn5N8tIUR9V9je6j3sMIpAkonaadjbvxmRC6RAhpa3RKxndhNnU2M6iNbtJwd7usQYIA==",
+ "dev": true,
+ "requires": {
+ "chalk": "^1.1.3",
+ "cli-truncate": "^0.2.1",
+ "elegant-spinner": "^1.0.1",
+ "figures": "^1.7.0",
+ "indent-string": "^3.0.0",
+ "log-symbols": "^1.0.2",
+ "log-update": "^2.3.0",
+ "strip-ansi": "^3.0.1"
+ },
+ "dependencies": {
+ "figures": {
+ "version": "1.7.0",
+ "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz",
+ "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=",
+ "dev": true,
+ "requires": {
+ "escape-string-regexp": "^1.0.5",
+ "object-assign": "^4.1.0"
+ }
+ }
+ }
+ },
+ "@mrmlnc/readdir-enhanced": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz",
+ "integrity": "sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==",
+ "dev": true,
+ "requires": {
+ "call-me-maybe": "^1.0.1",
+ "glob-to-regexp": "^0.3.0"
+ }
+ },
+ "@nodelib/fs.stat": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.2.tgz",
+ "integrity": "sha512-yprFYuno9FtNsSHVlSWd+nRlmGoAbqbeCwOryP6sC/zoCjhpArcRMYp19EvpSUSizJAlsXEwJv+wcWS9XaXdMw==",
+ "dev": true
+ },
+ "@octokit/endpoint": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-3.1.1.tgz",
+ "integrity": "sha512-KPkoTvKwCTetu/UqonLs1pfwFO5HAqTv/Ksp9y4NAg//ZgUCpvJsT4Hrst85uEzJvkB8+LxKyR4Bfv2X8O4cmQ==",
+ "dev": true,
+ "requires": {
+ "deepmerge": "3.0.0",
+ "is-plain-object": "^2.0.4",
+ "universal-user-agent": "^2.0.1",
+ "url-template": "^2.0.8"
+ }
+ },
+ "@octokit/request": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/@octokit/request/-/request-2.2.1.tgz",
+ "integrity": "sha512-enwbVOl3vWWIUuEj0LJRq+mxWNyv95fa13GJitz7qGt/ycYCwtSoVssW3pCqvxS4GlJfHfO2OA+8czIcEF522A==",
+ "dev": true,
+ "requires": {
+ "@octokit/endpoint": "^3.1.1",
+ "is-plain-object": "^2.0.4",
+ "node-fetch": "^2.3.0",
+ "universal-user-agent": "^2.0.1"
+ },
+ "dependencies": {
+ "node-fetch": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.3.0.tgz",
+ "integrity": "sha512-MOd8pV3fxENbryESLgVIeaGKrdl+uaYhCSSVkjeOb/31/njTpcis5aWfdqgNlHIrKOLRbMnfPINPOML2CIFeXA==",
+ "dev": true
+ }
+ }
+ },
+ "@octokit/rest": {
+ "version": "16.6.1",
+ "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-16.6.1.tgz",
+ "integrity": "sha512-3F9c6ldPT6N123iGcuEZMfrE6BvL/Z4F+V80zbA3KS6vGWRm3RS4OblF6age+dCtlMsa99t13AeTmWD7Bsea0Q==",
+ "dev": true,
+ "requires": {
+ "@octokit/request": "2.2.1",
+ "before-after-hook": "^1.2.0",
+ "btoa-lite": "^1.0.0",
+ "lodash.get": "^4.4.2",
+ "lodash.pick": "^4.4.0",
+ "lodash.set": "^4.3.2",
+ "lodash.uniq": "^4.5.0",
+ "octokit-pagination-methods": "^1.1.0",
+ "universal-user-agent": "^2.0.0",
+ "url-template": "^2.0.8"
+ }
+ },
+ "@samverschueren/stream-to-observable": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/@samverschueren/stream-to-observable/-/stream-to-observable-0.3.0.tgz",
+ "integrity": "sha512-MI4Xx6LHs4Webyvi6EbspgyAb4D2Q2VtnCQ1blOJcoLS6mVa8lNN2rkIy1CVxfTUpoyIbCTkXES1rLXztFD1lg==",
+ "dev": true,
+ "requires": {
+ "any-observable": "^0.3.0"
+ }
+ },
+ "@sindresorhus/is": {
+ "version": "0.14.0",
+ "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz",
+ "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==",
+ "dev": true
+ },
+ "@szmarczak/http-timer": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz",
+ "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==",
+ "dev": true,
+ "requires": {
+ "defer-to-connect": "^1.0.1"
+ }
+ },
+ "@types/node": {
+ "version": "7.10.3",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-7.10.3.tgz",
+ "integrity": "sha512-HeyK+csRk7Khhg9krpMGJeT9pLzjsmiJFHYRzYpPv/dQ5tPclQsbvceiX/HKynRt/9lMLorWUYTbBHC3hRI4sg==",
+ "dev": true
+ },
+ "JSONStream": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.2.tgz",
+ "integrity": "sha1-wQI3G27Dp887hHygDCC7D85Mbeo=",
+ "dev": true,
+ "requires": {
+ "jsonparse": "^1.2.0",
+ "through": ">=2.2.7 <3"
+ }
+ },
+ "abab": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/abab/-/abab-1.0.4.tgz",
+ "integrity": "sha1-X6rZwsB/YN12dw9xzwJbYqY8/U4=",
+ "dev": true,
+ "optional": true
+ },
+ "abbrev": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
+ "integrity": "sha1-+PLIh60Qv2f2NPAFtph/7TF5qsg=",
+ "dev": true
+ },
+ "accepts": {
+ "version": "1.3.5",
+ "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.5.tgz",
+ "integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I=",
+ "dev": true,
+ "requires": {
+ "mime-types": "~2.1.18",
+ "negotiator": "0.6.1"
+ }
+ },
+ "acorn": {
+ "version": "4.0.13",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz",
+ "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=",
+ "dev": true
+ },
+ "acorn-globals": {
+ "version": "1.0.9",
+ "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-1.0.9.tgz",
+ "integrity": "sha1-VbtemGkVB7dFedBRNBMhfDgMVM8=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "acorn": "^2.1.0"
+ },
+ "dependencies": {
+ "acorn": {
+ "version": "2.7.0",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-2.7.0.tgz",
+ "integrity": "sha1-q259nYhqrKiwhbwzEreaGYQz8Oc=",
+ "dev": true,
+ "optional": true
+ }
+ }
+ },
+ "acorn-jsx": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-4.1.1.tgz",
+ "integrity": "sha512-JY+iV6r+cO21KtntVvFkD+iqjtdpRUpGqKWgfkCdZq1R+kbreEl8EcdcJR4SmiIgsIQT33s6QzheQ9a275Q8xw==",
+ "dev": true,
+ "requires": {
+ "acorn": "^5.0.3"
+ },
+ "dependencies": {
+ "acorn": {
+ "version": "5.7.3",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.3.tgz",
+ "integrity": "sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==",
+ "dev": true
+ }
+ }
+ },
+ "acorn-node": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/acorn-node/-/acorn-node-1.3.0.tgz",
+ "integrity": "sha512-efP54n3d1aLfjL2UMdaXa6DsswwzJeI5rqhbFvXMrKiJ6eJFpf+7R0zN7t8IC+XKn2YOAFAv6xbBNgHUkoHWLw==",
+ "dev": true,
+ "requires": {
+ "acorn": "^5.4.1",
+ "xtend": "^4.0.1"
+ },
+ "dependencies": {
+ "acorn": {
+ "version": "5.5.3",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.5.3.tgz",
+ "integrity": "sha512-jd5MkIUlbbmb07nXH0DT3y7rDVtkzDi4XZOUVWAer8ajmF/DTSSbl5oNFyDOl/OXA33Bl79+ypHhl2pN20VeOQ==",
+ "dev": true
+ }
+ }
+ },
+ "add-stream": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/add-stream/-/add-stream-1.0.0.tgz",
+ "integrity": "sha1-anmQQ3ynNtXhKI25K9MmbV9csqo=",
+ "dev": true
+ },
+ "address": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/address/-/address-1.0.3.tgz",
+ "integrity": "sha512-z55ocwKBRLryBs394Sm3ushTtBeg6VAeuku7utSoSnsJKvKcnXFIyC6vh27n3rXyxSgkJBBCAvyOn7gSUcTYjg==",
+ "dev": true
+ },
+ "ajv": {
+ "version": "5.5.2",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz",
+ "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=",
+ "dev": true,
+ "requires": {
+ "co": "^4.6.0",
+ "fast-deep-equal": "^1.0.0",
+ "fast-json-stable-stringify": "^2.0.0",
+ "json-schema-traverse": "^0.3.0"
+ }
+ },
+ "ajv-keywords": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.2.0.tgz",
+ "integrity": "sha1-6GuBnGAs+IIa1jdBNpjx3sAhhHo=",
+ "dev": true
+ },
+ "aliasify": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/aliasify/-/aliasify-2.1.0.tgz",
+ "integrity": "sha1-fDCCW5RQueYYW6J1M+r24gZ9S0I=",
+ "dev": true,
+ "requires": {
+ "browserify-transform-tools": "~1.7.0"
+ }
+ },
+ "align-text": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz",
+ "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "kind-of": "^3.0.2",
+ "longest": "^1.0.1",
+ "repeat-string": "^1.5.2"
+ }
+ },
+ "amdefine": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz",
+ "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=",
+ "dev": true
+ },
+ "ansi-align": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-2.0.0.tgz",
+ "integrity": "sha1-w2rsy6VjuJzrVW82kPCx2eNUf38=",
+ "dev": true,
+ "requires": {
+ "string-width": "^2.0.0"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
+ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
+ "dev": true
+ },
+ "is-fullwidth-code-point": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+ "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
+ "dev": true
+ },
+ "string-width": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
+ "integrity": "sha1-q5Pyeo3BPSjKyBXEYhQ6bZASrp4=",
+ "dev": true,
+ "requires": {
+ "is-fullwidth-code-point": "^2.0.0",
+ "strip-ansi": "^4.0.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
+ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^3.0.0"
+ }
+ }
+ }
+ },
+ "ansi-escapes": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.1.0.tgz",
+ "integrity": "sha512-UgAb8H9D41AQnu/PbWlCofQVcnV4Gs2bBJi9eZPxfU/hgglFh3SMDMENRIqdr7H6XFnXdoknctFByVsCOotTVw==",
+ "dev": true
+ },
+ "ansi-regex": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
+ "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
+ "dev": true
+ },
+ "ansi-styles": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
+ "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
+ "dev": true
+ },
+ "any-observable": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/any-observable/-/any-observable-0.3.0.tgz",
+ "integrity": "sha512-/FQM1EDkTsf63Ub2C6O7GuYFDsSXUwsaZDurV0np41ocwq0jthUAYCmhBX9f+KwlaCgIuWyr/4WlUQUBfKfZog==",
+ "dev": true
+ },
+ "anymatch": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz",
+ "integrity": "sha1-VT3Lj5HjyImEXf26NMd3IbkLnXo=",
+ "dev": true,
+ "requires": {
+ "micromatch": "^2.1.5",
+ "normalize-path": "^2.0.0"
+ }
+ },
+ "arch": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/arch/-/arch-2.1.1.tgz",
+ "integrity": "sha512-BLM56aPo9vLLFVa8+/+pJLnrZ7QGGTVHWsCwieAWT9o9K8UeGaQbzZbGoabWLOo2ksBCztoXdqBZBplqLDDCSg==",
+ "dev": true
+ },
+ "arg": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/arg/-/arg-2.0.0.tgz",
+ "integrity": "sha512-XxNTUzKnz1ctK3ZIcI2XUPlD96wbHP2nGqkPKpvk/HNRlPveYrXIVSTk9m3LcqOgDPg3B1nMvdV/K8wZd7PG4w==",
+ "dev": true
+ },
+ "argparse": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
+ "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
+ "dev": true,
+ "requires": {
+ "sprintf-js": "~1.0.2"
+ }
+ },
+ "args": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/args/-/args-4.0.0.tgz",
+ "integrity": "sha512-4b7lVF58nlo7sNtq8s2OueroOY/UHn0Nt/NVjsx9zn28u6yDVb9bQ/uy/5jKtHCbUDil4MlMyDLF5+OHEgnTug==",
+ "dev": true,
+ "requires": {
+ "camelcase": "5.0.0",
+ "chalk": "2.3.2",
+ "leven": "2.1.0",
+ "mri": "1.1.0"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "dev": true,
+ "requires": {
+ "color-convert": "^1.9.0"
+ }
+ },
+ "camelcase": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.0.0.tgz",
+ "integrity": "sha512-faqwZqnWxbxn+F1d399ygeamQNy3lPp/H9H6rNrqYh4FSVCtcY+3cub1MxA8o9mDd55mM8Aghuu/kuyYA6VTsA==",
+ "dev": true
+ },
+ "chalk": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.2.tgz",
+ "integrity": "sha512-ZM4j2/ld/YZDc3Ma8PgN7gyAk+kHMMMyzLNryCPGhWrsfAuDVeuid5bpRFTDgMH9JBK2lA4dyyAkkZYF/WcqDQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ }
+ },
+ "has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "5.4.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz",
+ "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^3.0.0"
+ }
+ }
+ }
+ },
+ "arr-diff": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz",
+ "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=",
+ "dev": true,
+ "requires": {
+ "arr-flatten": "^1.0.1"
+ }
+ },
+ "arr-flatten": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz",
+ "integrity": "sha1-NgSLv/TntH4TZkQxbJlmnqWukfE=",
+ "dev": true
+ },
+ "arr-union": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz",
+ "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=",
+ "dev": true
+ },
+ "array-filter": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-0.0.1.tgz",
+ "integrity": "sha1-fajPLiZijtcygDWB/SH2fKzS7uw=",
+ "dev": true
+ },
+ "array-find-index": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz",
+ "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=",
+ "dev": true
+ },
+ "array-ify": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz",
+ "integrity": "sha1-nlKHYrSpBmrRY6aWKjZEGOlibs4=",
+ "dev": true
+ },
+ "array-includes": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.0.3.tgz",
+ "integrity": "sha1-GEtI9i2S10UrsxsyMWXH+L0CJm0=",
+ "dev": true,
+ "requires": {
+ "define-properties": "^1.1.2",
+ "es-abstract": "^1.7.0"
+ }
+ },
+ "array-iterate": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/array-iterate/-/array-iterate-1.1.2.tgz",
+ "integrity": "sha512-1hWSHTIlG/8wtYD+PPX5AOBtKWngpDFjrsrHgZpe+JdgNGz0udYu6ZIkAa/xuenIUEqFv7DvE2Yr60jxweJSrQ==",
+ "dev": true
+ },
+ "array-map": {
+ "version": "0.0.0",
+ "resolved": "https://registry.npmjs.org/array-map/-/array-map-0.0.0.tgz",
+ "integrity": "sha1-iKK6tz0c97zVwbEYoAP2b2ZfpmI=",
+ "dev": true
+ },
+ "array-reduce": {
+ "version": "0.0.0",
+ "resolved": "https://registry.npmjs.org/array-reduce/-/array-reduce-0.0.0.tgz",
+ "integrity": "sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys=",
+ "dev": true
+ },
+ "array-union": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz",
+ "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=",
+ "dev": true,
+ "requires": {
+ "array-uniq": "^1.0.1"
+ }
+ },
+ "array-uniq": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz",
+ "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=",
+ "dev": true
+ },
+ "array-unique": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz",
+ "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=",
+ "dev": true
+ },
+ "arrify": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz",
+ "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=",
+ "dev": true
+ },
+ "asar": {
+ "version": "0.11.0",
+ "resolved": "https://registry.npmjs.org/asar/-/asar-0.11.0.tgz",
+ "integrity": "sha1-uSbnksMV+MBIxDNx4yWwnJenZGQ=",
+ "dev": true,
+ "requires": {
+ "chromium-pickle-js": "^0.1.0",
+ "commander": "^2.9.0",
+ "cuint": "^0.2.1",
+ "glob": "^6.0.4",
+ "minimatch": "^3.0.0",
+ "mkdirp": "^0.5.0",
+ "mksnapshot": "^0.3.0"
+ }
+ },
+ "asn1": {
+ "version": "0.2.4",
+ "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz",
+ "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==",
+ "dev": true,
+ "requires": {
+ "safer-buffer": "~2.1.0"
+ }
+ },
+ "asn1.js": {
+ "version": "4.10.1",
+ "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz",
+ "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==",
+ "dev": true,
+ "requires": {
+ "bn.js": "^4.0.0",
+ "inherits": "^2.0.1",
+ "minimalistic-assert": "^1.0.0"
+ }
+ },
+ "assert": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz",
+ "integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=",
+ "dev": true,
+ "requires": {
+ "util": "0.10.3"
+ }
+ },
+ "assert-plus": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
+ "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
+ "dev": true
+ },
+ "assign-symbols": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz",
+ "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=",
+ "dev": true
+ },
+ "astw": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/astw/-/astw-2.2.0.tgz",
+ "integrity": "sha1-e9QXhNMkk5h66yOba04cV6hzuRc=",
+ "dev": true,
+ "requires": {
+ "acorn": "^4.0.3"
+ }
+ },
+ "async": {
+ "version": "1.5.2",
+ "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz",
+ "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=",
+ "dev": true
+ },
+ "async-each": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz",
+ "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=",
+ "dev": true
+ },
+ "asynckit": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
+ "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=",
+ "dev": true
+ },
+ "atob": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz",
+ "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==",
+ "dev": true
+ },
+ "aws-sign2": {
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",
+ "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=",
+ "dev": true
+ },
+ "aws4": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz",
+ "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==",
+ "dev": true
+ },
+ "babel-code-frame": {
+ "version": "6.26.0",
+ "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz",
+ "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=",
+ "dev": true,
+ "requires": {
+ "chalk": "^1.1.3",
+ "esutils": "^2.0.2",
+ "js-tokens": "^3.0.2"
+ }
+ },
+ "bail": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/bail/-/bail-1.0.3.tgz",
+ "integrity": "sha512-1X8CnjFVQ+a+KW36uBNMTU5s8+v5FzeqrP7hTG5aTb4aPreSbZJlhwPon9VKMuEVgV++JM+SQrALY3kr7eswdg==",
+ "dev": true
+ },
+ "balanced-match": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
+ "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
+ "dev": true
+ },
+ "base": {
+ "version": "0.11.2",
+ "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz",
+ "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==",
+ "dev": true,
+ "requires": {
+ "cache-base": "^1.0.1",
+ "class-utils": "^0.3.5",
+ "component-emitter": "^1.2.1",
+ "define-property": "^1.0.0",
+ "isobject": "^3.0.1",
+ "mixin-deep": "^1.2.0",
+ "pascalcase": "^0.1.1"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
+ "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "^1.0.0"
+ }
+ },
+ "is-accessor-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
+ "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^6.0.0"
+ }
+ },
+ "is-data-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
+ "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^6.0.0"
+ }
+ },
+ "is-descriptor": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
+ "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+ "dev": true,
+ "requires": {
+ "is-accessor-descriptor": "^1.0.0",
+ "is-data-descriptor": "^1.0.0",
+ "kind-of": "^6.0.2"
+ }
+ },
+ "isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
+ "dev": true
+ },
+ "kind-of": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
+ "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==",
+ "dev": true
+ }
+ }
+ },
+ "base64-js": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.0.tgz",
+ "integrity": "sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw==",
+ "dev": true
+ },
+ "basic-auth": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.0.tgz",
+ "integrity": "sha1-AV2z81PgLlY3d1X5YnQuiYHnu7o=",
+ "dev": true,
+ "requires": {
+ "safe-buffer": "5.1.1"
+ },
+ "dependencies": {
+ "safe-buffer": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz",
+ "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==",
+ "dev": true
+ }
+ }
+ },
+ "bcrypt-pbkdf": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
+ "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "tweetnacl": "^0.14.3"
+ }
+ },
+ "before-after-hook": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-1.3.1.tgz",
+ "integrity": "sha512-BIjg60OP/sQvG7Q2L9Xkc77gyyFw1B4T73LIfZVQtXbutJinC1+t2HRl4qeR3EWAmY+tA6z9vpRi02q6ZXyluQ==",
+ "dev": true
+ },
+ "binary": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/binary/-/binary-0.3.0.tgz",
+ "integrity": "sha1-n2BVO8XOjDOG87VTz/R0Yq3sqnk=",
+ "dev": true,
+ "requires": {
+ "buffers": "~0.1.1",
+ "chainsaw": "~0.1.0"
+ }
+ },
+ "binary-extensions": {
+ "version": "1.11.0",
+ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.11.0.tgz",
+ "integrity": "sha1-RqoXUftqL5PuXmibsQh9SxTGwgU=",
+ "dev": true
+ },
+ "bl": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.2.tgz",
+ "integrity": "sha512-e8tQYnZodmebYDWGH7KMRvtzKXaJHx3BbilrgZCfvyLUYdKpK1t5PSPmpkny/SgiTSCnjfLW7v5rlONXVFkQEA==",
+ "dev": true,
+ "requires": {
+ "readable-stream": "^2.3.5",
+ "safe-buffer": "^5.1.1"
+ },
+ "dependencies": {
+ "isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
+ "dev": true
+ },
+ "readable-stream": {
+ "version": "2.3.6",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
+ "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
+ "dev": true,
+ "requires": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
+ }
+ },
+ "string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "dev": true,
+ "requires": {
+ "safe-buffer": "~5.1.0"
+ }
+ }
+ }
+ },
+ "bluebird": {
+ "version": "3.5.1",
+ "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz",
+ "integrity": "sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA==",
+ "dev": true
+ },
+ "bn.js": {
+ "version": "4.11.8",
+ "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz",
+ "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==",
+ "dev": true
+ },
+ "boolbase": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
+ "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=",
+ "dev": true
+ },
+ "boxen": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/boxen/-/boxen-1.3.0.tgz",
+ "integrity": "sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw==",
+ "dev": true,
+ "requires": {
+ "ansi-align": "^2.0.0",
+ "camelcase": "^4.0.0",
+ "chalk": "^2.0.1",
+ "cli-boxes": "^1.0.0",
+ "string-width": "^2.0.0",
+ "term-size": "^1.2.0",
+ "widest-line": "^2.0.0"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
+ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
+ "dev": true
+ },
+ "ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "dev": true,
+ "requires": {
+ "color-convert": "^1.9.0"
+ }
+ },
+ "camelcase": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz",
+ "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=",
+ "dev": true
+ },
+ "chalk": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz",
+ "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ }
+ },
+ "has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
+ "dev": true
+ },
+ "is-fullwidth-code-point": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+ "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
+ "dev": true
+ },
+ "string-width": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
+ "integrity": "sha1-q5Pyeo3BPSjKyBXEYhQ6bZASrp4=",
+ "dev": true,
+ "requires": {
+ "is-fullwidth-code-point": "^2.0.0",
+ "strip-ansi": "^4.0.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
+ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^3.0.0"
+ }
+ },
+ "supports-color": {
+ "version": "5.4.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz",
+ "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^3.0.0"
+ }
+ }
+ }
+ },
+ "brace-expansion": {
+ "version": "1.1.11",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "dev": true,
+ "requires": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "braces": {
+ "version": "1.8.5",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz",
+ "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=",
+ "dev": true,
+ "requires": {
+ "expand-range": "^1.8.1",
+ "preserve": "^0.2.0",
+ "repeat-element": "^1.1.2"
+ }
+ },
+ "brorand": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz",
+ "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=",
+ "dev": true
+ },
+ "browser-pack": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/browser-pack/-/browser-pack-6.1.0.tgz",
+ "integrity": "sha512-erYug8XoqzU3IfcU8fUgyHqyOXqIE4tUTTQ+7mqUjQlvnXkOO6OlT9c/ZoJVHYoAaqGxr09CN53G7XIsO4KtWA==",
+ "dev": true,
+ "requires": {
+ "JSONStream": "^1.0.3",
+ "combine-source-map": "~0.8.0",
+ "defined": "^1.0.0",
+ "safe-buffer": "^5.1.1",
+ "through2": "^2.0.0",
+ "umd": "^3.0.0"
+ }
+ },
+ "browser-resolve": {
+ "version": "1.11.2",
+ "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.2.tgz",
+ "integrity": "sha1-j/CbCixCFxihBRwmCzLkj0QpOM4=",
+ "dev": true,
+ "requires": {
+ "resolve": "1.1.7"
+ },
+ "dependencies": {
+ "resolve": {
+ "version": "1.1.7",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz",
+ "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=",
+ "dev": true
+ }
+ }
+ },
+ "browserify": {
+ "version": "13.3.0",
+ "resolved": "https://registry.npmjs.org/browserify/-/browserify-13.3.0.tgz",
+ "integrity": "sha1-tanJAgJD8McORnW+yCI7xifkFc4=",
+ "dev": true,
+ "requires": {
+ "JSONStream": "^1.0.3",
+ "assert": "^1.4.0",
+ "browser-pack": "^6.0.1",
+ "browser-resolve": "^1.11.0",
+ "browserify-zlib": "~0.1.2",
+ "buffer": "^4.1.0",
+ "cached-path-relative": "^1.0.0",
+ "concat-stream": "~1.5.1",
+ "console-browserify": "^1.1.0",
+ "constants-browserify": "~1.0.0",
+ "crypto-browserify": "^3.0.0",
+ "defined": "^1.0.0",
+ "deps-sort": "^2.0.0",
+ "domain-browser": "~1.1.0",
+ "duplexer2": "~0.1.2",
+ "events": "~1.1.0",
+ "glob": "^7.1.0",
+ "has": "^1.0.0",
+ "htmlescape": "^1.1.0",
+ "https-browserify": "~0.0.0",
+ "inherits": "~2.0.1",
+ "insert-module-globals": "^7.0.0",
+ "labeled-stream-splicer": "^2.0.0",
+ "module-deps": "^4.0.8",
+ "os-browserify": "~0.1.1",
+ "parents": "^1.0.1",
+ "path-browserify": "~0.0.0",
+ "process": "~0.11.0",
+ "punycode": "^1.3.2",
+ "querystring-es3": "~0.2.0",
+ "read-only-stream": "^2.0.0",
+ "readable-stream": "^2.0.2",
+ "resolve": "^1.1.4",
+ "shasum": "^1.0.0",
+ "shell-quote": "^1.6.1",
+ "stream-browserify": "^2.0.0",
+ "stream-http": "^2.0.0",
+ "string_decoder": "~0.10.0",
+ "subarg": "^1.0.0",
+ "syntax-error": "^1.1.1",
+ "through2": "^2.0.0",
+ "timers-browserify": "^1.0.1",
+ "tty-browserify": "~0.0.0",
+ "url": "~0.11.0",
+ "util": "~0.10.1",
+ "vm-browserify": "~0.0.1",
+ "xtend": "^4.0.0"
+ },
+ "dependencies": {
+ "glob": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
+ "integrity": "sha1-wZyd+aAocC1nhhI4SmVSQExjbRU=",
+ "dev": true,
+ "requires": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.0.4",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ }
+ },
+ "isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
+ "dev": true
+ },
+ "readable-stream": {
+ "version": "2.3.6",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
+ "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
+ "dev": true,
+ "requires": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
+ },
+ "dependencies": {
+ "string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "dev": true,
+ "requires": {
+ "safe-buffer": "~5.1.0"
+ }
+ }
+ }
+ }
+ }
+ },
+ "browserify-aes": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz",
+ "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==",
+ "dev": true,
+ "requires": {
+ "buffer-xor": "^1.0.3",
+ "cipher-base": "^1.0.0",
+ "create-hash": "^1.1.0",
+ "evp_bytestokey": "^1.0.3",
+ "inherits": "^2.0.1",
+ "safe-buffer": "^5.0.1"
+ }
+ },
+ "browserify-cipher": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz",
+ "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==",
+ "dev": true,
+ "requires": {
+ "browserify-aes": "^1.0.4",
+ "browserify-des": "^1.0.0",
+ "evp_bytestokey": "^1.0.0"
+ }
+ },
+ "browserify-des": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.1.tgz",
+ "integrity": "sha512-zy0Cobe3hhgpiOM32Tj7KQ3Vl91m0njwsjzZQK1L+JDf11dzP9qIvjreVinsvXrgfjhStXwUWAEpB9D7Gwmayw==",
+ "dev": true,
+ "requires": {
+ "cipher-base": "^1.0.1",
+ "des.js": "^1.0.0",
+ "inherits": "^2.0.1"
+ }
+ },
+ "browserify-rsa": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz",
+ "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=",
+ "dev": true,
+ "requires": {
+ "bn.js": "^4.1.0",
+ "randombytes": "^2.0.1"
+ }
+ },
+ "browserify-sign": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz",
+ "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=",
+ "dev": true,
+ "requires": {
+ "bn.js": "^4.1.1",
+ "browserify-rsa": "^4.0.0",
+ "create-hash": "^1.1.0",
+ "create-hmac": "^1.1.2",
+ "elliptic": "^6.0.0",
+ "inherits": "^2.0.1",
+ "parse-asn1": "^5.0.0"
+ }
+ },
+ "browserify-transform-tools": {
+ "version": "1.7.0",
+ "resolved": "https://registry.npmjs.org/browserify-transform-tools/-/browserify-transform-tools-1.7.0.tgz",
+ "integrity": "sha1-g+J3Ih9jJZvtLn6yooOpcKUB9MQ=",
+ "dev": true,
+ "requires": {
+ "falafel": "^2.0.0",
+ "through": "^2.3.7"
+ }
+ },
+ "browserify-zlib": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.1.4.tgz",
+ "integrity": "sha1-uzX4pRn2AOD6a4SFJByXnQFB+y0=",
+ "dev": true,
+ "requires": {
+ "pako": "~0.2.0"
+ }
+ },
+ "btoa-lite": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/btoa-lite/-/btoa-lite-1.0.0.tgz",
+ "integrity": "sha1-M3dm2hWAEhD92VbCLpxokaudAzc=",
+ "dev": true
+ },
+ "buffer": {
+ "version": "4.9.1",
+ "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz",
+ "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=",
+ "dev": true,
+ "requires": {
+ "base64-js": "^1.0.2",
+ "ieee754": "^1.1.4",
+ "isarray": "^1.0.0"
+ },
+ "dependencies": {
+ "isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
+ "dev": true
+ }
+ }
+ },
+ "buffer-alloc": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz",
+ "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==",
+ "dev": true,
+ "requires": {
+ "buffer-alloc-unsafe": "^1.1.0",
+ "buffer-fill": "^1.0.0"
+ }
+ },
+ "buffer-alloc-unsafe": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz",
+ "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==",
+ "dev": true
+ },
+ "buffer-fill": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz",
+ "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw=",
+ "dev": true
+ },
+ "buffer-from": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.0.0.tgz",
+ "integrity": "sha512-83apNb8KK0Se60UE1+4Ukbe3HbfELJ6UlI4ldtOGs7So4KD26orJM8hIY9lxdzP+UpItH1Yh/Y8GUvNFWFFRxA==",
+ "dev": true
+ },
+ "buffer-xor": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz",
+ "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=",
+ "dev": true
+ },
+ "buffers": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz",
+ "integrity": "sha1-skV5w77U1tOWru5tmorn9Ugqt7s=",
+ "dev": true
+ },
+ "builtin-modules": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz",
+ "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=",
+ "dev": true
+ },
+ "builtin-status-codes": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz",
+ "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=",
+ "dev": true
+ },
+ "bytes": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz",
+ "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=",
+ "dev": true
+ },
+ "cache-base": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz",
+ "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==",
+ "dev": true,
+ "requires": {
+ "collection-visit": "^1.0.0",
+ "component-emitter": "^1.2.1",
+ "get-value": "^2.0.6",
+ "has-value": "^1.0.0",
+ "isobject": "^3.0.1",
+ "set-value": "^2.0.0",
+ "to-object-path": "^0.3.0",
+ "union-value": "^1.0.0",
+ "unset-value": "^1.0.0"
+ },
+ "dependencies": {
+ "isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
+ "dev": true
+ }
+ }
+ },
+ "cacheable-request": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.0.0.tgz",
+ "integrity": "sha512-2N7AmszH/WPPpl5Z3XMw1HAP+8d+xugnKQAeKvxFZ/04dbT/CAznqwbl+7eSr3HkwdepNwtb2yx3CAMQWvG01Q==",
+ "dev": true,
+ "requires": {
+ "clone-response": "^1.0.2",
+ "get-stream": "^4.0.0",
+ "http-cache-semantics": "^4.0.0",
+ "keyv": "^3.0.0",
+ "lowercase-keys": "^1.0.1",
+ "normalize-url": "^3.1.0",
+ "responselike": "^1.0.2"
+ },
+ "dependencies": {
+ "get-stream": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz",
+ "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==",
+ "dev": true,
+ "requires": {
+ "pump": "^3.0.0"
+ }
+ },
+ "pump": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
+ "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
+ "dev": true,
+ "requires": {
+ "end-of-stream": "^1.1.0",
+ "once": "^1.3.1"
+ }
+ }
+ }
+ },
+ "cached-path-relative": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/cached-path-relative/-/cached-path-relative-1.0.1.tgz",
+ "integrity": "sha1-0JxLUoAKpMB44t2BqGmqyQ0uVOc=",
+ "dev": true
+ },
+ "call-me-maybe": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz",
+ "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms=",
+ "dev": true
+ },
+ "caller-path": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz",
+ "integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=",
+ "dev": true,
+ "requires": {
+ "callsites": "^0.2.0"
+ }
+ },
+ "callsites": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz",
+ "integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=",
+ "dev": true
+ },
+ "camelcase": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz",
+ "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=",
+ "dev": true,
+ "optional": true
+ },
+ "camelcase-keys": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-4.2.0.tgz",
+ "integrity": "sha1-oqpfsa9oh1glnDLBQUJteJI7m3c=",
+ "dev": true,
+ "requires": {
+ "camelcase": "^4.1.0",
+ "map-obj": "^2.0.0",
+ "quick-lru": "^1.0.0"
+ },
+ "dependencies": {
+ "camelcase": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz",
+ "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=",
+ "dev": true
+ }
+ }
+ },
+ "capture-stack-trace": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.1.tgz",
+ "integrity": "sha512-mYQLZnx5Qt1JgB1WEiMCf2647plpGeQ2NMR/5L0HNZzGQo4fuSPnK+wjfPnKZV0aiJDgzmWqqkV/g7JD+DW0qw==",
+ "dev": true
+ },
+ "caseless": {
+ "version": "0.12.0",
+ "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
+ "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=",
+ "dev": true
+ },
+ "ccount": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/ccount/-/ccount-1.0.3.tgz",
+ "integrity": "sha512-Jt9tIBkRc9POUof7QA/VwWd+58fKkEEfI+/t1/eOlxKM7ZhrczNzMFefge7Ai+39y1pR/pP6cI19guHy3FSLmw==",
+ "dev": true
+ },
+ "center-align": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz",
+ "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "align-text": "^0.1.3",
+ "lazy-cache": "^1.0.3"
+ }
+ },
+ "chainsaw": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/chainsaw/-/chainsaw-0.1.0.tgz",
+ "integrity": "sha1-XqtQsor+WAdNDVgpE4iCi15fvJg=",
+ "dev": true,
+ "requires": {
+ "traverse": ">=0.3.0 <0.4"
+ }
+ },
+ "chalk": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
+ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^2.2.1",
+ "escape-string-regexp": "^1.0.2",
+ "has-ansi": "^2.0.0",
+ "strip-ansi": "^3.0.0",
+ "supports-color": "^2.0.0"
+ },
+ "dependencies": {
+ "supports-color": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
+ "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
+ "dev": true
+ }
+ }
+ },
+ "character-entities": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.2.tgz",
+ "integrity": "sha512-sMoHX6/nBiy3KKfC78dnEalnpn0Az0oSNvqUWYTtYrhRI5iUIYsROU48G+E+kMFQzqXaJ8kHJZ85n7y6/PHgwQ==",
+ "dev": true
+ },
+ "character-entities-html4": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-1.1.2.tgz",
+ "integrity": "sha512-sIrXwyna2+5b0eB9W149izTPJk/KkJTg6mEzDGibwBUkyH1SbDa+nf515Ppdi3MaH35lW0JFJDWeq9Luzes1Iw==",
+ "dev": true
+ },
+ "character-entities-legacy": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.2.tgz",
+ "integrity": "sha512-9NB2VbXtXYWdXzqrvAHykE/f0QJxzaKIpZ5QzNZrrgQ7Iyxr2vnfS8fCBNVW9nUEZE0lo57nxKRqnzY/dKrwlA==",
+ "dev": true
+ },
+ "character-reference-invalid": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.2.tgz",
+ "integrity": "sha512-7I/xceXfKyUJmSAn/jw8ve/9DyOP7XxufNYLI9Px7CmsKgEUaZLUTax6nZxGQtaoiZCjpu6cHPj20xC/vqRReQ==",
+ "dev": true
+ },
+ "chardet": {
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz",
+ "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==",
+ "dev": true
+ },
+ "check-for-leaks": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/check-for-leaks/-/check-for-leaks-1.2.0.tgz",
+ "integrity": "sha1-6jtQFk6XV3kzLGKBMZX/jGr4Jsw=",
+ "dev": true,
+ "requires": {
+ "anymatch": "^1.3.0",
+ "minimist": "^1.2.0",
+ "parse-gitignore": "^0.4.0",
+ "walk-sync": "^0.3.2"
+ }
+ },
+ "checksum": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/checksum/-/checksum-0.1.1.tgz",
+ "integrity": "sha1-3GUn1MkL6FYNvR7Uzs8yl9Uo6ek=",
+ "dev": true,
+ "requires": {
+ "optimist": "~0.3.5"
+ }
+ },
+ "cheerio": {
+ "version": "0.22.0",
+ "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-0.22.0.tgz",
+ "integrity": "sha1-qbqoYKP5tZWmuBsahocxIe06Jp4=",
+ "dev": true,
+ "requires": {
+ "css-select": "~1.2.0",
+ "dom-serializer": "~0.1.0",
+ "entities": "~1.1.1",
+ "htmlparser2": "^3.9.1",
+ "lodash.assignin": "^4.0.9",
+ "lodash.bind": "^4.1.4",
+ "lodash.defaults": "^4.0.1",
+ "lodash.filter": "^4.4.0",
+ "lodash.flatten": "^4.2.0",
+ "lodash.foreach": "^4.3.0",
+ "lodash.map": "^4.4.0",
+ "lodash.merge": "^4.4.0",
+ "lodash.pick": "^4.2.1",
+ "lodash.reduce": "^4.4.0",
+ "lodash.reject": "^4.4.0",
+ "lodash.some": "^4.4.0"
+ }
+ },
+ "chokidar": {
+ "version": "1.7.0",
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz",
+ "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=",
+ "dev": true,
+ "requires": {
+ "anymatch": "^1.3.0",
+ "async-each": "^1.0.0",
+ "fsevents": "^1.0.0",
+ "glob-parent": "^2.0.0",
+ "inherits": "^2.0.1",
+ "is-binary-path": "^1.0.0",
+ "is-glob": "^2.0.0",
+ "path-is-absolute": "^1.0.0",
+ "readdirp": "^2.0.0"
+ }
+ },
+ "chownr": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.0.1.tgz",
+ "integrity": "sha1-4qdQQqlVGQi+vSW4Uj1fl2nXkYE=",
+ "dev": true
+ },
+ "chromium-pickle-js": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/chromium-pickle-js/-/chromium-pickle-js-0.1.0.tgz",
+ "integrity": "sha1-HUixB9ghJqLz4hHC6iX4A7pVGyE=",
+ "dev": true
+ },
+ "ci-info": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.1.3.tgz",
+ "integrity": "sha512-SK/846h/Rcy8q9Z9CAwGBLfCJ6EkjJWdpelWDufQpqVDYq2Wnnv8zlSO6AMQap02jvhVruKKpEtQOufo3pFhLg==",
+ "dev": true
+ },
+ "cipher-base": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz",
+ "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==",
+ "dev": true,
+ "requires": {
+ "inherits": "^2.0.1",
+ "safe-buffer": "^5.0.1"
+ }
+ },
+ "circular-json": {
+ "version": "0.3.3",
+ "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz",
+ "integrity": "sha1-gVyZ6oT2gJUp0vRXkb34JxE1LWY=",
+ "dev": true
+ },
+ "clang-format": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/clang-format/-/clang-format-1.2.3.tgz",
+ "integrity": "sha512-x90Hac4ERacGDcZSvHKK58Ga0STuMD+Doi5g0iG2zf7wlJef5Huvhs/3BvMRFxwRYyYSdl6mpQNrtfMxE8MQzw==",
+ "dev": true,
+ "requires": {
+ "async": "^1.5.2",
+ "glob": "^7.0.0",
+ "resolve": "^1.1.6"
+ },
+ "dependencies": {
+ "glob": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
+ "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
+ "dev": true,
+ "requires": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.0.4",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ }
+ }
+ }
+ },
+ "class-utils": {
+ "version": "0.3.6",
+ "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz",
+ "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==",
+ "dev": true,
+ "requires": {
+ "arr-union": "^3.1.0",
+ "define-property": "^0.2.5",
+ "isobject": "^3.0.0",
+ "static-extend": "^0.1.1"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "^0.1.0"
+ }
+ },
+ "isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
+ "dev": true
+ }
+ }
+ },
+ "clean-deep": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/clean-deep/-/clean-deep-2.0.2.tgz",
+ "integrity": "sha1-d83ZTmsmZkTw95Cy9XbL7wOOJ8E=",
+ "dev": true,
+ "requires": {
+ "lodash.isempty": "^4.4.0",
+ "lodash.isplainobject": "^4.0.6",
+ "lodash.transform": "^4.6.0"
+ }
+ },
+ "cli-boxes": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-1.0.0.tgz",
+ "integrity": "sha1-T6kXw+WclKAEzWH47lCdplFocUM=",
+ "dev": true
+ },
+ "cli-cursor": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz",
+ "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=",
+ "dev": true,
+ "requires": {
+ "restore-cursor": "^1.0.1"
+ }
+ },
+ "cli-spinners": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-0.1.2.tgz",
+ "integrity": "sha1-u3ZNiOGF+54eaiofGXcjGPYF4xw=",
+ "dev": true
+ },
+ "cli-truncate": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-0.2.1.tgz",
+ "integrity": "sha1-nxXPuwcFAFNpIWxiasfQWrkN1XQ=",
+ "dev": true,
+ "requires": {
+ "slice-ansi": "0.0.4",
+ "string-width": "^1.0.1"
+ },
+ "dependencies": {
+ "slice-ansi": {
+ "version": "0.0.4",
+ "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz",
+ "integrity": "sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU=",
+ "dev": true
+ }
+ }
+ },
+ "cli-width": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz",
+ "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=",
+ "dev": true
+ },
+ "clipboardy": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/clipboardy/-/clipboardy-1.2.3.tgz",
+ "integrity": "sha512-2WNImOvCRe6r63Gk9pShfkwXsVtKCroMAevIbiae021mS850UkWPbevxsBz3tnvjZIEGvlwaqCPsw+4ulzNgJA==",
+ "dev": true,
+ "requires": {
+ "arch": "^2.1.0",
+ "execa": "^0.8.0"
+ },
+ "dependencies": {
+ "execa": {
+ "version": "0.8.0",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-0.8.0.tgz",
+ "integrity": "sha1-2NdrvBtVIX7RkP1t1J08d07PyNo=",
+ "dev": true,
+ "requires": {
+ "cross-spawn": "^5.0.1",
+ "get-stream": "^3.0.0",
+ "is-stream": "^1.1.0",
+ "npm-run-path": "^2.0.0",
+ "p-finally": "^1.0.0",
+ "signal-exit": "^3.0.0",
+ "strip-eof": "^1.0.0"
+ }
+ }
+ }
+ },
+ "cliui": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz",
+ "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "center-align": "^0.1.1",
+ "right-align": "^0.1.1",
+ "wordwrap": "0.0.2"
+ },
+ "dependencies": {
+ "wordwrap": {
+ "version": "0.0.2",
+ "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz",
+ "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=",
+ "dev": true,
+ "optional": true
+ }
+ }
+ },
+ "clone": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz",
+ "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=",
+ "dev": true
+ },
+ "clone-response": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz",
+ "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=",
+ "dev": true,
+ "requires": {
+ "mimic-response": "^1.0.0"
+ }
+ },
+ "co": {
+ "version": "4.6.0",
+ "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
+ "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=",
+ "dev": true
+ },
+ "code-point-at": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
+ "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=",
+ "dev": true
+ },
+ "collapse-white-space": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-1.0.4.tgz",
+ "integrity": "sha512-YfQ1tAUZm561vpYD+5eyWN8+UsceQbSrqqlc/6zDY2gtAE+uZLSdkkovhnGpmCThsvKBFakq4EdY/FF93E8XIw==",
+ "dev": true
+ },
+ "collection-visit": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz",
+ "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=",
+ "dev": true,
+ "requires": {
+ "map-visit": "^1.0.0",
+ "object-visit": "^1.0.0"
+ }
+ },
+ "color-convert": {
+ "version": "1.9.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz",
+ "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==",
+ "dev": true,
+ "requires": {
+ "color-name": "^1.1.1"
+ }
+ },
+ "color-name": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
+ "dev": true
+ },
+ "colors": {
+ "version": "1.2.5",
+ "resolved": "https://registry.npmjs.org/colors/-/colors-1.2.5.tgz",
+ "integrity": "sha512-erNRLao/Y3Fv54qUa0LBB+//Uf3YwMUmdJinN20yMXm9zdKKqH9wt7R9IIVZ+K7ShzfpLV/Zg8+VyrBJYB4lpg==",
+ "dev": true
+ },
+ "combine-source-map": {
+ "version": "0.8.0",
+ "resolved": "https://registry.npmjs.org/combine-source-map/-/combine-source-map-0.8.0.tgz",
+ "integrity": "sha1-pY0N8ELBhvz4IqjoAV9UUNLXmos=",
+ "dev": true,
+ "requires": {
+ "convert-source-map": "~1.1.0",
+ "inline-source-map": "~0.6.0",
+ "lodash.memoize": "~3.0.3",
+ "source-map": "~0.5.3"
+ }
+ },
+ "combined-stream": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz",
+ "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=",
+ "dev": true,
+ "requires": {
+ "delayed-stream": "~1.0.0"
+ }
+ },
+ "commander": {
+ "version": "2.15.1",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz",
+ "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==",
+ "dev": true
+ },
+ "compare-func": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/compare-func/-/compare-func-1.3.2.tgz",
+ "integrity": "sha1-md0LpFfh+bxyKxLAjsM+6rMfpkg=",
+ "dev": true,
+ "requires": {
+ "array-ify": "^1.0.0",
+ "dot-prop": "^3.0.0"
+ }
+ },
+ "component-emitter": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz",
+ "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=",
+ "dev": true
+ },
+ "compressible": {
+ "version": "2.0.14",
+ "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.14.tgz",
+ "integrity": "sha1-MmxfUH+7BV9UEWeCuWmoG2einac=",
+ "dev": true,
+ "requires": {
+ "mime-db": ">= 1.34.0 < 2"
+ },
+ "dependencies": {
+ "mime-db": {
+ "version": "1.35.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.35.0.tgz",
+ "integrity": "sha512-JWT/IcCTsB0Io3AhWUMjRqucrHSPsSf2xKLaRldJVULioggvkJvggZ3VXNNSRkCddE6D+BUI4HEIZIA2OjwIvg==",
+ "dev": true
+ }
+ }
+ },
+ "compression": {
+ "version": "1.7.3",
+ "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.3.tgz",
+ "integrity": "sha512-HSjyBG5N1Nnz7tF2+O7A9XUhyjru71/fwgNb7oIsEVHR0WShfs2tIS/EySLgiTe98aOK18YDlMXpzjCXY/n9mg==",
+ "dev": true,
+ "requires": {
+ "accepts": "~1.3.5",
+ "bytes": "3.0.0",
+ "compressible": "~2.0.14",
+ "debug": "2.6.9",
+ "on-headers": "~1.0.1",
+ "safe-buffer": "5.1.2",
+ "vary": "~1.1.2"
+ }
+ },
+ "concat-map": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+ "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
+ "dev": true
+ },
+ "concat-stream": {
+ "version": "1.5.2",
+ "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.5.2.tgz",
+ "integrity": "sha1-cIl4Yk2FavQaWnQd790mHadSwmY=",
+ "dev": true,
+ "requires": {
+ "inherits": "~2.0.1",
+ "readable-stream": "~2.0.0",
+ "typedarray": "~0.0.5"
+ },
+ "dependencies": {
+ "isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
+ "dev": true
+ },
+ "process-nextick-args": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz",
+ "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=",
+ "dev": true
+ },
+ "readable-stream": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz",
+ "integrity": "sha1-j5A0HmilPMySh4jaz80Rs265t44=",
+ "dev": true,
+ "requires": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.1",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~1.0.6",
+ "string_decoder": "~0.10.x",
+ "util-deprecate": "~1.0.1"
+ }
+ }
+ }
+ },
+ "configstore": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/configstore/-/configstore-3.1.2.tgz",
+ "integrity": "sha512-vtv5HtGjcYUgFrXc6Kx747B83MRRVS5R1VTEQoXvuP+kMI+if6uywV0nDGoiydJRy4yk7h9od5Og0kxx4zUXmw==",
+ "dev": true,
+ "requires": {
+ "dot-prop": "^4.1.0",
+ "graceful-fs": "^4.1.2",
+ "make-dir": "^1.0.0",
+ "unique-string": "^1.0.0",
+ "write-file-atomic": "^2.0.0",
+ "xdg-basedir": "^3.0.0"
+ },
+ "dependencies": {
+ "dot-prop": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.0.tgz",
+ "integrity": "sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ==",
+ "dev": true,
+ "requires": {
+ "is-obj": "^1.0.0"
+ }
+ }
+ }
+ },
+ "console-browserify": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz",
+ "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=",
+ "dev": true,
+ "requires": {
+ "date-now": "^0.1.4"
+ }
+ },
+ "constants-browserify": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz",
+ "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=",
+ "dev": true
+ },
+ "contains-path": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz",
+ "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=",
+ "dev": true
+ },
+ "content-type": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz",
+ "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==",
+ "dev": true
+ },
+ "conventional-changelog": {
+ "version": "1.1.24",
+ "resolved": "https://registry.npmjs.org/conventional-changelog/-/conventional-changelog-1.1.24.tgz",
+ "integrity": "sha512-2WcSUst4Y3Z4hHvoMTWXMJr/DmgVdLiMOVY1Kak2LfFz+GIz2KDp5naqbFesYbfXPmaZ5p491dO0FWZIJoJw1Q==",
+ "dev": true,
+ "requires": {
+ "conventional-changelog-angular": "^1.6.6",
+ "conventional-changelog-atom": "^0.2.8",
+ "conventional-changelog-codemirror": "^0.3.8",
+ "conventional-changelog-core": "^2.0.11",
+ "conventional-changelog-ember": "^0.3.12",
+ "conventional-changelog-eslint": "^1.0.9",
+ "conventional-changelog-express": "^0.3.6",
+ "conventional-changelog-jquery": "^0.1.0",
+ "conventional-changelog-jscs": "^0.1.0",
+ "conventional-changelog-jshint": "^0.3.8",
+ "conventional-changelog-preset-loader": "^1.1.8"
+ }
+ },
+ "conventional-changelog-angular": {
+ "version": "1.6.6",
+ "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-1.6.6.tgz",
+ "integrity": "sha512-suQnFSqCxRwyBxY68pYTsFkG0taIdinHLNEAX5ivtw8bCRnIgnpvcHmlR/yjUyZIrNPYAoXlY1WiEKWgSE4BNg==",
+ "dev": true,
+ "requires": {
+ "compare-func": "^1.3.1",
+ "q": "^1.5.1"
+ }
+ },
+ "conventional-changelog-atom": {
+ "version": "0.2.8",
+ "resolved": "https://registry.npmjs.org/conventional-changelog-atom/-/conventional-changelog-atom-0.2.8.tgz",
+ "integrity": "sha512-8pPZqhMbrnltNBizjoDCb/Sz85KyUXNDQxuAEYAU5V/eHn0okMBVjqc8aHWYpHrytyZWvMGbayOlDv7i8kEf6g==",
+ "dev": true,
+ "requires": {
+ "q": "^1.5.1"
+ }
+ },
+ "conventional-changelog-cli": {
+ "version": "1.3.22",
+ "resolved": "https://registry.npmjs.org/conventional-changelog-cli/-/conventional-changelog-cli-1.3.22.tgz",
+ "integrity": "sha512-pnjdIJbxjkZ5VdAX/H1wndr1G10CY8MuZgnXuJhIHglOXfIrXygb7KZC836GW9uo1u8PjEIvIw/bKX0lOmOzZg==",
+ "dev": true,
+ "requires": {
+ "add-stream": "^1.0.0",
+ "conventional-changelog": "^1.1.24",
+ "lodash": "^4.2.1",
+ "meow": "^4.0.0",
+ "tempfile": "^1.1.1"
+ }
+ },
+ "conventional-changelog-codemirror": {
+ "version": "0.3.8",
+ "resolved": "https://registry.npmjs.org/conventional-changelog-codemirror/-/conventional-changelog-codemirror-0.3.8.tgz",
+ "integrity": "sha512-3HFZKtBXTaUCHvz7ai6nk2+psRIkldDoNzCsom0egDtVmPsvvHZkzjynhdQyULfacRSsBTaiQ0ol6nBOL4dDiQ==",
+ "dev": true,
+ "requires": {
+ "q": "^1.5.1"
+ }
+ },
+ "conventional-changelog-core": {
+ "version": "2.0.11",
+ "resolved": "https://registry.npmjs.org/conventional-changelog-core/-/conventional-changelog-core-2.0.11.tgz",
+ "integrity": "sha512-HvTE6RlqeEZ/NFPtQeFLsIDOLrGP3bXYr7lFLMhCVsbduF1MXIe8OODkwMFyo1i9ku9NWBwVnVn0jDmIFXjDRg==",
+ "dev": true,
+ "requires": {
+ "conventional-changelog-writer": "^3.0.9",
+ "conventional-commits-parser": "^2.1.7",
+ "dateformat": "^3.0.0",
+ "get-pkg-repo": "^1.0.0",
+ "git-raw-commits": "^1.3.6",
+ "git-remote-origin-url": "^2.0.0",
+ "git-semver-tags": "^1.3.6",
+ "lodash": "^4.2.1",
+ "normalize-package-data": "^2.3.5",
+ "q": "^1.5.1",
+ "read-pkg": "^1.1.0",
+ "read-pkg-up": "^1.0.1",
+ "through2": "^2.0.0"
+ }
+ },
+ "conventional-changelog-ember": {
+ "version": "0.3.12",
+ "resolved": "https://registry.npmjs.org/conventional-changelog-ember/-/conventional-changelog-ember-0.3.12.tgz",
+ "integrity": "sha512-mmJzA7uzbrOqeF89dMMi6z17O07ORTXlTMArnLG9ZTX4oLaKNolUlxFUFlFm9JUoVWajVpaHQWjxH1EOQ+ARoQ==",
+ "dev": true,
+ "requires": {
+ "q": "^1.5.1"
+ }
+ },
+ "conventional-changelog-eslint": {
+ "version": "1.0.9",
+ "resolved": "https://registry.npmjs.org/conventional-changelog-eslint/-/conventional-changelog-eslint-1.0.9.tgz",
+ "integrity": "sha512-h87nfVh2fdk9fJIvz26wCBsbDC/KxqCc5wSlNMZbXcARtbgNbNDIF7Y7ctokFdnxkzVdaHsbINkh548T9eBA7Q==",
+ "dev": true,
+ "requires": {
+ "q": "^1.5.1"
+ }
+ },
+ "conventional-changelog-express": {
+ "version": "0.3.6",
+ "resolved": "https://registry.npmjs.org/conventional-changelog-express/-/conventional-changelog-express-0.3.6.tgz",
+ "integrity": "sha512-3iWVtBJZ9RnRnZveNDzOD8QRn6g6vUif0qVTWWyi5nUIAbuN1FfPVyKdAlJJfp5Im+dE8Kiy/d2SpaX/0X678Q==",
+ "dev": true,
+ "requires": {
+ "q": "^1.5.1"
+ }
+ },
+ "conventional-changelog-jquery": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/conventional-changelog-jquery/-/conventional-changelog-jquery-0.1.0.tgz",
+ "integrity": "sha1-Agg5cWLjhGmG5xJztsecW1+A9RA=",
+ "dev": true,
+ "requires": {
+ "q": "^1.4.1"
+ }
+ },
+ "conventional-changelog-jscs": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/conventional-changelog-jscs/-/conventional-changelog-jscs-0.1.0.tgz",
+ "integrity": "sha1-BHnrRDzH1yxYvwvPDvHURKkvDlw=",
+ "dev": true,
+ "requires": {
+ "q": "^1.4.1"
+ }
+ },
+ "conventional-changelog-jshint": {
+ "version": "0.3.8",
+ "resolved": "https://registry.npmjs.org/conventional-changelog-jshint/-/conventional-changelog-jshint-0.3.8.tgz",
+ "integrity": "sha512-hn9QU4ZI/5V50wKPJNPGT4gEWgiBFpV6adieILW4MaUFynuDYOvQ71EMSj3EznJyKi/KzuXpc9dGmX8njZMjig==",
+ "dev": true,
+ "requires": {
+ "compare-func": "^1.3.1",
+ "q": "^1.5.1"
+ }
+ },
+ "conventional-changelog-preset-loader": {
+ "version": "1.1.8",
+ "resolved": "https://registry.npmjs.org/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-1.1.8.tgz",
+ "integrity": "sha512-MkksM4G4YdrMlT2MbTsV2F6LXu/hZR0Tc/yenRrDIKRwBl/SP7ER4ZDlglqJsCzLJi4UonBc52Bkm5hzrOVCcw==",
+ "dev": true
+ },
+ "conventional-changelog-writer": {
+ "version": "3.0.9",
+ "resolved": "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-3.0.9.tgz",
+ "integrity": "sha512-n9KbsxlJxRQsUnK6wIBRnARacvNnN4C/nxnxCkH+B/R1JS2Fa+DiP1dU4I59mEDEjgnFaN2+9wr1P1s7GYB5/Q==",
+ "dev": true,
+ "requires": {
+ "compare-func": "^1.3.1",
+ "conventional-commits-filter": "^1.1.6",
+ "dateformat": "^3.0.0",
+ "handlebars": "^4.0.2",
+ "json-stringify-safe": "^5.0.1",
+ "lodash": "^4.2.1",
+ "meow": "^4.0.0",
+ "semver": "^5.5.0",
+ "split": "^1.0.0",
+ "through2": "^2.0.0"
+ }
+ },
+ "conventional-commits-filter": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-1.1.6.tgz",
+ "integrity": "sha512-KcDgtCRKJCQhyk6VLT7zR+ZOyCnerfemE/CsR3iQpzRRFbLEs0Y6rwk3mpDvtOh04X223z+1xyJ582Stfct/0Q==",
+ "dev": true,
+ "requires": {
+ "is-subset": "^0.1.1",
+ "modify-values": "^1.0.0"
+ }
+ },
+ "conventional-commits-parser": {
+ "version": "2.1.7",
+ "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-2.1.7.tgz",
+ "integrity": "sha512-BoMaddIEJ6B4QVMSDu9IkVImlGOSGA1I2BQyOZHeLQ6qVOJLcLKn97+fL6dGbzWEiqDzfH4OkcveULmeq2MHFQ==",
+ "dev": true,
+ "requires": {
+ "JSONStream": "^1.0.4",
+ "is-text-path": "^1.0.0",
+ "lodash": "^4.2.1",
+ "meow": "^4.0.0",
+ "split2": "^2.0.0",
+ "through2": "^2.0.0",
+ "trim-off-newlines": "^1.0.0"
+ }
+ },
+ "convert-source-map": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.1.3.tgz",
+ "integrity": "sha1-SCnId+n+SbMWHzvzZziI4gRpmGA=",
+ "dev": true
+ },
+ "copy-descriptor": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz",
+ "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=",
+ "dev": true
+ },
+ "core-util-is": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
+ "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
+ "dev": true
+ },
+ "cosmiconfig": {
+ "version": "5.0.6",
+ "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.0.6.tgz",
+ "integrity": "sha512-6DWfizHriCrFWURP1/qyhsiFvYdlJzbCzmtFWh744+KyWsJo5+kPzUZZaMRSSItoYc0pxFX7gEO7ZC1/gN/7AQ==",
+ "dev": true,
+ "requires": {
+ "is-directory": "^0.3.1",
+ "js-yaml": "^3.9.0",
+ "parse-json": "^4.0.0"
+ },
+ "dependencies": {
+ "parse-json": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz",
+ "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=",
+ "dev": true,
+ "requires": {
+ "error-ex": "^1.3.1",
+ "json-parse-better-errors": "^1.0.1"
+ }
+ }
+ }
+ },
+ "create-ecdh": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz",
+ "integrity": "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==",
+ "dev": true,
+ "requires": {
+ "bn.js": "^4.1.0",
+ "elliptic": "^6.0.0"
+ }
+ },
+ "create-error-class": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz",
+ "integrity": "sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=",
+ "dev": true,
+ "requires": {
+ "capture-stack-trace": "^1.0.0"
+ }
+ },
+ "create-hash": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz",
+ "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==",
+ "dev": true,
+ "requires": {
+ "cipher-base": "^1.0.1",
+ "inherits": "^2.0.1",
+ "md5.js": "^1.3.4",
+ "ripemd160": "^2.0.1",
+ "sha.js": "^2.4.0"
+ }
+ },
+ "create-hmac": {
+ "version": "1.1.7",
+ "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz",
+ "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==",
+ "dev": true,
+ "requires": {
+ "cipher-base": "^1.0.3",
+ "create-hash": "^1.1.0",
+ "inherits": "^2.0.1",
+ "ripemd160": "^2.0.0",
+ "safe-buffer": "^5.0.1",
+ "sha.js": "^2.4.8"
+ }
+ },
+ "cross-spawn": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz",
+ "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=",
+ "dev": true,
+ "requires": {
+ "lru-cache": "^4.0.1",
+ "shebang-command": "^1.2.0",
+ "which": "^1.2.9"
+ }
+ },
+ "crypto-browserify": {
+ "version": "3.12.0",
+ "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz",
+ "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==",
+ "dev": true,
+ "requires": {
+ "browserify-cipher": "^1.0.0",
+ "browserify-sign": "^4.0.0",
+ "create-ecdh": "^4.0.0",
+ "create-hash": "^1.1.0",
+ "create-hmac": "^1.1.0",
+ "diffie-hellman": "^5.0.0",
+ "inherits": "^2.0.1",
+ "pbkdf2": "^3.0.3",
+ "public-encrypt": "^4.0.0",
+ "randombytes": "^2.0.0",
+ "randomfill": "^1.0.3"
+ }
+ },
+ "crypto-random-string": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz",
+ "integrity": "sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4=",
+ "dev": true
+ },
+ "css-select": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz",
+ "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=",
+ "dev": true,
+ "requires": {
+ "boolbase": "~1.0.0",
+ "css-what": "2.1",
+ "domutils": "1.5.1",
+ "nth-check": "~1.0.1"
+ }
+ },
+ "css-what": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.0.tgz",
+ "integrity": "sha1-lGfQMsOM+u+58teVASUwYvh/ob0=",
+ "dev": true
+ },
+ "cssom": {
+ "version": "0.3.4",
+ "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.4.tgz",
+ "integrity": "sha512-+7prCSORpXNeR4/fUP3rL+TzqtiFfhMvTd7uEqMdgPvLPt4+uzFUeufx5RHjGTACCargg/DiEt/moMQmvnfkog==",
+ "dev": true,
+ "optional": true
+ },
+ "cssstyle": {
+ "version": "0.2.37",
+ "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-0.2.37.tgz",
+ "integrity": "sha1-VBCXI0yyUTyDzu06zdwn/yeYfVQ=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "cssom": "0.3.x"
+ }
+ },
+ "cuint": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/cuint/-/cuint-0.2.2.tgz",
+ "integrity": "sha1-QICG1AlVDCYxFVYZ6fp7ytw7mRs=",
+ "dev": true
+ },
+ "currently-unhandled": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz",
+ "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=",
+ "dev": true,
+ "requires": {
+ "array-find-index": "^1.0.1"
+ }
+ },
+ "dargs": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/dargs/-/dargs-4.1.0.tgz",
+ "integrity": "sha1-A6nbtLXC8Tm/FK5T8LiipqhvThc=",
+ "dev": true,
+ "requires": {
+ "number-is-nan": "^1.0.0"
+ }
+ },
+ "dashdash": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
+ "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
+ "dev": true,
+ "requires": {
+ "assert-plus": "^1.0.0"
+ }
+ },
+ "date-fns": {
+ "version": "1.30.1",
+ "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-1.30.1.tgz",
+ "integrity": "sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw==",
+ "dev": true
+ },
+ "date-now": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz",
+ "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=",
+ "dev": true
+ },
+ "dateformat": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz",
+ "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==",
+ "dev": true
+ },
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=",
+ "dev": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "debug-log": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/debug-log/-/debug-log-1.0.1.tgz",
+ "integrity": "sha1-IwdjLUwEOCuN+KMvcLiVBG1SdF8=",
+ "dev": true
+ },
+ "decamelize": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
+ "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
+ "dev": true
+ },
+ "decamelize-keys": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.0.tgz",
+ "integrity": "sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk=",
+ "dev": true,
+ "requires": {
+ "decamelize": "^1.1.0",
+ "map-obj": "^1.0.0"
+ },
+ "dependencies": {
+ "map-obj": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz",
+ "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=",
+ "dev": true
+ }
+ }
+ },
+ "decode-uri-component": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz",
+ "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=",
+ "dev": true
+ },
+ "decompress-response": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz",
+ "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=",
+ "dev": true,
+ "requires": {
+ "mimic-response": "^1.0.0"
+ }
+ },
+ "decompress-zip": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/decompress-zip/-/decompress-zip-0.3.0.tgz",
+ "integrity": "sha1-rjvLfjTGWHmt/nfhnDD4ZgK0vbA=",
+ "dev": true,
+ "requires": {
+ "binary": "^0.3.0",
+ "graceful-fs": "^4.1.3",
+ "mkpath": "^0.1.0",
+ "nopt": "^3.0.1",
+ "q": "^1.1.2",
+ "readable-stream": "^1.1.8",
+ "touch": "0.0.3"
+ }
+ },
+ "dedent": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.6.0.tgz",
+ "integrity": "sha1-Dm2o8M5Sg471zsXI+TlrDBtko8s=",
+ "dev": true
+ },
+ "deep-extend": {
+ "version": "0.5.1",
+ "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.5.1.tgz",
+ "integrity": "sha512-N8vBdOa+DF7zkRrDCsaOXoCs/E2fJfx9B9MrKnnSiHNh4ws7eSys6YQE4KvT1cecKmOASYQBhbKjeuDD9lT81w==",
+ "dev": true
+ },
+ "deep-is": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz",
+ "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=",
+ "dev": true
+ },
+ "deepmerge": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-3.0.0.tgz",
+ "integrity": "sha512-a8z8bkgHsAML+uHLqmMS83HHlpy3PvZOOuiTQqaa3wu8ZVg3h0hqHk6aCsGdOnZV2XMM/FRimNGjUh0KCcmHBw==",
+ "dev": true
+ },
+ "defaults": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz",
+ "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=",
+ "dev": true,
+ "requires": {
+ "clone": "^1.0.2"
+ }
+ },
+ "defer-to-connect": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.0.2.tgz",
+ "integrity": "sha512-k09hcQcTDY+cwgiwa6PYKLm3jlagNzQ+RSvhjzESOGOx+MNOuXkxTfEvPrO1IOQ81tArCFYQgi631clB70RpQw==",
+ "dev": true
+ },
+ "define-properties": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz",
+ "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==",
+ "dev": true,
+ "requires": {
+ "object-keys": "^1.0.12"
+ },
+ "dependencies": {
+ "object-keys": {
+ "version": "1.0.12",
+ "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.12.tgz",
+ "integrity": "sha512-FTMyFUm2wBcGHnH2eXmz7tC6IwlqQZ6mVZ+6dm6vZ4IQIHjs6FdNsQBuKGPuUUUY6NfJw2PshC08Tn6LzLDOag==",
+ "dev": true
+ }
+ }
+ },
+ "define-property": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz",
+ "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "^1.0.2",
+ "isobject": "^3.0.1"
+ },
+ "dependencies": {
+ "is-accessor-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
+ "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^6.0.0"
+ }
+ },
+ "is-data-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
+ "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^6.0.0"
+ }
+ },
+ "is-descriptor": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
+ "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+ "dev": true,
+ "requires": {
+ "is-accessor-descriptor": "^1.0.0",
+ "is-data-descriptor": "^1.0.0",
+ "kind-of": "^6.0.2"
+ }
+ },
+ "isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
+ "dev": true
+ },
+ "kind-of": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
+ "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==",
+ "dev": true
+ }
+ }
+ },
+ "defined": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz",
+ "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=",
+ "dev": true
+ },
+ "deglob": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/deglob/-/deglob-2.1.1.tgz",
+ "integrity": "sha512-2kjwuGGonL7gWE1XU4Fv79+vVzpoQCl0V+boMwWtOQJV2AGDabCwez++nB1Nli/8BabAfZQ/UuHPlp6AymKdWw==",
+ "dev": true,
+ "requires": {
+ "find-root": "^1.0.0",
+ "glob": "^7.0.5",
+ "ignore": "^3.0.9",
+ "pkg-config": "^1.1.0",
+ "run-parallel": "^1.1.2",
+ "uniq": "^1.0.1"
+ },
+ "dependencies": {
+ "glob": {
+ "version": "7.1.3",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz",
+ "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==",
+ "dev": true,
+ "requires": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.0.4",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ }
+ }
+ }
+ },
+ "del": {
+ "version": "2.2.2",
+ "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz",
+ "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=",
+ "dev": true,
+ "requires": {
+ "globby": "^5.0.0",
+ "is-path-cwd": "^1.0.0",
+ "is-path-in-cwd": "^1.0.0",
+ "object-assign": "^4.0.1",
+ "pify": "^2.0.0",
+ "pinkie-promise": "^2.0.0",
+ "rimraf": "^2.2.8"
+ }
+ },
+ "delayed-stream": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
+ "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=",
+ "dev": true
+ },
+ "depd": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz",
+ "integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k=",
+ "dev": true
+ },
+ "deps-sort": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/deps-sort/-/deps-sort-2.0.0.tgz",
+ "integrity": "sha1-CRckkC6EZYJg65EHSMzNGvbiH7U=",
+ "dev": true,
+ "requires": {
+ "JSONStream": "^1.0.3",
+ "shasum": "^1.0.0",
+ "subarg": "^1.0.0",
+ "through2": "^2.0.0"
+ }
+ },
+ "des.js": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz",
+ "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=",
+ "dev": true,
+ "requires": {
+ "inherits": "^2.0.1",
+ "minimalistic-assert": "^1.0.0"
+ }
+ },
+ "destroy": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz",
+ "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=",
+ "dev": true
+ },
+ "detect-port": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/detect-port/-/detect-port-1.2.3.tgz",
+ "integrity": "sha512-IDbrX6PxqnYy8jV4wSHBaJlErYKTJvW8OQb9F7xivl1iQLqiUYHGa+nZ61Do6+N5uuOn/pReXKNqI9rUn04vug==",
+ "dev": true,
+ "requires": {
+ "address": "^1.0.1",
+ "debug": "^2.6.0"
+ }
+ },
+ "detective": {
+ "version": "4.7.1",
+ "resolved": "https://registry.npmjs.org/detective/-/detective-4.7.1.tgz",
+ "integrity": "sha512-H6PmeeUcZloWtdt4DAkFyzFL94arpHr3NOwwmVILFiy+9Qd4JTxxXrzfyGk/lmct2qVGBwTSwSXagqu2BxmWig==",
+ "dev": true,
+ "requires": {
+ "acorn": "^5.2.1",
+ "defined": "^1.0.0"
+ },
+ "dependencies": {
+ "acorn": {
+ "version": "5.5.3",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.5.3.tgz",
+ "integrity": "sha512-jd5MkIUlbbmb07nXH0DT3y7rDVtkzDi4XZOUVWAer8ajmF/DTSSbl5oNFyDOl/OXA33Bl79+ypHhl2pN20VeOQ==",
+ "dev": true
+ }
+ }
+ },
+ "diff": {
+ "version": "3.5.0",
+ "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz",
+ "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==",
+ "dev": true
+ },
+ "diffie-hellman": {
+ "version": "5.0.3",
+ "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz",
+ "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==",
+ "dev": true,
+ "requires": {
+ "bn.js": "^4.1.0",
+ "miller-rabin": "^4.0.0",
+ "randombytes": "^2.0.0"
+ }
+ },
+ "dir-glob": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.0.0.tgz",
+ "integrity": "sha512-37qirFDz8cA5fimp9feo43fSuRo2gHwaIn6dXL8Ber1dGwUosDrGZeCCXq57WnIqE4aQ+u3eQZzsk1yOzhdwag==",
+ "dev": true,
+ "requires": {
+ "arrify": "^1.0.1",
+ "path-type": "^3.0.0"
+ },
+ "dependencies": {
+ "path-type": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz",
+ "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==",
+ "dev": true,
+ "requires": {
+ "pify": "^3.0.0"
+ }
+ },
+ "pify": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
+ "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
+ "dev": true
+ }
+ }
+ },
+ "doctrine": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz",
+ "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==",
+ "dev": true,
+ "requires": {
+ "esutils": "^2.0.2"
+ }
+ },
+ "dom-serializer": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz",
+ "integrity": "sha1-BzxpdUbOB4DOI75KKOKT5AvDDII=",
+ "dev": true,
+ "requires": {
+ "domelementtype": "~1.1.1",
+ "entities": "~1.1.1"
+ },
+ "dependencies": {
+ "domelementtype": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.1.3.tgz",
+ "integrity": "sha1-vSh3PiZCiBrsUVRJJCmcXNgiGFs=",
+ "dev": true
+ }
+ }
+ },
+ "domain-browser": {
+ "version": "1.1.7",
+ "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.1.7.tgz",
+ "integrity": "sha1-hnqksJP6oF8d4IwG9NeyH9+GmLw=",
+ "dev": true
+ },
+ "domelementtype": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.0.tgz",
+ "integrity": "sha1-sXrtguirWeUt2cGbF1bg/BhyBMI=",
+ "dev": true
+ },
+ "domhandler": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz",
+ "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==",
+ "dev": true,
+ "requires": {
+ "domelementtype": "1"
+ }
+ },
+ "domutils": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz",
+ "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=",
+ "dev": true,
+ "requires": {
+ "dom-serializer": "0",
+ "domelementtype": "1"
+ }
+ },
+ "dot-prop": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-3.0.0.tgz",
+ "integrity": "sha1-G3CK8JSknJoOfbyteQq6U52sEXc=",
+ "dev": true,
+ "requires": {
+ "is-obj": "^1.0.0"
+ }
+ },
+ "dotenv": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-4.0.0.tgz",
+ "integrity": "sha1-hk7xN5rO1Vzm+V3r7NzhefegzR0=",
+ "dev": true
+ },
+ "dotenv-safe": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/dotenv-safe/-/dotenv-safe-4.0.4.tgz",
+ "integrity": "sha1-iw587Y5wsdPF2HTvlCDkBvOUJbM=",
+ "dev": true,
+ "requires": {
+ "dotenv": "^4.0.0"
+ }
+ },
+ "dugite": {
+ "version": "1.63.0",
+ "resolved": "https://registry.npmjs.org/dugite/-/dugite-1.63.0.tgz",
+ "integrity": "sha512-CFd0sWTB2oouat0kJA4/rEQAeh6ZUvCDL9uFOaSBhLX+2CM/YL+ebKJXd8dYVIe8iVXmK5R9P31NVbRw4Ccoxw==",
+ "dev": true,
+ "requires": {
+ "checksum": "^0.1.1",
+ "mkdirp": "^0.5.1",
+ "progress": "^2.0.0",
+ "request": "^2.85.0",
+ "rimraf": "^2.5.4",
+ "tar": "^4.0.2"
+ }
+ },
+ "duplexer2": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz",
+ "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=",
+ "dev": true,
+ "requires": {
+ "readable-stream": "^2.0.2"
+ },
+ "dependencies": {
+ "isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
+ "dev": true
+ },
+ "readable-stream": {
+ "version": "2.3.6",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
+ "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
+ "dev": true,
+ "requires": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
+ }
+ },
+ "string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "dev": true,
+ "requires": {
+ "safe-buffer": "~5.1.0"
+ }
+ }
+ }
+ },
+ "duplexer3": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz",
+ "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=",
+ "dev": true
+ },
+ "duplexify": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.6.0.tgz",
+ "integrity": "sha512-fO3Di4tBKJpYTFHAxTU00BcfWMY9w24r/x21a6rZRbsD/ToUgGxsMbiGRmB7uVAXeGKXD9MwiLZa5E97EVgIRQ==",
+ "dev": true,
+ "requires": {
+ "end-of-stream": "^1.0.0",
+ "inherits": "^2.0.1",
+ "readable-stream": "^2.0.0",
+ "stream-shift": "^1.0.0"
+ },
+ "dependencies": {
+ "isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
+ "dev": true
+ },
+ "readable-stream": {
+ "version": "2.3.6",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
+ "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
+ "dev": true,
+ "requires": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
+ }
+ },
+ "string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "dev": true,
+ "requires": {
+ "safe-buffer": "~5.1.0"
+ }
+ }
+ }
+ },
+ "ecc-jsbn": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
+ "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "jsbn": "~0.1.0",
+ "safer-buffer": "^2.1.0"
+ }
+ },
+ "ee-first": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
+ "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=",
+ "dev": true
+ },
+ "electron-docs": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/electron-docs/-/electron-docs-2.0.1.tgz",
+ "integrity": "sha1-ARI6T8y2vieswSgAJ7/LJAxUsdI=",
+ "dev": true,
+ "requires": {
+ "got": "^6.3.0",
+ "gunzip-maybe": "^1.3.1",
+ "node-dir": "^0.1.12",
+ "ora": "^0.2.3",
+ "path-exists": "^3.0.0",
+ "pify": "^2.3.0",
+ "semver": "^5.1.0",
+ "tar-fs": "^1.13.0"
+ },
+ "dependencies": {
+ "got": {
+ "version": "6.7.1",
+ "resolved": "https://registry.npmjs.org/got/-/got-6.7.1.tgz",
+ "integrity": "sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA=",
+ "dev": true,
+ "requires": {
+ "create-error-class": "^3.0.0",
+ "duplexer3": "^0.1.4",
+ "get-stream": "^3.0.0",
+ "is-redirect": "^1.0.0",
+ "is-retry-allowed": "^1.0.0",
+ "is-stream": "^1.0.0",
+ "lowercase-keys": "^1.0.0",
+ "safe-buffer": "^5.0.1",
+ "timed-out": "^4.0.0",
+ "unzip-response": "^2.0.1",
+ "url-parse-lax": "^1.0.0"
+ }
+ },
+ "ora": {
+ "version": "0.2.3",
+ "resolved": "https://registry.npmjs.org/ora/-/ora-0.2.3.tgz",
+ "integrity": "sha1-N1J9Igrc1Tw5tzVx11QVbV22V6Q=",
+ "dev": true,
+ "requires": {
+ "chalk": "^1.1.1",
+ "cli-cursor": "^1.0.2",
+ "cli-spinners": "^0.1.2",
+ "object-assign": "^4.0.1"
+ }
+ },
+ "path-exists": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
+ "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
+ "dev": true
+ },
+ "prepend-http": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz",
+ "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=",
+ "dev": true
+ },
+ "url-parse-lax": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz",
+ "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=",
+ "dev": true,
+ "requires": {
+ "prepend-http": "^1.0.1"
+ }
+ }
+ }
+ },
+ "electron-docs-linter": {
+ "version": "2.4.0",
+ "resolved": "https://registry.npmjs.org/electron-docs-linter/-/electron-docs-linter-2.4.0.tgz",
+ "integrity": "sha512-WvxXsk6kl4x0nrQOqMYAXsMMbSouSwa8VeNd+Bps9HM7QXuNNNVPFB1UEdykq06HWS60lUt4VUiAjQjAJJpcSg==",
+ "dev": true,
+ "requires": {
+ "cheerio": "^0.22.0",
+ "clean-deep": "^2.0.1",
+ "decamelize": "^1.2.0",
+ "dedent": "^0.6.0",
+ "electron-docs": "^2.0.1",
+ "entities": "^1.1.1",
+ "keyed-array": "^2.1.2",
+ "lodash.merge": "^4.6.0",
+ "lodash.pick": "^4.2.1",
+ "marky-markdown-lite": "^1.2.0",
+ "minimist": "^1.2.0",
+ "ora": "^0.3.0",
+ "path-exists": "^3.0.0",
+ "pify": "^2.3.0",
+ "revalidator": "^0.3.1",
+ "semver": "^5.3.0"
+ },
+ "dependencies": {
+ "path-exists": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
+ "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
+ "dev": true
+ }
+ }
+ },
+ "electron-typescript-definitions": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/electron-typescript-definitions/-/electron-typescript-definitions-7.0.0.tgz",
+ "integrity": "sha512-9/BkCl/sJdVn09fn42+bihGsYymBKxzaFM2VY/LYoPe4/7B+3TPhgQyunOgWRaPT1Kx+ZJBgJbYj+rQYEUFR2w==",
+ "dev": true,
+ "requires": {
+ "@types/node": "^7.0.18",
+ "colors": "^1.1.2",
+ "debug": "^2.6.3",
+ "electron-docs": "^2.0.0",
+ "electron-docs-linter": "^2.4.0",
+ "lodash": "^4.17.11",
+ "mkdirp": "^0.5.1",
+ "rimraf": "^2.5.4",
+ "tslint": "^4.5.1",
+ "typescript": "^2.2.1"
+ },
+ "dependencies": {
+ "lodash": {
+ "version": "4.17.11",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz",
+ "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==",
+ "dev": true
+ }
+ }
+ },
+ "elegant-spinner": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/elegant-spinner/-/elegant-spinner-1.0.1.tgz",
+ "integrity": "sha1-2wQ1IcldfjA/2PNFvtwzSc+wcp4=",
+ "dev": true
+ },
+ "elliptic": {
+ "version": "6.4.0",
+ "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.0.tgz",
+ "integrity": "sha1-ysmvh2LIWDYYcAPI3+GT5eLq5d8=",
+ "dev": true,
+ "requires": {
+ "bn.js": "^4.4.0",
+ "brorand": "^1.0.1",
+ "hash.js": "^1.0.0",
+ "hmac-drbg": "^1.0.0",
+ "inherits": "^2.0.1",
+ "minimalistic-assert": "^1.0.0",
+ "minimalistic-crypto-utils": "^1.0.0"
+ }
+ },
+ "encodeurl": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
+ "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=",
+ "dev": true
+ },
+ "end-of-stream": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz",
+ "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==",
+ "dev": true,
+ "requires": {
+ "once": "^1.4.0"
+ }
+ },
+ "ensure-posix-path": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/ensure-posix-path/-/ensure-posix-path-1.0.2.tgz",
+ "integrity": "sha1-pls+QtC3HPxYXrd0+ZQ8jZuRsMI=",
+ "dev": true
+ },
+ "entities": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.1.tgz",
+ "integrity": "sha1-blwtClYhtdra7O+AuQ7ftc13cvA=",
+ "dev": true
+ },
+ "error-ex": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz",
+ "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=",
+ "dev": true,
+ "requires": {
+ "is-arrayish": "^0.2.1"
+ }
+ },
+ "es-abstract": {
+ "version": "1.12.0",
+ "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.12.0.tgz",
+ "integrity": "sha512-C8Fx/0jFmV5IPoMOFPA9P9G5NtqW+4cOPit3MIuvR2t7Ag2K15EJTpxnHAYTzL+aYQJIESYeXZmDBfOBE1HcpA==",
+ "dev": true,
+ "requires": {
+ "es-to-primitive": "^1.1.1",
+ "function-bind": "^1.1.1",
+ "has": "^1.0.1",
+ "is-callable": "^1.1.3",
+ "is-regex": "^1.0.4"
+ }
+ },
+ "es-to-primitive": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.1.1.tgz",
+ "integrity": "sha1-RTVSSKiJeQNLZ5Lhm7gfK3l13Q0=",
+ "dev": true,
+ "requires": {
+ "is-callable": "^1.1.1",
+ "is-date-object": "^1.0.1",
+ "is-symbol": "^1.0.1"
+ }
+ },
+ "escape-html": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
+ "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=",
+ "dev": true
+ },
+ "escape-string-regexp": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+ "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
+ "dev": true
+ },
+ "escodegen": {
+ "version": "1.8.1",
+ "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.8.1.tgz",
+ "integrity": "sha1-WltTr0aTEQvrsIZ6o0MN07cKEBg=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "esprima": "^2.7.1",
+ "estraverse": "^1.9.1",
+ "esutils": "^2.0.2",
+ "optionator": "^0.8.1",
+ "source-map": "~0.2.0"
+ },
+ "dependencies": {
+ "source-map": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.2.0.tgz",
+ "integrity": "sha1-2rc/vPwrqBm03gO9b26qSBZLP50=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "amdefine": ">=0.0.4"
+ }
+ }
+ }
+ },
+ "eslint": {
+ "version": "5.6.0",
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-5.6.0.tgz",
+ "integrity": "sha512-/eVYs9VVVboX286mBK7bbKnO1yamUy2UCRjiY6MryhQL2PaaXCExsCQ2aO83OeYRhU2eCU/FMFP+tVMoOrzNrA==",
+ "dev": true,
+ "requires": {
+ "@babel/code-frame": "^7.0.0",
+ "ajv": "^6.5.3",
+ "chalk": "^2.1.0",
+ "cross-spawn": "^6.0.5",
+ "debug": "^3.1.0",
+ "doctrine": "^2.1.0",
+ "eslint-scope": "^4.0.0",
+ "eslint-utils": "^1.3.1",
+ "eslint-visitor-keys": "^1.0.0",
+ "espree": "^4.0.0",
+ "esquery": "^1.0.1",
+ "esutils": "^2.0.2",
+ "file-entry-cache": "^2.0.0",
+ "functional-red-black-tree": "^1.0.1",
+ "glob": "^7.1.2",
+ "globals": "^11.7.0",
+ "ignore": "^4.0.6",
+ "imurmurhash": "^0.1.4",
+ "inquirer": "^6.1.0",
+ "is-resolvable": "^1.1.0",
+ "js-yaml": "^3.12.0",
+ "json-stable-stringify-without-jsonify": "^1.0.1",
+ "levn": "^0.3.0",
+ "lodash": "^4.17.5",
+ "minimatch": "^3.0.4",
+ "mkdirp": "^0.5.1",
+ "natural-compare": "^1.4.0",
+ "optionator": "^0.8.2",
+ "path-is-inside": "^1.0.2",
+ "pluralize": "^7.0.0",
+ "progress": "^2.0.0",
+ "regexpp": "^2.0.0",
+ "require-uncached": "^1.0.3",
+ "semver": "^5.5.1",
+ "strip-ansi": "^4.0.0",
+ "strip-json-comments": "^2.0.1",
+ "table": "^4.0.3",
+ "text-table": "^0.2.0"
+ },
+ "dependencies": {
+ "ajv": {
+ "version": "6.5.3",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.3.tgz",
+ "integrity": "sha512-LqZ9wY+fx3UMiiPd741yB2pj3hhil+hQc8taf4o2QGRFpWgZ2V5C8HA165DY9sS3fJwsk7uT7ZlFEyC3Ig3lLg==",
+ "dev": true,
+ "requires": {
+ "fast-deep-equal": "^2.0.1",
+ "fast-json-stable-stringify": "^2.0.0",
+ "json-schema-traverse": "^0.4.1",
+ "uri-js": "^4.2.2"
+ }
+ },
+ "ansi-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
+ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
+ "dev": true
+ },
+ "ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "dev": true,
+ "requires": {
+ "color-convert": "^1.9.0"
+ }
+ },
+ "chalk": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz",
+ "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ }
+ },
+ "cross-spawn": {
+ "version": "6.0.5",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
+ "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
+ "dev": true,
+ "requires": {
+ "nice-try": "^1.0.4",
+ "path-key": "^2.0.1",
+ "semver": "^5.5.0",
+ "shebang-command": "^1.2.0",
+ "which": "^1.2.9"
+ }
+ },
+ "debug": {
+ "version": "3.2.5",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.5.tgz",
+ "integrity": "sha512-D61LaDQPQkxJ5AUM2mbSJRbPkNs/TmdmOeLAi1hgDkpDfIfetSrjmWhccwtuResSwMbACjx/xXQofvM9CE/aeg==",
+ "dev": true,
+ "requires": {
+ "ms": "^2.1.1"
+ }
+ },
+ "esprima": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
+ "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
+ "dev": true
+ },
+ "fast-deep-equal": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz",
+ "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=",
+ "dev": true
+ },
+ "glob": {
+ "version": "7.1.3",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz",
+ "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==",
+ "dev": true,
+ "requires": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.0.4",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ }
+ },
+ "has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
+ "dev": true
+ },
+ "ignore": {
+ "version": "4.0.6",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz",
+ "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==",
+ "dev": true
+ },
+ "js-yaml": {
+ "version": "3.12.0",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.0.tgz",
+ "integrity": "sha512-PIt2cnwmPfL4hKNwqeiuz4bKfnzHTBv6HyVgjahA6mPLwPDzjDWrplJBMjHUFxku/N3FlmrbyPclad+I+4mJ3A==",
+ "dev": true,
+ "requires": {
+ "argparse": "^1.0.7",
+ "esprima": "^4.0.0"
+ }
+ },
+ "json-schema-traverse": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
+ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
+ "dev": true
+ },
+ "ms": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
+ "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==",
+ "dev": true
+ },
+ "semver": {
+ "version": "5.5.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.1.tgz",
+ "integrity": "sha512-PqpAxfrEhlSUWge8dwIp4tZnQ25DIOthpiaHNIthsjEFQD6EvqUKUDM7L8O2rShkFccYo1VjJR0coWfNkCubRw==",
+ "dev": true
+ },
+ "strip-ansi": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
+ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^3.0.0"
+ }
+ },
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^3.0.0"
+ }
+ }
+ }
+ },
+ "eslint-config-standard": {
+ "version": "12.0.0",
+ "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-12.0.0.tgz",
+ "integrity": "sha512-COUz8FnXhqFitYj4DTqHzidjIL/t4mumGZto5c7DrBpvWoie+Sn3P4sLEzUGeYhRElWuFEf8K1S1EfvD1vixCQ==",
+ "dev": true
+ },
+ "eslint-config-standard-jsx": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/eslint-config-standard-jsx/-/eslint-config-standard-jsx-6.0.2.tgz",
+ "integrity": "sha512-D+YWAoXw+2GIdbMBRAzWwr1ZtvnSf4n4yL0gKGg7ShUOGXkSOLerI17K4F6LdQMJPNMoWYqepzQD/fKY+tXNSg==",
+ "dev": true
+ },
+ "eslint-import-resolver-node": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.2.tgz",
+ "integrity": "sha512-sfmTqJfPSizWu4aymbPr4Iidp5yKm8yDkHp+Ir3YiTHiiDfxh69mOUsmiqW6RZ9zRXFaF64GtYmN7e+8GHBv6Q==",
+ "dev": true,
+ "requires": {
+ "debug": "^2.6.9",
+ "resolve": "^1.5.0"
+ }
+ },
+ "eslint-module-utils": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.2.0.tgz",
+ "integrity": "sha1-snA2LNiLGkitMIl2zn+lTphBF0Y=",
+ "dev": true,
+ "requires": {
+ "debug": "^2.6.8",
+ "pkg-dir": "^1.0.0"
+ }
+ },
+ "eslint-plugin-es": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-1.3.1.tgz",
+ "integrity": "sha512-9XcVyZiQRVeFjqHw8qHNDAZcQLqaHlOGGpeYqzYh8S4JYCWTCO3yzyen8yVmA5PratfzTRWDwCOFphtDEG+w/w==",
+ "dev": true,
+ "requires": {
+ "eslint-utils": "^1.3.0",
+ "regexpp": "^2.0.0"
+ }
+ },
+ "eslint-plugin-import": {
+ "version": "2.14.0",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.14.0.tgz",
+ "integrity": "sha512-FpuRtniD/AY6sXByma2Wr0TXvXJ4nA/2/04VPlfpmUDPOpOY264x+ILiwnrk/k4RINgDAyFZByxqPUbSQ5YE7g==",
+ "dev": true,
+ "requires": {
+ "contains-path": "^0.1.0",
+ "debug": "^2.6.8",
+ "doctrine": "1.5.0",
+ "eslint-import-resolver-node": "^0.3.1",
+ "eslint-module-utils": "^2.2.0",
+ "has": "^1.0.1",
+ "lodash": "^4.17.4",
+ "minimatch": "^3.0.3",
+ "read-pkg-up": "^2.0.0",
+ "resolve": "^1.6.0"
+ },
+ "dependencies": {
+ "doctrine": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz",
+ "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=",
+ "dev": true,
+ "requires": {
+ "esutils": "^2.0.2",
+ "isarray": "^1.0.0"
+ }
+ },
+ "find-up": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
+ "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
+ "dev": true,
+ "requires": {
+ "locate-path": "^2.0.0"
+ }
+ },
+ "isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
+ "dev": true
+ },
+ "load-json-file": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz",
+ "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.2",
+ "parse-json": "^2.2.0",
+ "pify": "^2.0.0",
+ "strip-bom": "^3.0.0"
+ }
+ },
+ "path-type": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz",
+ "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=",
+ "dev": true,
+ "requires": {
+ "pify": "^2.0.0"
+ }
+ },
+ "read-pkg": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz",
+ "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=",
+ "dev": true,
+ "requires": {
+ "load-json-file": "^2.0.0",
+ "normalize-package-data": "^2.3.2",
+ "path-type": "^2.0.0"
+ }
+ },
+ "read-pkg-up": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz",
+ "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=",
+ "dev": true,
+ "requires": {
+ "find-up": "^2.0.0",
+ "read-pkg": "^2.0.0"
+ }
+ },
+ "strip-bom": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
+ "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=",
+ "dev": true
+ }
+ }
+ },
+ "eslint-plugin-mocha": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-mocha/-/eslint-plugin-mocha-5.2.0.tgz",
+ "integrity": "sha512-4VTX/qIoxUFRnXLNm6bEhEJyfGnGagmQzV4TWXKzkZgIYyP2FSubEdCjEFTyS/dGwSVRWCWGX7jO7BK8R0kppg==",
+ "dev": true,
+ "requires": {
+ "ramda": "^0.25.0"
+ }
+ },
+ "eslint-plugin-node": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-7.0.1.tgz",
+ "integrity": "sha512-lfVw3TEqThwq0j2Ba/Ckn2ABdwmL5dkOgAux1rvOk6CO7A6yGyPI2+zIxN6FyNkp1X1X/BSvKOceD6mBWSj4Yw==",
+ "dev": true,
+ "requires": {
+ "eslint-plugin-es": "^1.3.1",
+ "eslint-utils": "^1.3.1",
+ "ignore": "^4.0.2",
+ "minimatch": "^3.0.4",
+ "resolve": "^1.8.1",
+ "semver": "^5.5.0"
+ },
+ "dependencies": {
+ "ignore": {
+ "version": "4.0.6",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz",
+ "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==",
+ "dev": true
+ },
+ "resolve": {
+ "version": "1.8.1",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.8.1.tgz",
+ "integrity": "sha512-AicPrAC7Qu1JxPCZ9ZgCZlY35QgFnNqc+0LtbRNxnVw4TXvjQ72wnuL9JQcEBgXkI9JM8MsT9kaQoHcpCRJOYA==",
+ "dev": true,
+ "requires": {
+ "path-parse": "^1.0.5"
+ }
+ }
+ }
+ },
+ "eslint-plugin-promise": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-4.0.1.tgz",
+ "integrity": "sha512-Si16O0+Hqz1gDHsys6RtFRrW7cCTB6P7p3OJmKp3Y3dxpQE2qwOA7d3xnV+0mBmrPoi0RBnxlCKvqu70te6wjg==",
+ "dev": true
+ },
+ "eslint-plugin-react": {
+ "version": "7.11.1",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.11.1.tgz",
+ "integrity": "sha512-cVVyMadRyW7qsIUh3FHp3u6QHNhOgVrLQYdQEB1bPWBsgbNCHdFAeNMquBMCcZJu59eNthX053L70l7gRt4SCw==",
+ "dev": true,
+ "requires": {
+ "array-includes": "^3.0.3",
+ "doctrine": "^2.1.0",
+ "has": "^1.0.3",
+ "jsx-ast-utils": "^2.0.1",
+ "prop-types": "^15.6.2"
+ },
+ "dependencies": {
+ "has": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
+ "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
+ "dev": true,
+ "requires": {
+ "function-bind": "^1.1.1"
+ }
+ }
+ }
+ },
+ "eslint-plugin-standard": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-standard/-/eslint-plugin-standard-4.0.0.tgz",
+ "integrity": "sha512-OwxJkR6TQiYMmt1EsNRMe5qG3GsbjlcOhbGUBY4LtavF9DsLaTcoR+j2Tdjqi23oUwKNUqX7qcn5fPStafMdlA==",
+ "dev": true
+ },
+ "eslint-scope": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.0.tgz",
+ "integrity": "sha512-1G6UTDi7Jc1ELFwnR58HV4fK9OQK4S6N985f166xqXxpjU6plxFISJa2Ba9KCQuFa8RCnj/lSFJbHo7UFDBnUA==",
+ "dev": true,
+ "requires": {
+ "esrecurse": "^4.1.0",
+ "estraverse": "^4.1.1"
+ },
+ "dependencies": {
+ "estraverse": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz",
+ "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=",
+ "dev": true
+ }
+ }
+ },
+ "eslint-utils": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.3.1.tgz",
+ "integrity": "sha512-Z7YjnIldX+2XMcjr7ZkgEsOj/bREONV60qYeB/bjMAqqqZ4zxKyWX+BOUkdmRmA9riiIPVvo5x86m5elviOk0Q==",
+ "dev": true
+ },
+ "eslint-visitor-keys": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz",
+ "integrity": "sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ==",
+ "dev": true
+ },
+ "espree": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/espree/-/espree-4.0.0.tgz",
+ "integrity": "sha512-kapdTCt1bjmspxStVKX6huolXVV5ZfyZguY1lcfhVVZstce3bqxH9mcLzNn3/mlgW6wQ732+0fuG9v7h0ZQoKg==",
+ "dev": true,
+ "requires": {
+ "acorn": "^5.6.0",
+ "acorn-jsx": "^4.1.1"
+ },
+ "dependencies": {
+ "acorn": {
+ "version": "5.7.3",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.3.tgz",
+ "integrity": "sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==",
+ "dev": true
+ }
+ }
+ },
+ "esprima": {
+ "version": "2.7.3",
+ "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz",
+ "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=",
+ "dev": true,
+ "optional": true
+ },
+ "esquery": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.1.tgz",
+ "integrity": "sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==",
+ "dev": true,
+ "requires": {
+ "estraverse": "^4.0.0"
+ },
+ "dependencies": {
+ "estraverse": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz",
+ "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=",
+ "dev": true
+ }
+ }
+ },
+ "esrecurse": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz",
+ "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==",
+ "dev": true,
+ "requires": {
+ "estraverse": "^4.1.0"
+ },
+ "dependencies": {
+ "estraverse": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz",
+ "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=",
+ "dev": true
+ }
+ }
+ },
+ "estraverse": {
+ "version": "1.9.3",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-1.9.3.tgz",
+ "integrity": "sha1-r2fy3JIlgkFZUJJgkaQAXSnJu0Q=",
+ "dev": true,
+ "optional": true
+ },
+ "esutils": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz",
+ "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=",
+ "dev": true
+ },
+ "etag": {
+ "version": "1.8.1",
+ "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
+ "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=",
+ "dev": true
+ },
+ "events": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz",
+ "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=",
+ "dev": true
+ },
+ "evp_bytestokey": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz",
+ "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==",
+ "dev": true,
+ "requires": {
+ "md5.js": "^1.3.4",
+ "safe-buffer": "^5.1.1"
+ }
+ },
+ "execa": {
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz",
+ "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=",
+ "dev": true,
+ "requires": {
+ "cross-spawn": "^5.0.1",
+ "get-stream": "^3.0.0",
+ "is-stream": "^1.1.0",
+ "npm-run-path": "^2.0.0",
+ "p-finally": "^1.0.0",
+ "signal-exit": "^3.0.0",
+ "strip-eof": "^1.0.0"
+ }
+ },
+ "exit-hook": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/exit-hook/-/exit-hook-1.1.1.tgz",
+ "integrity": "sha1-8FyiM7SMBdVP/wd2XfhQfpXAL/g=",
+ "dev": true
+ },
+ "expand-brackets": {
+ "version": "0.1.5",
+ "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz",
+ "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=",
+ "dev": true,
+ "requires": {
+ "is-posix-bracket": "^0.1.0"
+ }
+ },
+ "expand-range": {
+ "version": "1.8.2",
+ "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz",
+ "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=",
+ "dev": true,
+ "requires": {
+ "fill-range": "^2.1.0"
+ }
+ },
+ "extend": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz",
+ "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=",
+ "dev": true
+ },
+ "extend-shallow": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
+ "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=",
+ "dev": true,
+ "requires": {
+ "assign-symbols": "^1.0.0",
+ "is-extendable": "^1.0.1"
+ },
+ "dependencies": {
+ "is-extendable": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
+ "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
+ "dev": true,
+ "requires": {
+ "is-plain-object": "^2.0.4"
+ }
+ }
+ }
+ },
+ "external-editor": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.0.3.tgz",
+ "integrity": "sha512-bn71H9+qWoOQKyZDo25mOMVpSmXROAsTJVVVYzrrtol3d4y+AsKjf4Iwl2Q+IuT0kFSQ1qo166UuIwqYq7mGnA==",
+ "dev": true,
+ "requires": {
+ "chardet": "^0.7.0",
+ "iconv-lite": "^0.4.24",
+ "tmp": "^0.0.33"
+ },
+ "dependencies": {
+ "iconv-lite": {
+ "version": "0.4.24",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
+ "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
+ "dev": true,
+ "requires": {
+ "safer-buffer": ">= 2.1.2 < 3"
+ }
+ },
+ "tmp": {
+ "version": "0.0.33",
+ "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz",
+ "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==",
+ "dev": true,
+ "requires": {
+ "os-tmpdir": "~1.0.2"
+ }
+ }
+ }
+ },
+ "extglob": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz",
+ "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=",
+ "dev": true,
+ "requires": {
+ "is-extglob": "^1.0.0"
+ }
+ },
+ "extsprintf": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
+ "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=",
+ "dev": true
+ },
+ "falafel": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/falafel/-/falafel-2.1.0.tgz",
+ "integrity": "sha1-lrsXdh2rqU9G0AFzizzt86Z/4Gw=",
+ "dev": true,
+ "requires": {
+ "acorn": "^5.0.0",
+ "foreach": "^2.0.5",
+ "isarray": "0.0.1",
+ "object-keys": "^1.0.6"
+ },
+ "dependencies": {
+ "acorn": {
+ "version": "5.7.3",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.3.tgz",
+ "integrity": "sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==",
+ "dev": true
+ },
+ "object-keys": {
+ "version": "1.0.12",
+ "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.12.tgz",
+ "integrity": "sha512-FTMyFUm2wBcGHnH2eXmz7tC6IwlqQZ6mVZ+6dm6vZ4IQIHjs6FdNsQBuKGPuUUUY6NfJw2PshC08Tn6LzLDOag==",
+ "dev": true
+ }
+ }
+ },
+ "fast-deep-equal": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz",
+ "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=",
+ "dev": true
+ },
+ "fast-glob": {
+ "version": "2.2.2",
+ "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.2.tgz",
+ "integrity": "sha512-TR6zxCKftDQnUAPvkrCWdBgDq/gbqx8A3ApnBrR5rMvpp6+KMJI0Igw7fkWPgeVK0uhRXTXdvO3O+YP0CaUX2g==",
+ "dev": true,
+ "requires": {
+ "@mrmlnc/readdir-enhanced": "^2.2.1",
+ "@nodelib/fs.stat": "^1.0.1",
+ "glob-parent": "^3.1.0",
+ "is-glob": "^4.0.0",
+ "merge2": "^1.2.1",
+ "micromatch": "^3.1.10"
+ },
+ "dependencies": {
+ "arr-diff": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz",
+ "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=",
+ "dev": true
+ },
+ "array-unique": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz",
+ "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=",
+ "dev": true
+ },
+ "braces": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
+ "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
+ "dev": true,
+ "requires": {
+ "arr-flatten": "^1.1.0",
+ "array-unique": "^0.3.2",
+ "extend-shallow": "^2.0.1",
+ "fill-range": "^4.0.0",
+ "isobject": "^3.0.1",
+ "repeat-element": "^1.1.2",
+ "snapdragon": "^0.8.1",
+ "snapdragon-node": "^2.0.1",
+ "split-string": "^3.0.2",
+ "to-regex": "^3.0.1"
+ },
+ "dependencies": {
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ }
+ }
+ },
+ "expand-brackets": {
+ "version": "2.1.4",
+ "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz",
+ "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=",
+ "dev": true,
+ "requires": {
+ "debug": "^2.3.3",
+ "define-property": "^0.2.5",
+ "extend-shallow": "^2.0.1",
+ "posix-character-classes": "^0.1.0",
+ "regex-not": "^1.0.0",
+ "snapdragon": "^0.8.1",
+ "to-regex": "^3.0.1"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "^0.1.0"
+ }
+ },
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ },
+ "is-accessor-descriptor": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
+ "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
+ "dev": true,
+ "requires": {
+ "kind-of": "^3.0.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "is-data-descriptor": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
+ "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
+ "dev": true,
+ "requires": {
+ "kind-of": "^3.0.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "is-descriptor": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
+ "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
+ "dev": true,
+ "requires": {
+ "is-accessor-descriptor": "^0.1.6",
+ "is-data-descriptor": "^0.1.4",
+ "kind-of": "^5.0.0"
+ }
+ },
+ "kind-of": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
+ "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
+ "dev": true
+ }
+ }
+ },
+ "extglob": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz",
+ "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==",
+ "dev": true,
+ "requires": {
+ "array-unique": "^0.3.2",
+ "define-property": "^1.0.0",
+ "expand-brackets": "^2.1.4",
+ "extend-shallow": "^2.0.1",
+ "fragment-cache": "^0.2.1",
+ "regex-not": "^1.0.0",
+ "snapdragon": "^0.8.1",
+ "to-regex": "^3.0.1"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
+ "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "^1.0.0"
+ }
+ },
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ }
+ }
+ },
+ "fill-range": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
+ "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
+ "dev": true,
+ "requires": {
+ "extend-shallow": "^2.0.1",
+ "is-number": "^3.0.0",
+ "repeat-string": "^1.6.1",
+ "to-regex-range": "^2.1.0"
+ },
+ "dependencies": {
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ }
+ }
+ },
+ "glob-parent": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz",
+ "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=",
+ "dev": true,
+ "requires": {
+ "is-glob": "^3.1.0",
+ "path-dirname": "^1.0.0"
+ },
+ "dependencies": {
+ "is-glob": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
+ "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
+ "dev": true,
+ "requires": {
+ "is-extglob": "^2.1.0"
+ }
+ }
+ }
+ },
+ "is-accessor-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
+ "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^6.0.0"
+ }
+ },
+ "is-data-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
+ "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^6.0.0"
+ }
+ },
+ "is-descriptor": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
+ "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+ "dev": true,
+ "requires": {
+ "is-accessor-descriptor": "^1.0.0",
+ "is-data-descriptor": "^1.0.0",
+ "kind-of": "^6.0.2"
+ }
+ },
+ "is-extglob": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+ "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
+ "dev": true
+ },
+ "is-glob": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz",
+ "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=",
+ "dev": true,
+ "requires": {
+ "is-extglob": "^2.1.1"
+ }
+ },
+ "is-number": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
+ "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
+ "dev": true,
+ "requires": {
+ "kind-of": "^3.0.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
+ "dev": true
+ },
+ "kind-of": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
+ "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==",
+ "dev": true
+ },
+ "micromatch": {
+ "version": "3.1.10",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
+ "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
+ "dev": true,
+ "requires": {
+ "arr-diff": "^4.0.0",
+ "array-unique": "^0.3.2",
+ "braces": "^2.3.1",
+ "define-property": "^2.0.2",
+ "extend-shallow": "^3.0.2",
+ "extglob": "^2.0.4",
+ "fragment-cache": "^0.2.1",
+ "kind-of": "^6.0.2",
+ "nanomatch": "^1.2.9",
+ "object.pick": "^1.3.0",
+ "regex-not": "^1.0.0",
+ "snapdragon": "^0.8.1",
+ "to-regex": "^3.0.2"
+ }
+ }
+ }
+ },
+ "fast-json-stable-stringify": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz",
+ "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=",
+ "dev": true
+ },
+ "fast-levenshtein": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
+ "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=",
+ "dev": true
+ },
+ "fault": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/fault/-/fault-1.0.2.tgz",
+ "integrity": "sha512-o2eo/X2syzzERAtN5LcGbiVQ0WwZSlN3qLtadwAz3X8Bu+XWD16dja/KMsjZLiQr+BLGPDnHGkc4yUJf1Xpkpw==",
+ "dev": true,
+ "requires": {
+ "format": "^0.2.2"
+ }
+ },
+ "figures": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz",
+ "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=",
+ "dev": true,
+ "requires": {
+ "escape-string-regexp": "^1.0.5"
+ }
+ },
+ "file-entry-cache": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz",
+ "integrity": "sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=",
+ "dev": true,
+ "requires": {
+ "flat-cache": "^1.2.1",
+ "object-assign": "^4.0.1"
+ }
+ },
+ "filename-regex": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz",
+ "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=",
+ "dev": true
+ },
+ "filesize": {
+ "version": "3.6.1",
+ "resolved": "https://registry.npmjs.org/filesize/-/filesize-3.6.1.tgz",
+ "integrity": "sha512-7KjR1vv6qnicaPMi1iiTcI85CyYwRO/PSFCu6SvqL8jN2Wjt/NIYQTFtFs7fSDCYOstUkEWIQGFUg5YZQfjlcg==",
+ "dev": true
+ },
+ "fill-range": {
+ "version": "2.2.4",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.4.tgz",
+ "integrity": "sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==",
+ "dev": true,
+ "requires": {
+ "is-number": "^2.1.0",
+ "isobject": "^2.0.0",
+ "randomatic": "^3.0.0",
+ "repeat-element": "^1.1.2",
+ "repeat-string": "^1.5.2"
+ }
+ },
+ "find-parent-dir": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/find-parent-dir/-/find-parent-dir-0.3.0.tgz",
+ "integrity": "sha1-M8RLQpqysvBkYpnF+fcY83b/jVQ=",
+ "dev": true
+ },
+ "find-root": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz",
+ "integrity": "sha1-q8/Iunb3CMQql7PWhbfpRQv7nOQ=",
+ "dev": true
+ },
+ "find-up": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz",
+ "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=",
+ "dev": true,
+ "requires": {
+ "path-exists": "^2.0.0",
+ "pinkie-promise": "^2.0.0"
+ }
+ },
+ "findup-sync": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.3.0.tgz",
+ "integrity": "sha1-N5MKpdgWt3fANEXhlmzGeQpMCxY=",
+ "dev": true,
+ "requires": {
+ "glob": "~5.0.0"
+ },
+ "dependencies": {
+ "glob": {
+ "version": "5.0.15",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz",
+ "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=",
+ "dev": true,
+ "requires": {
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "2 || 3",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ }
+ }
+ }
+ },
+ "flat-cache": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.0.tgz",
+ "integrity": "sha1-0wMLMrOBVPTjt+nHCfSQ9++XxIE=",
+ "dev": true,
+ "requires": {
+ "circular-json": "^0.3.1",
+ "del": "^2.0.2",
+ "graceful-fs": "^4.1.2",
+ "write": "^0.2.1"
+ }
+ },
+ "fn-name": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/fn-name/-/fn-name-2.0.1.tgz",
+ "integrity": "sha1-UhTXU3pNBqSjAcDMJi/rhBiAAuc=",
+ "dev": true
+ },
+ "folder-hash": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/folder-hash/-/folder-hash-2.1.1.tgz",
+ "integrity": "sha512-owr5AVhj+nxnzsyDLOiwSUC6S3mqcxJSfZneFgOYoaScMBwPGt3cz0XiBPRrCIUk2Hs1ucQXFGwfB40JxBqb4w==",
+ "dev": true,
+ "requires": {
+ "debug": "^3.1.0",
+ "graceful-fs": "~4.1.11",
+ "minimatch": "~3.0.4"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "3.2.5",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.5.tgz",
+ "integrity": "sha512-D61LaDQPQkxJ5AUM2mbSJRbPkNs/TmdmOeLAi1hgDkpDfIfetSrjmWhccwtuResSwMbACjx/xXQofvM9CE/aeg==",
+ "dev": true,
+ "requires": {
+ "ms": "^2.1.1"
+ }
+ },
+ "ms": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
+ "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==",
+ "dev": true
+ }
+ }
+ },
+ "for-in": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz",
+ "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=",
+ "dev": true
+ },
+ "for-own": {
+ "version": "0.1.5",
+ "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz",
+ "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=",
+ "dev": true,
+ "requires": {
+ "for-in": "^1.0.1"
+ }
+ },
+ "foreach": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz",
+ "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=",
+ "dev": true
+ },
+ "forever-agent": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
+ "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=",
+ "dev": true
+ },
+ "form-data": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz",
+ "integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=",
+ "dev": true,
+ "requires": {
+ "asynckit": "^0.4.0",
+ "combined-stream": "1.0.6",
+ "mime-types": "^2.1.12"
+ }
+ },
+ "format": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/format/-/format-0.2.2.tgz",
+ "integrity": "sha1-1hcBB+nv3E7TDJ3DkBbflCtctYs=",
+ "dev": true
+ },
+ "fragment-cache": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz",
+ "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=",
+ "dev": true,
+ "requires": {
+ "map-cache": "^0.2.2"
+ }
+ },
+ "fresh": {
+ "version": "0.5.2",
+ "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
+ "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=",
+ "dev": true
+ },
+ "fs-constants": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz",
+ "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==",
+ "dev": true
+ },
+ "fs-extra": {
+ "version": "0.26.7",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.26.7.tgz",
+ "integrity": "sha1-muH92UiXeY7at20JGM9C0MMYT6k=",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.2",
+ "jsonfile": "^2.1.0",
+ "klaw": "^1.0.0",
+ "path-is-absolute": "^1.0.0",
+ "rimraf": "^2.2.8"
+ }
+ },
+ "fs-minipass": {
+ "version": "1.2.5",
+ "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.5.tgz",
+ "integrity": "sha512-JhBl0skXjUPCFH7x6x61gQxrKyXsxB5gcgePLZCwfyCGGsTISMoIeObbrvVeP6Xmyaudw4TT43qV2Gz+iyd2oQ==",
+ "dev": true,
+ "requires": {
+ "minipass": "^2.2.1"
+ }
+ },
+ "fs.realpath": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
+ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
+ "dev": true
+ },
+ "fsevents": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.4.tgz",
+ "integrity": "sha512-z8H8/diyk76B7q5wg+Ud0+CqzcAF3mBBI/bA5ne5zrRUUIvNkJY//D3BqyH571KuAC4Nr7Rw7CjWX4r0y9DvNg==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "nan": "^2.9.2",
+ "node-pre-gyp": "^0.10.0"
+ },
+ "dependencies": {
+ "abbrev": {
+ "version": "1.1.1",
+ "resolved": false,
+ "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==",
+ "dev": true,
+ "optional": true
+ },
+ "ansi-regex": {
+ "version": "2.1.1",
+ "resolved": false,
+ "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
+ "dev": true,
+ "optional": true
+ },
+ "aproba": {
+ "version": "1.2.0",
+ "resolved": false,
+ "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==",
+ "dev": true,
+ "optional": true
+ },
+ "are-we-there-yet": {
+ "version": "1.1.4",
+ "resolved": false,
+ "integrity": "sha1-u13KOCu5TwXhUZQ3PRb9O6HKEQ0=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "delegates": "^1.0.0",
+ "readable-stream": "^2.0.6"
+ }
+ },
+ "balanced-match": {
+ "version": "1.0.0",
+ "resolved": false,
+ "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
+ "dev": true,
+ "optional": true
+ },
+ "brace-expansion": {
+ "version": "1.1.11",
+ "resolved": false,
+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "chownr": {
+ "version": "1.0.1",
+ "resolved": false,
+ "integrity": "sha1-4qdQQqlVGQi+vSW4Uj1fl2nXkYE=",
+ "dev": true,
+ "optional": true
+ },
+ "code-point-at": {
+ "version": "1.1.0",
+ "resolved": false,
+ "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=",
+ "dev": true,
+ "optional": true
+ },
+ "concat-map": {
+ "version": "0.0.1",
+ "resolved": false,
+ "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
+ "dev": true,
+ "optional": true
+ },
+ "console-control-strings": {
+ "version": "1.1.0",
+ "resolved": false,
+ "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=",
+ "dev": true,
+ "optional": true
+ },
+ "core-util-is": {
+ "version": "1.0.2",
+ "resolved": false,
+ "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
+ "dev": true,
+ "optional": true
+ },
+ "debug": {
+ "version": "2.6.9",
+ "resolved": false,
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "deep-extend": {
+ "version": "0.5.1",
+ "resolved": false,
+ "integrity": "sha512-N8vBdOa+DF7zkRrDCsaOXoCs/E2fJfx9B9MrKnnSiHNh4ws7eSys6YQE4KvT1cecKmOASYQBhbKjeuDD9lT81w==",
+ "dev": true,
+ "optional": true
+ },
+ "delegates": {
+ "version": "1.0.0",
+ "resolved": false,
+ "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=",
+ "dev": true,
+ "optional": true
+ },
+ "detect-libc": {
+ "version": "1.0.3",
+ "resolved": false,
+ "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=",
+ "dev": true,
+ "optional": true
+ },
+ "fs-minipass": {
+ "version": "1.2.5",
+ "resolved": false,
+ "integrity": "sha512-JhBl0skXjUPCFH7x6x61gQxrKyXsxB5gcgePLZCwfyCGGsTISMoIeObbrvVeP6Xmyaudw4TT43qV2Gz+iyd2oQ==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "minipass": "^2.2.1"
+ }
+ },
+ "fs.realpath": {
+ "version": "1.0.0",
+ "resolved": false,
+ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
+ "dev": true,
+ "optional": true
+ },
+ "gauge": {
+ "version": "2.7.4",
+ "resolved": false,
+ "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "aproba": "^1.0.3",
+ "console-control-strings": "^1.0.0",
+ "has-unicode": "^2.0.0",
+ "object-assign": "^4.1.0",
+ "signal-exit": "^3.0.0",
+ "string-width": "^1.0.1",
+ "strip-ansi": "^3.0.1",
+ "wide-align": "^1.1.0"
+ }
+ },
+ "glob": {
+ "version": "7.1.2",
+ "resolved": false,
+ "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.0.4",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ }
+ },
+ "has-unicode": {
+ "version": "2.0.1",
+ "resolved": false,
+ "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=",
+ "dev": true,
+ "optional": true
+ },
+ "iconv-lite": {
+ "version": "0.4.21",
+ "resolved": false,
+ "integrity": "sha512-En5V9za5mBt2oUA03WGD3TwDv0MKAruqsuxstbMUZaj9W9k/m1CV/9py3l0L5kw9Bln8fdHQmzHSYtvpvTLpKw==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "safer-buffer": "^2.1.0"
+ }
+ },
+ "ignore-walk": {
+ "version": "3.0.1",
+ "resolved": false,
+ "integrity": "sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "minimatch": "^3.0.4"
+ }
+ },
+ "inflight": {
+ "version": "1.0.6",
+ "resolved": false,
+ "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "once": "^1.3.0",
+ "wrappy": "1"
+ }
+ },
+ "inherits": {
+ "version": "2.0.3",
+ "resolved": false,
+ "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
+ "dev": true,
+ "optional": true
+ },
+ "ini": {
+ "version": "1.3.5",
+ "resolved": false,
+ "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==",
+ "dev": true,
+ "optional": true
+ },
+ "is-fullwidth-code-point": {
+ "version": "1.0.0",
+ "resolved": false,
+ "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "number-is-nan": "^1.0.0"
+ }
+ },
+ "isarray": {
+ "version": "1.0.0",
+ "resolved": false,
+ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
+ "dev": true,
+ "optional": true
+ },
+ "minimatch": {
+ "version": "3.0.4",
+ "resolved": false,
+ "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "brace-expansion": "^1.1.7"
+ }
+ },
+ "minimist": {
+ "version": "0.0.8",
+ "resolved": false,
+ "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
+ "dev": true,
+ "optional": true
+ },
+ "minipass": {
+ "version": "2.2.4",
+ "resolved": false,
+ "integrity": "sha512-hzXIWWet/BzWhYs2b+u7dRHlruXhwdgvlTMDKC6Cb1U7ps6Ac6yQlR39xsbjWJE377YTCtKwIXIpJ5oP+j5y8g==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "safe-buffer": "^5.1.1",
+ "yallist": "^3.0.0"
+ }
+ },
+ "minizlib": {
+ "version": "1.1.0",
+ "resolved": false,
+ "integrity": "sha512-4T6Ur/GctZ27nHfpt9THOdRZNgyJ9FZchYO1ceg5S8Q3DNLCKYy44nCZzgCJgcvx2UM8czmqak5BCxJMrq37lA==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "minipass": "^2.2.1"
+ }
+ },
+ "mkdirp": {
+ "version": "0.5.1",
+ "resolved": false,
+ "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "minimist": "0.0.8"
+ }
+ },
+ "ms": {
+ "version": "2.0.0",
+ "resolved": false,
+ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+ "dev": true,
+ "optional": true
+ },
+ "needle": {
+ "version": "2.2.0",
+ "resolved": false,
+ "integrity": "sha512-eFagy6c+TYayorXw/qtAdSvaUpEbBsDwDyxYFgLZ0lTojfH7K+OdBqAF7TAFwDokJaGpubpSGG0wO3iC0XPi8w==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "debug": "^2.1.2",
+ "iconv-lite": "^0.4.4",
+ "sax": "^1.2.4"
+ }
+ },
+ "node-pre-gyp": {
+ "version": "0.10.0",
+ "resolved": false,
+ "integrity": "sha512-G7kEonQLRbcA/mOoFoxvlMrw6Q6dPf92+t/l0DFSMuSlDoWaI9JWIyPwK0jyE1bph//CUEL65/Fz1m2vJbmjQQ==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "detect-libc": "^1.0.2",
+ "mkdirp": "^0.5.1",
+ "needle": "^2.2.0",
+ "nopt": "^4.0.1",
+ "npm-packlist": "^1.1.6",
+ "npmlog": "^4.0.2",
+ "rc": "^1.1.7",
+ "rimraf": "^2.6.1",
+ "semver": "^5.3.0",
+ "tar": "^4"
+ }
+ },
+ "nopt": {
+ "version": "4.0.1",
+ "resolved": false,
+ "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "abbrev": "1",
+ "osenv": "^0.1.4"
+ }
+ },
+ "npm-bundled": {
+ "version": "1.0.3",
+ "resolved": false,
+ "integrity": "sha512-ByQ3oJ/5ETLyglU2+8dBObvhfWXX8dtPZDMePCahptliFX2iIuhyEszyFk401PZUNQH20vvdW5MLjJxkwU80Ow==",
+ "dev": true,
+ "optional": true
+ },
+ "npm-packlist": {
+ "version": "1.1.10",
+ "resolved": false,
+ "integrity": "sha512-AQC0Dyhzn4EiYEfIUjCdMl0JJ61I2ER9ukf/sLxJUcZHfo+VyEfz2rMJgLZSS1v30OxPQe1cN0LZA1xbcaVfWA==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "ignore-walk": "^3.0.1",
+ "npm-bundled": "^1.0.1"
+ }
+ },
+ "npmlog": {
+ "version": "4.1.2",
+ "resolved": false,
+ "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "are-we-there-yet": "~1.1.2",
+ "console-control-strings": "~1.1.0",
+ "gauge": "~2.7.3",
+ "set-blocking": "~2.0.0"
+ }
+ },
+ "number-is-nan": {
+ "version": "1.0.1",
+ "resolved": false,
+ "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=",
+ "dev": true,
+ "optional": true
+ },
+ "object-assign": {
+ "version": "4.1.1",
+ "resolved": false,
+ "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
+ "dev": true,
+ "optional": true
+ },
+ "once": {
+ "version": "1.4.0",
+ "resolved": false,
+ "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "wrappy": "1"
+ }
+ },
+ "os-homedir": {
+ "version": "1.0.2",
+ "resolved": false,
+ "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=",
+ "dev": true,
+ "optional": true
+ },
+ "os-tmpdir": {
+ "version": "1.0.2",
+ "resolved": false,
+ "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=",
+ "dev": true,
+ "optional": true
+ },
+ "osenv": {
+ "version": "0.1.5",
+ "resolved": false,
+ "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "os-homedir": "^1.0.0",
+ "os-tmpdir": "^1.0.0"
+ }
+ },
+ "path-is-absolute": {
+ "version": "1.0.1",
+ "resolved": false,
+ "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
+ "dev": true,
+ "optional": true
+ },
+ "process-nextick-args": {
+ "version": "2.0.0",
+ "resolved": false,
+ "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==",
+ "dev": true,
+ "optional": true
+ },
+ "rc": {
+ "version": "1.2.7",
+ "resolved": false,
+ "integrity": "sha512-LdLD8xD4zzLsAT5xyushXDNscEjB7+2ulnl8+r1pnESlYtlJtVSoCMBGr30eDRJ3+2Gq89jK9P9e4tCEH1+ywA==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "deep-extend": "^0.5.1",
+ "ini": "~1.3.0",
+ "minimist": "^1.2.0",
+ "strip-json-comments": "~2.0.1"
+ },
+ "dependencies": {
+ "minimist": {
+ "version": "1.2.0",
+ "resolved": false,
+ "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
+ "dev": true,
+ "optional": true
+ }
+ }
+ },
+ "readable-stream": {
+ "version": "2.3.6",
+ "resolved": false,
+ "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
+ }
+ },
+ "rimraf": {
+ "version": "2.6.2",
+ "resolved": false,
+ "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "glob": "^7.0.5"
+ }
+ },
+ "safe-buffer": {
+ "version": "5.1.1",
+ "resolved": false,
+ "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==",
+ "dev": true,
+ "optional": true
+ },
+ "safer-buffer": {
+ "version": "2.1.2",
+ "resolved": false,
+ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
+ "dev": true,
+ "optional": true
+ },
+ "sax": {
+ "version": "1.2.4",
+ "resolved": false,
+ "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==",
+ "dev": true,
+ "optional": true
+ },
+ "semver": {
+ "version": "5.5.0",
+ "resolved": false,
+ "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==",
+ "dev": true,
+ "optional": true
+ },
+ "set-blocking": {
+ "version": "2.0.0",
+ "resolved": false,
+ "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=",
+ "dev": true,
+ "optional": true
+ },
+ "signal-exit": {
+ "version": "3.0.2",
+ "resolved": false,
+ "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=",
+ "dev": true,
+ "optional": true
+ },
+ "string-width": {
+ "version": "1.0.2",
+ "resolved": false,
+ "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "code-point-at": "^1.0.0",
+ "is-fullwidth-code-point": "^1.0.0",
+ "strip-ansi": "^3.0.0"
+ }
+ },
+ "string_decoder": {
+ "version": "1.1.1",
+ "resolved": false,
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "safe-buffer": "~5.1.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "3.0.1",
+ "resolved": false,
+ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "ansi-regex": "^2.0.0"
+ }
+ },
+ "strip-json-comments": {
+ "version": "2.0.1",
+ "resolved": false,
+ "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=",
+ "dev": true,
+ "optional": true
+ },
+ "tar": {
+ "version": "4.4.1",
+ "resolved": false,
+ "integrity": "sha512-O+v1r9yN4tOsvl90p5HAP4AEqbYhx4036AGMm075fH9F8Qwi3oJ+v4u50FkT/KkvywNGtwkk0zRI+8eYm1X/xg==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "chownr": "^1.0.1",
+ "fs-minipass": "^1.2.5",
+ "minipass": "^2.2.4",
+ "minizlib": "^1.1.0",
+ "mkdirp": "^0.5.0",
+ "safe-buffer": "^5.1.1",
+ "yallist": "^3.0.2"
+ }
+ },
+ "util-deprecate": {
+ "version": "1.0.2",
+ "resolved": false,
+ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
+ "dev": true,
+ "optional": true
+ },
+ "wide-align": {
+ "version": "1.1.2",
+ "resolved": false,
+ "integrity": "sha512-ijDLlyQ7s6x1JgCLur53osjm/UXUYD9+0PbYKrBsYisYXzCxN+HC3mYDNy/dWdmf3AwqwU3CXwDCvsNgGK1S0w==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "string-width": "^1.0.2"
+ }
+ },
+ "wrappy": {
+ "version": "1.0.2",
+ "resolved": false,
+ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
+ "dev": true,
+ "optional": true
+ },
+ "yallist": {
+ "version": "3.0.2",
+ "resolved": false,
+ "integrity": "sha1-hFK0u36Dx8GI2AQcGoN8dz1ti7k=",
+ "dev": true,
+ "optional": true
+ }
+ }
+ },
+ "function-bind": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
+ "integrity": "sha1-pWiZ0+o8m6uHS7l3O3xe3pL0iV0=",
+ "dev": true
+ },
+ "functional-red-black-tree": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz",
+ "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=",
+ "dev": true
+ },
+ "g-status": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/g-status/-/g-status-2.0.2.tgz",
+ "integrity": "sha512-kQoE9qH+T1AHKgSSD0Hkv98bobE90ILQcXAF4wvGgsr7uFqNvwmh8j+Lq3l0RVt3E3HjSbv2B9biEGcEtpHLCA==",
+ "dev": true,
+ "requires": {
+ "arrify": "^1.0.1",
+ "matcher": "^1.0.0",
+ "simple-git": "^1.85.0"
+ }
+ },
+ "get-own-enumerable-property-symbols": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.0.tgz",
+ "integrity": "sha512-CIJYJC4GGF06TakLg8z4GQKvDsx9EMspVxOYih7LerEL/WosUnFIww45CGfxfeKHqlg3twgUrYRT1O3WQqjGCg==",
+ "dev": true
+ },
+ "get-pkg-repo": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/get-pkg-repo/-/get-pkg-repo-1.4.0.tgz",
+ "integrity": "sha1-xztInAbYDMVTbCyFP54FIyBWly0=",
+ "dev": true,
+ "requires": {
+ "hosted-git-info": "^2.1.4",
+ "meow": "^3.3.0",
+ "normalize-package-data": "^2.3.0",
+ "parse-github-repo-url": "^1.3.0",
+ "through2": "^2.0.0"
+ },
+ "dependencies": {
+ "camelcase": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz",
+ "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=",
+ "dev": true
+ },
+ "camelcase-keys": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz",
+ "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=",
+ "dev": true,
+ "requires": {
+ "camelcase": "^2.0.0",
+ "map-obj": "^1.0.0"
+ }
+ },
+ "indent-string": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz",
+ "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=",
+ "dev": true,
+ "requires": {
+ "repeating": "^2.0.0"
+ }
+ },
+ "map-obj": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz",
+ "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=",
+ "dev": true
+ },
+ "meow": {
+ "version": "3.7.0",
+ "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz",
+ "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=",
+ "dev": true,
+ "requires": {
+ "camelcase-keys": "^2.0.0",
+ "decamelize": "^1.1.2",
+ "loud-rejection": "^1.0.0",
+ "map-obj": "^1.0.1",
+ "minimist": "^1.1.3",
+ "normalize-package-data": "^2.3.4",
+ "object-assign": "^4.0.1",
+ "read-pkg-up": "^1.0.1",
+ "redent": "^1.0.0",
+ "trim-newlines": "^1.0.0"
+ }
+ },
+ "redent": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz",
+ "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=",
+ "dev": true,
+ "requires": {
+ "indent-string": "^2.1.0",
+ "strip-indent": "^1.0.1"
+ }
+ },
+ "strip-indent": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz",
+ "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=",
+ "dev": true,
+ "requires": {
+ "get-stdin": "^4.0.1"
+ }
+ },
+ "trim-newlines": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz",
+ "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=",
+ "dev": true
+ }
+ }
+ },
+ "get-stdin": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz",
+ "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=",
+ "dev": true
+ },
+ "get-stream": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz",
+ "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=",
+ "dev": true
+ },
+ "get-value": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz",
+ "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=",
+ "dev": true
+ },
+ "getpass": {
+ "version": "0.1.7",
+ "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
+ "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
+ "dev": true,
+ "requires": {
+ "assert-plus": "^1.0.0"
+ }
+ },
+ "git-raw-commits": {
+ "version": "1.3.6",
+ "resolved": "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-1.3.6.tgz",
+ "integrity": "sha512-svsK26tQ8vEKnMshTDatSIQSMDdz8CxIIqKsvPqbtV23Etmw6VNaFAitu8zwZ0VrOne7FztwPyRLxK7/DIUTQg==",
+ "dev": true,
+ "requires": {
+ "dargs": "^4.0.1",
+ "lodash.template": "^4.0.2",
+ "meow": "^4.0.0",
+ "split2": "^2.0.0",
+ "through2": "^2.0.0"
+ }
+ },
+ "git-remote-origin-url": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/git-remote-origin-url/-/git-remote-origin-url-2.0.0.tgz",
+ "integrity": "sha1-UoJlna4hBxRaERJhEq0yFuxfpl8=",
+ "dev": true,
+ "requires": {
+ "gitconfiglocal": "^1.0.0",
+ "pify": "^2.3.0"
+ }
+ },
+ "git-semver-tags": {
+ "version": "1.3.6",
+ "resolved": "https://registry.npmjs.org/git-semver-tags/-/git-semver-tags-1.3.6.tgz",
+ "integrity": "sha512-2jHlJnln4D/ECk9FxGEBh3k44wgYdWjWDtMmJPaecjoRmxKo3Y1Lh8GMYuOPu04CHw86NTAODchYjC5pnpMQig==",
+ "dev": true,
+ "requires": {
+ "meow": "^4.0.0",
+ "semver": "^5.5.0"
+ }
+ },
+ "gitconfiglocal": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/gitconfiglocal/-/gitconfiglocal-1.0.0.tgz",
+ "integrity": "sha1-QdBF84UaXqiPA/JMocYXgRRGS5s=",
+ "dev": true,
+ "requires": {
+ "ini": "^1.3.2"
+ }
+ },
+ "glob": {
+ "version": "6.0.4",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz",
+ "integrity": "sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI=",
+ "dev": true,
+ "requires": {
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "2 || 3",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ }
+ },
+ "glob-base": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz",
+ "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=",
+ "dev": true,
+ "requires": {
+ "glob-parent": "^2.0.0",
+ "is-glob": "^2.0.0"
+ }
+ },
+ "glob-parent": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz",
+ "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=",
+ "dev": true,
+ "requires": {
+ "is-glob": "^2.0.0"
+ }
+ },
+ "glob-to-regexp": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz",
+ "integrity": "sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=",
+ "dev": true
+ },
+ "global-dirs": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz",
+ "integrity": "sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU=",
+ "dev": true,
+ "requires": {
+ "ini": "^1.3.4"
+ }
+ },
+ "globals": {
+ "version": "11.7.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-11.7.0.tgz",
+ "integrity": "sha512-K8BNSPySfeShBQXsahYB/AbbWruVOTyVpgoIDnl8odPpeSfP2J5QO2oLFFdl2j7GfDCtZj2bMKar2T49itTPCg==",
+ "dev": true
+ },
+ "globby": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz",
+ "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=",
+ "dev": true,
+ "requires": {
+ "array-union": "^1.0.1",
+ "arrify": "^1.0.0",
+ "glob": "^7.0.3",
+ "object-assign": "^4.0.1",
+ "pify": "^2.0.0",
+ "pinkie-promise": "^2.0.0"
+ },
+ "dependencies": {
+ "glob": {
+ "version": "7.1.3",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz",
+ "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==",
+ "dev": true,
+ "requires": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.0.4",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ }
+ }
+ }
+ },
+ "got": {
+ "version": "9.6.0",
+ "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz",
+ "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==",
+ "dev": true,
+ "requires": {
+ "@sindresorhus/is": "^0.14.0",
+ "@szmarczak/http-timer": "^1.1.2",
+ "cacheable-request": "^6.0.0",
+ "decompress-response": "^3.3.0",
+ "duplexer3": "^0.1.4",
+ "get-stream": "^4.1.0",
+ "lowercase-keys": "^1.0.1",
+ "mimic-response": "^1.0.1",
+ "p-cancelable": "^1.0.0",
+ "to-readable-stream": "^1.0.0",
+ "url-parse-lax": "^3.0.0"
+ },
+ "dependencies": {
+ "get-stream": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz",
+ "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==",
+ "dev": true,
+ "requires": {
+ "pump": "^3.0.0"
+ }
+ },
+ "pump": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
+ "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
+ "dev": true,
+ "requires": {
+ "end-of-stream": "^1.1.0",
+ "once": "^1.3.1"
+ }
+ }
+ }
+ },
+ "graceful-fs": {
+ "version": "4.1.11",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz",
+ "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=",
+ "dev": true
+ },
+ "gunzip-maybe": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/gunzip-maybe/-/gunzip-maybe-1.4.1.tgz",
+ "integrity": "sha512-qtutIKMthNJJgeHQS7kZ9FqDq59/Wn0G2HYCRNjpup7yKfVI6/eqwpmroyZGFoCYaG+sW6psNVb4zoLADHpp2g==",
+ "dev": true,
+ "requires": {
+ "browserify-zlib": "^0.1.4",
+ "is-deflate": "^1.0.0",
+ "is-gzip": "^1.0.0",
+ "peek-stream": "^1.1.0",
+ "pumpify": "^1.3.3",
+ "through2": "^2.0.3"
+ }
+ },
+ "handlebars": {
+ "version": "4.0.11",
+ "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.11.tgz",
+ "integrity": "sha1-Ywo13+ApS8KB7a5v/F0yn8eYLcw=",
+ "dev": true,
+ "requires": {
+ "async": "^1.4.0",
+ "optimist": "^0.6.1",
+ "source-map": "^0.4.4",
+ "uglify-js": "^2.6"
+ },
+ "dependencies": {
+ "minimist": {
+ "version": "0.0.10",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz",
+ "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=",
+ "dev": true
+ },
+ "optimist": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz",
+ "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=",
+ "dev": true,
+ "requires": {
+ "minimist": "~0.0.1",
+ "wordwrap": "~0.0.2"
+ }
+ },
+ "source-map": {
+ "version": "0.4.4",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz",
+ "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=",
+ "dev": true,
+ "requires": {
+ "amdefine": ">=0.0.4"
+ }
+ }
+ }
+ },
+ "har-schema": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz",
+ "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=",
+ "dev": true
+ },
+ "har-validator": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.0.tgz",
+ "integrity": "sha512-+qnmNjI4OfH2ipQ9VQOw23bBd/ibtfbVdK2fYbY4acTDqKTW/YDp9McimZdDbG8iV9fZizUqQMD5xvriB146TA==",
+ "dev": true,
+ "requires": {
+ "ajv": "^5.3.0",
+ "har-schema": "^2.0.0"
+ }
+ },
+ "has": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/has/-/has-1.0.1.tgz",
+ "integrity": "sha1-hGFzP1OLCDfJNh45qauelwTcLyg=",
+ "dev": true,
+ "requires": {
+ "function-bind": "^1.0.2"
+ }
+ },
+ "has-ansi": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
+ "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^2.0.0"
+ }
+ },
+ "has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
+ "dev": true
+ },
+ "has-value": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz",
+ "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=",
+ "dev": true,
+ "requires": {
+ "get-value": "^2.0.6",
+ "has-values": "^1.0.0",
+ "isobject": "^3.0.0"
+ },
+ "dependencies": {
+ "isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
+ "dev": true
+ }
+ }
+ },
+ "has-values": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz",
+ "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=",
+ "dev": true,
+ "requires": {
+ "is-number": "^3.0.0",
+ "kind-of": "^4.0.0"
+ },
+ "dependencies": {
+ "is-number": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
+ "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
+ "dev": true,
+ "requires": {
+ "kind-of": "^3.0.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "kind-of": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz",
+ "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "hash-base": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz",
+ "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=",
+ "dev": true,
+ "requires": {
+ "inherits": "^2.0.1",
+ "safe-buffer": "^5.0.1"
+ }
+ },
+ "hash.js": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.3.tgz",
+ "integrity": "sha1-NA3tvmKQGHFRweodd3o0SJNd+EY=",
+ "dev": true,
+ "requires": {
+ "inherits": "^2.0.3",
+ "minimalistic-assert": "^1.0.0"
+ }
+ },
+ "hmac-drbg": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz",
+ "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=",
+ "dev": true,
+ "requires": {
+ "hash.js": "^1.0.3",
+ "minimalistic-assert": "^1.0.0",
+ "minimalistic-crypto-utils": "^1.0.1"
+ }
+ },
+ "hosted-git-info": {
+ "version": "2.6.0",
+ "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.6.0.tgz",
+ "integrity": "sha512-lIbgIIQA3lz5XaB6vxakj6sDHADJiZadYEJB+FgA+C4nubM1NwcuvUr9EJPmnH1skZqpqUzWborWo8EIUi0Sdw==",
+ "dev": true
+ },
+ "htmlescape": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/htmlescape/-/htmlescape-1.1.1.tgz",
+ "integrity": "sha1-OgPtwiFLyjtmQko+eVk0lQnLA1E=",
+ "dev": true
+ },
+ "htmlparser2": {
+ "version": "3.9.2",
+ "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.9.2.tgz",
+ "integrity": "sha1-G9+HrMoPP55T+k/M6w9LTLsAszg=",
+ "dev": true,
+ "requires": {
+ "domelementtype": "^1.3.0",
+ "domhandler": "^2.3.0",
+ "domutils": "^1.5.1",
+ "entities": "^1.1.1",
+ "inherits": "^2.0.1",
+ "readable-stream": "^2.0.2"
+ },
+ "dependencies": {
+ "isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
+ "dev": true
+ },
+ "readable-stream": {
+ "version": "2.3.6",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
+ "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
+ "dev": true,
+ "requires": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
+ }
+ },
+ "string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "dev": true,
+ "requires": {
+ "safe-buffer": "~5.1.0"
+ }
+ }
+ }
+ },
+ "http-cache-semantics": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.0.2.tgz",
+ "integrity": "sha512-laeSTWIkuFa6lUgZAt+ic9RwOSEwbi9VDQNcCvMFO4sZiDc2Ha8DaZVCJnfpLLQCcS8rvCnIWYmz0POLxt7Dew==",
+ "dev": true
+ },
+ "http-errors": {
+ "version": "1.6.2",
+ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.2.tgz",
+ "integrity": "sha1-CgAsyFcHGSp+eUbO7cERVfYOxzY=",
+ "dev": true,
+ "requires": {
+ "depd": "1.1.1",
+ "inherits": "2.0.3",
+ "setprototypeof": "1.0.3",
+ "statuses": ">= 1.3.1 < 2"
+ }
+ },
+ "http-signature": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
+ "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=",
+ "dev": true,
+ "requires": {
+ "assert-plus": "^1.0.0",
+ "jsprim": "^1.2.2",
+ "sshpk": "^1.7.0"
+ }
+ },
+ "https-browserify": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-0.0.1.tgz",
+ "integrity": "sha1-P5E2XKvmC3ftDruiS0VOPgnZWoI=",
+ "dev": true
+ },
+ "husky": {
+ "version": "0.14.3",
+ "resolved": "https://registry.npmjs.org/husky/-/husky-0.14.3.tgz",
+ "integrity": "sha1-xp7XTi0neXaaF7qDmbVM4LY8EsM=",
+ "dev": true,
+ "requires": {
+ "is-ci": "^1.0.10",
+ "normalize-path": "^1.0.0",
+ "strip-indent": "^2.0.0"
+ },
+ "dependencies": {
+ "normalize-path": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-1.0.0.tgz",
+ "integrity": "sha1-MtDkcvkf80VwHBWoMRAY07CpA3k=",
+ "dev": true
+ }
+ }
+ },
+ "iconv-lite": {
+ "version": "0.4.19",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz",
+ "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==",
+ "dev": true
+ },
+ "ieee754": {
+ "version": "1.1.11",
+ "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.11.tgz",
+ "integrity": "sha512-VhDzCKN7K8ufStx/CLj5/PDTMgph+qwN5Pkd5i0sGnVwk56zJ0lkT8Qzi1xqWLS0Wp29DgDtNeS7v8/wMoZeHg==",
+ "dev": true
+ },
+ "ignore": {
+ "version": "3.3.8",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.8.tgz",
+ "integrity": "sha512-pUh+xUQQhQzevjRHHFqqcTy0/dP/kS9I8HSrUydhihjuD09W6ldVWFtIrwhXdUJHis3i2rZNqEHpZH/cbinFbg==",
+ "dev": true
+ },
+ "import-lazy": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz",
+ "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=",
+ "dev": true
+ },
+ "imurmurhash": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
+ "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=",
+ "dev": true
+ },
+ "indent-string": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz",
+ "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=",
+ "dev": true
+ },
+ "indexof": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz",
+ "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=",
+ "dev": true
+ },
+ "inflight": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
+ "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
+ "dev": true,
+ "requires": {
+ "once": "^1.3.0",
+ "wrappy": "1"
+ }
+ },
+ "inherits": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
+ "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
+ "dev": true
+ },
+ "ini": {
+ "version": "1.3.5",
+ "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz",
+ "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==",
+ "dev": true
+ },
+ "inline-source-map": {
+ "version": "0.6.2",
+ "resolved": "https://registry.npmjs.org/inline-source-map/-/inline-source-map-0.6.2.tgz",
+ "integrity": "sha1-+Tk0ccGKedFyT4Y/o4tYY3Ct4qU=",
+ "dev": true,
+ "requires": {
+ "source-map": "~0.5.3"
+ }
+ },
+ "inquirer": {
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.2.0.tgz",
+ "integrity": "sha512-QIEQG4YyQ2UYZGDC4srMZ7BjHOmNk1lR2JQj5UknBapklm6WHA+VVH7N+sUdX3A7NeCfGF8o4X1S3Ao7nAcIeg==",
+ "dev": true,
+ "requires": {
+ "ansi-escapes": "^3.0.0",
+ "chalk": "^2.0.0",
+ "cli-cursor": "^2.1.0",
+ "cli-width": "^2.0.0",
+ "external-editor": "^3.0.0",
+ "figures": "^2.0.0",
+ "lodash": "^4.17.10",
+ "mute-stream": "0.0.7",
+ "run-async": "^2.2.0",
+ "rxjs": "^6.1.0",
+ "string-width": "^2.1.0",
+ "strip-ansi": "^4.0.0",
+ "through": "^2.3.6"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
+ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
+ "dev": true
+ },
+ "ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "dev": true,
+ "requires": {
+ "color-convert": "^1.9.0"
+ }
+ },
+ "chalk": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz",
+ "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ }
+ },
+ "cli-cursor": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz",
+ "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=",
+ "dev": true,
+ "requires": {
+ "restore-cursor": "^2.0.0"
+ }
+ },
+ "has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
+ "dev": true
+ },
+ "is-fullwidth-code-point": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+ "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
+ "dev": true
+ },
+ "onetime": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz",
+ "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=",
+ "dev": true,
+ "requires": {
+ "mimic-fn": "^1.0.0"
+ }
+ },
+ "restore-cursor": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz",
+ "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=",
+ "dev": true,
+ "requires": {
+ "onetime": "^2.0.0",
+ "signal-exit": "^3.0.2"
+ }
+ },
+ "string-width": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
+ "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
+ "dev": true,
+ "requires": {
+ "is-fullwidth-code-point": "^2.0.0",
+ "strip-ansi": "^4.0.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
+ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^3.0.0"
+ }
+ },
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^3.0.0"
+ }
+ }
+ }
+ },
+ "insert-module-globals": {
+ "version": "7.0.6",
+ "resolved": "https://registry.npmjs.org/insert-module-globals/-/insert-module-globals-7.0.6.tgz",
+ "integrity": "sha512-R3sidKJr3SsggqQQ5cEwQb3pWG8RNx0UnpyeiOSR6jorRIeAOzH2gkTWnNdMnyRiVbjrG047K7UCtlMkQ1Mo9w==",
+ "dev": true,
+ "requires": {
+ "JSONStream": "^1.0.3",
+ "combine-source-map": "^0.8.0",
+ "concat-stream": "^1.6.1",
+ "is-buffer": "^1.1.0",
+ "lexical-scope": "^1.2.0",
+ "path-is-absolute": "^1.0.1",
+ "process": "~0.11.0",
+ "through2": "^2.0.0",
+ "xtend": "^4.0.0"
+ },
+ "dependencies": {
+ "concat-stream": {
+ "version": "1.6.2",
+ "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz",
+ "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==",
+ "dev": true,
+ "requires": {
+ "buffer-from": "^1.0.0",
+ "inherits": "^2.0.3",
+ "readable-stream": "^2.2.2",
+ "typedarray": "^0.0.6"
+ }
+ },
+ "isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
+ "dev": true
+ },
+ "readable-stream": {
+ "version": "2.3.6",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
+ "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
+ "dev": true,
+ "requires": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
+ }
+ },
+ "string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "dev": true,
+ "requires": {
+ "safe-buffer": "~5.1.0"
+ }
+ }
+ }
+ },
+ "ip": {
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz",
+ "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=",
+ "dev": true
+ },
+ "irregular-plurals": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/irregular-plurals/-/irregular-plurals-1.4.0.tgz",
+ "integrity": "sha1-LKmwM2UREYVUEvFr5dd8YqRYp2Y=",
+ "dev": true
+ },
+ "is-accessor-descriptor": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
+ "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
+ "dev": true,
+ "requires": {
+ "kind-of": "^3.0.2"
+ }
+ },
+ "is-alphabetical": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.2.tgz",
+ "integrity": "sha512-V0xN4BYezDHcBSKb1QHUFMlR4as/XEuCZBzMJUU4n7+Cbt33SmUnSol+pnXFvLxSHNq2CemUXNdaXV6Flg7+xg==",
+ "dev": true
+ },
+ "is-alphanumeric": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-alphanumeric/-/is-alphanumeric-1.0.0.tgz",
+ "integrity": "sha1-Spzvcdr0wAHB2B1j0UDPU/1oifQ=",
+ "dev": true
+ },
+ "is-alphanumerical": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.2.tgz",
+ "integrity": "sha512-pyfU/0kHdISIgslFfZN9nfY1Gk3MquQgUm1mJTjdkEPpkAKNWuBTSqFwewOpR7N351VkErCiyV71zX7mlQQqsg==",
+ "dev": true,
+ "requires": {
+ "is-alphabetical": "^1.0.0",
+ "is-decimal": "^1.0.0"
+ }
+ },
+ "is-arrayish": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
+ "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=",
+ "dev": true
+ },
+ "is-binary-path": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz",
+ "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=",
+ "dev": true,
+ "requires": {
+ "binary-extensions": "^1.0.0"
+ }
+ },
+ "is-buffer": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
+ "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
+ "dev": true
+ },
+ "is-builtin-module": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz",
+ "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=",
+ "dev": true,
+ "requires": {
+ "builtin-modules": "^1.0.0"
+ }
+ },
+ "is-callable": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz",
+ "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==",
+ "dev": true
+ },
+ "is-ci": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.1.0.tgz",
+ "integrity": "sha512-c7TnwxLePuqIlxHgr7xtxzycJPegNHFuIrBkwbf8hc58//+Op1CqFkyS+xnIMkwn9UsJIwc174BIjkyBmSpjKg==",
+ "dev": true,
+ "requires": {
+ "ci-info": "^1.0.0"
+ }
+ },
+ "is-data-descriptor": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
+ "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
+ "dev": true,
+ "requires": {
+ "kind-of": "^3.0.2"
+ }
+ },
+ "is-date-object": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz",
+ "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=",
+ "dev": true
+ },
+ "is-decimal": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.2.tgz",
+ "integrity": "sha512-TRzl7mOCchnhchN+f3ICUCzYvL9ul7R+TYOsZ8xia++knyZAJfv/uA1FvQXsAnYIl1T3B2X5E/J7Wb1QXiIBXg==",
+ "dev": true
+ },
+ "is-deflate": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-deflate/-/is-deflate-1.0.0.tgz",
+ "integrity": "sha1-yGKQHDwWH7CdrHzcfnhPgOmPLxQ=",
+ "dev": true
+ },
+ "is-descriptor": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
+ "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
+ "dev": true,
+ "requires": {
+ "is-accessor-descriptor": "^0.1.6",
+ "is-data-descriptor": "^0.1.4",
+ "kind-of": "^5.0.0"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
+ "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
+ "dev": true
+ }
+ }
+ },
+ "is-directory": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz",
+ "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=",
+ "dev": true
+ },
+ "is-dotfile": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz",
+ "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=",
+ "dev": true
+ },
+ "is-empty": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/is-empty/-/is-empty-1.2.0.tgz",
+ "integrity": "sha1-3pu1snhzigWgsJpX4ftNSjQan2s=",
+ "dev": true
+ },
+ "is-equal-shallow": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz",
+ "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=",
+ "dev": true,
+ "requires": {
+ "is-primitive": "^2.0.0"
+ }
+ },
+ "is-extendable": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
+ "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=",
+ "dev": true
+ },
+ "is-extglob": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz",
+ "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=",
+ "dev": true
+ },
+ "is-file": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-file/-/is-file-1.0.0.tgz",
+ "integrity": "sha1-KKRM+9nT2xkwRfIrZfzo7fliBZY=",
+ "dev": true
+ },
+ "is-finite": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz",
+ "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=",
+ "dev": true,
+ "requires": {
+ "number-is-nan": "^1.0.0"
+ }
+ },
+ "is-fullwidth-code-point": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
+ "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
+ "dev": true,
+ "requires": {
+ "number-is-nan": "^1.0.0"
+ }
+ },
+ "is-glob": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz",
+ "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=",
+ "dev": true,
+ "requires": {
+ "is-extglob": "^1.0.0"
+ }
+ },
+ "is-gzip": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-gzip/-/is-gzip-1.0.0.tgz",
+ "integrity": "sha1-bKiwe5nHeZgCWQDlVc7Y7YCHmoM=",
+ "dev": true
+ },
+ "is-hexadecimal": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.2.tgz",
+ "integrity": "sha512-but/G3sapV3MNyqiDBLrOi4x8uCIw0RY3o/Vb5GT0sMFHrVV7731wFSVy41T5FO1og7G0gXLJh0MkgPRouko/A==",
+ "dev": true
+ },
+ "is-hidden": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/is-hidden/-/is-hidden-1.1.1.tgz",
+ "integrity": "sha512-175UKecS8+U4hh2PSY0j4xnm2GKYzvSKnbh+naC93JjuBA7LgIo6YxlbcsSo6seFBdQO3RuIcH980yvqqD/2cA==",
+ "dev": true
+ },
+ "is-installed-globally": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.1.0.tgz",
+ "integrity": "sha1-Df2Y9akRFxbdU13aZJL2e/PSWoA=",
+ "dev": true,
+ "requires": {
+ "global-dirs": "^0.1.0",
+ "is-path-inside": "^1.0.0"
+ }
+ },
+ "is-npm": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-1.0.0.tgz",
+ "integrity": "sha1-8vtjpl5JBbQGyGBydloaTceTufQ=",
+ "dev": true
+ },
+ "is-number": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz",
+ "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=",
+ "dev": true,
+ "requires": {
+ "kind-of": "^3.0.2"
+ }
+ },
+ "is-obj": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz",
+ "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=",
+ "dev": true
+ },
+ "is-object": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-object/-/is-object-1.0.1.tgz",
+ "integrity": "sha1-iVJojF7C/9awPsyF52ngKQMINHA=",
+ "dev": true
+ },
+ "is-observable": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-observable/-/is-observable-1.1.0.tgz",
+ "integrity": "sha512-NqCa4Sa2d+u7BWc6CukaObG3Fh+CU9bvixbpcXYhy2VvYS7vVGIdAgnIS5Ks3A/cqk4rebLJ9s8zBstT2aKnIA==",
+ "dev": true,
+ "requires": {
+ "symbol-observable": "^1.1.0"
+ },
+ "dependencies": {
+ "symbol-observable": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz",
+ "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==",
+ "dev": true
+ }
+ }
+ },
+ "is-path-cwd": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz",
+ "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=",
+ "dev": true
+ },
+ "is-path-in-cwd": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz",
+ "integrity": "sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ==",
+ "dev": true,
+ "requires": {
+ "is-path-inside": "^1.0.0"
+ }
+ },
+ "is-path-inside": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz",
+ "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=",
+ "dev": true,
+ "requires": {
+ "path-is-inside": "^1.0.1"
+ }
+ },
+ "is-plain-obj": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz",
+ "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=",
+ "dev": true
+ },
+ "is-plain-object": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
+ "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
+ "dev": true,
+ "requires": {
+ "isobject": "^3.0.1"
+ },
+ "dependencies": {
+ "isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
+ "dev": true
+ }
+ }
+ },
+ "is-posix-bracket": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz",
+ "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=",
+ "dev": true
+ },
+ "is-primitive": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz",
+ "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=",
+ "dev": true
+ },
+ "is-promise": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz",
+ "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=",
+ "dev": true
+ },
+ "is-redirect": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-redirect/-/is-redirect-1.0.0.tgz",
+ "integrity": "sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ=",
+ "dev": true
+ },
+ "is-regex": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz",
+ "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=",
+ "dev": true,
+ "requires": {
+ "has": "^1.0.1"
+ }
+ },
+ "is-regexp": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz",
+ "integrity": "sha1-/S2INUXEa6xaYz57mgnof6LLUGk=",
+ "dev": true
+ },
+ "is-resolvable": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz",
+ "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==",
+ "dev": true
+ },
+ "is-retry-allowed": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz",
+ "integrity": "sha1-EaBgVotnM5REAz0BJaYaINVk+zQ=",
+ "dev": true
+ },
+ "is-stream": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
+ "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=",
+ "dev": true
+ },
+ "is-subset": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/is-subset/-/is-subset-0.1.1.tgz",
+ "integrity": "sha1-ilkRfZMt4d4A8kX83TnOQ/HpOaY=",
+ "dev": true
+ },
+ "is-symbol": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.1.tgz",
+ "integrity": "sha1-PMWfAAJRlLarLjjbrmaJJWtmBXI=",
+ "dev": true
+ },
+ "is-text-path": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-text-path/-/is-text-path-1.0.1.tgz",
+ "integrity": "sha1-Thqg+1G/vLPpJogAE5cgLBd1tm4=",
+ "dev": true,
+ "requires": {
+ "text-extensions": "^1.0.0"
+ }
+ },
+ "is-typedarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
+ "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=",
+ "dev": true
+ },
+ "is-utf8": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz",
+ "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=",
+ "dev": true
+ },
+ "is-whitespace-character": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-whitespace-character/-/is-whitespace-character-1.0.2.tgz",
+ "integrity": "sha512-SzM+T5GKUCtLhlHFKt2SDAX2RFzfS6joT91F2/WSi9LxgFdsnhfPK/UIA+JhRR2xuyLdrCys2PiFDrtn1fU5hQ==",
+ "dev": true
+ },
+ "is-windows": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz",
+ "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==",
+ "dev": true
+ },
+ "is-word-character": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-word-character/-/is-word-character-1.0.2.tgz",
+ "integrity": "sha512-T3FlsX8rCHAH8e7RE7PfOPZVFQlcV3XRF9eOOBQ1uf70OxO7CjjSOjeImMPCADBdYWcStAbVbYvJ1m2D3tb+EA==",
+ "dev": true
+ },
+ "is-wsl": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz",
+ "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=",
+ "dev": true
+ },
+ "isarray": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
+ "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
+ "dev": true
+ },
+ "isexe": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
+ "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
+ "dev": true
+ },
+ "isobject": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz",
+ "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=",
+ "dev": true,
+ "requires": {
+ "isarray": "1.0.0"
+ },
+ "dependencies": {
+ "isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
+ "dev": true
+ }
+ }
+ },
+ "isstream": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
+ "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=",
+ "dev": true
+ },
+ "jest-get-type": {
+ "version": "22.4.3",
+ "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-22.4.3.tgz",
+ "integrity": "sha512-/jsz0Y+V29w1chdXVygEKSz2nBoHoYqNShPe+QgxSNjAuP1i8+k4LbQNrfoliKej0P45sivkSCh7yiD6ubHS3w==",
+ "dev": true
+ },
+ "jest-validate": {
+ "version": "23.6.0",
+ "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-23.6.0.tgz",
+ "integrity": "sha512-OFKapYxe72yz7agrDAWi8v2WL8GIfVqcbKRCLbRG9PAxtzF9b1SEDdTpytNDN12z2fJynoBwpMpvj2R39plI2A==",
+ "dev": true,
+ "requires": {
+ "chalk": "^2.0.1",
+ "jest-get-type": "^22.1.0",
+ "leven": "^2.1.0",
+ "pretty-format": "^23.6.0"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "dev": true,
+ "requires": {
+ "color-convert": "^1.9.0"
+ }
+ },
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ }
+ }
+ }
+ },
+ "js-tokens": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz",
+ "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=",
+ "dev": true
+ },
+ "js-yaml": {
+ "version": "3.11.0",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.11.0.tgz",
+ "integrity": "sha512-saJstZWv7oNeOyBh3+Dx1qWzhW0+e6/8eDzo7p5rDFqxntSztloLtuKu+Ejhtq82jsilwOIZYsCz+lIjthg1Hw==",
+ "dev": true,
+ "requires": {
+ "argparse": "^1.0.7",
+ "esprima": "^4.0.0"
+ },
+ "dependencies": {
+ "esprima": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz",
+ "integrity": "sha1-RJnt3NERDgshi6zy+n9/WfVcqAQ=",
+ "dev": true
+ }
+ }
+ },
+ "jsbn": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
+ "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=",
+ "dev": true,
+ "optional": true
+ },
+ "jsdom": {
+ "version": "7.2.2",
+ "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-7.2.2.tgz",
+ "integrity": "sha1-QLQCdwwr2iNGkJa+6Rq2deOx/G4=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "abab": "^1.0.0",
+ "acorn": "^2.4.0",
+ "acorn-globals": "^1.0.4",
+ "cssom": ">= 0.3.0 < 0.4.0",
+ "cssstyle": ">= 0.2.29 < 0.3.0",
+ "escodegen": "^1.6.1",
+ "nwmatcher": ">= 1.3.7 < 2.0.0",
+ "parse5": "^1.5.1",
+ "request": "^2.55.0",
+ "sax": "^1.1.4",
+ "symbol-tree": ">= 3.1.0 < 4.0.0",
+ "tough-cookie": "^2.2.0",
+ "webidl-conversions": "^2.0.0",
+ "whatwg-url-compat": "~0.6.5",
+ "xml-name-validator": ">= 2.0.1 < 3.0.0"
+ },
+ "dependencies": {
+ "acorn": {
+ "version": "2.7.0",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-2.7.0.tgz",
+ "integrity": "sha1-q259nYhqrKiwhbwzEreaGYQz8Oc=",
+ "dev": true,
+ "optional": true
+ }
+ }
+ },
+ "json-buffer": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz",
+ "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=",
+ "dev": true
+ },
+ "json-parse-better-errors": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz",
+ "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==",
+ "dev": true
+ },
+ "json-schema": {
+ "version": "0.2.3",
+ "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz",
+ "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=",
+ "dev": true
+ },
+ "json-schema-traverse": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz",
+ "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=",
+ "dev": true
+ },
+ "json-stable-stringify": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-0.0.1.tgz",
+ "integrity": "sha1-YRwj6BTbN1Un34URk9tZ3Sryf0U=",
+ "dev": true,
+ "requires": {
+ "jsonify": "~0.0.0"
+ }
+ },
+ "json-stable-stringify-without-jsonify": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
+ "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=",
+ "dev": true
+ },
+ "json-stringify-safe": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
+ "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=",
+ "dev": true
+ },
+ "jsonfile": {
+ "version": "2.4.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz",
+ "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.6"
+ }
+ },
+ "jsonify": {
+ "version": "0.0.0",
+ "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz",
+ "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=",
+ "dev": true
+ },
+ "jsonparse": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz",
+ "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=",
+ "dev": true
+ },
+ "jsprim": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz",
+ "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=",
+ "dev": true,
+ "requires": {
+ "assert-plus": "1.0.0",
+ "extsprintf": "1.3.0",
+ "json-schema": "0.2.3",
+ "verror": "1.10.0"
+ }
+ },
+ "jsx-ast-utils": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-2.0.1.tgz",
+ "integrity": "sha1-6AGxs5mF4g//yHtA43SAgOLcrH8=",
+ "dev": true,
+ "requires": {
+ "array-includes": "^3.0.3"
+ }
+ },
+ "keyed-array": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/keyed-array/-/keyed-array-2.1.2.tgz",
+ "integrity": "sha1-isE3thMi7V7Rx7Qbn5zQZmMcrOA=",
+ "dev": true
+ },
+ "keyv": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz",
+ "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==",
+ "dev": true,
+ "requires": {
+ "json-buffer": "3.0.0"
+ }
+ },
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ },
+ "klaw": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz",
+ "integrity": "sha1-QIhDO0azsbolnXh4XY6W9zugJDk=",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.9"
+ }
+ },
+ "labeled-stream-splicer": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/labeled-stream-splicer/-/labeled-stream-splicer-2.0.1.tgz",
+ "integrity": "sha512-MC94mHZRvJ3LfykJlTUipBqenZz1pacOZEMhhQ8dMGcDHs0SBE5GbsavUXV7YtP3icBW17W0Zy1I0lfASmo9Pg==",
+ "dev": true,
+ "requires": {
+ "inherits": "^2.0.1",
+ "isarray": "^2.0.4",
+ "stream-splicer": "^2.0.0"
+ },
+ "dependencies": {
+ "isarray": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.4.tgz",
+ "integrity": "sha512-GMxXOiUirWg1xTKRipM0Ek07rX+ubx4nNVElTJdNLYmNO/2YrDkgJGw9CljXn+r4EWiDQg/8lsRdHyg2PJuUaA==",
+ "dev": true
+ }
+ }
+ },
+ "latest-version": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-3.1.0.tgz",
+ "integrity": "sha1-ogU4P+oyKzO1rjsYq+4NwvNW7hU=",
+ "dev": true,
+ "requires": {
+ "package-json": "^4.0.0"
+ }
+ },
+ "lazy-cache": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz",
+ "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=",
+ "dev": true,
+ "optional": true
+ },
+ "leven": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/leven/-/leven-2.1.0.tgz",
+ "integrity": "sha1-wuep93IJTe6dNCAq6KzORoeHVYA=",
+ "dev": true
+ },
+ "levn": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz",
+ "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=",
+ "dev": true,
+ "requires": {
+ "prelude-ls": "~1.1.2",
+ "type-check": "~0.3.2"
+ }
+ },
+ "lexical-scope": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/lexical-scope/-/lexical-scope-1.2.0.tgz",
+ "integrity": "sha1-/Ope3HBKSzqHls3KQZw6CvryLfQ=",
+ "dev": true,
+ "requires": {
+ "astw": "^2.0.0"
+ }
+ },
+ "linkify-it": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-1.2.4.tgz",
+ "integrity": "sha1-B3NSbDF8j9E71TTuHRgP+Iq/iBo=",
+ "dev": true,
+ "requires": {
+ "uc.micro": "^1.0.1"
+ }
+ },
+ "lint": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/lint/-/lint-1.1.2.tgz",
+ "integrity": "sha1-Ne0GTzIlR8MxNY2JmGhmSWi6Nx8=",
+ "dev": true
+ },
+ "lint-staged": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-8.1.0.tgz",
+ "integrity": "sha512-yfSkyJy7EuVsaoxtUSEhrD81spdJOe/gMTGea3XaV7HyoRhTb9Gdlp6/JppRZERvKSEYXP9bjcmq6CA5oL2lYQ==",
+ "dev": true,
+ "requires": {
+ "@iamstarkov/listr-update-renderer": "0.4.1",
+ "chalk": "^2.3.1",
+ "commander": "^2.14.1",
+ "cosmiconfig": "5.0.6",
+ "debug": "^3.1.0",
+ "dedent": "^0.7.0",
+ "del": "^3.0.0",
+ "execa": "^1.0.0",
+ "find-parent-dir": "^0.3.0",
+ "g-status": "^2.0.2",
+ "is-glob": "^4.0.0",
+ "is-windows": "^1.0.2",
+ "jest-validate": "^23.5.0",
+ "listr": "^0.14.2",
+ "lodash": "^4.17.5",
+ "log-symbols": "^2.2.0",
+ "micromatch": "^3.1.8",
+ "npm-which": "^3.0.1",
+ "p-map": "^1.1.1",
+ "path-is-inside": "^1.0.2",
+ "pify": "^3.0.0",
+ "please-upgrade-node": "^3.0.2",
+ "staged-git-files": "1.1.2",
+ "string-argv": "^0.0.2",
+ "stringify-object": "^3.2.2"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "dev": true,
+ "requires": {
+ "color-convert": "^1.9.0"
+ }
+ },
+ "arr-diff": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz",
+ "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=",
+ "dev": true
+ },
+ "array-unique": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz",
+ "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=",
+ "dev": true
+ },
+ "braces": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
+ "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
+ "dev": true,
+ "requires": {
+ "arr-flatten": "^1.1.0",
+ "array-unique": "^0.3.2",
+ "extend-shallow": "^2.0.1",
+ "fill-range": "^4.0.0",
+ "isobject": "^3.0.1",
+ "repeat-element": "^1.1.2",
+ "snapdragon": "^0.8.1",
+ "snapdragon-node": "^2.0.1",
+ "split-string": "^3.0.2",
+ "to-regex": "^3.0.1"
+ },
+ "dependencies": {
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ }
+ }
+ },
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ }
+ },
+ "cross-spawn": {
+ "version": "6.0.5",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
+ "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
+ "dev": true,
+ "requires": {
+ "nice-try": "^1.0.4",
+ "path-key": "^2.0.1",
+ "semver": "^5.5.0",
+ "shebang-command": "^1.2.0",
+ "which": "^1.2.9"
+ }
+ },
+ "debug": {
+ "version": "3.2.6",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
+ "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
+ "dev": true,
+ "requires": {
+ "ms": "^2.1.1"
+ }
+ },
+ "dedent": {
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz",
+ "integrity": "sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=",
+ "dev": true
+ },
+ "del": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/del/-/del-3.0.0.tgz",
+ "integrity": "sha1-U+z2mf/LyzljdpGrE7rxYIGXZuU=",
+ "dev": true,
+ "requires": {
+ "globby": "^6.1.0",
+ "is-path-cwd": "^1.0.0",
+ "is-path-in-cwd": "^1.0.0",
+ "p-map": "^1.1.1",
+ "pify": "^3.0.0",
+ "rimraf": "^2.2.8"
+ }
+ },
+ "execa": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz",
+ "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==",
+ "dev": true,
+ "requires": {
+ "cross-spawn": "^6.0.0",
+ "get-stream": "^4.0.0",
+ "is-stream": "^1.1.0",
+ "npm-run-path": "^2.0.0",
+ "p-finally": "^1.0.0",
+ "signal-exit": "^3.0.0",
+ "strip-eof": "^1.0.0"
+ }
+ },
+ "expand-brackets": {
+ "version": "2.1.4",
+ "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz",
+ "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=",
+ "dev": true,
+ "requires": {
+ "debug": "^2.3.3",
+ "define-property": "^0.2.5",
+ "extend-shallow": "^2.0.1",
+ "posix-character-classes": "^0.1.0",
+ "regex-not": "^1.0.0",
+ "snapdragon": "^0.8.1",
+ "to-regex": "^3.0.1"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "^0.1.0"
+ }
+ },
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ },
+ "is-accessor-descriptor": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
+ "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
+ "dev": true,
+ "requires": {
+ "kind-of": "^3.0.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "is-data-descriptor": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
+ "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
+ "dev": true,
+ "requires": {
+ "kind-of": "^3.0.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "is-descriptor": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
+ "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
+ "dev": true,
+ "requires": {
+ "is-accessor-descriptor": "^0.1.6",
+ "is-data-descriptor": "^0.1.4",
+ "kind-of": "^5.0.0"
+ }
+ },
+ "kind-of": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
+ "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
+ "dev": true
+ },
+ "ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+ "dev": true
+ }
+ }
+ },
+ "extglob": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz",
+ "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==",
+ "dev": true,
+ "requires": {
+ "array-unique": "^0.3.2",
+ "define-property": "^1.0.0",
+ "expand-brackets": "^2.1.4",
+ "extend-shallow": "^2.0.1",
+ "fragment-cache": "^0.2.1",
+ "regex-not": "^1.0.0",
+ "snapdragon": "^0.8.1",
+ "to-regex": "^3.0.1"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
+ "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "^1.0.0"
+ }
+ },
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ }
+ }
+ },
+ "fill-range": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
+ "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
+ "dev": true,
+ "requires": {
+ "extend-shallow": "^2.0.1",
+ "is-number": "^3.0.0",
+ "repeat-string": "^1.6.1",
+ "to-regex-range": "^2.1.0"
+ },
+ "dependencies": {
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ }
+ }
+ },
+ "get-stream": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz",
+ "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==",
+ "dev": true,
+ "requires": {
+ "pump": "^3.0.0"
+ }
+ },
+ "glob": {
+ "version": "7.1.3",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz",
+ "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==",
+ "dev": true,
+ "requires": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.0.4",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ }
+ },
+ "globby": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz",
+ "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=",
+ "dev": true,
+ "requires": {
+ "array-union": "^1.0.1",
+ "glob": "^7.0.3",
+ "object-assign": "^4.0.1",
+ "pify": "^2.0.0",
+ "pinkie-promise": "^2.0.0"
+ },
+ "dependencies": {
+ "pify": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+ "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
+ "dev": true
+ }
+ }
+ },
+ "is-accessor-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
+ "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^6.0.0"
+ }
+ },
+ "is-data-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
+ "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^6.0.0"
+ }
+ },
+ "is-descriptor": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
+ "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+ "dev": true,
+ "requires": {
+ "is-accessor-descriptor": "^1.0.0",
+ "is-data-descriptor": "^1.0.0",
+ "kind-of": "^6.0.2"
+ }
+ },
+ "is-extglob": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+ "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
+ "dev": true
+ },
+ "is-glob": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz",
+ "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=",
+ "dev": true,
+ "requires": {
+ "is-extglob": "^2.1.1"
+ }
+ },
+ "is-number": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
+ "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
+ "dev": true,
+ "requires": {
+ "kind-of": "^3.0.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
+ "dev": true
+ },
+ "kind-of": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
+ "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==",
+ "dev": true
+ },
+ "log-symbols": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz",
+ "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==",
+ "dev": true,
+ "requires": {
+ "chalk": "^2.0.1"
+ }
+ },
+ "micromatch": {
+ "version": "3.1.10",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
+ "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
+ "dev": true,
+ "requires": {
+ "arr-diff": "^4.0.0",
+ "array-unique": "^0.3.2",
+ "braces": "^2.3.1",
+ "define-property": "^2.0.2",
+ "extend-shallow": "^3.0.2",
+ "extglob": "^2.0.4",
+ "fragment-cache": "^0.2.1",
+ "kind-of": "^6.0.2",
+ "nanomatch": "^1.2.9",
+ "object.pick": "^1.3.0",
+ "regex-not": "^1.0.0",
+ "snapdragon": "^0.8.1",
+ "to-regex": "^3.0.2"
+ }
+ },
+ "ms": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
+ "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==",
+ "dev": true
+ },
+ "pify": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
+ "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
+ "dev": true
+ },
+ "pump": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
+ "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
+ "dev": true,
+ "requires": {
+ "end-of-stream": "^1.1.0",
+ "once": "^1.3.1"
+ }
+ }
+ }
+ },
+ "listr": {
+ "version": "0.14.3",
+ "resolved": "https://registry.npmjs.org/listr/-/listr-0.14.3.tgz",
+ "integrity": "sha512-RmAl7su35BFd/xoMamRjpIE4j3v+L28o8CT5YhAXQJm1fD+1l9ngXY8JAQRJ+tFK2i5njvi0iRUKV09vPwA0iA==",
+ "dev": true,
+ "requires": {
+ "@samverschueren/stream-to-observable": "^0.3.0",
+ "is-observable": "^1.1.0",
+ "is-promise": "^2.1.0",
+ "is-stream": "^1.1.0",
+ "listr-silent-renderer": "^1.1.1",
+ "listr-update-renderer": "^0.5.0",
+ "listr-verbose-renderer": "^0.5.0",
+ "p-map": "^2.0.0",
+ "rxjs": "^6.3.3"
+ },
+ "dependencies": {
+ "p-map": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.0.0.tgz",
+ "integrity": "sha512-GO107XdrSUmtHxVoi60qc9tUl/KkNKm+X2CF4P9amalpGxv5YqVPJNfSb0wcA+syCopkZvYYIzW8OVTQW59x/w==",
+ "dev": true
+ },
+ "rxjs": {
+ "version": "6.3.3",
+ "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.3.3.tgz",
+ "integrity": "sha512-JTWmoY9tWCs7zvIk/CvRjhjGaOd+OVBM987mxFo+OW66cGpdKjZcpmc74ES1sB//7Kl/PAe8+wEakuhG4pcgOw==",
+ "dev": true,
+ "requires": {
+ "tslib": "^1.9.0"
+ }
+ }
+ }
+ },
+ "listr-silent-renderer": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/listr-silent-renderer/-/listr-silent-renderer-1.1.1.tgz",
+ "integrity": "sha1-kktaN1cVN3C/Go4/v3S4u/P5JC4=",
+ "dev": true
+ },
+ "listr-update-renderer": {
+ "version": "0.5.0",
+ "resolved": "https://registry.npmjs.org/listr-update-renderer/-/listr-update-renderer-0.5.0.tgz",
+ "integrity": "sha512-tKRsZpKz8GSGqoI/+caPmfrypiaq+OQCbd+CovEC24uk1h952lVj5sC7SqyFUm+OaJ5HN/a1YLt5cit2FMNsFA==",
+ "dev": true,
+ "requires": {
+ "chalk": "^1.1.3",
+ "cli-truncate": "^0.2.1",
+ "elegant-spinner": "^1.0.1",
+ "figures": "^1.7.0",
+ "indent-string": "^3.0.0",
+ "log-symbols": "^1.0.2",
+ "log-update": "^2.3.0",
+ "strip-ansi": "^3.0.1"
+ },
+ "dependencies": {
+ "figures": {
+ "version": "1.7.0",
+ "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz",
+ "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=",
+ "dev": true,
+ "requires": {
+ "escape-string-regexp": "^1.0.5",
+ "object-assign": "^4.1.0"
+ }
+ }
+ }
+ },
+ "listr-verbose-renderer": {
+ "version": "0.5.0",
+ "resolved": "https://registry.npmjs.org/listr-verbose-renderer/-/listr-verbose-renderer-0.5.0.tgz",
+ "integrity": "sha512-04PDPqSlsqIOaaaGZ+41vq5FejI9auqTInicFRndCBgE3bXG8D6W1I+mWhk+1nqbHmyhla/6BUrd5OSiHwKRXw==",
+ "dev": true,
+ "requires": {
+ "chalk": "^2.4.1",
+ "cli-cursor": "^2.1.0",
+ "date-fns": "^1.27.2",
+ "figures": "^2.0.0"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "dev": true,
+ "requires": {
+ "color-convert": "^1.9.0"
+ }
+ },
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ }
+ },
+ "cli-cursor": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz",
+ "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=",
+ "dev": true,
+ "requires": {
+ "restore-cursor": "^2.0.0"
+ }
+ },
+ "onetime": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz",
+ "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=",
+ "dev": true,
+ "requires": {
+ "mimic-fn": "^1.0.0"
+ }
+ },
+ "restore-cursor": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz",
+ "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=",
+ "dev": true,
+ "requires": {
+ "onetime": "^2.0.0",
+ "signal-exit": "^3.0.2"
+ }
+ }
+ }
+ },
+ "load-json-file": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz",
+ "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.2",
+ "parse-json": "^2.2.0",
+ "pify": "^2.0.0",
+ "pinkie-promise": "^2.0.0",
+ "strip-bom": "^2.0.0"
+ }
+ },
+ "load-plugin": {
+ "version": "2.2.2",
+ "resolved": "https://registry.npmjs.org/load-plugin/-/load-plugin-2.2.2.tgz",
+ "integrity": "sha512-FYzamtURIJefQykZGtiClYuZkJBUKzmx8Tc74y8JGAulDzbzVm/C+w/MbAljHRr+REL0cRzy3WgnHE+T8gce5g==",
+ "dev": true,
+ "requires": {
+ "npm-prefix": "^1.2.0",
+ "resolve-from": "^4.0.0"
+ }
+ },
+ "locate-path": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
+ "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=",
+ "dev": true,
+ "requires": {
+ "p-locate": "^2.0.0",
+ "path-exists": "^3.0.0"
+ },
+ "dependencies": {
+ "path-exists": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
+ "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
+ "dev": true
+ }
+ }
+ },
+ "lodash": {
+ "version": "4.17.10",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz",
+ "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==",
+ "dev": true
+ },
+ "lodash._reinterpolate": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz",
+ "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=",
+ "dev": true
+ },
+ "lodash.assignin": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/lodash.assignin/-/lodash.assignin-4.2.0.tgz",
+ "integrity": "sha1-uo31+4QesKPoBEIysOJjqNxqKKI=",
+ "dev": true
+ },
+ "lodash.bind": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/lodash.bind/-/lodash.bind-4.2.1.tgz",
+ "integrity": "sha1-euMBfpOWIqwxt9fX3LGzTbFpDTU=",
+ "dev": true
+ },
+ "lodash.defaults": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz",
+ "integrity": "sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw=",
+ "dev": true
+ },
+ "lodash.filter": {
+ "version": "4.6.0",
+ "resolved": "https://registry.npmjs.org/lodash.filter/-/lodash.filter-4.6.0.tgz",
+ "integrity": "sha1-ZosdSYFgOuHMWm+nYBQ+SAtMSs4=",
+ "dev": true
+ },
+ "lodash.flatten": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz",
+ "integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=",
+ "dev": true
+ },
+ "lodash.foreach": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/lodash.foreach/-/lodash.foreach-4.5.0.tgz",
+ "integrity": "sha1-Gmo16s5AEoDH8G3d7DUWWrJ+PlM=",
+ "dev": true
+ },
+ "lodash.get": {
+ "version": "4.4.2",
+ "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz",
+ "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=",
+ "dev": true
+ },
+ "lodash.isempty": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/lodash.isempty/-/lodash.isempty-4.4.0.tgz",
+ "integrity": "sha1-b4bL7di+TsmHvpqvM8loTbGzHn4=",
+ "dev": true
+ },
+ "lodash.isplainobject": {
+ "version": "4.0.6",
+ "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz",
+ "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=",
+ "dev": true
+ },
+ "lodash.map": {
+ "version": "4.6.0",
+ "resolved": "https://registry.npmjs.org/lodash.map/-/lodash.map-4.6.0.tgz",
+ "integrity": "sha1-dx7Hg540c9nEzeKLGTlMNWL09tM=",
+ "dev": true
+ },
+ "lodash.memoize": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-3.0.4.tgz",
+ "integrity": "sha1-LcvSwofLwKVcxCMovQxzYVDVPj8=",
+ "dev": true
+ },
+ "lodash.merge": {
+ "version": "4.6.1",
+ "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.1.tgz",
+ "integrity": "sha512-AOYza4+Hf5z1/0Hztxpm2/xiPZgi/cjMqdnKTUWTBSKchJlxXXuUSxCCl8rJlf4g6yww/j6mA8nC8Hw/EZWxKQ==",
+ "dev": true
+ },
+ "lodash.pick": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/lodash.pick/-/lodash.pick-4.4.0.tgz",
+ "integrity": "sha1-UvBWEP/53tQiYRRB7R/BI6AwAbM=",
+ "dev": true
+ },
+ "lodash.range": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/lodash.range/-/lodash.range-3.2.0.tgz",
+ "integrity": "sha1-9GHliPZmg/fq3q3lE+OKaaVloV0=",
+ "dev": true
+ },
+ "lodash.reduce": {
+ "version": "4.6.0",
+ "resolved": "https://registry.npmjs.org/lodash.reduce/-/lodash.reduce-4.6.0.tgz",
+ "integrity": "sha1-8atrg5KZrUj3hKu/R2WW8DuRTTs=",
+ "dev": true
+ },
+ "lodash.reject": {
+ "version": "4.6.0",
+ "resolved": "https://registry.npmjs.org/lodash.reject/-/lodash.reject-4.6.0.tgz",
+ "integrity": "sha1-gNZJLcFHCGS79YNTO2UfQqn1JBU=",
+ "dev": true
+ },
+ "lodash.set": {
+ "version": "4.3.2",
+ "resolved": "https://registry.npmjs.org/lodash.set/-/lodash.set-4.3.2.tgz",
+ "integrity": "sha1-2HV7HagH3eJIFrDWqEvqGnYjCyM=",
+ "dev": true
+ },
+ "lodash.some": {
+ "version": "4.6.0",
+ "resolved": "https://registry.npmjs.org/lodash.some/-/lodash.some-4.6.0.tgz",
+ "integrity": "sha1-G7nzFO9ri63tE7VJFpsqlF62jk0=",
+ "dev": true
+ },
+ "lodash.template": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.4.0.tgz",
+ "integrity": "sha1-5zoDhcg1VZF0bgILmWecaQ5o+6A=",
+ "dev": true,
+ "requires": {
+ "lodash._reinterpolate": "~3.0.0",
+ "lodash.templatesettings": "^4.0.0"
+ }
+ },
+ "lodash.templatesettings": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.1.0.tgz",
+ "integrity": "sha1-K01OlbpEDZFf8IvImeRVNmZxMxY=",
+ "dev": true,
+ "requires": {
+ "lodash._reinterpolate": "~3.0.0"
+ }
+ },
+ "lodash.transform": {
+ "version": "4.6.0",
+ "resolved": "https://registry.npmjs.org/lodash.transform/-/lodash.transform-4.6.0.tgz",
+ "integrity": "sha1-EjBkIvYzJK7YSD0/ODMrX2cFR6A=",
+ "dev": true
+ },
+ "lodash.uniq": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz",
+ "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=",
+ "dev": true
+ },
+ "log-symbols": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-1.0.2.tgz",
+ "integrity": "sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg=",
+ "dev": true,
+ "requires": {
+ "chalk": "^1.0.0"
+ }
+ },
+ "log-update": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/log-update/-/log-update-2.3.0.tgz",
+ "integrity": "sha1-iDKP19HOeTiykoN0bwsbwSayRwg=",
+ "dev": true,
+ "requires": {
+ "ansi-escapes": "^3.0.0",
+ "cli-cursor": "^2.0.0",
+ "wrap-ansi": "^3.0.1"
+ },
+ "dependencies": {
+ "cli-cursor": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz",
+ "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=",
+ "dev": true,
+ "requires": {
+ "restore-cursor": "^2.0.0"
+ }
+ },
+ "onetime": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz",
+ "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=",
+ "dev": true,
+ "requires": {
+ "mimic-fn": "^1.0.0"
+ }
+ },
+ "restore-cursor": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz",
+ "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=",
+ "dev": true,
+ "requires": {
+ "onetime": "^2.0.0",
+ "signal-exit": "^3.0.2"
+ }
+ }
+ }
+ },
+ "longest": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz",
+ "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=",
+ "dev": true,
+ "optional": true
+ },
+ "longest-streak": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-2.0.2.tgz",
+ "integrity": "sha512-TmYTeEYxiAmSVdpbnQDXGtvYOIRsCMg89CVZzwzc2o7GFL1CjoiRPjH5ec0NFAVlAx3fVof9dX/t6KKRAo2OWA==",
+ "dev": true
+ },
+ "loose-envify": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
+ "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
+ "dev": true,
+ "requires": {
+ "js-tokens": "^3.0.0 || ^4.0.0"
+ }
+ },
+ "loud-rejection": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz",
+ "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=",
+ "dev": true,
+ "requires": {
+ "currently-unhandled": "^0.4.1",
+ "signal-exit": "^3.0.0"
+ }
+ },
+ "lowercase-keys": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz",
+ "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==",
+ "dev": true
+ },
+ "lru-cache": {
+ "version": "4.1.3",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.3.tgz",
+ "integrity": "sha512-fFEhvcgzuIoJVUF8fYr5KR0YqxD238zgObTps31YdADwPPAp82a4M8TrckkWyx7ekNlf9aBcVn81cFwwXngrJA==",
+ "dev": true,
+ "requires": {
+ "pseudomap": "^1.0.2",
+ "yallist": "^2.1.2"
+ },
+ "dependencies": {
+ "yallist": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
+ "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=",
+ "dev": true
+ }
+ }
+ },
+ "macos-release": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/macos-release/-/macos-release-2.0.0.tgz",
+ "integrity": "sha512-iCM3ZGeqIzlrH7KxYK+fphlJpCCczyHXc+HhRVbEu9uNTCrzYJjvvtefzeKTCVHd5AP/aD/fzC80JZ4ZP+dQ/A==",
+ "dev": true
+ },
+ "make-dir": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz",
+ "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==",
+ "dev": true,
+ "requires": {
+ "pify": "^3.0.0"
+ },
+ "dependencies": {
+ "pify": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
+ "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
+ "dev": true
+ }
+ }
+ },
+ "map-cache": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz",
+ "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=",
+ "dev": true
+ },
+ "map-obj": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-2.0.0.tgz",
+ "integrity": "sha1-plzSkIepJZi4eRJXpSPgISIqwfk=",
+ "dev": true
+ },
+ "map-visit": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz",
+ "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=",
+ "dev": true,
+ "requires": {
+ "object-visit": "^1.0.0"
+ }
+ },
+ "markdown-escapes": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/markdown-escapes/-/markdown-escapes-1.0.2.tgz",
+ "integrity": "sha512-lbRZ2mE3Q9RtLjxZBZ9+IMl68DKIXaVAhwvwn9pmjnPLS0h/6kyBMgNhqi1xFJ/2yv6cSyv0jbiZavZv93JkkA==",
+ "dev": true
+ },
+ "markdown-extensions": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/markdown-extensions/-/markdown-extensions-1.1.1.tgz",
+ "integrity": "sha512-WWC0ZuMzCyDHYCasEGs4IPvLyTGftYwh6wIEOULOF0HXcqZlhwRzrK0w2VUlxWA98xnvb/jszw4ZSkJ6ADpM6Q==",
+ "dev": true
+ },
+ "markdown-it": {
+ "version": "6.1.1",
+ "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-6.1.1.tgz",
+ "integrity": "sha1-ztA39Ec+6fUVOsQU933IPJG6knw=",
+ "dev": true,
+ "requires": {
+ "argparse": "^1.0.7",
+ "entities": "~1.1.1",
+ "linkify-it": "~1.2.2",
+ "mdurl": "~1.0.1",
+ "uc.micro": "^1.0.1"
+ }
+ },
+ "markdown-it-named-headers": {
+ "version": "0.0.4",
+ "resolved": "https://registry.npmjs.org/markdown-it-named-headers/-/markdown-it-named-headers-0.0.4.tgz",
+ "integrity": "sha1-gu/CgyQkCmsed7mq5QF3HV81HB8=",
+ "dev": true,
+ "requires": {
+ "string": "^3.0.1"
+ }
+ },
+ "markdown-table": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-1.1.2.tgz",
+ "integrity": "sha512-NcWuJFHDA8V3wkDgR/j4+gZx+YQwstPgfQDV8ndUeWWzta3dnDTBxpVzqS9lkmJAuV5YX35lmyojl6HO5JXAgw==",
+ "dev": true
+ },
+ "marky-markdown-lite": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/marky-markdown-lite/-/marky-markdown-lite-1.2.0.tgz",
+ "integrity": "sha1-dO2phLgTZVfe4QZO/RXkBhdAaZc=",
+ "dev": true,
+ "requires": {
+ "cheerio": "^0.20.0",
+ "conventional-changelog-cli": "^1.2.0",
+ "is-file": "^1.0.0",
+ "markdown-it": "^6.0.1",
+ "markdown-it-named-headers": "0.0.4"
+ },
+ "dependencies": {
+ "cheerio": {
+ "version": "0.20.0",
+ "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-0.20.0.tgz",
+ "integrity": "sha1-XHEPK6uVZTJyhCugHG6mGzVF7DU=",
+ "dev": true,
+ "requires": {
+ "css-select": "~1.2.0",
+ "dom-serializer": "~0.1.0",
+ "entities": "~1.1.1",
+ "htmlparser2": "~3.8.1",
+ "jsdom": "^7.0.2",
+ "lodash": "^4.1.0"
+ }
+ },
+ "domhandler": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.3.0.tgz",
+ "integrity": "sha1-LeWaCCLVAn+r/28DLCsloqir5zg=",
+ "dev": true,
+ "requires": {
+ "domelementtype": "1"
+ }
+ },
+ "htmlparser2": {
+ "version": "3.8.3",
+ "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.8.3.tgz",
+ "integrity": "sha1-mWwosZFRaovoZQGn15dX5ccMEGg=",
+ "dev": true,
+ "requires": {
+ "domelementtype": "1",
+ "domhandler": "2.3",
+ "domutils": "1.5",
+ "entities": "1.0",
+ "readable-stream": "1.1"
+ },
+ "dependencies": {
+ "entities": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-1.0.0.tgz",
+ "integrity": "sha1-sph6o4ITR/zeZCsk/fyeT7cSvyY=",
+ "dev": true
+ }
+ }
+ }
+ }
+ },
+ "matcher": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/matcher/-/matcher-1.1.1.tgz",
+ "integrity": "sha512-+BmqxWIubKTRKNWx/ahnCkk3mG8m7OturVlqq6HiojGJTd5hVYbgZm6WzcYPCoB+KBT4Vd6R7WSRG2OADNaCjg==",
+ "dev": true,
+ "requires": {
+ "escape-string-regexp": "^1.0.4"
+ }
+ },
+ "matcher-collection": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/matcher-collection/-/matcher-collection-1.0.5.tgz",
+ "integrity": "sha1-LuCVQ4Nyy4iE8FgjQTjAXGROwzk=",
+ "dev": true,
+ "requires": {
+ "minimatch": "^3.0.2"
+ }
+ },
+ "math-random": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/math-random/-/math-random-1.0.1.tgz",
+ "integrity": "sha1-izqsWIuKZuSXXjzepn97sylgH6w=",
+ "dev": true
+ },
+ "md5.js": {
+ "version": "1.3.4",
+ "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.4.tgz",
+ "integrity": "sha1-6b296UogpawYsENA/Fdk1bCdkB0=",
+ "dev": true,
+ "requires": {
+ "hash-base": "^3.0.0",
+ "inherits": "^2.0.1"
+ }
+ },
+ "mdast-comment-marker": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/mdast-comment-marker/-/mdast-comment-marker-1.0.2.tgz",
+ "integrity": "sha1-Hd8O+BH7UkOQF8jSwLkiA18rp0o=",
+ "dev": true
+ },
+ "mdast-util-compact": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/mdast-util-compact/-/mdast-util-compact-1.0.1.tgz",
+ "integrity": "sha1-zbX4TitqLTEU3zO9BdnLMuPECDo=",
+ "dev": true,
+ "requires": {
+ "unist-util-modify-children": "^1.0.0",
+ "unist-util-visit": "^1.1.0"
+ }
+ },
+ "mdast-util-heading-style": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/mdast-util-heading-style/-/mdast-util-heading-style-1.0.3.tgz",
+ "integrity": "sha1-77OQ28iqAWw89XegNJANsn7nJHw=",
+ "dev": true
+ },
+ "mdast-util-to-string": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-1.0.4.tgz",
+ "integrity": "sha1-XEVch4yTVfDB5/PotxnPWDaRrPs=",
+ "dev": true
+ },
+ "mdurl": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz",
+ "integrity": "sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4=",
+ "dev": true
+ },
+ "meow": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/meow/-/meow-4.0.1.tgz",
+ "integrity": "sha512-xcSBHD5Z86zaOc+781KrupuHAzeGXSLtiAOmBsiLDiPSaYSB6hdew2ng9EBAnZ62jagG9MHAOdxpDi/lWBFJ/A==",
+ "dev": true,
+ "requires": {
+ "camelcase-keys": "^4.0.0",
+ "decamelize-keys": "^1.0.0",
+ "loud-rejection": "^1.0.0",
+ "minimist": "^1.1.3",
+ "minimist-options": "^3.0.1",
+ "normalize-package-data": "^2.3.4",
+ "read-pkg-up": "^3.0.0",
+ "redent": "^2.0.0",
+ "trim-newlines": "^2.0.0"
+ },
+ "dependencies": {
+ "find-up": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
+ "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
+ "dev": true,
+ "requires": {
+ "locate-path": "^2.0.0"
+ }
+ },
+ "load-json-file": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz",
+ "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.2",
+ "parse-json": "^4.0.0",
+ "pify": "^3.0.0",
+ "strip-bom": "^3.0.0"
+ }
+ },
+ "parse-json": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz",
+ "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=",
+ "dev": true,
+ "requires": {
+ "error-ex": "^1.3.1",
+ "json-parse-better-errors": "^1.0.1"
+ }
+ },
+ "path-type": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz",
+ "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==",
+ "dev": true,
+ "requires": {
+ "pify": "^3.0.0"
+ }
+ },
+ "pify": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
+ "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
+ "dev": true
+ },
+ "read-pkg": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz",
+ "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=",
+ "dev": true,
+ "requires": {
+ "load-json-file": "^4.0.0",
+ "normalize-package-data": "^2.3.2",
+ "path-type": "^3.0.0"
+ }
+ },
+ "read-pkg-up": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz",
+ "integrity": "sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=",
+ "dev": true,
+ "requires": {
+ "find-up": "^2.0.0",
+ "read-pkg": "^3.0.0"
+ }
+ },
+ "strip-bom": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
+ "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=",
+ "dev": true
+ }
+ }
+ },
+ "merge2": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.2.2.tgz",
+ "integrity": "sha512-bgM8twH86rWni21thii6WCMQMRMmwqqdW3sGWi9IipnVAszdLXRjwDwAnyrVXo6DuP3AjRMMttZKUB48QWIFGg==",
+ "dev": true
+ },
+ "micro": {
+ "version": "9.3.1",
+ "resolved": "https://registry.npmjs.org/micro/-/micro-9.3.1.tgz",
+ "integrity": "sha512-83uimpPJqfwkfKvJl2WWontBlV3hmzrIgyJ+L2uhDXKNk7Ll+/ezK3zBz7TljubpKPqjM0JdT2Ker4MTPmhjgA==",
+ "dev": true,
+ "requires": {
+ "arg": "2.0.0",
+ "chalk": "2.4.0",
+ "content-type": "1.0.4",
+ "is-stream": "1.1.0",
+ "raw-body": "2.3.2"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "dev": true,
+ "requires": {
+ "color-convert": "^1.9.0"
+ }
+ },
+ "chalk": {
+ "version": "2.4.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.0.tgz",
+ "integrity": "sha512-Wr/w0f4o9LuE7K53cD0qmbAMM+2XNLzR29vFn5hqko4sxGlUsyy363NvmyGIyk5tpe9cjTr9SJYbysEyPkRnFw==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ }
+ },
+ "has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "5.4.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz",
+ "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^3.0.0"
+ }
+ }
+ }
+ },
+ "micro-compress": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/micro-compress/-/micro-compress-1.0.0.tgz",
+ "integrity": "sha1-U/WoC0rQMgyhZaVZtuPfFF1PcE8=",
+ "dev": true,
+ "requires": {
+ "compression": "^1.6.2"
+ }
+ },
+ "micromatch": {
+ "version": "2.3.11",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz",
+ "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=",
+ "dev": true,
+ "requires": {
+ "arr-diff": "^2.0.0",
+ "array-unique": "^0.2.1",
+ "braces": "^1.8.2",
+ "expand-brackets": "^0.1.4",
+ "extglob": "^0.3.1",
+ "filename-regex": "^2.0.0",
+ "is-extglob": "^1.0.0",
+ "is-glob": "^2.0.1",
+ "kind-of": "^3.0.2",
+ "normalize-path": "^2.0.1",
+ "object.omit": "^2.0.0",
+ "parse-glob": "^3.0.4",
+ "regex-cache": "^0.4.2"
+ }
+ },
+ "miller-rabin": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz",
+ "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==",
+ "dev": true,
+ "requires": {
+ "bn.js": "^4.0.0",
+ "brorand": "^1.0.1"
+ }
+ },
+ "mime-db": {
+ "version": "1.33.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz",
+ "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==",
+ "dev": true
+ },
+ "mime-types": {
+ "version": "2.1.18",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz",
+ "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==",
+ "dev": true,
+ "requires": {
+ "mime-db": "~1.33.0"
+ }
+ },
+ "mimic-fn": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz",
+ "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==",
+ "dev": true
+ },
+ "mimic-response": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz",
+ "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==",
+ "dev": true
+ },
+ "minimalistic-assert": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz",
+ "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==",
+ "dev": true
+ },
+ "minimalistic-crypto-utils": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz",
+ "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=",
+ "dev": true
+ },
+ "minimatch": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
+ "integrity": "sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM=",
+ "dev": true,
+ "requires": {
+ "brace-expansion": "^1.1.7"
+ }
+ },
+ "minimist": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
+ "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
+ "dev": true
+ },
+ "minimist-options": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-3.0.2.tgz",
+ "integrity": "sha512-FyBrT/d0d4+uiZRbqznPXqw3IpZZG3gl3wKWiX784FycUKVwBt0uLBFkQrtE4tZOrgo78nZp2jnKz3L65T5LdQ==",
+ "dev": true,
+ "requires": {
+ "arrify": "^1.0.1",
+ "is-plain-obj": "^1.1.0"
+ }
+ },
+ "minipass": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.3.0.tgz",
+ "integrity": "sha512-jWC2Eg+Np4bxah7llu1IrUNSJQxtLz/J+pOjTM0nFpJXGAaV18XBWhUn031Q1tAA/TJtA1jgwnOe9S2PQa4Lbg==",
+ "dev": true,
+ "requires": {
+ "safe-buffer": "^5.1.1",
+ "yallist": "^3.0.0"
+ }
+ },
+ "minizlib": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.1.0.tgz",
+ "integrity": "sha512-4T6Ur/GctZ27nHfpt9THOdRZNgyJ9FZchYO1ceg5S8Q3DNLCKYy44nCZzgCJgcvx2UM8czmqak5BCxJMrq37lA==",
+ "dev": true,
+ "requires": {
+ "minipass": "^2.2.1"
+ }
+ },
+ "mixin-deep": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz",
+ "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==",
+ "dev": true,
+ "requires": {
+ "for-in": "^1.0.2",
+ "is-extendable": "^1.0.1"
+ },
+ "dependencies": {
+ "is-extendable": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
+ "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
+ "dev": true,
+ "requires": {
+ "is-plain-object": "^2.0.4"
+ }
+ }
+ }
+ },
+ "mkdirp": {
+ "version": "0.5.1",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
+ "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
+ "dev": true,
+ "requires": {
+ "minimist": "0.0.8"
+ },
+ "dependencies": {
+ "minimist": {
+ "version": "0.0.8",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
+ "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
+ "dev": true
+ }
+ }
+ },
+ "mkpath": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/mkpath/-/mkpath-0.1.0.tgz",
+ "integrity": "sha1-dVSm+Nhxg0zJe1RisSLEwSTW3pE=",
+ "dev": true
+ },
+ "mksnapshot": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/mksnapshot/-/mksnapshot-0.3.1.tgz",
+ "integrity": "sha1-JQHAVldDbXQs6Vik/5LHfkDdN+Y=",
+ "dev": true,
+ "requires": {
+ "decompress-zip": "0.3.0",
+ "fs-extra": "0.26.7",
+ "request": "^2.79.0"
+ }
+ },
+ "modify-values": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/modify-values/-/modify-values-1.0.1.tgz",
+ "integrity": "sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw==",
+ "dev": true
+ },
+ "module-deps": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/module-deps/-/module-deps-4.1.1.tgz",
+ "integrity": "sha1-IyFYM/HaE/1gbMuAh7RIUty4If0=",
+ "dev": true,
+ "requires": {
+ "JSONStream": "^1.0.3",
+ "browser-resolve": "^1.7.0",
+ "cached-path-relative": "^1.0.0",
+ "concat-stream": "~1.5.0",
+ "defined": "^1.0.0",
+ "detective": "^4.0.0",
+ "duplexer2": "^0.1.2",
+ "inherits": "^2.0.1",
+ "parents": "^1.0.0",
+ "readable-stream": "^2.0.2",
+ "resolve": "^1.1.3",
+ "stream-combiner2": "^1.1.1",
+ "subarg": "^1.0.0",
+ "through2": "^2.0.0",
+ "xtend": "^4.0.0"
+ },
+ "dependencies": {
+ "isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
+ "dev": true
+ },
+ "readable-stream": {
+ "version": "2.3.6",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
+ "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
+ "dev": true,
+ "requires": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
+ }
+ },
+ "string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "dev": true,
+ "requires": {
+ "safe-buffer": "~5.1.0"
+ }
+ }
+ }
+ },
+ "mri": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/mri/-/mri-1.1.0.tgz",
+ "integrity": "sha1-XAo/KcjM/7ux7JQdzsCdcfoy82o=",
+ "dev": true
+ },
+ "ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+ "dev": true
+ },
+ "mute-stream": {
+ "version": "0.0.7",
+ "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz",
+ "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=",
+ "dev": true
+ },
+ "nan": {
+ "version": "2.10.0",
+ "resolved": "https://registry.npmjs.org/nan/-/nan-2.10.0.tgz",
+ "integrity": "sha512-bAdJv7fBLhWC+/Bls0Oza+mvTaNQtP+1RyhhhvD95pgUJz6XM5IzgmxOkItJ9tkoCiplvAnXI1tNmmUD/eScyA==",
+ "dev": true,
+ "optional": true
+ },
+ "nanomatch": {
+ "version": "1.2.13",
+ "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz",
+ "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==",
+ "dev": true,
+ "requires": {
+ "arr-diff": "^4.0.0",
+ "array-unique": "^0.3.2",
+ "define-property": "^2.0.2",
+ "extend-shallow": "^3.0.2",
+ "fragment-cache": "^0.2.1",
+ "is-windows": "^1.0.2",
+ "kind-of": "^6.0.2",
+ "object.pick": "^1.3.0",
+ "regex-not": "^1.0.0",
+ "snapdragon": "^0.8.1",
+ "to-regex": "^3.0.1"
+ },
+ "dependencies": {
+ "arr-diff": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz",
+ "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=",
+ "dev": true
+ },
+ "array-unique": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz",
+ "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=",
+ "dev": true
+ },
+ "kind-of": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
+ "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==",
+ "dev": true
+ }
+ }
+ },
+ "natural-compare": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
+ "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=",
+ "dev": true
+ },
+ "negotiator": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz",
+ "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=",
+ "dev": true
+ },
+ "nice-try": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz",
+ "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==",
+ "dev": true
+ },
+ "node-dir": {
+ "version": "0.1.17",
+ "resolved": "https://registry.npmjs.org/node-dir/-/node-dir-0.1.17.tgz",
+ "integrity": "sha1-X1Zl2TNRM1yqvvjxxVRRbPXx5OU=",
+ "dev": true,
+ "requires": {
+ "minimatch": "^3.0.2"
+ }
+ },
+ "node-version": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/node-version/-/node-version-1.1.3.tgz",
+ "integrity": "sha512-rEwE51JWn0yN3Wl5BXeGn5d52OGbSXzWiiXRjAQeuyvcGKyvuSILW2rb3G7Xh+nexzLwhTpek6Ehxd6IjvHePg==",
+ "dev": true
+ },
+ "nopt": {
+ "version": "3.0.6",
+ "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz",
+ "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=",
+ "dev": true,
+ "requires": {
+ "abbrev": "1"
+ }
+ },
+ "normalize-package-data": {
+ "version": "2.4.0",
+ "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz",
+ "integrity": "sha1-EvlaMH1YNSB1oEkHuErIvpisAS8=",
+ "dev": true,
+ "requires": {
+ "hosted-git-info": "^2.1.4",
+ "is-builtin-module": "^1.0.0",
+ "semver": "2 || 3 || 4 || 5",
+ "validate-npm-package-license": "^3.0.1"
+ }
+ },
+ "normalize-path": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
+ "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
+ "dev": true,
+ "requires": {
+ "remove-trailing-separator": "^1.0.1"
+ }
+ },
+ "normalize-url": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-3.3.0.tgz",
+ "integrity": "sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==",
+ "dev": true
+ },
+ "npm-path": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/npm-path/-/npm-path-2.0.4.tgz",
+ "integrity": "sha512-IFsj0R9C7ZdR5cP+ET342q77uSRdtWOlWpih5eC+lu29tIDbNEgDbzgVJ5UFvYHWhxDZ5TFkJafFioO0pPQjCw==",
+ "dev": true,
+ "requires": {
+ "which": "^1.2.10"
+ }
+ },
+ "npm-prefix": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/npm-prefix/-/npm-prefix-1.2.0.tgz",
+ "integrity": "sha1-5hlFX3B0ulTMZtbQ033Z8b5ry8A=",
+ "dev": true,
+ "requires": {
+ "rc": "^1.1.0",
+ "shellsubstitute": "^1.1.0",
+ "untildify": "^2.1.0"
+ }
+ },
+ "npm-run-path": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz",
+ "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=",
+ "dev": true,
+ "requires": {
+ "path-key": "^2.0.0"
+ }
+ },
+ "npm-which": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/npm-which/-/npm-which-3.0.1.tgz",
+ "integrity": "sha1-kiXybsOihcIJyuZ8OxGmtKtxQKo=",
+ "dev": true,
+ "requires": {
+ "commander": "^2.9.0",
+ "npm-path": "^2.0.2",
+ "which": "^1.2.10"
+ }
+ },
+ "nth-check": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.1.tgz",
+ "integrity": "sha1-mSms32KPwsQQmN6rgqxYDPFJquQ=",
+ "dev": true,
+ "requires": {
+ "boolbase": "~1.0.0"
+ }
+ },
+ "nugget": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/nugget/-/nugget-2.0.1.tgz",
+ "integrity": "sha1-IBCVpIfhrTYIGzQy+jytpPjQcbA=",
+ "dev": true,
+ "requires": {
+ "debug": "^2.1.3",
+ "minimist": "^1.1.0",
+ "pretty-bytes": "^1.0.2",
+ "progress-stream": "^1.1.0",
+ "request": "^2.45.0",
+ "single-line-log": "^1.1.2",
+ "throttleit": "0.0.2"
+ }
+ },
+ "number-is-nan": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
+ "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=",
+ "dev": true
+ },
+ "nwmatcher": {
+ "version": "1.4.4",
+ "resolved": "https://registry.npmjs.org/nwmatcher/-/nwmatcher-1.4.4.tgz",
+ "integrity": "sha512-3iuY4N5dhgMpCUrOVnuAdGrgxVqV2cJpM+XNccjR2DKOB1RUP0aA+wGXEiNziG/UKboFyGBIoKOaNlJxx8bciQ==",
+ "dev": true,
+ "optional": true
+ },
+ "oauth-sign": {
+ "version": "0.9.0",
+ "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz",
+ "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==",
+ "dev": true
+ },
+ "object-assign": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
+ "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
+ "dev": true
+ },
+ "object-copy": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz",
+ "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=",
+ "dev": true,
+ "requires": {
+ "copy-descriptor": "^0.1.0",
+ "define-property": "^0.2.5",
+ "kind-of": "^3.0.3"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "^0.1.0"
+ }
+ }
+ }
+ },
+ "object-keys": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-0.4.0.tgz",
+ "integrity": "sha1-KKaq50KN0sOpLz2V8hM13SBOAzY=",
+ "dev": true
+ },
+ "object-visit": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz",
+ "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=",
+ "dev": true,
+ "requires": {
+ "isobject": "^3.0.0"
+ },
+ "dependencies": {
+ "isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
+ "dev": true
+ }
+ }
+ },
+ "object.omit": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz",
+ "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=",
+ "dev": true,
+ "requires": {
+ "for-own": "^0.1.4",
+ "is-extendable": "^0.1.1"
+ }
+ },
+ "object.pick": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz",
+ "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=",
+ "dev": true,
+ "requires": {
+ "isobject": "^3.0.1"
+ },
+ "dependencies": {
+ "isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
+ "dev": true
+ }
+ }
+ },
+ "octicons": {
+ "version": "7.3.0",
+ "resolved": "https://registry.npmjs.org/octicons/-/octicons-7.3.0.tgz",
+ "integrity": "sha512-UVjlkmUL15Ef/7Rd72Io634Bdl61QgSMasAZpvXPoR2XNFj1RelAyhl4QJuR1hBGlPWFDR7KFj2jEzsFax2IUg==",
+ "dev": true,
+ "requires": {
+ "object-assign": "^4.1.1"
+ }
+ },
+ "octokit-pagination-methods": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/octokit-pagination-methods/-/octokit-pagination-methods-1.1.0.tgz",
+ "integrity": "sha512-fZ4qZdQ2nxJvtcasX7Ghl+WlWS/d9IgnBIwFZXVNNZUmzpno91SX5bc5vuxiuKoCtK78XxGGNuSCrDC7xYB3OQ==",
+ "dev": true
+ },
+ "on-finished": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
+ "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=",
+ "dev": true,
+ "requires": {
+ "ee-first": "1.1.1"
+ }
+ },
+ "on-headers": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.1.tgz",
+ "integrity": "sha1-ko9dD0cNSTQmUepnlLCFfBAGk/c=",
+ "dev": true
+ },
+ "once": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+ "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
+ "dev": true,
+ "requires": {
+ "wrappy": "1"
+ }
+ },
+ "onetime": {
+ "version": "1.1.0",
+ "resolved": "http://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz",
+ "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=",
+ "dev": true
+ },
+ "openssl-self-signed-certificate": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmjs.org/openssl-self-signed-certificate/-/openssl-self-signed-certificate-1.1.6.tgz",
+ "integrity": "sha1-nTpHdrGlfphHNQOSEUrS+RWoPdQ=",
+ "dev": true
+ },
+ "opn": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/opn/-/opn-5.3.0.tgz",
+ "integrity": "sha512-bYJHo/LOmoTd+pfiYhfZDnf9zekVJrY+cnS2a5F2x+w5ppvTqObojTP7WiFG+kVZs9Inw+qQ/lw7TroWwhdd2g==",
+ "dev": true,
+ "requires": {
+ "is-wsl": "^1.1.0"
+ }
+ },
+ "optimist": {
+ "version": "0.3.7",
+ "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.3.7.tgz",
+ "integrity": "sha1-yQlBrVnkJzMokjB00s8ufLxuwNk=",
+ "dev": true,
+ "requires": {
+ "wordwrap": "~0.0.2"
+ }
+ },
+ "optionator": {
+ "version": "0.8.2",
+ "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz",
+ "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=",
+ "dev": true,
+ "requires": {
+ "deep-is": "~0.1.3",
+ "fast-levenshtein": "~2.0.4",
+ "levn": "~0.3.0",
+ "prelude-ls": "~1.1.2",
+ "type-check": "~0.3.2",
+ "wordwrap": "~1.0.0"
+ },
+ "dependencies": {
+ "wordwrap": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz",
+ "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=",
+ "dev": true
+ }
+ }
+ },
+ "ora": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/ora/-/ora-0.3.0.tgz",
+ "integrity": "sha1-NnoHitJc+wltpQERXrW0AeB9dJU=",
+ "dev": true,
+ "requires": {
+ "chalk": "^1.1.1",
+ "cli-cursor": "^1.0.2",
+ "cli-spinners": "^0.2.0",
+ "log-symbols": "^1.0.2"
+ },
+ "dependencies": {
+ "cli-spinners": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-0.2.0.tgz",
+ "integrity": "sha1-hQeHN5E7iA9uyf/ntl6D7Hd2KE8=",
+ "dev": true
+ }
+ }
+ },
+ "os-browserify": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.1.2.tgz",
+ "integrity": "sha1-ScoCk+CxlZCl9d4Qx/JlphfY/lQ=",
+ "dev": true
+ },
+ "os-homedir": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz",
+ "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=",
+ "dev": true
+ },
+ "os-name": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/os-name/-/os-name-3.0.0.tgz",
+ "integrity": "sha512-7c74tib2FsdFbQ3W+qj8Tyd1R3Z6tuVRNNxXjJcZ4NgjIEQU9N/prVMqcW29XZPXGACqaXN3jq58/6hoaoXH6g==",
+ "dev": true,
+ "requires": {
+ "macos-release": "^2.0.0",
+ "windows-release": "^3.1.0"
+ }
+ },
+ "os-tmpdir": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
+ "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=",
+ "dev": true
+ },
+ "p-cancelable": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.0.0.tgz",
+ "integrity": "sha512-USgPoaC6tkTGlS831CxsVdmZmyb8tR1D+hStI84MyckLOzfJlYQUweomrwE3D8T7u5u5GVuW064LT501wHTYYA==",
+ "dev": true
+ },
+ "p-finally": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz",
+ "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=",
+ "dev": true
+ },
+ "p-limit": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.2.0.tgz",
+ "integrity": "sha512-Y/OtIaXtUPr4/YpMv1pCL5L5ed0rumAaAeBSj12F+bSlMdys7i8oQF/GUJmfpTS/QoaRrS/k6pma29haJpsMng==",
+ "dev": true,
+ "requires": {
+ "p-try": "^1.0.0"
+ }
+ },
+ "p-locate": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz",
+ "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=",
+ "dev": true,
+ "requires": {
+ "p-limit": "^1.1.0"
+ }
+ },
+ "p-map": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/p-map/-/p-map-1.2.0.tgz",
+ "integrity": "sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA==",
+ "dev": true
+ },
+ "p-try": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz",
+ "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=",
+ "dev": true
+ },
+ "package-json": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/package-json/-/package-json-4.0.1.tgz",
+ "integrity": "sha1-iGmgQBJTZhxMTKPabCEh7VVfXu0=",
+ "dev": true,
+ "requires": {
+ "got": "^6.7.1",
+ "registry-auth-token": "^3.0.1",
+ "registry-url": "^3.0.3",
+ "semver": "^5.1.0"
+ },
+ "dependencies": {
+ "got": {
+ "version": "6.7.1",
+ "resolved": "https://registry.npmjs.org/got/-/got-6.7.1.tgz",
+ "integrity": "sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA=",
+ "dev": true,
+ "requires": {
+ "create-error-class": "^3.0.0",
+ "duplexer3": "^0.1.4",
+ "get-stream": "^3.0.0",
+ "is-redirect": "^1.0.0",
+ "is-retry-allowed": "^1.0.0",
+ "is-stream": "^1.0.0",
+ "lowercase-keys": "^1.0.0",
+ "safe-buffer": "^5.0.1",
+ "timed-out": "^4.0.0",
+ "unzip-response": "^2.0.1",
+ "url-parse-lax": "^1.0.0"
+ }
+ },
+ "prepend-http": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz",
+ "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=",
+ "dev": true
+ },
+ "url-parse-lax": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz",
+ "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=",
+ "dev": true,
+ "requires": {
+ "prepend-http": "^1.0.1"
+ }
+ }
+ }
+ },
+ "pako": {
+ "version": "0.2.9",
+ "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz",
+ "integrity": "sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU=",
+ "dev": true
+ },
+ "parents": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/parents/-/parents-1.0.1.tgz",
+ "integrity": "sha1-/t1NK/GTp3dF/nHjcdc8MwfZx1E=",
+ "dev": true,
+ "requires": {
+ "path-platform": "~0.11.15"
+ }
+ },
+ "parse-asn1": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.1.tgz",
+ "integrity": "sha512-KPx7flKXg775zZpnp9SxJlz00gTd4BmJ2yJufSc44gMCRrRQ7NSzAcSJQfifuOLgW6bEi+ftrALtsgALeB2Adw==",
+ "dev": true,
+ "requires": {
+ "asn1.js": "^4.0.0",
+ "browserify-aes": "^1.0.0",
+ "create-hash": "^1.1.0",
+ "evp_bytestokey": "^1.0.0",
+ "pbkdf2": "^3.0.3"
+ }
+ },
+ "parse-entities": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-1.1.2.tgz",
+ "integrity": "sha512-5N9lmQ7tmxfXf+hO3X6KRG6w7uYO/HL9fHalSySTdyn63C3WNvTM/1R8tn1u1larNcEbo3Slcy2bsVDQqvEpUg==",
+ "dev": true,
+ "requires": {
+ "character-entities": "^1.0.0",
+ "character-entities-legacy": "^1.0.0",
+ "character-reference-invalid": "^1.0.0",
+ "is-alphanumerical": "^1.0.0",
+ "is-decimal": "^1.0.0",
+ "is-hexadecimal": "^1.0.0"
+ }
+ },
+ "parse-github-repo-url": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/parse-github-repo-url/-/parse-github-repo-url-1.4.1.tgz",
+ "integrity": "sha1-nn2LslKmy2ukJZUGC3v23z28H1A=",
+ "dev": true
+ },
+ "parse-gitignore": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/parse-gitignore/-/parse-gitignore-0.4.0.tgz",
+ "integrity": "sha1-q/cC5LkAUk//eQK2g4YoV7Y/k/4=",
+ "dev": true,
+ "requires": {
+ "array-unique": "^0.3.2",
+ "is-glob": "^3.1.0"
+ },
+ "dependencies": {
+ "array-unique": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz",
+ "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=",
+ "dev": true
+ },
+ "is-extglob": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+ "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
+ "dev": true
+ },
+ "is-glob": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
+ "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
+ "dev": true,
+ "requires": {
+ "is-extglob": "^2.1.0"
+ }
+ }
+ }
+ },
+ "parse-glob": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz",
+ "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=",
+ "dev": true,
+ "requires": {
+ "glob-base": "^0.3.0",
+ "is-dotfile": "^1.0.0",
+ "is-extglob": "^1.0.0",
+ "is-glob": "^2.0.0"
+ }
+ },
+ "parse-json": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
+ "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=",
+ "dev": true,
+ "requires": {
+ "error-ex": "^1.2.0"
+ }
+ },
+ "parse5": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/parse5/-/parse5-1.5.1.tgz",
+ "integrity": "sha1-m387DeMr543CQBsXVzzK8Pb1nZQ=",
+ "dev": true,
+ "optional": true
+ },
+ "pascalcase": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz",
+ "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=",
+ "dev": true
+ },
+ "path-browserify": {
+ "version": "0.0.0",
+ "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz",
+ "integrity": "sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo=",
+ "dev": true
+ },
+ "path-dirname": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz",
+ "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=",
+ "dev": true
+ },
+ "path-exists": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz",
+ "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=",
+ "dev": true,
+ "requires": {
+ "pinkie-promise": "^2.0.0"
+ }
+ },
+ "path-is-absolute": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+ "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
+ "dev": true
+ },
+ "path-is-inside": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz",
+ "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=",
+ "dev": true
+ },
+ "path-key": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
+ "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=",
+ "dev": true
+ },
+ "path-parse": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz",
+ "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=",
+ "dev": true
+ },
+ "path-platform": {
+ "version": "0.11.15",
+ "resolved": "https://registry.npmjs.org/path-platform/-/path-platform-0.11.15.tgz",
+ "integrity": "sha1-6GQhf3TDaFDwhSt43Hv31KVyG/I=",
+ "dev": true
+ },
+ "path-type": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz",
+ "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.2",
+ "pify": "^2.0.0",
+ "pinkie-promise": "^2.0.0"
+ }
+ },
+ "pbkdf2": {
+ "version": "3.0.16",
+ "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.16.tgz",
+ "integrity": "sha512-y4CXP3thSxqf7c0qmOF+9UeOTrifiVTIM+u7NWlq+PRsHbr7r7dpCmvzrZxa96JJUNi0Y5w9VqG5ZNeCVMoDcA==",
+ "dev": true,
+ "requires": {
+ "create-hash": "^1.1.2",
+ "create-hmac": "^1.1.4",
+ "ripemd160": "^2.0.1",
+ "safe-buffer": "^5.0.1",
+ "sha.js": "^2.4.8"
+ }
+ },
+ "peek-stream": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/peek-stream/-/peek-stream-1.1.3.tgz",
+ "integrity": "sha512-FhJ+YbOSBb9/rIl2ZeE/QHEsWn7PqNYt8ARAY3kIgNGOk13g9FGyIY6JIl/xB/3TFRVoTv5as0l11weORrTekA==",
+ "dev": true,
+ "requires": {
+ "buffer-from": "^1.0.0",
+ "duplexify": "^3.5.0",
+ "through2": "^2.0.3"
+ }
+ },
+ "performance-now": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
+ "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=",
+ "dev": true
+ },
+ "pify": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+ "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
+ "dev": true
+ },
+ "pinkie": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz",
+ "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=",
+ "dev": true
+ },
+ "pinkie-promise": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
+ "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=",
+ "dev": true,
+ "requires": {
+ "pinkie": "^2.0.0"
+ }
+ },
+ "pkg-conf": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/pkg-conf/-/pkg-conf-2.1.0.tgz",
+ "integrity": "sha1-ISZRTKbyq/69FoWW3xi6V4Z/AFg=",
+ "dev": true,
+ "requires": {
+ "find-up": "^2.0.0",
+ "load-json-file": "^4.0.0"
+ },
+ "dependencies": {
+ "find-up": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
+ "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
+ "dev": true,
+ "requires": {
+ "locate-path": "^2.0.0"
+ }
+ },
+ "load-json-file": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz",
+ "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.2",
+ "parse-json": "^4.0.0",
+ "pify": "^3.0.0",
+ "strip-bom": "^3.0.0"
+ }
+ },
+ "parse-json": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz",
+ "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=",
+ "dev": true,
+ "requires": {
+ "error-ex": "^1.3.1",
+ "json-parse-better-errors": "^1.0.1"
+ }
+ },
+ "pify": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
+ "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
+ "dev": true
+ },
+ "strip-bom": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
+ "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=",
+ "dev": true
+ }
+ }
+ },
+ "pkg-config": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/pkg-config/-/pkg-config-1.1.1.tgz",
+ "integrity": "sha1-VX7yLXPaPIg3EHdmxS6tq94pj+Q=",
+ "dev": true,
+ "requires": {
+ "debug-log": "^1.0.0",
+ "find-root": "^1.0.0",
+ "xtend": "^4.0.1"
+ }
+ },
+ "pkg-dir": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz",
+ "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=",
+ "dev": true,
+ "requires": {
+ "find-up": "^1.0.0"
+ }
+ },
+ "please-upgrade-node": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/please-upgrade-node/-/please-upgrade-node-3.1.1.tgz",
+ "integrity": "sha512-KY1uHnQ2NlQHqIJQpnh/i54rKkuxCEBx+voJIS/Mvb+L2iYd2NMotwduhKTMjfC1uKoX3VXOxLjIYG66dfJTVQ==",
+ "dev": true,
+ "requires": {
+ "semver-compare": "^1.0.0"
+ }
+ },
+ "plist": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/plist/-/plist-3.0.1.tgz",
+ "integrity": "sha512-GpgvHHocGRyQm74b6FWEZZVRroHKE1I0/BTjAmySaohK+cUn+hZpbqXkc3KWgW3gQYkqcQej35FohcT0FRlkRQ==",
+ "dev": true,
+ "requires": {
+ "base64-js": "^1.2.3",
+ "xmlbuilder": "^9.0.7",
+ "xmldom": "0.1.x"
+ }
+ },
+ "plur": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/plur/-/plur-2.1.2.tgz",
+ "integrity": "sha1-dIJFLBoPUI4+NE6uwxLJHCncZVo=",
+ "dev": true,
+ "requires": {
+ "irregular-plurals": "^1.0.0"
+ }
+ },
+ "pluralize": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-7.0.0.tgz",
+ "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==",
+ "dev": true
+ },
+ "posix-character-classes": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz",
+ "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=",
+ "dev": true
+ },
+ "prelude-ls": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz",
+ "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=",
+ "dev": true
+ },
+ "prepend-http": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz",
+ "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=",
+ "dev": true
+ },
+ "preserve": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz",
+ "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=",
+ "dev": true
+ },
+ "pretty-bytes": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-1.0.4.tgz",
+ "integrity": "sha1-CiLoIQYJrTVUL4yNXSFZr/B1HIQ=",
+ "dev": true,
+ "requires": {
+ "get-stdin": "^4.0.1",
+ "meow": "^3.1.0"
+ },
+ "dependencies": {
+ "camelcase": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz",
+ "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=",
+ "dev": true
+ },
+ "camelcase-keys": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz",
+ "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=",
+ "dev": true,
+ "requires": {
+ "camelcase": "^2.0.0",
+ "map-obj": "^1.0.0"
+ }
+ },
+ "indent-string": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz",
+ "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=",
+ "dev": true,
+ "requires": {
+ "repeating": "^2.0.0"
+ }
+ },
+ "map-obj": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz",
+ "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=",
+ "dev": true
+ },
+ "meow": {
+ "version": "3.7.0",
+ "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz",
+ "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=",
+ "dev": true,
+ "requires": {
+ "camelcase-keys": "^2.0.0",
+ "decamelize": "^1.1.2",
+ "loud-rejection": "^1.0.0",
+ "map-obj": "^1.0.1",
+ "minimist": "^1.1.3",
+ "normalize-package-data": "^2.3.4",
+ "object-assign": "^4.0.1",
+ "read-pkg-up": "^1.0.1",
+ "redent": "^1.0.0",
+ "trim-newlines": "^1.0.0"
+ }
+ },
+ "redent": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz",
+ "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=",
+ "dev": true,
+ "requires": {
+ "indent-string": "^2.1.0",
+ "strip-indent": "^1.0.1"
+ }
+ },
+ "strip-indent": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz",
+ "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=",
+ "dev": true,
+ "requires": {
+ "get-stdin": "^4.0.1"
+ }
+ },
+ "trim-newlines": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz",
+ "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=",
+ "dev": true
+ }
+ }
+ },
+ "pretty-format": {
+ "version": "23.6.0",
+ "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-23.6.0.tgz",
+ "integrity": "sha512-zf9NV1NSlDLDjycnwm6hpFATCGl/K1lt0R/GdkAK2O5LN/rwJoB+Mh93gGJjut4YbmecbfgLWVGSTCr0Ewvvbw==",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^3.0.0",
+ "ansi-styles": "^3.2.0"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
+ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
+ "dev": true
+ },
+ "ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "dev": true,
+ "requires": {
+ "color-convert": "^1.9.0"
+ }
+ }
+ }
+ },
+ "process": {
+ "version": "0.11.10",
+ "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
+ "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=",
+ "dev": true
+ },
+ "process-nextick-args": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz",
+ "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==",
+ "dev": true
+ },
+ "progress": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.0.tgz",
+ "integrity": "sha1-ihvjZr+Pwj2yvSPxDG/pILQ4nR8=",
+ "dev": true
+ },
+ "progress-stream": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/progress-stream/-/progress-stream-1.2.0.tgz",
+ "integrity": "sha1-LNPP6jO6OonJwSHsM0er6asSX3c=",
+ "dev": true,
+ "requires": {
+ "speedometer": "~0.1.2",
+ "through2": "~0.2.3"
+ },
+ "dependencies": {
+ "through2": {
+ "version": "0.2.3",
+ "resolved": "https://registry.npmjs.org/through2/-/through2-0.2.3.tgz",
+ "integrity": "sha1-6zKE2k6jEbbMis42U3SKUqvyWj8=",
+ "dev": true,
+ "requires": {
+ "readable-stream": "~1.1.9",
+ "xtend": "~2.1.1"
+ }
+ },
+ "xtend": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/xtend/-/xtend-2.1.2.tgz",
+ "integrity": "sha1-bv7MKk2tjmlixJAbM3znuoe10os=",
+ "dev": true,
+ "requires": {
+ "object-keys": "~0.4.0"
+ }
+ }
+ }
+ },
+ "prop-types": {
+ "version": "15.6.2",
+ "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.6.2.tgz",
+ "integrity": "sha512-3pboPvLiWD7dkI3qf3KbUe6hKFKa52w+AE0VCqECtf+QHAKgOL37tTaNCnuX1nAAQ4ZhyP+kYVKf8rLmJ/feDQ==",
+ "dev": true,
+ "requires": {
+ "loose-envify": "^1.3.1",
+ "object-assign": "^4.1.1"
+ }
+ },
+ "pseudomap": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz",
+ "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=",
+ "dev": true
+ },
+ "psl": {
+ "version": "1.1.29",
+ "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.29.tgz",
+ "integrity": "sha512-AeUmQ0oLN02flVHXWh9sSJF7mcdFq0ppid/JkErufc3hGIV/AMa8Fo9VgDo/cT2jFdOWoFvHp90qqBH54W+gjQ==",
+ "dev": true
+ },
+ "public-encrypt": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.2.tgz",
+ "integrity": "sha512-4kJ5Esocg8X3h8YgJsKAuoesBgB7mqH3eowiDzMUPKiRDDE7E/BqqZD1hnTByIaAFiwAw246YEltSq7tdrOH0Q==",
+ "dev": true,
+ "requires": {
+ "bn.js": "^4.1.0",
+ "browserify-rsa": "^4.0.0",
+ "create-hash": "^1.1.0",
+ "parse-asn1": "^5.0.0",
+ "randombytes": "^2.0.1"
+ }
+ },
+ "pump": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz",
+ "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==",
+ "dev": true,
+ "requires": {
+ "end-of-stream": "^1.1.0",
+ "once": "^1.3.1"
+ }
+ },
+ "pumpify": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz",
+ "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==",
+ "dev": true,
+ "requires": {
+ "duplexify": "^3.6.0",
+ "inherits": "^2.0.3",
+ "pump": "^2.0.0"
+ }
+ },
+ "punycode": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
+ "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=",
+ "dev": true
+ },
+ "q": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz",
+ "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=",
+ "dev": true
+ },
+ "qs": {
+ "version": "6.5.2",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
+ "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==",
+ "dev": true
+ },
+ "querystring": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz",
+ "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=",
+ "dev": true
+ },
+ "querystring-es3": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz",
+ "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=",
+ "dev": true
+ },
+ "quick-lru": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-1.1.0.tgz",
+ "integrity": "sha1-Q2CxfGETatOAeDl/8RQW4Ybc+7g=",
+ "dev": true
+ },
+ "ramda": {
+ "version": "0.25.0",
+ "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.25.0.tgz",
+ "integrity": "sha512-GXpfrYVPwx3K7RQ6aYT8KPS8XViSXUVJT1ONhoKPE9VAleW42YE+U+8VEyGWt41EnEQW7gwecYJriTI0pKoecQ==",
+ "dev": true
+ },
+ "randomatic": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-3.0.0.tgz",
+ "integrity": "sha512-VdxFOIEY3mNO5PtSRkkle/hPJDHvQhK21oa73K4yAc9qmp6N429gAyF1gZMOTMeS0/AYzaV/2Trcef+NaIonSA==",
+ "dev": true,
+ "requires": {
+ "is-number": "^4.0.0",
+ "kind-of": "^6.0.0",
+ "math-random": "^1.0.1"
+ },
+ "dependencies": {
+ "is-number": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz",
+ "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==",
+ "dev": true
+ },
+ "kind-of": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
+ "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==",
+ "dev": true
+ }
+ }
+ },
+ "randombytes": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.6.tgz",
+ "integrity": "sha512-CIQ5OFxf4Jou6uOKe9t1AOgqpeU5fd70A8NPdHSGeYXqXsPe6peOwI0cUl88RWZ6sP1vPMV3avd/R6cZ5/sP1A==",
+ "dev": true,
+ "requires": {
+ "safe-buffer": "^5.1.0"
+ }
+ },
+ "randomfill": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz",
+ "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==",
+ "dev": true,
+ "requires": {
+ "randombytes": "^2.0.5",
+ "safe-buffer": "^5.1.0"
+ }
+ },
+ "range-parser": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz",
+ "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=",
+ "dev": true
+ },
+ "raw-body": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.2.tgz",
+ "integrity": "sha1-vNYMd9Prk83gBQKVw/N5OJvIj4k=",
+ "dev": true,
+ "requires": {
+ "bytes": "3.0.0",
+ "http-errors": "1.6.2",
+ "iconv-lite": "0.4.19",
+ "unpipe": "1.0.0"
+ }
+ },
+ "rc": {
+ "version": "1.2.7",
+ "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.7.tgz",
+ "integrity": "sha512-LdLD8xD4zzLsAT5xyushXDNscEjB7+2ulnl8+r1pnESlYtlJtVSoCMBGr30eDRJ3+2Gq89jK9P9e4tCEH1+ywA==",
+ "dev": true,
+ "requires": {
+ "deep-extend": "^0.5.1",
+ "ini": "~1.3.0",
+ "minimist": "^1.2.0",
+ "strip-json-comments": "~2.0.1"
+ }
+ },
+ "read-only-stream": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/read-only-stream/-/read-only-stream-2.0.0.tgz",
+ "integrity": "sha1-JyT9aoET1zdkrCiNQ4YnDB2/F/A=",
+ "dev": true,
+ "requires": {
+ "readable-stream": "^2.0.2"
+ },
+ "dependencies": {
+ "isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
+ "dev": true
+ },
+ "readable-stream": {
+ "version": "2.3.6",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
+ "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
+ "dev": true,
+ "requires": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
+ }
+ },
+ "string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "dev": true,
+ "requires": {
+ "safe-buffer": "~5.1.0"
+ }
+ }
+ }
+ },
+ "read-pkg": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz",
+ "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=",
+ "dev": true,
+ "requires": {
+ "load-json-file": "^1.0.0",
+ "normalize-package-data": "^2.3.2",
+ "path-type": "^1.0.0"
+ }
+ },
+ "read-pkg-up": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz",
+ "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=",
+ "dev": true,
+ "requires": {
+ "find-up": "^1.0.0",
+ "read-pkg": "^1.0.0"
+ }
+ },
+ "readable-stream": {
+ "version": "1.1.14",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz",
+ "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=",
+ "dev": true,
+ "requires": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.1",
+ "isarray": "0.0.1",
+ "string_decoder": "~0.10.x"
+ }
+ },
+ "readdirp": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.1.0.tgz",
+ "integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.2",
+ "minimatch": "^3.0.2",
+ "readable-stream": "^2.0.2",
+ "set-immediate-shim": "^1.0.1"
+ },
+ "dependencies": {
+ "isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
+ "dev": true
+ },
+ "readable-stream": {
+ "version": "2.3.6",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
+ "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
+ "dev": true,
+ "requires": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
+ }
+ },
+ "string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "dev": true,
+ "requires": {
+ "safe-buffer": "~5.1.0"
+ }
+ }
+ }
+ },
+ "redent": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/redent/-/redent-2.0.0.tgz",
+ "integrity": "sha1-wbIAe0LVfrE4kHmzyDM2OdXhzKo=",
+ "dev": true,
+ "requires": {
+ "indent-string": "^3.0.0",
+ "strip-indent": "^2.0.0"
+ }
+ },
+ "regex-cache": {
+ "version": "0.4.4",
+ "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz",
+ "integrity": "sha1-db3FiioUls7EihKDW8VMjVYjNt0=",
+ "dev": true,
+ "requires": {
+ "is-equal-shallow": "^0.1.3"
+ }
+ },
+ "regex-not": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz",
+ "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==",
+ "dev": true,
+ "requires": {
+ "extend-shallow": "^3.0.2",
+ "safe-regex": "^1.1.0"
+ }
+ },
+ "regexpp": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.0.tgz",
+ "integrity": "sha512-g2FAVtR8Uh8GO1Nv5wpxW7VFVwHcCEr4wyA8/MHiRkO8uHoR5ntAA8Uq3P1vvMTX/BeQiRVSpDGLd+Wn5HNOTA==",
+ "dev": true
+ },
+ "registry-auth-token": {
+ "version": "3.3.2",
+ "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.3.2.tgz",
+ "integrity": "sha512-JL39c60XlzCVgNrO+qq68FoNb56w/m7JYvGR2jT5iR1xBrUA3Mfx5Twk5rqTThPmQKMWydGmq8oFtDlxfrmxnQ==",
+ "dev": true,
+ "requires": {
+ "rc": "^1.1.6",
+ "safe-buffer": "^5.0.1"
+ }
+ },
+ "registry-url": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz",
+ "integrity": "sha1-PU74cPc93h138M+aOBQyRE4XSUI=",
+ "dev": true,
+ "requires": {
+ "rc": "^1.0.1"
+ }
+ },
+ "remark": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/remark/-/remark-8.0.0.tgz",
+ "integrity": "sha512-K0PTsaZvJlXTl9DN6qYlvjTkqSZBFELhROZMrblm2rB+085flN84nz4g/BscKRMqDvhzlK1oQ/xnWQumdeNZYw==",
+ "dev": true,
+ "requires": {
+ "remark-parse": "^4.0.0",
+ "remark-stringify": "^4.0.0",
+ "unified": "^6.0.0"
+ }
+ },
+ "remark-cli": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/remark-cli/-/remark-cli-4.0.0.tgz",
+ "integrity": "sha512-q5GMjGypUS4rTZb3WfMQcGpClSC38A9Ogg1h/HB2GLsqypDetmAfy0X+tuJ6JeyCPVOXXCDgsDCQq4QPqKmxBA==",
+ "dev": true,
+ "requires": {
+ "markdown-extensions": "^1.1.0",
+ "remark": "^8.0.0",
+ "unified-args": "^4.0.0"
+ }
+ },
+ "remark-lint": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/remark-lint/-/remark-lint-6.0.1.tgz",
+ "integrity": "sha512-wvTTuB5O5pF8SxqahQjjrU3dtuhygYjaGcOZTw+4ACgSE4RBINDlNqN46HjcV3X0ib5GmObJUt5a2mmhtmuTqw==",
+ "dev": true,
+ "requires": {
+ "remark-message-control": "^4.0.0"
+ }
+ },
+ "remark-lint-blockquote-indentation": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/remark-lint-blockquote-indentation/-/remark-lint-blockquote-indentation-1.0.1.tgz",
+ "integrity": "sha512-YrP99MJ3+dQ5JXzq39fUOcYzwcumva/xEM1eFtD2TrQcSdlMLoqYa7gj+aEEhZCjlA5BssTiVoWWW0RjyPPGZw==",
+ "dev": true,
+ "requires": {
+ "mdast-util-to-string": "^1.0.2",
+ "plur": "^2.1.2",
+ "unified-lint-rule": "^1.0.0",
+ "unist-util-generated": "^1.1.0",
+ "unist-util-position": "^3.0.0",
+ "unist-util-visit": "^1.1.1"
+ }
+ },
+ "remark-lint-code-block-style": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/remark-lint-code-block-style/-/remark-lint-code-block-style-1.0.1.tgz",
+ "integrity": "sha512-FRUMhhKwCruH4vkatdMhVO4WlYpysV1NmMILVoK/k+/7uFLSfgvlqo66nzhpMdWL8TQHqdo0LhiXuetGC2WjsQ==",
+ "dev": true,
+ "requires": {
+ "unified-lint-rule": "^1.0.0",
+ "unist-util-generated": "^1.1.0",
+ "unist-util-position": "^3.0.0",
+ "unist-util-visit": "^1.1.1"
+ }
+ },
+ "remark-lint-definition-case": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/remark-lint-definition-case/-/remark-lint-definition-case-1.0.1.tgz",
+ "integrity": "sha512-TxLye5KF4o/rKVTvmPRX5jS9itamFS02yy1IG8bIYcIAJvWsW3GlJaXq4ohK3hKwSQOhtCherEfD6XF9BHLNYQ==",
+ "dev": true,
+ "requires": {
+ "unified-lint-rule": "^1.0.0",
+ "unist-util-generated": "^1.1.0",
+ "unist-util-position": "^3.0.0",
+ "unist-util-visit": "^1.1.1"
+ }
+ },
+ "remark-lint-definition-spacing": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/remark-lint-definition-spacing/-/remark-lint-definition-spacing-1.0.1.tgz",
+ "integrity": "sha512-ewzdlFfpTSP11ZuiOln0yfz6Y03aWtgJmLVQNfF1spaT1gURaShjs8Hiilbo719bz96DgvXSZLP6UnkSiZL1vg==",
+ "dev": true,
+ "requires": {
+ "unified-lint-rule": "^1.0.0",
+ "unist-util-generated": "^1.1.0",
+ "unist-util-position": "^3.0.0",
+ "unist-util-visit": "^1.1.1"
+ }
+ },
+ "remark-lint-emphasis-marker": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/remark-lint-emphasis-marker/-/remark-lint-emphasis-marker-1.0.1.tgz",
+ "integrity": "sha512-QyNsD6y8EZQqhechw0XFGybYMlxn6PFLSlFUO50KSQlJEOgkImN2yJfrNrET2GY4t/fc/uYmeI/q7auUIkLX2w==",
+ "dev": true,
+ "requires": {
+ "unified-lint-rule": "^1.0.0",
+ "unist-util-generated": "^1.1.0",
+ "unist-util-position": "^3.0.0",
+ "unist-util-visit": "^1.1.1"
+ }
+ },
+ "remark-lint-fenced-code-flag": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/remark-lint-fenced-code-flag/-/remark-lint-fenced-code-flag-1.0.1.tgz",
+ "integrity": "sha512-P24T9DRe/nnywPFRpE1UAXAVzN1CX6HmINr15UHbQZo1Cy8KYt7uV9YOR0/XzphtnO/AFenAqZyf7tchW5AUNQ==",
+ "dev": true,
+ "requires": {
+ "unified-lint-rule": "^1.0.0",
+ "unist-util-generated": "^1.1.0",
+ "unist-util-position": "^3.0.0",
+ "unist-util-visit": "^1.1.1"
+ }
+ },
+ "remark-lint-fenced-code-marker": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/remark-lint-fenced-code-marker/-/remark-lint-fenced-code-marker-1.0.1.tgz",
+ "integrity": "sha512-mX7xAMl5m7xGX+YtOtyXIyv+egD4IQAm6DPGdfunI734QwODwcoBydtpTD56jrY+48nVcQ/anFYT1Blg3Xk3sQ==",
+ "dev": true,
+ "requires": {
+ "unified-lint-rule": "^1.0.0",
+ "unist-util-generated": "^1.1.0",
+ "unist-util-position": "^3.0.0",
+ "unist-util-visit": "^1.1.1"
+ }
+ },
+ "remark-lint-file-extension": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/remark-lint-file-extension/-/remark-lint-file-extension-1.0.1.tgz",
+ "integrity": "sha512-K1Pf5oviaFyCs0FhZqaNZ2odgd5KoV6AlA4nNAMxyylB0Y6t0mYpzECoLSS5Bgxf6f8Op9YbuM2cbjBAsv0dIA==",
+ "dev": true,
+ "requires": {
+ "unified-lint-rule": "^1.0.0"
+ }
+ },
+ "remark-lint-final-definition": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/remark-lint-final-definition/-/remark-lint-final-definition-1.0.1.tgz",
+ "integrity": "sha512-DK6bphJdQ0xSOQAn+8wOyLIVc3SZW2+ZzCMCLkQnVtHiQ9GHMzFiCkeE3Cq+OClsMI5Yn8wFTHZHPUn58VhNEQ==",
+ "dev": true,
+ "requires": {
+ "unified-lint-rule": "^1.0.0",
+ "unist-util-generated": "^1.1.0",
+ "unist-util-position": "^3.0.0",
+ "unist-util-visit": "^1.1.1"
+ }
+ },
+ "remark-lint-hard-break-spaces": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/remark-lint-hard-break-spaces/-/remark-lint-hard-break-spaces-1.0.2.tgz",
+ "integrity": "sha512-uh7LqHgRPCphiCvRzBVA4D0Ml2IqPaw89lWJdQ6HvYiV8ChB/OFLBapHi6OKW7NVVVPPJsElPMB/UPUsKFaPTg==",
+ "dev": true,
+ "requires": {
+ "unified-lint-rule": "^1.0.0",
+ "unist-util-generated": "^1.1.0",
+ "unist-util-position": "^3.0.0",
+ "unist-util-visit": "^1.1.1"
+ }
+ },
+ "remark-lint-heading-increment": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/remark-lint-heading-increment/-/remark-lint-heading-increment-1.0.1.tgz",
+ "integrity": "sha512-jBAJacXAU5drUpvmymOoFmrdCCNDiz8bzGgJIMjpT0Vyjd0+qdXu2iyFMl/4RkkUli25rpUDXkTHTcxmNbh7Zw==",
+ "dev": true,
+ "requires": {
+ "unified-lint-rule": "^1.0.0",
+ "unist-util-generated": "^1.1.0",
+ "unist-util-visit": "^1.1.1"
+ }
+ },
+ "remark-lint-heading-style": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/remark-lint-heading-style/-/remark-lint-heading-style-1.0.1.tgz",
+ "integrity": "sha512-m9Gqr091YdxUtG69xdXYH8fSd3+nsrsMamB/qSWpVSZuWQKZ1mRotr1LO9NphJh6vhw8IfBtG07wgEDn6b40sQ==",
+ "dev": true,
+ "requires": {
+ "mdast-util-heading-style": "^1.0.2",
+ "unified-lint-rule": "^1.0.0",
+ "unist-util-generated": "^1.1.0",
+ "unist-util-visit": "^1.1.1"
+ }
+ },
+ "remark-lint-link-title-style": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/remark-lint-link-title-style/-/remark-lint-link-title-style-1.0.1.tgz",
+ "integrity": "sha512-91MyqmZjokSzRbgvlKq5sLCJEFkM/MNKT1PDaWa3+GDLBGu7D4eMQGd2x49xX8IdJDEoWy5D8W+2Gb8XKWMUyw==",
+ "dev": true,
+ "requires": {
+ "unified-lint-rule": "^1.0.0",
+ "unist-util-generated": "^1.1.0",
+ "unist-util-position": "^3.0.0",
+ "unist-util-visit": "^1.1.1",
+ "vfile-location": "^2.0.1"
+ }
+ },
+ "remark-lint-list-item-content-indent": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/remark-lint-list-item-content-indent/-/remark-lint-list-item-content-indent-1.0.1.tgz",
+ "integrity": "sha512-R5cdXFFywoBcg+2UUcF9OJ/vt9oqJv+KmTKIQV9CFHWeAfMFiZbxazsSPNaCcO1fW9622hxPCawN/AofDTbP7Q==",
+ "dev": true,
+ "requires": {
+ "plur": "^2.1.2",
+ "unified-lint-rule": "^1.0.0",
+ "unist-util-generated": "^1.1.0",
+ "unist-util-position": "^3.0.0",
+ "unist-util-visit": "^1.1.1"
+ }
+ },
+ "remark-lint-list-item-indent": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/remark-lint-list-item-indent/-/remark-lint-list-item-indent-1.0.1.tgz",
+ "integrity": "sha512-dSUFGQYtduuaos+5oXH89RTk0rGUe6DFf04q+rxQ7Z3YRbuXhAU2nYeY0/HENYiWJU1xFLteZkDvKMj0NfS3DQ==",
+ "dev": true,
+ "requires": {
+ "plur": "^2.1.2",
+ "unified-lint-rule": "^1.0.0",
+ "unist-util-generated": "^1.1.0",
+ "unist-util-position": "^3.0.0",
+ "unist-util-visit": "^1.1.1"
+ }
+ },
+ "remark-lint-list-item-spacing": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/remark-lint-list-item-spacing/-/remark-lint-list-item-spacing-1.1.1.tgz",
+ "integrity": "sha512-HlPEzRq4LJB6tQ72zgIZ42mOaOSX92O268BLolys/H1x6N29/JNMLfurWqLsrxZrxxHH3H7EUP4dNM2P1kDGBw==",
+ "dev": true,
+ "requires": {
+ "unified-lint-rule": "^1.0.0",
+ "unist-util-generated": "^1.1.0",
+ "unist-util-position": "^3.0.0",
+ "unist-util-visit": "^1.1.1"
+ }
+ },
+ "remark-lint-maximum-heading-length": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/remark-lint-maximum-heading-length/-/remark-lint-maximum-heading-length-1.0.1.tgz",
+ "integrity": "sha512-f8ChV9U238gncyvTqmzJ+UpCMj+hFyluWBjVYr2K8CNh+MdSivIxS4zw4170sBRoqNuS3gBxRHG9f4rmdqotJA==",
+ "dev": true,
+ "requires": {
+ "mdast-util-to-string": "^1.0.2",
+ "unified-lint-rule": "^1.0.0",
+ "unist-util-generated": "^1.1.0",
+ "unist-util-visit": "^1.1.1"
+ }
+ },
+ "remark-lint-maximum-line-length": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/remark-lint-maximum-line-length/-/remark-lint-maximum-line-length-1.0.2.tgz",
+ "integrity": "sha512-M4UIXAAbtLgoQbTDVwdKOEFbTKtJSZ+pCW7ZqMFs+cbIN0Svm32LM9+xpVfVU0hLYt3Ypl++EAPfguBNe1PZEw==",
+ "dev": true,
+ "requires": {
+ "unified-lint-rule": "^1.0.0",
+ "unist-util-generated": "^1.1.0",
+ "unist-util-position": "^3.0.0",
+ "unist-util-visit": "^1.1.1"
+ }
+ },
+ "remark-lint-no-auto-link-without-protocol": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/remark-lint-no-auto-link-without-protocol/-/remark-lint-no-auto-link-without-protocol-1.0.1.tgz",
+ "integrity": "sha512-MHl0hNtF8Rc0lg6iuVP7/0rnp4uZadm3S07/1TiFeqzU22KFxxzcC8980Q4+I8oPZE0d1x80h9DmkNAVFwhDjQ==",
+ "dev": true,
+ "requires": {
+ "mdast-util-to-string": "^1.0.2",
+ "unified-lint-rule": "^1.0.0",
+ "unist-util-generated": "^1.1.0",
+ "unist-util-position": "^3.0.0",
+ "unist-util-visit": "^1.1.1"
+ }
+ },
+ "remark-lint-no-blockquote-without-marker": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/remark-lint-no-blockquote-without-marker/-/remark-lint-no-blockquote-without-marker-2.0.1.tgz",
+ "integrity": "sha512-8VTQ/MP3flvG4U0tFSD+DMVT7F/4u9SnQLb/jjeRC3DzgbsIagIUqpWYAKkc+yBz9S/lgftA92lLP5PrlOa5DA==",
+ "dev": true,
+ "requires": {
+ "unified-lint-rule": "^1.0.0",
+ "unist-util-generated": "^1.1.0",
+ "unist-util-position": "^3.0.0",
+ "unist-util-visit": "^1.1.1",
+ "vfile-location": "^2.0.1"
+ }
+ },
+ "remark-lint-no-consecutive-blank-lines": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/remark-lint-no-consecutive-blank-lines/-/remark-lint-no-consecutive-blank-lines-1.0.1.tgz",
+ "integrity": "sha512-IhyUiGTpb/hjtusIVg10q963KeL5CyNfbWOfDZ1KtY2tvdoSPRGrrCuTKo6OG8r1qavM6bU0mtRuIBqNh4lIzA==",
+ "dev": true,
+ "requires": {
+ "plur": "^2.1.2",
+ "unified-lint-rule": "^1.0.0",
+ "unist-util-generated": "^1.1.0",
+ "unist-util-position": "^3.0.0",
+ "unist-util-visit": "^1.1.1"
+ }
+ },
+ "remark-lint-no-duplicate-headings": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/remark-lint-no-duplicate-headings/-/remark-lint-no-duplicate-headings-1.0.1.tgz",
+ "integrity": "sha512-iZZxyZgwnjvDkydKZzqHBueJvIpGbxnITmgd8xN8TOLZoAg9/KGTQRAkotL1HXNRdkzwggfgB9ONxv/rWtYBmg==",
+ "dev": true,
+ "requires": {
+ "mdast-util-to-string": "^1.0.2",
+ "unified-lint-rule": "^1.0.0",
+ "unist-util-generated": "^1.1.0",
+ "unist-util-position": "^3.0.0",
+ "unist-util-visit": "^1.1.1"
+ }
+ },
+ "remark-lint-no-emphasis-as-heading": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/remark-lint-no-emphasis-as-heading/-/remark-lint-no-emphasis-as-heading-1.0.1.tgz",
+ "integrity": "sha512-+x17Hrjwne4Mhk2x/Zolnuv/sOclF1oYMDBSEYhBUpn/UAwxhXEXYKkeo0KkWA7Q3+UCLELJvzsk4cGNP6Sgow==",
+ "dev": true,
+ "requires": {
+ "unified-lint-rule": "^1.0.0",
+ "unist-util-generated": "^1.1.0",
+ "unist-util-visit": "^1.1.1"
+ }
+ },
+ "remark-lint-no-file-name-articles": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/remark-lint-no-file-name-articles/-/remark-lint-no-file-name-articles-1.0.1.tgz",
+ "integrity": "sha512-SzebnFnilrsINA6QZP1YqPa3SrfSotrLkRWl5FUCoVshBvEFNKJFWXj6Xyt4NjWQ5tJWFtOMysAuHdGT+Odhjg==",
+ "dev": true,
+ "requires": {
+ "unified-lint-rule": "^1.0.0"
+ }
+ },
+ "remark-lint-no-file-name-consecutive-dashes": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/remark-lint-no-file-name-consecutive-dashes/-/remark-lint-no-file-name-consecutive-dashes-1.0.1.tgz",
+ "integrity": "sha512-YP2HBwA00yeD7phvxp4ftiqbfBPfYHPgPfcEcb8oNa1WlUh/58cs9DbSHWKsZG+XLkvEaheC6qUQG02jEKZHPA==",
+ "dev": true,
+ "requires": {
+ "unified-lint-rule": "^1.0.0"
+ }
+ },
+ "remark-lint-no-file-name-irregular-characters": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/remark-lint-no-file-name-irregular-characters/-/remark-lint-no-file-name-irregular-characters-1.0.1.tgz",
+ "integrity": "sha512-+ks/V6OVMGOPZKw+fe2E4DPvLoslGxvdgtqXq2Nyz0cEdYX8RP45kI79V4w95H7UCJAeOFM9mZzVLvmCY1sEbg==",
+ "dev": true,
+ "requires": {
+ "unified-lint-rule": "^1.0.0"
+ }
+ },
+ "remark-lint-no-file-name-mixed-case": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/remark-lint-no-file-name-mixed-case/-/remark-lint-no-file-name-mixed-case-1.0.1.tgz",
+ "integrity": "sha512-bcqPsow1C0LrsKII1YehUO7VPOER7nze6FzsZZ8/NP+d200OL7Y7VMCqN1kscAvG+PTJgjznyXuLEpy7KQnVFg==",
+ "dev": true,
+ "requires": {
+ "unified-lint-rule": "^1.0.0"
+ }
+ },
+ "remark-lint-no-file-name-outer-dashes": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/remark-lint-no-file-name-outer-dashes/-/remark-lint-no-file-name-outer-dashes-1.0.2.tgz",
+ "integrity": "sha512-BVEwLrA4kipalgKrxhncpgtmh6eUmHBH1ggC+X3csYR4X5vXv4vHQqpov4I1vMyWxMLMBnq7lTL3Iqp0CS4vwg==",
+ "dev": true,
+ "requires": {
+ "unified-lint-rule": "^1.0.0"
+ }
+ },
+ "remark-lint-no-heading-punctuation": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/remark-lint-no-heading-punctuation/-/remark-lint-no-heading-punctuation-1.0.1.tgz",
+ "integrity": "sha512-/7kGRmPT+JLxEME1Z/rQn99mP8yr4qXFwcniKYsefR1jl8pCZciwCIp2Tq92Nn+FPELVrpk9sloRBb2JP3UB0A==",
+ "dev": true,
+ "requires": {
+ "mdast-util-to-string": "^1.0.2",
+ "unified-lint-rule": "^1.0.0",
+ "unist-util-generated": "^1.1.0",
+ "unist-util-visit": "^1.1.1"
+ }
+ },
+ "remark-lint-no-inline-padding": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/remark-lint-no-inline-padding/-/remark-lint-no-inline-padding-1.0.1.tgz",
+ "integrity": "sha512-nRl6vA45ZPdMz3/rVMZw7WRRqLFuMrzhdkrbrGLjwBovdIeD/IGCEbDA5NR60g2xT9V5dAmKogvHEH1bIr8SdQ==",
+ "dev": true,
+ "requires": {
+ "mdast-util-to-string": "^1.0.2",
+ "unified-lint-rule": "^1.0.0",
+ "unist-util-generated": "^1.1.0",
+ "unist-util-visit": "^1.1.1"
+ }
+ },
+ "remark-lint-no-literal-urls": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/remark-lint-no-literal-urls/-/remark-lint-no-literal-urls-1.0.1.tgz",
+ "integrity": "sha512-YMsZFVYQDt9gvpc6THL76GzyhCR+cK79vjyEOEmX+O3tOjxQstbi0oW6Lngbl1WbpkCW5TWEzSKOorQowYI2wg==",
+ "dev": true,
+ "requires": {
+ "mdast-util-to-string": "^1.0.2",
+ "unified-lint-rule": "^1.0.0",
+ "unist-util-generated": "^1.1.0",
+ "unist-util-position": "^3.0.0",
+ "unist-util-visit": "^1.1.1"
+ }
+ },
+ "remark-lint-no-multiple-toplevel-headings": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/remark-lint-no-multiple-toplevel-headings/-/remark-lint-no-multiple-toplevel-headings-1.0.1.tgz",
+ "integrity": "sha512-LFfgjF3NKFkt0tGNnJ8Exf8+DrVcMRwek5qu5mvh2KrZnmSpm5flYWzUy2UnnIyicDL3CZYC/r3Fjz6CeBYgZA==",
+ "dev": true,
+ "requires": {
+ "unified-lint-rule": "^1.0.0",
+ "unist-util-generated": "^1.1.0",
+ "unist-util-position": "^3.0.0",
+ "unist-util-visit": "^1.1.1"
+ }
+ },
+ "remark-lint-no-shell-dollars": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/remark-lint-no-shell-dollars/-/remark-lint-no-shell-dollars-1.0.1.tgz",
+ "integrity": "sha512-YryHem73PTxjCkuC4HONJWHsmrLyXmF7r+cCH36Ys3vuWsfAbwkbOwpyuPB4KXn+6fHaTUfz/B5BPp3iwzJwyA==",
+ "dev": true,
+ "requires": {
+ "unified-lint-rule": "^1.0.0",
+ "unist-util-generated": "^1.1.0",
+ "unist-util-visit": "^1.1.1"
+ }
+ },
+ "remark-lint-no-shortcut-reference-image": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/remark-lint-no-shortcut-reference-image/-/remark-lint-no-shortcut-reference-image-1.0.1.tgz",
+ "integrity": "sha512-nUQ+4xB5hKZTCl9gvg7c+W1T3ddsnjgu4zwRza2Bn+21cKmUzx+z9dvlZ4aVuNGmxuWHbKI8/ZkKuB8Eu27vJw==",
+ "dev": true,
+ "requires": {
+ "unified-lint-rule": "^1.0.0",
+ "unist-util-generated": "^1.1.0",
+ "unist-util-visit": "^1.1.1"
+ }
+ },
+ "remark-lint-no-shortcut-reference-link": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/remark-lint-no-shortcut-reference-link/-/remark-lint-no-shortcut-reference-link-1.0.2.tgz",
+ "integrity": "sha512-A6ZexZ6XyQ7fXebrj5WgW5FkSJ81GobjWyMFVmBxgxPd9GH2BkRsZ10aFSkQQvfKSrqbnOL2vrigGMgbiERRxA==",
+ "dev": true,
+ "requires": {
+ "unified-lint-rule": "^1.0.0",
+ "unist-util-generated": "^1.1.0",
+ "unist-util-visit": "^1.1.1"
+ }
+ },
+ "remark-lint-no-table-indentation": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/remark-lint-no-table-indentation/-/remark-lint-no-table-indentation-1.0.1.tgz",
+ "integrity": "sha512-QrtT1GvJmAoNsWh+gmHFajFlM+ubm9rd3Cbz2OYPix8ZM6g907aIfG2NusJFXL9D8/CExQWYhlBvelFBbHgqbQ==",
+ "dev": true,
+ "requires": {
+ "unified-lint-rule": "^1.0.0",
+ "unist-util-generated": "^1.1.0",
+ "unist-util-position": "^3.0.0",
+ "unist-util-visit": "^1.1.1"
+ }
+ },
+ "remark-lint-ordered-list-marker-style": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/remark-lint-ordered-list-marker-style/-/remark-lint-ordered-list-marker-style-1.0.1.tgz",
+ "integrity": "sha512-LJICUZIxqHHi360EP90zbDP+2QQIVVgPGlz0AatuR9ifd7xqAzraQKxsQajAZpuOepZgjBMTOz9L9W0Znx7ujA==",
+ "dev": true,
+ "requires": {
+ "unified-lint-rule": "^1.0.0",
+ "unist-util-generated": "^1.1.0",
+ "unist-util-position": "^3.0.0",
+ "unist-util-visit": "^1.1.1"
+ }
+ },
+ "remark-lint-ordered-list-marker-value": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/remark-lint-ordered-list-marker-value/-/remark-lint-ordered-list-marker-value-1.0.1.tgz",
+ "integrity": "sha512-P6fYui3MvuB21+6AYH8Lbe7SVZ2VQL+FVJUuDCBhe01bgx6SajGmQ/f4Iqt0gCHEAaKw7e2B7tdwd36ifbs1EA==",
+ "dev": true,
+ "requires": {
+ "unified-lint-rule": "^1.0.0",
+ "unist-util-generated": "^1.1.0",
+ "unist-util-position": "^3.0.0",
+ "unist-util-visit": "^1.1.1"
+ }
+ },
+ "remark-lint-rule-style": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/remark-lint-rule-style/-/remark-lint-rule-style-1.0.1.tgz",
+ "integrity": "sha512-dzH+K6DcPIIMBq6LUQgE4dR9TiQGZrQOoULD7m0Y0lIb2EoR2FK5Zd4TgZg/LnvTs6fid37t0xFoaY4/lXV/5Q==",
+ "dev": true,
+ "requires": {
+ "unified-lint-rule": "^1.0.0",
+ "unist-util-generated": "^1.1.0",
+ "unist-util-position": "^3.0.0",
+ "unist-util-visit": "^1.1.1"
+ }
+ },
+ "remark-lint-strong-marker": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/remark-lint-strong-marker/-/remark-lint-strong-marker-1.0.1.tgz",
+ "integrity": "sha512-+bwWKWAqDwqd21Vw+ndqVFh5V27Dp4MKhk9AUlKmcvgJYHuvQ8UfWQdpZcP218ps/4EbwTfyi33TaPyXqOTlXA==",
+ "dev": true,
+ "requires": {
+ "unified-lint-rule": "^1.0.0",
+ "unist-util-generated": "^1.1.0",
+ "unist-util-position": "^3.0.0",
+ "unist-util-visit": "^1.1.1"
+ }
+ },
+ "remark-lint-table-cell-padding": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/remark-lint-table-cell-padding/-/remark-lint-table-cell-padding-1.0.1.tgz",
+ "integrity": "sha512-o3WwC9YysXbQKf0D5nvhhJPcLagqedLwGdifukdgyaKvuIQVbtWbNv1/UOdB3LL+D+2fUrwrCmnQ8J3E1r0lBw==",
+ "dev": true,
+ "requires": {
+ "unified-lint-rule": "^1.0.0",
+ "unist-util-generated": "^1.1.0",
+ "unist-util-position": "^3.0.0",
+ "unist-util-visit": "^1.1.1"
+ }
+ },
+ "remark-lint-table-pipe-alignment": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/remark-lint-table-pipe-alignment/-/remark-lint-table-pipe-alignment-1.0.1.tgz",
+ "integrity": "sha512-lYfK2gWGN45hYfAOZw5gscQ4uDaO9bJLp+H64jvrTQzBV+OCvB9kRQwI0oIrJAa4XMmipAZR+2XhjNSCfQ0fRA==",
+ "dev": true,
+ "requires": {
+ "unified-lint-rule": "^1.0.0",
+ "unist-util-generated": "^1.1.0",
+ "unist-util-position": "^3.0.0",
+ "unist-util-visit": "^1.1.1"
+ }
+ },
+ "remark-lint-table-pipes": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/remark-lint-table-pipes/-/remark-lint-table-pipes-1.0.1.tgz",
+ "integrity": "sha512-VHfDRvcovLBl/cvSjwDoA0xRizdZU33A6F2qFD9A5hu1sDWgGxMLg5m2MOvFlRkUVxSwUv47cuD0/yxB4THYXQ==",
+ "dev": true,
+ "requires": {
+ "unified-lint-rule": "^1.0.0",
+ "unist-util-generated": "^1.1.0",
+ "unist-util-position": "^3.0.0",
+ "unist-util-visit": "^1.1.1"
+ }
+ },
+ "remark-lint-unordered-list-marker-style": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/remark-lint-unordered-list-marker-style/-/remark-lint-unordered-list-marker-style-1.0.1.tgz",
+ "integrity": "sha512-dHYD9cHM9ZJ7BKUZ1nEPGfLAHgUmYxccXtms1GSEM/uyUtR2SU/ao1RwZZ+LvacZFCNZ1yG2yKCJhGI/5U/GrA==",
+ "dev": true,
+ "requires": {
+ "unified-lint-rule": "^1.0.0",
+ "unist-util-generated": "^1.1.0",
+ "unist-util-position": "^3.0.0",
+ "unist-util-visit": "^1.1.1"
+ }
+ },
+ "remark-message-control": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/remark-message-control/-/remark-message-control-4.1.0.tgz",
+ "integrity": "sha512-e1dszks4YKY7hLAkhS2367jBjBpAfvi+kVgSN/tOFrdp3qxITjiNR5fOFnyYF8vvorkQ9uxlKJoZUOW8T7rKDg==",
+ "dev": true,
+ "requires": {
+ "mdast-comment-marker": "^1.0.0",
+ "unified-message-control": "^1.0.0",
+ "xtend": "^4.0.1"
+ }
+ },
+ "remark-parse": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-4.0.0.tgz",
+ "integrity": "sha512-XZgICP2gJ1MHU7+vQaRM+VA9HEL3X253uwUM/BGgx3iv6TH2B3bF3B8q00DKcyP9YrJV+/7WOWEWBFF/u8cIsw==",
+ "dev": true,
+ "requires": {
+ "collapse-white-space": "^1.0.2",
+ "is-alphabetical": "^1.0.0",
+ "is-decimal": "^1.0.0",
+ "is-whitespace-character": "^1.0.0",
+ "is-word-character": "^1.0.0",
+ "markdown-escapes": "^1.0.0",
+ "parse-entities": "^1.0.2",
+ "repeat-string": "^1.5.4",
+ "state-toggle": "^1.0.0",
+ "trim": "0.0.1",
+ "trim-trailing-lines": "^1.0.0",
+ "unherit": "^1.0.4",
+ "unist-util-remove-position": "^1.0.0",
+ "vfile-location": "^2.0.0",
+ "xtend": "^4.0.1"
+ }
+ },
+ "remark-preset-lint-markdown-style-guide": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/remark-preset-lint-markdown-style-guide/-/remark-preset-lint-markdown-style-guide-2.1.1.tgz",
+ "integrity": "sha512-Ao6fB63WuGtz1fa4rjoI+u1EOu21rWVGPmJlUKZlCICPPB6I815nJ52V0sLYjaw2cs+ZiXsXhdVinN7UpVgXcQ==",
+ "dev": true,
+ "requires": {
+ "remark-lint": "^6.0.0",
+ "remark-lint-blockquote-indentation": "^1.0.0",
+ "remark-lint-code-block-style": "^1.0.0",
+ "remark-lint-definition-case": "^1.0.0",
+ "remark-lint-definition-spacing": "^1.0.0",
+ "remark-lint-emphasis-marker": "^1.0.0",
+ "remark-lint-fenced-code-flag": "^1.0.0",
+ "remark-lint-fenced-code-marker": "^1.0.0",
+ "remark-lint-file-extension": "^1.0.0",
+ "remark-lint-final-definition": "^1.0.0",
+ "remark-lint-hard-break-spaces": "^1.0.0",
+ "remark-lint-heading-increment": "^1.0.0",
+ "remark-lint-heading-style": "^1.0.0",
+ "remark-lint-link-title-style": "^1.0.0",
+ "remark-lint-list-item-content-indent": "^1.0.0",
+ "remark-lint-list-item-indent": "^1.0.0",
+ "remark-lint-list-item-spacing": "^1.0.0",
+ "remark-lint-maximum-heading-length": "^1.0.0",
+ "remark-lint-maximum-line-length": "^1.0.0",
+ "remark-lint-no-auto-link-without-protocol": "^1.0.0",
+ "remark-lint-no-blockquote-without-marker": "^2.0.0",
+ "remark-lint-no-consecutive-blank-lines": "^1.0.0",
+ "remark-lint-no-duplicate-headings": "^1.0.0",
+ "remark-lint-no-emphasis-as-heading": "^1.0.0",
+ "remark-lint-no-file-name-articles": "^1.0.0",
+ "remark-lint-no-file-name-consecutive-dashes": "^1.0.0",
+ "remark-lint-no-file-name-irregular-characters": "^1.0.0",
+ "remark-lint-no-file-name-mixed-case": "^1.0.0",
+ "remark-lint-no-file-name-outer-dashes": "^1.0.0",
+ "remark-lint-no-heading-punctuation": "^1.0.0",
+ "remark-lint-no-inline-padding": "^1.0.0",
+ "remark-lint-no-literal-urls": "^1.0.0",
+ "remark-lint-no-multiple-toplevel-headings": "^1.0.0",
+ "remark-lint-no-shell-dollars": "^1.0.0",
+ "remark-lint-no-shortcut-reference-image": "^1.0.0",
+ "remark-lint-no-shortcut-reference-link": "^1.0.0",
+ "remark-lint-no-table-indentation": "^1.0.0",
+ "remark-lint-ordered-list-marker-style": "^1.0.0",
+ "remark-lint-ordered-list-marker-value": "^1.0.0",
+ "remark-lint-rule-style": "^1.0.0",
+ "remark-lint-strong-marker": "^1.0.0",
+ "remark-lint-table-cell-padding": "^1.0.0",
+ "remark-lint-table-pipe-alignment": "^1.0.0",
+ "remark-lint-table-pipes": "^1.0.0",
+ "remark-lint-unordered-list-marker-style": "^1.0.0"
+ }
+ },
+ "remark-stringify": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-4.0.0.tgz",
+ "integrity": "sha512-xLuyKTnuQer3ke9hkU38SUYLiTmS078QOnoFavztmbt/pAJtNSkNtFgR0U//uCcmG0qnyxao+PDuatQav46F1w==",
+ "dev": true,
+ "requires": {
+ "ccount": "^1.0.0",
+ "is-alphanumeric": "^1.0.0",
+ "is-decimal": "^1.0.0",
+ "is-whitespace-character": "^1.0.0",
+ "longest-streak": "^2.0.1",
+ "markdown-escapes": "^1.0.0",
+ "markdown-table": "^1.1.0",
+ "mdast-util-compact": "^1.0.0",
+ "parse-entities": "^1.0.2",
+ "repeat-string": "^1.5.4",
+ "state-toggle": "^1.0.0",
+ "stringify-entities": "^1.0.1",
+ "unherit": "^1.0.4",
+ "xtend": "^4.0.1"
+ }
+ },
+ "remove-trailing-separator": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz",
+ "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=",
+ "dev": true
+ },
+ "repeat-element": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz",
+ "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=",
+ "dev": true
+ },
+ "repeat-string": {
+ "version": "1.6.1",
+ "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
+ "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=",
+ "dev": true
+ },
+ "repeating": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz",
+ "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=",
+ "dev": true,
+ "requires": {
+ "is-finite": "^1.0.0"
+ }
+ },
+ "replace-ext": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz",
+ "integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=",
+ "dev": true
+ },
+ "request": {
+ "version": "2.88.0",
+ "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz",
+ "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==",
+ "dev": true,
+ "requires": {
+ "aws-sign2": "~0.7.0",
+ "aws4": "^1.8.0",
+ "caseless": "~0.12.0",
+ "combined-stream": "~1.0.6",
+ "extend": "~3.0.2",
+ "forever-agent": "~0.6.1",
+ "form-data": "~2.3.2",
+ "har-validator": "~5.1.0",
+ "http-signature": "~1.2.0",
+ "is-typedarray": "~1.0.0",
+ "isstream": "~0.1.2",
+ "json-stringify-safe": "~5.0.1",
+ "mime-types": "~2.1.19",
+ "oauth-sign": "~0.9.0",
+ "performance-now": "^2.1.0",
+ "qs": "~6.5.2",
+ "safe-buffer": "^5.1.2",
+ "tough-cookie": "~2.4.3",
+ "tunnel-agent": "^0.6.0",
+ "uuid": "^3.3.2"
+ },
+ "dependencies": {
+ "extend": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
+ "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==",
+ "dev": true
+ },
+ "mime-db": {
+ "version": "1.36.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.36.0.tgz",
+ "integrity": "sha512-L+xvyD9MkoYMXb1jAmzI/lWYAxAMCPvIBSWur0PZ5nOf5euahRLVqH//FKW9mWp2lkqUgYiXPgkzfMUFi4zVDw==",
+ "dev": true
+ },
+ "mime-types": {
+ "version": "2.1.20",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.20.tgz",
+ "integrity": "sha512-HrkrPaP9vGuWbLK1B1FfgAkbqNjIuy4eHlIYnFi7kamZyLLrGlo2mpcx0bBmNpKqBtYtAfGbodDddIgddSJC2A==",
+ "dev": true,
+ "requires": {
+ "mime-db": "~1.36.0"
+ }
+ },
+ "tough-cookie": {
+ "version": "2.4.3",
+ "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz",
+ "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==",
+ "dev": true,
+ "requires": {
+ "psl": "^1.1.24",
+ "punycode": "^1.4.1"
+ }
+ }
+ }
+ },
+ "require-uncached": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz",
+ "integrity": "sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM=",
+ "dev": true,
+ "requires": {
+ "caller-path": "^0.1.0",
+ "resolve-from": "^1.0.0"
+ },
+ "dependencies": {
+ "resolve-from": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz",
+ "integrity": "sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY=",
+ "dev": true
+ }
+ }
+ },
+ "resolve": {
+ "version": "1.7.1",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.7.1.tgz",
+ "integrity": "sha512-c7rwLofp8g1U+h1KNyHL/jicrKg1Ek4q+Lr33AL65uZTinUZHe30D5HlyN5V9NW0JX1D5dXQ4jqW5l7Sy/kGfw==",
+ "dev": true,
+ "requires": {
+ "path-parse": "^1.0.5"
+ }
+ },
+ "resolve-from": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
+ "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
+ "dev": true
+ },
+ "resolve-url": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz",
+ "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=",
+ "dev": true
+ },
+ "responselike": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz",
+ "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=",
+ "dev": true,
+ "requires": {
+ "lowercase-keys": "^1.0.0"
+ }
+ },
+ "restore-cursor": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz",
+ "integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=",
+ "dev": true,
+ "requires": {
+ "exit-hook": "^1.0.0",
+ "onetime": "^1.0.0"
+ }
+ },
+ "ret": {
+ "version": "0.1.15",
+ "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz",
+ "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==",
+ "dev": true
+ },
+ "revalidator": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/revalidator/-/revalidator-0.3.1.tgz",
+ "integrity": "sha1-/yzEz3zHxjhaxxAXgnbm280Ddi8=",
+ "dev": true
+ },
+ "right-align": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz",
+ "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "align-text": "^0.1.1"
+ }
+ },
+ "rimraf": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz",
+ "integrity": "sha1-LtgVDSShbqhlHm1u8PR8QVjOejY=",
+ "dev": true,
+ "requires": {
+ "glob": "^7.0.5"
+ },
+ "dependencies": {
+ "glob": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
+ "integrity": "sha1-wZyd+aAocC1nhhI4SmVSQExjbRU=",
+ "dev": true,
+ "requires": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.0.4",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ }
+ }
+ }
+ },
+ "ripemd160": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz",
+ "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==",
+ "dev": true,
+ "requires": {
+ "hash-base": "^3.0.0",
+ "inherits": "^2.0.1"
+ }
+ },
+ "run-async": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz",
+ "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=",
+ "dev": true,
+ "requires": {
+ "is-promise": "^2.1.0"
+ }
+ },
+ "run-parallel": {
+ "version": "1.1.9",
+ "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.1.9.tgz",
+ "integrity": "sha512-DEqnSRTDw/Tc3FXf49zedI638Z9onwUotBMiUFKmrO2sdFKIbXamXGQ3Axd4qgphxKB4kw/qP1w5kTxnfU1B9Q==",
+ "dev": true
+ },
+ "rxjs": {
+ "version": "6.3.2",
+ "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.3.2.tgz",
+ "integrity": "sha512-hV7criqbR0pe7EeL3O66UYVg92IR0XsA97+9y+BWTePK9SKmEI5Qd3Zj6uPnGkNzXsBywBQWTvujPl+1Kn9Zjw==",
+ "dev": true,
+ "requires": {
+ "tslib": "^1.9.0"
+ }
+ },
+ "safe-buffer": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
+ "dev": true
+ },
+ "safe-regex": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz",
+ "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=",
+ "dev": true,
+ "requires": {
+ "ret": "~0.1.10"
+ }
+ },
+ "safer-buffer": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
+ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
+ "dev": true
+ },
+ "sax": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz",
+ "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==",
+ "dev": true,
+ "optional": true
+ },
+ "semver": {
+ "version": "5.6.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz",
+ "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==",
+ "dev": true
+ },
+ "semver-compare": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz",
+ "integrity": "sha1-De4hahyUGrN+nvsXiPavxf9VN/w=",
+ "dev": true
+ },
+ "semver-diff": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-2.1.0.tgz",
+ "integrity": "sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY=",
+ "dev": true,
+ "requires": {
+ "semver": "^5.0.3"
+ }
+ },
+ "send": {
+ "version": "0.16.2",
+ "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz",
+ "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==",
+ "dev": true,
+ "requires": {
+ "debug": "2.6.9",
+ "depd": "~1.1.2",
+ "destroy": "~1.0.4",
+ "encodeurl": "~1.0.2",
+ "escape-html": "~1.0.3",
+ "etag": "~1.8.1",
+ "fresh": "0.5.2",
+ "http-errors": "~1.6.2",
+ "mime": "1.4.1",
+ "ms": "2.0.0",
+ "on-finished": "~2.3.0",
+ "range-parser": "~1.2.0",
+ "statuses": "~1.4.0"
+ },
+ "dependencies": {
+ "depd": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
+ "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=",
+ "dev": true
+ },
+ "mime": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz",
+ "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==",
+ "dev": true
+ },
+ "statuses": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz",
+ "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==",
+ "dev": true
+ }
+ }
+ },
+ "serve": {
+ "version": "6.5.8",
+ "resolved": "https://registry.npmjs.org/serve/-/serve-6.5.8.tgz",
+ "integrity": "sha512-GZYlJz7f6E7Xq6xbg1rTSvQQV9x4v/yYB/sum6egzSBLa/mdk1PViDSX2JvL0Me83sxu3JpEpQELfakDKbGcrw==",
+ "dev": true,
+ "requires": {
+ "args": "4.0.0",
+ "basic-auth": "2.0.0",
+ "bluebird": "3.5.1",
+ "boxen": "1.3.0",
+ "chalk": "2.4.1",
+ "clipboardy": "1.2.3",
+ "dargs": "5.1.0",
+ "detect-port": "1.2.3",
+ "filesize": "3.6.1",
+ "fs-extra": "6.0.1",
+ "handlebars": "4.0.11",
+ "ip": "1.1.5",
+ "micro": "9.3.1",
+ "micro-compress": "1.0.0",
+ "mime-types": "2.1.18",
+ "node-version": "1.1.3",
+ "openssl-self-signed-certificate": "1.1.6",
+ "opn": "5.3.0",
+ "path-is-inside": "1.0.2",
+ "path-type": "3.0.0",
+ "send": "0.16.2",
+ "update-check": "1.5.1"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "dev": true,
+ "requires": {
+ "color-convert": "^1.9.0"
+ }
+ },
+ "chalk": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz",
+ "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ }
+ },
+ "dargs": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/dargs/-/dargs-5.1.0.tgz",
+ "integrity": "sha1-7H6lDHhWTNNsnV7Bj2Yyn63ieCk=",
+ "dev": true
+ },
+ "fs-extra": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-6.0.1.tgz",
+ "integrity": "sha512-GnyIkKhhzXZUWFCaJzvyDLEEgDkPfb4/TPvJCJVuS8MWZgoSsErf++QpiAlDnKFcqhRlm+tIOcencCjyJE6ZCA==",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.2",
+ "jsonfile": "^4.0.0",
+ "universalify": "^0.1.0"
+ }
+ },
+ "has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
+ "dev": true
+ },
+ "jsonfile": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
+ "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.6"
+ }
+ },
+ "path-type": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz",
+ "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==",
+ "dev": true,
+ "requires": {
+ "pify": "^3.0.0"
+ }
+ },
+ "pify": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
+ "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "5.4.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz",
+ "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^3.0.0"
+ }
+ }
+ }
+ },
+ "set-immediate-shim": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz",
+ "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=",
+ "dev": true
+ },
+ "set-value": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz",
+ "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==",
+ "dev": true,
+ "requires": {
+ "extend-shallow": "^2.0.1",
+ "is-extendable": "^0.1.1",
+ "is-plain-object": "^2.0.3",
+ "split-string": "^3.0.1"
+ },
+ "dependencies": {
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ }
+ }
+ },
+ "setprototypeof": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz",
+ "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ=",
+ "dev": true
+ },
+ "sha.js": {
+ "version": "2.4.11",
+ "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz",
+ "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==",
+ "dev": true,
+ "requires": {
+ "inherits": "^2.0.1",
+ "safe-buffer": "^5.0.1"
+ }
+ },
+ "shasum": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/shasum/-/shasum-1.0.2.tgz",
+ "integrity": "sha1-5wEjENj0F/TetXEhUOVni4euVl8=",
+ "dev": true,
+ "requires": {
+ "json-stable-stringify": "~0.0.0",
+ "sha.js": "~2.4.4"
+ }
+ },
+ "shebang-command": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
+ "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
+ "dev": true,
+ "requires": {
+ "shebang-regex": "^1.0.0"
+ }
+ },
+ "shebang-regex": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
+ "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=",
+ "dev": true
+ },
+ "shell-quote": {
+ "version": "1.6.1",
+ "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.6.1.tgz",
+ "integrity": "sha1-9HgZSczkAmlxJ0MOo7PFR29IF2c=",
+ "dev": true,
+ "requires": {
+ "array-filter": "~0.0.0",
+ "array-map": "~0.0.0",
+ "array-reduce": "~0.0.0",
+ "jsonify": "~0.0.0"
+ }
+ },
+ "shellsubstitute": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/shellsubstitute/-/shellsubstitute-1.2.0.tgz",
+ "integrity": "sha1-5PcCpQxRiw9v6YRRiQ1wWvKba3A=",
+ "dev": true
+ },
+ "signal-exit": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz",
+ "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=",
+ "dev": true
+ },
+ "simple-git": {
+ "version": "1.107.0",
+ "resolved": "https://registry.npmjs.org/simple-git/-/simple-git-1.107.0.tgz",
+ "integrity": "sha512-t4OK1JRlp4ayKRfcW6owrWcRVLyHRUlhGd0uN6ZZTqfDq8a5XpcUdOKiGRNobHEuMtNqzp0vcJNvhYWwh5PsQA==",
+ "dev": true,
+ "requires": {
+ "debug": "^4.0.1"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
+ "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
+ "dev": true,
+ "requires": {
+ "ms": "^2.1.1"
+ }
+ },
+ "ms": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
+ "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==",
+ "dev": true
+ }
+ }
+ },
+ "single-line-log": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/single-line-log/-/single-line-log-1.1.2.tgz",
+ "integrity": "sha1-wvg/Jzo+GhbtsJlWYdoO1e8DM2Q=",
+ "dev": true,
+ "requires": {
+ "string-width": "^1.0.1"
+ }
+ },
+ "slash": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz",
+ "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=",
+ "dev": true
+ },
+ "slice-ansi": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-1.0.0.tgz",
+ "integrity": "sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg==",
+ "dev": true,
+ "requires": {
+ "is-fullwidth-code-point": "^2.0.0"
+ },
+ "dependencies": {
+ "is-fullwidth-code-point": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+ "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
+ "dev": true
+ }
+ }
+ },
+ "sliced": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/sliced/-/sliced-1.0.1.tgz",
+ "integrity": "sha1-CzpmK10Ewxd7GSa+qCsD+Dei70E=",
+ "dev": true
+ },
+ "snapdragon": {
+ "version": "0.8.2",
+ "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz",
+ "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==",
+ "dev": true,
+ "requires": {
+ "base": "^0.11.1",
+ "debug": "^2.2.0",
+ "define-property": "^0.2.5",
+ "extend-shallow": "^2.0.1",
+ "map-cache": "^0.2.2",
+ "source-map": "^0.5.6",
+ "source-map-resolve": "^0.5.0",
+ "use": "^3.1.0"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "^0.1.0"
+ }
+ },
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ }
+ }
+ },
+ "snapdragon-node": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz",
+ "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==",
+ "dev": true,
+ "requires": {
+ "define-property": "^1.0.0",
+ "isobject": "^3.0.0",
+ "snapdragon-util": "^3.0.1"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
+ "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "^1.0.0"
+ }
+ },
+ "is-accessor-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
+ "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^6.0.0"
+ }
+ },
+ "is-data-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
+ "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^6.0.0"
+ }
+ },
+ "is-descriptor": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
+ "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+ "dev": true,
+ "requires": {
+ "is-accessor-descriptor": "^1.0.0",
+ "is-data-descriptor": "^1.0.0",
+ "kind-of": "^6.0.2"
+ }
+ },
+ "isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
+ "dev": true
+ },
+ "kind-of": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
+ "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==",
+ "dev": true
+ }
+ }
+ },
+ "snapdragon-util": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz",
+ "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^3.2.0"
+ }
+ },
+ "source-map": {
+ "version": "0.5.7",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
+ "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
+ "dev": true
+ },
+ "source-map-resolve": {
+ "version": "0.5.2",
+ "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz",
+ "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==",
+ "dev": true,
+ "requires": {
+ "atob": "^2.1.1",
+ "decode-uri-component": "^0.2.0",
+ "resolve-url": "^0.2.1",
+ "source-map-url": "^0.4.0",
+ "urix": "^0.1.0"
+ }
+ },
+ "source-map-url": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz",
+ "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=",
+ "dev": true
+ },
+ "spdx-correct": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.0.0.tgz",
+ "integrity": "sha512-N19o9z5cEyc8yQQPukRCZ9EUmb4HUpnrmaL/fxS2pBo2jbfcFRVuFZ/oFC+vZz0MNNk0h80iMn5/S6qGZOL5+g==",
+ "dev": true,
+ "requires": {
+ "spdx-expression-parse": "^3.0.0",
+ "spdx-license-ids": "^3.0.0"
+ }
+ },
+ "spdx-exceptions": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.1.0.tgz",
+ "integrity": "sha512-4K1NsmrlCU1JJgUrtgEeTVyfx8VaYea9J9LvARxhbHtVtohPs/gFGG5yy49beySjlIMhhXZ4QqujIZEfS4l6Cg==",
+ "dev": true
+ },
+ "spdx-expression-parse": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz",
+ "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==",
+ "dev": true,
+ "requires": {
+ "spdx-exceptions": "^2.1.0",
+ "spdx-license-ids": "^3.0.0"
+ }
+ },
+ "spdx-license-ids": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.0.tgz",
+ "integrity": "sha512-2+EPwgbnmOIl8HjGBXXMd9NAu02vLjOO1nWw4kmeRDFyHn+M/ETfHxQUK0oXg8ctgVnl9t3rosNVsZ1jG61nDA==",
+ "dev": true
+ },
+ "speedometer": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/speedometer/-/speedometer-0.1.4.tgz",
+ "integrity": "sha1-mHbb0qFp0xFUAtSObqYynIgWpQ0=",
+ "dev": true
+ },
+ "split": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz",
+ "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==",
+ "dev": true,
+ "requires": {
+ "through": "2"
+ }
+ },
+ "split-string": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz",
+ "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==",
+ "dev": true,
+ "requires": {
+ "extend-shallow": "^3.0.0"
+ }
+ },
+ "split2": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/split2/-/split2-2.2.0.tgz",
+ "integrity": "sha512-RAb22TG39LhI31MbreBgIuKiIKhVsawfTgEGqKHTK87aG+ul/PB8Sqoi3I7kVdRWiCfrKxK3uo4/YUkpNvhPbw==",
+ "dev": true,
+ "requires": {
+ "through2": "^2.0.2"
+ }
+ },
+ "sprintf-js": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
+ "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
+ "dev": true
+ },
+ "sshpk": {
+ "version": "1.14.2",
+ "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.14.2.tgz",
+ "integrity": "sha1-xvxhZIo9nE52T9P8306hBeSSupg=",
+ "dev": true,
+ "requires": {
+ "asn1": "~0.2.3",
+ "assert-plus": "^1.0.0",
+ "bcrypt-pbkdf": "^1.0.0",
+ "dashdash": "^1.12.0",
+ "ecc-jsbn": "~0.1.1",
+ "getpass": "^0.1.1",
+ "jsbn": "~0.1.0",
+ "safer-buffer": "^2.0.2",
+ "tweetnacl": "~0.14.0"
+ }
+ },
+ "staged-git-files": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/staged-git-files/-/staged-git-files-1.1.2.tgz",
+ "integrity": "sha512-0Eyrk6uXW6tg9PYkhi/V/J4zHp33aNyi2hOCmhFLqLTIhbgqWn5jlSzI+IU0VqrZq6+DbHcabQl/WP6P3BG0QA==",
+ "dev": true
+ },
+ "standard": {
+ "version": "12.0.1",
+ "resolved": "https://registry.npmjs.org/standard/-/standard-12.0.1.tgz",
+ "integrity": "sha512-UqdHjh87OG2gUrNCSM4QRLF5n9h3TFPwrCNyVlkqu31Hej0L/rc8hzKqVvkb2W3x0WMq7PzZdkLfEcBhVOR6lg==",
+ "dev": true,
+ "requires": {
+ "eslint": "~5.4.0",
+ "eslint-config-standard": "12.0.0",
+ "eslint-config-standard-jsx": "6.0.2",
+ "eslint-plugin-import": "~2.14.0",
+ "eslint-plugin-node": "~7.0.1",
+ "eslint-plugin-promise": "~4.0.0",
+ "eslint-plugin-react": "~7.11.1",
+ "eslint-plugin-standard": "~4.0.0",
+ "standard-engine": "~9.0.0"
+ },
+ "dependencies": {
+ "ajv": {
+ "version": "6.5.3",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.3.tgz",
+ "integrity": "sha512-LqZ9wY+fx3UMiiPd741yB2pj3hhil+hQc8taf4o2QGRFpWgZ2V5C8HA165DY9sS3fJwsk7uT7ZlFEyC3Ig3lLg==",
+ "dev": true,
+ "requires": {
+ "fast-deep-equal": "^2.0.1",
+ "fast-json-stable-stringify": "^2.0.0",
+ "json-schema-traverse": "^0.4.1",
+ "uri-js": "^4.2.2"
+ }
+ },
+ "ansi-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
+ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
+ "dev": true
+ },
+ "ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "dev": true,
+ "requires": {
+ "color-convert": "^1.9.0"
+ }
+ },
+ "chalk": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz",
+ "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ }
+ },
+ "chardet": {
+ "version": "0.4.2",
+ "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.4.2.tgz",
+ "integrity": "sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I=",
+ "dev": true
+ },
+ "cli-cursor": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz",
+ "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=",
+ "dev": true,
+ "requires": {
+ "restore-cursor": "^2.0.0"
+ }
+ },
+ "cross-spawn": {
+ "version": "6.0.5",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
+ "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
+ "dev": true,
+ "requires": {
+ "nice-try": "^1.0.4",
+ "path-key": "^2.0.1",
+ "semver": "^5.5.0",
+ "shebang-command": "^1.2.0",
+ "which": "^1.2.9"
+ }
+ },
+ "debug": {
+ "version": "3.2.5",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.5.tgz",
+ "integrity": "sha512-D61LaDQPQkxJ5AUM2mbSJRbPkNs/TmdmOeLAi1hgDkpDfIfetSrjmWhccwtuResSwMbACjx/xXQofvM9CE/aeg==",
+ "dev": true,
+ "requires": {
+ "ms": "^2.1.1"
+ }
+ },
+ "eslint": {
+ "version": "5.4.0",
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-5.4.0.tgz",
+ "integrity": "sha512-UIpL91XGex3qtL6qwyCQJar2j3osKxK9e3ano3OcGEIRM4oWIpCkDg9x95AXEC2wMs7PnxzOkPZ2gq+tsMS9yg==",
+ "dev": true,
+ "requires": {
+ "ajv": "^6.5.0",
+ "babel-code-frame": "^6.26.0",
+ "chalk": "^2.1.0",
+ "cross-spawn": "^6.0.5",
+ "debug": "^3.1.0",
+ "doctrine": "^2.1.0",
+ "eslint-scope": "^4.0.0",
+ "eslint-utils": "^1.3.1",
+ "eslint-visitor-keys": "^1.0.0",
+ "espree": "^4.0.0",
+ "esquery": "^1.0.1",
+ "esutils": "^2.0.2",
+ "file-entry-cache": "^2.0.0",
+ "functional-red-black-tree": "^1.0.1",
+ "glob": "^7.1.2",
+ "globals": "^11.7.0",
+ "ignore": "^4.0.2",
+ "imurmurhash": "^0.1.4",
+ "inquirer": "^5.2.0",
+ "is-resolvable": "^1.1.0",
+ "js-yaml": "^3.11.0",
+ "json-stable-stringify-without-jsonify": "^1.0.1",
+ "levn": "^0.3.0",
+ "lodash": "^4.17.5",
+ "minimatch": "^3.0.4",
+ "mkdirp": "^0.5.1",
+ "natural-compare": "^1.4.0",
+ "optionator": "^0.8.2",
+ "path-is-inside": "^1.0.2",
+ "pluralize": "^7.0.0",
+ "progress": "^2.0.0",
+ "regexpp": "^2.0.0",
+ "require-uncached": "^1.0.3",
+ "semver": "^5.5.0",
+ "strip-ansi": "^4.0.0",
+ "strip-json-comments": "^2.0.1",
+ "table": "^4.0.3",
+ "text-table": "^0.2.0"
+ }
+ },
+ "external-editor": {
+ "version": "2.2.0",
+ "resolved": "http://registry.npmjs.org/external-editor/-/external-editor-2.2.0.tgz",
+ "integrity": "sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A==",
+ "dev": true,
+ "requires": {
+ "chardet": "^0.4.0",
+ "iconv-lite": "^0.4.17",
+ "tmp": "^0.0.33"
+ }
+ },
+ "fast-deep-equal": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz",
+ "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=",
+ "dev": true
+ },
+ "glob": {
+ "version": "7.1.3",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz",
+ "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==",
+ "dev": true,
+ "requires": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.0.4",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ }
+ },
+ "has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
+ "dev": true
+ },
+ "ignore": {
+ "version": "4.0.6",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz",
+ "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==",
+ "dev": true
+ },
+ "inquirer": {
+ "version": "5.2.0",
+ "resolved": "http://registry.npmjs.org/inquirer/-/inquirer-5.2.0.tgz",
+ "integrity": "sha512-E9BmnJbAKLPGonz0HeWHtbKf+EeSP93paWO3ZYoUpq/aowXvYGjjCSuashhXPpzbArIjBbji39THkxTz9ZeEUQ==",
+ "dev": true,
+ "requires": {
+ "ansi-escapes": "^3.0.0",
+ "chalk": "^2.0.0",
+ "cli-cursor": "^2.1.0",
+ "cli-width": "^2.0.0",
+ "external-editor": "^2.1.0",
+ "figures": "^2.0.0",
+ "lodash": "^4.3.0",
+ "mute-stream": "0.0.7",
+ "run-async": "^2.2.0",
+ "rxjs": "^5.5.2",
+ "string-width": "^2.1.0",
+ "strip-ansi": "^4.0.0",
+ "through": "^2.3.6"
+ }
+ },
+ "is-fullwidth-code-point": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+ "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
+ "dev": true
+ },
+ "json-schema-traverse": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
+ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
+ "dev": true
+ },
+ "ms": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
+ "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==",
+ "dev": true
+ },
+ "onetime": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz",
+ "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=",
+ "dev": true,
+ "requires": {
+ "mimic-fn": "^1.0.0"
+ }
+ },
+ "restore-cursor": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz",
+ "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=",
+ "dev": true,
+ "requires": {
+ "onetime": "^2.0.0",
+ "signal-exit": "^3.0.2"
+ }
+ },
+ "rxjs": {
+ "version": "5.5.12",
+ "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-5.5.12.tgz",
+ "integrity": "sha512-xx2itnL5sBbqeeiVgNPVuQQ1nC8Jp2WfNJhXWHmElW9YmrpS9UVnNzhP3EH3HFqexO5Tlp8GhYY+WEcqcVMvGw==",
+ "dev": true,
+ "requires": {
+ "symbol-observable": "1.0.1"
+ }
+ },
+ "string-width": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
+ "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
+ "dev": true,
+ "requires": {
+ "is-fullwidth-code-point": "^2.0.0",
+ "strip-ansi": "^4.0.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
+ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^3.0.0"
+ }
+ },
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^3.0.0"
+ }
+ },
+ "tmp": {
+ "version": "0.0.33",
+ "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz",
+ "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==",
+ "dev": true,
+ "requires": {
+ "os-tmpdir": "~1.0.2"
+ }
+ }
+ }
+ },
+ "standard-engine": {
+ "version": "9.0.0",
+ "resolved": "https://registry.npmjs.org/standard-engine/-/standard-engine-9.0.0.tgz",
+ "integrity": "sha512-ZfNfCWZ2Xq67VNvKMPiVMKHnMdvxYzvZkf1AH8/cw2NLDBm5LRsxMqvEJpsjLI/dUosZ3Z1d6JlHDp5rAvvk2w==",
+ "dev": true,
+ "requires": {
+ "deglob": "^2.1.0",
+ "get-stdin": "^6.0.0",
+ "minimist": "^1.1.0",
+ "pkg-conf": "^2.0.0"
+ },
+ "dependencies": {
+ "get-stdin": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-6.0.0.tgz",
+ "integrity": "sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==",
+ "dev": true
+ }
+ }
+ },
+ "standard-markdown": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/standard-markdown/-/standard-markdown-5.0.0.tgz",
+ "integrity": "sha512-jgGyyMmZqOIYYAHs/ksEkGUa+bngJce2P4FygFIrb1WMkKmQL/RPgsI2njl02r6kiDzHPProOG9y4ABe20joCA==",
+ "dev": true,
+ "requires": {
+ "async": "^2.6.1",
+ "commander": "^2.18.0",
+ "globby": "^8.0.1",
+ "lodash.flatten": "^4.4.0",
+ "lodash.range": "^3.2.0",
+ "ora": "^3.0.0",
+ "standard": "^12.0.1"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
+ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
+ "dev": true
+ },
+ "ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "dev": true,
+ "requires": {
+ "color-convert": "^1.9.0"
+ }
+ },
+ "async": {
+ "version": "2.6.1",
+ "resolved": "https://registry.npmjs.org/async/-/async-2.6.1.tgz",
+ "integrity": "sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ==",
+ "dev": true,
+ "requires": {
+ "lodash": "^4.17.10"
+ }
+ },
+ "chalk": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz",
+ "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ }
+ },
+ "cli-cursor": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz",
+ "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=",
+ "dev": true,
+ "requires": {
+ "restore-cursor": "^2.0.0"
+ }
+ },
+ "cli-spinners": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-1.3.1.tgz",
+ "integrity": "sha512-1QL4544moEsDVH9T/l6Cemov/37iv1RtoKf7NJ04A60+4MREXNfx/QvavbH6QoGdsD4N4Mwy49cmaINR/o2mdg==",
+ "dev": true
+ },
+ "commander": {
+ "version": "2.18.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-2.18.0.tgz",
+ "integrity": "sha512-6CYPa+JP2ftfRU2qkDK+UTVeQYosOg/2GbcjIcKPHfinyOLPVGXu/ovN86RP49Re5ndJK1N0kuiidFFuepc4ZQ==",
+ "dev": true
+ },
+ "glob": {
+ "version": "7.1.3",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz",
+ "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==",
+ "dev": true,
+ "requires": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.0.4",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ }
+ },
+ "globby": {
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/globby/-/globby-8.0.1.tgz",
+ "integrity": "sha512-oMrYrJERnKBLXNLVTqhm3vPEdJ/b2ZE28xN4YARiix1NOIOBPEpOUnm844K1iu/BkphCaf2WNFwMszv8Soi1pw==",
+ "dev": true,
+ "requires": {
+ "array-union": "^1.0.1",
+ "dir-glob": "^2.0.0",
+ "fast-glob": "^2.0.2",
+ "glob": "^7.1.2",
+ "ignore": "^3.3.5",
+ "pify": "^3.0.0",
+ "slash": "^1.0.0"
+ }
+ },
+ "has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
+ "dev": true
+ },
+ "log-symbols": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz",
+ "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==",
+ "dev": true,
+ "requires": {
+ "chalk": "^2.0.1"
+ }
+ },
+ "onetime": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz",
+ "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=",
+ "dev": true,
+ "requires": {
+ "mimic-fn": "^1.0.0"
+ }
+ },
+ "ora": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/ora/-/ora-3.0.0.tgz",
+ "integrity": "sha512-LBS97LFe2RV6GJmXBi6OKcETKyklHNMV0xw7BtsVn2MlsgsydyZetSCbCANr+PFLmDyv4KV88nn0eCKza665Mg==",
+ "dev": true,
+ "requires": {
+ "chalk": "^2.3.1",
+ "cli-cursor": "^2.1.0",
+ "cli-spinners": "^1.1.0",
+ "log-symbols": "^2.2.0",
+ "strip-ansi": "^4.0.0",
+ "wcwidth": "^1.0.1"
+ }
+ },
+ "pify": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
+ "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
+ "dev": true
+ },
+ "restore-cursor": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz",
+ "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=",
+ "dev": true,
+ "requires": {
+ "onetime": "^2.0.0",
+ "signal-exit": "^3.0.2"
+ }
+ },
+ "strip-ansi": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
+ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^3.0.0"
+ }
+ },
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^3.0.0"
+ }
+ }
+ }
+ },
+ "state-toggle": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/state-toggle/-/state-toggle-1.0.1.tgz",
+ "integrity": "sha512-Qe8QntFrrpWTnHwvwj2FZTgv+PKIsp0B9VxLzLLbSpPXWOgRgc5LVj/aTiSfK1RqIeF9jeC1UeOH8Q8y60A7og==",
+ "dev": true
+ },
+ "static-extend": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz",
+ "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=",
+ "dev": true,
+ "requires": {
+ "define-property": "^0.2.5",
+ "object-copy": "^0.1.0"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "^0.1.0"
+ }
+ }
+ }
+ },
+ "statuses": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
+ "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=",
+ "dev": true
+ },
+ "stream-browserify": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.1.tgz",
+ "integrity": "sha1-ZiZu5fm9uZQKTkUUyvtDu3Hlyds=",
+ "dev": true,
+ "requires": {
+ "inherits": "~2.0.1",
+ "readable-stream": "^2.0.2"
+ },
+ "dependencies": {
+ "isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
+ "dev": true
+ },
+ "readable-stream": {
+ "version": "2.3.6",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
+ "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
+ "dev": true,
+ "requires": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
+ }
+ },
+ "string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "dev": true,
+ "requires": {
+ "safe-buffer": "~5.1.0"
+ }
+ }
+ }
+ },
+ "stream-combiner2": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/stream-combiner2/-/stream-combiner2-1.1.1.tgz",
+ "integrity": "sha1-+02KFCDqNidk4hrUeAOXvry0HL4=",
+ "dev": true,
+ "requires": {
+ "duplexer2": "~0.1.0",
+ "readable-stream": "^2.0.2"
+ },
+ "dependencies": {
+ "isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
+ "dev": true
+ },
+ "readable-stream": {
+ "version": "2.3.6",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
+ "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
+ "dev": true,
+ "requires": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
+ }
+ },
+ "string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "dev": true,
+ "requires": {
+ "safe-buffer": "~5.1.0"
+ }
+ }
+ }
+ },
+ "stream-http": {
+ "version": "2.8.2",
+ "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.2.tgz",
+ "integrity": "sha512-QllfrBhqF1DPcz46WxKTs6Mz1Bpc+8Qm6vbqOpVav5odAXwbyzwnEczoWqtxrsmlO+cJqtPrp/8gWKWjaKLLlA==",
+ "dev": true,
+ "requires": {
+ "builtin-status-codes": "^3.0.0",
+ "inherits": "^2.0.1",
+ "readable-stream": "^2.3.6",
+ "to-arraybuffer": "^1.0.0",
+ "xtend": "^4.0.0"
+ },
+ "dependencies": {
+ "isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
+ "dev": true
+ },
+ "readable-stream": {
+ "version": "2.3.6",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
+ "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
+ "dev": true,
+ "requires": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
+ }
+ },
+ "string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "dev": true,
+ "requires": {
+ "safe-buffer": "~5.1.0"
+ }
+ }
+ }
+ },
+ "stream-shift": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz",
+ "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=",
+ "dev": true
+ },
+ "stream-splicer": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/stream-splicer/-/stream-splicer-2.0.0.tgz",
+ "integrity": "sha1-G2O+Q4oTPktnHMGTUZdgAXWRDYM=",
+ "dev": true,
+ "requires": {
+ "inherits": "^2.0.1",
+ "readable-stream": "^2.0.2"
+ },
+ "dependencies": {
+ "isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
+ "dev": true
+ },
+ "readable-stream": {
+ "version": "2.3.6",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
+ "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
+ "dev": true,
+ "requires": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
+ }
+ },
+ "string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "dev": true,
+ "requires": {
+ "safe-buffer": "~5.1.0"
+ }
+ }
+ }
+ },
+ "string": {
+ "version": "3.3.3",
+ "resolved": "https://registry.npmjs.org/string/-/string-3.3.3.tgz",
+ "integrity": "sha1-XqIRzZLSKOGEKUmQpsyXs2anfLA=",
+ "dev": true
+ },
+ "string-argv": {
+ "version": "0.0.2",
+ "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.0.2.tgz",
+ "integrity": "sha1-2sMECGkMIfPDYwo/86BYd73L1zY=",
+ "dev": true
+ },
+ "string-width": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
+ "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
+ "dev": true,
+ "requires": {
+ "code-point-at": "^1.0.0",
+ "is-fullwidth-code-point": "^1.0.0",
+ "strip-ansi": "^3.0.0"
+ }
+ },
+ "string_decoder": {
+ "version": "0.10.31",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
+ "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=",
+ "dev": true
+ },
+ "stringify-entities": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-1.3.2.tgz",
+ "integrity": "sha512-nrBAQClJAPN2p+uGCVJRPIPakKeKWZ9GtBCmormE7pWOSlHat7+x5A8gx85M7HM5Dt0BP3pP5RhVW77WdbJJ3A==",
+ "dev": true,
+ "requires": {
+ "character-entities-html4": "^1.0.0",
+ "character-entities-legacy": "^1.0.0",
+ "is-alphanumerical": "^1.0.0",
+ "is-hexadecimal": "^1.0.0"
+ }
+ },
+ "stringify-object": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz",
+ "integrity": "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==",
+ "dev": true,
+ "requires": {
+ "get-own-enumerable-property-symbols": "^3.0.0",
+ "is-obj": "^1.0.1",
+ "is-regexp": "^1.0.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
+ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^2.0.0"
+ }
+ },
+ "strip-bom": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz",
+ "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=",
+ "dev": true,
+ "requires": {
+ "is-utf8": "^0.2.0"
+ }
+ },
+ "strip-eof": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz",
+ "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=",
+ "dev": true
+ },
+ "strip-indent": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-2.0.0.tgz",
+ "integrity": "sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g=",
+ "dev": true
+ },
+ "strip-json-comments": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
+ "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=",
+ "dev": true
+ },
+ "subarg": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/subarg/-/subarg-1.0.0.tgz",
+ "integrity": "sha1-9izxdYHplrSPyWVpn1TAauJouNI=",
+ "dev": true,
+ "requires": {
+ "minimist": "^1.1.0"
+ }
+ },
+ "sumchecker": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/sumchecker/-/sumchecker-2.0.2.tgz",
+ "integrity": "sha1-D0LBDl0F2l1C7qPlbDOZo31sWz4=",
+ "dev": true,
+ "requires": {
+ "debug": "^2.2.0"
+ }
+ },
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^3.0.0"
+ }
+ },
+ "symbol-observable": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.0.1.tgz",
+ "integrity": "sha1-g0D8RwLDEi310iKI+IKD9RPT/dQ=",
+ "dev": true
+ },
+ "symbol-tree": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.2.tgz",
+ "integrity": "sha1-rifbOPZgp64uHDt9G8KQgZuFGeY=",
+ "dev": true,
+ "optional": true
+ },
+ "syntax-error": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/syntax-error/-/syntax-error-1.4.0.tgz",
+ "integrity": "sha512-YPPlu67mdnHGTup2A8ff7BC2Pjq0e0Yp/IyTFN03zWO0RcK07uLcbi7C2KpGR2FvWbaB0+bfE27a+sBKebSo7w==",
+ "dev": true,
+ "requires": {
+ "acorn-node": "^1.2.0"
+ }
+ },
+ "table": {
+ "version": "4.0.3",
+ "resolved": "http://registry.npmjs.org/table/-/table-4.0.3.tgz",
+ "integrity": "sha512-S7rnFITmBH1EnyKcvxBh1LjYeQMmnZtCXSEbHcH6S0NoKit24ZuFO/T1vDcLdYsLQkM188PVVhQmzKIuThNkKg==",
+ "dev": true,
+ "requires": {
+ "ajv": "^6.0.1",
+ "ajv-keywords": "^3.0.0",
+ "chalk": "^2.1.0",
+ "lodash": "^4.17.4",
+ "slice-ansi": "1.0.0",
+ "string-width": "^2.1.1"
+ },
+ "dependencies": {
+ "ajv": {
+ "version": "6.5.3",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.3.tgz",
+ "integrity": "sha512-LqZ9wY+fx3UMiiPd741yB2pj3hhil+hQc8taf4o2QGRFpWgZ2V5C8HA165DY9sS3fJwsk7uT7ZlFEyC3Ig3lLg==",
+ "dev": true,
+ "requires": {
+ "fast-deep-equal": "^2.0.1",
+ "fast-json-stable-stringify": "^2.0.0",
+ "json-schema-traverse": "^0.4.1",
+ "uri-js": "^4.2.2"
+ }
+ },
+ "ansi-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
+ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
+ "dev": true
+ },
+ "ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "dev": true,
+ "requires": {
+ "color-convert": "^1.9.0"
+ }
+ },
+ "chalk": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz",
+ "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ }
+ },
+ "fast-deep-equal": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz",
+ "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=",
+ "dev": true
+ },
+ "has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
+ "dev": true
+ },
+ "is-fullwidth-code-point": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+ "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
+ "dev": true
+ },
+ "json-schema-traverse": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
+ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
+ "dev": true
+ },
+ "string-width": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
+ "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
+ "dev": true,
+ "requires": {
+ "is-fullwidth-code-point": "^2.0.0",
+ "strip-ansi": "^4.0.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
+ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^3.0.0"
+ }
+ },
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^3.0.0"
+ }
+ }
+ }
+ },
+ "tar": {
+ "version": "4.4.2",
+ "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.2.tgz",
+ "integrity": "sha512-BfkE9CciGGgDsATqkikUHrQrraBCO+ke/1f6SFAEMnxyyfN9lxC+nW1NFWMpqH865DhHIy9vQi682gk1X7friw==",
+ "dev": true,
+ "requires": {
+ "chownr": "^1.0.1",
+ "fs-minipass": "^1.2.5",
+ "minipass": "^2.2.4",
+ "minizlib": "^1.1.0",
+ "mkdirp": "^0.5.0",
+ "safe-buffer": "^5.1.2",
+ "yallist": "^3.0.2"
+ }
+ },
+ "tar-fs": {
+ "version": "1.16.3",
+ "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-1.16.3.tgz",
+ "integrity": "sha512-NvCeXpYx7OsmOh8zIOP/ebG55zZmxLE0etfWRbWok+q2Qo8x/vOR/IJT1taADXPe+jsiu9axDb3X4B+iIgNlKw==",
+ "dev": true,
+ "requires": {
+ "chownr": "^1.0.1",
+ "mkdirp": "^0.5.1",
+ "pump": "^1.0.0",
+ "tar-stream": "^1.1.2"
+ },
+ "dependencies": {
+ "pump": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/pump/-/pump-1.0.3.tgz",
+ "integrity": "sha512-8k0JupWme55+9tCVE+FS5ULT3K6AbgqrGa58lTT49RpyfwwcGedHqaC5LlQNdEAumn/wFsu6aPwkuPMioy8kqw==",
+ "dev": true,
+ "requires": {
+ "end-of-stream": "^1.1.0",
+ "once": "^1.3.1"
+ }
+ }
+ }
+ },
+ "tar-stream": {
+ "version": "1.6.1",
+ "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.6.1.tgz",
+ "integrity": "sha512-IFLM5wp3QrJODQFPm6/to3LJZrONdBY/otxcvDIQzu217zKye6yVR3hhi9lAjrC2Z+m/j5oDxMPb1qcd8cIvpA==",
+ "dev": true,
+ "requires": {
+ "bl": "^1.0.0",
+ "buffer-alloc": "^1.1.0",
+ "end-of-stream": "^1.0.0",
+ "fs-constants": "^1.0.0",
+ "readable-stream": "^2.3.0",
+ "to-buffer": "^1.1.0",
+ "xtend": "^4.0.0"
+ },
+ "dependencies": {
+ "isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
+ "dev": true
+ },
+ "readable-stream": {
+ "version": "2.3.6",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
+ "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
+ "dev": true,
+ "requires": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
+ }
+ },
+ "string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "dev": true,
+ "requires": {
+ "safe-buffer": "~5.1.0"
+ }
+ }
+ }
+ },
+ "temp": {
+ "version": "0.8.3",
+ "resolved": "https://registry.npmjs.org/temp/-/temp-0.8.3.tgz",
+ "integrity": "sha1-4Ma8TSa5AxJEEOT+2BEDAU38H1k=",
+ "dev": true,
+ "requires": {
+ "os-tmpdir": "^1.0.0",
+ "rimraf": "~2.2.6"
+ },
+ "dependencies": {
+ "rimraf": {
+ "version": "2.2.8",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz",
+ "integrity": "sha1-5Dm+Kq7jJzIZUnMPmaiSnk/FBYI=",
+ "dev": true
+ }
+ }
+ },
+ "tempfile": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/tempfile/-/tempfile-1.1.1.tgz",
+ "integrity": "sha1-W8xOrsxKsscH2LwR2ZzMmiyyh/I=",
+ "dev": true,
+ "requires": {
+ "os-tmpdir": "^1.0.0",
+ "uuid": "^2.0.1"
+ },
+ "dependencies": {
+ "uuid": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-2.0.3.tgz",
+ "integrity": "sha1-Z+LoY3lyFVMN/zGOW/nc6/1Hsho=",
+ "dev": true
+ }
+ }
+ },
+ "term-size": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/term-size/-/term-size-1.2.0.tgz",
+ "integrity": "sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk=",
+ "dev": true,
+ "requires": {
+ "execa": "^0.7.0"
+ }
+ },
+ "text-extensions": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/text-extensions/-/text-extensions-1.8.0.tgz",
+ "integrity": "sha512-mVzjRxuWnDKs/qH1rbOJEVHLlSX9kty9lpi7lMvLgU9S74mQ8/Ozg9UPcKxShh0qG2NZ+NyPOPpcZU4C1Eld9A==",
+ "dev": true
+ },
+ "text-table": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
+ "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=",
+ "dev": true
+ },
+ "throttleit": {
+ "version": "0.0.2",
+ "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-0.0.2.tgz",
+ "integrity": "sha1-z+34jmDADdlpe2H90qg0OptoDq8=",
+ "dev": true
+ },
+ "through": {
+ "version": "2.3.8",
+ "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
+ "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=",
+ "dev": true
+ },
+ "through2": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz",
+ "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=",
+ "dev": true,
+ "requires": {
+ "readable-stream": "^2.1.5",
+ "xtend": "~4.0.1"
+ },
+ "dependencies": {
+ "isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
+ "dev": true
+ },
+ "readable-stream": {
+ "version": "2.3.6",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
+ "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
+ "dev": true,
+ "requires": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
+ }
+ },
+ "string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "dev": true,
+ "requires": {
+ "safe-buffer": "~5.1.0"
+ }
+ }
+ }
+ },
+ "timed-out": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz",
+ "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=",
+ "dev": true
+ },
+ "timers-browserify": {
+ "version": "1.4.2",
+ "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-1.4.2.tgz",
+ "integrity": "sha1-ycWLV1voQHN1y14kYtrO50NZ9B0=",
+ "dev": true,
+ "requires": {
+ "process": "~0.11.0"
+ }
+ },
+ "to-arraybuffer": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz",
+ "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=",
+ "dev": true
+ },
+ "to-buffer": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.1.1.tgz",
+ "integrity": "sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg==",
+ "dev": true
+ },
+ "to-object-path": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz",
+ "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=",
+ "dev": true,
+ "requires": {
+ "kind-of": "^3.0.2"
+ }
+ },
+ "to-readable-stream": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz",
+ "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==",
+ "dev": true
+ },
+ "to-regex": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz",
+ "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==",
+ "dev": true,
+ "requires": {
+ "define-property": "^2.0.2",
+ "extend-shallow": "^3.0.2",
+ "regex-not": "^1.0.2",
+ "safe-regex": "^1.1.0"
+ }
+ },
+ "to-regex-range": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz",
+ "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=",
+ "dev": true,
+ "requires": {
+ "is-number": "^3.0.0",
+ "repeat-string": "^1.6.1"
+ },
+ "dependencies": {
+ "is-number": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
+ "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
+ "dev": true,
+ "requires": {
+ "kind-of": "^3.0.2"
+ }
+ }
+ }
+ },
+ "to-vfile": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/to-vfile/-/to-vfile-2.2.0.tgz",
+ "integrity": "sha512-saGC8/lWdGrEoBMLUtgzhRHWAkQMP8gdldA3MOAUhBwTGEb1RSMVcflHGSx4ZJsdEZ9o1qDBCPp47LCPrbZWow==",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.4",
+ "vfile": "^2.0.0",
+ "x-is-function": "^1.0.4"
+ }
+ },
+ "touch": {
+ "version": "0.0.3",
+ "resolved": "https://registry.npmjs.org/touch/-/touch-0.0.3.tgz",
+ "integrity": "sha1-Ua7z1ElXHU8oel2Hyci0kYGg2x0=",
+ "dev": true,
+ "requires": {
+ "nopt": "~1.0.10"
+ },
+ "dependencies": {
+ "nopt": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz",
+ "integrity": "sha1-bd0hvSoxQXuScn3Vhfim83YI6+4=",
+ "dev": true,
+ "requires": {
+ "abbrev": "1"
+ }
+ }
+ }
+ },
+ "tough-cookie": {
+ "version": "2.4.3",
+ "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz",
+ "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "psl": "^1.1.24",
+ "punycode": "^1.4.1"
+ }
+ },
+ "tr46": {
+ "version": "0.0.3",
+ "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
+ "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=",
+ "dev": true,
+ "optional": true
+ },
+ "traverse": {
+ "version": "0.3.9",
+ "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz",
+ "integrity": "sha1-cXuPIgzAu3tE5AUUwisui7xw2Lk=",
+ "dev": true
+ },
+ "trim": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/trim/-/trim-0.0.1.tgz",
+ "integrity": "sha1-WFhUf2spB1fulczMZm+1AITEYN0=",
+ "dev": true
+ },
+ "trim-newlines": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-2.0.0.tgz",
+ "integrity": "sha1-tAPQuRvlDDMd/EuC7s6yLD3hbSA=",
+ "dev": true
+ },
+ "trim-off-newlines": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/trim-off-newlines/-/trim-off-newlines-1.0.1.tgz",
+ "integrity": "sha1-n5up2e+odkw4dpi8v+sshI8RrbM=",
+ "dev": true
+ },
+ "trim-trailing-lines": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/trim-trailing-lines/-/trim-trailing-lines-1.1.1.tgz",
+ "integrity": "sha512-bWLv9BbWbbd7mlqqs2oQYnLD/U/ZqeJeJwbO0FG2zA1aTq+HTvxfHNKFa/HGCVyJpDiioUYaBhfiT6rgk+l4mg==",
+ "dev": true
+ },
+ "trough": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/trough/-/trough-1.0.2.tgz",
+ "integrity": "sha512-FHkoUZvG6Egrv9XZAyYGKEyb1JMsFphgPjoczkZC2y6W93U1jswcVURB8MUvtsahEPEVACyxD47JAL63vF4JsQ==",
+ "dev": true
+ },
+ "tslib": {
+ "version": "1.9.3",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz",
+ "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==",
+ "dev": true
+ },
+ "tslint": {
+ "version": "4.5.1",
+ "resolved": "https://registry.npmjs.org/tslint/-/tslint-4.5.1.tgz",
+ "integrity": "sha1-BTVocb7yOkNJBnNABvwYgza6gks=",
+ "dev": true,
+ "requires": {
+ "babel-code-frame": "^6.20.0",
+ "colors": "^1.1.2",
+ "diff": "^3.0.1",
+ "findup-sync": "~0.3.0",
+ "glob": "^7.1.1",
+ "optimist": "~0.6.0",
+ "resolve": "^1.1.7",
+ "tsutils": "^1.1.0",
+ "update-notifier": "^2.0.0"
+ },
+ "dependencies": {
+ "glob": {
+ "version": "7.1.3",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz",
+ "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==",
+ "dev": true,
+ "requires": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.0.4",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ }
+ },
+ "minimist": {
+ "version": "0.0.10",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz",
+ "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=",
+ "dev": true
+ },
+ "optimist": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz",
+ "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=",
+ "dev": true,
+ "requires": {
+ "minimist": "~0.0.1",
+ "wordwrap": "~0.0.2"
+ }
+ }
+ }
+ },
+ "tsutils": {
+ "version": "1.9.1",
+ "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-1.9.1.tgz",
+ "integrity": "sha1-ufmrROVa+WgYMdXyjQrur1x1DLA=",
+ "dev": true
+ },
+ "tty-browserify": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.1.tgz",
+ "integrity": "sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw==",
+ "dev": true
+ },
+ "tunnel-agent": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
+ "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
+ "dev": true,
+ "requires": {
+ "safe-buffer": "^5.0.1"
+ }
+ },
+ "tweetnacl": {
+ "version": "0.14.5",
+ "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
+ "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=",
+ "dev": true,
+ "optional": true
+ },
+ "type-check": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz",
+ "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=",
+ "dev": true,
+ "requires": {
+ "prelude-ls": "~1.1.2"
+ }
+ },
+ "typedarray": {
+ "version": "0.0.6",
+ "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
+ "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=",
+ "dev": true
+ },
+ "typescript": {
+ "version": "2.9.2",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.9.2.tgz",
+ "integrity": "sha512-Gr4p6nFNaoufRIY4NMdpQRNmgxVIGMs4Fcu/ujdYk3nAZqk7supzBE9idmvfZIlH/Cuj//dvi+019qEue9lV0w==",
+ "dev": true
+ },
+ "uc.micro": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.5.tgz",
+ "integrity": "sha512-JoLI4g5zv5qNyT09f4YAvEZIIV1oOjqnewYg5D38dkQljIzpPT296dbIGvKro3digYI1bkb7W6EP1y4uDlmzLg==",
+ "dev": true
+ },
+ "uglify-js": {
+ "version": "2.8.29",
+ "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz",
+ "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "source-map": "~0.5.1",
+ "uglify-to-browserify": "~1.0.0",
+ "yargs": "~3.10.0"
+ },
+ "dependencies": {
+ "yargs": {
+ "version": "3.10.0",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz",
+ "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "camelcase": "^1.0.2",
+ "cliui": "^2.1.0",
+ "decamelize": "^1.0.0",
+ "window-size": "0.1.0"
+ }
+ }
+ }
+ },
+ "uglify-to-browserify": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz",
+ "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=",
+ "dev": true,
+ "optional": true
+ },
+ "umd": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/umd/-/umd-3.0.3.tgz",
+ "integrity": "sha512-4IcGSufhFshvLNcMCV80UnQVlZ5pMOC8mvNPForqwA4+lzYQuetTESLDQkeLmihq8bRcnpbQa48Wb8Lh16/xow==",
+ "dev": true
+ },
+ "unherit": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/unherit/-/unherit-1.1.1.tgz",
+ "integrity": "sha512-+XZuV691Cn4zHsK0vkKYwBEwB74T3IZIcxrgn2E4rKwTfFyI1zCh7X7grwh9Re08fdPlarIdyWgI8aVB3F5A5g==",
+ "dev": true,
+ "requires": {
+ "inherits": "^2.0.1",
+ "xtend": "^4.0.1"
+ }
+ },
+ "unified": {
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/unified/-/unified-6.2.0.tgz",
+ "integrity": "sha512-1k+KPhlVtqmG99RaTbAv/usu85fcSRu3wY8X+vnsEhIxNP5VbVIDiXnLqyKIG+UMdyTg0ZX9EI6k2AfjJkHPtA==",
+ "dev": true,
+ "requires": {
+ "bail": "^1.0.0",
+ "extend": "^3.0.0",
+ "is-plain-obj": "^1.1.0",
+ "trough": "^1.0.0",
+ "vfile": "^2.0.0",
+ "x-is-string": "^0.1.0"
+ }
+ },
+ "unified-args": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/unified-args/-/unified-args-4.0.0.tgz",
+ "integrity": "sha1-jZubitNHvrN/QwVipixNNhtCIg8=",
+ "dev": true,
+ "requires": {
+ "camelcase": "^4.0.0",
+ "chalk": "^2.0.0",
+ "chokidar": "^1.5.1",
+ "minimist": "^1.2.0",
+ "text-table": "^0.2.0",
+ "unified-engine": "^4.0.0"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "dev": true,
+ "requires": {
+ "color-convert": "^1.9.0"
+ }
+ },
+ "camelcase": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz",
+ "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=",
+ "dev": true
+ },
+ "chalk": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz",
+ "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ }
+ },
+ "has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "5.4.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz",
+ "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^3.0.0"
+ }
+ }
+ }
+ },
+ "unified-engine": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/unified-engine/-/unified-engine-4.0.1.tgz",
+ "integrity": "sha1-lpKql/1cTsNoiXeeElFL746GP8M=",
+ "dev": true,
+ "requires": {
+ "concat-stream": "^1.5.1",
+ "debug": "^2.2.0",
+ "fault": "^1.0.0",
+ "fn-name": "^2.0.1",
+ "glob": "^7.0.3",
+ "ignore": "^3.2.0",
+ "is-empty": "^1.0.0",
+ "is-hidden": "^1.0.1",
+ "is-object": "^1.0.1",
+ "js-yaml": "^3.6.1",
+ "load-plugin": "^2.0.0",
+ "parse-json": "^2.2.0",
+ "to-vfile": "^2.0.0",
+ "trough": "^1.0.0",
+ "vfile-reporter": "^4.0.0",
+ "vfile-statistics": "^1.1.0",
+ "x-is-function": "^1.0.4",
+ "x-is-string": "^0.1.0",
+ "xtend": "^4.0.1"
+ },
+ "dependencies": {
+ "glob": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
+ "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
+ "dev": true,
+ "requires": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.0.4",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ }
+ }
+ }
+ },
+ "unified-lint-rule": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-1.0.2.tgz",
+ "integrity": "sha512-WkqwMC1aijHE17W3Z1co7aTI+Dzo1jHdwhI66fTClU1yOTbzAsTqlOD6eeR/MI9235Y3nu2jMDcm8GCeq4gaLg==",
+ "dev": true,
+ "requires": {
+ "wrapped": "^1.0.1"
+ }
+ },
+ "unified-message-control": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/unified-message-control/-/unified-message-control-1.0.4.tgz",
+ "integrity": "sha512-e1dEtN4Z/TvLn/qHm+xeZpzqhJTtfZusFErk336kkZVpqrJYiV9ptxq+SbRPFMlN0OkjDYHmVJ929KYjsMTo3g==",
+ "dev": true,
+ "requires": {
+ "trim": "0.0.1",
+ "unist-util-visit": "^1.0.0",
+ "vfile-location": "^2.0.0"
+ }
+ },
+ "union-value": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz",
+ "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=",
+ "dev": true,
+ "requires": {
+ "arr-union": "^3.1.0",
+ "get-value": "^2.0.6",
+ "is-extendable": "^0.1.1",
+ "set-value": "^0.4.3"
+ },
+ "dependencies": {
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ },
+ "set-value": {
+ "version": "0.4.3",
+ "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz",
+ "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=",
+ "dev": true,
+ "requires": {
+ "extend-shallow": "^2.0.1",
+ "is-extendable": "^0.1.1",
+ "is-plain-object": "^2.0.1",
+ "to-object-path": "^0.3.0"
+ }
+ }
+ }
+ },
+ "uniq": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz",
+ "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=",
+ "dev": true
+ },
+ "unique-string": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz",
+ "integrity": "sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo=",
+ "dev": true,
+ "requires": {
+ "crypto-random-string": "^1.0.0"
+ }
+ },
+ "unist-util-generated": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/unist-util-generated/-/unist-util-generated-1.1.2.tgz",
+ "integrity": "sha512-1HcwiEO62dr0XWGT+abVK4f0aAm8Ik8N08c5nAYVmuSxfvpA9rCcNyX/le8xXj1pJK5nBrGlZefeWB6bN8Pstw==",
+ "dev": true
+ },
+ "unist-util-is": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-2.1.2.tgz",
+ "integrity": "sha512-YkXBK/H9raAmG7KXck+UUpnKiNmUdB+aBGrknfQ4EreE1banuzrKABx3jP6Z5Z3fMSPMQQmeXBlKpCbMwBkxVw==",
+ "dev": true
+ },
+ "unist-util-modify-children": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/unist-util-modify-children/-/unist-util-modify-children-1.1.2.tgz",
+ "integrity": "sha512-GRi04yhng1WqBf5RBzPkOtWAadcZS2gvuOgNn/cyJBYNxtTuyYqTKN0eg4rC1YJwGnzrqfRB3dSKm8cNCjNirg==",
+ "dev": true,
+ "requires": {
+ "array-iterate": "^1.0.0"
+ }
+ },
+ "unist-util-position": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-3.0.1.tgz",
+ "integrity": "sha512-05QfJDPI7PE1BIUtAxeSV+cDx21xP7+tUZgSval5CA7tr0pHBwybF7OnEa1dOFqg6BfYH/qiMUnWwWj+Frhlww==",
+ "dev": true
+ },
+ "unist-util-remove-position": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-1.1.2.tgz",
+ "integrity": "sha512-XxoNOBvq1WXRKXxgnSYbtCF76TJrRoe5++pD4cCBsssSiWSnPEktyFrFLE8LTk3JW5mt9hB0Sk5zn4x/JeWY7Q==",
+ "dev": true,
+ "requires": {
+ "unist-util-visit": "^1.1.0"
+ }
+ },
+ "unist-util-stringify-position": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-1.1.2.tgz",
+ "integrity": "sha512-pNCVrk64LZv1kElr0N1wPiHEUoXNVFERp+mlTg/s9R5Lwg87f9bM/3sQB99w+N9D/qnM9ar3+AKDBwo/gm/iQQ==",
+ "dev": true
+ },
+ "unist-util-visit": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-1.3.1.tgz",
+ "integrity": "sha512-0fdB9EQJU0tho5tK0VzOJzAQpPv2LyLZ030b10GxuzAWEfvd54mpY7BMjQ1L69k2YNvL+SvxRzH0yUIehOO8aA==",
+ "dev": true,
+ "requires": {
+ "unist-util-is": "^2.1.1"
+ }
+ },
+ "universal-user-agent": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-2.0.2.tgz",
+ "integrity": "sha512-nOwvHWLH3dBazyuzbECPA5uVFNd7AlgviXRHgR4yf48QqitIvpdncRrxMbZNMpPPEfgz30I9ubd1XmiJiqsTrg==",
+ "dev": true,
+ "requires": {
+ "os-name": "^3.0.0"
+ }
+ },
+ "universalify": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
+ "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==",
+ "dev": true
+ },
+ "unpipe": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
+ "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=",
+ "dev": true
+ },
+ "unset-value": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz",
+ "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=",
+ "dev": true,
+ "requires": {
+ "has-value": "^0.3.1",
+ "isobject": "^3.0.0"
+ },
+ "dependencies": {
+ "has-value": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz",
+ "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=",
+ "dev": true,
+ "requires": {
+ "get-value": "^2.0.3",
+ "has-values": "^0.1.4",
+ "isobject": "^2.0.0"
+ },
+ "dependencies": {
+ "isobject": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz",
+ "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=",
+ "dev": true,
+ "requires": {
+ "isarray": "1.0.0"
+ }
+ }
+ }
+ },
+ "has-values": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz",
+ "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=",
+ "dev": true
+ },
+ "isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
+ "dev": true
+ },
+ "isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
+ "dev": true
+ }
+ }
+ },
+ "untildify": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/untildify/-/untildify-2.1.0.tgz",
+ "integrity": "sha1-F+soB5h/dpUunASF/DEdBqgmouA=",
+ "dev": true,
+ "requires": {
+ "os-homedir": "^1.0.0"
+ }
+ },
+ "unzip-response": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/unzip-response/-/unzip-response-2.0.1.tgz",
+ "integrity": "sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c=",
+ "dev": true
+ },
+ "update-check": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/update-check/-/update-check-1.5.1.tgz",
+ "integrity": "sha512-M3rjq5KwSrWZrm2GVPIQIF+NXpIn5I9mIV67gGoydptQvzRjLp9ZbM6ctFJeNuaWSm5+mNP7aInELjSiLcIw6A==",
+ "dev": true,
+ "requires": {
+ "registry-auth-token": "3.3.2",
+ "registry-url": "3.1.0"
+ }
+ },
+ "update-notifier": {
+ "version": "2.5.0",
+ "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-2.5.0.tgz",
+ "integrity": "sha512-gwMdhgJHGuj/+wHJJs9e6PcCszpxR1b236igrOkUofGhqJuG+amlIKwApH1IW1WWl7ovZxsX49lMBWLxSdm5Dw==",
+ "dev": true,
+ "requires": {
+ "boxen": "^1.2.1",
+ "chalk": "^2.0.1",
+ "configstore": "^3.0.0",
+ "import-lazy": "^2.1.0",
+ "is-ci": "^1.0.10",
+ "is-installed-globally": "^0.1.0",
+ "is-npm": "^1.0.0",
+ "latest-version": "^3.0.0",
+ "semver-diff": "^2.0.0",
+ "xdg-basedir": "^3.0.0"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "dev": true,
+ "requires": {
+ "color-convert": "^1.9.0"
+ }
+ },
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ }
+ }
+ }
+ },
+ "uri-js": {
+ "version": "4.2.2",
+ "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz",
+ "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==",
+ "dev": true,
+ "requires": {
+ "punycode": "^2.1.0"
+ },
+ "dependencies": {
+ "punycode": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
+ "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
+ "dev": true
+ }
+ }
+ },
+ "urix": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz",
+ "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=",
+ "dev": true
+ },
+ "url": {
+ "version": "0.11.0",
+ "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz",
+ "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=",
+ "dev": true,
+ "requires": {
+ "punycode": "1.3.2",
+ "querystring": "0.2.0"
+ },
+ "dependencies": {
+ "punycode": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz",
+ "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=",
+ "dev": true
+ }
+ }
+ },
+ "url-parse-lax": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz",
+ "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=",
+ "dev": true,
+ "requires": {
+ "prepend-http": "^2.0.0"
+ }
+ },
+ "url-template": {
+ "version": "2.0.8",
+ "resolved": "https://registry.npmjs.org/url-template/-/url-template-2.0.8.tgz",
+ "integrity": "sha1-/FZaPMy/93MMd19WQflVV5FDnyE=",
+ "dev": true
+ },
+ "use": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz",
+ "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==",
+ "dev": true
+ },
+ "util": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz",
+ "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=",
+ "dev": true,
+ "requires": {
+ "inherits": "2.0.1"
+ },
+ "dependencies": {
+ "inherits": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz",
+ "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=",
+ "dev": true
+ }
+ }
+ },
+ "util-deprecate": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
+ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
+ "dev": true
+ },
+ "uuid": {
+ "version": "3.3.2",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz",
+ "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==",
+ "dev": true
+ },
+ "validate-npm-package-license": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.3.tgz",
+ "integrity": "sha512-63ZOUnL4SIXj4L0NixR3L1lcjO38crAbgrTpl28t8jjrfuiOBL5Iygm+60qPs/KsZGzPNg6Smnc/oY16QTjF0g==",
+ "dev": true,
+ "requires": {
+ "spdx-correct": "^3.0.0",
+ "spdx-expression-parse": "^3.0.0"
+ }
+ },
+ "vary": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
+ "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=",
+ "dev": true
+ },
+ "verror": {
+ "version": "1.10.0",
+ "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
+ "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
+ "dev": true,
+ "requires": {
+ "assert-plus": "^1.0.0",
+ "core-util-is": "1.0.2",
+ "extsprintf": "^1.2.0"
+ }
+ },
+ "vfile": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/vfile/-/vfile-2.3.0.tgz",
+ "integrity": "sha512-ASt4mBUHcTpMKD/l5Q+WJXNtshlWxOogYyGYYrg4lt/vuRjC1EFQtlAofL5VmtVNIZJzWYFJjzGWZ0Gw8pzW1w==",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.4",
+ "replace-ext": "1.0.0",
+ "unist-util-stringify-position": "^1.0.0",
+ "vfile-message": "^1.0.0"
+ }
+ },
+ "vfile-location": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-2.0.3.tgz",
+ "integrity": "sha512-zM5/l4lfw1CBoPx3Jimxoc5RNDAHHpk6AM6LM0pTIkm5SUSsx8ZekZ0PVdf0WEZ7kjlhSt7ZlqbRL6Cd6dBs6A==",
+ "dev": true
+ },
+ "vfile-message": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-1.0.1.tgz",
+ "integrity": "sha512-vSGCkhNvJzO6VcWC6AlJW4NtYOVtS+RgCaqFIYUjoGIlHnFL+i0LbtYvonDWOMcB97uTPT4PRsyYY7REWC9vug==",
+ "dev": true,
+ "requires": {
+ "unist-util-stringify-position": "^1.1.1"
+ }
+ },
+ "vfile-reporter": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/vfile-reporter/-/vfile-reporter-4.0.0.tgz",
+ "integrity": "sha1-6m8K4TQvSEFXOYXgX5QXNvJ96do=",
+ "dev": true,
+ "requires": {
+ "repeat-string": "^1.5.0",
+ "string-width": "^1.0.0",
+ "supports-color": "^4.1.0",
+ "unist-util-stringify-position": "^1.0.0",
+ "vfile-statistics": "^1.1.0"
+ },
+ "dependencies": {
+ "has-flag": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz",
+ "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz",
+ "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=",
+ "dev": true,
+ "requires": {
+ "has-flag": "^2.0.0"
+ }
+ }
+ }
+ },
+ "vfile-statistics": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/vfile-statistics/-/vfile-statistics-1.1.1.tgz",
+ "integrity": "sha512-dxUM6IYvGChHuwMT3dseyU5BHprNRXzAV0OHx1A769lVGsTiT50kU7BbpRFV+IE6oWmU+PwHdsTKfXhnDIRIgQ==",
+ "dev": true
+ },
+ "vm-browserify": {
+ "version": "0.0.4",
+ "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz",
+ "integrity": "sha1-XX6kW7755Kb/ZflUOOCofDV9WnM=",
+ "dev": true,
+ "requires": {
+ "indexof": "0.0.1"
+ }
+ },
+ "walk-sync": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/walk-sync/-/walk-sync-0.3.2.tgz",
+ "integrity": "sha1-SCcoCvxC0OA1NnxKTjHurA0Tb3U=",
+ "dev": true,
+ "requires": {
+ "ensure-posix-path": "^1.0.0",
+ "matcher-collection": "^1.0.0"
+ }
+ },
+ "wcwidth": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz",
+ "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=",
+ "dev": true,
+ "requires": {
+ "defaults": "^1.0.3"
+ }
+ },
+ "webidl-conversions": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-2.0.1.tgz",
+ "integrity": "sha1-O/glj30xjHRDw28uFpQCoaZwNQY=",
+ "dev": true,
+ "optional": true
+ },
+ "whatwg-url-compat": {
+ "version": "0.6.5",
+ "resolved": "https://registry.npmjs.org/whatwg-url-compat/-/whatwg-url-compat-0.6.5.tgz",
+ "integrity": "sha1-AImBEa9om7CXVBzVpFymyHmERb8=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "tr46": "~0.0.1"
+ }
+ },
+ "which": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz",
+ "integrity": "sha1-/wS9/AEO5UfXgL7DjhrBwnd9JTo=",
+ "dev": true,
+ "requires": {
+ "isexe": "^2.0.0"
+ }
+ },
+ "widest-line": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-2.0.0.tgz",
+ "integrity": "sha1-AUKk6KJD+IgsAjOqDgKBqnYVInM=",
+ "dev": true,
+ "requires": {
+ "string-width": "^2.1.1"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
+ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
+ "dev": true
+ },
+ "is-fullwidth-code-point": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+ "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
+ "dev": true
+ },
+ "string-width": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
+ "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
+ "dev": true,
+ "requires": {
+ "is-fullwidth-code-point": "^2.0.0",
+ "strip-ansi": "^4.0.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
+ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^3.0.0"
+ }
+ }
+ }
+ },
+ "window-size": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz",
+ "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=",
+ "dev": true,
+ "optional": true
+ },
+ "windows-release": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/windows-release/-/windows-release-3.1.0.tgz",
+ "integrity": "sha512-hBb7m7acFgQPQc222uEQTmdcGLeBmQLNLFIh0rDk3CwFOBrfjefLzEfEfmpMq8Af/n/GnFf3eYf203FY1PmudA==",
+ "dev": true,
+ "requires": {
+ "execa": "^0.10.0"
+ },
+ "dependencies": {
+ "cross-spawn": {
+ "version": "6.0.5",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
+ "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
+ "dev": true,
+ "requires": {
+ "nice-try": "^1.0.4",
+ "path-key": "^2.0.1",
+ "semver": "^5.5.0",
+ "shebang-command": "^1.2.0",
+ "which": "^1.2.9"
+ }
+ },
+ "execa": {
+ "version": "0.10.0",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-0.10.0.tgz",
+ "integrity": "sha512-7XOMnz8Ynx1gGo/3hyV9loYNPWM94jG3+3T3Y8tsfSstFmETmENCMU/A/zj8Lyaj1lkgEepKepvd6240tBRvlw==",
+ "dev": true,
+ "requires": {
+ "cross-spawn": "^6.0.0",
+ "get-stream": "^3.0.0",
+ "is-stream": "^1.1.0",
+ "npm-run-path": "^2.0.0",
+ "p-finally": "^1.0.0",
+ "signal-exit": "^3.0.0",
+ "strip-eof": "^1.0.0"
+ }
+ }
+ }
+ },
+ "wordwrap": {
+ "version": "0.0.3",
+ "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz",
+ "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=",
+ "dev": true
+ },
+ "wrap-ansi": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-3.0.1.tgz",
+ "integrity": "sha1-KIoE2H7aXChuBg3+jxNc6NAH+Lo=",
+ "dev": true,
+ "requires": {
+ "string-width": "^2.1.1",
+ "strip-ansi": "^4.0.0"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
+ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
+ "dev": true
+ },
+ "is-fullwidth-code-point": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+ "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
+ "dev": true
+ },
+ "string-width": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
+ "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
+ "dev": true,
+ "requires": {
+ "is-fullwidth-code-point": "^2.0.0",
+ "strip-ansi": "^4.0.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
+ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^3.0.0"
+ }
+ }
+ }
+ },
+ "wrapped": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/wrapped/-/wrapped-1.0.1.tgz",
+ "integrity": "sha1-x4PZ2Aeyc+mwHoUWgKk4yHyQckI=",
+ "dev": true,
+ "requires": {
+ "co": "3.1.0",
+ "sliced": "^1.0.1"
+ },
+ "dependencies": {
+ "co": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/co/-/co-3.1.0.tgz",
+ "integrity": "sha1-TqVOpaCJOBUxheFSEMaNkJK8G3g=",
+ "dev": true
+ }
+ }
+ },
+ "wrappy": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
+ "dev": true
+ },
+ "write": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/write/-/write-0.2.1.tgz",
+ "integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=",
+ "dev": true,
+ "requires": {
+ "mkdirp": "^0.5.1"
+ }
+ },
+ "write-file-atomic": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.2.tgz",
+ "integrity": "sha512-s0b6vB3xIVRLWywa6X9TOMA7k9zio0TMOsl9ZnDkliA/cfJlpHXAscj0gbHVJiTdIuAYpIyqS5GW91fqm6gG5g==",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.11",
+ "imurmurhash": "^0.1.4",
+ "signal-exit": "^3.0.2"
+ }
+ },
+ "x-is-function": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/x-is-function/-/x-is-function-1.0.4.tgz",
+ "integrity": "sha1-XSlNw9Joy90GJYDgxd93o5HR+h4=",
+ "dev": true
+ },
+ "x-is-string": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/x-is-string/-/x-is-string-0.1.0.tgz",
+ "integrity": "sha1-R0tQhlrzpJqcRlfwWs0UVFj3fYI=",
+ "dev": true
+ },
+ "xdg-basedir": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-3.0.0.tgz",
+ "integrity": "sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ=",
+ "dev": true
+ },
+ "xml-name-validator": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-2.0.1.tgz",
+ "integrity": "sha1-TYuPHszTQZqjYgYb7O9RXh5VljU=",
+ "dev": true,
+ "optional": true
+ },
+ "xmlbuilder": {
+ "version": "9.0.7",
+ "resolved": "http://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz",
+ "integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=",
+ "dev": true
+ },
+ "xmldom": {
+ "version": "0.1.27",
+ "resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.1.27.tgz",
+ "integrity": "sha1-1QH5ezvbQDr4757MIFcxh6rawOk=",
+ "dev": true
+ },
+ "xtend": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz",
+ "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=",
+ "dev": true
+ },
+ "yallist": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.2.tgz",
+ "integrity": "sha1-hFK0u36Dx8GI2AQcGoN8dz1ti7k=",
+ "dev": true
+ }
+ }
+}
diff --git a/devel/electron5/files/package.json b/devel/electron5/files/package.json
new file mode 100644
index 000000000000..d09524116650
--- /dev/null
+++ b/devel/electron5/files/package.json
@@ -0,0 +1,88 @@
+{
+ "name": "electron",
+ "version": "5.0.13",
+ "repository": "https://github.com/electron/electron",
+ "description": "Build cross platform desktop apps with JavaScript, HTML, and CSS",
+ "devDependencies": {
+ "@octokit/rest": "^16.3.2",
+ "aliasify": "^2.1.0",
+ "asar": "^0.11.0",
+ "browserify": "^13.1.0",
+ "check-for-leaks": "^1.0.2",
+ "clang-format": "^1.2.3",
+ "colors": "^1.1.2",
+ "dotenv-safe": "^4.0.4",
+ "dugite": "^1.45.0",
+ "electron-docs-linter": "^2.4.0",
+ "electron-typescript-definitions": "^7.0.0",
+ "eslint": "^5.6.0",
+ "eslint-config-standard": "^12.0.0",
+ "eslint-plugin-mocha": "^5.2.0",
+ "folder-hash": "^2.1.1",
+ "got": "^9.6.0",
+ "husky": "^0.14.3",
+ "lint": "^1.1.2",
+ "lint-staged": "^8.1.0",
+ "minimist": "^1.2.0",
+ "nugget": "^2.0.1",
+ "octicons": "^7.3.0",
+ "plist": "^3.0.1",
+ "remark-cli": "^4.0.0",
+ "remark-preset-lint-markdown-style-guide": "^2.1.1",
+ "request": "^2.88.0",
+ "semver": "^5.6.0",
+ "serve": "^6.5.8",
+ "standard-markdown": "^5.0.0",
+ "sumchecker": "^2.0.2",
+ "temp": "^0.8.3"
+ },
+ "private": true,
+ "scripts": {
+ "asar": "asar",
+ "browserify": "browserify",
+ "bump-version": "./script/bump-version.js",
+ "check-tls": "python ./script/tls.py",
+ "clang-format": "find atom/ chromium_src/ -iname *.h -o -iname *.cc -o -iname *.mm | xargs clang-format -i",
+ "lint": "node ./script/lint.js && npm run lint:clang-format && npm run lint:docs",
+ "lint:js": "node ./script/lint.js --js",
+ "lint:clang-format": "python script/run-clang-format.py -r -c atom/ chromium_src/ || (echo \"\\nCode not formatted correctly.\" && exit 1)",
+ "lint:cpp": "node ./script/lint.js --cc",
+ "lint:py": "node ./script/lint.js --py",
+ "lint:gn": "node ./script/lint.js --gn",
+ "lint:docs": "remark docs -qf && npm run lint:js-in-markdown && npm run create-typescript-definitions && npm run lint:docs-relative-links",
+ "lint:docs-relative-links": "python ./script/check-relative-doc-links.py",
+ "lint:js-in-markdown": "standard-markdown docs",
+ "create-api-json": "electron-docs-linter docs --outfile=electron-api.json",
+ "create-typescript-definitions": "npm run create-api-json && electron-typescript-definitions --in=electron-api.json --out=electron.d.ts && node spec/ts-smoke/runner.js",
+ "preinstall": "node -e 'process.exit(0)'",
+ "precommit": "lint-staged",
+ "prepack": "check-for-leaks",
+ "prepush": "check-for-leaks",
+ "repl": "node ./script/start.js --interactive",
+ "start": "node ./script/start.js",
+ "test": "node ./script/spec-runner.js electron/spec"
+ },
+ "license": "MIT",
+ "author": "Electron Community",
+ "keywords": [
+ "electron"
+ ],
+ "aliasify": {
+ "replacements": {
+ "@electron/internal/(.+)": "./lib/$1"
+ }
+ },
+ "lint-staged": {
+ "*.{js,ts}": [
+ "node script/lint.js --js --fix --only --",
+ "git add"
+ ],
+ "*.{cc,mm,c,h}": [
+ "python script/run-clang-format.py -r -c --fix",
+ "git add"
+ ],
+ "*.md": [
+ "remark -qf"
+ ]
+ }
+}
diff --git a/devel/electron5/files/patch-BUILD.gn b/devel/electron5/files/patch-BUILD.gn
new file mode 100644
index 000000000000..d8d023875781
--- /dev/null
+++ b/devel/electron5/files/patch-BUILD.gn
@@ -0,0 +1,87 @@
+--- BUILD.gn.orig 2019-04-08 08:32:35 UTC
++++ BUILD.gn
+@@ -381,7 +381,7 @@ group("gn_all") {
+ ]
+ }
+
+- if (is_linux || is_android) {
++ if ((is_linux && !is_bsd) || is_android) {
+ deps += [
+ "//third_party/breakpad:breakpad_unittests",
+ "//third_party/breakpad:core-2-minidump",
+@@ -422,8 +422,6 @@ group("gn_all") {
+ "//net:disk_cache_memory_test",
+ "//net:quic_client",
+ "//net:quic_server",
+- "//sandbox/linux:chrome_sandbox",
+- "//sandbox/linux:sandbox_linux_unittests",
+ "//testing:empty_main",
+ ]
+
+@@ -480,10 +478,6 @@ group("gn_all") {
+ "//chrome/test/chromedriver:chromedriver",
+ "//chrome/test/chromedriver:chromedriver_tests",
+ "//components/sync:run_sync_testserver",
+- "//courgette:courgette",
+- "//courgette:courgette_fuzz",
+- "//courgette:courgette_minimal_tool",
+- "//courgette:courgette_unittests",
+ "//media/cast:generate_barcode_video",
+ "//media/cast:generate_timecode_audio",
+ "//net:crash_cache",
+@@ -538,10 +532,6 @@ group("gn_all") {
+ "//mojo:mojo_perftests",
+ "//services/service_manager/public/cpp",
+ "//testing/gmock:gmock_main",
+- "//third_party/breakpad:dump_syms($host_toolchain)",
+- "//third_party/breakpad:microdump_stackwalk($host_toolchain)",
+- "//third_party/breakpad:minidump_dump($host_toolchain)",
+- "//third_party/breakpad:minidump_stackwalk($host_toolchain)",
+ ]
+
+ if (!is_android) {
+@@ -615,7 +605,7 @@ group("gn_all") {
+ host_os == "win") {
+ deps += [ "//chrome/test/mini_installer:mini_installer_tests" ]
+ }
+- } else if (!is_android && !is_ios && !is_fuchsia) {
++ } else if (!is_android && !is_ios && !is_fuchsia && !is_bsd) {
+ deps += [ "//third_party/breakpad:symupload($host_toolchain)" ]
+ }
+
+@@ -873,7 +863,6 @@ if (is_chromeos) {
+ "//ppapi/examples/video_decode",
+ "//sandbox/linux:chrome_sandbox",
+ "//sandbox/linux:sandbox_linux_unittests",
+- "//third_party/breakpad:minidump_stackwalk($host_toolchain)",
+
+ # Blocked on https://github.com/catapult-project/catapult/issues/2297
+ #"//third_party/catapult/telemetry:bitmaptools",
+@@ -1001,7 +990,7 @@ if (!is_ios) {
+ ]
+ }
+
+- if (!is_win && !is_android) {
++ if (!is_win && !is_android && !is_bsd) {
+ data_deps +=
+ [ "//third_party/breakpad:minidump_stackwalk($host_toolchain)" ]
+ }
+@@ -1010,7 +999,7 @@ if (!is_ios) {
+ data_deps += [ "//third_party/breakpad:dump_syms($host_toolchain)" ]
+ }
+
+- if (is_linux) {
++ if (is_linux && !is_bsd) {
+ data_deps += [ "//third_party/breakpad:dump_syms($host_toolchain)" ]
+ }
+
+@@ -1150,9 +1139,6 @@ group("chromium_builder_perf") {
+
+ if (is_win) {
+ data_deps += [ "//chrome/installer/mini_installer:mini_installer" ]
+- } else {
+- data_deps +=
+- [ "//third_party/breakpad:minidump_stackwalk($host_toolchain)" ]
+ }
+ if (is_win || is_android) {
+ data_deps += [
diff --git a/devel/electron5/files/patch-apps_ui_views_app__window__frame__view.cc b/devel/electron5/files/patch-apps_ui_views_app__window__frame__view.cc
new file mode 100644
index 000000000000..2a9e23ea3f97
--- /dev/null
+++ b/devel/electron5/files/patch-apps_ui_views_app__window__frame__view.cc
@@ -0,0 +1,11 @@
+--- apps/ui/views/app_window_frame_view.cc.orig 2019-04-08 08:32:35 UTC
++++ apps/ui/views/app_window_frame_view.cc
+@@ -132,7 +132,7 @@ gfx::Rect AppWindowFrameView::GetBoundsForClientView()
+ gfx::Rect AppWindowFrameView::GetWindowBoundsForClientBounds(
+ const gfx::Rect& client_bounds) const {
+ gfx::Rect window_bounds = client_bounds;
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ // Get the difference between the widget's client area bounds and window
+ // bounds, and grow |window_bounds| by that amount.
+ gfx::Insets native_frame_insets =
diff --git a/devel/electron5/files/patch-ash_display_mirror__window__controller.cc b/devel/electron5/files/patch-ash_display_mirror__window__controller.cc
new file mode 100644
index 000000000000..a152baf0e33c
--- /dev/null
+++ b/devel/electron5/files/patch-ash_display_mirror__window__controller.cc
@@ -0,0 +1,14 @@
+--- ash/display/mirror_window_controller.cc.orig 2019-04-08 08:32:36 UTC
++++ ash/display/mirror_window_controller.cc
+@@ -274,7 +274,11 @@ void MirrorWindowController::UpdateWindow(
+ return info.id() == iter->first;
+ }) == display_info_list.end()) {
+ CloseAndDeleteHost(iter->second, true);
++#if defined(__llvm__)
++ mirroring_host_info_map_.erase(iter++);
++#else
+ iter = mirroring_host_info_map_.erase(iter);
++#endif
+ } else {
+ ++iter;
+ }
diff --git a/devel/electron5/files/patch-base_BUILD.gn b/devel/electron5/files/patch-base_BUILD.gn
new file mode 100644
index 000000000000..29d276b82b4b
--- /dev/null
+++ b/devel/electron5/files/patch-base_BUILD.gn
@@ -0,0 +1,67 @@
+--- base/BUILD.gn.orig 2019-04-08 08:32:37 UTC
++++ base/BUILD.gn
+@@ -1185,7 +1185,7 @@ jumbo_component("base") {
+ # Needed for <atomic> if using newer C++ library than sysroot, except if
+ # building inside the cros_sdk environment - use host_toolchain as a
+ # more robust check for this.
+- if (!use_sysroot && (is_android || (is_linux && !is_chromecast)) &&
++ if (!use_sysroot && (is_android || (is_linux && !is_chromecast) && !is_clang) &&
+ host_toolchain != "//build/toolchain/cros:host") {
+ libs += [ "atomic" ]
+ }
+@@ -1211,7 +1211,7 @@ jumbo_component("base") {
+ "allocator/allocator_shim_override_glibc_weak_symbols.h",
+ ]
+ deps += [ "//base/allocator:tcmalloc" ]
+- } else if (is_linux && use_allocator == "none") {
++ } else if ((is_linux && !is_bsd) && use_allocator == "none") {
+ sources += [ "allocator/allocator_shim_default_dispatch_to_glibc.cc" ]
+ } else if (is_android && use_allocator == "none") {
+ sources += [
+@@ -1751,6 +1751,33 @@ jumbo_component("base") {
+ }
+ }
+
++ if (is_bsd) {
++ sources -= [
++ "files/file_path_watcher_linux.cc",
++ "files/file_util_linux.cc",
++ "process/memory_linux.cc",
++ "process/process_handle_linux.cc",
++ "process/process_iterator_linux.cc",
++ "process/process_metrics_linux.cc",
++ "system/sys_info_linux.cc"
++ ]
++ sources += [
++ "files/file_path_watcher_kqueue.cc",
++ "files/file_path_watcher_kqueue.h",
++ "files/file_path_watcher_stub.cc",
++ "process/memory_stubs.cc",
++ "process/process_handle_freebsd.cc",
++ "process/process_iterator_freebsd.cc",
++ "process/process_metrics_freebsd.cc",
++ "system/sys_info_freebsd.cc",
++ ]
++ libs = [
++ "execinfo", # logging.cc
++ "kvm", # process_metrics_freebsd
++ "util" # process_metrics_freebsd
++ ]
++ }
++
+ # iOS
+ if (is_ios) {
+ set_sources_assignment_filter([])
+@@ -2808,6 +2835,12 @@ test("base_unittests") {
+ ]
+ set_sources_assignment_filter(sources_assignment_filter)
+ }
++
++ if (is_bsd) {
++ sources -= [
++ "debug/proc_maps_linux_unittest.cc",
++ ]
++ }
+
+ if (is_win) {
+ deps += [ "//base:scoped_handle_test_dll" ]
diff --git a/devel/electron5/files/patch-base_allocator_allocator__shim.cc b/devel/electron5/files/patch-base_allocator_allocator__shim.cc
new file mode 100644
index 000000000000..710c2b180fe1
--- /dev/null
+++ b/devel/electron5/files/patch-base_allocator_allocator__shim.cc
@@ -0,0 +1,11 @@
+--- base/allocator/allocator_shim.cc.orig 2019-04-08 08:32:37 UTC
++++ base/allocator/allocator_shim.cc
+@@ -70,7 +70,7 @@ inline const allocator::AllocatorDispatch* GetChainHea
+ // Unfortunately due to that bug NoBarrier_Load() is mistakenly fully
+ // barriered on Linux+Clang, and that causes visible perf regressons.
+ return reinterpret_cast<const allocator::AllocatorDispatch*>(
+-#if defined(OS_LINUX) && defined(__clang__)
++#if (defined(OS_BSD) || defined(OS_LINUX)) && defined(__clang__)
+ *static_cast<const volatile subtle::AtomicWord*>(&g_chain_head)
+ #else
+ subtle::NoBarrier_Load(&g_chain_head)
diff --git a/devel/electron5/files/patch-base_allocator_allocator__shim__default__dispatch__to__glibc.cc b/devel/electron5/files/patch-base_allocator_allocator__shim__default__dispatch__to__glibc.cc
new file mode 100644
index 000000000000..53f7a7f3a37c
--- /dev/null
+++ b/devel/electron5/files/patch-base_allocator_allocator__shim__default__dispatch__to__glibc.cc
@@ -0,0 +1,77 @@
+--- base/allocator/allocator_shim_default_dispatch_to_glibc.cc.orig 2019-04-08 08:18:04 UTC
++++ base/allocator/allocator_shim_default_dispatch_to_glibc.cc
+@@ -3,19 +3,28 @@
+ // found in the LICENSE file.
+
+ #include "base/allocator/allocator_shim.h"
++#include <stdio.h>
++#include <stdlib.h>
++#include <malloc_np.h>
+
+-#include <malloc.h>
+-
+ // This translation unit defines a default dispatch for the allocator shim which
+ // routes allocations to libc functions.
+-// The code here is strongly inspired from tcmalloc's libc_override_glibc.h.
++// The code here is strongly inspired from tcmalloc's override_glibc.h.
+
+ extern "C" {
+-void* __libc_malloc(size_t size);
+-void* __libc_calloc(size_t n, size_t size);
+-void* __libc_realloc(void* address, size_t size);
+-void* __libc_memalign(size_t alignment, size_t size);
+-void __libc_free(void* ptr);
++void* __malloc(size_t size);
++void* __calloc(size_t n, size_t size);
++void* __realloc(void* address, size_t size);
++void* __memalign(size_t alignment, size_t size) {
++ void *ret;
++ if (__posix_memalign(&ret, alignment, size) != 0) {
++ return nullptr;
++ } else {
++ return ret;
++ }
++}
++int __posix_memalign(void **ptr, size_t alignment, size_t size);
++void __free(void* ptr);
+ } // extern "C"
+
+ namespace {
+@@ -23,32 +32,32 @@ namespace {
+ using base::allocator::AllocatorDispatch;
+
+ void* GlibcMalloc(const AllocatorDispatch*, size_t size, void* context) {
+- return __libc_malloc(size);
++ return __malloc(size);
+ }
+
+ void* GlibcCalloc(const AllocatorDispatch*,
+ size_t n,
+ size_t size,
+ void* context) {
+- return __libc_calloc(n, size);
++ return __calloc(n, size);
+ }
+
+ void* GlibcRealloc(const AllocatorDispatch*,
+ void* address,
+ size_t size,
+ void* context) {
+- return __libc_realloc(address, size);
++ return __realloc(address, size);
+ }
+
+ void* GlibcMemalign(const AllocatorDispatch*,
+ size_t alignment,
+ size_t size,
+ void* context) {
+- return __libc_memalign(alignment, size);
++ return __memalign(alignment, size);
+ }
+
+ void GlibcFree(const AllocatorDispatch*, void* address, void* context) {
+- __libc_free(address);
++ __free(address);
+ }
+
+ size_t GlibcGetSizeEstimate(const AllocatorDispatch*,
diff --git a/devel/electron5/files/patch-base_allocator_allocator__shim__override__libc__symbols.h b/devel/electron5/files/patch-base_allocator_allocator__shim__override__libc__symbols.h
new file mode 100644
index 000000000000..d1053bd90377
--- /dev/null
+++ b/devel/electron5/files/patch-base_allocator_allocator__shim__override__libc__symbols.h
@@ -0,0 +1,11 @@
+--- base/allocator/allocator_shim_override_libc_symbols.h.orig 2019-04-08 08:18:04 UTC
++++ base/allocator/allocator_shim_override_libc_symbols.h
+@@ -10,7 +10,7 @@
+ #endif
+ #define BASE_ALLOCATOR_ALLOCATOR_SHIM_OVERRIDE_LIBC_SYMBOLS_H_
+
+-#include <malloc.h>
++#include <stdlib.h>
+
+ #include "base/allocator/allocator_shim_internals.h"
+
diff --git a/devel/electron5/files/patch-base_allocator_allocator__shim__unittest.cc b/devel/electron5/files/patch-base_allocator_allocator__shim__unittest.cc
new file mode 100644
index 000000000000..1d497a5b7fb7
--- /dev/null
+++ b/devel/electron5/files/patch-base_allocator_allocator__shim__unittest.cc
@@ -0,0 +1,36 @@
+--- base/allocator/allocator_shim_unittest.cc.orig 2019-04-08 08:18:04 UTC
++++ base/allocator/allocator_shim_unittest.cc
+@@ -348,7 +348,7 @@ TEST_F(AllocatorShimTest, InterceptLibcSymbols) {
+ ASSERT_GE(aligned_allocs_intercepted_by_size[61], 1u);
+ #endif // !OS_WIN
+
+-#if !defined(OS_WIN) && !defined(OS_MACOSX)
++#if !defined(OS_WIN) && !defined(OS_MACOSX) && !defined(OS_BSD)
+ void* memalign_ptr = memalign(128, 53);
+ ASSERT_NE(nullptr, memalign_ptr);
+ ASSERT_EQ(0u, reinterpret_cast<uintptr_t>(memalign_ptr) % 128);
+@@ -361,7 +361,7 @@ TEST_F(AllocatorShimTest, InterceptLibcSymbols) {
+ ASSERT_GE(aligned_allocs_intercepted_by_alignment[kPageSize], 1u);
+ // pvalloc rounds the size up to the next page.
+ ASSERT_GE(aligned_allocs_intercepted_by_size[kPageSize], 1u);
+-#endif // !OS_WIN && !OS_MACOSX
++#endif // !OS_WIN && !OS_MACOSX && !OS_BSD
+
+ char* realloc_ptr = static_cast<char*>(malloc(10));
+ strcpy(realloc_ptr, "foobar");
+@@ -377,13 +377,13 @@ TEST_F(AllocatorShimTest, InterceptLibcSymbols) {
+ free(zero_alloc_ptr);
+ ASSERT_GE(frees_intercepted_by_addr[Hash(zero_alloc_ptr)], 1u);
+
+-#if !defined(OS_WIN) && !defined(OS_MACOSX)
++#if !defined(OS_WIN) && !defined(OS_MACOSX) && !defined(OS_BSD)
+ free(memalign_ptr);
+ ASSERT_GE(frees_intercepted_by_addr[Hash(memalign_ptr)], 1u);
+
+ free(pvalloc_ptr);
+ ASSERT_GE(frees_intercepted_by_addr[Hash(pvalloc_ptr)], 1u);
+-#endif // !OS_WIN && !OS_MACOSX
++#endif // !OS_WIN && !OS_MACOSX && !OS_BSD
+
+ #if !defined(OS_WIN)
+ free(posix_memalign_ptr);
diff --git a/devel/electron5/files/patch-base_allocator_partition__allocator_page__allocator.cc b/devel/electron5/files/patch-base_allocator_partition__allocator_page__allocator.cc
new file mode 100644
index 000000000000..8cb71cb4f758
--- /dev/null
+++ b/devel/electron5/files/patch-base_allocator_partition__allocator_page__allocator.cc
@@ -0,0 +1,11 @@
+--- base/allocator/partition_allocator/page_allocator.cc.orig 2019-04-08 08:32:37 UTC
++++ base/allocator/partition_allocator/page_allocator.cc
+@@ -115,7 +115,7 @@ void* AllocPages(void* address,
+ uintptr_t align_base_mask = ~align_offset_mask;
+ DCHECK(!(reinterpret_cast<uintptr_t>(address) & align_offset_mask));
+
+-#if defined(OS_LINUX) && defined(ARCH_CPU_64_BITS)
++#if (defined(OS_BSD) || defined(OS_LINUX)) && defined(ARCH_CPU_64_BITS)
+ // On 64 bit Linux, we may need to adjust the address space limit for
+ // guarded allocations.
+ if (length >= kMinimumGuardedMemorySize) {
diff --git a/devel/electron5/files/patch-base_allocator_partition__allocator_page__allocator__internals__posix.h b/devel/electron5/files/patch-base_allocator_partition__allocator_page__allocator__internals__posix.h
new file mode 100644
index 000000000000..e6d032068fcf
--- /dev/null
+++ b/devel/electron5/files/patch-base_allocator_partition__allocator_page__allocator__internals__posix.h
@@ -0,0 +1,38 @@
+--- base/allocator/partition_allocator/page_allocator_internals_posix.h.orig 2019-04-08 08:32:37 UTC
++++ base/allocator/partition_allocator/page_allocator_internals_posix.h
+@@ -14,7 +14,7 @@
+ #if defined(OS_MACOSX)
+ #include <mach/mach.h>
+ #endif
+-#if defined(OS_LINUX)
++#if defined(OS_BSD) || defined(OS_LINUX)
+ #include <sys/resource.h>
+
+ #include <algorithm>
+@@ -48,7 +48,7 @@ int GetAccessFlags(PageAccessibilityConfiguration acce
+ }
+ }
+
+-#if defined(OS_LINUX) && defined(ARCH_CPU_64_BITS)
++#if (defined(OS_BSD) || defined(OS_LINUX)) && defined(ARCH_CPU_64_BITS)
+
+ // Multiple guarded memory regions may exceed the process address space limit.
+ // This function will raise or lower the limit by |amount|.
+@@ -68,7 +68,7 @@ bool AdjustAddressSpaceLimit(int64_t amount) {
+ // schemes that reduce that to 4 GiB.
+ constexpr size_t kMinimumGuardedMemorySize = 1ULL << 32; // 4 GiB
+
+-#endif // defined(OS_LINUX) && defined(ARCH_CPU_64_BITS)
++#endif // (defined(OS_BSD) || defined(OS_LINUX)) && defined(ARCH_CPU_64_BITS)
+
+ void* SystemAllocPagesInternal(void* hint,
+ size_t length,
+@@ -134,7 +134,7 @@ void SetSystemPagesAccessInternal(
+ void FreePagesInternal(void* address, size_t length) {
+ CHECK(!munmap(address, length));
+
+-#if defined(OS_LINUX) && defined(ARCH_CPU_64_BITS)
++#if (defined(OS_BSD) || defined(OS_LINUX)) && defined(ARCH_CPU_64_BITS)
+ // Restore the address space limit.
+ if (length >= kMinimumGuardedMemorySize) {
+ CHECK(AdjustAddressSpaceLimit(-base::checked_cast<int64_t>(length)));
diff --git a/devel/electron5/files/patch-base_debug_debugger__posix.cc b/devel/electron5/files/patch-base_debug_debugger__posix.cc
new file mode 100644
index 000000000000..ac0917a1340f
--- /dev/null
+++ b/devel/electron5/files/patch-base_debug_debugger__posix.cc
@@ -0,0 +1,56 @@
+--- base/debug/debugger_posix.cc.orig 2019-04-08 08:32:37 UTC
++++ base/debug/debugger_posix.cc
+@@ -86,7 +86,7 @@ bool BeingDebugged() {
+ KERN_PROC,
+ KERN_PROC_PID,
+ getpid()
+-#if defined(OS_OPENBSD)
++#if defined(OS_BSD)
+ , sizeof(struct kinfo_proc),
+ 0
+ #endif
+@@ -94,33 +94,35 @@ bool BeingDebugged() {
+
+ // Caution: struct kinfo_proc is marked __APPLE_API_UNSTABLE. The source and
+ // binary interfaces may change.
+- struct kinfo_proc info;
+- size_t info_size = sizeof(info);
++ struct kinfo_proc *info;
++ size_t info_size;
+
+-#if defined(OS_OPENBSD)
+ if (sysctl(mib, base::size(mib), NULL, &info_size, NULL, 0) < 0)
+ return -1;
+
++ info = (struct kinfo_proc *)malloc(info_size);
+ mib[5] = (info_size / sizeof(struct kinfo_proc));
+-#endif
+
+- int sysctl_result = sysctl(mib, base::size(mib), &info, &info_size, NULL, 0);
++ int sysctl_result = sysctl(mib, base::size(mib), info, &info_size, NULL, 0);
+ DCHECK_EQ(sysctl_result, 0);
+ if (sysctl_result != 0) {
+ is_set = true;
+ being_debugged = false;
+- return being_debugged;
++ goto out;
+ }
+
+ // This process is being debugged if the P_TRACED flag is set.
+ is_set = true;
+ #if defined(OS_FREEBSD)
+- being_debugged = (info.ki_flag & P_TRACED) != 0;
++ being_debugged = (info->ki_flag & P_TRACED) != 0;
+ #elif defined(OS_BSD)
+- being_debugged = (info.p_flag & P_TRACED) != 0;
++ being_debugged = (info->p_flag & P_TRACED) != 0;
+ #else
+- being_debugged = (info.kp_proc.p_flag & P_TRACED) != 0;
++ being_debugged = (info->kp_proc.p_flag & P_TRACED) != 0;
+ #endif
++
++out:
++ free(info);
+ return being_debugged;
+ }
+
diff --git a/devel/electron5/files/patch-base_debug_elf__reader__linux.cc b/devel/electron5/files/patch-base_debug_elf__reader__linux.cc
new file mode 100644
index 000000000000..db49f472e43c
--- /dev/null
+++ b/devel/electron5/files/patch-base_debug_elf__reader__linux.cc
@@ -0,0 +1,13 @@
+--- base/debug/elf_reader_linux.cc.orig 2019-04-08 08:32:37 UTC
++++ base/debug/elf_reader_linux.cc
+@@ -41,8 +41,10 @@ Optional<std::string> ElfSegmentBuildIDNoteAsString(co
+ const void* section_end = segment.data() + segment.size_bytes();
+ const Nhdr* note_header = reinterpret_cast<const Nhdr*>(segment.data());
+ while (note_header < section_end) {
++#if !defined(OS_BSD)
+ if (note_header->n_type == NT_GNU_BUILD_ID)
+ break;
++#endif
+ note_header = reinterpret_cast<const Nhdr*>(
+ reinterpret_cast<const char*>(note_header) + sizeof(Nhdr) +
+ bits::Align(note_header->n_namesz, 4) +
diff --git a/devel/electron5/files/patch-base_debug_proc__maps__linux.cc b/devel/electron5/files/patch-base_debug_proc__maps__linux.cc
new file mode 100644
index 000000000000..33d60e4dbaa0
--- /dev/null
+++ b/devel/electron5/files/patch-base_debug_proc__maps__linux.cc
@@ -0,0 +1,11 @@
+--- base/debug/proc_maps_linux.cc.orig 2019-04-08 08:18:04 UTC
++++ base/debug/proc_maps_linux.cc
+@@ -12,7 +12,7 @@
+ #include "base/strings/string_split.h"
+ #include "build/build_config.h"
+
+-#if defined(OS_LINUX) || defined(OS_ANDROID)
++#if defined(OS_LINUX) || defined(OS_BSD) || defined(OS_ANDROID)
+ #include <inttypes.h>
+ #endif
+
diff --git a/devel/electron5/files/patch-base_debug_stack__trace.cc b/devel/electron5/files/patch-base_debug_stack__trace.cc
new file mode 100644
index 000000000000..cee67e9b038d
--- /dev/null
+++ b/devel/electron5/files/patch-base_debug_stack__trace.cc
@@ -0,0 +1,11 @@
+--- base/debug/stack_trace.cc.orig 2019-04-08 08:32:37 UTC
++++ base/debug/stack_trace.cc
+@@ -14,7 +14,7 @@
+
+ #if BUILDFLAG(CAN_UNWIND_WITH_FRAME_POINTERS)
+
+-#if defined(OS_LINUX) || defined(OS_ANDROID)
++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
+ #include <pthread.h>
+ #include "base/process/process_handle.h"
+ #include "base/threading/platform_thread.h"
diff --git a/devel/electron5/files/patch-base_debug_stack__trace.h b/devel/electron5/files/patch-base_debug_stack__trace.h
new file mode 100644
index 000000000000..8d02d84ef1a6
--- /dev/null
+++ b/devel/electron5/files/patch-base_debug_stack__trace.h
@@ -0,0 +1,10 @@
+--- base/debug/stack_trace.h.orig 2019-04-08 08:32:37 UTC
++++ base/debug/stack_trace.h
+@@ -16,6 +16,7 @@
+ #include "build/build_config.h"
+
+ #if defined(OS_POSIX)
++#include <sys/stdint.h>
+ #include <unistd.h>
+ #endif
+
diff --git a/devel/electron5/files/patch-base_debug_stack__trace__posix.cc b/devel/electron5/files/patch-base_debug_stack__trace__posix.cc
new file mode 100644
index 000000000000..dc903fb4e662
--- /dev/null
+++ b/devel/electron5/files/patch-base_debug_stack__trace__posix.cc
@@ -0,0 +1,31 @@
+--- base/debug/stack_trace_posix.cc.orig 2019-04-08 08:32:37 UTC
++++ base/debug/stack_trace_posix.cc
+@@ -35,7 +35,7 @@
+ #include <AvailabilityMacros.h>
+ #endif
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include "base/debug/proc_maps_linux.h"
+ #endif
+
+@@ -653,6 +653,11 @@ class SandboxSymbolizeHelper {
+ // for the modules that are loaded in the current process.
+ // Returns true on success.
+ bool CacheMemoryRegions() {
++#if defined(OS_BSD)
++ // TODO (rene) avoid link error, implement something?
++ NOTIMPLEMENTED();
++ return false;
++#else
+ // Reads /proc/self/maps.
+ std::string contents;
+ if (!ReadProcMaps(&contents)) {
+@@ -670,6 +675,7 @@ class SandboxSymbolizeHelper {
+
+ is_initialized_ = true;
+ return true;
++#endif
+ }
+
+ // Opens all object files and caches their file descriptors.
diff --git a/devel/electron5/files/patch-base_files_file__path__unittest.cc b/devel/electron5/files/patch-base_files_file__path__unittest.cc
new file mode 100644
index 000000000000..127fe7b8c491
--- /dev/null
+++ b/devel/electron5/files/patch-base_files_file__path__unittest.cc
@@ -0,0 +1,11 @@
+--- base/files/file_path_unittest.cc.orig 2019-04-08 08:32:37 UTC
++++ base/files/file_path_unittest.cc
+@@ -1138,7 +1138,7 @@ TEST_F(FilePathTest, FromUTF8Unsafe_And_AsUTF8Unsafe)
+ "\xEF\xBC\xA1\xEF\xBC\xA2\xEF\xBC\xA3.txt" },
+ };
+
+-#if !defined(SYSTEM_NATIVE_UTF8) && defined(OS_LINUX)
++#if !defined(SYSTEM_NATIVE_UTF8) && (defined(OS_LINUX) || defined(OS_BSD))
+ ScopedLocale locale("en_US.UTF-8");
+ #endif
+
diff --git a/devel/electron5/files/patch-base_files_file__path__watcher__kqueue.h b/devel/electron5/files/patch-base_files_file__path__watcher__kqueue.h
new file mode 100644
index 000000000000..9be1f3928117
--- /dev/null
+++ b/devel/electron5/files/patch-base_files_file__path__watcher__kqueue.h
@@ -0,0 +1,13 @@
+--- base/files/file_path_watcher_kqueue.h.orig 2019-04-08 08:18:04 UTC
++++ base/files/file_path_watcher_kqueue.h
+@@ -5,6 +5,10 @@
+ #ifndef BASE_FILES_FILE_PATH_WATCHER_KQUEUE_H_
+ #define BASE_FILES_FILE_PATH_WATCHER_KQUEUE_H_
+
++#ifdef __FreeBSD__
++#include <sys/stdint.h>
++#include <sys/types.h>
++#endif
+ #include <sys/event.h>
+
+ #include <memory>
diff --git a/devel/electron5/files/patch-base_files_file__path__watcher__stub.cc b/devel/electron5/files/patch-base_files_file__path__watcher__stub.cc
new file mode 100644
index 000000000000..239dc46bd460
--- /dev/null
+++ b/devel/electron5/files/patch-base_files_file__path__watcher__stub.cc
@@ -0,0 +1,51 @@
+--- base/files/file_path_watcher_stub.cc.orig 2019-04-08 08:18:04 UTC
++++ base/files/file_path_watcher_stub.cc
+@@ -1,14 +1,15 @@
+-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
++// Copyright 2014 The Chromium Authors. All rights reserved.
+ // Use of this source code is governed by a BSD-style license that can be
+ // found in the LICENSE file.
+
+-// This file exists for Unix systems which don't have the inotify headers, and
+-// thus cannot build file_watcher_inotify.cc
+
+-#include "base/files/file_path_watcher.h"
++#include <memory>
+
++#include "base/files/file_path_watcher.h"
++#include "base/files/file_path_watcher_kqueue.h"
+ #include "base/macros.h"
+ #include "base/memory/ptr_util.h"
++#include "build/build_config.h"
+
+ namespace base {
+
+@@ -22,12 +23,26 @@ class FilePathWatcherImpl : public FilePathWatcher::Pl
+ bool Watch(const FilePath& path,
+ bool recursive,
+ const FilePathWatcher::Callback& callback) override {
+- return false;
++ DCHECK(!impl_.get());
++ if (recursive) {
++ if (!FilePathWatcher::RecursiveWatchAvailable())
++ return false;
++ } else {
++ impl_ = std::make_unique<FilePathWatcherKQueue>();
++ }
++ DCHECK(impl_.get());
++ return impl_->Watch(path, recursive, callback);
+ }
+
+- void Cancel() override {}
++ void Cancel() override {
++ if (impl_.get())
++ impl_->Cancel();
++ set_cancelled();
++ }
+
+ private:
++ std::unique_ptr<PlatformDelegate> impl_;
++
+ DISALLOW_COPY_AND_ASSIGN(FilePathWatcherImpl);
+ };
+
diff --git a/devel/electron5/files/patch-base_files_file__path__watcher__unittest.cc b/devel/electron5/files/patch-base_files_file__path__watcher__unittest.cc
new file mode 100644
index 000000000000..42bc5b3cc63c
--- /dev/null
+++ b/devel/electron5/files/patch-base_files_file__path__watcher__unittest.cc
@@ -0,0 +1,11 @@
+--- base/files/file_path_watcher_unittest.cc.orig 2019-04-08 08:18:04 UTC
++++ base/files/file_path_watcher_unittest.cc
+@@ -436,7 +436,7 @@ TEST_F(FilePathWatcherTest, WatchDirectory) {
+ VLOG(1) << "Waiting for file1 creation";
+ ASSERT_TRUE(WaitForEvents());
+
+-#if !defined(OS_MACOSX)
++#if !defined(OS_MACOSX) && !defined(OS_BSD)
+ // Mac implementation does not detect files modified in a directory.
+ ASSERT_TRUE(WriteFile(file1, "content v2"));
+ VLOG(1) << "Waiting for file1 modification";
diff --git a/devel/electron5/files/patch-base_files_file__util.h b/devel/electron5/files/patch-base_files_file__util.h
new file mode 100644
index 000000000000..c74fb49a2fcc
--- /dev/null
+++ b/devel/electron5/files/patch-base_files_file__util.h
@@ -0,0 +1,11 @@
+--- base/files/file_util.h.orig 2019-04-08 08:32:37 UTC
++++ base/files/file_util.h
+@@ -445,7 +445,7 @@ BASE_EXPORT bool VerifyPathControlledByAdmin(const bas
+ // the directory |path|, in the number of FilePath::CharType, or -1 on failure.
+ BASE_EXPORT int GetMaximumPathComponentLength(const base::FilePath& path);
+
+-#if defined(OS_LINUX) || defined(OS_AIX)
++#if defined(OS_LINUX) || defined(OS_AIX) || defined(OS_BSD)
+ // Broad categories of file systems as returned by statfs() on Linux.
+ enum FileSystemType {
+ FILE_SYSTEM_UNKNOWN, // statfs failed.
diff --git a/devel/electron5/files/patch-base_files_file__util__posix.cc b/devel/electron5/files/patch-base_files_file__util__posix.cc
new file mode 100644
index 000000000000..88e632aa3dc8
--- /dev/null
+++ b/devel/electron5/files/patch-base_files_file__util__posix.cc
@@ -0,0 +1,11 @@
+--- base/files/file_util_posix.cc.orig 2019-04-08 08:32:37 UTC
++++ base/files/file_util_posix.cc
+@@ -407,7 +407,7 @@ bool CopyDirectoryExcl(const FilePath& from_path,
+ #endif // !defined(OS_NACL_NONSFI)
+
+ bool CreateLocalNonBlockingPipe(int fds[2]) {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ return pipe2(fds, O_CLOEXEC | O_NONBLOCK) == 0;
+ #else
+ int raw_fds[2];
diff --git a/devel/electron5/files/patch-base_files_memory__mapped__file__posix.cc b/devel/electron5/files/patch-base_files_memory__mapped__file__posix.cc
new file mode 100644
index 000000000000..0f8e33ab197c
--- /dev/null
+++ b/devel/electron5/files/patch-base_files_memory__mapped__file__posix.cc
@@ -0,0 +1,11 @@
+--- base/files/memory_mapped_file_posix.cc.orig 2019-04-08 08:32:37 UTC
++++ base/files/memory_mapped_file_posix.cc
+@@ -110,6 +110,8 @@ bool MemoryMappedFile::MapFileRegionToMemory(
+ // Only Android API>=21 supports the fallocate call. Older versions need
+ // to manually extend the file by writing zeros at block intervals.
+ do_manual_extension = true;
++#elif defined(OS_BSD)
++ do_manual_extension = true;
+ #elif defined(OS_MACOSX)
+ // MacOS doesn't support fallocate even though their new APFS filesystem
+ // does support sparse files. It does, however, have the functionality
diff --git a/devel/electron5/files/patch-base_i18n_icu__util.cc b/devel/electron5/files/patch-base_i18n_icu__util.cc
new file mode 100644
index 000000000000..0cd66ee1ccfa
--- /dev/null
+++ b/devel/electron5/files/patch-base_i18n_icu__util.cc
@@ -0,0 +1,20 @@
+--- base/i18n/icu_util.cc.orig 2019-04-08 08:32:37 UTC
++++ base/i18n/icu_util.cc
+@@ -20,7 +20,7 @@
+ #include "build/build_config.h"
+ #include "third_party/icu/source/common/unicode/putil.h"
+ #include "third_party/icu/source/common/unicode/udata.h"
+-#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_ANDROID)
++#if (defined(OS_LINUX) || defined(OS_BSD) && !defined(OS_CHROMEOS)) || defined(OS_ANDROID)
+ #include "third_party/icu/source/i18n/unicode/timezone.h"
+ #endif
+
+@@ -315,7 +315,7 @@ bool InitializeICU() {
+ // TODO(jungshik): Some callers do not care about tz at all. If necessary,
+ // add a boolean argument to this function to init'd the default tz only
+ // when requested.
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ if (result)
+ std::unique_ptr<icu::TimeZone> zone(icu::TimeZone::createDefault());
+ #endif
diff --git a/devel/electron5/files/patch-base_linux__util.cc b/devel/electron5/files/patch-base_linux__util.cc
new file mode 100644
index 000000000000..4cf4d2a2b179
--- /dev/null
+++ b/devel/electron5/files/patch-base_linux__util.cc
@@ -0,0 +1,18 @@
+--- base/linux_util.cc.orig 2019-04-08 08:18:04 UTC
++++ base/linux_util.cc
+@@ -90,12 +90,14 @@ char g_linux_distro[kDistroSize] =
+ "CrOS";
+ #elif defined(OS_ANDROID)
+ "Android";
++#elif defined(OS_BSD)
++ "BSD";
+ #else // if defined(OS_LINUX)
+ "Unknown";
+ #endif
+
+ std::string GetLinuxDistro() {
+-#if defined(OS_CHROMEOS) || defined(OS_ANDROID)
++#if defined(OS_CHROMEOS) || defined(OS_ANDROID) || defined(OS_BSD)
+ return g_linux_distro;
+ #elif defined(OS_LINUX)
+ LinuxDistroHelper* distro_state_singleton = LinuxDistroHelper::GetInstance();
diff --git a/devel/electron5/files/patch-base_logging__unittest.cc b/devel/electron5/files/patch-base_logging__unittest.cc
new file mode 100644
index 000000000000..ee3a6e93eb8c
--- /dev/null
+++ b/devel/electron5/files/patch-base_logging__unittest.cc
@@ -0,0 +1,11 @@
+--- base/logging_unittest.cc.orig 2019-04-08 08:32:37 UTC
++++ base/logging_unittest.cc
+@@ -420,7 +420,7 @@ void CheckCrashTestSighandler(int, siginfo_t* info, vo
+ // need the arch-specific boilerplate below, which is inspired by breakpad.
+ // At the same time, on OSX, ucontext.h is deprecated but si_addr works fine.
+ uintptr_t crash_addr = 0;
+-#if defined(OS_MACOSX)
++#if defined(OS_MACOSX) || defined(OS_BSD)
+ crash_addr = reinterpret_cast<uintptr_t>(info->si_addr);
+ #else // OS_POSIX && !OS_MACOSX
+ ucontext_t* context = reinterpret_cast<ucontext_t*>(context_ptr);
diff --git a/devel/electron5/files/patch-base_native__library__posix.cc b/devel/electron5/files/patch-base_native__library__posix.cc
new file mode 100644
index 000000000000..212b19516b56
--- /dev/null
+++ b/devel/electron5/files/patch-base_native__library__posix.cc
@@ -0,0 +1,11 @@
+--- base/native_library_posix.cc.orig 2019-04-08 08:32:37 UTC
++++ base/native_library_posix.cc
+@@ -29,7 +29,7 @@ NativeLibrary LoadNativeLibraryWithOptions(const FileP
+ // http://crbug.com/17943, http://crbug.com/17557, http://crbug.com/36892,
+ // and http://crbug.com/40794.
+ int flags = RTLD_LAZY;
+-#if defined(OS_ANDROID) || !defined(RTLD_DEEPBIND)
++#if defined(OS_ANDROID) || !defined(RTLD_DEEPBIND) || defined(OS_BSD)
+ // Certain platforms don't define RTLD_DEEPBIND. Android dlopen() requires
+ // further investigation, as it might vary across versions. Crash here to
+ // warn developers that they're trying to rely on uncertain behavior.
diff --git a/devel/electron5/files/patch-base_native__library__unittest.cc b/devel/electron5/files/patch-base_native__library__unittest.cc
new file mode 100644
index 000000000000..7db5291a1f3f
--- /dev/null
+++ b/devel/electron5/files/patch-base_native__library__unittest.cc
@@ -0,0 +1,11 @@
+--- base/native_library_unittest.cc.orig 2019-04-08 08:18:04 UTC
++++ base/native_library_unittest.cc
+@@ -120,7 +120,7 @@ TEST(NativeLibraryTest, LoadLibrary) {
+ // Android dlopen() requires further investigation, as it might vary across
+ // versions with respect to symbol resolution scope.
+ // TSan and MSan error out on RTLD_DEEPBIND, https://crbug.com/705255
+-#if !defined(OS_ANDROID) && !defined(THREAD_SANITIZER) && \
++#if !defined(OS_ANDROID) && !defined(OS_BSD) && !defined(THREAD_SANITIZER) && \
+ !defined(MEMORY_SANITIZER)
+
+ // Verifies that the |prefer_own_symbols| option satisfies its guarantee that
diff --git a/devel/electron5/files/patch-base_numerics_safe__math__shared__impl.h b/devel/electron5/files/patch-base_numerics_safe__math__shared__impl.h
new file mode 100644
index 000000000000..ee762dc89b74
--- /dev/null
+++ b/devel/electron5/files/patch-base_numerics_safe__math__shared__impl.h
@@ -0,0 +1,13 @@
+--- base/numerics/safe_math_shared_impl.h.orig 2019-04-08 08:18:04 UTC
++++ base/numerics/safe_math_shared_impl.h
+@@ -19,9 +19,7 @@
+
+ // Where available use builtin math overflow support on Clang and GCC.
+ #if !defined(__native_client__) && \
+- ((defined(__clang__) && \
+- ((__clang_major__ > 3) || \
+- (__clang_major__ == 3 && __clang_minor__ >= 4))) || \
++ ((defined(__clang__) && (__clang_major__ > 6)) || \
+ (defined(__GNUC__) && __GNUC__ >= 5))
+ #include "base/numerics/safe_math_clang_gcc_impl.h"
+ #define BASE_HAS_OPTIMIZED_SAFE_MATH (1)
diff --git a/devel/electron5/files/patch-base_posix_can__lower__nice__to.cc b/devel/electron5/files/patch-base_posix_can__lower__nice__to.cc
new file mode 100644
index 000000000000..18311971adda
--- /dev/null
+++ b/devel/electron5/files/patch-base_posix_can__lower__nice__to.cc
@@ -0,0 +1,20 @@
+--- base/posix/can_lower_nice_to.cc.orig 2019-04-08 08:18:04 UTC
++++ base/posix/can_lower_nice_to.cc
+@@ -31,6 +31,9 @@ bool CanLowerNiceTo(int nice_value) {
+ if (geteuid() == 0)
+ return true;
+
++#if defined(OS_BSD)
++ return false;
++#else
+ // 2. Skip checking the CAP_SYS_NICE permission because it would require
+ // libcap.so.
+
+@@ -54,6 +57,7 @@ bool CanLowerNiceTo(int nice_value) {
+ // And lowering niceness to |nice_value| is allowed if it is greater than or
+ // equal to the limit:
+ return nice_value >= lowest_nice_allowed;
++#endif
+ }
+
+ } // namespace internal
diff --git a/devel/electron5/files/patch-base_posix_unix__domain__socket.cc b/devel/electron5/files/patch-base_posix_unix__domain__socket.cc
new file mode 100644
index 000000000000..62eea4ed56e5
--- /dev/null
+++ b/devel/electron5/files/patch-base_posix_unix__domain__socket.cc
@@ -0,0 +1,49 @@
+--- base/posix/unix_domain_socket.cc.orig 2019-04-08 08:18:04 UTC
++++ base/posix/unix_domain_socket.cc
+@@ -5,7 +5,10 @@
+ #include "base/posix/unix_domain_socket.h"
+
+ #include <errno.h>
++#include <sys/param.h>
+ #include <sys/socket.h>
++#include <sys/types.h>
++#include <sys/ucred.h>
+ #if !defined(OS_NACL_NONSFI)
+ #include <sys/un.h>
+ #endif
+@@ -28,6 +31,14 @@ namespace base {
+
+ const size_t UnixDomainSocket::kMaxFileDescriptors = 16;
+
++#ifndef SCM_CREDENTIALS
++# define SCM_CREDENTIALS 0x9001
++#endif
++
++#ifndef SO_PASSCRED
++# define SO_PASSCRED 0x9002
++#endif
++
+ #if !defined(OS_NACL_NONSFI)
+ bool CreateSocketPair(ScopedFD* one, ScopedFD* two) {
+ int raw_socks[2];
+@@ -150,7 +161,7 @@ ssize_t UnixDomainSocket::RecvMsgWithFlags(int fd,
+ #if !defined(OS_NACL_NONSFI) && !defined(OS_MACOSX)
+ // The PNaCl toolchain for Non-SFI binary build and macOS do not support
+ // ucred. macOS supports xucred, but this structure is insufficient.
+- + CMSG_SPACE(sizeof(struct ucred))
++ + CMSG_SPACE(sizeof(struct cmsgcred))
+ #endif // OS_NACL_NONSFI or OS_MACOSX
+ ;
+ char control_buffer[kControlBufferSize];
+@@ -180,9 +191,9 @@ ssize_t UnixDomainSocket::RecvMsgWithFlags(int fd,
+ // SCM_CREDENTIALS.
+ if (cmsg->cmsg_level == SOL_SOCKET &&
+ cmsg->cmsg_type == SCM_CREDENTIALS) {
+- DCHECK_EQ(payload_len, sizeof(struct ucred));
++ DCHECK_EQ(payload_len, sizeof(struct cmsgcred));
+ DCHECK_EQ(pid, -1);
+- pid = reinterpret_cast<struct ucred*>(CMSG_DATA(cmsg))->pid;
++ pid = getpid();
+ }
+ #endif // !defined(OS_NACL_NONSFI) && !defined(OS_MACOSX)
+ }
diff --git a/devel/electron5/files/patch-base_posix_unix__domain__socket__unittest.cc b/devel/electron5/files/patch-base_posix_unix__domain__socket__unittest.cc
new file mode 100644
index 000000000000..a1e580979139
--- /dev/null
+++ b/devel/electron5/files/patch-base_posix_unix__domain__socket__unittest.cc
@@ -0,0 +1,12 @@
+--- base/posix/unix_domain_socket_unittest.cc.orig 2019-04-08 08:18:04 UTC
++++ base/posix/unix_domain_socket_unittest.cc
+@@ -8,6 +8,9 @@
+ #include <stdint.h>
+ #include <sys/socket.h>
+ #include <sys/types.h>
++#if defined(OS_BSD)
++#include <signal.h>
++#endif
+ #include <unistd.h>
+
+ #include "base/bind.h"
diff --git a/devel/electron5/files/patch-base_process_internal__linux.cc b/devel/electron5/files/patch-base_process_internal__linux.cc
new file mode 100644
index 000000000000..1f3b09942315
--- /dev/null
+++ b/devel/electron5/files/patch-base_process_internal__linux.cc
@@ -0,0 +1,16 @@
+--- base/process/internal_linux.cc.orig 2019-04-08 08:32:37 UTC
++++ base/process/internal_linux.cc
+@@ -60,10 +60,13 @@ bool ReadProcFile(const FilePath& file, std::string* b
+ // Synchronously reading files in /proc is safe.
+ ThreadRestrictions::ScopedAllowIO allow_io;
+
++#if !defined(OS_BSD)
+ if (!ReadFileToString(file, buffer)) {
+ DLOG(WARNING) << "Failed to read " << file.MaybeAsASCII();
+ return false;
+ }
++#endif
++
+ return !buffer->empty();
+ }
+
diff --git a/devel/electron5/files/patch-base_process_internal__linux.h b/devel/electron5/files/patch-base_process_internal__linux.h
new file mode 100644
index 000000000000..7fa2057432d1
--- /dev/null
+++ b/devel/electron5/files/patch-base_process_internal__linux.h
@@ -0,0 +1,11 @@
+--- base/process/internal_linux.h.orig 2019-04-08 08:18:04 UTC
++++ base/process/internal_linux.h
+@@ -14,6 +14,8 @@
+
+ #include "base/files/file_path.h"
+
++#include <unistd.h> /* pid_t */
++
+ namespace base {
+
+ class Time;
diff --git a/devel/electron5/files/patch-base_process_kill.h b/devel/electron5/files/patch-base_process_kill.h
new file mode 100644
index 000000000000..a28456099a7f
--- /dev/null
+++ b/devel/electron5/files/patch-base_process_kill.h
@@ -0,0 +1,11 @@
+--- base/process/kill.h.orig 2019-04-08 08:18:04 UTC
++++ base/process/kill.h
+@@ -111,7 +111,7 @@ BASE_EXPORT TerminationStatus GetTerminationStatus(Pro
+ BASE_EXPORT TerminationStatus GetKnownDeadTerminationStatus(
+ ProcessHandle handle, int* exit_code);
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Spawns a thread to wait asynchronously for the child |process| to exit
+ // and then reaps it.
+ BASE_EXPORT void EnsureProcessGetsReaped(Process process);
diff --git a/devel/electron5/files/patch-base_process_kill__posix.cc b/devel/electron5/files/patch-base_process_kill__posix.cc
new file mode 100644
index 000000000000..5e93abfef215
--- /dev/null
+++ b/devel/electron5/files/patch-base_process_kill__posix.cc
@@ -0,0 +1,11 @@
+--- base/process/kill_posix.cc.orig 2019-04-08 08:18:04 UTC
++++ base/process/kill_posix.cc
+@@ -168,7 +168,7 @@ void EnsureProcessTerminated(Process process) {
+ 0, new BackgroundReaper(std::move(process), TimeDelta::FromSeconds(2)));
+ }
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ void EnsureProcessGetsReaped(Process process) {
+ DCHECK(!process.is_current());
+
diff --git a/devel/electron5/files/patch-base_process_launch.cc b/devel/electron5/files/patch-base_process_launch.cc
new file mode 100644
index 000000000000..6e365ec7c362
--- /dev/null
+++ b/devel/electron5/files/patch-base_process_launch.cc
@@ -0,0 +1,11 @@
+--- base/process/launch.cc.orig 2019-04-08 08:18:04 UTC
++++ base/process/launch.cc
+@@ -15,7 +15,7 @@ LaunchOptions::~LaunchOptions() = default;
+
+ LaunchOptions LaunchOptionsForTest() {
+ LaunchOptions options;
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // To prevent accidental privilege sharing to an untrusted child, processes
+ // are started with PR_SET_NO_NEW_PRIVS. Do not set that here, since this
+ // new child will be used for testing only.
diff --git a/devel/electron5/files/patch-base_process_launch.h b/devel/electron5/files/patch-base_process_launch.h
new file mode 100644
index 000000000000..acc8bd6739e9
--- /dev/null
+++ b/devel/electron5/files/patch-base_process_launch.h
@@ -0,0 +1,20 @@
+--- base/process/launch.h.orig 2019-04-08 08:32:37 UTC
++++ base/process/launch.h
+@@ -175,7 +175,7 @@ struct BASE_EXPORT LaunchOptions {
+ FileHandleMappingVector fds_to_remap;
+ #endif // defined(OS_WIN)
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // If non-zero, start the process using clone(), using flags as provided.
+ // Unlike in clone, clone_flags may not contain a custom termination signal
+ // that is sent to the parent when the child dies. The termination signal will
+@@ -188,7 +188,7 @@ struct BASE_EXPORT LaunchOptions {
+
+ // Sets parent process death signal to SIGKILL.
+ bool kill_on_parent_death = false;
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+
+ #if defined(OS_FUCHSIA)
+ // If valid, launches the application in that job object.
diff --git a/devel/electron5/files/patch-base_process_launch__posix.cc b/devel/electron5/files/patch-base_process_launch__posix.cc
new file mode 100644
index 000000000000..4820ed1c9a8b
--- /dev/null
+++ b/devel/electron5/files/patch-base_process_launch__posix.cc
@@ -0,0 +1,10 @@
+--- base/process/launch_posix.cc.orig 2019-04-08 08:32:37 UTC
++++ base/process/launch_posix.cc
+@@ -64,6 +64,7 @@
+ #error "macOS should use launch_mac.cc"
+ #endif
+
++#pragma weak environ
+ extern char** environ;
+
+ namespace base {
diff --git a/devel/electron5/files/patch-base_process_memory.cc b/devel/electron5/files/patch-base_process_memory.cc
new file mode 100644
index 000000000000..a38c435dfdf6
--- /dev/null
+++ b/devel/electron5/files/patch-base_process_memory.cc
@@ -0,0 +1,20 @@
+--- base/process/memory.cc.orig 2019-04-08 08:18:04 UTC
++++ base/process/memory.cc
+@@ -10,7 +10,7 @@
+ namespace base {
+
+ // Defined in memory_win.cc for Windows.
+-#if !defined(OS_WIN)
++#if !defined(OS_WIN) && !defined(OS_BSD)
+
+ namespace {
+
+@@ -31,7 +31,7 @@ void TerminateBecauseOutOfMemory(size_t size) {
+ #endif
+
+ // Defined in memory_mac.mm for Mac.
+-#if !defined(OS_MACOSX)
++#if !defined(OS_MACOSX) && !defined(OS_BSD)
+
+ bool UncheckedCalloc(size_t num_items, size_t size, void** result) {
+ const size_t alloc_size = num_items * size;
diff --git a/devel/electron5/files/patch-base_process_memory.h b/devel/electron5/files/patch-base_process_memory.h
new file mode 100644
index 000000000000..92f404bedfdd
--- /dev/null
+++ b/devel/electron5/files/patch-base_process_memory.h
@@ -0,0 +1,11 @@
+--- base/process/memory.h.orig 2019-04-08 08:18:04 UTC
++++ base/process/memory.h
+@@ -32,7 +32,7 @@ BASE_EXPORT void EnableTerminationOnOutOfMemory();
+ // Crash reporting classifies such crashes as OOM.
+ BASE_EXPORT void TerminateBecauseOutOfMemory(size_t size);
+
+-#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_AIX)
++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_AIX) || defined(OS_BSD)
+ BASE_EXPORT extern size_t g_oom_size;
+
+ // The maximum allowed value for the OOM score.
diff --git a/devel/electron5/files/patch-base_process_memory__unittest.cc b/devel/electron5/files/patch-base_process_memory__unittest.cc
new file mode 100644
index 000000000000..9833e91ea0f3
--- /dev/null
+++ b/devel/electron5/files/patch-base_process_memory__unittest.cc
@@ -0,0 +1,18 @@
+--- base/process/memory_unittest.cc.orig 2019-04-08 08:18:04 UTC
++++ base/process/memory_unittest.cc
+@@ -104,7 +104,7 @@ TEST(MemoryTest, AllocatorShimWorking) {
+ // OpenBSD does not support these tests. Don't test these on ASan/TSan/MSan
+ // configurations: only test the real allocator.
+ // Windows only supports these tests with the allocator shim in place.
+-#if !defined(OS_OPENBSD) && BUILDFLAG(USE_ALLOCATOR_SHIM) && \
++#if !defined(OS_BSD) && BUILDFLAG(USE_ALLOCATOR_SHIM) && \
+ !defined(MEMORY_TOOL_REPLACES_ALLOCATOR)
+
+ namespace {
+@@ -529,5 +529,5 @@ TEST_F(OutOfMemoryHandledTest, UncheckedCalloc) {
+ EXPECT_FALSE(base::UncheckedCalloc(1, test_size_, &value_));
+ EXPECT_TRUE(value_ == nullptr);
+ }
+-#endif // !defined(OS_OPENBSD) && BUILDFLAG(ENABLE_WIN_ALLOCATOR_SHIM_TESTS) &&
++#endif // !defined(OS_BSD) && BUILDFLAG(ENABLE_WIN_ALLOCATOR_SHIM_TESTS) &&
+ // !defined(MEMORY_TOOL_REPLACES_ALLOCATOR)
diff --git a/devel/electron5/files/patch-base_process_process__handle.cc b/devel/electron5/files/patch-base_process_process__handle.cc
new file mode 100644
index 000000000000..f450e6993dbd
--- /dev/null
+++ b/devel/electron5/files/patch-base_process_process__handle.cc
@@ -0,0 +1,11 @@
+--- base/process/process_handle.cc.orig 2019-04-08 08:18:04 UTC
++++ base/process/process_handle.cc
+@@ -39,7 +39,7 @@ uint32_t GetUniqueIdForProcess() {
+ return g_unique_id;
+ }
+
+-#if defined(OS_LINUX) || defined(OS_AIX)
++#if defined(OS_LINUX) || defined(OS_AIX) || defined(OS_BSD)
+
+ void InitUniqueIdForProcessInPidNamespace(ProcessId pid_outside_of_namespace) {
+ g_unique_id = MangleProcessId(pid_outside_of_namespace);
diff --git a/devel/electron5/files/patch-base_process_process__handle.h b/devel/electron5/files/patch-base_process_process__handle.h
new file mode 100644
index 000000000000..fe93ce086be5
--- /dev/null
+++ b/devel/electron5/files/patch-base_process_process__handle.h
@@ -0,0 +1,11 @@
+--- base/process/process_handle.h.orig 2019-04-08 08:18:04 UTC
++++ base/process/process_handle.h
+@@ -64,7 +64,7 @@ BASE_EXPORT ProcessId GetCurrentProcId();
+ // a process's PID.
+ BASE_EXPORT uint32_t GetUniqueIdForProcess();
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // When a process is started in a different PID namespace from the browser
+ // process, this function must be called with the process's PID in the browser's
+ // PID namespace in order to initialize its unique ID. Not thread safe.
diff --git a/devel/electron5/files/patch-base_process_process__handle__freebsd.cc b/devel/electron5/files/patch-base_process_process__handle__freebsd.cc
new file mode 100644
index 000000000000..cbeaad7c83de
--- /dev/null
+++ b/devel/electron5/files/patch-base_process_process__handle__freebsd.cc
@@ -0,0 +1,17 @@
+--- base/process/process_handle_freebsd.cc.orig 2019-04-08 08:18:04 UTC
++++ base/process/process_handle_freebsd.cc
+@@ -16,10 +16,13 @@ namespace base {
+
+ ProcessId GetParentProcessId(ProcessHandle process) {
+ struct kinfo_proc info;
+- size_t length;
++ size_t length = sizeof(struct kinfo_proc);
+ int mib[] = { CTL_KERN, KERN_PROC, KERN_PROC_PID, process };
+
+ if (sysctl(mib, base::size(mib), &info, &length, NULL, 0) < 0)
++ return -1;
++
++ if (length < sizeof(struct kinfo_proc))
+ return -1;
+
+ return info.ki_ppid;
diff --git a/devel/electron5/files/patch-base_process_process__iterator__freebsd.cc b/devel/electron5/files/patch-base_process_process__iterator__freebsd.cc
new file mode 100644
index 000000000000..cc0356e511c7
--- /dev/null
+++ b/devel/electron5/files/patch-base_process_process__iterator__freebsd.cc
@@ -0,0 +1,44 @@
+--- base/process/process_iterator_freebsd.cc.orig 2019-04-08 08:18:04 UTC
++++ base/process/process_iterator_freebsd.cc
+@@ -10,6 +10,10 @@
+ #include <sys/sysctl.h>
+ #include <unistd.h>
+
++/* getuid() */
++#include <unistd.h>
++#include <sys/types.h>
++
+ #include "base/logging.h"
+ #include "base/stl_util.h"
+ #include "base/strings/string_split.h"
+@@ -40,7 +44,7 @@ ProcessIterator::ProcessIterator(const ProcessFilter*
+ num_of_kinfo_proc += 16;
+ kinfo_procs_.resize(num_of_kinfo_proc);
+ len = num_of_kinfo_proc * sizeof(struct kinfo_proc);
+- if (sysctl(mib, base::size(mib), &kinfo_procs_[0], &len, NULL, 0) < 0) {
++ if (sysctl(mib, base::size(mib), kinfo_procs_.data(), &len, NULL, 0) < 0) {
+ // If we get a mem error, it just means we need a bigger buffer, so
+ // loop around again. Anything else is a real error and give up.
+ if (errno != ENOMEM) {
+@@ -72,18 +76,13 @@ bool ProcessIterator::CheckForNextProcess() {
+ for (; index_of_kinfo_proc_ < kinfo_procs_.size(); ++index_of_kinfo_proc_) {
+ size_t length;
+ struct kinfo_proc kinfo = kinfo_procs_[index_of_kinfo_proc_];
+- int mib[] = { CTL_KERN, KERN_PROC_ARGS, kinfo.ki_pid };
++ int mib[] = { CTL_KERN, KERN_PROC, KERN_PROC_ARGS, kinfo.ki_pid };
+
+ if ((kinfo.ki_pid > 0) && (kinfo.ki_stat == SZOMB))
+ continue;
+
+- length = 0;
+- if (sysctl(mib, base::size(mib), NULL, &length, NULL, 0) < 0) {
+- LOG(ERROR) << "failed to figure out the buffer size for a command line";
+- continue;
+- }
+-
+- data.resize(length);
++ data.resize(ARG_MAX);
++ length = ARG_MAX;
+
+ if (sysctl(mib, base::size(mib), &data[0], &length, NULL, 0) < 0) {
+ LOG(ERROR) << "failed to fetch a commandline";
diff --git a/devel/electron5/files/patch-base_process_process__linux.cc b/devel/electron5/files/patch-base_process_process__linux.cc
new file mode 100644
index 000000000000..f27dd887f45c
--- /dev/null
+++ b/devel/electron5/files/patch-base_process_process__linux.cc
@@ -0,0 +1,18 @@
+--- base/process/process_linux.cc.orig 2019-04-08 08:32:37 UTC
++++ base/process/process_linux.cc
+@@ -88,6 +88,7 @@ Time Process::CreationTime() const {
+ return Time(boot_time + start_offset);
+ }
+
++#if !defined(OS_BSD)
+ // static
+ bool Process::CanBackgroundProcesses() {
+ #if defined(OS_CHROMEOS)
+@@ -139,6 +140,7 @@ bool Process::SetProcessBackgrounded(bool background)
+ DPCHECK(result == 0);
+ return result == 0;
+ }
++#endif // !defined(OS_BSD)
+
+ #if defined(OS_CHROMEOS)
+ bool IsProcessBackgroundedCGroup(const StringPiece& cgroup_contents) {
diff --git a/devel/electron5/files/patch-base_process_process__metrics.cc b/devel/electron5/files/patch-base_process_process__metrics.cc
new file mode 100644
index 000000000000..b070a2cc0387
--- /dev/null
+++ b/devel/electron5/files/patch-base_process_process__metrics.cc
@@ -0,0 +1,20 @@
+--- base/process/process_metrics.cc.orig 2019-04-08 08:32:37 UTC
++++ base/process/process_metrics.cc
+@@ -126,7 +126,7 @@ double ProcessMetrics::GetPlatformIndependentCPUUsage(
+ }
+ #endif
+
+-#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_AIX)
++#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_AIX) || defined(OS_BSD)
+ int ProcessMetrics::CalculateIdleWakeupsPerSecond(
+ uint64_t absolute_idle_wakeups) {
+ return CalculateEventsPerSecond(absolute_idle_wakeups,
+@@ -138,7 +138,7 @@ int ProcessMetrics::GetIdleWakeupsPerSecond() {
+ NOTIMPLEMENTED(); // http://crbug.com/120488
+ return 0;
+ }
+-#endif // defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_AIX)
++#endif // defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_AIX) || defined(OS_BSD)
+
+ #if defined(OS_MACOSX)
+ int ProcessMetrics::CalculatePackageIdleWakeupsPerSecond(
diff --git a/devel/electron5/files/patch-base_process_process__metrics.h b/devel/electron5/files/patch-base_process_process__metrics.h
new file mode 100644
index 000000000000..7952e1ce24a2
--- /dev/null
+++ b/devel/electron5/files/patch-base_process_process__metrics.h
@@ -0,0 +1,112 @@
+--- base/process/process_metrics.h.orig 2019-04-08 08:32:37 UTC
++++ base/process/process_metrics.h
+@@ -41,7 +41,7 @@ namespace base {
+ // Full declaration is in process_metrics_iocounters.h.
+ struct IoCounters;
+
+-#if defined(OS_LINUX) || defined(OS_ANDROID)
++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
+ // Minor and major page fault counts since the process creation.
+ // Both counts are process-wide, and exclude child processes.
+ //
+@@ -51,7 +51,7 @@ struct PageFaultCounts {
+ int64_t minor;
+ int64_t major;
+ };
+-#endif // defined(OS_LINUX) || defined(OS_ANDROID)
++#endif // defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
+
+ // Convert a POSIX timeval to microseconds.
+ BASE_EXPORT int64_t TimeValToMicroseconds(const struct timeval& tv);
+@@ -92,7 +92,7 @@ class BASE_EXPORT ProcessMetrics {
+ // convenience wrapper for CreateProcessMetrics().
+ static std::unique_ptr<ProcessMetrics> CreateCurrentProcessMetrics();
+
+-#if defined(OS_LINUX) || defined(OS_ANDROID)
++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
+ // Resident Set Size is a Linux/Android specific memory concept. Do not
+ // attempt to extend this to other platforms.
+ BASE_EXPORT size_t GetResidentSetSize() const;
+@@ -199,14 +199,14 @@ class BASE_EXPORT ProcessMetrics {
+ int GetOpenFdSoftLimit() const;
+ #endif // defined(OS_POSIX)
+
+-#if defined(OS_LINUX) || defined(OS_ANDROID)
++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
+ // Bytes of swap as reported by /proc/[pid]/status.
+ uint64_t GetVmSwapBytes() const;
+
+ // Minor and major page fault count as reported by /proc/[pid]/stat.
+ // Returns true for success.
+ bool GetPageFaultCounts(PageFaultCounts* counts) const;
+-#endif // defined(OS_LINUX) || defined(OS_ANDROID)
++#endif // defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
+
+ // Returns total memory usage of malloc.
+ size_t GetMallocUsage();
+@@ -218,7 +218,7 @@ class BASE_EXPORT ProcessMetrics {
+ ProcessMetrics(ProcessHandle process, PortProvider* port_provider);
+ #endif // !defined(OS_MACOSX) || defined(OS_IOS)
+
+-#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_AIX)
++#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_AIX) || defined(OS_BSD)
+ int CalculateIdleWakeupsPerSecond(uint64_t absolute_idle_wakeups);
+ #endif
+ #if defined(OS_MACOSX)
+@@ -247,7 +247,7 @@ class BASE_EXPORT ProcessMetrics {
+ // Number of bytes transferred to/from disk in bytes.
+ uint64_t last_cumulative_disk_usage_ = 0;
+
+-#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_AIX)
++#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_AIX) || defined(OS_BSD)
+ // Same thing for idle wakeups.
+ TimeTicks last_idle_wakeups_time_;
+ uint64_t last_absolute_idle_wakeups_;
+@@ -293,7 +293,7 @@ BASE_EXPORT void IncreaseFdLimitTo(unsigned int max_de
+ #endif // defined(OS_POSIX)
+
+ #if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || \
+- defined(OS_ANDROID) || defined(OS_AIX) || defined(OS_FUCHSIA)
++ defined(OS_ANDROID) || defined(OS_AIX) || defined(OS_FUCHSIA) || defined(OS_BSD)
+ // Data about system-wide memory consumption. Values are in KB. Available on
+ // Windows, Mac, Linux, Android and Chrome OS.
+ //
+@@ -326,7 +326,7 @@ struct BASE_EXPORT SystemMemoryInfoKB {
+ int avail_phys = 0;
+ #endif
+
+-#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_AIX)
++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_AIX) || defined(OS_BSD)
+ // This provides an estimate of available memory as described here:
+ // https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=34e431b0ae398fc54ea69ff85ec700722c9da773
+ // NOTE: this is ONLY valid in kernels 3.14 and up. Its value will always
+@@ -341,7 +341,7 @@ struct BASE_EXPORT SystemMemoryInfoKB {
+ #endif
+
+ #if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_AIX) || \
+- defined(OS_FUCHSIA)
++ defined(OS_FUCHSIA) || defined(OS_BSD)
+ int buffers = 0;
+ int cached = 0;
+ int active_anon = 0;
+@@ -351,7 +351,7 @@ struct BASE_EXPORT SystemMemoryInfoKB {
+ int dirty = 0;
+ int reclaimable = 0;
+ #endif // defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_AIX) ||
+- // defined(OS_FUCHSIA)
++ // defined(OS_FUCHSIA) || defined(OS_BSD)
+
+ #if defined(OS_CHROMEOS)
+ int shmem = 0;
+@@ -377,9 +377,9 @@ struct BASE_EXPORT SystemMemoryInfoKB {
+ BASE_EXPORT bool GetSystemMemoryInfo(SystemMemoryInfoKB* meminfo);
+
+ #endif // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) ||
+- // defined(OS_ANDROID) || defined(OS_AIX) || defined(OS_FUCHSIA)
++ // defined(OS_ANDROID) || defined(OS_AIX) || defined(OS_FUCHSIA) || defined(OS_BSD)
+
+-#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_AIX)
++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_AIX) || defined(OS_BSD)
+ // Parse the data found in /proc/<pid>/stat and return the sum of the
+ // CPU-related ticks. Returns -1 on parse error.
+ // Exposed for testing.
diff --git a/devel/electron5/files/patch-base_process_process__metrics__freebsd.cc b/devel/electron5/files/patch-base_process_process__metrics__freebsd.cc
new file mode 100644
index 000000000000..32ca973b48b3
--- /dev/null
+++ b/devel/electron5/files/patch-base_process_process__metrics__freebsd.cc
@@ -0,0 +1,122 @@
+--- base/process/process_metrics_freebsd.cc.orig 2019-04-08 08:18:04 UTC
++++ base/process/process_metrics_freebsd.cc
+@@ -5,6 +5,7 @@
+ #include "base/process/process_metrics.h"
+
+ #include <stddef.h>
++#include <sys/types.h>
+ #include <sys/sysctl.h>
+ #include <sys/user.h>
+ #include <unistd.h>
+@@ -14,11 +15,15 @@
+ #include "base/process/process_metrics_iocounters.h"
+ #include "base/stl_util.h"
+
++#include <unistd.h> /* getpagesize() */
++#include <fcntl.h> /* O_RDONLY */
++#include <kvm.h>
++#include <libutil.h>
++
+ namespace base {
+
+ ProcessMetrics::ProcessMetrics(ProcessHandle process)
+- : process_(process),
+- last_cpu_(0) {}
++ : process_(process) {}
+
+ // static
+ std::unique_ptr<ProcessMetrics> ProcessMetrics::CreateProcessMetrics(
+@@ -69,4 +74,93 @@ size_t GetSystemCommitCharge() {
+ return mem_total - (mem_free*pagesize) - (mem_inactive*pagesize);
+ }
+
++int GetNumberOfThreads(ProcessHandle process) {
++ // Taken from FreeBSD top (usr.bin/top/machine.c)
++
++ kvm_t* kd = kvm_open(NULL, "/dev/null", NULL, O_RDONLY, "kvm_open");
++ if (kd == NULL)
++ return 0;
++
++ struct kinfo_proc* pbase;
++ int nproc;
++ pbase = kvm_getprocs(kd, KERN_PROC_PID, process, &nproc);
++ if (pbase == NULL)
++ return 0;
++
++ if (kvm_close(kd) == -1)
++ return 0;
++
++ return nproc;
++}
++
++bool GetSystemMemoryInfo(SystemMemoryInfoKB *meminfo) {
++ unsigned int mem_total, mem_free, swap_total, swap_used;
++ size_t length;
++ int pagesizeKB;
++
++ pagesizeKB = getpagesize() / 1024;
++
++ length = sizeof(mem_total);
++ if (sysctlbyname("vm.stats.vm.v_page_count", &mem_total,
++ &length, NULL, 0) != 0 || length != sizeof(mem_total))
++ return false;
++
++ length = sizeof(mem_free);
++ if (sysctlbyname("vm.stats.vm.v_free_count", &mem_free, &length, NULL, 0)
++ != 0 || length != sizeof(mem_free))
++ return false;
++
++ length = sizeof(swap_total);
++ if (sysctlbyname("vm.swap_size", &swap_total, &length, NULL, 0)
++ != 0 || length != sizeof(swap_total))
++ return false;
++
++ length = sizeof(swap_used);
++ if (sysctlbyname("vm.swap_anon_use", &swap_used, &length, NULL, 0)
++ != 0 || length != sizeof(swap_used))
++ return false;
++
++ meminfo->total = mem_total * pagesizeKB;
++ meminfo->free = mem_free * pagesizeKB;
++ meminfo->swap_total = swap_total * pagesizeKB;
++ meminfo->swap_free = (swap_total - swap_used) * pagesizeKB;
++
++ return true;
++}
++
++int ProcessMetrics::GetOpenFdCount() const {
++ struct kinfo_file * kif;
++ int cnt;
++
++ if ((kif = kinfo_getfile(process_, &cnt)) == NULL)
++ return -1;
++
++ free(kif);
++
++ return cnt;
++}
++
++int ProcessMetrics::GetOpenFdSoftLimit() const {
++ size_t length;
++ int total_count = 0;
++ int mib[] = { CTL_KERN, KERN_MAXFILESPERPROC };
++
++ length = sizeof(total_count);
++
++ if (sysctl(mib, base::size(mib), &total_count, &length, NULL, 0) < 0) {
++ total_count = -1;
++ }
++
++ return total_count;
++}
++
++uint64_t ProcessMetrics::GetVmSwapBytes() const {
++ NOTIMPLEMENTED();
++ return 0;
++}
++
++int ProcessMetrics::GetIdleWakeupsPerSecond() {
++ NOTIMPLEMENTED();
++ return 0;
++}
+ } // namespace base
diff --git a/devel/electron5/files/patch-base_process_process__metrics__posix.cc b/devel/electron5/files/patch-base_process_process__metrics__posix.cc
new file mode 100644
index 000000000000..b9c9af87bc40
--- /dev/null
+++ b/devel/electron5/files/patch-base_process_process__metrics__posix.cc
@@ -0,0 +1,20 @@
+--- base/process/process_metrics_posix.cc.orig 2019-04-08 08:18:04 UTC
++++ base/process/process_metrics_posix.cc
+@@ -19,6 +19,8 @@
+
+ #if defined(OS_MACOSX)
+ #include <malloc/malloc.h>
++#elif defined(OS_FREEBSD)
++#include <stdlib.h>
+ #else
+ #include <malloc.h>
+ #endif
+@@ -107,7 +109,7 @@ size_t ProcessMetrics::GetMallocUsage() {
+ #else
+ return minfo.hblkhd + minfo.arena;
+ #endif
+-#elif defined(OS_FUCHSIA)
++#elif defined(OS_FUCHSIA) || defined(OS_BSD)
+ // TODO(fuchsia): Not currently exposed. https://crbug.com/735087.
+ return 0;
+ #endif
diff --git a/devel/electron5/files/patch-base_process_process__unittest.cc b/devel/electron5/files/patch-base_process_process__unittest.cc
new file mode 100644
index 000000000000..bc086121d761
--- /dev/null
+++ b/devel/electron5/files/patch-base_process_process__unittest.cc
@@ -0,0 +1,11 @@
+--- base/process/process_unittest.cc.orig 2019-04-08 08:32:37 UTC
++++ base/process/process_unittest.cc
+@@ -148,7 +148,7 @@ TEST_F(ProcessTest, CreationTimeOtherProcess) {
+ // was spawned and a time recorded after it was spawned. However, since the
+ // base::Time and process creation clocks don't match, tolerate some error.
+ constexpr base::TimeDelta kTolerance =
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // On Linux, process creation time is relative to boot time which has a
+ // 1-second resolution. Tolerate 1 second for the imprecise boot time and
+ // 100 ms for the imprecise clock.
diff --git a/devel/electron5/files/patch-base_profiler_stack__sampling__profiler__unittest.cc b/devel/electron5/files/patch-base_profiler_stack__sampling__profiler__unittest.cc
new file mode 100644
index 000000000000..ac1871b5049f
--- /dev/null
+++ b/devel/electron5/files/patch-base_profiler_stack__sampling__profiler__unittest.cc
@@ -0,0 +1,11 @@
+--- base/profiler/stack_sampling_profiler_unittest.cc.orig 2019-04-08 08:32:37 UTC
++++ base/profiler/stack_sampling_profiler_unittest.cc
+@@ -39,7 +39,7 @@
+ #include <intrin.h>
+ #include <malloc.h>
+ #include <windows.h>
+-#else
++#elif !defined(OS_BSD)
+ #include <alloca.h>
+ #endif
+
diff --git a/devel/electron5/files/patch-base_security__unittest.cc b/devel/electron5/files/patch-base_security__unittest.cc
new file mode 100644
index 000000000000..ef38e563e13c
--- /dev/null
+++ b/devel/electron5/files/patch-base_security__unittest.cc
@@ -0,0 +1,11 @@
+--- base/security_unittest.cc.orig 2019-04-08 08:32:37 UTC
++++ base/security_unittest.cc
+@@ -59,7 +59,7 @@ NOINLINE Type HideValueFromCompiler(volatile Type valu
+ // FAILS_ is too clunky.
+ void OverflowTestsSoftExpectTrue(bool overflow_detected) {
+ if (!overflow_detected) {
+-#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_MACOSX)
++#if defined(OS_POSIX) && !defined(OS_NACL)
+ // Sadly, on Linux, Android, and OSX we don't have a good story yet. Don't
+ // fail the test, but report.
+ printf("Platform has overflow: %s\n",
diff --git a/devel/electron5/files/patch-base_strings_safe__sprintf__unittest.cc b/devel/electron5/files/patch-base_strings_safe__sprintf__unittest.cc
new file mode 100644
index 000000000000..93b2e94497f8
--- /dev/null
+++ b/devel/electron5/files/patch-base_strings_safe__sprintf__unittest.cc
@@ -0,0 +1,18 @@
+--- base/strings/safe_sprintf_unittest.cc.orig 2019-04-08 08:18:04 UTC
++++ base/strings/safe_sprintf_unittest.cc
+@@ -730,6 +730,7 @@ TEST(SafeSPrintfTest, EmbeddedNul) {
+ }
+
+ TEST(SafeSPrintfTest, EmitNULL) {
++/* Avoid compiler error: http://pastebin.com/1edWUE84
+ char buf[40];
+ #if defined(__GNUC__)
+ #pragma GCC diagnostic push
+@@ -741,6 +742,7 @@ TEST(SafeSPrintfTest, EmitNULL) {
+ EXPECT_EQ("0x0", std::string(buf));
+ EXPECT_EQ(6, SafeSPrintf(buf, "%s", NULL));
+ EXPECT_EQ("<NULL>", std::string(buf));
++*/
+ #if defined(__GCC__)
+ #pragma GCC diagnostic pop
+ #endif
diff --git a/devel/electron5/files/patch-base_system_sys__info__freebsd.cc b/devel/electron5/files/patch-base_system_sys__info__freebsd.cc
new file mode 100644
index 000000000000..5bd6a7ab8a8f
--- /dev/null
+++ b/devel/electron5/files/patch-base_system_sys__info__freebsd.cc
@@ -0,0 +1,71 @@
+--- base/system/sys_info_freebsd.cc.orig 2019-04-08 08:18:04 UTC
++++ base/system/sys_info_freebsd.cc
+@@ -13,26 +13,58 @@
+ namespace base {
+
+ int64_t SysInfo::AmountOfPhysicalMemoryImpl() {
+- int pages, page_size;
++ int pages, page_size, r = 0;
+ size_t size = sizeof(pages);
+- sysctlbyname("vm.stats.vm.v_page_count", &pages, &size, NULL, 0);
+- sysctlbyname("vm.stats.vm.v_page_size", &page_size, &size, NULL, 0);
+- if (pages == -1 || page_size == -1) {
++ if(r == 0)
++ r = sysctlbyname("vm.stats.vm.v_page_count", &pages, &size, NULL, 0);
++ if(r == 0)
++ r =sysctlbyname("vm.stats.vm.v_page_size", &page_size, &size, NULL, 0);
++ if(r == -1) {
+ NOTREACHED();
+ return 0;
+ }
+ return static_cast<int64_t>(pages) * page_size;
+ }
+
+-// static
+-uint64_t SysInfo::MaxSharedMemorySize() {
+- size_t limit;
+- size_t size = sizeof(limit);
+- if (sysctlbyname("kern.ipc.shmmax", &limit, &size, NULL, 0) < 0) {
++int64_t SysInfo::AmountOfAvailablePhysicalMemoryImpl() {
++ int page_size, r = 0;
++ unsigned pgfree, pginact, pgcache;
++ size_t size = sizeof(page_size);
++ size_t szpg = sizeof(pgfree);
++ if(r == 0)
++ r = sysctlbyname("vm.stats.vm.v_page_size", &page_size, &size, NULL, 0);
++ if(r == 0)
++ r = sysctlbyname("vm.stats.vm.v_free_count", &pgfree, &szpg, NULL, 0);
++ if(r == 0)
++ r = sysctlbyname("vm.stats.vm.v_inactive_count", &pginact, &szpg, NULL, 0);
++ if(r == 0)
++ r = sysctlbyname("vm.stats.vm.v_cache_count", &pgcache, &szpg, NULL, 0);
++ if(r == -1) {
+ NOTREACHED();
+ return 0;
+ }
+- return static_cast<uint64_t>(limit);
++ return static_cast<int64_t>((pgfree + pginact + pgcache) * page_size);
++}
++
++// static
++std::string SysInfo::CPUModelName() {
++ int mib[] = { CTL_HW, HW_MODEL };
++ char name[256];
++ size_t size = base::size(name);
++ if (sysctl(mib, base::size(mib), &name, &size, NULL, 0) == 0)
++ return name;
++ return std::string();
++}
++
++int SysInfo::NumberOfProcessors() {
++ int mib[] = { CTL_HW, HW_NCPU };
++ int ncpu;
++ size_t size = sizeof(ncpu);
++ if (sysctl(mib, base::size(mib), &ncpu, &size, NULL, 0) == -1) {
++ NOTREACHED();
++ return 1;
++ }
++ return ncpu;
+ }
+
+ } // namespace base
diff --git a/devel/electron5/files/patch-base_system_sys__info__posix.cc b/devel/electron5/files/patch-base_system_sys__info__posix.cc
new file mode 100644
index 000000000000..20cae1f3dac7
--- /dev/null
+++ b/devel/electron5/files/patch-base_system_sys__info__posix.cc
@@ -0,0 +1,38 @@
+--- base/system/sys_info_posix.cc.orig 2019-04-08 08:32:37 UTC
++++ base/system/sys_info_posix.cc
+@@ -38,7 +38,7 @@
+
+ namespace {
+
+-#if !defined(OS_OPENBSD) && !defined(OS_FUCHSIA)
++#if !defined(OS_BSD) && !defined(OS_FUCHSIA)
+ int NumberOfProcessors() {
+ // sysconf returns the number of "logical" (not "physical") processors on both
+ // Mac and Linux. So we get the number of max available "logical" processors.
+@@ -64,7 +64,7 @@ int NumberOfProcessors() {
+
+ base::LazyInstance<base::internal::LazySysInfoValue<int, NumberOfProcessors>>::
+ Leaky g_lazy_number_of_processors = LAZY_INSTANCE_INITIALIZER;
+-#endif // !defined(OS_OPENBSD) && !defined(OS_FUCHSIA)
++#endif // !defined(OS_BSD) && !defined(OS_FUCHSIA)
+
+ #if !defined(OS_FUCHSIA)
+ int64_t AmountOfVirtualMemory() {
+@@ -132,7 +132,7 @@ bool GetDiskSpaceInfo(const base::FilePath& path,
+
+ namespace base {
+
+-#if !defined(OS_OPENBSD) && !defined(OS_FUCHSIA)
++#if !defined(OS_BSD) && !defined(OS_FUCHSIA)
+ int SysInfo::NumberOfProcessors() {
+ return g_lazy_number_of_processors.Get().value();
+ }
+@@ -225,6 +225,8 @@ std::string SysInfo::OperatingSystemArchitecture() {
+ arch = "x86";
+ } else if (arch == "amd64") {
+ arch = "x86_64";
++ } else if (arch == "arm64") {
++ arch = "aarch64";
+ } else if (std::string(info.sysname) == "AIX") {
+ arch = "ppc64";
+ }
diff --git a/devel/electron5/files/patch-base_task_task__scheduler_scheduler__single__thread__task__runner__manager__unittest.cc b/devel/electron5/files/patch-base_task_task__scheduler_scheduler__single__thread__task__runner__manager__unittest.cc
new file mode 100644
index 000000000000..4ab50e1aa725
--- /dev/null
+++ b/devel/electron5/files/patch-base_task_task__scheduler_scheduler__single__thread__task__runner__manager__unittest.cc
@@ -0,0 +1,12 @@
+--- base/task/task_scheduler/scheduler_single_thread_task_runner_manager_unittest.cc.orig 2019-04-08 08:32:37 UTC
++++ base/task/task_scheduler/scheduler_single_thread_task_runner_manager_unittest.cc
+@@ -295,6 +295,9 @@ TEST_P(TaskSchedulerSingleThreadTaskRunnerManagerCommo
+ EXPECT_EQ(ThreadPriority::NORMAL, thread_priority_normal);
+ }
+
++#if defined(OS_BSD)
++#define ThreadNamesSet DISABLED_ThreadNamesSet
++#endif
+ TEST_P(TaskSchedulerSingleThreadTaskRunnerManagerCommonTest, ThreadNamesSet) {
+ constexpr TaskTraits foo_traits = {TaskPriority::BEST_EFFORT,
+ TaskShutdownBehavior::BLOCK_SHUTDOWN};
diff --git a/devel/electron5/files/patch-base_test_generate__fontconfig__caches.cc b/devel/electron5/files/patch-base_test_generate__fontconfig__caches.cc
new file mode 100644
index 000000000000..393129fa70b0
--- /dev/null
+++ b/devel/electron5/files/patch-base_test_generate__fontconfig__caches.cc
@@ -0,0 +1,17 @@
+--- base/test/generate_fontconfig_caches.cc.orig 2019-04-08 08:32:37 UTC
++++ base/test/generate_fontconfig_caches.cc
+@@ -57,7 +57,14 @@ int main() {
+ base::TearDownFontconfig();
+
+ // Check existence of intended fontconfig cache file.
++#if defined(OS_BSD)
++ // Our version of fontconfig is too old to respect .uuid files in font directories,
++ // so we check for the CACHEDIR.TAG file instead
+ CHECK(base::PathExists(
++ fontconfig_caches.Append("CACHEDIR.TAG")));
++#else
++ CHECK(base::PathExists(
+ fontconfig_caches.Append(base::StrCat({uuid, "-le64.cache-7"}))));
++#endif
+ return 0;
+ }
diff --git a/devel/electron5/files/patch-base_test_launcher_test__launcher.cc b/devel/electron5/files/patch-base_test_launcher_test__launcher.cc
new file mode 100644
index 000000000000..6eaed5f3f4cb
--- /dev/null
+++ b/devel/electron5/files/patch-base_test_launcher_test__launcher.cc
@@ -0,0 +1,10 @@
+--- base/test/launcher/test_launcher.cc.orig 2019-04-08 08:32:37 UTC
++++ base/test/launcher/test_launcher.cc
+@@ -53,6 +53,7 @@
+ #include "testing/gtest/include/gtest/gtest.h"
+
+ #if defined(OS_POSIX)
++#include <signal.h>
+ #include <fcntl.h>
+
+ #include "base/files/file_descriptor_watcher_posix.h"
diff --git a/devel/electron5/files/patch-base_test_test__file__util__linux.cc b/devel/electron5/files/patch-base_test_test__file__util__linux.cc
new file mode 100644
index 000000000000..e6f34fe8ae09
--- /dev/null
+++ b/devel/electron5/files/patch-base_test_test__file__util__linux.cc
@@ -0,0 +1,13 @@
+--- base/test/test_file_util_linux.cc.orig 2019-04-08 08:18:04 UTC
++++ base/test/test_file_util_linux.cc
+@@ -51,8 +51,10 @@ bool EvictFileFromSystemCache(const FilePath& file) {
+ return false;
+ if (fdatasync(fd.get()) != 0)
+ return false;
++#if !defined(OS_BSD)
+ if (posix_fadvise(fd.get(), 0, 0, POSIX_FADV_DONTNEED) != 0)
+ return false;
++#endif
+ return true;
+ }
+
diff --git a/devel/electron5/files/patch-base_test_test__file__util__posix.cc b/devel/electron5/files/patch-base_test_test__file__util__posix.cc
new file mode 100644
index 000000000000..ed6da8975a70
--- /dev/null
+++ b/devel/electron5/files/patch-base_test_test__file__util__posix.cc
@@ -0,0 +1,11 @@
+--- base/test/test_file_util_posix.cc.orig 2019-04-08 08:18:04 UTC
++++ base/test/test_file_util_posix.cc
+@@ -85,7 +85,7 @@ void SyncPageCacheToDisk() {
+ sync();
+ }
+
+-#if !defined(OS_LINUX) && !defined(OS_MACOSX) && !defined(OS_ANDROID)
++#if !defined(OS_LINUX) && !defined(OS_MACOSX) && !defined(OS_ANDROID) && !defined(OS_BSD)
+ bool EvictFileFromSystemCache(const FilePath& file) {
+ // There doesn't seem to be a POSIX way to cool the disk cache.
+ NOTIMPLEMENTED();
diff --git a/devel/electron5/files/patch-base_third__party_libevent_BUILD.gn b/devel/electron5/files/patch-base_third__party_libevent_BUILD.gn
new file mode 100644
index 000000000000..f47077ef1123
--- /dev/null
+++ b/devel/electron5/files/patch-base_third__party_libevent_BUILD.gn
@@ -0,0 +1,24 @@
+--- base/third_party/libevent/BUILD.gn.orig 2019-04-08 08:18:04 UTC
++++ base/third_party/libevent/BUILD.gn
+@@ -43,13 +43,20 @@ static_library("libevent") {
+ "mac/event-config.h",
+ ]
+ include_dirs = [ "mac" ]
+- } else if (is_linux) {
++ } else if (is_linux && !is_bsd) {
+ sources += [
+ "epoll.c",
+ "linux/config.h",
+ "linux/event-config.h",
+ ]
+ include_dirs = [ "linux" ]
++ } else if (is_bsd) {
++ sources += [
++ "kqueue.c",
++ "freebsd/config.h",
++ "freebsd/event-config.h",
++ ]
++ include_dirs = [ "freebsd" ]
+ } else if (is_android) {
+ sources += [
+ "android/config.h",
diff --git a/devel/electron5/files/patch-base_threading_platform__thread.h b/devel/electron5/files/patch-base_threading_platform__thread.h
new file mode 100644
index 000000000000..9d84e5d980a6
--- /dev/null
+++ b/devel/electron5/files/patch-base_threading_platform__thread.h
@@ -0,0 +1,11 @@
+--- base/threading/platform_thread.h.orig 2019-04-08 08:18:04 UTC
++++ base/threading/platform_thread.h
+@@ -220,7 +220,7 @@ class BASE_EXPORT PlatformThread {
+
+ static ThreadPriority GetCurrentThreadPriority();
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Toggles a specific thread's priority at runtime. This can be used to
+ // change the priority of a thread in a different process and will fail
+ // if the calling process does not have proper permissions. The
diff --git a/devel/electron5/files/patch-base_threading_platform__thread__linux.cc b/devel/electron5/files/patch-base_threading_platform__thread__linux.cc
new file mode 100644
index 000000000000..0dd787928c93
--- /dev/null
+++ b/devel/electron5/files/patch-base_threading_platform__thread__linux.cc
@@ -0,0 +1,30 @@
+--- base/threading/platform_thread_linux.cc.orig 2019-04-08 08:32:37 UTC
++++ base/threading/platform_thread_linux.cc
+@@ -18,7 +18,9 @@
+
+ #if !defined(OS_NACL) && !defined(OS_AIX)
+ #include <pthread.h>
++#if !defined(OS_BSD)
+ #include <sys/prctl.h>
++#endif
+ #include <sys/resource.h>
+ #include <sys/time.h>
+ #include <sys/types.h>
+@@ -99,7 +101,7 @@ const ThreadPriorityToNiceValuePair kThreadPriorityToN
+
+ Optional<bool> CanIncreaseCurrentThreadPriorityForPlatform(
+ ThreadPriority priority) {
+-#if !defined(OS_NACL)
++#if !defined(OS_NACL) && !defined(OS_BSD)
+ // A non-zero soft-limit on RLIMIT_RTPRIO is required to be allowed to invoke
+ // pthread_setschedparam in SetCurrentThreadPriorityForPlatform().
+ struct rlimit rlim;
+@@ -141,7 +143,7 @@ Optional<ThreadPriority> GetCurrentThreadPriorityForPl
+ void PlatformThread::SetName(const std::string& name) {
+ ThreadIdNameManager::GetInstance()->SetName(name);
+
+-#if !defined(OS_NACL) && !defined(OS_AIX)
++#if !defined(OS_NACL) && !defined(OS_AIX) && !defined(OS_BSD)
+ // On linux we can get the thread names to show up in the debugger by setting
+ // the process name for the LWP. We don't want to do this for the main
+ // thread because that would rename the process, causing tools like killall
diff --git a/devel/electron5/files/patch-base_threading_platform__thread__posix.cc b/devel/electron5/files/patch-base_threading_platform__thread__posix.cc
new file mode 100644
index 000000000000..1a05103cf05a
--- /dev/null
+++ b/devel/electron5/files/patch-base_threading_platform__thread__posix.cc
@@ -0,0 +1,11 @@
+--- base/threading/platform_thread_posix.cc.orig 2019-04-08 08:18:04 UTC
++++ base/threading/platform_thread_posix.cc
+@@ -66,7 +66,7 @@ void* ThreadFunc(void* params) {
+ if (!thread_params->joinable)
+ base::ThreadRestrictions::SetSingletonAllowed(false);
+
+-#if !defined(OS_NACL)
++#if !defined(OS_NACL) && !defined(OS_BSD)
+ // Threads on linux/android may inherit their priority from the thread
+ // where they were created. This explicitly sets the priority of all new
+ // threads.
diff --git a/devel/electron5/files/patch-base_threading_thread__local__storage__unittest.cc b/devel/electron5/files/patch-base_threading_thread__local__storage__unittest.cc
new file mode 100644
index 000000000000..cbd473a0a6e7
--- /dev/null
+++ b/devel/electron5/files/patch-base_threading_thread__local__storage__unittest.cc
@@ -0,0 +1,11 @@
+--- base/threading/thread_local_storage_unittest.cc.orig 2019-04-08 08:18:04 UTC
++++ base/threading/thread_local_storage_unittest.cc
+@@ -86,7 +86,7 @@ class ThreadLocalStorageRunner : public DelegateSimple
+ void ThreadLocalStorageCleanup(void *value) {
+ int *ptr = reinterpret_cast<int*>(value);
+ // Destructors should never be called with a NULL.
+- ASSERT_NE(reinterpret_cast<int*>(NULL), ptr);
++ ASSERT_NE(static_cast<int*>(NULL), ptr);
+ if (*ptr == kFinalTlsValue)
+ return; // We've been called enough times.
+ ASSERT_LT(kFinalTlsValue, *ptr);
diff --git a/devel/electron5/files/patch-base_threading_thread__task__runner__handle.cc b/devel/electron5/files/patch-base_threading_thread__task__runner__handle.cc
new file mode 100644
index 000000000000..24b97496da5b
--- /dev/null
+++ b/devel/electron5/files/patch-base_threading_thread__task__runner__handle.cc
@@ -0,0 +1,26 @@
+--- base/threading/thread_task_runner_handle.cc.orig 2019-04-08 08:32:37 UTC
++++ base/threading/thread_task_runner_handle.cc
+@@ -7,6 +7,7 @@
+ #include <utility>
+
+ #include "base/bind.h"
++#include "base/callback_helpers.h"
+ #include "base/lazy_instance.h"
+ #include "base/logging.h"
+ #include "base/memory/ptr_util.h"
+@@ -37,6 +38,7 @@ bool ThreadTaskRunnerHandle::IsSet() {
+ return !!thread_task_runner_tls.Pointer()->Get();
+ }
+
++#if defined(OS_BSD)
+ // static
+ ScopedClosureRunner ThreadTaskRunnerHandle::OverrideForTesting(
+ scoped_refptr<SingleThreadTaskRunner> overriding_task_runner) {
+@@ -86,6 +88,7 @@ ScopedClosureRunner ThreadTaskRunnerHandle::OverrideFo
+ base::Unretained(ttrh->task_runner_.get()),
+ std::move(no_running_during_override)));
+ }
++#endif
+
+ ThreadTaskRunnerHandle::ThreadTaskRunnerHandle(
+ scoped_refptr<SingleThreadTaskRunner> task_runner)
diff --git a/devel/electron5/files/patch-base_trace__event_malloc__dump__provider.cc b/devel/electron5/files/patch-base_trace__event_malloc__dump__provider.cc
new file mode 100644
index 000000000000..d63474cc9ef4
--- /dev/null
+++ b/devel/electron5/files/patch-base_trace__event_malloc__dump__provider.cc
@@ -0,0 +1,21 @@
+--- base/trace_event/malloc_dump_provider.cc.orig 2019-04-08 08:18:04 UTC
++++ base/trace_event/malloc_dump_provider.cc
+@@ -17,6 +17,8 @@
+
+ #if defined(OS_MACOSX)
+ #include <malloc/malloc.h>
++#elif defined(OS_BSD)
++#include "stdlib.h"
+ #else
+ #include <malloc.h>
+ #endif
+@@ -132,6 +134,9 @@ bool MallocDumpProvider::OnMemoryDump(const MemoryDump
+ }
+ #elif defined(OS_FUCHSIA)
+ // TODO(fuchsia): Port, see https://crbug.com/706592.
++#elif defined(OS_BSD)
++ total_virtual_size = 0;
++ allocated_objects_size = 0;
+ #else
+ struct mallinfo info = mallinfo();
+ DCHECK_GE(info.arena + info.hblkhd, info.uordblks);
diff --git a/devel/electron5/files/patch-base_trace__event_process__memory__dump.cc b/devel/electron5/files/patch-base_trace__event_process__memory__dump.cc
new file mode 100644
index 000000000000..577ae0fbd22f
--- /dev/null
+++ b/devel/electron5/files/patch-base_trace__event_process__memory__dump.cc
@@ -0,0 +1,11 @@
+--- base/trace_event/process_memory_dump.cc.orig 2019-04-08 08:18:04 UTC
++++ base/trace_event/process_memory_dump.cc
+@@ -94,7 +94,7 @@ size_t ProcessMemoryDump::CountResidentBytes(void* sta
+ #if defined(OS_WIN)
+ std::unique_ptr<PSAPI_WORKING_SET_EX_INFORMATION[]> vec(
+ new PSAPI_WORKING_SET_EX_INFORMATION[max_vec_size]);
+-#elif defined(OS_MACOSX)
++#elif defined(OS_MACOSX) || defined(OS_BSD)
+ std::unique_ptr<char[]> vec(new char[max_vec_size]);
+ #elif defined(OS_POSIX) || defined(OS_FUCHSIA)
+ std::unique_ptr<unsigned char[]> vec(new unsigned char[max_vec_size]);
diff --git a/devel/electron5/files/patch-base_trace__event_process__memory__dump.h b/devel/electron5/files/patch-base_trace__event_process__memory__dump.h
new file mode 100644
index 000000000000..112a2738cf3a
--- /dev/null
+++ b/devel/electron5/files/patch-base_trace__event_process__memory__dump.h
@@ -0,0 +1,11 @@
+--- base/trace_event/process_memory_dump.h.orig 2019-04-08 08:32:37 UTC
++++ base/trace_event/process_memory_dump.h
+@@ -22,7 +22,7 @@
+
+ // Define COUNT_RESIDENT_BYTES_SUPPORTED if platform supports counting of the
+ // resident memory.
+-#if !defined(OS_NACL)
++#if !defined(OS_NACL) && !defined(OS_BSD)
+ #define COUNT_RESIDENT_BYTES_SUPPORTED
+ #endif
+
diff --git a/devel/electron5/files/patch-build_config_BUILD.gn b/devel/electron5/files/patch-build_config_BUILD.gn
new file mode 100644
index 000000000000..973325f3fcd3
--- /dev/null
+++ b/devel/electron5/files/patch-build_config_BUILD.gn
@@ -0,0 +1,30 @@
+--- build/config/BUILD.gn.orig 2019-04-08 08:32:37 UTC
++++ build/config/BUILD.gn
+@@ -162,7 +162,7 @@ config("debug") {
+ # builds, and we have to tell it to turn it off.
+ defines += [ "_HAS_ITERATOR_DEBUGGING=0" ]
+ }
+- } else if (is_linux && current_cpu == "x64" && enable_iterator_debugging) {
++ } else if ((is_linux || is_bsd) && current_cpu == "x64" && enable_iterator_debugging) {
+ # Enable libstdc++ debugging facilities to help catch problems early, see
+ # http://crbug.com/65151 .
+ # TODO(phajdan.jr): Should we enable this for all of POSIX?
+@@ -263,9 +263,7 @@ config("default_libs") {
+ ]
+ } else if (is_linux) {
+ libs = [
+- "dl",
+ "pthread",
+- "rt",
+ ]
+ }
+ }
+@@ -342,7 +340,7 @@ config("executable_config") {
+ "//build/config/ios:ios_dynamic_flags",
+ "//build/config/ios:ios_executable_flags",
+ ]
+- } else if (is_linux || is_android || current_os == "aix") {
++ } else if (is_linux || is_bsd || is_android || current_os == "aix") {
+ configs += [ "//build/config/gcc:executable_config" ]
+ if (is_chromecast) {
+ configs += [ "//build/config/chromecast:executable_config" ]
diff --git a/devel/electron5/files/patch-build_config_BUILDCONFIG.gn b/devel/electron5/files/patch-build_config_BUILDCONFIG.gn
new file mode 100644
index 000000000000..4e7c32e4f711
--- /dev/null
+++ b/devel/electron5/files/patch-build_config_BUILDCONFIG.gn
@@ -0,0 +1,48 @@
+--- build/config/BUILDCONFIG.gn.orig 2019-04-09 12:48:19 UTC
++++ build/config/BUILDCONFIG.gn
+@@ -134,10 +134,10 @@ declare_args() {
+ is_official_build = false
+
+ # Whether we're a traditional desktop unix.
+- is_desktop_linux = current_os == "linux"
++ is_desktop_linux = current_os == "linux" || current_os == "freebsd"
+
+ # Set to true when compiling with the Clang compiler.
+- is_clang = current_os != "linux" ||
++ is_clang = current_os != "linux" || current_os == "freebsd" ||
+ (current_cpu != "s390x" && current_cpu != "s390" &&
+ current_cpu != "ppc64" && current_cpu != "ppc" &&
+ current_cpu != "mips" && current_cpu != "mips64")
+@@ -189,8 +189,8 @@ if (host_toolchain == "") {
+ # TODO(dpranke): Add some sort of assert here that verifies that
+ # no toolchain omitted host_toolchain from its toolchain_args().
+
+- if (host_os == "linux") {
+- if (target_os != "linux") {
++ if (host_os == "linux" || host_os == "freebsd") {
++ if (target_os != "linux" && target_os != "freebsd") {
+ host_toolchain = "//build/toolchain/linux:clang_$host_cpu"
+ } else if (is_clang) {
+ host_toolchain = "//build/toolchain/linux:clang_$host_cpu"
+@@ -227,7 +227,7 @@ if (target_os == "android") {
+ assert(host_os == "linux" || host_os == "mac",
+ "Android builds are only supported on Linux and Mac hosts.")
+ _default_toolchain = "//build/toolchain/android:android_clang_$target_cpu"
+-} else if (target_os == "chromeos" || target_os == "linux") {
++} else if (target_os == "chromeos" || target_os == "linux" || target_os == "freebsd") {
+ # See comments in build/toolchain/cros/BUILD.gn about board compiles.
+ if (is_clang) {
+ _default_toolchain = "//build/toolchain/linux:clang_$target_cpu"
+@@ -294,10 +294,11 @@ is_android = current_os == "android"
+ is_chromeos = current_os == "chromeos"
+ is_fuchsia = current_os == "fuchsia"
+ is_ios = current_os == "ios"
+-is_linux = current_os == "chromeos" || current_os == "linux"
++is_linux = current_os == "chromeos" || current_os == "linux" || current_os == "freebsd"
+ is_mac = current_os == "mac"
+ is_nacl = current_os == "nacl"
+ is_win = current_os == "win" || current_os == "winuwp"
++is_bsd = current_os == "freebsd"
+
+ is_posix = !is_win && !is_fuchsia
+
diff --git a/devel/electron5/files/patch-build_config_allocator.gni b/devel/electron5/files/patch-build_config_allocator.gni
new file mode 100644
index 000000000000..6a46f90fb175
--- /dev/null
+++ b/devel/electron5/files/patch-build_config_allocator.gni
@@ -0,0 +1,20 @@
+--- build/config/allocator.gni.orig 2019-04-08 08:32:37 UTC
++++ build/config/allocator.gni
+@@ -6,7 +6,7 @@ import("//build/config/sanitizers/sanitizers.gni")
+
+ # Temporarily disable tcmalloc on arm64 linux to get rid of compilation errors.
+ if (is_android || is_mac || is_ios || is_asan || is_lsan || is_tsan ||
+- is_msan || is_win || is_fuchsia || (is_linux && target_cpu == "arm64")) {
++ is_msan || is_win || is_fuchsia || (is_linux && target_cpu == "arm64") || is_bsd) {
+ _default_allocator = "none"
+ } else {
+ _default_allocator = "tcmalloc"
+@@ -17,7 +17,7 @@ if (is_android || is_mac || is_ios || is_asan || is_ls
+ # against the debug CRT with "is_nacl=false".
+ if ((is_linux || is_android || is_mac ||
+ (is_win && !is_component_build && !is_debug)) && !is_asan && !is_lsan &&
+- !is_tsan && !is_msan) {
++ !is_tsan && !is_msan && !is_bsd) {
+ _default_use_allocator_shim = true
+ } else {
+ _default_use_allocator_shim = false
diff --git a/devel/electron5/files/patch-build_config_compiler_BUILD.gn b/devel/electron5/files/patch-build_config_compiler_BUILD.gn
new file mode 100644
index 000000000000..1636f0fabb6b
--- /dev/null
+++ b/devel/electron5/files/patch-build_config_compiler_BUILD.gn
@@ -0,0 +1,83 @@
+--- build/config/compiler/BUILD.gn.orig 2019-04-08 08:32:37 UTC
++++ build/config/compiler/BUILD.gn
+@@ -53,7 +53,7 @@ declare_args() {
+ # only two architectures that are currently checked in). Turn this off when
+ # you are using a custom toolchain and need to control -B in cflags.
+ linux_use_bundled_binutils =
+- linux_use_bundled_binutils_override && is_linux &&
++ linux_use_bundled_binutils_override && (is_linux && !is_bsd) &&
+ (current_cpu == "x64" || current_cpu == "x86")
+ binutils_path = rebase_path("//third_party/binutils/Linux_x64/Release/bin",
+ root_build_dir)
+@@ -275,7 +275,7 @@ config("compiler") {
+ # Linker warnings.
+ if (fatal_linker_warnings && !(is_chromeos && current_cpu == "arm") &&
+ !(is_android && use_order_profiling) && !is_mac && !is_ios &&
+- current_os != "aix") {
++ current_os != "aix" && !is_bsd) {
+ # TODO(jochen): Enable this on chromeos on arm. http://crbug.com/356580
+ # TODO(lizeb,pasko): Fix link errors when linking with order_profiling=1
+ # crbug.com/485542
+@@ -394,7 +394,7 @@ config("compiler") {
+
+ # Compiler instrumentation can introduce dependencies in DSOs to symbols in
+ # the executable they are loaded into, so they are unresolved at link-time.
+- if (!using_sanitizer) {
++ if (!using_sanitizer && !is_bsd) {
+ ldflags += [
+ "-Wl,-z,defs",
+ "-Wl,--as-needed",
+@@ -502,7 +502,7 @@ config("compiler") {
+ }
+ }
+
+- if (is_clang && !is_nacl && !use_xcode_clang) {
++ if (is_clang && !is_nacl && !use_xcode_clang && !is_bsd) {
+ cflags += [
+ # TODO(hans): Remove this once Clang generates better optimized debug info
+ # by default. https://crbug.com/765793
+@@ -809,7 +809,7 @@ config("compiler_cpu_abi") {
+ cflags += [ "-mtune=$arm_tune" ]
+ }
+ } else if (current_cpu == "arm64") {
+- if (is_clang && !is_android && !is_nacl && !is_fuchsia) {
++ if (is_clang && !is_android && !is_nacl && !is_fuchsia && !is_bsd) {
+ cflags += [ "--target=aarch64-linux-gnu" ]
+ ldflags += [ "--target=aarch64-linux-gnu" ]
+ }
+@@ -1494,7 +1494,7 @@ config("default_warnings") {
+ cflags += [ "-Wno-nonportable-include-path" ]
+ }
+
+- if (current_toolchain == host_toolchain || !use_xcode_clang) {
++ if ((current_toolchain == host_toolchain || !use_xcode_clang) && !is_bsd) {
+ # Flags NaCl (Clang 3.7) and Xcode 9.2 (Clang clang-900.0.39.2) do not
+ # recognize.
+ cflags += [
+@@ -1694,7 +1694,7 @@ config("thin_archive") {
+ # Mac and iOS use the mac-specific "libtool" command, not ar, which doesn't
+ # have a "thin archive" mode (it does accept -T, but it means truncating
+ # archive names to 16 characters, which is not what we want).
+- if ((is_posix && !is_nacl && !is_mac && !is_ios) || is_fuchsia) {
++ if ((is_posix && !is_nacl && !is_mac && !is_ios && !is_bsd) || is_fuchsia) {
+ arflags = [ "-T" ]
+ } else if (is_win && use_lld) {
+ arflags = [ "/llvmlibthin" ]
+@@ -2278,7 +2278,7 @@ config("symbols") {
+ # flag, so we can use use -g1 for pnacl and nacl-clang compiles.
+ # gcc nacl is is_nacl && !is_clang, pnacl and nacl-clang are && is_clang.
+ if (!is_nacl || is_clang) {
+- cflags += [ "-g2" ]
++ cflags += [ "-g0" ]
+ }
+ }
+ if (use_debug_fission && !is_nacl && !is_android) {
+@@ -2299,7 +2299,7 @@ config("symbols") {
+ # DWARF info may be corrupt; offsets in a range list entry are in different
+ # sections" there. Maybe just a bug in nacl_switch_32.S.
+ if (!is_mac && !is_ios && !is_nacl && current_cpu != "x86" &&
+- (use_gold || use_lld)) {
++ (use_gold || use_lld) && !is_bsd) {
+ if (is_clang) {
+ # This flag enables the GNU-format pubnames and pubtypes sections,
+ # which lld needs in order to generate a correct GDB index.
diff --git a/devel/electron5/files/patch-build_config_compiler_compiler.gni b/devel/electron5/files/patch-build_config_compiler_compiler.gni
new file mode 100644
index 000000000000..a8822c55c2a4
--- /dev/null
+++ b/devel/electron5/files/patch-build_config_compiler_compiler.gni
@@ -0,0 +1,11 @@
+--- build/config/compiler/compiler.gni.orig 2019-04-08 08:32:37 UTC
++++ build/config/compiler/compiler.gni
+@@ -179,7 +179,7 @@ declare_args() {
+ declare_args() {
+ # Whether to use the gold linker from binutils instead of lld or bfd.
+ use_gold =
+- !use_lld && !(is_chromecast && is_linux &&
++ !is_bsd && !use_lld && !(is_chromecast && is_linux &&
+ (current_cpu == "arm" || current_cpu == "mipsel")) &&
+ ((is_linux && (current_cpu == "x64" || current_cpu == "x86" ||
+ current_cpu == "arm" || current_cpu == "arm64" ||
diff --git a/devel/electron5/files/patch-build_config_features.gni b/devel/electron5/files/patch-build_config_features.gni
new file mode 100644
index 000000000000..b66a32546b9b
--- /dev/null
+++ b/devel/electron5/files/patch-build_config_features.gni
@@ -0,0 +1,11 @@
+--- build/config/features.gni.orig 2019-04-08 08:32:37 UTC
++++ build/config/features.gni
+@@ -41,7 +41,7 @@ declare_args() {
+ }
+
+ # libudev usage. This currently only affects the content layer.
+- use_udev = is_linux && !is_chromecast
++ use_udev = is_linux && !is_chromecast && !is_bsd
+
+ use_dbus = is_linux && !is_chromecast
+
diff --git a/devel/electron5/files/patch-build_config_freetype_freetype.gni b/devel/electron5/files/patch-build_config_freetype_freetype.gni
new file mode 100644
index 000000000000..392a943744ce
--- /dev/null
+++ b/devel/electron5/files/patch-build_config_freetype_freetype.gni
@@ -0,0 +1,9 @@
+--- build/config/freetype/freetype.gni.orig 2019-04-08 08:18:04 UTC
++++ build/config/freetype/freetype.gni
+@@ -10,5 +10,5 @@ declare_args() {
+ # than version 2.7.1 and have color bitmap support compiled in. WARNING:
+ # System FreeType configurations other than as described WILL INTRODUCE TEXT
+ # RENDERING AND SECURITY REGRESSIONS.
+- use_system_freetype = false
++ use_system_freetype = true
+ }
diff --git a/devel/electron5/files/patch-build_config_linux_BUILD.gn b/devel/electron5/files/patch-build_config_linux_BUILD.gn
new file mode 100644
index 000000000000..6fd924842d10
--- /dev/null
+++ b/devel/electron5/files/patch-build_config_linux_BUILD.gn
@@ -0,0 +1,11 @@
+--- build/config/linux/BUILD.gn.orig 2019-04-08 08:18:04 UTC
++++ build/config/linux/BUILD.gn
+@@ -28,7 +28,7 @@ config("runtime_library") {
+ }
+
+ if ((!is_chromeos || default_toolchain != "//build/toolchain/cros:target") &&
+- (!use_custom_libcxx || current_cpu == "mipsel")) {
++ (!use_custom_libcxx || current_cpu == "mipsel") && !is_bsd) {
+ libs = [ "atomic" ]
+ }
+ }
diff --git a/devel/electron5/files/patch-build_config_linux_pkg-config.py b/devel/electron5/files/patch-build_config_linux_pkg-config.py
new file mode 100644
index 000000000000..b9bafa482696
--- /dev/null
+++ b/devel/electron5/files/patch-build_config_linux_pkg-config.py
@@ -0,0 +1,26 @@
+--- build/config/linux/pkg-config.py.orig 2019-04-08 08:18:04 UTC
++++ build/config/linux/pkg-config.py
+@@ -57,8 +57,12 @@ def SetConfigPath(options):
+ print "You must specify an architecture via -a if using a sysroot."
+ sys.exit(1)
+
+- libdir = sysroot + '/usr/' + options.system_libdir + '/pkgconfig'
+- libdir += ':' + sysroot + '/usr/share/pkgconfig'
++ if "linux" in sys.platform:
++ libdir = sysroot + '/libdata/' + options.system_libdir + '/pkgconfig'
++ libdir += ':' + sysroot + '/usr/share/pkgconfig'
++ elif "bsd" in sys.platform:
++ libdir = sysroot + '/libdata/pkgconfig'
++ libdir += ':' + '/usr/libdata/pkgconfig'
+ os.environ['PKG_CONFIG_LIBDIR'] = libdir
+ return libdir
+
+@@ -107,7 +111,7 @@ def main():
+ # If this is run on non-Linux platforms, just return nothing and indicate
+ # success. This allows us to "kind of emulate" a Linux build from other
+ # platforms.
+- if "linux" not in sys.platform:
++ if "bsd" not in sys.platform:
+ print "[[],[],[],[],[]]"
+ return 0
+
diff --git a/devel/electron5/files/patch-build_config_sysroot.gni b/devel/electron5/files/patch-build_config_sysroot.gni
new file mode 100644
index 000000000000..b832536e2aa1
--- /dev/null
+++ b/devel/electron5/files/patch-build_config_sysroot.gni
@@ -0,0 +1,15 @@
+--- build/config/sysroot.gni.orig 2019-04-08 08:18:04 UTC
++++ build/config/sysroot.gni
+@@ -15,9 +15,10 @@ declare_args() {
+ # The absolute path to directory containing linux sysroot images
+ target_sysroot_dir = "//build/linux"
+
+- use_sysroot = current_cpu == "x86" || current_cpu == "x64" ||
++ use_sysroot = !is_bsd && (
++ current_cpu == "x86" || current_cpu == "x64" ||
+ current_cpu == "arm" || current_cpu == "arm64" ||
+- current_cpu == "mipsel" || current_cpu == "mips64el"
++ current_cpu == "mipsel" || current_cpu == "mips64el")
+ }
+
+ if (current_os == target_os && current_cpu == target_cpu &&
diff --git a/devel/electron5/files/patch-build_detect__host__arch.py b/devel/electron5/files/patch-build_detect__host__arch.py
new file mode 100644
index 000000000000..c4d84291e9eb
--- /dev/null
+++ b/devel/electron5/files/patch-build_detect__host__arch.py
@@ -0,0 +1,11 @@
+--- build/detect_host_arch.py.orig 2019-04-20 10:45:29 UTC
++++ build/detect_host_arch.py
+@@ -19,6 +19,8 @@ def HostArch():
+ host_arch = 'ia32'
+ elif host_arch in ['x86_64', 'amd64']:
+ host_arch = 'x64'
++ elif host_arch.startswith('arm64'):
++ host_arch = 'arm64'
+ elif host_arch.startswith('arm'):
+ host_arch = 'arm'
+ elif host_arch.startswith('aarch64'):
diff --git a/devel/electron5/files/patch-build_gn__run__binary.py b/devel/electron5/files/patch-build_gn__run__binary.py
new file mode 100644
index 000000000000..33adc4264c39
--- /dev/null
+++ b/devel/electron5/files/patch-build_gn__run__binary.py
@@ -0,0 +1,11 @@
+--- build/gn_run_binary.py.orig 2019-04-08 08:18:04 UTC
++++ build/gn_run_binary.py
+@@ -22,7 +22,7 @@ if not os.path.isabs(path):
+ # The rest of the arguments are passed directly to the executable.
+ args = [path] + sys.argv[2:]
+
+-ret = subprocess.call(args)
++ret = subprocess.call(args, env={"CHROME_EXE_PATH":"${WRKSRC}/out/Release/chrome"})
+ if ret != 0:
+ if ret <= -100:
+ # Windows error codes such as 0xC0000005 and 0xC0000409 are much easier to
diff --git a/devel/electron5/files/patch-build_linux_chrome.map b/devel/electron5/files/patch-build_linux_chrome.map
new file mode 100644
index 000000000000..90380ac5ce61
--- /dev/null
+++ b/devel/electron5/files/patch-build_linux_chrome.map
@@ -0,0 +1,29 @@
+--- build/linux/chrome.map.orig 2019-04-08 08:18:04 UTC
++++ build/linux/chrome.map
+@@ -1,4 +1,7 @@
+ {
++local:
++ *;
++
+ global:
+ __bss_start;
+ __data_start;
+@@ -20,6 +23,10 @@ global:
+ # Program entry point.
+ _start;
+
++ # FreeBSD specific variables.
++ __progname;
++ environ;
++
+ # Memory allocation symbols. We want chrome and any libraries to
+ # share the same heap, so it is correct to export these symbols.
+ calloc;
+@@ -81,7 +88,4 @@ global:
+ localtime64;
+ localtime64_r;
+ localtime_r;
+-
+-local:
+- *;
+ };
diff --git a/devel/electron5/files/patch-build_linux_libpci_BUILD.gn b/devel/electron5/files/patch-build_linux_libpci_BUILD.gn
new file mode 100644
index 000000000000..3569104ae96c
--- /dev/null
+++ b/devel/electron5/files/patch-build_linux_libpci_BUILD.gn
@@ -0,0 +1,53 @@
+--- build/linux/libpci/BUILD.gn.orig 2019-04-08 08:18:04 UTC
++++ build/linux/libpci/BUILD.gn
+@@ -3,20 +3,36 @@
+ # found in the LICENSE file.
+
+ import("//tools/generate_library_loader/generate_library_loader.gni")
++import("//build/config/linux/pkg_config.gni")
+
+-# This generates a target named "libpci".
+-generate_library_loader("libpci") {
+- name = "LibPciLoader"
+- output_h = "libpci.h"
+- output_cc = "libpci_loader.cc"
+- header = "<pci/pci.h>"
++declare_args() {
++ use_system_libpci = is_bsd
++}
+
+- functions = [
+- "pci_alloc",
+- "pci_init",
+- "pci_cleanup",
+- "pci_scan_bus",
+- "pci_fill_info",
+- "pci_lookup_name",
+- ]
++if (use_system_libpci) {
++ pkg_config("system_libpci") {
++ packages = [ "libpci" ]
++ }
++
++ source_set("libpci") {
++ public_configs = [ ":system_libpci" ]
++ }
++
++} else {
++ # This generates a target named "libpci".
++ generate_library_loader("libpci") {
++ name = "LibPciLoader"
++ output_h = "libpci.h"
++ output_cc = "libpci_loader.cc"
++ header = "<pci/pci.h>"
++
++ functions = [
++ "pci_alloc",
++ "pci_init",
++ "pci_cleanup",
++ "pci_scan_bus",
++ "pci_fill_info",
++ "pci_lookup_name",
++ ]
++ }
+ }
diff --git a/devel/electron5/files/patch-build_linux_unbundle_libusb.gn b/devel/electron5/files/patch-build_linux_unbundle_libusb.gn
new file mode 100644
index 000000000000..0a591fbd6d63
--- /dev/null
+++ b/devel/electron5/files/patch-build_linux_unbundle_libusb.gn
@@ -0,0 +1,27 @@
+--- build/linux/unbundle/libusb.gn.orig 2019-04-09 12:48:44 UTC
++++ build/linux/unbundle/libusb.gn
+@@ -0,0 +1,24 @@
++# Copyright 2016 The Chromium Authors. All rights reserved.
++# Use of this source code is governed by a BSD-style license that can be
++# found in the LICENSE file.
++
++import("//build/config/linux/pkg_config.gni")
++import("//build/shim_headers.gni")
++
++pkg_config("system_libusb") {
++ packages = [ "libusb-1.0" ]
++}
++
++shim_headers("libusb_shim") {
++ root_path = "src/libusb"
++ headers = [
++ "libusb.h",
++ ]
++}
++
++source_set("libusb") {
++ deps = [
++ ":libusb_shim",
++ ]
++ public_configs = [ ":system_libusb" ]
++}
diff --git a/devel/electron5/files/patch-build_linux_unbundle_replace__gn__files.py b/devel/electron5/files/patch-build_linux_unbundle_replace__gn__files.py
new file mode 100644
index 000000000000..3c324e793147
--- /dev/null
+++ b/devel/electron5/files/patch-build_linux_unbundle_replace__gn__files.py
@@ -0,0 +1,10 @@
+--- build/linux/unbundle/replace_gn_files.py.orig 2019-04-08 08:18:04 UTC
++++ build/linux/unbundle/replace_gn_files.py
+@@ -27,6 +27,7 @@ REPLACEMENTS = {
+ 'libevent': 'base/third_party/libevent/BUILD.gn',
+ 'libjpeg': 'third_party/libjpeg.gni',
+ 'libpng': 'third_party/libpng/BUILD.gn',
++ 'libusb': 'third_party/libusb/BUILD.gn',
+ 'libvpx': 'third_party/libvpx/BUILD.gn',
+ 'libwebp': 'third_party/libwebp/BUILD.gn',
+ 'libxml': 'third_party/libxml/BUILD.gn',
diff --git a/devel/electron5/files/patch-build_toolchain_gcc__toolchain.gni b/devel/electron5/files/patch-build_toolchain_gcc__toolchain.gni
new file mode 100644
index 000000000000..36464dcaefe3
--- /dev/null
+++ b/devel/electron5/files/patch-build_toolchain_gcc__toolchain.gni
@@ -0,0 +1,45 @@
+--- build/toolchain/gcc_toolchain.gni.orig 2019-04-08 08:32:38 UTC
++++ build/toolchain/gcc_toolchain.gni
+@@ -47,6 +47,11 @@ analyzer_wrapper =
+ rebase_path("//build/toolchain/clang_static_analyzer_wrapper.py",
+ root_build_dir) + " --mode=clang"
+
++declare_args() {
++ extra_cxxflags = ""
++ extra_ldflags = ""
++}
++
+ # This template defines a toolchain for something that works like gcc
+ # (including clang).
+ #
+@@ -610,13 +615,23 @@ template("clang_toolchain") {
+ }
+
+ gcc_toolchain(target_name) {
+- prefix = rebase_path("$clang_base_path/bin", root_build_dir)
+- cc = "$prefix/clang"
+- cxx = "$prefix/clang++"
+- ld = cxx
+- readelf = "${toolprefix}readelf"
+- ar = "${prefix}/llvm-ar"
+- nm = "${toolprefix}nm"
++ if (is_bsd) {
++ prefix = "/usr/local/bin"
++ cc = "cc"
++ cxx = "c++"
++ ld = cxx
++ readelf = "readelf"
++ ar = "${prefix}/ar"
++ nm = "${toolprefix}nm"
++ } else {
++ prefix = rebase_path("$clang_base_path/bin", root_build_dir)
++ cc = "$prefix/clang"
++ cxx = "$prefix/clang++"
++ ld = cxx
++ readelf = "${toolprefix}readelf"
++ ar = "${prefix}/llvm-ar"
++ nm = "${toolprefix}nm"
++ }
+
+ forward_variables_from(invoker,
+ [
diff --git a/devel/electron5/files/patch-build_toolchain_get__concurrent__links.py b/devel/electron5/files/patch-build_toolchain_get__concurrent__links.py
new file mode 100644
index 000000000000..80deb4907cc2
--- /dev/null
+++ b/devel/electron5/files/patch-build_toolchain_get__concurrent__links.py
@@ -0,0 +1,17 @@
+--- build/toolchain/get_concurrent_links.py.orig 2019-04-08 08:32:38 UTC
++++ build/toolchain/get_concurrent_links.py
+@@ -46,6 +46,14 @@ def _GetTotalMemoryInBytes():
+ return int(subprocess.check_output(['sysctl', '-n', 'hw.memsize']))
+ except Exception:
+ return 0
++ elif sys.platform.startswith('freebsd'):
++ try:
++ avail_bytes = int(subprocess.check_output(['sysctl', '-n', 'hw.physmem']))
++ # With -fuse-lld it doesn't take a lot of ram, feel free to change that
++ # 1 * ... to needed amount
++ return max(1, avail_bytes / (1 * (2 ** 30))) # total / 4GB
++ except Exception:
++ return 1
+ # TODO(scottmg): Implement this for other platforms.
+ return 0
+
diff --git a/devel/electron5/files/patch-build_toolchain_linux_BUILD.gn b/devel/electron5/files/patch-build_toolchain_linux_BUILD.gn
new file mode 100644
index 000000000000..87f9f232d50f
--- /dev/null
+++ b/devel/electron5/files/patch-build_toolchain_linux_BUILD.gn
@@ -0,0 +1,10 @@
+--- build/toolchain/linux/BUILD.gn.orig 2019-04-08 08:32:38 UTC
++++ build/toolchain/linux/BUILD.gn
+@@ -14,7 +14,6 @@ clang_toolchain("clang_arm") {
+ }
+
+ clang_toolchain("clang_arm64") {
+- toolprefix = "aarch64-linux-gnu-"
+ toolchain_args = {
+ current_cpu = "arm64"
+ current_os = "linux"
diff --git a/devel/electron5/files/patch-cc_BUILD.gn b/devel/electron5/files/patch-cc_BUILD.gn
new file mode 100644
index 000000000000..e1f804908425
--- /dev/null
+++ b/devel/electron5/files/patch-cc_BUILD.gn
@@ -0,0 +1,21 @@
+--- cc/BUILD.gn.orig 2019-04-08 08:32:38 UTC
++++ cc/BUILD.gn
+@@ -548,7 +548,7 @@ cc_test_static_library("test_support") {
+ "//ui/gl:test_support",
+ "//ui/latency",
+ ]
+- if (!is_android) {
++ if (!is_android && !is_bsd) {
+ data_deps = [
+ "//third_party/mesa_headers",
+ ]
+@@ -746,9 +746,6 @@ cc_test("cc_unittests") {
+ "//ui/gfx/geometry",
+ "//ui/gl",
+ "//ui/gl:test_support",
+- ]
+- data_deps = [
+- "//third_party/mesa_headers",
+ ]
+ }
+
diff --git a/devel/electron5/files/patch-cc_layers_scrollbar__layer__impl__base.cc b/devel/electron5/files/patch-cc_layers_scrollbar__layer__impl__base.cc
new file mode 100644
index 000000000000..3afd448f825c
--- /dev/null
+++ b/devel/electron5/files/patch-cc_layers_scrollbar__layer__impl__base.cc
@@ -0,0 +1,13 @@
+--- cc/layers/scrollbar_layer_impl_base.cc.orig 2019-04-08 08:18:04 UTC
++++ cc/layers/scrollbar_layer_impl_base.cc
+@@ -218,8 +218,8 @@ gfx::Rect ScrollbarLayerImplBase::ComputeThumbQuadRect
+ int thumb_offset = TrackStart();
+ if (maximum > 0) {
+ float ratio = clamped_current_pos / maximum;
+- float max_offset = track_length - thumb_length;
+- thumb_offset += static_cast<int>(ratio * max_offset);
++ float _max_offset = track_length - thumb_length;
++ thumb_offset += static_cast<int>(ratio * _max_offset);
+ }
+
+ float thumb_thickness_adjustment =
diff --git a/devel/electron5/files/patch-cc_trees_property__tree.cc b/devel/electron5/files/patch-cc_trees_property__tree.cc
new file mode 100644
index 000000000000..ae720cf5bf96
--- /dev/null
+++ b/devel/electron5/files/patch-cc_trees_property__tree.cc
@@ -0,0 +1,20 @@
+--- cc/trees/property_tree.cc.orig 2019-04-08 08:32:38 UTC
++++ cc/trees/property_tree.cc
+@@ -1325,13 +1325,13 @@ gfx::ScrollOffset ScrollTree::MaxScrollOffset(int scro
+
+ gfx::Size clip_layer_bounds = container_bounds(scroll_node->id);
+
+- gfx::ScrollOffset max_offset(
++ gfx::ScrollOffset _max_offset(
+ scaled_scroll_bounds.width() - clip_layer_bounds.width(),
+ scaled_scroll_bounds.height() - clip_layer_bounds.height());
+
+- max_offset.Scale(1 / scale_factor);
+- max_offset.SetToMax(gfx::ScrollOffset());
+- return max_offset;
++ _max_offset.Scale(1 / scale_factor);
++ _max_offset.SetToMax(gfx::ScrollOffset());
++ return _max_offset;
+ }
+
+ gfx::SizeF ScrollTree::scroll_bounds(int scroll_node_id) const {
diff --git a/devel/electron5/files/patch-chrome_app_chrome__command__ids.h b/devel/electron5/files/patch-chrome_app_chrome__command__ids.h
new file mode 100644
index 000000000000..a19810b9c14c
--- /dev/null
+++ b/devel/electron5/files/patch-chrome_app_chrome__command__ids.h
@@ -0,0 +1,11 @@
+--- chrome/app/chrome_command_ids.h.orig 2019-04-08 08:32:41 UTC
++++ chrome/app/chrome_command_ids.h
+@@ -63,7 +63,7 @@
+ #define IDC_VISIT_DESKTOP_OF_LRU_USER_2 34049
+ #define IDC_VISIT_DESKTOP_OF_LRU_USER_3 34050
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ #define IDC_USE_SYSTEM_TITLE_BAR 34051
+ #define IDC_RESTORE_WINDOW 34052
+ #endif
diff --git a/devel/electron5/files/patch-chrome_app_chrome__main.cc b/devel/electron5/files/patch-chrome_app_chrome__main.cc
new file mode 100644
index 000000000000..d2d72495cb2e
--- /dev/null
+++ b/devel/electron5/files/patch-chrome_app_chrome__main.cc
@@ -0,0 +1,16 @@
+--- chrome/app/chrome_main.cc.orig 2019-04-08 08:32:41 UTC
++++ chrome/app/chrome_main.cc
+@@ -93,11 +93,11 @@ int ChromeMain(int argc, const char** argv) {
+ #endif
+
+ // Chrome-specific process modes.
+-#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_BSD)
+ if (command_line->HasSwitch(switches::kHeadless)) {
+ return headless::HeadlessShellMain(params);
+ }
+-#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN)
++#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_BSD)
+
+ int rv = content::ContentMain(params);
+
diff --git a/devel/electron5/files/patch-chrome_app_chrome__main__delegate.cc b/devel/electron5/files/patch-chrome_app_chrome__main__delegate.cc
new file mode 100644
index 000000000000..02eaf329244d
--- /dev/null
+++ b/devel/electron5/files/patch-chrome_app_chrome__main__delegate.cc
@@ -0,0 +1,128 @@
+--- chrome/app/chrome_main_delegate.cc.orig 2019-04-08 08:32:41 UTC
++++ chrome/app/chrome_main_delegate.cc
+@@ -101,7 +101,7 @@
+ #include "chrome/app/shutdown_signal_handlers_posix.h"
+ #endif
+
+-#if BUILDFLAG(ENABLE_NACL) && defined(OS_LINUX)
++#if BUILDFLAG(ENABLE_NACL) && defined(OS_LINUX) && !defined(OS_BSD)
+ #include "components/nacl/common/nacl_paths.h"
+ #include "components/nacl/zygote/nacl_fork_delegate_linux.h"
+ #endif
+@@ -135,7 +135,7 @@
+ #include "v8/include/v8.h"
+ #endif
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include "base/environment.h"
+ #endif
+
+@@ -232,7 +232,7 @@ bool UseHooks() {
+
+ #endif // defined(OS_WIN)
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) && !defined(OS_BSD)
+ void AdjustLinuxOOMScore(const std::string& process_type) {
+ // Browsers and zygotes should still be killable, but killed last.
+ const int kZygoteScore = 0;
+@@ -291,7 +291,7 @@ void AdjustLinuxOOMScore(const std::string& process_ty
+ if (score > -1)
+ base::AdjustOOMScore(base::GetCurrentProcId(), score);
+ }
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) && !defined(OS_BSD)
+
+ // Returns true if this subprocess type needs the ResourceBundle initialized
+ // and resources loaded.
+@@ -336,7 +336,7 @@ bool HandleVersionSwitches(const base::CommandLine& co
+ return false;
+ }
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ // Show the man page if --help or -h is on the command line.
+ void HandleHelpSwitches(const base::CommandLine& command_line) {
+ if (command_line.HasSwitch(switches::kHelp) ||
+@@ -346,7 +346,7 @@ void HandleHelpSwitches(const base::CommandLine& comma
+ PLOG(FATAL) << "execlp failed";
+ }
+ }
+-#endif // defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#endif // (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+
+ #if !defined(OS_MACOSX) && !defined(OS_ANDROID)
+ void SIGTERMProfilingShutdown(int signal) {
+@@ -400,7 +400,7 @@ void InitializeUserDataDir(base::CommandLine* command_
+ std::string process_type =
+ command_line->GetSwitchValueASCII(switches::kProcessType);
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // On Linux, Chrome does not support running multiple copies under different
+ // DISPLAYs, so the profile directory can be specified in the environment to
+ // support the virtual desktop use-case.
+@@ -412,7 +412,7 @@ void InitializeUserDataDir(base::CommandLine* command_
+ user_data_dir = base::FilePath::FromUTF8Unsafe(user_data_dir_string);
+ }
+ }
+-#endif // OS_LINUX
++#endif // OS_LINUX || OS_BSD
+ #if defined(OS_MACOSX)
+ policy::path_parser::CheckUserDataDirPolicy(&user_data_dir);
+ #endif // OS_MAC
+@@ -469,7 +469,7 @@ void InitLogging(const std::string& process_type) {
+ void RecordMainStartupMetrics(base::TimeTicks exe_entry_point_ticks) {
+ if (!exe_entry_point_ticks.is_null())
+ startup_metric_utils::RecordExeMainEntryPointTicks(exe_entry_point_ticks);
+-#if defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_LINUX)
++#if defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD)
+ // Record the startup process creation time on supported platforms.
+ startup_metric_utils::RecordStartupProcessCreationTime(
+ base::Process::Current().CreationTime());
+@@ -596,7 +596,7 @@ bool ChromeMainDelegate::BasicStartupComplete(int* exi
+ *exit_code = 0;
+ return true; // Got a --version switch; exit with a success error code.
+ }
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ // This will directly exit if the user asked for help.
+ HandleHelpSwitches(command_line);
+ #endif
+@@ -620,7 +620,7 @@ bool ChromeMainDelegate::BasicStartupComplete(int* exi
+ #if defined(OS_CHROMEOS)
+ chromeos::RegisterPathProvider();
+ #endif
+-#if BUILDFLAG(ENABLE_NACL) && defined(OS_LINUX)
++#if BUILDFLAG(ENABLE_NACL) && defined(OS_LINUX) && !defined(OS_BSD)
+ nacl::RegisterPathProvider();
+ #endif
+
+@@ -936,7 +936,7 @@ void ChromeMainDelegate::PreSandboxStartup() {
+ InitializePDF();
+ #endif
+
+-#if defined(OS_POSIX) && !defined(OS_MACOSX)
++#if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_BSD)
+ // Zygote needs to call InitCrashReporter() in RunZygote().
+ if (process_type != service_manager::switches::kZygoteProcess) {
+ #if defined(OS_ANDROID)
+@@ -951,7 +951,7 @@ void ChromeMainDelegate::PreSandboxStartup() {
+ breakpad::InitCrashReporter(process_type);
+ #endif // defined(OS_ANDROID)
+ }
+-#endif // defined(OS_POSIX) && !defined(OS_MACOSX)
++#endif // defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_BSD)
+
+ // After all the platform Breakpads have been initialized, store the command
+ // line for crash reporting.
+@@ -961,7 +961,7 @@ void ChromeMainDelegate::PreSandboxStartup() {
+ void ChromeMainDelegate::SandboxInitialized(const std::string& process_type) {
+ // Note: If you are adding a new process type below, be sure to adjust the
+ // AdjustLinuxOOMScore function too.
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) && !defined(OS_BSD)
+ AdjustLinuxOOMScore(process_type);
+ #endif
+ #if defined(OS_WIN)
diff --git a/devel/electron5/files/patch-chrome_app_chromium__strings.grd b/devel/electron5/files/patch-chrome_app_chromium__strings.grd
new file mode 100644
index 000000000000..35ac8716f2a3
--- /dev/null
+++ b/devel/electron5/files/patch-chrome_app_chromium__strings.grd
@@ -0,0 +1,20 @@
+--- chrome/app/chromium_strings.grd.orig 2019-04-08 08:32:41 UTC
++++ chrome/app/chromium_strings.grd
+@@ -809,7 +809,7 @@ Signing in anyway will merge Chromium information like
+ </message>
+
+ <!-- ProcessSingleton -->
+- <if expr="is_linux or is_macosx">
++ <if expr="is_linux or is_macosx or is_posix">
+ <message name="IDS_PROFILE_IN_USE_POSIX" desc="Message shown when the browser cannot start because the profile is in use on a different host.">
+ The profile appears to be in use by another Chromium process (<ph name="PROCESS_ID">$1<ex>12345</ex></ph>) on another computer (<ph name="HOST_NAME">$2<ex>example.com</ex></ph>). Chromium has locked the profile so that it doesn't get corrupted. If you are sure no other processes are using this profile, you can unlock the profile and relaunch Chromium.
+ </message>
+@@ -1057,7 +1057,7 @@ Please check your email at <ph name="ACCOUNT_EMAIL">$2
+ </message>
+
+ <!-- Plugin Placeholders -->
+- <if expr="is_linux">
++ <if expr="is_posix">
+ <message name="IDS_PLUGIN_RESTART_REQUIRED" desc="The placeholder text for a plugin that can't be loaded until the browser is restarted.">
+ Restart Chromium to enable <ph name="PLUGIN_NAME">$1<ex>Flash</ex></ph>
+ </message>
diff --git a/devel/electron5/files/patch-chrome_app_generated__resources.grd b/devel/electron5/files/patch-chrome_app_generated__resources.grd
new file mode 100644
index 000000000000..cf7c5d330c7e
--- /dev/null
+++ b/devel/electron5/files/patch-chrome_app_generated__resources.grd
@@ -0,0 +1,29 @@
+--- chrome/app/generated_resources.grd.orig 2019-04-08 08:32:41 UTC
++++ chrome/app/generated_resources.grd
+@@ -5339,7 +5339,7 @@ the Bookmarks menu.">
+ </message>
+ </if>
+
+- <if expr="is_win or (is_linux and not chromeos)">
++ <if expr="is_win or (is_posix and not chromeos)">
+ <message name="IDS_QUIT_ACCELERATOR_TUTORIAL" desc="Instructions for how the user should quit using keyboard shortcuts.">
+ Press |<ph name="ACCELERATOR1">$1<ex>Ctrl</ex></ph>|+|<ph name="ACCELERATOR2">$2<ex>Shift</ex></ph>| followed by |<ph name="ACCELERATOR3">$3<ex>Q</ex></ph>| to exit
+ </message>
+@@ -6160,7 +6160,7 @@ the Bookmarks menu.">
+ Google Pay
+ </message>
+
+- <if expr="is_linux and not chromeos">
++ <if expr="is_posix and not chromeos">
+ <message name="IDS_SHOW_WINDOW_DECORATIONS" desc="The label of a radio button in the options dialog for using the system title bar and borders.">
+ Use system title bar and borders
+ </message>
+@@ -6946,7 +6946,7 @@ Please help our engineers fix this problem. Tell us wh
+ Set as default
+ </message>
+
+- <if expr="is_linux and not chromeos">
++ <if expr="is_posix and not chromeos">
+ <message name="IDS_MINIMIZE_WINDOW_MENU" desc="The Linux browser window menu item text for minimizing the window.">
+ Minimize
+ </message>
diff --git a/devel/electron5/files/patch-chrome_app_google__chrome__strings.grd b/devel/electron5/files/patch-chrome_app_google__chrome__strings.grd
new file mode 100644
index 000000000000..bf2b9192b98b
--- /dev/null
+++ b/devel/electron5/files/patch-chrome_app_google__chrome__strings.grd
@@ -0,0 +1,20 @@
+--- chrome/app/google_chrome_strings.grd.orig 2019-04-08 08:32:41 UTC
++++ chrome/app/google_chrome_strings.grd
+@@ -820,7 +820,7 @@ Signing in anyway will merge Chrome information like b
+ </message>
+
+ <!-- ProcessSingleton -->
+- <if expr="is_linux or is_macosx">
++ <if expr="is_linux or is_macosx or is_posix">
+ <message name="IDS_PROFILE_IN_USE_POSIX" desc="Message shown when the browser cannot start because the profile is in use on a different host.">
+ The profile appears to be in use by another Google Chrome process (<ph name="PROCESS_ID">$1<ex>12345</ex></ph>) on another computer (<ph name="HOST_NAME">$2<ex>example.com</ex></ph>). Chrome has locked the profile so that it doesn't get corrupted. If you are sure no other processes are using this profile, you can unlock the profile and relaunch Chrome.
+ </message>
+@@ -1075,7 +1075,7 @@ Please check your email at <ph name="ACCOUNT_EMAIL">$2
+ </message>
+
+ <!-- Plugin Placeholders -->
+- <if expr="is_linux">
++ <if expr="is_posix">
+ <message name="IDS_PLUGIN_RESTART_REQUIRED" desc="The placeholder text for a plugin that can't be loaded until the browser is restarted.">
+ Restart Chrome to enable <ph name="PLUGIN_NAME">$1<ex>Flash</ex></ph>
+ </message>
diff --git a/devel/electron5/files/patch-chrome_app_settings__strings.grdp b/devel/electron5/files/patch-chrome_app_settings__strings.grdp
new file mode 100644
index 000000000000..71ac17299cf9
--- /dev/null
+++ b/devel/electron5/files/patch-chrome_app_settings__strings.grdp
@@ -0,0 +1,20 @@
+--- chrome/app/settings_strings.grdp.orig 2019-04-08 08:32:43 UTC
++++ chrome/app/settings_strings.grdp
+@@ -580,7 +580,7 @@
+ Themes
+ </message>
+ </if>
+- <if expr="is_linux and not chromeos">
++ <if expr="is_posix and not chromeos">
+ <message name="IDS_SETTINGS_SYSTEM_THEME" desc="Text of the label describing the system (GTK+) browser theme on Linux">
+ GTK+
+ </message>
+@@ -594,7 +594,7 @@
+ Use Classic
+ </message>
+ </if>
+- <if expr="not is_linux or chromeos">
++ <if expr="not is_posix or chromeos">
+ <message name="IDS_SETTINGS_RESET_TO_DEFAULT_THEME" desc="Name of the control which resets the browser theme back to the default theme.">
+ Reset to default
+ </message>
diff --git a/devel/electron5/files/patch-chrome_app_shutdown__signal__handlers__posix.cc b/devel/electron5/files/patch-chrome_app_shutdown__signal__handlers__posix.cc
new file mode 100644
index 000000000000..0bd4bbf1e68d
--- /dev/null
+++ b/devel/electron5/files/patch-chrome_app_shutdown__signal__handlers__posix.cc
@@ -0,0 +1,21 @@
+--- chrome/app/shutdown_signal_handlers_posix.cc.orig 2019-04-08 08:32:43 UTC
++++ chrome/app/shutdown_signal_handlers_posix.cc
+@@ -183,12 +183,18 @@ void InstallShutdownSignalHandlers(
+ g_pipe_pid = getpid();
+ g_shutdown_pipe_read_fd = pipefd[0];
+ g_shutdown_pipe_write_fd = pipefd[1];
++#if defined(OS_BSD)
++ // PTHREAD_STACK_MIN causes chromium to crash under FreeBSD,
++ // we request the default pthread stack size by specifying 0 here.
++ const size_t kShutdownDetectorThreadStackSize = 0;
++#else
+ #if !defined(ADDRESS_SANITIZER)
+ const size_t kShutdownDetectorThreadStackSize = PTHREAD_STACK_MIN * 2;
+ #else
+ // ASan instrumentation bloats the stack frames, so we need to increase the
+ // stack size to avoid hitting the guard page.
+ const size_t kShutdownDetectorThreadStackSize = PTHREAD_STACK_MIN * 4;
++#endif
+ #endif
+ ShutdownDetector* detector = new ShutdownDetector(
+ g_shutdown_pipe_read_fd, shutdown_callback, task_runner);
diff --git a/devel/electron5/files/patch-chrome_app_theme_chrome__unscaled__resources.grd b/devel/electron5/files/patch-chrome_app_theme_chrome__unscaled__resources.grd
new file mode 100644
index 000000000000..ae8423b12b87
--- /dev/null
+++ b/devel/electron5/files/patch-chrome_app_theme_chrome__unscaled__resources.grd
@@ -0,0 +1,11 @@
+--- chrome/app/theme/chrome_unscaled_resources.grd.orig 2019-04-08 08:32:43 UTC
++++ chrome/app/theme/chrome_unscaled_resources.grd
+@@ -100,7 +100,7 @@
+ <include name="IDR_PROFILE_AVATAR_2X_25" file="default_200_percent/common/profile_avatar_sun_cloud.png" type="BINDATA" />
+ <include name="IDR_PROFILE_AVATAR_2X_26" file="default_200_percent/common/profile_avatar_placeholder.png" type="BINDATA" />
+ </if>
+- <if expr="is_linux and enable_app_list">
++ <if expr="is_posix and enable_app_list">
+ <!-- App Launcher icons for desktop icon. -->
+ <if expr="_google_chrome">
+ <then>
diff --git a/devel/electron5/files/patch-chrome_browser_about__flags.cc b/devel/electron5/files/patch-chrome_browser_about__flags.cc
new file mode 100644
index 000000000000..a09c0da499f6
--- /dev/null
+++ b/devel/electron5/files/patch-chrome_browser_about__flags.cc
@@ -0,0 +1,120 @@
+--- chrome/browser/about_flags.cc.orig 2019-04-08 08:32:43 UTC
++++ chrome/browser/about_flags.cc
+@@ -749,7 +749,7 @@ const FeatureEntry::FeatureVariation kAutofillPreviewS
+ {"(Black on GoogleYellow050)", kAutofillPreviewStyleBlackOnYellow050,
+ base::size(kAutofillPreviewStyleBlackOnYellow050), nullptr}};
+
+-#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_BSD)
+ const FeatureEntry::FeatureParam kPedalSuggestionInSuggestion[] = {
+ {OmniboxFieldTrial::kPedalSuggestionModeParam, "in_suggestion"}};
+ const FeatureEntry::FeatureParam kPedalSuggestionDedicated[] = {
+@@ -760,7 +760,7 @@ const FeatureEntry::FeatureVariation kPedalSuggestionV
+ {"Dedicated Suggestion Line", kPedalSuggestionDedicated,
+ base::size(kPedalSuggestionDedicated), nullptr},
+ };
+-#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN)
++#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_BSD)
+
+ const FeatureEntry::Choice kAutoplayPolicyChoices[] = {
+ {flags_ui::kGenericExperimentChoiceDefault, "", ""},
+@@ -2362,12 +2362,12 @@ const FeatureEntry kFeatureEntries[] = {
+ {"force-text-direction", flag_descriptions::kForceTextDirectionName,
+ flag_descriptions::kForceTextDirectionDescription, kOsAll,
+ MULTI_VALUE_TYPE(kForceTextDirectionChoices)},
+-#if defined(OS_WIN) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD)
+ {"enable-input-ime-api", flag_descriptions::kEnableInputImeApiName,
+ flag_descriptions::kEnableInputImeApiDescription, kOsWin | kOsLinux,
+ ENABLE_DISABLE_VALUE_TYPE(switches::kEnableInputImeAPI,
+ switches::kDisableInputImeAPI)},
+-#endif // OS_WIN || OS_LINUX
++#endif // OS_WIN || OS_LINUX || OS_BSD
+ {"enable-origin-trials", flag_descriptions::kOriginTrialsName,
+ flag_descriptions::kOriginTrialsDescription, kOsAll,
+ FEATURE_VALUE_TYPE(features::kOriginTrials)},
+@@ -2562,12 +2562,12 @@ const FeatureEntry kFeatureEntries[] = {
+ FEATURE_VALUE_TYPE(chrome::android::kAndroidNightMode)},
+ #endif // BUILDFLAG(ENABLE_ANDROID_NIGHT_MODE)
+ #endif // OS_ANDROID
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ {"passwords-migrate-linux-to-login-db",
+ flag_descriptions::kPasswordsMigrateLinuxToLoginDBName,
+ flag_descriptions::kPasswordsMigrateLinuxToLoginDBDescription, kOsLinux,
+ FEATURE_VALUE_TYPE(password_manager::features::kMigrateLinuxToLoginDB)},
+-#endif // defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#endif // (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ {"enable-experimental-accessibility-features",
+ flag_descriptions::kExperimentalAccessibilityFeaturesName,
+ flag_descriptions::kExperimentalAccessibilityFeaturesDescription, kOsCrOS,
+@@ -3001,7 +3001,7 @@ const FeatureEntry kFeatureEntries[] = {
+ FEATURE_VALUE_TYPE(omnibox::kOmniboxNewAnswerLayout)},
+ #endif // defined(OS_ANDROID)
+
+-#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_BSD)
+ {"omnibox-reverse-answers", flag_descriptions::kOmniboxReverseAnswersName,
+ flag_descriptions::kOmniboxReverseAnswersDescription, kOsDesktop,
+ FEATURE_VALUE_TYPE(omnibox::kOmniboxReverseAnswers)},
+@@ -3026,7 +3026,7 @@ const FeatureEntry kFeatureEntries[] = {
+ flag_descriptions::kOmniboxDriveSuggestionsName,
+ flag_descriptions::kOmniboxDriveSuggestionsDescriptions, kOsDesktop,
+ FEATURE_VALUE_TYPE(omnibox::kDocumentProvider)},
+-#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN)
++#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_BSD)
+
+ {"enable-speculative-service-worker-start-on-query-input",
+ flag_descriptions::kSpeculativeServiceWorkerStartOnQueryInputName,
+@@ -3342,7 +3342,7 @@ const FeatureEntry kFeatureEntries[] = {
+ flag_descriptions::kClickToOpenPDFDescription, kOsAll,
+ FEATURE_VALUE_TYPE(features::kClickToOpenPDFPlaceholder)},
+
+-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+ {"direct-manipulation-stylus",
+ flag_descriptions::kDirectManipulationStylusName,
+ flag_descriptions::kDirectManipulationStylusDescription,
+@@ -3353,7 +3353,7 @@ const FeatureEntry kFeatureEntries[] = {
+ flag_descriptions::kShowManagedUiDescription,
+ kOsWin | kOsMac | kOsLinux | kOsCrOS,
+ FEATURE_VALUE_TYPE(features::kShowManagedUi)},
+-#endif // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
++#endif // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+
+ #if defined(OS_ANDROID)
+ {"third-party-doodles", flag_descriptions::kThirdPartyDoodlesName,
+@@ -4280,7 +4280,7 @@ const FeatureEntry kFeatureEntries[] = {
+ FEATURE_VALUE_TYPE(features::kForceEnableSystemAec)},
+ #endif // defined(OS_MACOSX) || defined(OS_CHROMEOS)
+
+-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+ {"autofill-always-show-server-cards-in-sync-transport",
+ flag_descriptions::kAutofillAlwaysShowServerCardsInSyncTransportName,
+ flag_descriptions::
+@@ -4288,7 +4288,7 @@ const FeatureEntry kFeatureEntries[] = {
+ kOsMac | kOsWin | kOsLinux,
+ FEATURE_VALUE_TYPE(
+ autofill::features::kAutofillAlwaysShowServerCardsInSyncTransport)},
+-#endif // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
++#endif // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+
+ #if BUILDFLAG(ENABLE_PRINT_PREVIEW) && defined(OS_MACOSX)
+ {"enable-custom-mac-paper-sizes",
+@@ -4333,13 +4333,13 @@ const FeatureEntry kFeatureEntries[] = {
+ FEATURE_VALUE_TYPE(features::kCrostiniAppSearch)},
+ #endif // OS_CHROMEOS
+
+-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+ {"autofill-settings-split-by-card-type",
+ flag_descriptions::kAutofillSettingsSplitByCardTypeName,
+ flag_descriptions::kAutofillSettingsSplitByCardTypeDescription,
+ kOsMac | kOsWin | kOsLinux,
+ FEATURE_VALUE_TYPE(autofill::features::kAutofillSettingsCardTypeSplit)},
+-#endif // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
++#endif // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+
+ #if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_CHROMEOS)
+ {"hardware-media-key-handling",
diff --git a/devel/electron5/files/patch-chrome_browser_after__startup__task__utils.cc b/devel/electron5/files/patch-chrome_browser_after__startup__task__utils.cc
new file mode 100644
index 000000000000..c5ae4f11fec0
--- /dev/null
+++ b/devel/electron5/files/patch-chrome_browser_after__startup__task__utils.cc
@@ -0,0 +1,38 @@
+--- chrome/browser/after_startup_task_utils.cc.orig 2019-04-08 08:18:06 UTC
++++ chrome/browser/after_startup_task_utils.cc
+@@ -29,7 +29,7 @@
+ #include "content/public/browser/web_contents.h"
+ #include "content/public/browser/web_contents_observer.h"
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ #include "ui/views/linux_ui/linux_ui.h"
+ #endif
+
+@@ -115,7 +115,7 @@ void QueueTask(std::unique_ptr<AfterStartupTask> queue
+
+ void SetBrowserStartupIsComplete() {
+ DCHECK_CURRENTLY_ON(BrowserThread::UI);
+-#if defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_LINUX)
++#if defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD)
+ // Process::Current().CreationTime() is not available on all platforms.
+ const base::Time process_creation_time =
+ base::Process::Current().CreationTime();
+@@ -123,7 +123,7 @@ void SetBrowserStartupIsComplete() {
+ UMA_HISTOGRAM_LONG_TIMES("Startup.AfterStartupTaskDelayedUntilTime",
+ base::Time::Now() - process_creation_time);
+ }
+-#endif // defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_LINUX)
++#endif // defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD)
+ UMA_HISTOGRAM_COUNTS_10000("Startup.AfterStartupTaskCount",
+ g_after_startup_tasks.Get().size());
+ g_startup_complete_flag.Get().Set();
+@@ -132,7 +132,7 @@ void SetBrowserStartupIsComplete() {
+ g_after_startup_tasks.Get().clear();
+ g_after_startup_tasks.Get().shrink_to_fit();
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ // Make sure we complete the startup notification sequence, or launchers will
+ // get confused by not receiving the expected message from the main process.
+ views::LinuxUI* linux_ui = views::LinuxUI::instance();
diff --git a/devel/electron5/files/patch-chrome_browser_apps_platform__apps_api_music__manager__private_device__id__linux.cc b/devel/electron5/files/patch-chrome_browser_apps_platform__apps_api_music__manager__private_device__id__linux.cc
new file mode 100644
index 000000000000..144fb82300a6
--- /dev/null
+++ b/devel/electron5/files/patch-chrome_browser_apps_platform__apps_api_music__manager__private_device__id__linux.cc
@@ -0,0 +1,70 @@
+--- chrome/browser/apps/platform_apps/api/music_manager_private/device_id_linux.cc.orig 2019-04-08 08:32:43 UTC
++++ chrome/browser/apps/platform_apps/api/music_manager_private/device_id_linux.cc
+@@ -4,6 +4,11 @@
+
+ #include "chrome/browser/apps/platform_apps/api/music_manager_private/device_id.h"
+
++#if defined(OS_FREEBSD)
++#include <sys/types.h>
++#include <net/if_dl.h>
++#endif
++
+ #include <ifaddrs.h>
+ #include <net/if.h>
+ #include <stddef.h>
+@@ -105,9 +110,36 @@ class MacAddressProcessor {
+ const char* const prefixes[],
+ size_t prefixes_count) {
+ const int MAC_LENGTH = 6;
++#if defined(OS_FREEBSD)
++ struct ifaddrs *ifap, *ifinfo;
++#else
+ struct ifreq ifinfo;
++#endif
+
+ memset(&ifinfo, 0, sizeof(ifinfo));
++
++#if defined(OS_FREEBSD)
++ int result = getifaddrs(&ifap);
++
++ if (result != 0)
++ return true;
++
++ result = 1; // no MAC found yet
++
++ for (ifinfo = ifap; ifinfo != NULL; ifinfo = ifinfo->ifa_next) {
++ struct sockaddr* sa = ifinfo->ifa_addr;
++ if (sa->sa_family == AF_LINK &&
++ !strncmp(ifinfo->ifa_name, ifaddr->ifa_name,
++ sizeof(ifinfo->ifa_name) - 1)) {
++ result = 0;
++ break;
++ }
++ }
++
++ char mac_address[6];
++
++ strncpy(mac_address, (const char*)LLADDR((struct sockaddr_dl*)ifinfo->ifa_addr), sizeof(mac_address));
++#else
+ strncpy(ifinfo.ifr_name, ifaddr->ifa_name, sizeof(ifinfo.ifr_name) - 1);
+
+ int sd = socket(AF_INET, SOCK_DGRAM, 0);
+@@ -119,11 +151,18 @@ class MacAddressProcessor {
+
+ const char* mac_address =
+ static_cast<const char*>(ifinfo.ifr_hwaddr.sa_data);
++#endif
++
+ if (!is_valid_mac_address_.Run(mac_address, MAC_LENGTH))
+ return true;
+
++#if defined(OS_FREEBSD)
++ if (!IsValidPrefix(ifinfo->ifa_name, prefixes, prefixes_count))
++ return true;
++#else
+ if (!IsValidPrefix(ifinfo.ifr_name, prefixes, prefixes_count))
+ return true;
++#endif
+
+ // Got one!
+ found_mac_address_ =
diff --git a/devel/electron5/files/patch-chrome_browser_autocomplete_chrome__autocomplete__scheme__classifier.cc b/devel/electron5/files/patch-chrome_browser_autocomplete_chrome__autocomplete__scheme__classifier.cc
new file mode 100644
index 000000000000..4862cce35e7e
--- /dev/null
+++ b/devel/electron5/files/patch-chrome_browser_autocomplete_chrome__autocomplete__scheme__classifier.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/autocomplete/chrome_autocomplete_scheme_classifier.cc.orig 2019-04-08 08:18:06 UTC
++++ chrome/browser/autocomplete/chrome_autocomplete_scheme_classifier.cc
+@@ -59,7 +59,7 @@ ChromeAutocompleteSchemeClassifier::GetInputTypeForSch
+ return metrics::OmniboxInputType::QUERY;
+
+ case ExternalProtocolHandler::UNKNOWN: {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Linux impl of GetApplicationNameForProtocol doesn't distinguish
+ // between URL schemes with handers and those without. This will
+ // make the default behaviour be search on Linux.
diff --git a/devel/electron5/files/patch-chrome_browser_background_background__mode__optimizer.cc b/devel/electron5/files/patch-chrome_browser_background_background__mode__optimizer.cc
new file mode 100644
index 000000000000..ee768ff1295a
--- /dev/null
+++ b/devel/electron5/files/patch-chrome_browser_background_background__mode__optimizer.cc
@@ -0,0 +1,15 @@
+--- chrome/browser/background/background_mode_optimizer.cc.orig 2019-04-08 08:18:06 UTC
++++ chrome/browser/background/background_mode_optimizer.cc
+@@ -30,10 +30,10 @@ std::unique_ptr<BackgroundModeOptimizer> BackgroundMod
+ switches::kKeepAliveForTest))
+ return nullptr;
+
+-#if defined(OS_WIN) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD)
+ if (base::FeatureList::IsEnabled(features::kBackgroundModeAllowRestart))
+ return base::WrapUnique(new BackgroundModeOptimizer());
+-#endif // defined(OS_WIN) || defined(OS_LINUX)
++#endif // defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD)
+
+ return nullptr;
+ }
diff --git a/devel/electron5/files/patch-chrome_browser_browser__resources.grd b/devel/electron5/files/patch-chrome_browser_browser__resources.grd
new file mode 100644
index 000000000000..2820adc89477
--- /dev/null
+++ b/devel/electron5/files/patch-chrome_browser_browser__resources.grd
@@ -0,0 +1,11 @@
+--- chrome/browser/browser_resources.grd.orig 2019-04-08 08:32:43 UTC
++++ chrome/browser/browser_resources.grd
+@@ -679,7 +679,7 @@
+ <include name="IDR_WELCOME_WIN10_PIN_WEBP" file="resources\welcome\pin.webp" type="BINDATA" />
+ </if>
+ <include name="IDR_SSL_ERROR_ASSISTANT_PB" file="${root_gen_dir}/chrome/browser/resources/ssl/ssl_error_assistant/ssl_error_assistant.pb" use_base_dir="false" type="BINDATA" />
+- <if expr="is_android or is_linux">
++ <if expr="is_android or is_posix">
+ <include name="IDR_SANDBOX_INTERNALS_HTML" file="resources\sandbox_internals\sandbox_internals.html" flattenhtml="true" allowexternalscript="true" type="BINDATA" compress="gzip" />
+ <include name="IDR_SANDBOX_INTERNALS_JS" file="resources\sandbox_internals\sandbox_internals.js" type="BINDATA" compress="gzip" />
+ </if>
diff --git a/devel/electron5/files/patch-chrome_browser_chrome__browser__main.cc b/devel/electron5/files/patch-chrome_browser_chrome__browser__main.cc
new file mode 100644
index 000000000000..a03fc751952e
--- /dev/null
+++ b/devel/electron5/files/patch-chrome_browser_chrome__browser__main.cc
@@ -0,0 +1,72 @@
+--- chrome/browser/chrome_browser_main.cc.orig 2019-04-08 08:32:43 UTC
++++ chrome/browser/chrome_browser_main.cc
+@@ -217,7 +217,7 @@
+ #include "chromeos/settings/cros_settings_names.h"
+ #endif // defined(OS_CHROMEOS)
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS)
+ #include "chrome/browser/first_run/upgrade_util_linux.h"
+ #endif // defined(OS_LINUX) && !defined(OS_CHROMEOS)
+
+@@ -257,7 +257,7 @@
+ #endif // defined(OS_WIN)
+
+ #if defined(OS_WIN) || defined(OS_MACOSX) || \
+- (defined(OS_LINUX) && !defined(OS_CHROMEOS))
++ (defined(OS_LINUX) && !defined(OS_CHROMEOS) || defined(OS_BSD))
+ #include "chrome/browser/metrics/desktop_session_duration/desktop_session_duration_tracker.h"
+ #endif
+
+@@ -1043,7 +1043,7 @@ int ChromeBrowserMainParts::PreCreateThreadsImpl() {
+ AddFirstRunNewTabs(browser_creator_.get(), master_prefs_->new_tabs);
+ }
+
+-#if defined(OS_MACOSX) || defined(OS_LINUX)
++#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+ // Create directory for user-level Native Messaging manifest files. This
+ // makes it less likely that the directory will be created by third-party
+ // software with incorrect owner or permission. See crbug.com/725513 .
+@@ -1052,14 +1052,14 @@ int ChromeBrowserMainParts::PreCreateThreadsImpl() {
+ &user_native_messaging_dir));
+ if (!base::PathExists(user_native_messaging_dir))
+ base::CreateDirectory(user_native_messaging_dir);
+-#endif // defined(OS_MACOSX) || defined(OS_LINUX)
++#endif // defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+ }
+ #endif // !defined(OS_ANDROID) && !defined(OS_CHROMEOS)
+
+-#if defined(OS_LINUX) || defined(OS_OPENBSD)
++#if defined(OS_LINUX)
+ // Set the product channel for crash reports.
+ breakpad::SetChannelCrashKey(chrome::GetChannelName());
+-#endif // defined(OS_LINUX) || defined(OS_OPENBSD)
++#endif // defined(OS_LINUX)
+
+ #if defined(OS_MACOSX)
+ // Get the Keychain API to register for distributed notifications on the main
+@@ -1087,7 +1087,7 @@ int ChromeBrowserMainParts::PreCreateThreadsImpl() {
+ }
+
+ #if defined(OS_WIN) || defined(OS_MACOSX) || \
+- (defined(OS_LINUX) && !defined(OS_CHROMEOS))
++ (defined(OS_LINUX) && !defined(OS_CHROMEOS) || defined(OS_BSD))
+ metrics::DesktopSessionDurationTracker::Initialize();
+ #endif
+ metrics::RendererUptimeTracker::Initialize();
+@@ -1267,6 +1267,7 @@ void ChromeBrowserMainParts::PostBrowserStart() {
+ base::TimeDelta::FromMinutes(1));
+
+ #if !defined(OS_ANDROID)
++#if !defined(OS_BSD)
+ if (base::FeatureList::IsEnabled(features::kWebUsb)) {
+ web_usb_detector_.reset(new WebUsbDetector());
+ BrowserThread::PostAfterStartupTask(
+@@ -1275,6 +1276,7 @@ void ChromeBrowserMainParts::PostBrowserStart() {
+ base::BindOnce(&WebUsbDetector::Initialize,
+ base::Unretained(web_usb_detector_.get())));
+ }
++#endif
+ if (base::FeatureList::IsEnabled(features::kTabMetricsLogging)) {
+ // Initialize the TabActivityWatcher to begin logging tab activity events.
+ resource_coordinator::TabActivityWatcher::GetInstance();
diff --git a/devel/electron5/files/patch-chrome_browser_chrome__browser__main__linux.cc b/devel/electron5/files/patch-chrome_browser_chrome__browser__main__linux.cc
new file mode 100644
index 000000000000..bd8e04d5c8c6
--- /dev/null
+++ b/devel/electron5/files/patch-chrome_browser_chrome__browser__main__linux.cc
@@ -0,0 +1,27 @@
+--- chrome/browser/chrome_browser_main_linux.cc.orig 2019-04-08 08:32:43 UTC
++++ chrome/browser/chrome_browser_main_linux.cc
+@@ -90,12 +90,14 @@ void ChromeBrowserMainPartsLinux::PreProfileInit() {
+ void ChromeBrowserMainPartsLinux::PostProfileInit() {
+ ChromeBrowserMainPartsPosix::PostProfileInit();
+
++#if !defined(OS_BSD)
+ g_browser_process->metrics_service()->RecordBreakpadRegistration(
+ breakpad::IsCrashReporterEnabled());
++#endif
+ }
+
+ void ChromeBrowserMainPartsLinux::PostMainMessageLoopStart() {
+-#if !defined(OS_CHROMEOS)
++#if !defined(OS_CHROMEOS) && !defined(OS_BSD)
+ bluez::BluezDBusThreadManager::Initialize();
+ bluez::BluezDBusManager::Initialize();
+ #endif
+@@ -104,7 +106,7 @@ void ChromeBrowserMainPartsLinux::PostMainMessageLoopS
+ }
+
+ void ChromeBrowserMainPartsLinux::PostDestroyThreads() {
+-#if !defined(OS_CHROMEOS)
++#if !defined(OS_CHROMEOS) && !defined(OS_BSD)
+ bluez::BluezDBusManager::Shutdown();
+ bluez::BluezDBusThreadManager::Shutdown();
+ #endif
diff --git a/devel/electron5/files/patch-chrome_browser_chrome__browser__main__posix.cc b/devel/electron5/files/patch-chrome_browser_chrome__browser__main__posix.cc
new file mode 100644
index 000000000000..dff8c5aa1b6c
--- /dev/null
+++ b/devel/electron5/files/patch-chrome_browser_chrome__browser__main__posix.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/chrome_browser_main_posix.cc.orig 2019-04-08 08:32:43 UTC
++++ chrome/browser/chrome_browser_main_posix.cc
+@@ -142,7 +142,7 @@ void ChromeBrowserMainPartsPosix::PostMainMessageLoopS
+ void ChromeBrowserMainPartsPosix::ShowMissingLocaleMessageBox() {
+ #if defined(OS_CHROMEOS)
+ NOTREACHED(); // Should not ever happen on ChromeOS.
+-#elif defined(OS_MACOSX)
++#elif defined(OS_MACOSX) || defined(OS_BSD)
+ // Not called on Mac because we load the locale files differently.
+ NOTREACHED();
+ #elif defined(USE_AURA)
diff --git a/devel/electron5/files/patch-chrome_browser_chrome__content__browser__client.cc b/devel/electron5/files/patch-chrome_browser_chrome__content__browser__client.cc
new file mode 100644
index 000000000000..469fee0162dc
--- /dev/null
+++ b/devel/electron5/files/patch-chrome_browser_chrome__content__browser__client.cc
@@ -0,0 +1,97 @@
+--- chrome/browser/chrome_content_browser_client.cc.orig 2019-04-08 08:32:43 UTC
++++ chrome/browser/chrome_content_browser_client.cc
+@@ -395,7 +395,7 @@
+ #include "components/user_manager/user_manager.h"
+ #include "services/service_manager/public/mojom/interface_provider_spec.mojom.h"
+ #include "services/ws/common/switches.h"
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ #include "chrome/browser/chrome_browser_main_linux.h"
+ #elif defined(OS_ANDROID)
+ #include "base/android/application_status_listener.h"
+@@ -441,11 +441,11 @@
+ #include "components/services/patch/public/interfaces/constants.mojom.h"
+ #endif
+
+-#if defined(OS_LINUX) || defined(OS_WIN)
++#if defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD)
+ #include "chrome/browser/webshare/share_service_impl.h"
+ #endif
+
+-#if defined(OS_WIN) || defined(OS_MACOSX) || \
++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_BSD) || \
+ (defined(OS_LINUX) && !defined(OS_CHROMEOS))
+ #include "chrome/browser/browser_switcher/browser_switcher_navigation_throttle.h"
+ #endif
+@@ -462,7 +462,7 @@
+ #include "chrome/browser/ui/views/chrome_browser_main_extra_parts_views.h"
+ #endif
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS)
+ #include "chrome/browser/ui/views/chrome_browser_main_extra_parts_views_linux.h"
+ #endif
+
+@@ -1144,7 +1144,7 @@ content::BrowserMainParts* ChromeContentBrowserClient:
+ #elif defined(OS_CHROMEOS)
+ main_parts = new chromeos::ChromeBrowserMainPartsChromeos(
+ parameters, chrome_feature_list_creator_);
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ main_parts =
+ new ChromeBrowserMainPartsLinux(parameters, chrome_feature_list_creator_);
+ #elif defined(OS_ANDROID)
+@@ -1164,7 +1164,7 @@ content::BrowserMainParts* ChromeContentBrowserClient:
+ // Construct additional browser parts. Stages are called in the order in
+ // which they are added.
+ #if defined(TOOLKIT_VIEWS)
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) && !defined(USE_OZONE)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS) && !defined(USE_OZONE)
+ main_parts->AddParts(new ChromeBrowserMainExtraPartsViewsLinux());
+ #else
+ main_parts->AddParts(new ChromeBrowserMainExtraPartsViews());
+@@ -1956,7 +1956,7 @@ void ChromeContentBrowserClient::AppendExtraCommandLin
+ command_line->AppendSwitchASCII(switches::kMetricsClientID,
+ client_info->client_id);
+ }
+-#elif defined(OS_POSIX)
++#elif defined(OS_POSIX) && !defined(OS_BSD)
+ #if defined(OS_ANDROID)
+ bool enable_crash_reporter = true;
+ #else
+@@ -3550,7 +3550,7 @@ void ChromeContentBrowserClient::GetAdditionalFileSyst
+ }
+ }
+
+-#if defined(OS_POSIX) && !defined(OS_MACOSX)
++#if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_BSD)
+ void ChromeContentBrowserClient::GetAdditionalMappedFilesForChildProcess(
+ const base::CommandLine& command_line,
+ int child_process_id,
+@@ -4288,7 +4288,7 @@ ChromeContentBrowserClient::CreateThrottlesForNavigati
+ handle));
+ }
+
+-#if defined(OS_WIN) || defined(OS_MACOSX) || \
++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_BSD) || \
+ (defined(OS_LINUX) && !defined(OS_CHROMEOS))
+ std::unique_ptr<content::NavigationThrottle> browser_switcher_throttle =
+ browser_switcher::BrowserSwitcherNavigationThrottle ::
+@@ -4409,7 +4409,7 @@ void ChromeContentBrowserClient::InitWebContextInterfa
+ #if defined(OS_ANDROID)
+ frame_interfaces_parameterized_->AddInterface(base::Bind(
+ &ForwardToJavaWebContentsRegistry<blink::mojom::ShareService>));
+-#elif defined(OS_LINUX) || defined(OS_WIN)
++#elif defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD)
+ frame_interfaces_->AddInterface(base::Bind(&ShareServiceImpl::Create));
+ #endif
+
+@@ -5047,7 +5047,7 @@ std::unique_ptr<content::OverlayWindow>
+ ChromeContentBrowserClient::CreateWindowForPictureInPicture(
+ content::PictureInPictureWindowController* controller) {
+ #if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || \
+- defined(OS_CHROMEOS)
++ defined(OS_CHROMEOS) || defined(OS_BSD)
+ // Note: content::OverlayWindow::Create() is defined by platform-specific
+ // implementation in chrome/browser/ui/views. This layering hack, which goes
+ // through //content and ContentBrowserClient, allows us to work around the
diff --git a/devel/electron5/files/patch-chrome_browser_chrome__content__browser__client.h b/devel/electron5/files/patch-chrome_browser_chrome__content__browser__client.h
new file mode 100644
index 000000000000..ad99f1b26cf4
--- /dev/null
+++ b/devel/electron5/files/patch-chrome_browser_chrome__content__browser__client.h
@@ -0,0 +1,17 @@
+--- chrome/browser/chrome_content_browser_client.h.orig 2019-04-08 08:32:43 UTC
++++ chrome/browser/chrome_content_browser_client.h
+@@ -363,12 +363,12 @@ class ChromeContentBrowserClient : public content::Con
+ void OverridePageVisibilityState(
+ content::RenderFrameHost* render_frame_host,
+ content::PageVisibilityState* visibility_state) override;
+-#if defined(OS_POSIX) && !defined(OS_MACOSX)
++#if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_BSD)
+ void GetAdditionalMappedFilesForChildProcess(
+ const base::CommandLine& command_line,
+ int child_process_id,
+ content::PosixFileDescriptorInfo* mappings) override;
+-#endif // defined(OS_POSIX) && !defined(OS_MACOSX)
++#endif // defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_BSD)
+ #if defined(OS_WIN)
+ bool PreSpawnRenderer(sandbox::TargetPolicy* policy) override;
+ base::string16 GetAppContainerSidForSandboxType(
diff --git a/devel/electron5/files/patch-chrome_browser_custom__handlers_protocol__handler__registry.cc b/devel/electron5/files/patch-chrome_browser_custom__handlers_protocol__handler__registry.cc
new file mode 100644
index 000000000000..5088b94dd0aa
--- /dev/null
+++ b/devel/electron5/files/patch-chrome_browser_custom__handlers_protocol__handler__registry.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/custom_handlers/protocol_handler_registry.cc.orig 2019-04-08 08:18:07 UTC
++++ chrome/browser/custom_handlers/protocol_handler_registry.cc
+@@ -48,7 +48,7 @@ const ProtocolHandler& LookupHandler(
+ // If true default protocol handlers will be removed if the OS level
+ // registration for a protocol is no longer Chrome.
+ bool ShouldRemoveHandlersNotInOS() {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // We don't do this on Linux as the OS registration there is not reliable,
+ // and Chrome OS doesn't have any notion of OS registration.
+ // TODO(benwells): When Linux support is more reliable remove this
diff --git a/devel/electron5/files/patch-chrome_browser_defaults.cc b/devel/electron5/files/patch-chrome_browser_defaults.cc
new file mode 100644
index 000000000000..3f9a7086243a
--- /dev/null
+++ b/devel/electron5/files/patch-chrome_browser_defaults.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/defaults.cc.orig 2019-04-08 08:18:07 UTC
++++ chrome/browser/defaults.cc
+@@ -43,7 +43,7 @@ const bool kSyncAutoStarts = true;
+ const bool kSyncAutoStarts = false;
+ #endif
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ const bool kScrollEventChangesTab = true;
+ #else
+ const bool kScrollEventChangesTab = false;
diff --git a/devel/electron5/files/patch-chrome_browser_devtools_devtools__eye__dropper.cc b/devel/electron5/files/patch-chrome_browser_devtools_devtools__eye__dropper.cc
new file mode 100644
index 000000000000..000c55f88feb
--- /dev/null
+++ b/devel/electron5/files/patch-chrome_browser_devtools_devtools__eye__dropper.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/devtools/devtools_eye_dropper.cc.orig 2019-04-08 08:32:44 UTC
++++ chrome/browser/devtools/devtools_eye_dropper.cc
+@@ -163,7 +163,7 @@ void DevToolsEyeDropper::UpdateCursor() {
+ // magnified projection only with centered hotspot.
+ // Mac Retina requires cursor to be > 120px in order to render smoothly.
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ const float kCursorSize = 63;
+ const float kDiameter = 63;
+ const float kHotspotOffset = 32;
diff --git a/devel/electron5/files/patch-chrome_browser_diagnostics_diagnostics__writer.h b/devel/electron5/files/patch-chrome_browser_diagnostics_diagnostics__writer.h
new file mode 100644
index 000000000000..fcc3af39de32
--- /dev/null
+++ b/devel/electron5/files/patch-chrome_browser_diagnostics_diagnostics__writer.h
@@ -0,0 +1,11 @@
+--- chrome/browser/diagnostics/diagnostics_writer.h.orig 2019-04-08 08:18:07 UTC
++++ chrome/browser/diagnostics/diagnostics_writer.h
+@@ -15,6 +15,8 @@ namespace diagnostics {
+ // Console base class used internally.
+ class SimpleConsole;
+
++#undef MACHINE
++
+ class DiagnosticsWriter : public DiagnosticsModel::Observer {
+ public:
+ // The type of formatting done by this writer.
diff --git a/devel/electron5/files/patch-chrome_browser_download_chrome__download__manager__delegate.cc b/devel/electron5/files/patch-chrome_browser_download_chrome__download__manager__delegate.cc
new file mode 100644
index 000000000000..6e79780314b5
--- /dev/null
+++ b/devel/electron5/files/patch-chrome_browser_download_chrome__download__manager__delegate.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/download/chrome_download_manager_delegate.cc.orig 2019-04-08 08:32:44 UTC
++++ chrome/browser/download/chrome_download_manager_delegate.cc
+@@ -1231,7 +1231,7 @@ void ChromeDownloadManagerDelegate::OnDownloadTargetDe
+ target_info->is_filetype_handled_safely)
+ DownloadItemModel(item).SetShouldPreferOpeningInBrowser(true);
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ if (item->GetOriginalMimeType() == "application/x-x509-user-cert")
+ DownloadItemModel(item).SetShouldPreferOpeningInBrowser(true);
+ #endif
+@@ -1251,7 +1251,7 @@ void ChromeDownloadManagerDelegate::OnDownloadTargetDe
+
+ bool ChromeDownloadManagerDelegate::IsOpenInBrowserPreferreredForFile(
+ const base::FilePath& path) {
+-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ if (path.MatchesExtension(FILE_PATH_LITERAL(".pdf"))) {
+ return !download_prefs_->ShouldOpenPdfInSystemReader();
+ }
diff --git a/devel/electron5/files/patch-chrome_browser_download_download__commands.cc b/devel/electron5/files/patch-chrome_browser_download_download__commands.cc
new file mode 100644
index 000000000000..ebb357696c15
--- /dev/null
+++ b/devel/electron5/files/patch-chrome_browser_download_download__commands.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/download/download_commands.cc.orig 2019-04-08 08:32:44 UTC
++++ chrome/browser/download/download_commands.cc
+@@ -158,7 +158,7 @@ Browser* DownloadCommands::GetBrowser() const {
+ return browser_displayer.browser();
+ }
+
+-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+ bool DownloadCommands::IsDownloadPdf() const {
+ base::FilePath path = model_->GetTargetFilePath();
+ return path.MatchesExtension(FILE_PATH_LITERAL(".pdf"));
+@@ -175,7 +175,7 @@ bool DownloadCommands::CanOpenPdfInSystemViewer() cons
+ return IsDownloadPdf() &&
+ (IsAdobeReaderDefaultPDFViewer() ? is_adobe_pdf_reader_up_to_date
+ : true);
+-#elif defined(OS_MACOSX) || defined(OS_LINUX)
++#elif defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+ return IsDownloadPdf();
+ #endif
+ }
diff --git a/devel/electron5/files/patch-chrome_browser_download_download__commands.h b/devel/electron5/files/patch-chrome_browser_download_download__commands.h
new file mode 100644
index 000000000000..b885c9b9e1db
--- /dev/null
+++ b/devel/electron5/files/patch-chrome_browser_download_download__commands.h
@@ -0,0 +1,11 @@
+--- chrome/browser/download/download_commands.h.orig 2019-04-08 08:18:07 UTC
++++ chrome/browser/download/download_commands.h
+@@ -42,7 +42,7 @@ class DownloadCommands {
+ bool IsCommandVisible(Command command) const;
+ void ExecuteCommand(Command command);
+
+-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ bool IsDownloadPdf() const;
+ bool CanOpenPdfInSystemViewer() const;
+ #endif
diff --git a/devel/electron5/files/patch-chrome_browser_download_download__item__model.cc b/devel/electron5/files/patch-chrome_browser_download_download__item__model.cc
new file mode 100644
index 000000000000..47f816e3c414
--- /dev/null
+++ b/devel/electron5/files/patch-chrome_browser_download_download__item__model.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/download/download_item_model.cc.orig 2019-04-08 08:18:07 UTC
++++ chrome/browser/download/download_item_model.cc
+@@ -555,7 +555,7 @@ bool DownloadItemModel::IsCommandChecked(
+ return download_->GetOpenWhenComplete() ||
+ download_crx_util::IsExtensionDownload(*download_);
+ case DownloadCommands::ALWAYS_OPEN_TYPE:
+-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ if (download_commands->CanOpenPdfInSystemViewer()) {
+ DownloadPrefs* prefs = DownloadPrefs::FromBrowserContext(profile());
+ return prefs->ShouldOpenPdfInSystemReader();
+@@ -592,7 +592,7 @@ void DownloadItemModel::ExecuteCommand(DownloadCommand
+ bool is_checked = IsCommandChecked(download_commands,
+ DownloadCommands::ALWAYS_OPEN_TYPE);
+ DownloadPrefs* prefs = DownloadPrefs::FromBrowserContext(profile());
+-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ if (download_commands->CanOpenPdfInSystemViewer()) {
+ prefs->SetShouldOpenPdfInSystemReader(!is_checked);
+ SetShouldPreferOpeningInBrowser(is_checked);
diff --git a/devel/electron5/files/patch-chrome_browser_download_download__prefs.cc b/devel/electron5/files/patch-chrome_browser_download_download__prefs.cc
new file mode 100644
index 000000000000..af8d026fa11d
--- /dev/null
+++ b/devel/electron5/files/patch-chrome_browser_download_download__prefs.cc
@@ -0,0 +1,65 @@
+--- chrome/browser/download/download_prefs.cc.orig 2019-04-08 08:32:44 UTC
++++ chrome/browser/download/download_prefs.cc
+@@ -62,7 +62,7 @@ namespace {
+ // Consider downloads 'dangerous' if they go to the home directory on Linux and
+ // to the desktop on any platform.
+ bool DownloadPathIsDangerous(const base::FilePath& download_path) {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ base::FilePath home_dir = base::GetHomeDir();
+ if (download_path == home_dir) {
+ return true;
+@@ -155,7 +155,7 @@ DownloadPrefs::DownloadPrefs(Profile* profile) : profi
+ GetDefaultDownloadDirectoryForProfile()));
+ #endif // defined(OS_CHROMEOS)
+
+-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ should_open_pdf_in_system_reader_ =
+ prefs->GetBoolean(prefs::kOpenPdfDownloadInSystemReader);
+ #endif
+@@ -252,7 +252,7 @@ void DownloadPrefs::RegisterProfilePrefs(
+ default_download_path);
+ registry->RegisterFilePathPref(prefs::kSaveFileDefaultDirectory,
+ default_download_path);
+-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ registry->RegisterBooleanPref(prefs::kOpenPdfDownloadInSystemReader, false);
+ #endif
+ #if defined(OS_ANDROID)
+@@ -354,7 +354,7 @@ bool DownloadPrefs::IsDownloadPathManaged() const {
+ }
+
+ bool DownloadPrefs::IsAutoOpenUsed() const {
+-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ if (ShouldOpenPdfInSystemReader())
+ return true;
+ #endif
+@@ -368,7 +368,7 @@ bool DownloadPrefs::IsAutoOpenEnabledBasedOnExtension(
+ return false;
+ DCHECK(extension[0] == base::FilePath::kExtensionSeparator);
+ extension.erase(0, 1);
+-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ if (base::FilePath::CompareEqualIgnoreCase(extension,
+ FILE_PATH_LITERAL("pdf")) &&
+ ShouldOpenPdfInSystemReader())
+@@ -405,7 +405,7 @@ void DownloadPrefs::DisableAutoOpenBasedOnExtension(
+ SaveAutoOpenState();
+ }
+
+-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ void DownloadPrefs::SetShouldOpenPdfInSystemReader(bool should_open) {
+ if (should_open_pdf_in_system_reader_ == should_open)
+ return;
+@@ -426,7 +426,7 @@ bool DownloadPrefs::ShouldOpenPdfInSystemReader() cons
+ #endif
+
+ void DownloadPrefs::ResetAutoOpen() {
+-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ SetShouldOpenPdfInSystemReader(false);
+ #endif
+ auto_open_.clear();
diff --git a/devel/electron5/files/patch-chrome_browser_download_download__prefs.h b/devel/electron5/files/patch-chrome_browser_download_download__prefs.h
new file mode 100644
index 000000000000..f7979bd0e8c7
--- /dev/null
+++ b/devel/electron5/files/patch-chrome_browser_download_download__prefs.h
@@ -0,0 +1,20 @@
+--- chrome/browser/download/download_prefs.h.orig 2019-04-08 08:32:44 UTC
++++ chrome/browser/download/download_prefs.h
+@@ -101,7 +101,7 @@ class DownloadPrefs {
+ // Disables auto-open based on file extension.
+ void DisableAutoOpenBasedOnExtension(const base::FilePath& file_name);
+
+-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ // Store the user preference to disk. If |should_open| is true, also disable
+ // the built-in PDF plugin. If |should_open| is false, enable the PDF plugin.
+ void SetShouldOpenPdfInSystemReader(bool should_open);
+@@ -145,7 +145,7 @@ class DownloadPrefs {
+ AutoOpenCompareFunctor> AutoOpenSet;
+ AutoOpenSet auto_open_;
+
+-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ bool should_open_pdf_in_system_reader_;
+ #endif
+
diff --git a/devel/electron5/files/patch-chrome_browser_download_download__query.cc b/devel/electron5/files/patch-chrome_browser_download_download__query.cc
new file mode 100644
index 000000000000..0964b44c2dd3
--- /dev/null
+++ b/devel/electron5/files/patch-chrome_browser_download_download__query.cc
@@ -0,0 +1,14 @@
+--- chrome/browser/download/download_query.cc.orig 2019-04-08 08:18:07 UTC
++++ chrome/browser/download/download_query.cc
+@@ -27,7 +27,11 @@
+ #include "components/download/public/common/download_item.h"
+ #include "components/url_formatter/url_formatter.h"
+ #include "content/public/browser/content_browser_client.h"
++#if defined(OS_BSD)
++#include <re2/re2.h>
++#else
+ #include "third_party/re2/src/re2/re2.h"
++#endif
+ #include "url/gurl.h"
+
+ using download::DownloadDangerType;
diff --git a/devel/electron5/files/patch-chrome_browser_download_download__shelf__context__menu.cc b/devel/electron5/files/patch-chrome_browser_download_download__shelf__context__menu.cc
new file mode 100644
index 000000000000..0dcac31f2cfb
--- /dev/null
+++ b/devel/electron5/files/patch-chrome_browser_download_download__shelf__context__menu.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/download/download_shelf_context_menu.cc.orig 2019-04-08 08:32:44 UTC
++++ chrome/browser/download/download_shelf_context_menu.cc
+@@ -127,7 +127,7 @@ base::string16 DownloadShelfContextMenu::GetLabelForCo
+ : IDS_DOWNLOAD_MENU_PLATFORM_OPEN_ALWAYS;
+ break;
+ }
+-#elif defined(OS_MACOSX) || defined(OS_LINUX)
++#elif defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+ if (can_open_pdf_in_system_viewer) {
+ id = IDS_DOWNLOAD_MENU_PLATFORM_OPEN_ALWAYS;
+ break;
diff --git a/devel/electron5/files/patch-chrome_browser_download_download__status__updater.cc b/devel/electron5/files/patch-chrome_browser_download_download__status__updater.cc
new file mode 100644
index 000000000000..e55328d5b5bd
--- /dev/null
+++ b/devel/electron5/files/patch-chrome_browser_download_download__status__updater.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/download/download_status_updater.cc.orig 2019-04-08 08:18:07 UTC
++++ chrome/browser/download/download_status_updater.cc
+@@ -13,7 +13,7 @@
+ #include "base/memory/ptr_util.h"
+ #include "build/build_config.h"
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ #include "ui/views/linux_ui/linux_ui.h"
+ #endif
+
+@@ -136,7 +136,7 @@ void DownloadStatusUpdater::OnDownloadUpdated(content:
+ #if defined(OS_ANDROID) || (defined(USE_AURA) && !defined(OS_WIN))
+ void DownloadStatusUpdater::UpdateAppIconDownloadProgress(
+ download::DownloadItem* download) {
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ const views::LinuxUI* linux_ui = views::LinuxUI::instance();
+ if (linux_ui) {
+ float progress = 0;
diff --git a/devel/electron5/files/patch-chrome_browser_extensions_BUILD.gn b/devel/electron5/files/patch-chrome_browser_extensions_BUILD.gn
new file mode 100644
index 000000000000..6d05b5c466ce
--- /dev/null
+++ b/devel/electron5/files/patch-chrome_browser_extensions_BUILD.gn
@@ -0,0 +1,15 @@
+--- chrome/browser/extensions/BUILD.gn.orig 2019-04-08 08:32:44 UTC
++++ chrome/browser/extensions/BUILD.gn
+@@ -1104,6 +1104,12 @@ jumbo_static_library("extensions") {
+ deps += [ "//chrome/common:service_process_mojom" ]
+ }
+
++ if (is_bsd) {
++ sources -= [
++ "api/image_writer_private/removable_storage_provider_linux.cc",
++ ]
++ }
++
+ if (enable_service_discovery) {
+ sources += [
+ "api/mdns/mdns_api.cc",
diff --git a/devel/electron5/files/patch-chrome_browser_extensions_activity__log_activity__log.cc b/devel/electron5/files/patch-chrome_browser_extensions_activity__log_activity__log.cc
new file mode 100644
index 000000000000..44503459de96
--- /dev/null
+++ b/devel/electron5/files/patch-chrome_browser_extensions_activity__log_activity__log.cc
@@ -0,0 +1,14 @@
+--- chrome/browser/extensions/activity_log/activity_log.cc.orig 2019-04-08 08:32:44 UTC
++++ chrome/browser/extensions/activity_log/activity_log.cc
+@@ -52,7 +52,11 @@
+ #include "extensions/common/extension.h"
+ #include "extensions/common/extension_messages.h"
+ #include "extensions/common/one_shot_event.h"
++#if defined(OS_BSD)
++#include <re2/re2.h>
++#else
+ #include "third_party/re2/src/re2/re2.h"
++#endif
+ #include "url/gurl.h"
+
+ namespace constants = activity_log_constants;
diff --git a/devel/electron5/files/patch-chrome_browser_extensions_api_image__writer__private_removable__storage__provider.cc b/devel/electron5/files/patch-chrome_browser_extensions_api_image__writer__private_removable__storage__provider.cc
new file mode 100644
index 000000000000..0ce240fd867e
--- /dev/null
+++ b/devel/electron5/files/patch-chrome_browser_extensions_api_image__writer__private_removable__storage__provider.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/extensions/api/image_writer_private/removable_storage_provider.cc.orig 2019-04-08 08:32:44 UTC
++++ chrome/browser/extensions/api/image_writer_private/removable_storage_provider.cc
+@@ -20,6 +20,7 @@ static base::LazyInstance<scoped_refptr<StorageDeviceL
+
+ void RemovableStorageProvider::GetAllDevices(DeviceListReadyCallback callback) {
+ DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
++#if !defined(OS_BSD)
+ if (g_test_device_list.Get().get() != nullptr) {
+ base::ThreadTaskRunnerHandle::Get()->PostTask(
+ FROM_HERE,
+@@ -33,6 +34,9 @@ void RemovableStorageProvider::GetAllDevices(DeviceLis
+ base::TaskShutdownBehavior::SKIP_ON_SHUTDOWN},
+ base::BindOnce(&RemovableStorageProvider::PopulateDeviceList),
+ std::move(callback));
++#else
++ NOTIMPLEMENTED();
++#endif
+ }
+
+ // static
diff --git a/devel/electron5/files/patch-chrome_browser_extensions_api_input__ime_input__ime__api.h b/devel/electron5/files/patch-chrome_browser_extensions_api_input__ime_input__ime__api.h
new file mode 100644
index 000000000000..a16878db074e
--- /dev/null
+++ b/devel/electron5/files/patch-chrome_browser_extensions_api_input__ime_input__ime__api.h
@@ -0,0 +1,11 @@
+--- chrome/browser/extensions/api/input_ime/input_ime_api.h.orig 2019-04-08 08:18:07 UTC
++++ chrome/browser/extensions/api/input_ime/input_ime_api.h
+@@ -31,7 +31,7 @@
+
+ #if defined(OS_CHROMEOS)
+ #include "chrome/browser/extensions/api/input_ime/input_ime_api_chromeos.h"
+-#elif defined(OS_LINUX) || defined(OS_WIN)
++#elif defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD)
+ #include "chrome/browser/extensions/api/input_ime/input_ime_api_nonchromeos.h"
+ #endif // defined(OS_CHROMEOS)
+
diff --git a/devel/electron5/files/patch-chrome_browser_extensions_api_runtime_chrome__runtime__api__delegate.cc b/devel/electron5/files/patch-chrome_browser_extensions_api_runtime_chrome__runtime__api__delegate.cc
new file mode 100644
index 000000000000..66129bad8d14
--- /dev/null
+++ b/devel/electron5/files/patch-chrome_browser_extensions_api_runtime_chrome__runtime__api__delegate.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/extensions/api/runtime/chrome_runtime_api_delegate.cc.orig 2019-04-08 08:32:44 UTC
++++ chrome/browser/extensions/api/runtime/chrome_runtime_api_delegate.cc
+@@ -296,6 +296,8 @@ bool ChromeRuntimeAPIDelegate::GetPlatformInfo(Platfor
+ info->os = extensions::api::runtime::PLATFORM_OS_CROS;
+ } else if (strcmp(os, "linux") == 0) {
+ info->os = extensions::api::runtime::PLATFORM_OS_LINUX;
++ } else if (strcmp(os, "freebsd") == 0) {
++ info->os = extensions::api::runtime::PLATFORM_OS_FREEBSD;
+ } else if (strcmp(os, "openbsd") == 0) {
+ info->os = extensions::api::runtime::PLATFORM_OS_OPENBSD;
+ } else {
diff --git a/devel/electron5/files/patch-chrome_browser_extensions_api_settings__private_prefs__util.cc b/devel/electron5/files/patch-chrome_browser_extensions_api_settings__private_prefs__util.cc
new file mode 100644
index 000000000000..53c9f36b8db7
--- /dev/null
+++ b/devel/electron5/files/patch-chrome_browser_extensions_api_settings__private_prefs__util.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/extensions/api/settings_private/prefs_util.cc.orig 2019-04-08 08:32:44 UTC
++++ chrome/browser/extensions/api/settings_private/prefs_util.cc
+@@ -127,7 +127,7 @@ const PrefsUtil::TypedPrefMap& PrefsUtil::GetWhitelist
+ settings_api::PrefType::PREF_TYPE_BOOLEAN;
+ (*s_whitelist)[bookmarks::prefs::kShowBookmarkBar] =
+ settings_api::PrefType::PREF_TYPE_BOOLEAN;
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS)
+ (*s_whitelist)[::prefs::kUseCustomChromeFrame] =
+ settings_api::PrefType::PREF_TYPE_BOOLEAN;
+ #endif
+@@ -137,7 +137,7 @@ const PrefsUtil::TypedPrefMap& PrefsUtil::GetWhitelist
+ // Appearance settings.
+ (*s_whitelist)[::prefs::kCurrentThemeID] =
+ settings_api::PrefType::PREF_TYPE_STRING;
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS)
+ (*s_whitelist)[::prefs::kUsesSystemTheme] =
+ settings_api::PrefType::PREF_TYPE_BOOLEAN;
+ #endif
diff --git a/devel/electron5/files/patch-chrome_browser_extensions_bookmark__app__helper.cc b/devel/electron5/files/patch-chrome_browser_extensions_bookmark__app__helper.cc
new file mode 100644
index 000000000000..9e6df2f4a479
--- /dev/null
+++ b/devel/electron5/files/patch-chrome_browser_extensions_bookmark__app__helper.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/extensions/bookmark_app_helper.cc.orig 2019-04-08 08:32:44 UTC
++++ chrome/browser/extensions/bookmark_app_helper.cc
+@@ -503,7 +503,7 @@ void BookmarkAppHelper::FinishInstallation(const Exten
+ if (create_shortcuts_) {
+ #if !defined(OS_CHROMEOS)
+ web_app::ShortcutLocations creation_locations;
+-#if defined(OS_LINUX) || defined(OS_WIN)
++#if defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD)
+ creation_locations.on_desktop = true;
+ #else
+ creation_locations.on_desktop = false;
diff --git a/devel/electron5/files/patch-chrome_browser_extensions_browser__context__keyed__service__factories.cc b/devel/electron5/files/patch-chrome_browser_extensions_browser__context__keyed__service__factories.cc
new file mode 100644
index 000000000000..99c84c1c391b
--- /dev/null
+++ b/devel/electron5/files/patch-chrome_browser_extensions_browser__context__keyed__service__factories.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/extensions/browser_context_keyed_service_factories.cc.orig 2019-04-08 08:18:07 UTC
++++ chrome/browser/extensions/browser_context_keyed_service_factories.cc
+@@ -54,7 +54,7 @@
+ #include "chrome/browser/chromeos/extensions/input_method_api.h"
+ #include "chrome/browser/chromeos/extensions/media_player_api.h"
+ #include "chrome/browser/extensions/api/input_ime/input_ime_api.h"
+-#elif defined(OS_LINUX) || defined(OS_WIN)
++#elif defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD)
+ #include "chrome/browser/extensions/api/input_ime/input_ime_api.h"
+ #endif
+
+@@ -93,7 +93,7 @@ void EnsureBrowserContextKeyedServiceFactoriesBuilt()
+ #if defined(OS_CHROMEOS)
+ extensions::InputImeAPI::GetFactoryInstance();
+ extensions::InputMethodAPI::GetFactoryInstance();
+-#elif defined(OS_LINUX) || defined(OS_WIN)
++#elif defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD)
+ extensions::InputImeAPI::GetFactoryInstance();
+ #endif
+ extensions::LanguageSettingsPrivateDelegateFactory::GetInstance();
diff --git a/devel/electron5/files/patch-chrome_browser_extensions_external__provider__impl.cc b/devel/electron5/files/patch-chrome_browser_extensions_external__provider__impl.cc
new file mode 100644
index 000000000000..82ea43e37cf9
--- /dev/null
+++ b/devel/electron5/files/patch-chrome_browser_extensions_external__provider__impl.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/extensions/external_provider_impl.cc.orig 2019-04-08 08:32:44 UTC
++++ chrome/browser/extensions/external_provider_impl.cc
+@@ -747,7 +747,7 @@ void ExternalProviderImpl::CreateExternalProviders(
+ chromeos::DemoSession::Get()->SetExtensionsExternalLoader(loader);
+ provider_list->push_back(std::move(demo_apps_provider));
+ }
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ provider_list->push_back(std::make_unique<ExternalProviderImpl>(
+ service,
+ new ExternalPrefLoader(chrome::DIR_STANDALONE_EXTERNAL_EXTENSIONS,
+@@ -774,7 +774,7 @@ void ExternalProviderImpl::CreateExternalProviders(
+ bundled_extension_creation_flags));
+
+ // Define a per-user source of external extensions.
+-#if defined(OS_MACOSX) || (defined(OS_LINUX) && defined(CHROMIUM_BUILD))
++#if defined(OS_MACOSX) || ((defined(OS_LINUX) || defined(OS_BSD)) && defined(CHROMIUM_BUILD))
+ provider_list->push_back(std::make_unique<ExternalProviderImpl>(
+ service,
+ new ExternalPrefLoader(chrome::DIR_USER_EXTERNAL_EXTENSIONS,
diff --git a/devel/electron5/files/patch-chrome_browser_extensions_install__signer.cc b/devel/electron5/files/patch-chrome_browser_extensions_install__signer.cc
new file mode 100644
index 000000000000..ce9eb7249337
--- /dev/null
+++ b/devel/electron5/files/patch-chrome_browser_extensions_install__signer.cc
@@ -0,0 +1,18 @@
+--- chrome/browser/extensions/install_signer.cc.orig 2019-04-08 08:32:44 UTC
++++ chrome/browser/extensions/install_signer.cc
+@@ -293,13 +293,13 @@ void LogRequestStartHistograms() {
+ DCHECK(g_single_thread_checker.Get().CalledOnValidThread());
+
+ // Process::Current().CreationTime is only defined on some platforms.
+-#if defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_LINUX)
++#if defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD)
+ const base::Time process_creation_time =
+ base::Process::Current().CreationTime();
+ UMA_HISTOGRAM_COUNTS_1M(
+ "ExtensionInstallSigner.UptimeAtTimeOfRequest",
+ (base::Time::Now() - process_creation_time).InSeconds());
+-#endif // defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_LINUX)
++#endif // defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD)
+
+ base::TimeDelta delta;
+ base::TimeTicks now = base::TimeTicks::Now();
diff --git a/devel/electron5/files/patch-chrome_browser_first__run_first__run__internal__posix.cc b/devel/electron5/files/patch-chrome_browser_first__run_first__run__internal__posix.cc
new file mode 100644
index 000000000000..021696eada4d
--- /dev/null
+++ b/devel/electron5/files/patch-chrome_browser_first__run_first__run__internal__posix.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/first_run/first_run_internal_posix.cc.orig 2019-04-08 08:18:07 UTC
++++ chrome/browser/first_run/first_run_internal_posix.cc
+@@ -44,7 +44,7 @@ enum class ForcedShowDialogState {
+ ForcedShowDialogState g_forced_show_dialog_state =
+ ForcedShowDialogState::kNotForced;
+
+-#if !defined(OS_CHROMEOS)
++#if !defined(OS_CHROMEOS) && !defined(OS_BSD)
+ // Returns whether the first run dialog should be shown. This is only true for
+ // certain builds, and only if the user has not already set preferences. In a
+ // real, official-build first run, initializes the default metrics reporting if
+@@ -95,7 +95,7 @@ void ForceFirstRunDialogShownForTesting(bool shown) {
+ }
+
+ void DoPostImportPlatformSpecificTasks(Profile* profile) {
+-#if !defined(OS_CHROMEOS)
++#if !defined(OS_CHROMEOS) && !defined(OS_BSD)
+ if (!ShouldShowFirstRunDialog())
+ return;
+
diff --git a/devel/electron5/files/patch-chrome_browser_flag__descriptions.cc b/devel/electron5/files/patch-chrome_browser_flag__descriptions.cc
new file mode 100644
index 000000000000..6d3b81b12771
--- /dev/null
+++ b/devel/electron5/files/patch-chrome_browser_flag__descriptions.cc
@@ -0,0 +1,34 @@
+--- chrome/browser/flag_descriptions.cc.orig 2019-04-08 08:32:44 UTC
++++ chrome/browser/flag_descriptions.cc
+@@ -3656,13 +3656,13 @@ const char kWakeOnPacketsDescription[] =
+
+ // Random platform combinations -----------------------------------------------
+
+-#if defined(OS_WIN) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD)
+
+ const char kEnableInputImeApiName[] = "Enable Input IME API";
+ const char kEnableInputImeApiDescription[] =
+ "Enable the use of chrome.input.ime API.";
+
+-#endif // defined(OS_WIN) || defined(OS_LINUX)
++#endif // defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD)
+
+ #if defined(OS_WIN) || defined(OS_MACOSX)
+
+@@ -3675,13 +3675,13 @@ const char kAutomaticTabDiscardingDescription[] =
+
+ #endif // defined(OS_WIN) || defined(OS_MACOSX)
+
+-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+
+ const char kDirectManipulationStylusName[] = "Direct Manipulation Stylus";
+ const char kDirectManipulationStylusDescription[] =
+ "If enabled, Chrome will scroll web pages on stylus drag.";
+
+-#endif // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
++#endif // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+
+ #if defined(OS_MACOSX) || defined(OS_CHROMEOS)
+
diff --git a/devel/electron5/files/patch-chrome_browser_flag__descriptions.h b/devel/electron5/files/patch-chrome_browser_flag__descriptions.h
new file mode 100644
index 000000000000..44b31ebd7670
--- /dev/null
+++ b/devel/electron5/files/patch-chrome_browser_flag__descriptions.h
@@ -0,0 +1,32 @@
+--- chrome/browser/flag_descriptions.h.orig 2019-04-08 08:32:44 UTC
++++ chrome/browser/flag_descriptions.h
+@@ -2192,12 +2192,12 @@ extern const char kWakeOnPacketsDescription[];
+
+ // Random platform combinations -----------------------------------------------
+
+-#if defined(OS_WIN) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD)
+
+ extern const char kEnableInputImeApiName[];
+ extern const char kEnableInputImeApiDescription[];
+
+-#endif // defined(OS_WIN) || defined(OS_LINUX)
++#endif // defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD)
+
+ extern const char kExperimentalUiName[];
+ extern const char kExperimentalUiDescription[];
+@@ -2209,12 +2209,12 @@ extern const char kAutomaticTabDiscardingDescription[]
+
+ #endif // defined(OS_WIN) || defined(OS_MACOSX)
+
+-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+
+ extern const char kDirectManipulationStylusName[];
+ extern const char kDirectManipulationStylusDescription[];
+
+-#endif // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
++#endif // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+
+ #if defined(OS_MACOSX) || defined(OS_CHROMEOS)
+
diff --git a/devel/electron5/files/patch-chrome_browser_media__galleries_fileapi_mtp__device__map__service.cc b/devel/electron5/files/patch-chrome_browser_media__galleries_fileapi_mtp__device__map__service.cc
new file mode 100644
index 000000000000..929d6e92a8b4
--- /dev/null
+++ b/devel/electron5/files/patch-chrome_browser_media__galleries_fileapi_mtp__device__map__service.cc
@@ -0,0 +1,15 @@
+--- chrome/browser/media_galleries/fileapi/mtp_device_map_service.cc.orig 2019-04-08 08:32:44 UTC
++++ chrome/browser/media_galleries/fileapi/mtp_device_map_service.cc
+@@ -38,10 +38,12 @@ void MTPDeviceMapService::RegisterMTPFileSystem(
+ // Note that this initializes the delegate asynchronously, but since
+ // the delegate will only be used from the IO thread, it is guaranteed
+ // to be created before use of it expects it to be there.
++#if !defined(OS_FREEBSD)
+ CreateMTPDeviceAsyncDelegate(
+ device_location, read_only,
+ base::Bind(&MTPDeviceMapService::AddAsyncDelegate,
+ base::Unretained(this), device_location, read_only));
++#endif
+ mtp_device_usage_map_[key] = 0;
+ }
+
diff --git a/devel/electron5/files/patch-chrome_browser_media__galleries_media__file__system__registry.cc b/devel/electron5/files/patch-chrome_browser_media__galleries_media__file__system__registry.cc
new file mode 100644
index 000000000000..e97e394c131f
--- /dev/null
+++ b/devel/electron5/files/patch-chrome_browser_media__galleries_media__file__system__registry.cc
@@ -0,0 +1,14 @@
+--- chrome/browser/media_galleries/media_file_system_registry.cc.orig 2019-04-08 08:32:44 UTC
++++ chrome/browser/media_galleries/media_file_system_registry.cc
+@@ -734,7 +734,10 @@ class MediaFileSystemRegistry::MediaFileSystemContextI
+ // Constructor in 'private' section because depends on private class definition.
+ MediaFileSystemRegistry::MediaFileSystemRegistry()
+ : file_system_context_(new MediaFileSystemContextImpl) {
+- StorageMonitor::GetInstance()->AddObserver(this);
++ // This conditional is needed for shutdown. Destructors
++ // try to get the media file system registry.
++ if (StorageMonitor::GetInstance())
++ StorageMonitor::GetInstance()->AddObserver(this);
+ }
+
+ MediaFileSystemRegistry::~MediaFileSystemRegistry() {
diff --git a/devel/electron5/files/patch-chrome_browser_media_router_discovery_discovery__network__list__posix.cc b/devel/electron5/files/patch-chrome_browser_media_router_discovery_discovery__network__list__posix.cc
new file mode 100644
index 000000000000..b8b31b85ab42
--- /dev/null
+++ b/devel/electron5/files/patch-chrome_browser_media_router_discovery_discovery__network__list__posix.cc
@@ -0,0 +1,28 @@
+--- chrome/browser/media/router/discovery/discovery_network_list_posix.cc.orig 2019-04-08 08:18:08 UTC
++++ chrome/browser/media/router/discovery/discovery_network_list_posix.cc
+@@ -10,6 +10,7 @@
+ #include <netinet/in.h>
+ #include <sys/socket.h>
+ #include <sys/types.h>
++#include <sys/time.h>
+
+ #include <algorithm>
+
+@@ -19,7 +20,7 @@
+ #include "chrome/browser/media/router/discovery/discovery_network_list_wifi.h"
+ #include "net/base/net_errors.h"
+
+-#if !defined(OS_MACOSX)
++#if !defined(OS_MACOSX) && !defined(OS_BSD)
+ #include <netpacket/packet.h>
+ #else
+ #include <net/if_dl.h>
+@@ -28,7 +29,7 @@
+ namespace media_router {
+ namespace {
+
+-#if !defined(OS_MACOSX)
++#if !defined(OS_MACOSX) && !defined(OS_BSD)
+ using sll = struct sockaddr_ll;
+ #define SOCKET_ARP_TYPE(s) ((s)->sll_hatype)
+ #define SOCKET_ADDRESS_LEN(s) ((s)->sll_halen)
diff --git a/devel/electron5/files/patch-chrome_browser_media_router_discovery_discovery__network__list__wifi__linux.cc b/devel/electron5/files/patch-chrome_browser_media_router_discovery_discovery__network__list__wifi__linux.cc
new file mode 100644
index 000000000000..ebfedf41999c
--- /dev/null
+++ b/devel/electron5/files/patch-chrome_browser_media_router_discovery_discovery__network__list__wifi__linux.cc
@@ -0,0 +1,27 @@
+--- chrome/browser/media/router/discovery/discovery_network_list_wifi_linux.cc.orig 2019-04-08 08:18:08 UTC
++++ chrome/browser/media/router/discovery/discovery_network_list_wifi_linux.cc
+@@ -9,8 +9,6 @@
+ #include <sys/socket.h>
+ #include <sys/types.h>
+
+-#include <linux/wireless.h>
+-
+ #include "base/files/scoped_file.h"
+ #include "base/logging.h"
+ #include "net/base/network_interfaces_linux.h"
+@@ -20,6 +18,7 @@ namespace media_router {
+ bool MaybeGetWifiSSID(const std::string& if_name, std::string* ssid_out) {
+ DCHECK(ssid_out);
+
++#if !defined(OS_BSD)
+ base::ScopedFD ioctl_socket(socket(AF_INET, SOCK_DGRAM, 0));
+ if (!ioctl_socket.is_valid()) {
+ // AF_INET is for IPv4, so it may fail for IPv6-only hosts even when there
+@@ -41,6 +40,7 @@ bool MaybeGetWifiSSID(const std::string& if_name, std:
+ ssid_out->assign(ssid);
+ return true;
+ }
++#endif
+ return false;
+ }
+
diff --git a/devel/electron5/files/patch-chrome_browser_media_router_providers_wired__display_wired__display__media__route__provider.cc b/devel/electron5/files/patch-chrome_browser_media_router_providers_wired__display_wired__display__media__route__provider.cc
new file mode 100644
index 000000000000..5c65a638424a
--- /dev/null
+++ b/devel/electron5/files/patch-chrome_browser_media_router_providers_wired__display_wired__display__media__route__provider.cc
@@ -0,0 +1,23 @@
+--- chrome/browser/media/router/providers/wired_display/wired_display_media_route_provider.cc.orig 2019-04-08 08:32:44 UTC
++++ chrome/browser/media/router/providers/wired_display/wired_display_media_route_provider.cc
+@@ -111,6 +111,12 @@ void WiredDisplayMediaRouteProvider::CreateRoute(
+ bool incognito,
+ CreateRouteCallback callback) {
+ DCHECK(!base::ContainsKey(presentations_, presentation_id));
++#if defined(OS_BSD) // XXX
++ std::move(callback).Run(base::nullopt, nullptr,
++ std::string("Not implemented"),
++ RouteRequestResult::UNKNOWN_ERROR);
++ return;
++#else
+ base::Optional<Display> display = GetDisplayBySinkId(sink_id);
+ if (!display) {
+ std::move(callback).Run(base::nullopt, nullptr,
+@@ -137,6 +143,7 @@ void WiredDisplayMediaRouteProvider::CreateRoute(
+ std::move(callback).Run(route, nullptr, base::nullopt,
+ RouteRequestResult::OK);
+ NotifyRouteObservers();
++#endif
+ }
+
+ void WiredDisplayMediaRouteProvider::JoinRoute(
diff --git a/devel/electron5/files/patch-chrome_browser_media_webrtc_webrtc__event__log__uploader.cc b/devel/electron5/files/patch-chrome_browser_media_webrtc_webrtc__event__log__uploader.cc
new file mode 100644
index 000000000000..599ca4002e6f
--- /dev/null
+++ b/devel/electron5/files/patch-chrome_browser_media_webrtc_webrtc__event__log__uploader.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/media/webrtc/webrtc_event_log_uploader.cc.orig 2019-04-08 08:32:44 UTC
++++ chrome/browser/media/webrtc/webrtc_event_log_uploader.cc
+@@ -36,7 +36,7 @@ constexpr size_t kExpectedMimeOverheadBytes = 1000; /
+ const char kProduct[] = "Chrome";
+ #elif defined(OS_MACOSX)
+ const char kProduct[] = "Chrome_Mac";
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ const char kProduct[] = "Chrome_Linux";
+ #elif defined(OS_ANDROID)
+ const char kProduct[] = "Chrome_Android";
diff --git a/devel/electron5/files/patch-chrome_browser_media_webrtc_webrtc__log__uploader.cc b/devel/electron5/files/patch-chrome_browser_media_webrtc_webrtc__log__uploader.cc
new file mode 100644
index 000000000000..dde5f44cdcfb
--- /dev/null
+++ b/devel/electron5/files/patch-chrome_browser_media_webrtc_webrtc__log__uploader.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/media/webrtc/webrtc_log_uploader.cc.orig 2019-04-08 08:32:44 UTC
++++ chrome/browser/media/webrtc/webrtc_log_uploader.cc
+@@ -391,6 +391,8 @@ void WebRtcLogUploader::SetupMultipart(
+ const char product[] = "Chrome_Android";
+ #elif defined(OS_CHROMEOS)
+ const char product[] = "Chrome_ChromeOS";
++#elif defined(OS_FREEBSD)
++ const char product[] = "Chrome_FreeBSD";
+ #else
+ #error Platform not supported.
+ #endif
diff --git a/devel/electron5/files/patch-chrome_browser_media_webrtc_webrtc__logging__handler__host.cc b/devel/electron5/files/patch-chrome_browser_media_webrtc_webrtc__logging__handler__host.cc
new file mode 100644
index 000000000000..8241bbeb2491
--- /dev/null
+++ b/devel/electron5/files/patch-chrome_browser_media_webrtc_webrtc__logging__handler__host.cc
@@ -0,0 +1,33 @@
+--- chrome/browser/media/webrtc/webrtc_logging_handler_host.cc.orig 2019-04-08 08:32:44 UTC
++++ chrome/browser/media/webrtc/webrtc_logging_handler_host.cc
+@@ -26,10 +26,10 @@
+ #include "content/public/browser/content_browser_client.h"
+ #include "content/public/browser/render_process_host.h"
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ #include "content/public/browser/child_process_security_policy.h"
+ #include "storage/browser/fileapi/isolated_context.h"
+-#endif // defined(OS_LINUX) || defined(OS_CHROMEOS)
++#endif // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+
+ using content::BrowserThread;
+ using webrtc_event_logging::WebRtcEventLogManager;
+@@ -281,7 +281,7 @@ void WebRtcLoggingHandlerHost::StartEventLogging(
+ output_period_ms, web_app_id, callback);
+ }
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ void WebRtcLoggingHandlerHost::GetLogsDirectory(
+ const LogsDirectoryCallback& callback,
+ const LogsDirectoryErrorCallback& error_callback) {
+@@ -327,7 +327,7 @@ void WebRtcLoggingHandlerHost::GrantLogsDirectoryAcces
+ FROM_HERE, {BrowserThread::UI},
+ base::BindOnce(callback, filesystem_id, registered_name));
+ }
+-#endif // defined(OS_LINUX) || defined(OS_CHROMEOS)
++#endif // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD
+
+ void WebRtcLoggingHandlerHost::OnRtpPacket(
+ std::unique_ptr<uint8_t[]> packet_header,
diff --git a/devel/electron5/files/patch-chrome_browser_media_webrtc_webrtc__logging__handler__host.h b/devel/electron5/files/patch-chrome_browser_media_webrtc_webrtc__logging__handler__host.h
new file mode 100644
index 000000000000..39eb56fe1c5b
--- /dev/null
+++ b/devel/electron5/files/patch-chrome_browser_media_webrtc_webrtc__logging__handler__host.h
@@ -0,0 +1,36 @@
+--- chrome/browser/media/webrtc/webrtc_logging_handler_host.h.orig 2019-04-08 08:32:44 UTC
++++ chrome/browser/media/webrtc/webrtc_logging_handler_host.h
+@@ -154,13 +154,13 @@ class WebRtcLoggingHandlerHost : public content::Brows
+ size_t web_app_id,
+ const StartEventLoggingCallback& callback);
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ // Ensures that the WebRTC Logs directory exists and then grants render
+ // process access to the 'WebRTC Logs' directory, and invokes |callback| with
+ // the ids necessary to create a DirectoryEntry object.
+ void GetLogsDirectory(const LogsDirectoryCallback& callback,
+ const LogsDirectoryErrorCallback& error_callback);
+-#endif // defined(OS_LINUX) || defined(OS_CHROMEOS)
++#endif // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+
+ private:
+ friend class content::BrowserThread;
+@@ -227,7 +227,7 @@ class WebRtcLoggingHandlerHost : public content::Brows
+ bool success,
+ const std::string& error_message);
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ // Grants the render process access to the 'WebRTC Logs' directory, and
+ // invokes |callback| with the ids necessary to create a DirectoryEntry
+ // object. If the |logs_path| couldn't be created or found, |error_callback|
+@@ -236,7 +236,7 @@ class WebRtcLoggingHandlerHost : public content::Brows
+ const LogsDirectoryCallback& callback,
+ const LogsDirectoryErrorCallback& error_callback,
+ const base::FilePath& logs_path);
+-#endif // defined(OS_LINUX) || defined(OS_CHROMEOS)
++#endif // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+
+ // The render process ID this object belongs to.
+ const int render_process_id_;
diff --git a/devel/electron5/files/patch-chrome_browser_memory__details.cc b/devel/electron5/files/patch-chrome_browser_memory__details.cc
new file mode 100644
index 000000000000..e6b71a025827
--- /dev/null
+++ b/devel/electron5/files/patch-chrome_browser_memory__details.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/memory_details.cc.orig 2019-04-08 08:18:08 UTC
++++ chrome/browser/memory_details.cc
+@@ -38,7 +38,7 @@
+ #include "services/resource_coordinator/public/cpp/memory_instrumentation/memory_instrumentation.h"
+ #include "ui/base/l10n/l10n_util.h"
+
+-#if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_ANDROID)
++#if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_ANDROID) && !defined(OS_BSD)
+ #include "services/service_manager/zygote/zygote_host_linux.h"
+ #endif
+
+@@ -336,7 +336,7 @@ void MemoryDetails::CollectChildInfoOnUIThread() {
+ process.titles.push_back(title);
+ }
+
+-#if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_ANDROID)
++#if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_ANDROID) && !defined(OS_BSD)
+ if (service_manager::ZygoteHost::GetInstance()->IsZygotePid(process.pid)) {
+ process.process_type = content::PROCESS_TYPE_ZYGOTE;
+ }
diff --git a/devel/electron5/files/patch-chrome_browser_memory__details__linux.cc b/devel/electron5/files/patch-chrome_browser_memory__details__linux.cc
new file mode 100644
index 000000000000..4ec645a9a93d
--- /dev/null
+++ b/devel/electron5/files/patch-chrome_browser_memory__details__linux.cc
@@ -0,0 +1,13 @@
+--- chrome/browser/memory_details_linux.cc.orig 2019-04-08 08:32:44 UTC
++++ chrome/browser/memory_details_linux.cc
+@@ -72,8 +72,10 @@ ProcessData GetProcessDataMemoryInformation(
+
+ std::unique_ptr<base::ProcessMetrics> metrics(
+ base::ProcessMetrics::CreateProcessMetrics(pid));
++#if !defined(OS_BSD)
+ pmi.num_open_fds = metrics->GetOpenFdCount();
+ pmi.open_fds_soft_limit = metrics->GetOpenFdSoftLimit();
++#endif
+
+ process_data.processes.push_back(pmi);
+ }
diff --git a/devel/electron5/files/patch-chrome_browser_metrics_bluetooth__available__utility.cc b/devel/electron5/files/patch-chrome_browser_metrics_bluetooth__available__utility.cc
new file mode 100644
index 000000000000..cce46f33fdec
--- /dev/null
+++ b/devel/electron5/files/patch-chrome_browser_metrics_bluetooth__available__utility.cc
@@ -0,0 +1,13 @@
+--- chrome/browser/metrics/bluetooth_available_utility.cc.orig 2019-04-08 08:18:08 UTC
++++ chrome/browser/metrics/bluetooth_available_utility.cc
+@@ -72,8 +72,10 @@ void ReportBluetoothAvailability() {
+ if (!device::BluetoothAdapterFactory::Get().IsBluetoothSupported())
+ ReportAvailability(BLUETOOTH_NOT_SUPPORTED);
+
++#if !defined(OS_BSD)
+ device::BluetoothAdapterFactory::Get().GetAdapter(
+ base::BindOnce(&OnGetAdapter));
++#endif
+ }
+
+ } // namespace bluetooth_utility
diff --git a/devel/electron5/files/patch-chrome_browser_metrics_chrome__browser__main__extra__parts__metrics.cc b/devel/electron5/files/patch-chrome_browser_metrics_chrome__browser__main__extra__parts__metrics.cc
new file mode 100644
index 000000000000..a6440626de32
--- /dev/null
+++ b/devel/electron5/files/patch-chrome_browser_metrics_chrome__browser__main__extra__parts__metrics.cc
@@ -0,0 +1,21 @@
+--- chrome/browser/metrics/chrome_browser_main_extra_parts_metrics.cc.orig 2019-04-08 08:32:44 UTC
++++ chrome/browser/metrics/chrome_browser_main_extra_parts_metrics.cc
+@@ -44,7 +44,9 @@
+
+ #if defined(OS_LINUX) && !defined(OS_CHROMEOS)
+ #include <gnu/libc-version.h>
++#endif
+
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ #include "base/linux_util.h"
+ #include "base/strings/string_split.h"
+ #include "base/strings/string_util.h"
+@@ -52,7 +54,7 @@
+ #if defined(USE_X11)
+ #include "ui/base/x/x11_util.h"
+ #endif
+-#endif // defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#endif // defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+
+ #if defined(USE_OZONE) || defined(USE_X11)
+ #include "ui/events/devices/input_device_event_observer.h"
diff --git a/devel/electron5/files/patch-chrome_browser_net_system__network__context__manager.cc b/devel/electron5/files/patch-chrome_browser_net_system__network__context__manager.cc
new file mode 100644
index 000000000000..e4a227d73095
--- /dev/null
+++ b/devel/electron5/files/patch-chrome_browser_net_system__network__context__manager.cc
@@ -0,0 +1,26 @@
+--- chrome/browser/net/system_network_context_manager.cc.orig 2019-04-08 08:32:45 UTC
++++ chrome/browser/net/system_network_context_manager.cc
+@@ -69,12 +69,12 @@
+ #include "chrome/browser/chromeos/policy/browser_policy_connector_chromeos.h"
+ #endif // defined(OS_CHROMEOS)
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS)
+ #include "chrome/common/chrome_paths_internal.h"
+ #include "chrome/common/chrome_switches.h"
+ #include "chrome/grit/chromium_strings.h"
+ #include "ui/base/l10n/l10n_util.h"
+-#endif // defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#endif // (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS)
+
+ namespace {
+
+@@ -519,7 +519,7 @@ void SystemNetworkContextManager::OnNetworkServiceCrea
+ content::GetNetworkService()->ConfigureStubHostResolver(
+ stub_resolver_enabled, std::move(dns_over_https_servers));
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS)
+ const base::CommandLine& command_line =
+ *base::CommandLine::ForCurrentProcess();
+
diff --git a/devel/electron5/files/patch-chrome_browser_password__manager_chrome__password__manager__client.cc b/devel/electron5/files/patch-chrome_browser_password__manager_chrome__password__manager__client.cc
new file mode 100644
index 000000000000..4650cfb09454
--- /dev/null
+++ b/devel/electron5/files/patch-chrome_browser_password__manager_chrome__password__manager__client.cc
@@ -0,0 +1,14 @@
+--- chrome/browser/password_manager/chrome_password_manager_client.cc.orig 2019-04-08 08:32:45 UTC
++++ chrome/browser/password_manager/chrome_password_manager_client.cc
+@@ -80,7 +80,11 @@
+ #include "net/cert/cert_status_flags.h"
+ #include "services/identity/public/cpp/identity_manager.h"
+ #include "services/metrics/public/cpp/ukm_recorder.h"
++#if defined(OS_BSD)
++#include <re2/re2.h>
++#else
+ #include "third_party/re2/src/re2/re2.h"
++#endif
+ #include "url/url_constants.h"
+
+ #if defined(SAFE_BROWSING_DB_LOCAL)
diff --git a/devel/electron5/files/patch-chrome_browser_password__manager_password__store__factory.cc b/devel/electron5/files/patch-chrome_browser_password__manager_password__store__factory.cc
new file mode 100644
index 000000000000..9ee61dd93691
--- /dev/null
+++ b/devel/electron5/files/patch-chrome_browser_password__manager_password__store__factory.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/password_manager/password_store_factory.cc.orig 2019-04-08 08:32:45 UTC
++++ chrome/browser/password_manager/password_store_factory.cc
+@@ -300,7 +300,7 @@ PasswordStoreFactory::BuildServiceInstanceFor(
+ password_manager_util::RemoveUselessCredentials(ps, profile->GetPrefs(), 60,
+ network_context_getter);
+
+-#if defined(OS_WIN) || defined(OS_MACOSX) || \
++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_BSD) || \
+ (defined(OS_LINUX) && !defined(OS_CHROMEOS))
+ std::unique_ptr<password_manager::PasswordStoreSigninNotifier> notifier =
+ std::make_unique<password_manager::PasswordStoreSigninNotifierImpl>(
diff --git a/devel/electron5/files/patch-chrome_browser_platform__util.h b/devel/electron5/files/patch-chrome_browser_platform__util.h
new file mode 100644
index 000000000000..02be44eabab2
--- /dev/null
+++ b/devel/electron5/files/patch-chrome_browser_platform__util.h
@@ -0,0 +1,11 @@
+--- chrome/browser/platform_util.h.orig 2019-04-08 08:32:45 UTC
++++ chrome/browser/platform_util.h
+@@ -40,7 +40,7 @@ enum OpenOperationResult {
+ enum OpenItemType {
+ OPEN_FILE,
+ OPEN_FOLDER,
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ SHOW_ITEM_IN_FOLDER
+ #endif
+ };
diff --git a/devel/electron5/files/patch-chrome_browser_plugins_plugins__resource__service.cc b/devel/electron5/files/patch-chrome_browser_plugins_plugins__resource__service.cc
new file mode 100644
index 000000000000..3af745ac2568
--- /dev/null
+++ b/devel/electron5/files/patch-chrome_browser_plugins_plugins__resource__service.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/plugins/plugins_resource_service.cc.orig 2019-04-08 08:32:45 UTC
++++ chrome/browser/plugins/plugins_resource_service.cc
+@@ -63,7 +63,7 @@ GURL GetPluginsServerURL() {
+ filename = "plugins_win.json";
+ #elif defined(OS_CHROMEOS)
+ filename = "plugins_chromeos.json";
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ filename = "plugins_linux.json";
+ #elif defined(OS_MACOSX)
+ filename = "plugins_mac.json";
diff --git a/devel/electron5/files/patch-chrome_browser_policy_configuration__policy__handler__list__factory.cc b/devel/electron5/files/patch-chrome_browser_policy_configuration__policy__handler__list__factory.cc
new file mode 100644
index 000000000000..a538bdcb27d1
--- /dev/null
+++ b/devel/electron5/files/patch-chrome_browser_policy_configuration__policy__handler__list__factory.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/policy/configuration_policy_handler_list_factory.cc.orig 2019-04-08 08:32:45 UTC
++++ chrome/browser/policy/configuration_policy_handler_list_factory.cc
+@@ -107,7 +107,7 @@
+ #include "chrome/browser/policy/browser_signin_policy_handler.h"
+ #endif
+
+-#if defined(OS_WIN) || defined(OS_MACOSX) || \
++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_BSD) || \
+ (defined(OS_LINUX) && !defined(OS_CHROMEOS))
+ #include "chrome/browser/browser_switcher/browser_switcher_prefs.h"
+ #endif
+@@ -939,7 +939,7 @@ const PolicyToPreferenceMapEntry kSimplePolicyMap[] =
+ prefs::kEnterpriseHardwarePlatformAPIEnabled,
+ base::Value::Type::BOOLEAN },
+
+-#if defined(OS_WIN) || defined(OS_MACOSX) || \
++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_BSD) || \
+ (defined(OS_LINUX) && !defined(OS_CHROMEOS))
+ { key::kAlternativeBrowserPath,
+ browser_switcher::prefs::kAlternativeBrowserPath,
diff --git a/devel/electron5/files/patch-chrome_browser_policy_machine__level__user__cloud__policy__controller.cc b/devel/electron5/files/patch-chrome_browser_policy_machine__level__user__cloud__policy__controller.cc
new file mode 100644
index 000000000000..7eaf99330b24
--- /dev/null
+++ b/devel/electron5/files/patch-chrome_browser_policy_machine__level__user__cloud__policy__controller.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/policy/machine_level_user_cloud_policy_controller.cc.orig 2019-04-08 08:32:45 UTC
++++ chrome/browser/policy/machine_level_user_cloud_policy_controller.cc
+@@ -65,7 +65,7 @@ bool IsMachineLevelUserCloudPolicyEnabled() {
+ #endif
+ }
+
+-#if defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ void CleanupUnusedPolicyDirectory() {
+ std::string enrollment_token =
+ BrowserDMTokenStorage::Get()->RetrieveEnrollmentToken();
+@@ -124,7 +124,7 @@ MachineLevelUserCloudPolicyController::CreatePolicyMan
+ void MachineLevelUserCloudPolicyController::Init(
+ PrefService* local_state,
+ scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory) {
+-#if defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ // This is a function that removes the directory we accidentally create due to
+ // crbug.com/880870. The directory is only removed when it's empty and
+ // enrollment token doesn't exist. This function is expected to be removed
diff --git a/devel/electron5/files/patch-chrome_browser_policy_policy__prefs__browsertest.cc b/devel/electron5/files/patch-chrome_browser_policy_policy__prefs__browsertest.cc
new file mode 100644
index 000000000000..e2698d948407
--- /dev/null
+++ b/devel/electron5/files/patch-chrome_browser_policy_policy__prefs__browsertest.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/policy/policy_prefs_browsertest.cc.orig 2019-04-08 08:32:45 UTC
++++ chrome/browser/policy/policy_prefs_browsertest.cc
+@@ -185,6 +185,8 @@ class PolicyTestCase {
+ const std::string os("chromeos");
+ #elif defined(OS_LINUX)
+ const std::string os("linux");
++#elif defined(OS_FREEBSD)
++ const std::string os("freebsd");
+ #else
+ #error "Unknown platform"
+ #endif
diff --git a/devel/electron5/files/patch-chrome_browser_prefs_browser__prefs.cc b/devel/electron5/files/patch-chrome_browser_prefs_browser__prefs.cc
new file mode 100644
index 000000000000..35cc47f7d168
--- /dev/null
+++ b/devel/electron5/files/patch-chrome_browser_prefs_browser__prefs.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/prefs/browser_prefs.cc.orig 2019-04-08 08:32:45 UTC
++++ chrome/browser/prefs/browser_prefs.cc
+@@ -319,7 +319,7 @@
+ #include "chrome/browser/safe_browsing/settings_reset_prompt/settings_reset_prompt_prefs_manager.h"
+ #endif
+
+-#if defined(OS_WIN) || defined(OS_MACOSX) || \
++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_BSD) || \
+ (defined(OS_LINUX) && !defined(OS_CHROMEOS))
+ #include "chrome/browser/browser_switcher/browser_switcher_prefs.h"
+ #endif
+@@ -771,7 +771,7 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySync
+ safe_browsing::PostCleanupSettingsResetter::RegisterProfilePrefs(registry);
+ #endif
+
+-#if defined(OS_WIN) || defined(OS_MACOSX) || \
++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_BSD) || \
+ (defined(OS_LINUX) && !defined(OS_CHROMEOS))
+ browser_switcher::BrowserSwitcherPrefs::RegisterProfilePrefs(registry);
+ #endif
diff --git a/devel/electron5/files/patch-chrome_browser_prefs_pref__service__incognito__whitelist.cc b/devel/electron5/files/patch-chrome_browser_prefs_pref__service__incognito__whitelist.cc
new file mode 100644
index 000000000000..7b6ff9766c53
--- /dev/null
+++ b/devel/electron5/files/patch-chrome_browser_prefs_pref__service__incognito__whitelist.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/prefs/pref_service_incognito_whitelist.cc.orig 2019-04-08 08:18:08 UTC
++++ chrome/browser/prefs/pref_service_incognito_whitelist.cc
+@@ -164,7 +164,7 @@ const char* const kPersistentPrefNames[] = {
+ prefs::kShowFullscreenToolbar,
+ #endif
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS)
+ // Toggleing custom frames affects all open windows in the profile, hence
+ // should be written to the regular profile when changed in incognito mode.
+ prefs::kUseCustomChromeFrame,
diff --git a/devel/electron5/files/patch-chrome_browser_process__singleton__posix.cc b/devel/electron5/files/patch-chrome_browser_process__singleton__posix.cc
new file mode 100644
index 000000000000..1d4bea2a90dd
--- /dev/null
+++ b/devel/electron5/files/patch-chrome_browser_process__singleton__posix.cc
@@ -0,0 +1,34 @@
+--- chrome/browser/process_singleton_posix.cc.orig 2019-04-08 08:32:45 UTC
++++ chrome/browser/process_singleton_posix.cc
+@@ -93,11 +93,11 @@
+ #include "net/base/network_interfaces.h"
+ #include "ui/base/l10n/l10n_util.h"
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include "chrome/browser/ui/process_singleton_dialog_linux.h"
+ #endif
+
+-#if defined(TOOLKIT_VIEWS) && defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if defined(TOOLKIT_VIEWS) && (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ #include "ui/views/linux_ui/linux_ui.h"
+ #endif
+
+@@ -325,7 +325,7 @@ bool DisplayProfileInUseError(const base::FilePath& lo
+ if (g_disable_prompt)
+ return g_user_opted_unlock_in_use_profile;
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ base::string16 relaunch_button_text = l10n_util::GetStringUTF16(
+ IDS_PROFILE_IN_USE_LINUX_RELAUNCH);
+ return ShowProcessSingletonDialog(error, relaunch_button_text);
+@@ -904,7 +904,7 @@ ProcessSingleton::NotifyResult ProcessSingleton::Notif
+ SendRemoteProcessInteractionResultHistogram(REMOTE_PROCESS_SHUTTING_DOWN);
+ return PROCESS_NONE;
+ } else if (strncmp(buf, kACKToken, base::size(kACKToken) - 1) == 0) {
+-#if defined(TOOLKIT_VIEWS) && defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if defined(TOOLKIT_VIEWS) && (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ // Likely NULL in unit tests.
+ views::LinuxUI* linux_ui = views::LinuxUI::instance();
+ if (linux_ui)
diff --git a/devel/electron5/files/patch-chrome_browser_profiles_chrome__browser__main__extra__parts__profiles.cc b/devel/electron5/files/patch-chrome_browser_profiles_chrome__browser__main__extra__parts__profiles.cc
new file mode 100644
index 000000000000..048f371ed656
--- /dev/null
+++ b/devel/electron5/files/patch-chrome_browser_profiles_chrome__browser__main__extra__parts__profiles.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc.orig 2019-04-08 08:32:45 UTC
++++ chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc
+@@ -326,7 +326,7 @@ void ChromeBrowserMainExtraPartsProfiles::
+ #if !defined(OS_ANDROID)
+ MediaGalleriesPreferencesFactory::GetInstance();
+ #endif
+-#if defined(OS_WIN) || defined(OS_MACOSX) || \
++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_BSD) || \
+ (defined(OS_LINUX) && !defined(OS_CHROMEOS))
+ metrics::DesktopProfileSessionDurationsServiceFactory::GetInstance();
+ #endif
diff --git a/devel/electron5/files/patch-chrome_browser_profiles_profile__attributes__entry.cc b/devel/electron5/files/patch-chrome_browser_profiles_profile__attributes__entry.cc
new file mode 100644
index 000000000000..f4498be77946
--- /dev/null
+++ b/devel/electron5/files/patch-chrome_browser_profiles_profile__attributes__entry.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/profiles/profile_attributes_entry.cc.orig 2019-04-08 08:18:08 UTC
++++ chrome/browser/profiles/profile_attributes_entry.cc
+@@ -57,7 +57,7 @@ void ProfileAttributesEntry::Initialize(ProfileInfoCac
+ if (is_force_signin_enabled_) {
+ if (!IsAuthenticated())
+ is_force_signin_profile_locked_ = true;
+-#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_WIN)
++#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD)
+ } else if (IsSigninRequired()) {
+ // Profiles that require signin in the absence of an enterprise policy are
+ // left-overs from legacy supervised users. Just unlock them, so users can
diff --git a/devel/electron5/files/patch-chrome_browser_renderer__context__menu_render__view__context__menu.cc b/devel/electron5/files/patch-chrome_browser_renderer__context__menu_render__view__context__menu.cc
new file mode 100644
index 000000000000..b30faeb855bf
--- /dev/null
+++ b/devel/electron5/files/patch-chrome_browser_renderer__context__menu_render__view__context__menu.cc
@@ -0,0 +1,29 @@
+--- chrome/browser/renderer_context_menu/render_view_context_menu.cc.orig 2019-04-08 08:32:45 UTC
++++ chrome/browser/renderer_context_menu/render_view_context_menu.cc
+@@ -1507,7 +1507,7 @@ void RenderViewContextMenu::AppendEditableItems() {
+ // 'Undo' and 'Redo' for text input with no suggestions and no text selected.
+ // We make an exception for OS X as context clicking will select the closest
+ // word. In this case both items are always shown.
+-#if defined(OS_MACOSX)
++#if defined(OS_MACOSX) || defined(OS_BSD)
+ menu_model_.AddItemWithStringId(IDC_CONTENT_CONTEXT_UNDO,
+ IDS_CONTENT_CONTEXT_UNDO);
+ menu_model_.AddItemWithStringId(IDC_CONTENT_CONTEXT_REDO,
+@@ -1549,7 +1549,7 @@ void RenderViewContextMenu::AppendLanguageSettings() {
+ if (!use_spelling)
+ return;
+
+-#if defined(OS_MACOSX)
++#if defined(OS_MACOSX) || defined(OS_BSD)
+ menu_model_.AddItemWithStringId(IDC_CONTENT_CONTEXT_LANGUAGE_SETTINGS,
+ IDS_CONTENT_CONTEXT_LANGUAGE_SETTINGS);
+ #else
+@@ -1823,7 +1823,7 @@ bool RenderViewContextMenu::IsCommandIdEnabled(int id)
+ case IDC_CHECK_SPELLING_WHILE_TYPING:
+ return prefs->GetBoolean(spellcheck::prefs::kSpellCheckEnable);
+
+-#if !defined(OS_MACOSX) && defined(OS_POSIX)
++#if !defined(OS_MACOSX) && !defined(OS_BSD) && defined(OS_POSIX)
+ // TODO(suzhe): this should not be enabled for password fields.
+ case IDC_INPUT_METHODS_MENU:
+ return true;
diff --git a/devel/electron5/files/patch-chrome_browser_renderer__preferences__util.cc b/devel/electron5/files/patch-chrome_browser_renderer__preferences__util.cc
new file mode 100644
index 000000000000..1eccc956ea62
--- /dev/null
+++ b/devel/electron5/files/patch-chrome_browser_renderer__preferences__util.cc
@@ -0,0 +1,29 @@
+--- chrome/browser/renderer_preferences_util.cc.orig 2019-04-08 08:32:45 UTC
++++ chrome/browser/renderer_preferences_util.cc
+@@ -28,7 +28,7 @@
+ #include "ui/base/cocoa/defaults_utils.h"
+ #endif
+
+-#if defined(USE_AURA) && defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if defined(USE_AURA) && (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS)
+ #include "chrome/browser/themes/theme_service.h"
+ #include "chrome/browser/themes/theme_service_factory.h"
+ #include "ui/views/linux_ui/linux_ui.h"
+@@ -127,7 +127,7 @@ void UpdateFromSystemSettings(content::RendererPrefere
+ prefs->caret_blink_interval = interval;
+ #endif
+
+-#if defined(USE_AURA) && defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if defined(USE_AURA) && (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS)
+ views::LinuxUI* linux_ui = views::LinuxUI::instance();
+ if (linux_ui) {
+ if (ThemeServiceFactory::GetForProfile(profile)->UsingSystemTheme()) {
+@@ -146,7 +146,7 @@ void UpdateFromSystemSettings(content::RendererPrefere
+ }
+ #endif
+
+-#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_WIN)
++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_WIN) || defined(OS_BSD)
+ content::UpdateFontRendererPreferencesFromSystemSettings(prefs);
+ #endif
+
diff --git a/devel/electron5/files/patch-chrome_browser_resources_safe__browsing_gen__file__type__proto.py b/devel/electron5/files/patch-chrome_browser_resources_safe__browsing_gen__file__type__proto.py
new file mode 100644
index 000000000000..3cc257a63eb0
--- /dev/null
+++ b/devel/electron5/files/patch-chrome_browser_resources_safe__browsing_gen__file__type__proto.py
@@ -0,0 +1,19 @@
+--- chrome/browser/resources/safe_browsing/gen_file_type_proto.py.orig 2019-04-08 08:32:46 UTC
++++ chrome/browser/resources/safe_browsing/gen_file_type_proto.py
+@@ -31,6 +31,7 @@ def PlatformTypes():
+ "android": download_file_types_pb2.DownloadFileType.PLATFORM_ANDROID,
+ "chromeos": download_file_types_pb2.DownloadFileType.PLATFORM_CHROME_OS,
+ "linux": download_file_types_pb2.DownloadFileType.PLATFORM_LINUX,
++ "bsd": download_file_types_pb2.DownloadFileType.PLATFORM_LINUX,
+ "mac": download_file_types_pb2.DownloadFileType.PLATFORM_MAC,
+ "win": download_file_types_pb2.DownloadFileType.PLATFORM_WINDOWS,
+ }
+@@ -169,7 +170,7 @@ class DownloadFileTypeProtoGenerator(BinaryProtoGenera
+ 'Outfile must have a %d for version and %s for platform.')
+ parser.add_option('-t', '--type',
+ help='The platform type. One of android, chromeos, ' +
+- 'linux, mac, win')
++ 'linux, bsd, mac, win')
+
+ def AddExtraCommandLineArgsForVirtualEnvRun(self, opts, command):
+ if opts.type is not None:
diff --git a/devel/electron5/files/patch-chrome_browser_resources_settings_appearance__page_appearance__browser__proxy.js b/devel/electron5/files/patch-chrome_browser_resources_settings_appearance__page_appearance__browser__proxy.js
new file mode 100644
index 000000000000..97bddc3e44b4
--- /dev/null
+++ b/devel/electron5/files/patch-chrome_browser_resources_settings_appearance__page_appearance__browser__proxy.js
@@ -0,0 +1,20 @@
+--- chrome/browser/resources/settings/appearance_page/appearance_browser_proxy.js.orig 2019-04-08 08:18:09 UTC
++++ chrome/browser/resources/settings/appearance_page/appearance_browser_proxy.js
+@@ -35,7 +35,7 @@ cr.define('settings', function() {
+
+ useDefaultTheme() {}
+
+- // <if expr="is_linux and not chromeos">
++ // <if expr="is_bsd and not chromeos">
+ useSystemTheme() {}
+
+ // </if>
+@@ -93,7 +93,7 @@ cr.define('settings', function() {
+ chrome.send('useDefaultTheme');
+ }
+
+- // <if expr="is_linux and not chromeos">
++ // <if expr="is_bsd and not chromeos">
+ /** @override */
+ useSystemTheme() {
+ chrome.send('useSystemTheme');
diff --git a/devel/electron5/files/patch-chrome_browser_resources_settings_appearance__page_appearance__page.html b/devel/electron5/files/patch-chrome_browser_resources_settings_appearance__page_appearance__page.html
new file mode 100644
index 000000000000..aae864ba24d0
--- /dev/null
+++ b/devel/electron5/files/patch-chrome_browser_resources_settings_appearance__page_appearance__page.html
@@ -0,0 +1,29 @@
+--- chrome/browser/resources/settings/appearance_page/appearance_page.html.orig 2019-04-08 08:32:46 UTC
++++ chrome/browser/resources/settings/appearance_page/appearance_page.html
+@@ -65,7 +65,7 @@
+ hidden="[[!pageVisibility.setTheme]]"
+ label="$i18n{themes}" sub-label="[[themeSublabel_]]"
+ on-click="openThemeUrl_"></cr-link-row>
+-<if expr="not is_linux or chromeos">
++<if expr="not is_posix or chromeos">
+ <template is="dom-if" if="[[prefs.extensions.theme.id.value]]">
+ <div class="separator"></div>
+ <paper-button id="useDefault" on-click="onUseDefaultTap_"
+@@ -74,7 +74,7 @@
+ </paper-button>
+ </template>
+ </if>
+-<if expr="is_linux and not chromeos">
++<if expr="is_posix and not chromeos">
+ <div class="settings-row continuation"
+ hidden="[[!showThemesSecondary_(
+ prefs.extensions.theme.id.value, useSystemTheme_)]]"
+@@ -139,7 +139,7 @@
+ pref="{{prefs.bookmark_bar.show_on_all_tabs}}"
+ label="$i18n{showBookmarksBar}">
+ </settings-toggle-button>
+-<if expr="is_linux and not chromeos">
++<if expr="is_posix and not chromeos">
+ <settings-toggle-button
+ class$="[[getFirst_(pageVisibility.bookmarksBar)]]"
+ pref="{{prefs.browser.custom_chrome_frame}}"
diff --git a/devel/electron5/files/patch-chrome_browser_resources_settings_appearance__page_appearance__page.js b/devel/electron5/files/patch-chrome_browser_resources_settings_appearance__page_appearance__page.js
new file mode 100644
index 000000000000..9d2505de80cb
--- /dev/null
+++ b/devel/electron5/files/patch-chrome_browser_resources_settings_appearance__page_appearance__page.js
@@ -0,0 +1,33 @@
+--- chrome/browser/resources/settings/appearance_page/appearance_page.js.orig 2019-04-08 08:18:09 UTC
++++ chrome/browser/resources/settings/appearance_page/appearance_page.js
+@@ -120,7 +120,7 @@ Polymer({
+ 'defaultFontSizeChanged_(prefs.webkit.webprefs.default_font_size.value)',
+ 'themeChanged_(prefs.extensions.theme.id.value, useSystemTheme_)',
+
+- // <if expr="is_linux and not chromeos">
++ // <if expr="is_bsd and not chromeos">
+ // NOTE: this pref only exists on Linux.
+ 'useSystemThemePrefChanged_(prefs.extensions.theme.use_system.value)',
+ // </if>
+@@ -223,7 +223,7 @@ Polymer({
+ this.browserProxy_.useDefaultTheme();
+ },
+
+- // <if expr="is_linux and not chromeos">
++ // <if expr="is_bsd and not chromeos">
+ /**
+ * @param {boolean} useSystemTheme
+ * @private
+@@ -292,10 +292,10 @@ Polymer({
+ }
+
+ let i18nId;
+- // <if expr="is_linux and not chromeos">
++ // <if expr="is_bsd and not chromeos">
+ i18nId = useSystemTheme ? 'systemTheme' : 'classicTheme';
+ // </if>
+- // <if expr="not is_linux or chromeos">
++ // <if expr="not is_bsd or chromeos">
+ i18nId = 'chooseFromWebStore';
+ // </if>
+ this.themeSublabel_ = this.i18n(i18nId);
diff --git a/devel/electron5/files/patch-chrome_browser_safe__browsing_incident__reporting_incident__handler__util.cc b/devel/electron5/files/patch-chrome_browser_safe__browsing_incident__reporting_incident__handler__util.cc
new file mode 100644
index 000000000000..ccdff3b36c08
--- /dev/null
+++ b/devel/electron5/files/patch-chrome_browser_safe__browsing_incident__reporting_incident__handler__util.cc
@@ -0,0 +1,15 @@
+--- chrome/browser/safe_browsing/incident_reporting/incident_handler_util.cc.orig 2019-04-08 08:32:46 UTC
++++ chrome/browser/safe_browsing/incident_reporting/incident_handler_util.cc
+@@ -8,7 +8,12 @@
+
+ #include "base/hash.h"
+ #include "base/logging.h"
++//XXX(rene) needs shim headers?
++#if defined(USE_SYSTEM_PROTOBUF)
++#include <google/protobuf/message_lite.h>
++#else
+ #include "third_party/protobuf/src/google/protobuf/message_lite.h"
++#endif
+
+ namespace safe_browsing {
+
diff --git a/devel/electron5/files/patch-chrome_browser_safe__browsing_incident__reporting_incident__reporting__service.cc b/devel/electron5/files/patch-chrome_browser_safe__browsing_incident__reporting_incident__reporting__service.cc
new file mode 100644
index 000000000000..18796fa5fd79
--- /dev/null
+++ b/devel/electron5/files/patch-chrome_browser_safe__browsing_incident__reporting_incident__reporting__service.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/safe_browsing/incident_reporting/incident_reporting_service.cc.orig 2019-04-08 08:32:46 UTC
++++ chrome/browser/safe_browsing/incident_reporting/incident_reporting_service.cc
+@@ -715,7 +715,7 @@ void IncidentReportingService::OnEnvironmentDataCollec
+ environment_collection_pending_ = false;
+
+ // Process::Current().CreationTime() is missing on some platforms.
+-#if defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_LINUX)
++#if defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD)
+ base::TimeDelta uptime =
+ first_incident_time_ - base::Process::Current().CreationTime();
+ environment_data->mutable_process()->set_uptime_msec(uptime.InMilliseconds());
diff --git a/devel/electron5/files/patch-chrome_browser_search_local__files__ntp__source.cc b/devel/electron5/files/patch-chrome_browser_search_local__files__ntp__source.cc
new file mode 100644
index 000000000000..c4525b9b9eb1
--- /dev/null
+++ b/devel/electron5/files/patch-chrome_browser_search_local__files__ntp__source.cc
@@ -0,0 +1,16 @@
+--- chrome/browser/search/local_files_ntp_source.cc.orig 2019-04-08 08:18:09 UTC
++++ chrome/browser/search/local_files_ntp_source.cc
+@@ -20,8 +20,13 @@
+ #include "build/build_config.h"
+ #include "chrome/common/url_constants.h"
+ #include "content/public/browser/url_data_source.h"
++#if defined(OS_BSD)
++#include <re2/re2.h>
++#include <re2/stringpiece.h>
++#else
+ #include "third_party/re2/src/re2/re2.h"
+ #include "third_party/re2/src/re2/stringpiece.h"
++#endif
+
+ namespace {
+
diff --git a/devel/electron5/files/patch-chrome_browser_signin_signin__util.cc b/devel/electron5/files/patch-chrome_browser_signin_signin__util.cc
new file mode 100644
index 000000000000..f399c25be493
--- /dev/null
+++ b/devel/electron5/files/patch-chrome_browser_signin_signin__util.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/signin/signin_util.cc.orig 2019-04-08 08:32:46 UTC
++++ chrome/browser/signin/signin_util.cc
+@@ -42,7 +42,7 @@ namespace {
+
+ constexpr char kSignoutSettingKey[] = "signout_setting";
+
+-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ #define CAN_DELETE_PROFILE
+ #endif
+
diff --git a/devel/electron5/files/patch-chrome_browser_ssl_ssl__error__controller__client.cc b/devel/electron5/files/patch-chrome_browser_ssl_ssl__error__controller__client.cc
new file mode 100644
index 000000000000..1abec17ff058
--- /dev/null
+++ b/devel/electron5/files/patch-chrome_browser_ssl_ssl__error__controller__client.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/ssl/ssl_error_controller_client.cc.orig 2019-04-08 08:32:46 UTC
++++ chrome/browser/ssl/ssl_error_controller_client.cc
+@@ -78,7 +78,7 @@ void LaunchDateAndTimeSettingsImpl() {
+ #if defined(OS_ANDROID)
+ chrome::android::OpenDateAndTimeSettings();
+
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ struct ClockCommand {
+ const char* const pathname;
+ const char* const argument;
+@@ -219,7 +219,7 @@ void SSLErrorControllerClient::Proceed() {
+
+ bool SSLErrorControllerClient::CanLaunchDateAndTimeSettings() {
+ #if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_MACOSX) || \
+- defined(OS_WIN)
++ defined(OS_WIN) || defined(OS_BSD)
+ return true;
+ #else
+ return false;
diff --git a/devel/electron5/files/patch-chrome_browser_sync_chrome__sync__client.cc b/devel/electron5/files/patch-chrome_browser_sync_chrome__sync__client.cc
new file mode 100644
index 000000000000..5d6849fdfdb6
--- /dev/null
+++ b/devel/electron5/files/patch-chrome_browser_sync_chrome__sync__client.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/sync/chrome_sync_client.cc.orig 2019-04-08 08:32:46 UTC
++++ chrome/browser/sync/chrome_sync_client.cc
+@@ -428,7 +428,7 @@ ChromeSyncClient::CreateDataTypeControllers(syncer::Sy
+ }
+ #endif // BUILDFLAG(ENABLE_APP_LIST)
+
+-#if defined(OS_LINUX) || defined(OS_WIN)
++#if defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD)
+ // Dictionary sync is enabled by default.
+ if (!disabled_types.Has(syncer::DICTIONARY)) {
+ if (base::FeatureList::IsEnabled(switches::kSyncPseudoUSSDictionary)) {
+@@ -444,7 +444,7 @@ ChromeSyncClient::CreateDataTypeControllers(syncer::Sy
+ base::CreateSingleThreadTaskRunnerWithTraits({BrowserThread::UI})));
+ }
+ }
+-#endif // defined(OS_LINUX) || defined(OS_WIN)
++#endif // defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD)
+
+ #if defined(OS_CHROMEOS)
+ if (arc::IsArcAllowedForProfile(profile_) &&
diff --git a/devel/electron5/files/patch-chrome_browser_task__manager_sampling_task__group.cc b/devel/electron5/files/patch-chrome_browser_task__manager_sampling_task__group.cc
new file mode 100644
index 000000000000..b1e7887b1d61
--- /dev/null
+++ b/devel/electron5/files/patch-chrome_browser_task__manager_sampling_task__group.cc
@@ -0,0 +1,56 @@
+--- chrome/browser/task_manager/sampling/task_group.cc.orig 2019-04-08 08:32:46 UTC
++++ chrome/browser/task_manager/sampling/task_group.cc
+@@ -33,9 +33,9 @@ const int kBackgroundRefreshTypesMask =
+ #if defined(OS_WIN)
+ REFRESH_TYPE_START_TIME | REFRESH_TYPE_CPU_TIME |
+ #endif // defined(OS_WIN)
+-#if defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ REFRESH_TYPE_FD_COUNT |
+-#endif // defined(OS_LINUX) || defined(OS_MACOSX)
++#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ #if BUILDFLAG(ENABLE_NACL)
+ REFRESH_TYPE_NACL |
+ #endif // BUILDFLAG(ENABLE_NACL)
+@@ -112,9 +112,9 @@ TaskGroup::TaskGroup(
+ #if BUILDFLAG(ENABLE_NACL)
+ nacl_debug_stub_port_(nacl::kGdbDebugStubPortUnknown),
+ #endif // BUILDFLAG(ENABLE_NACL)
+-#if defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ open_fd_count_(-1),
+-#endif // defined(OS_LINUX) || defined(OS_MACOSX)
++#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ idle_wakeups_per_second_(-1),
+ gpu_memory_has_duplicates_(false),
+ is_backgrounded_(false),
+@@ -128,10 +128,10 @@ TaskGroup::TaskGroup(
+ weak_ptr_factory_.GetWeakPtr()),
+ base::Bind(&TaskGroup::OnIdleWakeupsRefreshDone,
+ weak_ptr_factory_.GetWeakPtr()),
+-#if defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ base::Bind(&TaskGroup::OnOpenFdCountRefreshDone,
+ weak_ptr_factory_.GetWeakPtr()),
+-#endif // defined(OS_LINUX) || defined(OS_MACOSX)
++#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ base::Bind(&TaskGroup::OnProcessPriorityDone,
+ weak_ptr_factory_.GetWeakPtr()));
+
+@@ -296,14 +296,14 @@ void TaskGroup::OnRefreshNaClDebugStubPortDone(int nac
+ }
+ #endif // BUILDFLAG(ENABLE_NACL)
+
+-#if defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ void TaskGroup::OnOpenFdCountRefreshDone(int open_fd_count) {
+ DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
+
+ open_fd_count_ = open_fd_count;
+ OnBackgroundRefreshTypeFinished(REFRESH_TYPE_FD_COUNT);
+ }
+-#endif // defined(OS_LINUX) || defined(OS_MACOSX)
++#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+
+ void TaskGroup::OnCpuRefreshDone(double cpu_usage) {
+ DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
diff --git a/devel/electron5/files/patch-chrome_browser_task__manager_sampling_task__group.h b/devel/electron5/files/patch-chrome_browser_task__manager_sampling_task__group.h
new file mode 100644
index 000000000000..e890888d7801
--- /dev/null
+++ b/devel/electron5/files/patch-chrome_browser_task__manager_sampling_task__group.h
@@ -0,0 +1,39 @@
+--- chrome/browser/task_manager/sampling/task_group.h.orig 2019-04-08 08:32:46 UTC
++++ chrome/browser/task_manager/sampling/task_group.h
+@@ -106,9 +106,9 @@ class TaskGroup {
+ int nacl_debug_stub_port() const { return nacl_debug_stub_port_; }
+ #endif // BUILDFLAG(ENABLE_NACL)
+
+-#if defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ int open_fd_count() const { return open_fd_count_; }
+-#endif // defined(OS_LINUX) || defined(OS_MACOSX)
++#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+
+ int idle_wakeups_per_second() const { return idle_wakeups_per_second_; }
+ private:
+@@ -121,9 +121,9 @@ class TaskGroup {
+ void RefreshNaClDebugStubPort(int child_process_unique_id);
+ void OnRefreshNaClDebugStubPortDone(int port);
+ #endif
+-#if defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ void OnOpenFdCountRefreshDone(int open_fd_count);
+-#endif // defined(OS_LINUX) || defined(OS_MACOSX)
++#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+
+ void OnCpuRefreshDone(double cpu_usage);
+ void OnSwappedMemRefreshDone(int64_t swapped_mem_bytes);
+@@ -191,10 +191,10 @@ class TaskGroup {
+ #if BUILDFLAG(ENABLE_NACL)
+ int nacl_debug_stub_port_;
+ #endif // BUILDFLAG(ENABLE_NACL)
+-#if defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ // The number of file descriptors currently open by the process.
+ int open_fd_count_;
+-#endif // defined(OS_LINUX) || defined(OS_MACOSX)
++#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ int idle_wakeups_per_second_;
+ bool gpu_memory_has_duplicates_;
+ bool is_backgrounded_;
diff --git a/devel/electron5/files/patch-chrome_browser_task__manager_sampling_task__group__sampler.cc b/devel/electron5/files/patch-chrome_browser_task__manager_sampling_task__group__sampler.cc
new file mode 100644
index 000000000000..f7b5b1503c2b
--- /dev/null
+++ b/devel/electron5/files/patch-chrome_browser_task__manager_sampling_task__group__sampler.cc
@@ -0,0 +1,72 @@
+--- chrome/browser/task_manager/sampling/task_group_sampler.cc.orig 2019-04-08 08:32:46 UTC
++++ chrome/browser/task_manager/sampling/task_group_sampler.cc
+@@ -42,9 +42,9 @@ TaskGroupSampler::TaskGroupSampler(
+ const OnCpuRefreshCallback& on_cpu_refresh,
+ const OnSwappedMemRefreshCallback& on_swapped_mem_refresh,
+ const OnIdleWakeupsCallback& on_idle_wakeups,
+-#if defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ const OnOpenFdCountCallback& on_open_fd_count,
+-#endif // defined(OS_LINUX) || defined(OS_MACOSX)
++#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ const OnProcessPriorityCallback& on_process_priority)
+ : process_(std::move(process)),
+ process_metrics_(CreateProcessMetrics(process_.Handle())),
+@@ -52,9 +52,9 @@ TaskGroupSampler::TaskGroupSampler(
+ on_cpu_refresh_callback_(on_cpu_refresh),
+ on_swapped_mem_refresh_callback_(on_swapped_mem_refresh),
+ on_idle_wakeups_callback_(on_idle_wakeups),
+-#if defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ on_open_fd_count_callback_(on_open_fd_count),
+-#endif // defined(OS_LINUX) || defined(OS_MACOSX)
++#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ on_process_priority_callback_(on_process_priority) {
+ DCHECK(blocking_pool_runner.get());
+
+@@ -85,7 +85,7 @@ void TaskGroupSampler::Refresh(int64_t refresh_flags)
+ on_swapped_mem_refresh_callback_);
+ }
+
+-#if defined(OS_MACOSX) || defined(OS_LINUX)
++#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+ if (TaskManagerObserver::IsResourceRefreshEnabled(REFRESH_TYPE_IDLE_WAKEUPS,
+ refresh_flags)) {
+ base::PostTaskAndReplyWithResult(
+@@ -94,9 +94,9 @@ void TaskGroupSampler::Refresh(int64_t refresh_flags)
+ base::Bind(&TaskGroupSampler::RefreshIdleWakeupsPerSecond, this),
+ on_idle_wakeups_callback_);
+ }
+-#endif // defined(OS_MACOSX) || defined(OS_LINUX)
++#endif // defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+
+-#if defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ if (TaskManagerObserver::IsResourceRefreshEnabled(REFRESH_TYPE_FD_COUNT,
+ refresh_flags)) {
+ base::PostTaskAndReplyWithResult(
+@@ -105,7 +105,7 @@ void TaskGroupSampler::Refresh(int64_t refresh_flags)
+ base::Bind(&TaskGroupSampler::RefreshOpenFdCount, this),
+ on_open_fd_count_callback_);
+ }
+-#endif // defined(OS_LINUX) || defined(OS_MACOSX)
++#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+
+ if (TaskManagerObserver::IsResourceRefreshEnabled(REFRESH_TYPE_PRIORITY,
+ refresh_flags)) {
+@@ -144,13 +144,13 @@ int TaskGroupSampler::RefreshIdleWakeupsPerSecond() {
+ return process_metrics_->GetIdleWakeupsPerSecond();
+ }
+
+-#if defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ int TaskGroupSampler::RefreshOpenFdCount() {
+ DCHECK(worker_pool_sequenced_checker_.CalledOnValidSequence());
+
+ return process_metrics_->GetOpenFdCount();
+ }
+-#endif // defined(OS_LINUX) || defined(OS_MACOSX)
++#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+
+ bool TaskGroupSampler::RefreshProcessPriority() {
+ DCHECK(worker_pool_sequenced_checker_.CalledOnValidSequence());
diff --git a/devel/electron5/files/patch-chrome_browser_task__manager_sampling_task__group__sampler.h b/devel/electron5/files/patch-chrome_browser_task__manager_sampling_task__group__sampler.h
new file mode 100644
index 000000000000..3e4d599e8c5e
--- /dev/null
+++ b/devel/electron5/files/patch-chrome_browser_task__manager_sampling_task__group__sampler.h
@@ -0,0 +1,50 @@
+--- chrome/browser/task_manager/sampling/task_group_sampler.h.orig 2019-04-08 08:32:46 UTC
++++ chrome/browser/task_manager/sampling/task_group_sampler.h
+@@ -32,9 +32,9 @@ class TaskGroupSampler : public base::RefCountedThread
+ using OnCpuRefreshCallback = base::Callback<void(double)>;
+ using OnSwappedMemRefreshCallback = base::Callback<void(int64_t)>;
+ using OnIdleWakeupsCallback = base::Callback<void(int)>;
+-#if defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ using OnOpenFdCountCallback = base::Callback<void(int)>;
+-#endif // defined(OS_LINUX) || defined(OS_MACOSX)
++#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ using OnProcessPriorityCallback = base::Callback<void(bool)>;
+
+ TaskGroupSampler(
+@@ -43,9 +43,9 @@ class TaskGroupSampler : public base::RefCountedThread
+ const OnCpuRefreshCallback& on_cpu_refresh,
+ const OnSwappedMemRefreshCallback& on_memory_refresh,
+ const OnIdleWakeupsCallback& on_idle_wakeups,
+-#if defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ const OnOpenFdCountCallback& on_open_fd_count,
+-#endif // defined(OS_LINUX) || defined(OS_MACOSX)
++#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ const OnProcessPriorityCallback& on_process_priority);
+
+ // Refreshes the expensive process' stats (CPU usage, memory usage, and idle
+@@ -60,9 +60,9 @@ class TaskGroupSampler : public base::RefCountedThread
+ double RefreshCpuUsage();
+ int64_t RefreshSwappedMem();
+ int RefreshIdleWakeupsPerSecond();
+-#if defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ int RefreshOpenFdCount();
+-#endif // defined(OS_LINUX) || defined(OS_MACOSX)
++#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ bool RefreshProcessPriority();
+
+ // The process that holds the handle that we own so that we can use it for
+@@ -80,9 +80,9 @@ class TaskGroupSampler : public base::RefCountedThread
+ const OnCpuRefreshCallback on_cpu_refresh_callback_;
+ const OnSwappedMemRefreshCallback on_swapped_mem_refresh_callback_;
+ const OnIdleWakeupsCallback on_idle_wakeups_callback_;
+-#if defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ const OnOpenFdCountCallback on_open_fd_count_callback_;
+-#endif // defined(OS_LINUX) || defined(OS_MACOSX)
++#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ const OnProcessPriorityCallback on_process_priority_callback_;
+
+ // To assert we're running on the correct thread.
diff --git a/devel/electron5/files/patch-chrome_browser_task__manager_sampling_task__manager__impl.cc b/devel/electron5/files/patch-chrome_browser_task__manager_sampling_task__manager__impl.cc
new file mode 100644
index 000000000000..8084e80d9619
--- /dev/null
+++ b/devel/electron5/files/patch-chrome_browser_task__manager_sampling_task__manager__impl.cc
@@ -0,0 +1,16 @@
+--- chrome/browser/task_manager/sampling/task_manager_impl.cc.orig 2019-04-08 08:32:46 UTC
++++ chrome/browser/task_manager/sampling/task_manager_impl.cc
+@@ -207,11 +207,11 @@ void TaskManagerImpl::GetUSERHandles(TaskId task_id,
+ }
+
+ int TaskManagerImpl::GetOpenFdCount(TaskId task_id) const {
+-#if defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ return GetTaskGroupByTaskId(task_id)->open_fd_count();
+ #else
+ return -1;
+-#endif // defined(OS_LINUX) || defined(OS_MACOSX)
++#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ }
+
+ bool TaskManagerImpl::IsTaskOnBackgroundedProcess(TaskId task_id) const {
diff --git a/devel/electron5/files/patch-chrome_browser_task__manager_task__manager__observer.h b/devel/electron5/files/patch-chrome_browser_task__manager_task__manager__observer.h
new file mode 100644
index 000000000000..2d318f6b4b7a
--- /dev/null
+++ b/devel/electron5/files/patch-chrome_browser_task__manager_task__manager__observer.h
@@ -0,0 +1,16 @@
+--- chrome/browser/task_manager/task_manager_observer.h.orig 2019-04-08 08:18:09 UTC
++++ chrome/browser/task_manager/task_manager_observer.h
+@@ -43,11 +43,11 @@ enum RefreshType {
+ // or backgrounded.
+ REFRESH_TYPE_PRIORITY = 1 << 13,
+
+-#if defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ // For observers interested in getting the number of open file descriptors of
+ // processes.
+ REFRESH_TYPE_FD_COUNT = 1 << 14,
+-#endif // defined(OS_LINUX) || defined(OS_MACOSX)
++#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+
+ REFRESH_TYPE_KEEPALIVE_COUNT = 1 << 15,
+ REFRESH_TYPE_MEMORY_FOOTPRINT = 1 << 16,
diff --git a/devel/electron5/files/patch-chrome_browser_tracing_crash__service__uploader.cc b/devel/electron5/files/patch-chrome_browser_tracing_crash__service__uploader.cc
new file mode 100644
index 000000000000..afeb4c13fd17
--- /dev/null
+++ b/devel/electron5/files/patch-chrome_browser_tracing_crash__service__uploader.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/tracing/crash_service_uploader.cc.orig 2019-04-08 08:32:46 UTC
++++ chrome/browser/tracing/crash_service_uploader.cc
+@@ -162,6 +162,8 @@ void TraceCrashServiceUploader::DoCompressOnBackground
+ const char product[] = "Chrome_Linux";
+ #elif defined(OS_ANDROID)
+ const char product[] = "Chrome_Android";
++#elif defined(OS_FREEBSD)
++ const char product[] = "Chrome_FreeBSD";
+ #else
+ #error Platform not supported.
+ #endif
diff --git a/devel/electron5/files/patch-chrome_browser_ui_browser__command__controller.cc b/devel/electron5/files/patch-chrome_browser_ui_browser__command__controller.cc
new file mode 100644
index 000000000000..4a8b6f7616e8
--- /dev/null
+++ b/devel/electron5/files/patch-chrome_browser_ui_browser__command__controller.cc
@@ -0,0 +1,38 @@
+--- chrome/browser/ui/browser_command_controller.cc.orig 2019-04-08 08:32:46 UTC
++++ chrome/browser/ui/browser_command_controller.cc
+@@ -79,7 +79,7 @@
+ #include "chrome/browser/ui/browser_commands_chromeos.h"
+ #endif
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ #include "ui/base/ime/linux/text_edit_key_bindings_delegate_auralinux.h"
+ #endif
+
+@@ -216,7 +216,7 @@ bool BrowserCommandController::IsReservedCommandOrKey(
+ #endif
+ }
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ // If this key was registered by the user as a content editing hotkey, then
+ // it is not reserved.
+ ui::TextEditKeyBindingsDelegateAuraLinux* delegate =
+@@ -421,7 +421,7 @@ bool BrowserCommandController::ExecuteCommandWithDispo
+ break;
+ #endif
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ case IDC_MINIMIZE_WINDOW:
+ browser_->window()->Minimize();
+ break;
+@@ -860,7 +860,7 @@ void BrowserCommandController::InitCommandState() {
+ command_updater_.UpdateCommandEnabled(IDC_VISIT_DESKTOP_OF_LRU_USER_2, true);
+ command_updater_.UpdateCommandEnabled(IDC_VISIT_DESKTOP_OF_LRU_USER_3, true);
+ #endif
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ command_updater_.UpdateCommandEnabled(IDC_MINIMIZE_WINDOW, true);
+ command_updater_.UpdateCommandEnabled(IDC_MAXIMIZE_WINDOW, true);
+ command_updater_.UpdateCommandEnabled(IDC_RESTORE_WINDOW, true);
diff --git a/devel/electron5/files/patch-chrome_browser_ui_browser__view__prefs.cc b/devel/electron5/files/patch-chrome_browser_ui_browser__view__prefs.cc
new file mode 100644
index 000000000000..8140dbd391bd
--- /dev/null
+++ b/devel/electron5/files/patch-chrome_browser_ui_browser__view__prefs.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/ui/browser_view_prefs.cc.orig 2019-04-08 08:18:09 UTC
++++ chrome/browser/ui/browser_view_prefs.cc
+@@ -34,7 +34,7 @@ void RegisterBrowserViewLocalPrefs(PrefRegistrySimple*
+
+ void RegisterBrowserViewProfilePrefs(
+ user_prefs::PrefRegistrySyncable* registry) {
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ bool custom_frame_pref_default = false;
+ #if defined(USE_X11)
+ custom_frame_pref_default = ui::GetCustomFramePrefDefault();
+@@ -45,7 +45,7 @@ void RegisterBrowserViewProfilePrefs(
+ #endif
+ registry->RegisterBooleanPref(prefs::kUseCustomChromeFrame,
+ custom_frame_pref_default);
+-#endif // OS_LINUX && !OS_CHROMEOS
++#endif // (OS_LINUX && !OS_CHROMEOS) || defined(OS_BSD)
+ }
+
+ void MigrateBrowserTabStripPrefs(PrefService* prefs) {
diff --git a/devel/electron5/files/patch-chrome_browser_ui_browser__window.h b/devel/electron5/files/patch-chrome_browser_ui_browser__window.h
new file mode 100644
index 000000000000..383e71501f93
--- /dev/null
+++ b/devel/electron5/files/patch-chrome_browser_ui_browser__window.h
@@ -0,0 +1,11 @@
+--- chrome/browser/ui/browser_window.h.orig 2019-04-08 08:32:46 UTC
++++ chrome/browser/ui/browser_window.h
+@@ -425,7 +425,7 @@ class BrowserWindow : public ui::BaseWindow {
+ bool is_source_keyboard) = 0;
+
+ #if defined(OS_CHROMEOS) || defined(OS_MACOSX) || defined(OS_WIN) || \
+- defined(OS_LINUX)
++ defined(OS_LINUX) || defined(OS_BSD)
+ virtual void ShowHatsBubbleFromAppMenuButton() = 0;
+ #endif
+
diff --git a/devel/electron5/files/patch-chrome_browser_ui_exclusive__access_exclusive__access__bubble.cc b/devel/electron5/files/patch-chrome_browser_ui_exclusive__access_exclusive__access__bubble.cc
new file mode 100644
index 000000000000..108cf18c0628
--- /dev/null
+++ b/devel/electron5/files/patch-chrome_browser_ui_exclusive__access_exclusive__access__bubble.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/ui/exclusive_access/exclusive_access_bubble.cc.orig 2019-04-08 08:18:09 UTC
++++ chrome/browser/ui/exclusive_access/exclusive_access_bubble.cc
+@@ -16,7 +16,7 @@
+
+ // NOTE(koz): Linux doesn't use the thick shadowed border, so we add padding
+ // here.
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ const int ExclusiveAccessBubble::kPaddingPx = 8;
+ #else
+ const int ExclusiveAccessBubble::kPaddingPx = 15;
diff --git a/devel/electron5/files/patch-chrome_browser_ui_input__method_input__method__engine.h b/devel/electron5/files/patch-chrome_browser_ui_input__method_input__method__engine.h
new file mode 100644
index 000000000000..436fb2f73ae7
--- /dev/null
+++ b/devel/electron5/files/patch-chrome_browser_ui_input__method_input__method__engine.h
@@ -0,0 +1,11 @@
+--- chrome/browser/ui/input_method/input_method_engine.h.orig 2019-04-08 08:32:46 UTC
++++ chrome/browser/ui/input_method/input_method_engine.h
+@@ -27,7 +27,7 @@ class InputMethodEngine : public InputMethodEngineBase
+
+ // ui::IMEEngineHandlerInterface:
+ bool IsActive() const override;
+- std::string GetExtensionId() const override;
++ std::string GetExtensionId() const;
+
+ // Creates and shows the IME window.
+ // Returns 0 for errors and |error| will contains the error message.
diff --git a/devel/electron5/files/patch-chrome_browser_ui_input__method_input__method__engine__base.cc b/devel/electron5/files/patch-chrome_browser_ui_input__method_input__method__engine__base.cc
new file mode 100644
index 000000000000..a3a29506ad1a
--- /dev/null
+++ b/devel/electron5/files/patch-chrome_browser_ui_input__method_input__method__engine__base.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/ui/input_method/input_method_engine_base.cc.orig 2019-04-08 08:32:46 UTC
++++ chrome/browser/ui/input_method/input_method_engine_base.cc
+@@ -29,7 +29,7 @@
+ #include "ui/base/ime/chromeos/ime_keymap.h"
+ #elif defined(OS_WIN)
+ #include "ui/events/keycodes/keyboard_codes_win.h"
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ #include "ui/events/keycodes/keyboard_codes_posix.h"
+ #endif
+
diff --git a/devel/electron5/files/patch-chrome_browser_ui_libgtkui_print__dialog__gtk.cc b/devel/electron5/files/patch-chrome_browser_ui_libgtkui_print__dialog__gtk.cc
new file mode 100644
index 000000000000..7b586a4fb35f
--- /dev/null
+++ b/devel/electron5/files/patch-chrome_browser_ui_libgtkui_print__dialog__gtk.cc
@@ -0,0 +1,10 @@
+--- chrome/browser/ui/libgtkui/print_dialog_gtk.cc.orig 2019-04-08 08:18:09 UTC
++++ chrome/browser/ui/libgtkui/print_dialog_gtk.cc
+@@ -333,6 +333,7 @@ void PrintDialogGtk::ShowDialog(
+ // Since we only generate PDF, only show printers that support PDF.
+ // TODO(thestig) Add more capabilities to support?
+ GtkPrintCapabilities cap = static_cast<GtkPrintCapabilities>(
++ GTK_PRINT_CAPABILITY_GENERATE_PS |
+ GTK_PRINT_CAPABILITY_GENERATE_PDF |
+ GTK_PRINT_CAPABILITY_PAGE_SET |
+ GTK_PRINT_CAPABILITY_COPIES |
diff --git a/devel/electron5/files/patch-chrome_browser_ui_sad__tab.cc b/devel/electron5/files/patch-chrome_browser_ui_sad__tab.cc
new file mode 100644
index 000000000000..ddba5deb702a
--- /dev/null
+++ b/devel/electron5/files/patch-chrome_browser_ui_sad__tab.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/ui/sad_tab.cc.orig 2019-04-08 08:18:09 UTC
++++ chrome/browser/ui/sad_tab.cc
+@@ -180,7 +180,7 @@ std::vector<int> SadTab::GetSubMessages() {
+ // Only show incognito suggestion if not already in Incognito mode.
+ if (!web_contents_->GetBrowserContext()->IsOffTheRecord())
+ message_ids.insert(message_ids.begin(), IDS_SAD_TAB_RELOAD_INCOGNITO);
+-#if defined(OS_MACOSX) || defined(OS_LINUX)
++#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+ // Note: on macOS, Linux and ChromeOS, the first bullet is either one of
+ // IDS_SAD_TAB_RELOAD_CLOSE_TABS or IDS_SAD_TAB_RELOAD_CLOSE_NOTABS
+ // followed by one of the above suggestions.
diff --git a/devel/electron5/files/patch-chrome_browser_ui_startup_bad__flags__prompt.cc b/devel/electron5/files/patch-chrome_browser_ui_startup_bad__flags__prompt.cc
new file mode 100644
index 000000000000..e59714234093
--- /dev/null
+++ b/devel/electron5/files/patch-chrome_browser_ui_startup_bad__flags__prompt.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/ui/startup/bad_flags_prompt.cc.orig 2019-04-08 08:32:46 UTC
++++ chrome/browser/ui/startup/bad_flags_prompt.cc
+@@ -84,7 +84,7 @@ static const char* kBadFlags[] = {
+ extensions::switches::kExtensionsOnChromeURLs,
+ #endif
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ // Speech dispatcher is buggy, it can crash and it can make Chrome freeze.
+ // http://crbug.com/327295
+ switches::kEnableSpeechDispatcher,
diff --git a/devel/electron5/files/patch-chrome_browser_ui_startup_startup__browser__creator.cc b/devel/electron5/files/patch-chrome_browser_ui_startup_startup__browser__creator.cc
new file mode 100644
index 000000000000..6aae10f0b2c5
--- /dev/null
+++ b/devel/electron5/files/patch-chrome_browser_ui_startup_startup__browser__creator.cc
@@ -0,0 +1,22 @@
+--- chrome/browser/ui/startup/startup_browser_creator.cc.orig 2019-04-08 08:32:46 UTC
++++ chrome/browser/ui/startup/startup_browser_creator.cc
+@@ -79,7 +79,7 @@
+ #include "chrome/browser/ui/user_manager.h"
+ #endif
+
+-#if defined(TOOLKIT_VIEWS) && defined(OS_LINUX)
++#if defined(TOOLKIT_VIEWS) && (defined(OS_LINUX) || defined(OS_BSD))
+ #include "ui/events/devices/x11/touch_factory_x11.h" // nogncheck
+ #endif
+
+@@ -633,8 +633,10 @@ bool StartupBrowserCreator::ProcessCmdLineImpl(
+ }
+ #endif // OS_CHROMEOS
+
++#if 0 /* XXX */
+ #if defined(TOOLKIT_VIEWS) && defined(USE_X11)
+ ui::TouchFactory::SetTouchDeviceListFromCommandLine();
++#endif
+ #endif
+
+ #if defined(OS_MACOSX)
diff --git a/devel/electron5/files/patch-chrome_browser_ui_tab__helpers.cc b/devel/electron5/files/patch-chrome_browser_ui_tab__helpers.cc
new file mode 100644
index 000000000000..0f4c1e67f8cd
--- /dev/null
+++ b/devel/electron5/files/patch-chrome_browser_ui_tab__helpers.cc
@@ -0,0 +1,25 @@
+--- chrome/browser/ui/tab_helpers.cc.orig 2019-04-08 08:32:46 UTC
++++ chrome/browser/ui/tab_helpers.cc
+@@ -116,7 +116,7 @@
+ #include "components/zoom/zoom_controller.h"
+ #endif // defined(OS_ANDROID)
+
+-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+ #include "chrome/browser/ui/blocked_content/framebust_block_tab_helper.h"
+ #include "chrome/browser/ui/hats/hats_helper.h"
+ #endif
+@@ -309,11 +309,11 @@ void TabHelpers::AttachTabHelpers(WebContents* web_con
+ #endif
+
+ #if defined(OS_WIN) || defined(OS_MACOSX) || \
+- (defined(OS_LINUX) && !defined(OS_CHROMEOS))
++ (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ metrics::DesktopSessionDurationObserver::CreateForWebContents(web_contents);
+ #endif
+
+-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+ if (base::FeatureList::IsEnabled(
+ features::kHappinessTrackingSurveysForDesktop)) {
+ HatsHelper::CreateForWebContents(web_contents);
diff --git a/devel/electron5/files/patch-chrome_browser_ui_task__manager_task__manager__columns.cc b/devel/electron5/files/patch-chrome_browser_ui_task__manager_task__manager__columns.cc
new file mode 100644
index 000000000000..3c828b5f1667
--- /dev/null
+++ b/devel/electron5/files/patch-chrome_browser_ui_task__manager_task__manager__columns.cc
@@ -0,0 +1,15 @@
+--- chrome/browser/ui/task_manager/task_manager_columns.cc.orig 2019-04-08 08:18:09 UTC
++++ chrome/browser/ui/task_manager/task_manager_columns.cc
+@@ -93,10 +93,10 @@ const TableColumnData kColumns[] = {
+ base::size("100000") * kCharWidth, -1, true, false, false},
+ #endif
+
+-#if defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ {IDS_TASK_MANAGER_OPEN_FD_COUNT_COLUMN, ui::TableColumn::RIGHT, -1, 0,
+ base::size("999") * kCharWidth, -1, true, false, false},
+-#endif // defined(OS_LINUX) || defined(OS_MACOSX)
++#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ {IDS_TASK_MANAGER_PROCESS_PRIORITY_COLUMN, ui::TableColumn::LEFT, -1, 0,
+ base::size("background") * kCharWidth, -1, true, true, false},
+ {IDS_TASK_MANAGER_KEEPALIVE_COUNT_COLUMN, ui::TableColumn::RIGHT, -1, 0,
diff --git a/devel/electron5/files/patch-chrome_browser_ui_task__manager_task__manager__table__model.cc b/devel/electron5/files/patch-chrome_browser_ui_task__manager_task__manager__table__model.cc
new file mode 100644
index 000000000000..8d6814ce51c3
--- /dev/null
+++ b/devel/electron5/files/patch-chrome_browser_ui_task__manager_task__manager__table__model.cc
@@ -0,0 +1,50 @@
+--- chrome/browser/ui/task_manager/task_manager_table_model.cc.orig 2019-04-08 08:32:46 UTC
++++ chrome/browser/ui/task_manager/task_manager_table_model.cc
+@@ -430,13 +430,13 @@ base::string16 TaskManagerTableModel::GetText(int row,
+ ? stringifier_->backgrounded_string()
+ : stringifier_->foregrounded_string();
+
+-#if defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ case IDS_TASK_MANAGER_OPEN_FD_COUNT_COLUMN: {
+ const int fd_count = observed_task_manager()->GetOpenFdCount(tasks_[row]);
+ return fd_count >= 0 ? base::FormatNumber(fd_count)
+ : stringifier_->n_a_string();
+ }
+-#endif // defined(OS_LINUX) || defined(OS_MACOSX)
++#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+
+ case IDS_TASK_MANAGER_KEEPALIVE_COUNT_COLUMN: {
+ return stringifier_->GetKeepaliveCountText(
+@@ -590,7 +590,7 @@ int TaskManagerTableModel::CompareValues(int row1,
+ return BooleanCompare(is_proc1_bg, is_proc2_bg);
+ }
+
+-#if defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ case IDS_TASK_MANAGER_OPEN_FD_COUNT_COLUMN: {
+ const int proc1_fd_count =
+ observed_task_manager()->GetOpenFdCount(tasks_[row1]);
+@@ -598,7 +598,7 @@ int TaskManagerTableModel::CompareValues(int row1,
+ observed_task_manager()->GetOpenFdCount(tasks_[row2]);
+ return ValueCompare(proc1_fd_count, proc2_fd_count);
+ }
+-#endif // defined(OS_LINUX) || defined(OS_MACOSX)
++#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+
+ default:
+ NOTREACHED();
+@@ -760,11 +760,11 @@ void TaskManagerTableModel::UpdateRefreshTypes(int col
+ type = REFRESH_TYPE_KEEPALIVE_COUNT;
+ break;
+
+-#if defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ case IDS_TASK_MANAGER_OPEN_FD_COUNT_COLUMN:
+ type = REFRESH_TYPE_FD_COUNT;
+ break;
+-#endif // defined(OS_LINUX) || defined(OS_MACOSX)
++#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+
+ default:
+ NOTREACHED();
diff --git a/devel/electron5/files/patch-chrome_browser_ui_toolbar_app__menu__model.cc b/devel/electron5/files/patch-chrome_browser_ui_toolbar_app__menu__model.cc
new file mode 100644
index 000000000000..92d7cefacc6d
--- /dev/null
+++ b/devel/electron5/files/patch-chrome_browser_ui_toolbar_app__menu__model.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/ui/toolbar/app_menu_model.cc.orig 2019-04-08 08:32:46 UTC
++++ chrome/browser/ui/toolbar/app_menu_model.cc
+@@ -671,7 +671,7 @@ bool AppMenuModel::IsCommandIdVisible(int command_id)
+ return app_menu_icon_controller_->GetTypeAndSeverity().type ==
+ AppMenuIconController::IconType::UPGRADE_NOTIFICATION;
+ }
+-#if !defined(OS_LINUX) || defined(USE_AURA)
++#if (!defined(OS_LINUX) && !defined(OS_BSD)) || defined(USE_AURA)
+ case IDC_BOOKMARK_PAGE:
+ return !chrome::ShouldRemoveBookmarkThisPageUI(browser_->profile());
+ case IDC_BOOKMARK_ALL_TABS:
diff --git a/devel/electron5/files/patch-chrome_browser_ui_views_accelerator__table.cc b/devel/electron5/files/patch-chrome_browser_ui_views_accelerator__table.cc
new file mode 100644
index 000000000000..0783a36224c1
--- /dev/null
+++ b/devel/electron5/files/patch-chrome_browser_ui_views_accelerator__table.cc
@@ -0,0 +1,46 @@
+--- chrome/browser/ui/views/accelerator_table.cc.orig 2019-04-08 08:18:10 UTC
++++ chrome/browser/ui/views/accelerator_table.cc
+@@ -50,7 +50,7 @@ const AcceleratorMapping kAcceleratorMap[] = {
+ {ui::VKEY_S, ui::EF_PLATFORM_ACCELERATOR, IDC_SAVE_PAGE},
+ {ui::VKEY_9, ui::EF_PLATFORM_ACCELERATOR, IDC_SELECT_LAST_TAB},
+ {ui::VKEY_NUMPAD9, ui::EF_PLATFORM_ACCELERATOR, IDC_SELECT_LAST_TAB},
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ {ui::VKEY_9, ui::EF_ALT_DOWN, IDC_SELECT_LAST_TAB},
+ {ui::VKEY_NUMPAD9, ui::EF_ALT_DOWN, IDC_SELECT_LAST_TAB},
+ {ui::VKEY_NEXT, ui::EF_CONTROL_DOWN | ui::EF_SHIFT_DOWN, IDC_MOVE_TAB_NEXT},
+@@ -80,7 +80,7 @@ const AcceleratorMapping kAcceleratorMap[] = {
+ {ui::VKEY_NUMPAD7, ui::EF_PLATFORM_ACCELERATOR, IDC_SELECT_TAB_6},
+ {ui::VKEY_8, ui::EF_PLATFORM_ACCELERATOR, IDC_SELECT_TAB_7},
+ {ui::VKEY_NUMPAD8, ui::EF_PLATFORM_ACCELERATOR, IDC_SELECT_TAB_7},
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ {ui::VKEY_1, ui::EF_ALT_DOWN, IDC_SELECT_TAB_0},
+ {ui::VKEY_NUMPAD1, ui::EF_ALT_DOWN, IDC_SELECT_TAB_0},
+ {ui::VKEY_2, ui::EF_ALT_DOWN, IDC_SELECT_TAB_1},
+@@ -98,7 +98,7 @@ const AcceleratorMapping kAcceleratorMap[] = {
+ {ui::VKEY_8, ui::EF_ALT_DOWN, IDC_SELECT_TAB_7},
+ {ui::VKEY_NUMPAD8, ui::EF_ALT_DOWN, IDC_SELECT_TAB_7},
+ {ui::VKEY_BROWSER_FAVORITES, ui::EF_NONE, IDC_SHOW_BOOKMARK_BAR},
+-#endif // OS_LINUX && !OS_CHROMEOS
++#endif // (OS_LINUX || OS_BSD) && !OS_CHROMEOS
+ {ui::VKEY_B, ui::EF_SHIFT_DOWN | ui::EF_PLATFORM_ACCELERATOR,
+ IDC_SHOW_BOOKMARK_BAR},
+ {ui::VKEY_OEM_MINUS, ui::EF_PLATFORM_ACCELERATOR, IDC_ZOOM_MINUS},
+@@ -122,14 +122,14 @@ const AcceleratorMapping kAcceleratorMap[] = {
+ {ui::VKEY_F11, ui::EF_NONE, IDC_FULLSCREEN},
+
+ // Platform-specific key maps.
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ {ui::VKEY_BROWSER_BACK, ui::EF_NONE, IDC_BACK},
+ {ui::VKEY_BROWSER_FORWARD, ui::EF_NONE, IDC_FORWARD},
+ {ui::VKEY_BROWSER_HOME, ui::EF_NONE, IDC_HOME},
+ {ui::VKEY_BROWSER_REFRESH, ui::EF_NONE, IDC_RELOAD},
+ {ui::VKEY_BROWSER_REFRESH, ui::EF_CONTROL_DOWN, IDC_RELOAD_BYPASSING_CACHE},
+ {ui::VKEY_BROWSER_REFRESH, ui::EF_SHIFT_DOWN, IDC_RELOAD_BYPASSING_CACHE},
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+
+ #if defined(OS_CHROMEOS)
+ // On Chrome OS, VKEY_BROWSER_SEARCH is handled in Ash.
diff --git a/devel/electron5/files/patch-chrome_browser_ui_views_chrome__browser__main__extra__parts__views.cc b/devel/electron5/files/patch-chrome_browser_ui_views_chrome__browser__main__extra__parts__views.cc
new file mode 100644
index 000000000000..c856a398b1ec
--- /dev/null
+++ b/devel/electron5/files/patch-chrome_browser_ui_views_chrome__browser__main__extra__parts__views.cc
@@ -0,0 +1,38 @@
+--- chrome/browser/ui/views/chrome_browser_main_extra_parts_views.cc.orig 2019-04-08 08:32:46 UTC
++++ chrome/browser/ui/views/chrome_browser_main_extra_parts_views.cc
+@@ -35,7 +35,7 @@
+ #include "ui/wm/core/wm_state.h"
+ #endif // defined(USE_AURA)
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS)
+ #include <sys/stat.h>
+ #include <sys/types.h>
+ #include <unistd.h>
+@@ -45,7 +45,7 @@
+ #include "chrome/grit/generated_resources.h"
+ #include "content/public/common/content_switches.h"
+ #include "ui/base/l10n/l10n_util.h"
+-#endif // defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#endif // (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS)
+
+ ChromeBrowserMainExtraPartsViews::ChromeBrowserMainExtraPartsViews() {}
+
+@@ -93,7 +93,7 @@ void ChromeBrowserMainExtraPartsViews::PreProfileInit(
+ }
+ #endif
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS)
+ // On the Linux desktop, we want to prevent the user from logging in as root,
+ // so that we don't destroy the profile. Now that we have some minimal ui
+ // initialized, check to see if we're running as root and bail if we are.
+@@ -124,7 +124,7 @@ void ChromeBrowserMainExtraPartsViews::PreProfileInit(
+ base::RunLoop().RunUntilIdle();
+
+ exit(EXIT_FAILURE);
+-#endif // defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#endif // (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS)
+ }
+
+ void ChromeBrowserMainExtraPartsViews::PostBrowserStart() {
diff --git a/devel/electron5/files/patch-chrome_browser_ui_views_chrome__views__delegate.h b/devel/electron5/files/patch-chrome_browser_ui_views_chrome__views__delegate.h
new file mode 100644
index 000000000000..a8e4e59da590
--- /dev/null
+++ b/devel/electron5/files/patch-chrome_browser_ui_views_chrome__views__delegate.h
@@ -0,0 +1,11 @@
+--- chrome/browser/ui/views/chrome_views_delegate.h.orig 2019-04-08 08:32:46 UTC
++++ chrome/browser/ui/views/chrome_views_delegate.h
+@@ -44,7 +44,7 @@ class ChromeViewsDelegate : public views::ViewsDelegat
+ HICON GetSmallWindowIcon() const override;
+ int GetAppbarAutohideEdges(HMONITOR monitor,
+ const base::Closure& callback) override;
+-#elif defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#elif (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS)
+ gfx::ImageSkia* GetDefaultWindowIcon() const override;
+ bool WindowManagerProvidesTitleBar(bool maximized) override;
+ #endif
diff --git a/devel/electron5/files/patch-chrome_browser_ui_views_first__run__dialog.cc b/devel/electron5/files/patch-chrome_browser_ui_views_first__run__dialog.cc
new file mode 100644
index 000000000000..92a78964d01f
--- /dev/null
+++ b/devel/electron5/files/patch-chrome_browser_ui_views_first__run__dialog.cc
@@ -0,0 +1,24 @@
+--- chrome/browser/ui/views/first_run_dialog.cc.orig 2019-04-08 08:18:10 UTC
++++ chrome/browser/ui/views/first_run_dialog.cc
+@@ -37,8 +37,10 @@
+ namespace {
+
+ void InitCrashReporterIfEnabled(bool enabled) {
++#if !defined(OS_BSD)
+ if (enabled)
+ breakpad::InitCrashReporter(std::string());
++#endif
+ }
+
+ } // namespace
+@@ -111,8 +113,10 @@ views::View* FirstRunDialog::CreateExtraView() {
+ bool FirstRunDialog::Accept() {
+ GetWidget()->Hide();
+
++#if !defined(OS_BSD)
+ ChangeMetricsReportingStateWithReply(report_crashes_->checked(),
+ base::Bind(&InitCrashReporterIfEnabled));
++#endif
+
+ if (make_default_->checked())
+ shell_integration::SetAsDefaultBrowser();
diff --git a/devel/electron5/files/patch-chrome_browser_ui_views_frame_browser__frame.cc b/devel/electron5/files/patch-chrome_browser_ui_views_frame_browser__frame.cc
new file mode 100644
index 000000000000..72c1fa8895cd
--- /dev/null
+++ b/devel/electron5/files/patch-chrome_browser_ui_views_frame_browser__frame.cc
@@ -0,0 +1,29 @@
+--- chrome/browser/ui/views/frame/browser_frame.cc.orig 2019-04-08 08:32:47 UTC
++++ chrome/browser/ui/views/frame/browser_frame.cc
+@@ -37,7 +37,7 @@
+ #include "components/user_manager/user_manager.h"
+ #endif
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include "chrome/browser/ui/views/frame/browser_command_handler_linux.h"
+ #endif
+
+@@ -48,7 +48,7 @@
+ namespace {
+
+ bool IsUsingGtkTheme(Profile* profile) {
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ return ThemeServiceFactory::GetForProfile(profile)->UsingSystemTheme();
+ #else
+ return false;
+@@ -104,7 +104,7 @@ void BrowserFrame::InitBrowserFrame() {
+ non_client_view()->set_context_menu_controller(this);
+ }
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ browser_command_handler_.reset(new BrowserCommandHandlerLinux(browser_view_));
+ #endif
+ }
diff --git a/devel/electron5/files/patch-chrome_browser_ui_views_frame_browser__non__client__frame__view__factory__views.cc b/devel/electron5/files/patch-chrome_browser_ui_views_frame_browser__non__client__frame__view__factory__views.cc
new file mode 100644
index 000000000000..f4874c577610
--- /dev/null
+++ b/devel/electron5/files/patch-chrome_browser_ui_views_frame_browser__non__client__frame__view__factory__views.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/ui/views/frame/browser_non_client_frame_view_factory_views.cc.orig 2019-04-08 08:18:10 UTC
++++ chrome/browser/ui/views/frame/browser_non_client_frame_view_factory_views.cc
+@@ -13,7 +13,7 @@
+ #include "chrome/browser/ui/views/frame/glass_browser_frame_view.h"
+ #endif
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS)
+ #include "ui/views/linux_ui/linux_ui.h"
+ #endif
+
+@@ -32,7 +32,7 @@ OpaqueBrowserFrameView* CreateOpaqueBrowserFrameView(
+ BrowserView* browser_view) {
+ #if BUILDFLAG(ENABLE_NATIVE_WINDOW_NAV_BUTTONS)
+ std::unique_ptr<views::NavButtonProvider> nav_button_provider;
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ if (ThemeServiceFactory::GetForProfile(browser_view->browser()->profile())
+ ->UsingSystemTheme() &&
+ views::LinuxUI::instance()) {
diff --git a/devel/electron5/files/patch-chrome_browser_ui_views_frame_browser__view.cc b/devel/electron5/files/patch-chrome_browser_ui_views_frame_browser__view.cc
new file mode 100644
index 000000000000..7b35b6bb824a
--- /dev/null
+++ b/devel/electron5/files/patch-chrome_browser_ui_views_frame_browser__view.cc
@@ -0,0 +1,29 @@
+--- chrome/browser/ui/views/frame/browser_view.cc.orig 2019-04-08 08:32:47 UTC
++++ chrome/browser/ui/views/frame/browser_view.cc
+@@ -1269,7 +1269,7 @@ void BrowserView::RotatePaneFocus(bool forwards) {
+ }
+
+ void BrowserView::DestroyBrowser() {
+-#if defined(OS_WIN) || (defined(OS_LINUX) && !defined(OS_CHROMEOS))
++#if defined(OS_WIN) || (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ if (quit_instruction_bubble_controller_) {
+ GetWidget()->GetNativeView()->RemovePreTargetHandler(
+ quit_instruction_bubble_controller_.get());
+@@ -2155,7 +2155,7 @@ views::View* BrowserView::CreateOverlayView() {
+ }
+
+ void BrowserView::OnWidgetDestroying(views::Widget* widget) {
+-#if defined(OS_WIN) || (defined(OS_LINUX) && !defined(OS_CHROMEOS))
++#if defined(OS_WIN) || (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ if (quit_instruction_bubble_controller_) {
+ GetWidget()->GetNativeView()->RemovePreTargetHandler(
+ quit_instruction_bubble_controller_.get());
+@@ -2499,7 +2499,7 @@ void BrowserView::InitViews() {
+ GetWidget()->SetNativeWindowProperty(Profile::kProfileKey,
+ browser_->profile());
+
+-#if defined(OS_WIN) || (defined(OS_LINUX) && !defined(OS_CHROMEOS))
++#if defined(OS_WIN) || (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ if (browser_->SupportsWindowFeature(Browser::FEATURE_TOOLBAR)) {
+ quit_instruction_bubble_controller_ =
+ QuitInstructionBubbleController::GetInstance();
diff --git a/devel/electron5/files/patch-chrome_browser_ui_views_frame_browser__view.h b/devel/electron5/files/patch-chrome_browser_ui_views_frame_browser__view.h
new file mode 100644
index 000000000000..464a5f05e813
--- /dev/null
+++ b/devel/electron5/files/patch-chrome_browser_ui_views_frame_browser__view.h
@@ -0,0 +1,20 @@
+--- chrome/browser/ui/views/frame/browser_view.h.orig 2019-04-08 08:32:47 UTC
++++ chrome/browser/ui/views/frame/browser_view.h
+@@ -50,7 +50,7 @@
+ #include "chrome/browser/ui/views/intent_picker_bubble_view.h"
+ #endif // defined(OS_CHROMEOS)
+
+-#if defined(OS_WIN) || (defined(OS_LINUX) && !defined(OS_CHROMEOS))
++#if defined(OS_WIN) || (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ #include "chrome/browser/ui/views/quit_instruction_bubble_controller.h"
+ #endif
+
+@@ -853,7 +853,7 @@ class BrowserView : public BrowserWindow,
+ };
+ base::Optional<ResizeSession> interactive_resize_;
+
+-#if defined(OS_WIN) || (defined(OS_LINUX) && !defined(OS_CHROMEOS))
++#if defined(OS_WIN) || (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ scoped_refptr<QuitInstructionBubbleController>
+ quit_instruction_bubble_controller_;
+ #endif
diff --git a/devel/electron5/files/patch-chrome_browser_ui_views_frame_opaque__browser__frame__view.cc b/devel/electron5/files/patch-chrome_browser_ui_views_frame_opaque__browser__frame__view.cc
new file mode 100644
index 000000000000..8660d7341bb1
--- /dev/null
+++ b/devel/electron5/files/patch-chrome_browser_ui_views_frame_opaque__browser__frame__view.cc
@@ -0,0 +1,29 @@
+--- chrome/browser/ui/views/frame/opaque_browser_frame_view.cc.orig 2019-04-08 08:32:47 UTC
++++ chrome/browser/ui/views/frame/opaque_browser_frame_view.cc
+@@ -49,7 +49,7 @@
+ #include "ui/views/window/vector_icons/vector_icons.h"
+ #include "ui/views/window/window_shape.h"
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include "ui/views/controls/menu/menu_runner.h"
+ #endif
+
+@@ -356,7 +356,7 @@ void OpaqueBrowserFrameView::ButtonPressed(views::Butt
+ void OpaqueBrowserFrameView::OnMenuButtonClicked(views::MenuButton* source,
+ const gfx::Point& point,
+ const ui::Event* event) {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ views::MenuRunner menu_runner(frame()->GetSystemMenuModel(),
+ views::MenuRunner::HAS_MNEMONICS);
+ menu_runner.RunMenuAt(browser_view()->GetWidget(), window_icon_,
+@@ -480,7 +480,7 @@ bool OpaqueBrowserFrameView::EverHasVisibleBackgroundT
+
+ OpaqueBrowserFrameView::FrameButtonStyle
+ OpaqueBrowserFrameView::GetFrameButtonStyle() const {
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ return FrameButtonStyle::kMdButton;
+ #else
+ return FrameButtonStyle::kImageButton;
diff --git a/devel/electron5/files/patch-chrome_browser_ui_views_frame_opaque__browser__frame__view__platform__specific.cc b/devel/electron5/files/patch-chrome_browser_ui_views_frame_opaque__browser__frame__view__platform__specific.cc
new file mode 100644
index 000000000000..b571f7f2611e
--- /dev/null
+++ b/devel/electron5/files/patch-chrome_browser_ui_views_frame_opaque__browser__frame__view__platform__specific.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/ui/views/frame/opaque_browser_frame_view_platform_specific.cc.orig 2019-04-08 08:32:47 UTC
++++ chrome/browser/ui/views/frame/opaque_browser_frame_view_platform_specific.cc
+@@ -10,7 +10,7 @@ bool OpaqueBrowserFrameViewPlatformSpecific::IsUsingSy
+ return false;
+ }
+
+-#if !defined(OS_LINUX)
++#if !defined(OS_LINUX) && !defined(OS_FREEBSD)
+
+ // static
+ OpaqueBrowserFrameViewPlatformSpecific*
diff --git a/devel/electron5/files/patch-chrome_browser_ui_views_frame_system__menu__model__builder.cc b/devel/electron5/files/patch-chrome_browser_ui_views_frame_system__menu__model__builder.cc
new file mode 100644
index 000000000000..9d4af9aa9034
--- /dev/null
+++ b/devel/electron5/files/patch-chrome_browser_ui_views_frame_system__menu__model__builder.cc
@@ -0,0 +1,29 @@
+--- chrome/browser/ui/views/frame/system_menu_model_builder.cc.orig 2019-04-08 08:18:10 UTC
++++ chrome/browser/ui/views/frame/system_menu_model_builder.cc
+@@ -78,7 +78,7 @@ void SystemMenuModelBuilder::BuildMenu(ui::SimpleMenuM
+
+ void SystemMenuModelBuilder::BuildSystemMenuForBrowserWindow(
+ ui::SimpleMenuModel* model) {
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ model->AddItemWithStringId(IDC_MINIMIZE_WINDOW, IDS_MINIMIZE_WINDOW_MENU);
+ model->AddItemWithStringId(IDC_MAXIMIZE_WINDOW, IDS_MAXIMIZE_WINDOW_MENU);
+ model->AddItemWithStringId(IDC_RESTORE_WINDOW, IDS_RESTORE_WINDOW_MENU);
+@@ -90,7 +90,7 @@ void SystemMenuModelBuilder::BuildSystemMenuForBrowser
+ model->AddSeparator(ui::NORMAL_SEPARATOR);
+ model->AddItemWithStringId(IDC_TASK_MANAGER, IDS_TASK_MANAGER);
+ }
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ model->AddSeparator(ui::NORMAL_SEPARATOR);
+ model->AddCheckItemWithStringId(IDC_USE_SYSTEM_TITLE_BAR,
+ IDS_SHOW_WINDOW_DECORATIONS_MENU);
+@@ -126,7 +126,7 @@ void SystemMenuModelBuilder::BuildSystemMenuForAppOrPo
+ model->AddSeparator(ui::NORMAL_SEPARATOR);
+ model->AddItemWithStringId(IDC_TASK_MANAGER, IDS_TASK_MANAGER);
+ }
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ model->AddSeparator(ui::NORMAL_SEPARATOR);
+ model->AddItemWithStringId(IDC_CLOSE_WINDOW, IDS_CLOSE);
+ #endif
diff --git a/devel/electron5/files/patch-chrome_browser_ui_views_frame_system__menu__model__delegate.cc b/devel/electron5/files/patch-chrome_browser_ui_views_frame_system__menu__model__delegate.cc
new file mode 100644
index 000000000000..4d2303d97053
--- /dev/null
+++ b/devel/electron5/files/patch-chrome_browser_ui_views_frame_system__menu__model__delegate.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/ui/views/frame/system_menu_model_delegate.cc.orig 2019-04-08 08:32:47 UTC
++++ chrome/browser/ui/views/frame/system_menu_model_delegate.cc
+@@ -15,7 +15,7 @@
+ #include "components/sessions/core/tab_restore_service.h"
+ #include "ui/base/l10n/l10n_util.h"
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ #include "chrome/common/pref_names.h"
+ #include "components/prefs/pref_service.h"
+ #endif
+@@ -30,7 +30,7 @@ SystemMenuModelDelegate::SystemMenuModelDelegate(
+ SystemMenuModelDelegate::~SystemMenuModelDelegate() {}
+
+ bool SystemMenuModelDelegate::IsCommandIdChecked(int command_id) const {
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ if (command_id == IDC_USE_SYSTEM_TITLE_BAR) {
+ PrefService* prefs = browser_->profile()->GetPrefs();
+ return !prefs->GetBoolean(prefs::kUseCustomChromeFrame);
diff --git a/devel/electron5/files/patch-chrome_browser_ui_views_hung__renderer__view.cc b/devel/electron5/files/patch-chrome_browser_ui_views_hung__renderer__view.cc
new file mode 100644
index 000000000000..76bd528c6645
--- /dev/null
+++ b/devel/electron5/files/patch-chrome_browser_ui_views_hung__renderer__view.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/ui/views/hung_renderer_view.cc.orig 2019-04-08 08:32:47 UTC
++++ chrome/browser/ui/views/hung_renderer_view.cc
+@@ -389,7 +389,7 @@ bool HungRendererDialogView::Cancel() {
+ content::RenderProcessHost* rph =
+ hung_pages_table_model_->GetRenderWidgetHost()->GetProcess();
+ if (rph) {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // A generic |CrashDumpHungChildProcess()| is not implemented for Linux.
+ // Instead we send an explicit IPC to crash on the renderer's IO thread.
+ rph->ForceCrash();
diff --git a/devel/electron5/files/patch-chrome_browser_ui_views_tabs_new__tab__button.cc b/devel/electron5/files/patch-chrome_browser_ui_views_tabs_new__tab__button.cc
new file mode 100644
index 000000000000..ee80e646a739
--- /dev/null
+++ b/devel/electron5/files/patch-chrome_browser_ui_views_tabs_new__tab__button.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/ui/views/tabs/new_tab_button.cc.orig 2019-04-08 08:32:47 UTC
++++ chrome/browser/ui/views/tabs/new_tab_button.cc
+@@ -63,7 +63,7 @@ const gfx::Size NewTabButton::kButtonSize{28, 28};
+ NewTabButton::NewTabButton(TabStrip* tab_strip, views::ButtonListener* listener)
+ : views::ImageButton(listener), tab_strip_(tab_strip) {
+ set_animate_on_state_change(true);
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ set_triggerable_event_flags(triggerable_event_flags() |
+ ui::EF_MIDDLE_MOUSE_BUTTON);
+ #endif
diff --git a/devel/electron5/files/patch-chrome_browser_ui_views_tabs_tab__drag__controller.cc b/devel/electron5/files/patch-chrome_browser_ui_views_tabs_tab__drag__controller.cc
new file mode 100644
index 000000000000..812381b1d73f
--- /dev/null
+++ b/devel/electron5/files/patch-chrome_browser_ui_views_tabs_tab__drag__controller.cc
@@ -0,0 +1,29 @@
+--- chrome/browser/ui/views/tabs/tab_drag_controller.cc.orig 2019-04-08 08:32:47 UTC
++++ chrome/browser/ui/views/tabs/tab_drag_controller.cc
+@@ -390,7 +390,7 @@ void TabDragController::Init(TabStrip* source_tabstrip
+ // synchronous on desktop Linux, so use that.
+ // - Chrome OS
+ // Releasing capture on Ash cancels gestures so avoid it.
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ can_release_capture_ = false;
+ #endif
+ start_point_in_screen_ = gfx::Point(source_tab_offset, mouse_offset.y());
+@@ -814,7 +814,7 @@ TabDragController::DragBrowserToNewTabStrip(TabStrip*
+ else
+ target_tabstrip->GetWidget()->SetCapture(attached_tabstrip_);
+
+-#if !defined(OS_LINUX)
++#if !defined(OS_LINUX) || defined(OS_BSD)
+ // EndMoveLoop is going to snap the window back to its original location.
+ // Hide it so users don't see this. Hiding a window in Linux aura causes
+ // it to lose capture so skip it.
+@@ -1953,7 +1953,7 @@ TabDragController::Liveness TabDragController::GetLoca
+ if (dragged_window)
+ exclude.insert(dragged_window);
+ }
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ // Exclude windows which are pending deletion via Browser::TabStripEmpty().
+ // These windows can be returned in the Linux Aura port because the browser
+ // window which was used for dragging is not hidden once all of its tabs are
diff --git a/devel/electron5/files/patch-chrome_browser_ui_webui_about__ui.cc b/devel/electron5/files/patch-chrome_browser_ui_webui_about__ui.cc
new file mode 100644
index 000000000000..3f6b6245eb2d
--- /dev/null
+++ b/devel/electron5/files/patch-chrome_browser_ui_webui_about__ui.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/ui/webui/about_ui.cc.orig 2019-04-08 08:32:47 UTC
++++ chrome/browser/ui/webui/about_ui.cc
+@@ -552,7 +552,7 @@ std::string ChromeURLs() {
+ return html;
+ }
+
+-#if defined(OS_LINUX) || defined(OS_OPENBSD)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ std::string AboutLinuxProxyConfig() {
+ std::string data;
+ AppendHeader(&data, 0,
+@@ -607,7 +607,7 @@ void AboutUIHTMLSource::StartDataRequest(
+ .GetRawDataResource(idr)
+ .as_string();
+ }
+-#if defined(OS_LINUX) || defined(OS_OPENBSD)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ } else if (source_name_ == chrome::kChromeUILinuxProxyConfigHost) {
+ response = AboutLinuxProxyConfig();
+ #endif
diff --git a/devel/electron5/files/patch-chrome_browser_ui_webui_chrome__web__ui__controller__factory.cc b/devel/electron5/files/patch-chrome_browser_ui_webui_chrome__web__ui__controller__factory.cc
new file mode 100644
index 000000000000..595db7ce3c83
--- /dev/null
+++ b/devel/electron5/files/patch-chrome_browser_ui_webui_chrome__web__ui__controller__factory.cc
@@ -0,0 +1,49 @@
+--- chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc.orig 2019-04-08 08:32:47 UTC
++++ chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc
+@@ -192,11 +192,11 @@
+ #include "chrome/browser/ui/webui/welcome/welcome_win10_ui.h"
+ #endif
+
+-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+ #include "chrome/browser/ui/webui/discards/discards_ui.h"
+ #endif
+
+-#if defined(OS_LINUX) || defined(OS_ANDROID)
++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
+ #include "chrome/browser/ui/webui/sandbox_internals_ui.h"
+ #endif
+
+@@ -314,7 +314,7 @@ bool IsAboutUI(const GURL& url) {
+ #if !defined(OS_ANDROID)
+ || url.host_piece() == chrome::kChromeUITermsHost
+ #endif
+-#if defined(OS_LINUX) || defined(OS_OPENBSD)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ || url.host_piece() == chrome::kChromeUILinuxProxyConfigHost
+ #endif
+ #if defined(OS_CHROMEOS)
+@@ -588,7 +588,7 @@ WebUIFactoryFunction GetWebUIFactoryFunction(WebUI* we
+ if (url.host_piece() == chrome::kChromeUINaClHost)
+ return &NewWebUI<NaClUI>;
+ #endif
+-#if (defined(OS_LINUX) && defined(TOOLKIT_VIEWS)) || defined(USE_AURA)
++#if (defined(OS_LINUX) && defined(TOOLKIT_VIEWS)) || defined(USE_AURA) || defined(OS_BSD)
+ if (url.host_piece() == chrome::kChromeUITabModalConfirmDialogHost)
+ return &NewWebUI<ConstrainedWebDialogUI>;
+ #endif
+@@ -641,12 +641,12 @@ WebUIFactoryFunction GetWebUIFactoryFunction(WebUI* we
+ return &NewWebUI<CastUI>;
+ }
+ #endif
+-#if defined(OS_LINUX) || defined(OS_ANDROID)
++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
+ if (url.host_piece() == chrome::kChromeUISandboxHost) {
+ return &NewWebUI<SandboxInternalsUI>;
+ }
+ #endif
+-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+ if (url.host_piece() == chrome::kChromeUIDiscardsHost)
+ return &NewWebUI<DiscardsUI>;
+ #endif
diff --git a/devel/electron5/files/patch-chrome_browser_ui_webui_settings_appearance__handler.cc b/devel/electron5/files/patch-chrome_browser_ui_webui_settings_appearance__handler.cc
new file mode 100644
index 000000000000..85e92283de93
--- /dev/null
+++ b/devel/electron5/files/patch-chrome_browser_ui_webui_settings_appearance__handler.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/ui/webui/settings/appearance_handler.cc.orig 2019-04-08 08:18:11 UTC
++++ chrome/browser/ui/webui/settings/appearance_handler.cc
+@@ -31,7 +31,7 @@ void AppearanceHandler::RegisterMessages() {
+ "useDefaultTheme",
+ base::BindRepeating(&AppearanceHandler::HandleUseDefaultTheme,
+ base::Unretained(this)));
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_BSD) && !defined(OS_CHROMEOS)
+ web_ui()->RegisterMessageCallback(
+ "useSystemTheme",
+ base::BindRepeating(&AppearanceHandler::HandleUseSystemTheme,
+@@ -59,7 +59,7 @@ void AppearanceHandler::HandleUseDefaultTheme(const ba
+ ThemeServiceFactory::GetForProfile(profile_)->UseDefaultTheme();
+ }
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_BSD) && !defined(OS_CHROMEOS)
+ void AppearanceHandler::HandleUseSystemTheme(const base::ListValue* args) {
+ if (profile_->IsSupervised())
+ NOTREACHED();
diff --git a/devel/electron5/files/patch-chrome_browser_ui_webui_settings_appearance__handler.h b/devel/electron5/files/patch-chrome_browser_ui_webui_settings_appearance__handler.h
new file mode 100644
index 000000000000..47488eb445ea
--- /dev/null
+++ b/devel/electron5/files/patch-chrome_browser_ui_webui_settings_appearance__handler.h
@@ -0,0 +1,11 @@
+--- chrome/browser/ui/webui/settings/appearance_handler.h.orig 2019-04-08 08:18:11 UTC
++++ chrome/browser/ui/webui/settings/appearance_handler.h
+@@ -36,7 +36,7 @@ class AppearanceHandler : public SettingsPageUIHandler
+ // Changes the UI theme of the browser to the default theme.
+ void HandleUseDefaultTheme(const base::ListValue* args);
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS)
+ // Changes the UI theme of the browser to the system (GTK+) theme.
+ void HandleUseSystemTheme(const base::ListValue* args);
+ #endif
diff --git a/devel/electron5/files/patch-chrome_browser_ui_webui_settings_md__settings__localized__strings__provider.cc b/devel/electron5/files/patch-chrome_browser_ui_webui_settings_md__settings__localized__strings__provider.cc
new file mode 100644
index 000000000000..a96fbe239384
--- /dev/null
+++ b/devel/electron5/files/patch-chrome_browser_ui_webui_settings_md__settings__localized__strings__provider.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/ui/webui/settings/md_settings_localized_strings_provider.cc.orig 2019-04-08 08:32:47 UTC
++++ chrome/browser/ui/webui/settings/md_settings_localized_strings_provider.cc
+@@ -513,7 +513,7 @@ void AddAppearanceStrings(content::WebUIDataSource* ht
+ {"enterCustomWebAddress", IDS_SETTINGS_ENTER_CUSTOM_WEB_ADDRESS},
+ {"homeButtonDisabled", IDS_SETTINGS_HOME_BUTTON_DISABLED},
+ {"themes", IDS_SETTINGS_THEMES},
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS)
+ {"systemTheme", IDS_SETTINGS_SYSTEM_THEME},
+ {"useSystemTheme", IDS_SETTINGS_USE_SYSTEM_THEME},
+ {"classicTheme", IDS_SETTINGS_CLASSIC_THEME},
+@@ -531,7 +531,7 @@ void AddAppearanceStrings(content::WebUIDataSource* ht
+ {"openWallpaperApp", IDS_SETTINGS_OPEN_WALLPAPER_APP},
+ {"setWallpaper", IDS_SETTINGS_SET_WALLPAPER},
+ #endif
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS)
+ {"showWindowDecorations", IDS_SHOW_WINDOW_DECORATIONS},
+ #endif
+ #if defined(OS_MACOSX)
diff --git a/devel/electron5/files/patch-chrome_browser_web__applications_extensions_web__app__extension__shortcut.cc b/devel/electron5/files/patch-chrome_browser_web__applications_extensions_web__app__extension__shortcut.cc
new file mode 100644
index 000000000000..8f8fb7df6fcd
--- /dev/null
+++ b/devel/electron5/files/patch-chrome_browser_web__applications_extensions_web__app__extension__shortcut.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/web_applications/extensions/web_app_extension_shortcut.cc.orig 2019-04-08 08:32:47 UTC
++++ chrome/browser/web_applications/extensions/web_app_extension_shortcut.cc
+@@ -46,7 +46,7 @@ namespace {
+ #if defined(OS_MACOSX)
+ const int kDesiredSizes[] = {16, 32, 128, 256, 512};
+ const size_t kNumDesiredSizes = base::size(kDesiredSizes);
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ // Linux supports icons of any size. FreeDesktop Icon Theme Specification states
+ // that "Minimally you should install a 48x48 icon in the hicolor theme."
+ const int kDesiredSizes[] = {16, 32, 48, 128, 256, 512};
diff --git a/devel/electron5/files/patch-chrome_common_BUILD.gn b/devel/electron5/files/patch-chrome_common_BUILD.gn
new file mode 100644
index 000000000000..b0d67eb1290b
--- /dev/null
+++ b/devel/electron5/files/patch-chrome_common_BUILD.gn
@@ -0,0 +1,13 @@
+--- chrome/common/BUILD.gn.orig 2019-04-08 08:32:47 UTC
++++ chrome/common/BUILD.gn
+@@ -300,6 +300,10 @@ static_library("common") {
+ public_deps += [ "//ppapi/shared_impl" ]
+ }
+
++ if (is_bsd) {
++ sources -= [ "component_flash_hint_file_linux.cc" ]
++ }
++
+ if (enable_extensions) {
+ sources += [
+ "cast_messages.cc",
diff --git a/devel/electron5/files/patch-chrome_common_chrome__features.cc b/devel/electron5/files/patch-chrome_common_chrome__features.cc
new file mode 100644
index 000000000000..078ec2ae2765
--- /dev/null
+++ b/devel/electron5/files/patch-chrome_common_chrome__features.cc
@@ -0,0 +1,36 @@
+--- chrome/common/chrome_features.cc.orig 2019-04-08 08:32:47 UTC
++++ chrome/common/chrome_features.cc
+@@ -82,13 +82,13 @@ const base::Feature kAutomaticTabDiscarding{"Automatic
+ base::FEATURE_ENABLED_BY_DEFAULT};
+ #endif // defined(OS_WIN) || defined(OS_MACOSX)
+
+-#if defined(OS_WIN) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD)
+ // Enables the Restart background mode optimization. When all Chrome UI is
+ // closed and it goes in the background, allows to restart the browser to
+ // discard memory.
+ const base::Feature kBackgroundModeAllowRestart{
+ "BackgroundModeAllowRestart", base::FEATURE_DISABLED_BY_DEFAULT};
+-#endif // defined(OS_WIN) || defined(OS_LINUX)
++#endif // defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD)
+
+ // Enables or disables whether permission prompts are automatically blocked
+ // after the user has explicitly dismissed them too many times.
+@@ -131,7 +131,7 @@ const base::Feature kThirdPartyModulesBlocking{
+ "ThirdPartyModulesBlocking", base::FEATURE_DISABLED_BY_DEFAULT};
+ #endif
+
+-#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_MACOSX)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_MACOSX) || defined(OS_BSD)
+ // Enables the dual certificate verification trial feature.
+ // https://crbug.com/649026
+ const base::Feature kCertDualVerificationTrialFeature{
+@@ -195,7 +195,7 @@ const base::Feature kUsageTimeLimitPolicy{"UsageTimeLi
+ const base::Feature kDesktopPWAWindowing {
+ "DesktopPWAWindowing",
+ #if defined(OS_CHROMEOS) || defined(OS_WIN) || defined(OS_LINUX) || \
+- defined(OS_MACOSX)
++ defined(OS_MACOSX) || defined(OS_BSD)
+ base::FEATURE_ENABLED_BY_DEFAULT
+ #else
+ base::FEATURE_DISABLED_BY_DEFAULT
diff --git a/devel/electron5/files/patch-chrome_common_chrome__features.h b/devel/electron5/files/patch-chrome_common_chrome__features.h
new file mode 100644
index 000000000000..46ace3e44432
--- /dev/null
+++ b/devel/electron5/files/patch-chrome_common_chrome__features.h
@@ -0,0 +1,24 @@
+--- chrome/common/chrome_features.h.orig 2019-04-08 08:32:47 UTC
++++ chrome/common/chrome_features.h
+@@ -61,10 +61,10 @@ COMPONENT_EXPORT(CHROME_FEATURES)
+ extern const base::Feature kAutomaticTabDiscarding;
+ #endif // defined(OS_WIN) || defined(OS_MACOSX)
+
+-#if defined(OS_WIN) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD)
+ COMPONENT_EXPORT(CHROME_FEATURES)
+ extern const base::Feature kBackgroundModeAllowRestart;
+-#endif // defined(OS_WIN) || defined(OS_LINUX)
++#endif // defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD)
+
+ COMPONENT_EXPORT(CHROME_FEATURES)
+ extern const base::Feature kBlockPromptsIfDismissedOften;
+@@ -81,7 +81,7 @@ extern const base::Feature kBrowserHangFixesExperiment
+ COMPONENT_EXPORT(CHROME_FEATURES)
+ extern const base::Feature kBundledConnectionHelpFeature;
+
+-#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_MACOSX)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_MACOSX) || defined(OS_BSD)
+ COMPONENT_EXPORT(CHROME_FEATURES)
+ extern const base::Feature kCertDualVerificationTrialFeature;
+ #endif
diff --git a/devel/electron5/files/patch-chrome_common_chrome__paths.cc b/devel/electron5/files/patch-chrome_common_chrome__paths.cc
new file mode 100644
index 000000000000..e8c8b55bbe3f
--- /dev/null
+++ b/devel/electron5/files/patch-chrome_common_chrome__paths.cc
@@ -0,0 +1,114 @@
+--- chrome/common/chrome_paths.cc.orig 2019-04-08 08:18:11 UTC
++++ chrome/common/chrome_paths.cc
+@@ -52,21 +52,21 @@ const base::FilePath::CharType kPepperFlashSystemBaseD
+ FILE_PATH_LITERAL("Internet Plug-Ins/PepperFlashPlayer");
+ #endif
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // The path to the external extension <id>.json files.
+ // /usr/share seems like a good choice, see: http://www.pathname.com/fhs/
+ const base::FilePath::CharType kFilepathSinglePrefExtensions[] =
+ #if defined(GOOGLE_CHROME_BUILD)
+ FILE_PATH_LITERAL("/usr/share/google-chrome/extensions");
+ #else
+- FILE_PATH_LITERAL("/usr/share/chromium/extensions");
++ FILE_PATH_LITERAL("/usr/local/share/chromium/extensions");
+ #endif // defined(GOOGLE_CHROME_BUILD)
+
+ // The path to the hint file that tells the pepper plugin loader
+ // where it can find the latest component updated flash.
+ const base::FilePath::CharType kComponentUpdatedFlashHint[] =
+ FILE_PATH_LITERAL("latest-component-updated-flash");
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+
+ #if defined(OS_CHROMEOS)
+ const base::FilePath::CharType kChromeOSComponentFlash[] = FILE_PATH_LITERAL(
+@@ -197,7 +197,7 @@ bool PathProvider(int key, base::FilePath* result) {
+ return false;
+ break;
+ case chrome::DIR_DEFAULT_DOWNLOADS_SAFE:
+-#if defined(OS_WIN) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD)
+ if (!GetUserDownloadsDirectorySafe(&cur))
+ return false;
+ break;
+@@ -459,10 +459,12 @@ bool PathProvider(int key, base::FilePath* result) {
+ if (!base::PathExists(cur)) // We don't want to create this
+ return false;
+ break;
+-#if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_OPENBSD)
++#if defined(OS_POSIX) && !defined(OS_MACOSX)
+ case chrome::DIR_POLICY_FILES: {
+ #if defined(GOOGLE_CHROME_BUILD)
+ cur = base::FilePath(FILE_PATH_LITERAL("/etc/opt/chrome/policies"));
++#elif defined(OS_BSD)
++ cur = base::FilePath(FILE_PATH_LITERAL("/usr/local/etc/chrome/policies"));
+ #else
+ cur = base::FilePath(FILE_PATH_LITERAL("/etc/chromium/policies"));
+ #endif
+@@ -470,7 +472,7 @@ bool PathProvider(int key, base::FilePath* result) {
+ }
+ #endif
+ #if defined(OS_CHROMEOS) || (defined(OS_LINUX) && defined(CHROMIUM_BUILD)) || \
+- defined(OS_MACOSX)
++ defined(OS_MACOSX) || defined(OS_BSD)
+ case chrome::DIR_USER_EXTERNAL_EXTENSIONS: {
+ if (!base::PathService::Get(chrome::DIR_USER_DATA, &cur))
+ return false;
+@@ -478,7 +480,7 @@ bool PathProvider(int key, base::FilePath* result) {
+ break;
+ }
+ #endif
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ case chrome::DIR_STANDALONE_EXTERNAL_EXTENSIONS: {
+ cur = base::FilePath(kFilepathSinglePrefExtensions);
+ break;
+@@ -513,7 +515,7 @@ bool PathProvider(int key, base::FilePath* result) {
+ #endif
+ break;
+
+-#if defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ case chrome::DIR_NATIVE_MESSAGING:
+ #if defined(OS_MACOSX)
+ #if defined(GOOGLE_CHROME_BUILD)
+@@ -527,6 +529,9 @@ bool PathProvider(int key, base::FilePath* result) {
+ #if defined(GOOGLE_CHROME_BUILD)
+ cur = base::FilePath(FILE_PATH_LITERAL(
+ "/etc/opt/chrome/native-messaging-hosts"));
++#elif defined(OS_BSD)
++ cur = base::FilePath(FILE_PATH_LITERAL(
++ "/usr/local/etc/chrome/native-messaging-hosts"));
+ #else
+ cur = base::FilePath(FILE_PATH_LITERAL(
+ "/etc/chromium/native-messaging-hosts"));
+@@ -539,7 +544,7 @@ bool PathProvider(int key, base::FilePath* result) {
+ return false;
+ cur = cur.Append(FILE_PATH_LITERAL("NativeMessagingHosts"));
+ break;
+-#endif // defined(OS_LINUX) || defined(OS_MACOSX)
++#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ #if !defined(OS_ANDROID)
+ case chrome::DIR_GLOBAL_GCM_STORE:
+ if (!base::PathService::Get(chrome::DIR_USER_DATA, &cur))
+@@ -547,7 +552,7 @@ bool PathProvider(int key, base::FilePath* result) {
+ cur = cur.Append(kGCMStoreDirname);
+ break;
+ #endif // !defined(OS_ANDROID)
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ case chrome::FILE_COMPONENT_FLASH_HINT:
+ if (!base::PathService::Get(
+ chrome::DIR_COMPONENT_UPDATED_PEPPER_FLASH_PLUGIN, &cur)) {
+@@ -555,7 +560,7 @@ bool PathProvider(int key, base::FilePath* result) {
+ }
+ cur = cur.Append(kComponentUpdatedFlashHint);
+ break;
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+ #if defined(OS_CHROMEOS)
+ case chrome::FILE_CHROME_OS_COMPONENT_FLASH:
+ cur = base::FilePath(kChromeOSComponentFlash);
diff --git a/devel/electron5/files/patch-chrome_common_chrome__paths.h b/devel/electron5/files/patch-chrome_common_chrome__paths.h
new file mode 100644
index 000000000000..a5fb20ab3d0a
--- /dev/null
+++ b/devel/electron5/files/patch-chrome_common_chrome__paths.h
@@ -0,0 +1,42 @@
+--- chrome/common/chrome_paths.h.orig 2019-04-08 08:18:11 UTC
++++ chrome/common/chrome_paths.h
+@@ -51,7 +51,7 @@ enum {
+ // to set policies for chrome. This directory
+ // contains subdirectories.
+ #endif
+-#if defined(OS_CHROMEOS) || (defined(OS_LINUX) && defined(CHROMIUM_BUILD)) || \
++#if defined(OS_CHROMEOS) || ((defined(OS_LINUX) || defined(OS_BSD)) && defined(CHROMIUM_BUILD)) || \
+ defined(OS_MACOSX)
+ DIR_USER_EXTERNAL_EXTENSIONS, // Directory for per-user external extensions
+ // on Chrome Mac and Chromium Linux.
+@@ -60,7 +60,7 @@ enum {
+ // create it.
+ #endif
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ DIR_STANDALONE_EXTERNAL_EXTENSIONS, // Directory for 'per-extension'
+ // definition manifest files that
+ // describe extensions which are to be
+@@ -107,7 +107,7 @@ enum {
+ DIR_SUPERVISED_USER_INSTALLED_WHITELISTS, // Directory where sanitized
+ // supervised user whitelists are
+ // installed.
+-#if defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_LINUX) || defined(OS_BSD) || defined(OS_MACOSX)
+ DIR_NATIVE_MESSAGING, // System directory where native messaging host
+ // manifest files are stored.
+ DIR_USER_NATIVE_MESSAGING, // Directory with Native Messaging Hosts
+@@ -122,10 +122,10 @@ enum {
+ DIR_GEN_TEST_DATA, // Directory where generated test data resides.
+ DIR_TEST_DATA, // Directory where unit test data resides.
+ DIR_TEST_TOOLS, // Directory where unit test tools reside.
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ FILE_COMPONENT_FLASH_HINT, // A file in a known location that points to
+ // the component updated flash plugin.
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+ #if defined(OS_CHROMEOS)
+ FILE_CHROME_OS_COMPONENT_FLASH, // The location of component updated Flash on
+ // Chrome OS.
diff --git a/devel/electron5/files/patch-chrome_common_chrome__paths__internal.h b/devel/electron5/files/patch-chrome_common_chrome__paths__internal.h
new file mode 100644
index 000000000000..821109ea8b17
--- /dev/null
+++ b/devel/electron5/files/patch-chrome_common_chrome__paths__internal.h
@@ -0,0 +1,11 @@
+--- chrome/common/chrome_paths_internal.h.orig 2019-04-08 08:18:11 UTC
++++ chrome/common/chrome_paths_internal.h
+@@ -45,7 +45,7 @@ void GetUserCacheDirectory(const base::FilePath& profi
+ // Get the path to the user's documents directory.
+ bool GetUserDocumentsDirectory(base::FilePath* result);
+
+-#if defined(OS_WIN) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD)
+ // Gets the path to a safe default download directory for a user.
+ bool GetUserDownloadsDirectorySafe(base::FilePath* result);
+ #endif
diff --git a/devel/electron5/files/patch-chrome_common_chrome__switches.cc b/devel/electron5/files/patch-chrome_common_chrome__switches.cc
new file mode 100644
index 000000000000..74ed11ead8cf
--- /dev/null
+++ b/devel/electron5/files/patch-chrome_common_chrome__switches.cc
@@ -0,0 +1,17 @@
+--- chrome/common/chrome_switches.cc.orig 2019-04-08 08:32:47 UTC
++++ chrome/common/chrome_switches.cc
+@@ -914,12 +914,12 @@ const char kAllowNaClFileHandleAPI[] = "allow-n
+ const char kAllowNaClSocketAPI[] = "allow-nacl-socket-api";
+ #endif
+
+-#if defined(OS_WIN) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD)
+ const char kDisableInputImeAPI[] = "disable-input-ime-api";
+ const char kEnableInputImeAPI[] = "enable-input-ime-api";
+ #endif
+
+-#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_BSD)
+ const char kEnableNewAppMenuIcon[] = "enable-new-app-menu-icon";
+ #endif
+
diff --git a/devel/electron5/files/patch-chrome_common_chrome__switches.h b/devel/electron5/files/patch-chrome_common_chrome__switches.h
new file mode 100644
index 000000000000..e78e9aab497a
--- /dev/null
+++ b/devel/electron5/files/patch-chrome_common_chrome__switches.h
@@ -0,0 +1,17 @@
+--- chrome/common/chrome_switches.h.orig 2019-04-08 08:32:47 UTC
++++ chrome/common/chrome_switches.h
+@@ -282,12 +282,12 @@ extern const char kAllowNaClFileHandleAPI[];
+ extern const char kAllowNaClSocketAPI[];
+ #endif
+
+-#if defined(OS_WIN) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD)
+ extern const char kDisableInputImeAPI[];
+ extern const char kEnableInputImeAPI[];
+ #endif
+
+-#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_BSD)
+ extern const char kEnableNewAppMenuIcon[];
+ #endif
+
diff --git a/devel/electron5/files/patch-chrome_common_extensions_api_api__sources.gni b/devel/electron5/files/patch-chrome_common_extensions_api_api__sources.gni
new file mode 100644
index 000000000000..c68ca7474cba
--- /dev/null
+++ b/devel/electron5/files/patch-chrome_common_extensions_api_api__sources.gni
@@ -0,0 +1,11 @@
+--- chrome/common/extensions/api/api_sources.gni.orig 2019-04-08 08:32:47 UTC
++++ chrome/common/extensions/api/api_sources.gni
+@@ -109,7 +109,7 @@ if (is_chromeos) {
+ "wallpaper.json",
+ "wallpaper_private.json",
+ ]
+-} else if (is_linux || is_win) {
++} else if (is_linux || is_bsd || is_win) {
+ schema_sources_ += [ "input_ime.json" ]
+ }
+
diff --git a/devel/electron5/files/patch-chrome_common_extensions_command.cc b/devel/electron5/files/patch-chrome_common_extensions_command.cc
new file mode 100644
index 000000000000..32602e7e3bc8
--- /dev/null
+++ b/devel/electron5/files/patch-chrome_common_extensions_command.cc
@@ -0,0 +1,11 @@
+--- chrome/common/extensions/command.cc.orig 2019-04-08 08:32:47 UTC
++++ chrome/common/extensions/command.cc
+@@ -309,7 +309,7 @@ std::string Command::CommandPlatform() {
+ return values::kKeybindingPlatformMac;
+ #elif defined(OS_CHROMEOS)
+ return values::kKeybindingPlatformChromeOs;
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ return values::kKeybindingPlatformLinux;
+ #else
+ return "";
diff --git a/devel/electron5/files/patch-chrome_common_features.gni b/devel/electron5/files/patch-chrome_common_features.gni
new file mode 100644
index 000000000000..16adb25dd456
--- /dev/null
+++ b/devel/electron5/files/patch-chrome_common_features.gni
@@ -0,0 +1,14 @@
+--- chrome/common/features.gni.orig 2019-04-08 08:18:13 UTC
++++ chrome/common/features.gni
+@@ -41,9 +41,9 @@ declare_args() {
+ (is_desktop_linux && use_dbus) || is_chromeos
+
+ enable_one_click_signin =
+- is_win || is_mac || (is_linux && !is_chromeos && !is_chromecast)
++ is_win || is_mac || is_bsd || (is_linux && !is_chromeos && !is_chromecast)
+
+- enable_service_discovery = (enable_mdns && !is_android && !is_ios) || is_mac
++ enable_service_discovery = (enable_mdns && !is_android && !is_ios) || is_mac || is_bsd
+
+ # Enables use of the session service, which is enabled by default.
+ # Android stores them separately on the Java side.
diff --git a/devel/electron5/files/patch-chrome_common_pref__names.cc b/devel/electron5/files/patch-chrome_common_pref__names.cc
new file mode 100644
index 000000000000..b01aad523d68
--- /dev/null
+++ b/devel/electron5/files/patch-chrome_common_pref__names.cc
@@ -0,0 +1,29 @@
+--- chrome/common/pref_names.cc.orig 2019-04-08 08:32:47 UTC
++++ chrome/common/pref_names.cc
+@@ -946,7 +946,7 @@ const char kForceYouTubeRestrict[] = "settings.force_y
+ // only using an account that belongs to one of the domains from this pref.
+ const char kAllowedDomainsForApps[] = "settings.allowed_domains_for_apps";
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ // Linux specific preference on whether we should match the system theme.
+ const char kUsesSystemTheme[] = "extensions.theme.use_system";
+ #endif
+@@ -1038,7 +1038,7 @@ const char kShowUpdatePromotionInfoBar[] =
+ "browser.show_update_promotion_info_bar";
+ #endif
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ // Boolean that is false if we should show window manager decorations. If
+ // true, we draw a custom chrome frame (thicker title bar and blue border).
+ const char kUseCustomChromeFrame[] = "browser.custom_chrome_frame";
+@@ -1419,7 +1419,7 @@ const char kDownloadDefaultDirectory[] = "download.def
+ // upgrade a unsafe location to a safe location.
+ const char kDownloadDirUpgraded[] = "download.directory_upgrade";
+
+-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ const char kOpenPdfDownloadInSystemReader[] =
+ "download.open_pdf_in_system_reader";
+ #endif
diff --git a/devel/electron5/files/patch-chrome_common_pref__names.h b/devel/electron5/files/patch-chrome_common_pref__names.h
new file mode 100644
index 000000000000..50b86128a154
--- /dev/null
+++ b/devel/electron5/files/patch-chrome_common_pref__names.h
@@ -0,0 +1,29 @@
+--- chrome/common/pref_names.h.orig 2019-04-08 08:32:47 UTC
++++ chrome/common/pref_names.h
+@@ -300,7 +300,7 @@ extern const char kMdHistoryMenuPromoShown[];
+ extern const char kForceGoogleSafeSearch[];
+ extern const char kForceYouTubeRestrict[];
+ extern const char kAllowedDomainsForApps[];
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ extern const char kUsesSystemTheme[];
+ #endif
+ extern const char kCurrentThemePackFilename[];
+@@ -333,7 +333,7 @@ extern const char kDefaultBrowserSettingEnabled[];
+ #if defined(OS_MACOSX)
+ extern const char kShowUpdatePromotionInfoBar[];
+ #endif
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ extern const char kUseCustomChromeFrame[];
+ #endif
+ #if BUILDFLAG(ENABLE_PLUGINS)
+@@ -487,7 +487,7 @@ extern const char kAppWindowPlacement[];
+ extern const char kDownloadDefaultDirectory[];
+ extern const char kDownloadExtensionsToOpen[];
+ extern const char kDownloadDirUpgraded[];
+-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ extern const char kOpenPdfDownloadInSystemReader[];
+ #endif
+ #if defined(OS_ANDROID)
diff --git a/devel/electron5/files/patch-chrome_common_webui__url__constants.cc b/devel/electron5/files/patch-chrome_common_webui__url__constants.cc
new file mode 100644
index 000000000000..ccf581cf7c6d
--- /dev/null
+++ b/devel/electron5/files/patch-chrome_common_webui__url__constants.cc
@@ -0,0 +1,41 @@
+--- chrome/common/webui_url_constants.cc.orig 2019-04-08 08:32:47 UTC
++++ chrome/common/webui_url_constants.cc
+@@ -246,7 +246,7 @@ const char kChromeUIMetroFlowURL[] = "chrome://make-me
+ const char kChromeUICastHost[] = "cast";
+ #endif
+
+-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+ const char kChromeUIDiscardsHost[] = "discards";
+ const char kChromeUIDiscardsURL[] = "chrome://discards/";
+ const char kChromeUIHatsHost[] = "hats";
+@@ -257,11 +257,11 @@ const char kChromeUIHatsURL[] = "chrome://hats/";
+ const char kChromeUILinuxProxyConfigHost[] = "linux-proxy-config";
+ #endif
+
+-#if defined(OS_LINUX) || defined(OS_ANDROID)
++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
+ const char kChromeUISandboxHost[] = "sandbox";
+ #endif
+
+-#if (defined(OS_LINUX) && defined(TOOLKIT_VIEWS)) || defined(USE_AURA)
++#if ((defined(OS_BSD) || defined(OS_LINUX)) && defined(TOOLKIT_VIEWS)) || defined(USE_AURA)
+ const char kChromeUITabModalConfirmDialogHost[] = "tab-modal-confirm-dialog";
+ #endif
+
+@@ -415,13 +415,13 @@ const char* const kChromeHostURLs[] = {
+ kChromeUIInternetDetailDialogHost,
+ kChromeUIAssistantOptInHost,
+ #endif
+-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+ kChromeUIDiscardsHost,
+ #endif
+ #if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_ANDROID)
+ kChromeUILinuxProxyConfigHost,
+ #endif
+-#if defined(OS_LINUX) || defined(OS_ANDROID)
++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
+ kChromeUISandboxHost,
+ #endif
+ #if defined(OS_WIN)
diff --git a/devel/electron5/files/patch-chrome_common_webui__url__constants.h b/devel/electron5/files/patch-chrome_common_webui__url__constants.h
new file mode 100644
index 000000000000..36026e303feb
--- /dev/null
+++ b/devel/electron5/files/patch-chrome_common_webui__url__constants.h
@@ -0,0 +1,25 @@
+--- chrome/common/webui_url_constants.h.orig 2019-04-08 08:32:47 UTC
++++ chrome/common/webui_url_constants.h
+@@ -241,7 +241,7 @@ extern const char kChromeUIMetroFlowURL[];
+ extern const char kChromeUICastHost[];
+ #endif
+
+-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+ extern const char kChromeUIDiscardsHost[];
+ extern const char kChromeUIDiscardsURL[];
+ extern const char kChromeUIHatsHost[];
+@@ -253,11 +253,11 @@ extern const char kChromeUIHatsURL[];
+ extern const char kChromeUILinuxProxyConfigHost[];
+ #endif
+
+-#if defined(OS_LINUX) || defined(OS_ANDROID)
++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
+ extern const char kChromeUISandboxHost[];
+ #endif
+
+-#if (defined(OS_LINUX) && defined(TOOLKIT_VIEWS)) || defined(USE_AURA)
++#if ((defined(OS_BSD) || defined(OS_LINUX)) && defined(TOOLKIT_VIEWS)) || defined(USE_AURA)
+ extern const char kChromeUITabModalConfirmDialogHost[];
+ #endif
+
diff --git a/devel/electron5/files/patch-chrome_renderer_chrome__content__renderer__client.cc b/devel/electron5/files/patch-chrome_renderer_chrome__content__renderer__client.cc
new file mode 100644
index 000000000000..c8493486f192
--- /dev/null
+++ b/devel/electron5/files/patch-chrome_renderer_chrome__content__renderer__client.cc
@@ -0,0 +1,11 @@
+--- chrome/renderer/chrome_content_renderer_client.cc.orig 2019-04-08 08:32:48 UTC
++++ chrome/renderer/chrome_content_renderer_client.cc
+@@ -1012,7 +1012,7 @@ WebPlugin* ChromeContentRendererClient::CreatePlugin(
+ }
+
+ case chrome::mojom::PluginStatus::kRestartRequired: {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ placeholder = create_blocked_plugin(
+ IDR_BLOCKED_PLUGIN_HTML,
+ l10n_util::GetStringFUTF16(IDS_PLUGIN_RESTART_REQUIRED,
diff --git a/devel/electron5/files/patch-chrome_renderer_pepper_pepper__flash__font__file__host.cc b/devel/electron5/files/patch-chrome_renderer_pepper_pepper__flash__font__file__host.cc
new file mode 100644
index 000000000000..c47e0fc0b89d
--- /dev/null
+++ b/devel/electron5/files/patch-chrome_renderer_pepper_pepper__flash__font__file__host.cc
@@ -0,0 +1,29 @@
+--- chrome/renderer/pepper/pepper_flash_font_file_host.cc.orig 2019-04-08 08:18:13 UTC
++++ chrome/renderer/pepper/pepper_flash_font_file_host.cc
+@@ -15,7 +15,7 @@
+ #include "ppapi/proxy/ppapi_messages.h"
+ #include "ppapi/proxy/serialized_structs.h"
+
+-#if defined(OS_LINUX) || defined(OS_OPENBSD)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include "components/services/font/public/cpp/font_loader.h"
+ #include "content/public/common/common_sandbox_support_linux.h"
+ #elif defined(OS_WIN)
+@@ -29,7 +29,7 @@ PepperFlashFontFileHost::PepperFlashFontFileHost(
+ const ppapi::proxy::SerializedFontDescription& description,
+ PP_PrivateFontCharset charset)
+ : ResourceHost(host->GetPpapiHost(), instance, resource) {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // The global SkFontConfigInterface is configured and initialized with a
+ // SkFontconfigInterface compatible font_service::FontLoader in
+ // RendererBlinkPlatformImpl (called from RenderThreadImpl::Init) at startup
+@@ -74,7 +74,7 @@ bool PepperFlashFontFileHost::GetFontData(uint32_t tab
+ void* buffer,
+ size_t* length) {
+ bool result = false;
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ if (font_file_.IsValid()) {
+ result = content::GetFontTable(font_file_.GetPlatformFile(), table,
+ 0 /* offset */,
diff --git a/devel/electron5/files/patch-chrome_renderer_pepper_pepper__flash__font__file__host.h b/devel/electron5/files/patch-chrome_renderer_pepper_pepper__flash__font__file__host.h
new file mode 100644
index 000000000000..0328e2daacf2
--- /dev/null
+++ b/devel/electron5/files/patch-chrome_renderer_pepper_pepper__flash__font__file__host.h
@@ -0,0 +1,20 @@
+--- chrome/renderer/pepper/pepper_flash_font_file_host.h.orig 2019-04-08 08:18:13 UTC
++++ chrome/renderer/pepper/pepper_flash_font_file_host.h
+@@ -14,7 +14,7 @@
+ #include "ppapi/c/private/pp_private_font_charset.h"
+ #include "ppapi/host/resource_host.h"
+
+-#if defined(OS_LINUX) || defined(OS_OPENBSD)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include "base/files/file.h"
+ #elif defined(OS_WIN)
+ #include "third_party/skia/include/core/SkRefCnt.h"
+@@ -50,7 +50,7 @@ class PepperFlashFontFileHost : public ppapi::host::Re
+ uint32_t table);
+ bool GetFontData(uint32_t table, void* buffer, size_t* length);
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ base::File font_file_;
+ #elif defined(OS_WIN)
+ sk_sp<SkTypeface> typeface_;
diff --git a/devel/electron5/files/patch-chrome_service_cloud__print_print__system.cc b/devel/electron5/files/patch-chrome_service_cloud__print_print__system.cc
new file mode 100644
index 000000000000..8a093d2a3e9f
--- /dev/null
+++ b/devel/electron5/files/patch-chrome_service_cloud__print_print__system.cc
@@ -0,0 +1,11 @@
+--- chrome/service/cloud_print/print_system.cc.orig 2019-04-08 08:18:13 UTC
++++ chrome/service/cloud_print/print_system.cc
+@@ -36,7 +36,7 @@ std::string PrintSystem::GenerateProxyId() {
+ return base::GenerateGUID();
+ }
+
+-#if defined(OS_LINUX) && !defined(USE_CUPS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(USE_CUPS)
+ scoped_refptr<PrintSystem> PrintSystem::CreateInstance(
+ const base::DictionaryValue*) {
+ return nullptr;
diff --git a/devel/electron5/files/patch-chrome_test_BUILD.gn b/devel/electron5/files/patch-chrome_test_BUILD.gn
new file mode 100644
index 000000000000..e274c4991e92
--- /dev/null
+++ b/devel/electron5/files/patch-chrome_test_BUILD.gn
@@ -0,0 +1,11 @@
+--- chrome/test/BUILD.gn.orig 2019-04-08 08:32:48 UTC
++++ chrome/test/BUILD.gn
+@@ -5232,7 +5232,7 @@ test("chrome_app_unittests") {
+ "//components/crash/core/common",
+ "//components/flags_ui:switches",
+ ]
+- if (!is_fuchsia) {
++ if (!is_fuchsia && !is_bsd) {
+ # TODO(crbug.com/753619): Enable crash reporting on Fuchsia.
+ deps += [ "//third_party/breakpad:client" ]
+ }
diff --git a/devel/electron5/files/patch-chrome_test_base_in__process__browser__test.cc b/devel/electron5/files/patch-chrome_test_base_in__process__browser__test.cc
new file mode 100644
index 000000000000..1da982350dce
--- /dev/null
+++ b/devel/electron5/files/patch-chrome_test_base_in__process__browser__test.cc
@@ -0,0 +1,22 @@
+--- chrome/test/base/in_process_browser_test.cc.orig 2019-04-08 08:32:48 UTC
++++ chrome/test/base/in_process_browser_test.cc
+@@ -74,6 +74,10 @@
+ #include "chrome/test/base/scoped_bundle_swizzler_mac.h"
+ #endif
+
++#if defined(OS_FREEBSD)
++#include <signal.h>
++#endif
++
+ #if defined(OS_WIN)
+ #include "base/win/scoped_com_initializer.h"
+ #include "base/win/windows_version.h"
+@@ -102,7 +106,7 @@
+ #include "ui/events/test/event_generator.h"
+ #endif // defined(OS_CHROMEOS)
+
+-#if !defined(OS_CHROMEOS) && defined(OS_LINUX)
++#if !defined(OS_CHROMEOS) && (defined(OS_LINUX) || defined(OS_BSD))
+ #include "ui/views/test/test_desktop_screen_x11.h"
+ #endif
+
diff --git a/devel/electron5/files/patch-chrome_test_base_testing__browser__process.h b/devel/electron5/files/patch-chrome_test_base_testing__browser__process.h
new file mode 100644
index 000000000000..cf26fd2d13d0
--- /dev/null
+++ b/devel/electron5/files/patch-chrome_test_base_testing__browser__process.h
@@ -0,0 +1,13 @@
+--- chrome/test/base/testing_browser_process.h.orig 2019-04-08 08:18:13 UTC
++++ chrome/test/base/testing_browser_process.h
+@@ -119,8 +119,8 @@ class TestingBrowserProcess : public BrowserProcess {
+ DownloadStatusUpdater* download_status_updater() override;
+ DownloadRequestLimiter* download_request_limiter() override;
+
+-#if (defined(OS_WIN) || defined(OS_LINUX)) && !defined(OS_CHROMEOS)
+- void StartAutoupdateTimer() override {}
++#if (defined(OS_WIN) || defined(OS_LINUX) || defined(OS_FREEBSD)) && !defined(OS_CHROMEOS)
++ void StartAutoupdateTimer() /*override*/ {}
+ #endif
+
+ net_log::ChromeNetLog* net_log() override;
diff --git a/devel/electron5/files/patch-chrome_test_chromedriver_chrome_chrome__finder.cc b/devel/electron5/files/patch-chrome_test_chromedriver_chrome_chrome__finder.cc
new file mode 100644
index 000000000000..4a98c9aca81b
--- /dev/null
+++ b/devel/electron5/files/patch-chrome_test_chromedriver_chrome_chrome__finder.cc
@@ -0,0 +1,20 @@
+--- chrome/test/chromedriver/chrome/chrome_finder.cc.orig 2019-04-08 08:18:13 UTC
++++ chrome/test/chromedriver/chrome/chrome_finder.cc
+@@ -48,7 +48,7 @@ void GetApplicationDirs(std::vector<base::FilePath>* l
+ installation_locations[i].Append(L"Chromium\\Application"));
+ }
+ }
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ void GetApplicationDirs(std::vector<base::FilePath>* locations) {
+ // TODO: Respect users' PATH variables.
+ // Until then, we use an approximation of the most common defaults.
+@@ -135,7 +135,7 @@ bool FindChrome(base::FilePath* browser_exe) {
+ #elif defined(OS_MACOSX)
+ base::FilePath("Google Chrome.app/Contents/MacOS/Google Chrome"),
+ base::FilePath("Chromium.app/Contents/MacOS/Chromium")
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ base::FilePath("google-chrome"),
+ base::FilePath("chrome"),
+ base::FilePath("chromium"),
diff --git a/devel/electron5/files/patch-chromecast_browser_cast__browser__main__parts.cc b/devel/electron5/files/patch-chromecast_browser_cast__browser__main__parts.cc
new file mode 100644
index 000000000000..bcc1898f31c9
--- /dev/null
+++ b/devel/electron5/files/patch-chromecast_browser_cast__browser__main__parts.cc
@@ -0,0 +1,29 @@
+--- chromecast/browser/cast_browser_main_parts.cc.orig 2019-04-08 08:32:48 UTC
++++ chromecast/browser/cast_browser_main_parts.cc
+@@ -66,7 +66,7 @@
+ #include "ui/compositor/compositor_switches.h"
+ #include "ui/gl/gl_switches.h"
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include <fontconfig/fontconfig.h>
+ #include <signal.h>
+ #include <sys/prctl.h>
+@@ -244,7 +244,7 @@ const DefaultCommandLineSwitch kDefaultSwitches[] = {
+ {cc::switches::kDisableThreadedAnimation, ""},
+ #endif // defined(OS_ANDROID)
+ #endif // BUILDFLAG(IS_CAST_AUDIO_ONLY)
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #if defined(ARCH_CPU_X86_FAMILY)
+ // This is needed for now to enable the x11 Ozone platform to work with
+ // current Linux/NVidia OpenGL drivers.
+@@ -393,7 +393,7 @@ void CastBrowserMainParts::PostMainMessageLoopStart()
+ }
+
+ void CastBrowserMainParts::ToolkitInitialized() {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Without this call, the FontConfig library gets implicitly initialized
+ // on the first call to FontConfig. Since it's not safe to initialize it
+ // concurrently from multiple threads, we explicitly initialize it here
diff --git a/devel/electron5/files/patch-chromecast_browser_cast__content__browser__client.cc b/devel/electron5/files/patch-chromecast_browser_cast__content__browser__client.cc
new file mode 100644
index 000000000000..c2463460ce64
--- /dev/null
+++ b/devel/electron5/files/patch-chromecast_browser_cast__content__browser__client.cc
@@ -0,0 +1,11 @@
+--- chromecast/browser/cast_content_browser_client.cc.orig 2019-04-08 08:32:48 UTC
++++ chromecast/browser/cast_content_browser_client.cc
+@@ -524,7 +524,7 @@ void CastContentBrowserClient::AppendExtraCommandLineS
+ switches::kAudioOutputChannels));
+ }
+ } else if (process_type == switches::kGpuProcess) {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Necessary for accelerated 2d canvas. By default on Linux, Chromium assumes
+ // GLES2 contexts can be lost to a power-save mode, which breaks GPU canvas
+ // apps.
diff --git a/devel/electron5/files/patch-chromecast_browser_tts_tts__controller__impl.cc b/devel/electron5/files/patch-chromecast_browser_tts_tts__controller__impl.cc
new file mode 100644
index 000000000000..2577edc60b08
--- /dev/null
+++ b/devel/electron5/files/patch-chromecast_browser_tts_tts__controller__impl.cc
@@ -0,0 +1,14 @@
+--- chromecast/browser/tts/tts_controller_impl.cc.orig 2019-04-08 08:18:16 UTC
++++ chromecast/browser/tts/tts_controller_impl.cc
+@@ -390,7 +390,11 @@ int TtsControllerImpl::QueueSize() {
+ }
+
+ TtsPlatformImpl* TtsControllerImpl::GetPlatformImpl() {
++#if defined(OS_BSD)
++ return NULL;
++#else
+ return platform_impl_.get();
++#endif // defined(OS_BSD)
+ }
+
+ std::string TtsControllerImpl::GetApplicationLocale() const {
diff --git a/devel/electron5/files/patch-chromecast_media_cma_backend_media__pipeline__backend__for__mixer.cc b/devel/electron5/files/patch-chromecast_media_cma_backend_media__pipeline__backend__for__mixer.cc
new file mode 100644
index 000000000000..523c884e0063
--- /dev/null
+++ b/devel/electron5/files/patch-chromecast_media_cma_backend_media__pipeline__backend__for__mixer.cc
@@ -0,0 +1,23 @@
+--- chromecast/media/cma/backend/media_pipeline_backend_for_mixer.cc.orig 2019-04-08 08:32:48 UTC
++++ chromecast/media/cma/backend/media_pipeline_backend_for_mixer.cc
+@@ -14,9 +14,9 @@
+ #include "chromecast/media/cma/backend/av_sync.h"
+ #include "chromecast/media/cma/backend/video_decoder_for_mixer.h"
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include "chromecast/media/cma/backend/audio_buildflags.h"
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+
+ #if defined(OS_FUCHSIA)
+ #include <zircon/syscalls.h>
+@@ -226,7 +226,7 @@ MediaPipelineBackendForMixer::GetTaskRunner() const {
+ return static_cast<TaskRunnerImpl*>(params_.task_runner)->runner();
+ }
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ int64_t MediaPipelineBackendForMixer::MonotonicClockNow() const {
+ timespec now = {0, 0};
+ #if BUILDFLAG(MEDIA_CLOCK_MONOTONIC_RAW)
diff --git a/devel/electron5/files/patch-components_autofill__strings.grdp b/devel/electron5/files/patch-components_autofill__strings.grdp
new file mode 100644
index 000000000000..36a088d484e5
--- /dev/null
+++ b/devel/electron5/files/patch-components_autofill__strings.grdp
@@ -0,0 +1,11 @@
+--- components/autofill_strings.grdp.orig 2019-04-08 08:32:49 UTC
++++ components/autofill_strings.grdp
+@@ -217,7 +217,7 @@
+ <message name="IDS_AUTOFILL_NAME_FIX_FLOW_PROMPT_SAVE_CARD" desc="Text to show for the Autofill save credit card prompt card holder name fix flow button." formatter_data="android_java">
+ Save card
+ </message>
+- <if expr="is_linux and not chromeos">
++ <if expr="is_posix and not chromeos">
+ <then>
+ <message name="IDS_AUTOFILL_SAVE_CARD_PROMPT_TITLE_TO_CLOUD" desc="Title text for the Autofill save card prompt when the card is to be saved by uploading it to Google Payments and also saved locally. The prompt can be either a bubble or an infobar.">
+ Do you want to save this card to your Google Account?
diff --git a/devel/electron5/files/patch-components_autofill_content_renderer_password__form__conversion__utils.cc b/devel/electron5/files/patch-components_autofill_content_renderer_password__form__conversion__utils.cc
new file mode 100644
index 000000000000..e0c8c931fee6
--- /dev/null
+++ b/devel/electron5/files/patch-components_autofill_content_renderer_password__form__conversion__utils.cc
@@ -0,0 +1,14 @@
+--- components/autofill/content/renderer/password_form_conversion_utils.cc.orig 2019-04-08 08:32:49 UTC
++++ components/autofill/content/renderer/password_form_conversion_utils.cc
+@@ -37,7 +37,11 @@
+ #include "third_party/blink/public/web/web_form_control_element.h"
+ #include "third_party/blink/public/web/web_input_element.h"
+ #include "third_party/blink/public/web/web_local_frame.h"
++#if defined(OS_BSD)
++#include <re2/re2.h>
++#else
+ #include "third_party/re2/src/re2/re2.h"
++#endif
+ #include "url/gurl.h"
+
+ using blink::WebFormControlElement;
diff --git a/devel/electron5/files/patch-components_autofill_core_browser_autofill__experiments.cc b/devel/electron5/files/patch-components_autofill_core_browser_autofill__experiments.cc
new file mode 100644
index 000000000000..10af17286e6b
--- /dev/null
+++ b/devel/electron5/files/patch-components_autofill_core_browser_autofill__experiments.cc
@@ -0,0 +1,46 @@
+--- components/autofill/core/browser/autofill_experiments.cc.orig 2019-04-08 08:32:49 UTC
++++ components/autofill/core/browser/autofill_experiments.cc
+@@ -28,7 +28,7 @@
+
+ namespace autofill {
+
+-#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_BSD)
+ const base::Feature kAutofillDropdownLayoutExperiment{
+ "AutofillDropdownLayout", base::FEATURE_DISABLED_BY_DEFAULT};
+ const char kAutofillDropdownLayoutParameterName[] = "variant";
+@@ -36,7 +36,7 @@ const char kAutofillDropdownLayoutParameterLeadingIcon
+ const char kAutofillDropdownLayoutParameterTrailingIcon[] = "trailing-icon";
+ const char kAutofillDropdownLayoutParameterTwoLinesLeadingIcon[] =
+ "two-lines-leading-icon";
+-#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN)
++#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_BSD)
+
+ bool IsCreditCardUploadEnabled(const PrefService* pref_service,
+ const syncer::SyncService* sync_service,
+@@ -143,7 +143,7 @@ bool IsAutofillNoLocalSaveOnUploadSuccessExperimentEna
+ }
+
+ bool OfferStoreUnmaskedCards(bool is_off_the_record) {
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ // The checkbox can be forced on with a flag, but by default we don't store
+ // on Linux due to lack of system keychain integration. See crbug.com/162735
+ return base::CommandLine::ForCurrentProcess()->HasSwitch(
+@@ -181,7 +181,7 @@ bool ShouldUseActiveSignedInAccount() {
+ features::kAutofillGetPaymentsIdentityFromSync);
+ }
+
+-#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_BSD)
+ ForcedPopupLayoutState GetForcedPopupLayoutState() {
+ if (!base::FeatureList::IsEnabled(
+ autofill::kAutofillDropdownLayoutExperiment))
+@@ -205,6 +205,6 @@ ForcedPopupLayoutState GetForcedPopupLayoutState() {
+ NOTREACHED();
+ return ForcedPopupLayoutState::kDefault;
+ }
+-#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN)
++#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_BSD)
+
+ } // namespace autofill
diff --git a/devel/electron5/files/patch-components_autofill_core_browser_autofill__experiments.h b/devel/electron5/files/patch-components_autofill_core_browser_autofill__experiments.h
new file mode 100644
index 000000000000..ca1fe8f433cc
--- /dev/null
+++ b/devel/electron5/files/patch-components_autofill_core_browser_autofill__experiments.h
@@ -0,0 +1,36 @@
+--- components/autofill/core/browser/autofill_experiments.h.orig 2019-04-08 08:32:49 UTC
++++ components/autofill/core/browser/autofill_experiments.h
+@@ -23,13 +23,13 @@ class SyncService;
+ namespace autofill {
+
+ // Parameterized Features (grouped with parameter name and options)
+-#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_BSD)
+ extern const base::Feature kAutofillDropdownLayoutExperiment;
+ extern const char kAutofillDropdownLayoutParameterName[];
+ extern const char kAutofillDropdownLayoutParameterLeadingIcon[];
+ extern const char kAutofillDropdownLayoutParameterTrailingIcon[];
+ extern const char kAutofillDropdownLayoutParameterTwoLinesLeadingIcon[];
+-#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN)
++#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_BSD)
+
+ // Returns true if uploading credit cards to Wallet servers is enabled. This
+ // requires the appropriate flags and user settings to be true and the user to
+@@ -59,7 +59,7 @@ bool OfferStoreUnmaskedCards(bool is_off_the_record);
+ // Returns whether the account of the active signed-in user should be used.
+ bool ShouldUseActiveSignedInAccount();
+
+-#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_BSD)
+ enum class ForcedPopupLayoutState {
+ kDefault, // No popup layout forced by experiment.
+ kLeadingIcon, // Experiment forces leading (left in LTR) icon layout.
+@@ -73,7 +73,7 @@ enum class ForcedPopupLayoutState {
+ // if the experiment param matches kAutofillDropdownLayoutParameterLeadingIcon
+ // or kAutofillDropdownLayoutParameterTrailingIcon, respectively.
+ ForcedPopupLayoutState GetForcedPopupLayoutState();
+-#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN)
++#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_BSD)
+
+ } // namespace autofill
+
diff --git a/devel/electron5/files/patch-components_autofill_core_common_autofill__util.cc b/devel/electron5/files/patch-components_autofill_core_common_autofill__util.cc
new file mode 100644
index 000000000000..3b152c50b763
--- /dev/null
+++ b/devel/electron5/files/patch-components_autofill_core_common_autofill__util.cc
@@ -0,0 +1,11 @@
+--- components/autofill/core/common/autofill_util.cc.orig 2019-04-08 08:32:49 UTC
++++ components/autofill/core/common/autofill_util.cc
+@@ -203,7 +203,7 @@ bool SanitizedFieldIsEmpty(const base::string16& value
+ }
+
+ bool ShouldAutoselectFirstSuggestionOnArrowDown() {
+-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+ return true;
+ #else
+ return false;
diff --git a/devel/electron5/files/patch-components_content__settings_core_browser_website__settings__registry.cc b/devel/electron5/files/patch-components_content__settings_core_browser_website__settings__registry.cc
new file mode 100644
index 000000000000..5d3b51f38b4f
--- /dev/null
+++ b/devel/electron5/files/patch-components_content__settings_core_browser_website__settings__registry.cc
@@ -0,0 +1,11 @@
+--- components/content_settings/core/browser/website_settings_registry.cc.orig 2019-04-08 08:32:49 UTC
++++ components/content_settings/core/browser/website_settings_registry.cc
+@@ -66,7 +66,7 @@ const WebsiteSettingsInfo* WebsiteSettingsRegistry::Re
+ #if defined(OS_WIN)
+ if (!(platform & PLATFORM_WINDOWS))
+ return nullptr;
+-#elif defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#elif (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ if (!(platform & PLATFORM_LINUX))
+ return nullptr;
+ #elif defined(OS_MACOSX) && !defined(OS_IOS)
diff --git a/devel/electron5/files/patch-components_cookie__config_cookie__store__util.cc b/devel/electron5/files/patch-components_cookie__config_cookie__store__util.cc
new file mode 100644
index 000000000000..26459aa2acfb
--- /dev/null
+++ b/devel/electron5/files/patch-components_cookie__config_cookie__store__util.cc
@@ -0,0 +1,24 @@
+--- components/cookie_config/cookie_store_util.cc.orig 2019-04-08 08:18:17 UTC
++++ components/cookie_config/cookie_store_util.cc
+@@ -11,7 +11,7 @@
+
+ namespace cookie_config {
+
+-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+ namespace {
+
+ // Use the operating system's mechanisms to encrypt cookies before writing
+@@ -63,10 +63,10 @@ base::LazyInstance<CookieOSCryptoDelegate>::Destructor
+ net::CookieCryptoDelegate* GetCookieCryptoDelegate() {
+ return g_cookie_crypto_delegate.Pointer();
+ }
+-#else // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
++#else // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+ net::CookieCryptoDelegate* GetCookieCryptoDelegate() {
+ return NULL;
+ }
+-#endif // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
++#endif // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+
+ } // namespace cookie_config
diff --git a/devel/electron5/files/patch-components_crash_content_app_BUILD.gn b/devel/electron5/files/patch-components_crash_content_app_BUILD.gn
new file mode 100644
index 000000000000..be52fea0e98a
--- /dev/null
+++ b/devel/electron5/files/patch-components_crash_content_app_BUILD.gn
@@ -0,0 +1,29 @@
+--- components/crash/content/app/BUILD.gn.orig 2019-04-08 08:32:49 UTC
++++ components/crash/content/app/BUILD.gn
+@@ -36,12 +36,12 @@ static_library("app") {
+ sources += [ "crashpad.cc" ]
+ }
+
+- if (is_android || (is_linux && !is_chromeos)) {
++ if (is_android || (is_linux && !is_chromeos && !is_bsd)) {
+ set_sources_assignment_filter([])
+ sources += [ "crashpad_linux.cc" ]
+ }
+
+- if (is_linux) {
++ if (is_linux && !is_bsd) {
+ sources += [
+ "breakpad_linux.cc",
+ "breakpad_linux.h",
+@@ -79,7 +79,10 @@ static_library("app") {
+ "//third_party/crashpad/crashpad/snapshot",
+ ]
+
+- if (is_linux) {
++ if (is_bsd) {
++ deps -= [ "//third_party/crashpad/crashpad/snapshot" ]
++ }
++ if (is_linux && !is_bsd) {
+ deps += [ "//third_party/breakpad:client" ]
+ }
+ }
diff --git a/devel/electron5/files/patch-components_crash_content_app_crashpad.cc b/devel/electron5/files/patch-components_crash_content_app_crashpad.cc
new file mode 100644
index 000000000000..fcbf710f39a5
--- /dev/null
+++ b/devel/electron5/files/patch-components_crash_content_app_crashpad.cc
@@ -0,0 +1,43 @@
+--- components/crash/content/app/crashpad.cc.orig 2019-04-08 08:32:49 UTC
++++ components/crash/content/app/crashpad.cc
+@@ -102,6 +102,12 @@ void InitializeCrashpadImpl(bool initial_client,
+ const base::FilePath& exe_path,
+ const std::vector<std::string>& initial_arguments,
+ bool embedded_handler) {
++
++#if defined(OS_BSD)
++ NOTIMPLEMENTED();
++ return;
++#endif
++
+ static bool initialized = false;
+ DCHECK(!initialized);
+ initialized = true;
+@@ -122,7 +128,7 @@ void InitializeCrashpadImpl(bool initial_client,
+ DCHECK(browser_process || process_type == "Chrome Installer" ||
+ process_type == "notification-helper" ||
+ process_type == "GCPW Installer" || process_type == "GCPW DLL");
+-#elif defined(OS_LINUX) || defined(OS_ANDROID)
++#elif defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
+ DCHECK(browser_process);
+ #else
+ #error Port.
+@@ -187,7 +193,7 @@ void InitializeCrashpadImpl(bool initial_client,
+ // other "main, first process" to initialize things. There is no "relauncher"
+ // on Windows, so this is synonymous with initial_client.
+ const bool should_initialize_database_and_set_upload_policy = initial_client;
+-#elif defined(OS_LINUX) || defined(OS_ANDROID)
++#elif defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
+ const bool should_initialize_database_and_set_upload_policy = browser_process;
+ #endif
+ if (should_initialize_database_and_set_upload_policy) {
+@@ -267,7 +273,9 @@ bool GetUploadsEnabled() {
+
+ #if !defined(OS_ANDROID)
+ void DumpWithoutCrashing() {
++#if !defined(OS_BSD)
+ CRASHPAD_SIMULATE_CRASH();
++#endif
+ }
+ #endif
+
diff --git a/devel/electron5/files/patch-components_crash_content_browser_BUILD.gn b/devel/electron5/files/patch-components_crash_content_browser_BUILD.gn
new file mode 100644
index 000000000000..81ac98290989
--- /dev/null
+++ b/devel/electron5/files/patch-components_crash_content_browser_BUILD.gn
@@ -0,0 +1,27 @@
+--- components/crash/content/browser/BUILD.gn.orig 2019-04-08 08:18:17 UTC
++++ components/crash/content/browser/BUILD.gn
+@@ -28,7 +28,7 @@ source_set("browser") {
+ "//content/public/common",
+ ]
+
+- if (is_linux || is_android) {
++ if ((is_linux && !is_bsd) || is_android) {
+ set_sources_assignment_filter([])
+
+ # Want this file on both Linux and Android.
+@@ -42,13 +42,13 @@ source_set("browser") {
+ deps += [ "//third_party/crashpad/crashpad/client" ]
+ }
+
+- if (!is_android) {
++ if (!is_android && !is_bsd) {
+ deps += [ "//third_party/breakpad:client" ]
+ }
+
+ # This is not in the GYP build but this target includes breakpad client
+ # headers, so add the dependency here.
+- if ((is_posix && !is_ios) || is_fuchsia) {
++ if ((is_posix && !is_ios && !is_bsd) || is_fuchsia) {
+ configs += [ "//third_party/breakpad:client_config" ]
+ public_configs = [ "//third_party/breakpad:client_config" ]
+ }
diff --git a/devel/electron5/files/patch-components_crash_core_common_BUILD.gn b/devel/electron5/files/patch-components_crash_core_common_BUILD.gn
new file mode 100644
index 000000000000..8c1dd6dfd748
--- /dev/null
+++ b/devel/electron5/files/patch-components_crash_core_common_BUILD.gn
@@ -0,0 +1,28 @@
+--- components/crash/core/common/BUILD.gn.orig 2019-04-08 08:32:49 UTC
++++ components/crash/core/common/BUILD.gn
+@@ -6,7 +6,7 @@ import("//build/buildflag_header.gni")
+
+ declare_args() {
+ # If set to true, this will stub out and disable the entire crash key system.
+- use_crash_key_stubs = is_fuchsia
++ use_crash_key_stubs = is_fuchsia || is_bsd
+ }
+
+ group("common") {
+@@ -89,7 +89,6 @@ target(crash_key_target_type, "crash_key") {
+ ]
+ }
+
+- deps += [ "//third_party/breakpad:client" ]
+ }
+ }
+
+@@ -144,7 +143,7 @@ source_set("unit_tests") {
+ sources += [ "objc_zombie_unittest.mm" ]
+ }
+
+- if (!is_mac && !is_win && !is_fuchsia && !is_android) {
++ if (!is_mac && !is_win && !is_fuchsia && !is_android && !is_bsd) {
+ include_dirs = [ "//third_party/breakpad/breakpad/src/" ]
+ sources += [ "crash_key_breakpad_unittest.cc" ]
+ }
diff --git a/devel/electron5/files/patch-components_download_internal_common_base__file.cc b/devel/electron5/files/patch-components_download_internal_common_base__file.cc
new file mode 100644
index 000000000000..74d8f60684a4
--- /dev/null
+++ b/devel/electron5/files/patch-components_download_internal_common_base__file.cc
@@ -0,0 +1,11 @@
+--- components/download/internal/common/base_file.cc.orig 2019-04-08 08:32:49 UTC
++++ components/download/internal/common/base_file.cc
+@@ -446,7 +446,7 @@ DownloadInterruptReason BaseFile::LogInterruptReason(
+ return reason;
+ }
+
+-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+
+ namespace {
+
diff --git a/devel/electron5/files/patch-components_download_quarantine_quarantine__linux.cc b/devel/electron5/files/patch-components_download_quarantine_quarantine__linux.cc
new file mode 100644
index 000000000000..f9acd2f5a69a
--- /dev/null
+++ b/devel/electron5/files/patch-components_download_quarantine_quarantine__linux.cc
@@ -0,0 +1,36 @@
+--- components/download/quarantine/quarantine_linux.cc.orig 2019-04-08 08:32:49 UTC
++++ components/download/quarantine/quarantine_linux.cc
+@@ -2,11 +2,15 @@
+ // Use of this source code is governed by a BSD-style license that can be
+ // found in the LICENSE file.
+
++#include "build/build_config.h"
++
+ #include "components/download/quarantine/quarantine.h"
+
+ #include <stddef.h>
+ #include <sys/types.h>
++#if !defined(OS_BSD)
+ #include <sys/xattr.h>
++#endif
+
+ #include "base/files/file_path.h"
+ #include "base/logging.h"
+@@ -25,7 +29,7 @@ bool SetExtendedFileAttribute(const char* path,
+ int flags) {
+ // On Chrome OS, there is no component that can validate these extended
+ // attributes so there is no need to set them.
+-#if !defined(OS_CHROMEOS)
++#if !defined(OS_CHROMEOS) && !defined(OS_BSD)
+ base::ScopedBlockingCall scoped_blocking_call(base::BlockingType::MAY_BLOCK);
+ int result = setxattr(path, name, value, value_size, flags);
+ if (result) {
+@@ -33,7 +37,7 @@ bool SetExtendedFileAttribute(const char* path,
+ << path;
+ return false;
+ }
+-#endif // !defined(OS_CHROMEOS)
++#endif // !defined(OS_CHROMEOS) && !defined(OS_BSD)
+ return true;
+ }
+
diff --git a/devel/electron5/files/patch-components_download_quarantine_test__support__linux.cc b/devel/electron5/files/patch-components_download_quarantine_test__support__linux.cc
new file mode 100644
index 000000000000..762ae5d740cf
--- /dev/null
+++ b/devel/electron5/files/patch-components_download_quarantine_test__support__linux.cc
@@ -0,0 +1,20 @@
+--- components/download/quarantine/test_support_linux.cc.orig 2019-04-08 08:32:49 UTC
++++ components/download/quarantine/test_support_linux.cc
+@@ -21,6 +21,7 @@ namespace download {
+ namespace {
+
+ std::string GetExtendedFileAttribute(const char* path, const char* name) {
++#if !defined(OS_BSD)
+ base::ScopedBlockingCall scoped_blocking_call(base::BlockingType::MAY_BLOCK);
+ ssize_t len = getxattr(path, name, nullptr, 0);
+ if (len <= 0)
+@@ -31,6 +32,9 @@ std::string GetExtendedFileAttribute(const char* path,
+ if (len < static_cast<ssize_t>(buffer.size()))
+ return std::string();
+ return std::string(buffer.begin(), buffer.end());
++#else
++ return std::string();
++#endif // !defined(OS_BSD)
+ }
+
+ } // namespace
diff --git a/devel/electron5/files/patch-components_feature__engagement_public_event__constants.cc b/devel/electron5/files/patch-components_feature__engagement_public_event__constants.cc
new file mode 100644
index 000000000000..29bdef914db1
--- /dev/null
+++ b/devel/electron5/files/patch-components_feature__engagement_public_event__constants.cc
@@ -0,0 +1,14 @@
+--- components/feature_engagement/public/event_constants.cc.orig 2019-04-08 08:18:17 UTC
++++ components/feature_engagement/public/event_constants.cc
+@@ -26,9 +26,9 @@ const char kReopenTabConditionsMet[] = "reopen_tab_con
+ const char kTabReopened[] = "tab_reopened";
+ #endif // BUILDFLAG(ENABLE_DESKTOP_IN_PRODUCT_HELP)
+
+-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_IOS)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_IOS) || defined(OS_BSD)
+ const char kNewTabOpened[] = "new_tab_opened";
+-#endif // defined(OS_WIN) || defined(OS_LINUX) || defined(OS_IOS)
++#endif // defined(OS_WIN) || defined(OS_LINUX) || defined(OS_IOS) || defined(OS_BSD)
+
+ #if defined(OS_IOS)
+ const char kChromeOpened[] = "chrome_opened";
diff --git a/devel/electron5/files/patch-components_feature__engagement_public_event__constants.h b/devel/electron5/files/patch-components_feature__engagement_public_event__constants.h
new file mode 100644
index 000000000000..de0c6fd03309
--- /dev/null
+++ b/devel/electron5/files/patch-components_feature__engagement_public_event__constants.h
@@ -0,0 +1,20 @@
+--- components/feature_engagement/public/event_constants.h.orig 2019-04-08 08:18:17 UTC
++++ components/feature_engagement/public/event_constants.h
+@@ -49,7 +49,7 @@ extern const char kReopenTabConditionsMet[];
+ extern const char kTabReopened[];
+ #endif // BUILDFLAG(ENABLE_DESKTOP_IN_PRODUCT_HELP)
+
+-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_IOS)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_IOS) || defined(OS_BSD)
+ // This event is included in the deferred onboarding events for the New Tab
+ // described above, but it is also used on iOS, so it must be compiled
+ // separately.
+@@ -57,7 +57,7 @@ extern const char kTabReopened[];
+ // The user has explicitly opened a new tab via an entry point from inside of
+ // Chrome.
+ extern const char kNewTabOpened[];
+-#endif // defined(OS_WIN) || defined(OS_LINUX) || defined(OS_IOS)
++#endif // defined(OS_WIN) || defined(OS_LINUX) || defined(OS_IOS) || defined(OS_BSD)
+
+ #if defined(OS_IOS)
+ // The user has opened Chrome (cold start or from background).
diff --git a/devel/electron5/files/patch-components_feedback_anonymizer__tool.cc b/devel/electron5/files/patch-components_feedback_anonymizer__tool.cc
new file mode 100644
index 000000000000..f0b9a2ca259c
--- /dev/null
+++ b/devel/electron5/files/patch-components_feedback_anonymizer__tool.cc
@@ -0,0 +1,14 @@
+--- components/feedback/anonymizer_tool.cc.orig 2019-04-08 08:32:49 UTC
++++ components/feedback/anonymizer_tool.cc
+@@ -13,7 +13,11 @@
+ #include "base/strings/stringprintf.h"
+ #include "content/public/browser/browser_thread.h"
+ #include "net/base/ip_address.h"
++#if defined(OS_BSD)
++#include <re2/re2.h>
++#else
+ #include "third_party/re2/src/re2/re2.h"
++#endif
+
+ using re2::RE2;
+
diff --git a/devel/electron5/files/patch-components_flags__ui_flags__state.cc b/devel/electron5/files/patch-components_flags__ui_flags__state.cc
new file mode 100644
index 000000000000..2b8b92ba87ec
--- /dev/null
+++ b/devel/electron5/files/patch-components_flags__ui_flags__state.cc
@@ -0,0 +1,11 @@
+--- components/flags_ui/flags_state.cc.orig 2019-04-08 08:32:49 UTC
++++ components/flags_ui/flags_state.cc
+@@ -618,7 +618,7 @@ int FlagsState::GetCurrentPlatform() {
+ return kOsWin;
+ #elif defined(OS_CHROMEOS) // Needs to be before the OS_LINUX check.
+ return kOsCrOS;
+-#elif defined(OS_LINUX) || defined(OS_OPENBSD)
++#elif defined(OS_LINUX) || defined(OS_OPENBSD) || defined(OS_FREEBSD)
+ return kOsLinux;
+ #elif defined(OS_ANDROID)
+ return kOsAndroid;
diff --git a/devel/electron5/files/patch-components_gcm__driver_gcm__client.h b/devel/electron5/files/patch-components_gcm__driver_gcm__client.h
new file mode 100644
index 000000000000..136366e9880d
--- /dev/null
+++ b/devel/electron5/files/patch-components_gcm__driver_gcm__client.h
@@ -0,0 +1,10 @@
+--- components/gcm_driver/gcm_client.h.orig 2019-04-08 08:32:49 UTC
++++ components/gcm_driver/gcm_client.h
+@@ -85,6 +85,7 @@ class GCMClient {
+ PLATFORM_CROS,
+ PLATFORM_IOS,
+ PLATFORM_ANDROID,
++ PLATFORM_BSD,
+ PLATFORM_UNSPECIFIED
+ };
+
diff --git a/devel/electron5/files/patch-components_gcm__driver_gcm__client__impl.cc b/devel/electron5/files/patch-components_gcm__driver_gcm__client__impl.cc
new file mode 100644
index 000000000000..38e672ed5cb6
--- /dev/null
+++ b/devel/electron5/files/patch-components_gcm__driver_gcm__client__impl.cc
@@ -0,0 +1,12 @@
+--- components/gcm_driver/gcm_client_impl.cc.orig 2019-04-08 08:18:17 UTC
++++ components/gcm_driver/gcm_client_impl.cc
+@@ -150,6 +150,9 @@ void ToCheckinProtoVersion(
+ case GCMClient::PLATFORM_CROS:
+ platform = checkin_proto::ChromeBuildProto_Platform_PLATFORM_CROS;
+ break;
++ case GCMClient::PLATFORM_BSD:
++ platform = checkin_proto::ChromeBuildProto_Platform_PLATFORM_LINUX;
++ break;
+ case GCMClient::PLATFORM_UNSPECIFIED:
+ // For unknown platform, return as LINUX.
+ platform = checkin_proto::ChromeBuildProto_Platform_PLATFORM_LINUX;
diff --git a/devel/electron5/files/patch-components_keyed__service_core_dependency__graph__unittest.cc b/devel/electron5/files/patch-components_keyed__service_core_dependency__graph__unittest.cc
new file mode 100644
index 000000000000..051e2918ce3a
--- /dev/null
+++ b/devel/electron5/files/patch-components_keyed__service_core_dependency__graph__unittest.cc
@@ -0,0 +1,14 @@
+--- components/keyed_service/core/dependency_graph_unittest.cc.orig 2019-04-08 08:18:17 UTC
++++ components/keyed_service/core/dependency_graph_unittest.cc
+@@ -9,7 +9,11 @@
+ #include "components/keyed_service/core/dependency_graph.h"
+ #include "components/keyed_service/core/dependency_node.h"
+ #include "testing/gtest/include/gtest/gtest.h"
++#if defined(OS_BSD)
++#include <re2/re2.h>
++#else
+ #include "third_party/re2/src/re2/re2.h"
++#endif
+
+ namespace {
+
diff --git a/devel/electron5/files/patch-components_metrics_BUILD.gn b/devel/electron5/files/patch-components_metrics_BUILD.gn
new file mode 100644
index 000000000000..bb60389c143b
--- /dev/null
+++ b/devel/electron5/files/patch-components_metrics_BUILD.gn
@@ -0,0 +1,14 @@
+--- components/metrics/BUILD.gn.orig 2019-04-08 08:32:49 UTC
++++ components/metrics/BUILD.gn
+@@ -143,6 +143,11 @@ jumbo_static_library("metrics") {
+ if (is_fuchsia) {
+ sources += [ "drive_metrics_provider_fuchsia.cc" ]
+ }
++
++ if (is_bsd) {
++ sources -= [ "system_memory_stats_recorder_linux.cc" ]
++ }
++
+ }
+
+ # The component metrics provider is a separate target because it depends upon
diff --git a/devel/electron5/files/patch-components_metrics_drive__metrics__provider__linux.cc b/devel/electron5/files/patch-components_metrics_drive__metrics__provider__linux.cc
new file mode 100644
index 000000000000..3bd146182f76
--- /dev/null
+++ b/devel/electron5/files/patch-components_metrics_drive__metrics__provider__linux.cc
@@ -0,0 +1,16 @@
+--- components/metrics/drive_metrics_provider_linux.cc.orig 2019-04-08 08:18:17 UTC
++++ components/metrics/drive_metrics_provider_linux.cc
+@@ -4,7 +4,13 @@
+
+ #include "components/metrics/drive_metrics_provider.h"
+
++#if defined(OS_BSD)
++#include <sys/types.h>
++#define MAJOR(dev) major(dev)
++#define MINOR(dev) minor(dev)
++#else
+ #include <linux/kdev_t.h> // For MAJOR()/MINOR().
++#endif
+ #include <sys/stat.h>
+ #include <string>
+
diff --git a/devel/electron5/files/patch-components_metrics_metrics__log.cc b/devel/electron5/files/patch-components_metrics_metrics__log.cc
new file mode 100644
index 000000000000..1fb05d911114
--- /dev/null
+++ b/devel/electron5/files/patch-components_metrics_metrics__log.cc
@@ -0,0 +1,11 @@
+--- components/metrics/metrics_log.cc.orig 2019-04-08 08:32:49 UTC
++++ components/metrics/metrics_log.cc
+@@ -198,7 +198,7 @@ void MetricsLog::RecordCoreSystemProfile(MetricsServic
+ // OperatingSystemVersion refers to the ChromeOS release version.
+ #if defined(OS_CHROMEOS)
+ os->set_kernel_version(base::SysInfo::KernelVersion());
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ // Linux operating system version is copied over into kernel version to be
+ // consistent.
+ os->set_kernel_version(base::SysInfo::OperatingSystemVersion());
diff --git a/devel/electron5/files/patch-components_metrics_system__memory__stats__recorder__linux.cc b/devel/electron5/files/patch-components_metrics_system__memory__stats__recorder__linux.cc
new file mode 100644
index 000000000000..e08a20f9a71f
--- /dev/null
+++ b/devel/electron5/files/patch-components_metrics_system__memory__stats__recorder__linux.cc
@@ -0,0 +1,18 @@
+--- components/metrics/system_memory_stats_recorder_linux.cc.orig 2019-04-08 08:18:17 UTC
++++ components/metrics/system_memory_stats_recorder_linux.cc
+@@ -30,6 +30,7 @@ namespace metrics {
+ UMA_HISTOGRAM_LINEAR(name, sample, 2500, 50)
+
+ void RecordMemoryStats(RecordMemoryStatsType type) {
++#if !defined(OS_FREEBSD)
+ base::SystemMemoryInfoKB memory;
+ if (!base::GetSystemMemoryInfo(&memory))
+ return;
+@@ -93,6 +94,7 @@ void RecordMemoryStats(RecordMemoryStatsType type) {
+ break;
+ }
+ }
++#endif // !defined(OS_FREEBSD)
+ }
+
+ } // namespace metrics
diff --git a/devel/electron5/files/patch-components_neterror_resources_neterror.js b/devel/electron5/files/patch-components_neterror_resources_neterror.js
new file mode 100644
index 000000000000..20918d48b85f
--- /dev/null
+++ b/devel/electron5/files/patch-components_neterror_resources_neterror.js
@@ -0,0 +1,11 @@
+--- components/neterror/resources/neterror.js.orig 2019-04-08 08:32:49 UTC
++++ components/neterror/resources/neterror.js
+@@ -166,7 +166,7 @@ function setUpCachedButton(buttonStrings) {
+ }
+
+ var primaryControlOnLeft = true;
+-// <if expr="is_macosx or is_ios or is_linux or is_android">
++// <if expr="is_macosx or is_ios or is_linux or is_android or is_bsd">
+ primaryControlOnLeft = false;
+ // </if>
+
diff --git a/devel/electron5/files/patch-components_network__session__configurator_browser_network__session__configurator.cc b/devel/electron5/files/patch-components_network__session__configurator_browser_network__session__configurator.cc
new file mode 100644
index 000000000000..a60db582f931
--- /dev/null
+++ b/devel/electron5/files/patch-components_network__session__configurator_browser_network__session__configurator.cc
@@ -0,0 +1,11 @@
+--- components/network_session_configurator/browser/network_session_configurator.cc.orig 2019-04-08 08:32:49 UTC
++++ components/network_session_configurator/browser/network_session_configurator.cc
+@@ -662,7 +662,7 @@ net::URLRequestContextBuilder::HttpCacheParams::Type C
+ }
+ #endif // #if !defined(OS_ANDROID)
+
+-#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ return net::URLRequestContextBuilder::HttpCacheParams::DISK_SIMPLE;
+ #else
+ return net::URLRequestContextBuilder::HttpCacheParams::DISK_BLOCKFILE;
diff --git a/devel/electron5/files/patch-components_new__or__sad__tab__strings.grdp b/devel/electron5/files/patch-components_new__or__sad__tab__strings.grdp
new file mode 100644
index 000000000000..6a882f986ce3
--- /dev/null
+++ b/devel/electron5/files/patch-components_new__or__sad__tab__strings.grdp
@@ -0,0 +1,38 @@
+--- components/new_or_sad_tab_strings.grdp.orig 2019-04-08 08:18:18 UTC
++++ components/new_or_sad_tab_strings.grdp
+@@ -51,7 +51,7 @@
+ Open page in a new Incognito window (⇧⌘N)
+ </message>
+ </if>
+- <if expr="is_win or is_linux or chromeos">
++ <if expr="is_win or is_posix or chromeos">
+ <message name="IDS_SAD_TAB_RELOAD_INCOGNITO" desc="One of the bullet points displayed on the web page if a reload failed to fix the issue, advising the user to open the web page in Chrome's Incognito mode.">
+ Open page in a new Incognito window (Ctrl-Shift-N)
+ </message>
+@@ -69,7 +69,7 @@
+ Close other tabs or apps
+ </message>
+ </if>
+- <if expr="is_linux and not chromeos">
++ <if expr="is_posix and not chromeos">
+ <message name="IDS_SAD_TAB_RELOAD_CLOSE_TABS" desc="One of the bullet points displayed on the web page if a reload failed to fix the issue, advising the user to close other Chrome tabs or programs running on their computer.">
+ Close other tabs or programs
+ </message>
+@@ -79,7 +79,7 @@
+ Close other apps
+ </message>
+ </if>
+- <if expr="is_linux and not chromeos">
++ <if expr="is_posix and not chromeos">
+ <message name="IDS_SAD_TAB_RELOAD_CLOSE_NOTABS" desc="One of the bullet points displayed on the web page if a reload failed to fix the issue, advising the user to close other programs running on their computer (Linux).">
+ Close other programs
+ </message>
+@@ -94,7 +94,7 @@
+ Restart Chromium
+ </message>
+ </if>
+- <if expr="is_win or is_linux or is_macosx or chromeos">
++ <if expr="is_win or is_posix or is_macosx or chromeos">
+ <message name="IDS_SAD_TAB_RELOAD_RESTART_DEVICE" desc="One of the bullet points displayed on the web page if a reload failed to fix the issue, advising the user to restart their computer.">
+ Restart your computer
+ </message>
diff --git a/devel/electron5/files/patch-components_os__crypt_os__crypt.h b/devel/electron5/files/patch-components_os__crypt_os__crypt.h
new file mode 100644
index 000000000000..1b56184c92a0
--- /dev/null
+++ b/devel/electron5/files/patch-components_os__crypt_os__crypt.h
@@ -0,0 +1,48 @@
+--- components/os_crypt/os_crypt.h.orig 2019-04-08 08:18:18 UTC
++++ components/os_crypt/os_crypt.h
+@@ -15,9 +15,9 @@
+ #include "base/strings/string16.h"
+ #include "build/build_config.h"
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ class KeyStorageLinux;
+-#endif // defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#endif // (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+
+ #if defined(OS_MACOSX) && !defined(OS_IOS)
+ class PrefRegistrySimple;
+@@ -34,13 +34,13 @@ struct Config;
+ // true for Linux, if a password management tool is available.
+ class OSCrypt {
+ public:
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ // Set the configuration of OSCrypt.
+ static COMPONENT_EXPORT(OS_CRYPT) void SetConfig(
+ std::unique_ptr<os_crypt::Config> config);
+-#endif // defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#endif // (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+
+-#if defined(OS_MACOSX) || (defined(OS_LINUX) && !defined(OS_CHROMEOS))
++#if defined(OS_MACOSX) || (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ // On Linux returns true iff the real secret key (not hardcoded one) is
+ // available. On MacOS returns true if Keychain is available (for mock
+ // Keychain it returns true if not using locked Keychain, false if using
+@@ -112,7 +112,7 @@ class OSCrypt {
+ DISALLOW_IMPLICIT_CONSTRUCTORS(OSCrypt);
+ };
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ // For unit testing purposes, inject methods to be used.
+ // |get_key_storage_mock| provides the desired |KeyStorage| implementation.
+ // If the provider returns |nullptr|, a hardcoded password will be used.
+@@ -127,6 +127,6 @@ void UseMockKeyStorageForTesting(
+ // Clears any caching and most lazy initialisations performed by the production
+ // code. Should be used after any test which required a password.
+ COMPONENT_EXPORT(OS_CRYPT) void ClearCacheForTesting();
+-#endif // defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#endif // (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+
+ #endif // COMPONENTS_OS_CRYPT_OS_CRYPT_H_
diff --git a/devel/electron5/files/patch-components_os__crypt_os__crypt__unittest.cc b/devel/electron5/files/patch-components_os__crypt_os__crypt__unittest.cc
new file mode 100644
index 000000000000..0e23dc941bd3
--- /dev/null
+++ b/devel/electron5/files/patch-components_os__crypt_os__crypt__unittest.cc
@@ -0,0 +1,11 @@
+--- components/os_crypt/os_crypt_unittest.cc.orig 2019-04-08 08:32:50 UTC
++++ components/os_crypt/os_crypt_unittest.cc
+@@ -18,7 +18,7 @@
+ #include "components/os_crypt/os_crypt_mocker.h"
+ #include "testing/gtest/include/gtest/gtest.h"
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ #include "components/os_crypt/os_crypt_mocker_linux.h"
+ #endif
+
diff --git a/devel/electron5/files/patch-components_plugins_renderer_plugin__placeholder.cc b/devel/electron5/files/patch-components_plugins_renderer_plugin__placeholder.cc
new file mode 100644
index 000000000000..60e5e4137919
--- /dev/null
+++ b/devel/electron5/files/patch-components_plugins_renderer_plugin__placeholder.cc
@@ -0,0 +1,14 @@
+--- components/plugins/renderer/plugin_placeholder.cc.orig 2019-04-08 08:18:18 UTC
++++ components/plugins/renderer/plugin_placeholder.cc
+@@ -17,7 +17,11 @@
+ #include "third_party/blink/public/web/web_plugin_container.h"
+ #include "third_party/blink/public/web/web_script_source.h"
+ #include "third_party/blink/public/web/web_serialized_script_value.h"
++#if defined(OS_BSD)
++#include <re2/re2.h>
++#else
+ #include "third_party/re2/src/re2/re2.h"
++#endif // defined(OS_BSD)
+
+ namespace plugins {
+
diff --git a/devel/electron5/files/patch-components_policy_core_common_cloud_cloud__policy__util.cc b/devel/electron5/files/patch-components_policy_core_common_cloud_cloud__policy__util.cc
new file mode 100644
index 000000000000..f71c490cfad1
--- /dev/null
+++ b/devel/electron5/files/patch-components_policy_core_common_cloud_cloud__policy__util.cc
@@ -0,0 +1,73 @@
+--- components/policy/core/common/cloud/cloud_policy_util.cc.orig 2019-04-08 08:18:18 UTC
++++ components/policy/core/common/cloud/cloud_policy_util.cc
+@@ -16,7 +16,7 @@
+ #include <wincred.h>
+ #endif
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) || defined(OS_MACOSX)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_MACOSX) || defined(OS_BSD)
+ #include <pwd.h>
+ #include <sys/types.h>
+ #include <unistd.h>
+@@ -28,7 +28,7 @@
+ #include <sys/sysctl.h>
+ #endif
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ #include <limits.h> // For HOST_NAME_MAX
+ #endif
+
+@@ -52,7 +52,7 @@
+ #include "base/system/sys_info.h"
+ #endif
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ #include "base/system/sys_info.h"
+ #endif
+
+@@ -61,11 +61,24 @@ namespace policy {
+ namespace em = enterprise_management;
+
+ std::string GetMachineName() {
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS))
+ char hostname[HOST_NAME_MAX];
+ if (gethostname(hostname, HOST_NAME_MAX) == 0) // Success.
+ return hostname;
+ return std::string();
++#elif defined(OS_BSD)
++ long host_name_max = sysconf(_SC_HOST_NAME_MAX);
++ if (host_name_max != -1) {
++ char *hostname = new char[host_name_max + 1]();
++ std::string hostname_r;
++
++ if (gethostname(hostname, host_name_max) == 0)
++ hostname_r = hostname;
++
++ delete[] hostname;
++ return hostname_r;
++ }
++ return std::string();
+ #elif defined(OS_MACOSX)
+ // Do not use NSHost currentHost, as it's very slow. http://crbug.com/138570
+ SCDynamicStoreContext context = {0, NULL, NULL, NULL};
+@@ -111,7 +124,7 @@ std::string GetMachineName() {
+ }
+
+ std::string GetOSVersion() {
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) || defined(OS_MACOSX)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_MACOSX) || defined(OS_BSD)
+ return base::SysInfo::OperatingSystemVersion();
+ #elif defined(OS_WIN)
+ base::win::OSInfo::VersionNumber version_number =
+@@ -134,7 +147,7 @@ std::string GetOSArchitecture() {
+ }
+
+ std::string GetOSUsername() {
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) || defined(OS_MACOSX)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_MACOSX) || defined(OS_BSD)
+ struct passwd* creds = getpwuid(getuid());
+ if (!creds || !creds->pw_name)
+ return std::string();
diff --git a/devel/electron5/files/patch-components_policy_core_common_schema.cc b/devel/electron5/files/patch-components_policy_core_common_schema.cc
new file mode 100644
index 000000000000..2fb2bf60092a
--- /dev/null
+++ b/devel/electron5/files/patch-components_policy_core_common_schema.cc
@@ -0,0 +1,14 @@
+--- components/policy/core/common/schema.cc.orig 2019-04-08 08:32:50 UTC
++++ components/policy/core/common/schema.cc
+@@ -23,7 +23,11 @@
+ #include "base/strings/stringprintf.h"
+ #include "components/policy/core/common/json_schema_constants.h"
+ #include "components/policy/core/common/schema_internal.h"
++#if defined(OS_FREEBSD)
++#include <re2/re2.h>
++#else
+ #include "third_party/re2/src/re2/re2.h"
++#endif
+
+ namespace schema = json_schema_constants;
+
diff --git a/devel/electron5/files/patch-components_policy_resources_policy__templates.json b/devel/electron5/files/patch-components_policy_resources_policy__templates.json
new file mode 100644
index 000000000000..b360320b2344
--- /dev/null
+++ b/devel/electron5/files/patch-components_policy_resources_policy__templates.json
@@ -0,0 +1,83 @@
+--- components/policy/resources/policy_templates.json.orig 2019-04-08 08:32:50 UTC
++++ components/policy/resources/policy_templates.json
+@@ -956,7 +956,7 @@
+ 'name': 'HomepageLocation',
+ 'type': 'string',
+ 'schema': { 'type': 'string' },
+- 'supported_on': ['chrome.*:8-', 'chrome_os:11-'],
++ 'supported_on': ['chrome.*:8-', 'chrome_os:11-', 'chrome.freebsd:9-'],
+ 'features': {
+ 'can_be_recommended': True,
+ 'dynamic_refresh': True,
+@@ -983,7 +983,7 @@
+ 'name': 'HomepageIsNewTabPage',
+ 'type': 'main',
+ 'schema': { 'type': 'boolean' },
+- 'supported_on': ['chrome.*:8-', 'chrome_os:11-'],
++ 'supported_on': ['chrome.*:8-', 'chrome_os:11-', 'chrome.freebsd:9-'],
+ 'features': {
+ 'can_be_recommended': True,
+ 'dynamic_refresh': True,
+@@ -1009,7 +1009,7 @@
+ 'name': 'NewTabPageLocation',
+ 'type': 'string',
+ 'schema': { 'type': 'string' },
+- 'supported_on': ['chrome.*:58-', 'chrome_os:58-'],
++ 'supported_on': ['chrome.*:58-', 'chrome_os:58-', 'chrome.freebsd:9-'],
+ 'features': {
+ 'can_be_recommended': True,
+ 'dynamic_refresh': True,
+@@ -1702,7 +1702,7 @@
+ 'name': 'RemoteAccessHostMatchUsername',
+ 'type': 'main',
+ 'schema': { 'type': 'boolean' },
+- 'supported_on': ['chrome.linux:25-', 'chrome.mac:25-', 'chrome_os:42-'],
++ 'supported_on': ['chrome.linux:25-', 'chrome.mac:25-', 'chrome_os:42-', 'chrome.freebsd:25-'],
+ 'features': {
+ 'dynamic_refresh': True,
+ 'per_profile': False,
+@@ -3192,7 +3192,7 @@
+ 'name': 'GSSAPILibraryName',
+ 'type': 'string',
+ 'schema': { 'type': 'string' },
+- 'supported_on': ['chrome.linux:9-'],
++ 'supported_on': ['chrome.linux:9-', 'chrome.freebsd:9-'],
+ 'features': {
+ 'dynamic_refresh': False,
+ 'per_profile': False,
+@@ -3244,7 +3244,7 @@
+ 'name': 'NtlmV2Enabled',
+ 'type': 'main',
+ 'schema': { 'type': 'boolean' },
+- 'supported_on': ['chrome.linux:63-','chrome.mac:63-','chrome_os:63-','android:63-','webview_android:63-'],
++ 'supported_on': ['chrome.linux:63-','chrome.mac:63-','chrome_os:63-','android:63-','webview_android:63-', 'chrome.freebsd:63-'],
+ 'features': {
+ 'dynamic_refresh': True,
+ 'per_profile': False,
+@@ -6303,7 +6303,7 @@
+ 'name': 'RequireOnlineRevocationChecksForLocalAnchors',
+ 'type': 'main',
+ 'schema': { 'type': 'boolean' },
+- 'supported_on': ['chrome_os:30-', 'chrome.linux:30-', 'chrome.win:30-'],
++ 'supported_on': ['chrome_os:30-', 'chrome.linux:30-', 'chrome.win:30-', 'chrome.freebsd:30-'],
+ 'features': {
+ 'dynamic_refresh': True,
+ 'per_profile': False,
+@@ -7433,7 +7433,7 @@
+ 'name': 'BackgroundModeEnabled',
+ 'type': 'main',
+ 'schema': { 'type': 'boolean' },
+- 'supported_on': ['chrome.win:19-', 'chrome.linux:19-'],
++ 'supported_on': ['chrome.win:19-', 'chrome.linux:19-', 'chrome.freebsd:19-'],
+ 'features': {
+ 'can_be_recommended': True,
+ 'dynamic_refresh': True,
+@@ -7948,7 +7948,7 @@
+ 'name': 'FullscreenAllowed',
+ 'type': 'main',
+ 'schema': { 'type': 'boolean' },
+- 'supported_on': ['chrome.win:31-', 'chrome.linux:31-', 'chrome_os:31-'],
++ 'supported_on': ['chrome.win:31-', 'chrome.linux:31-', 'chrome_os:31-', 'chrome.freebsd:31-'],
+ 'features': {
+ 'dynamic_refresh': True,
+ 'per_profile': True,
diff --git a/devel/electron5/files/patch-components_policy_tools_generate__policy__source.py b/devel/electron5/files/patch-components_policy_tools_generate__policy__source.py
new file mode 100644
index 000000000000..17fd8cafd12a
--- /dev/null
+++ b/devel/electron5/files/patch-components_policy_tools_generate__policy__source.py
@@ -0,0 +1,20 @@
+--- components/policy/tools/generate_policy_source.py.orig 2019-04-08 08:32:51 UTC
++++ components/policy/tools/generate_policy_source.py
+@@ -86,7 +86,7 @@ class PolicyDetails:
+ if platform not in [
+ 'chrome_frame', 'chrome_os', 'android', 'webview_android',
+ 'chrome.win', 'chrome.linux', 'chrome.mac', 'chrome.fuchsia',
+- 'chrome.*'
++ 'chrome.freebsd', 'chrome.*'
+ ]:
+ raise RuntimeError('Platform "%s" is not supported' % platform)
+
+@@ -105,7 +105,7 @@ class PolicyDetails:
+ if platform.startswith('chrome.'):
+ platform_sub = platform[7:]
+ if platform_sub == '*':
+- self.platforms.extend(['win', 'mac', 'linux', 'fuchsia'])
++ self.platforms.extend(['win', 'mac', 'linux', 'fuchsia', 'freebsd'])
+ else:
+ self.platforms.append(platform_sub)
+ else:
diff --git a/devel/electron5/files/patch-components_previews_core_previews__features.cc b/devel/electron5/files/patch-components_previews_core_previews__features.cc
new file mode 100644
index 000000000000..9f49cf55b30e
--- /dev/null
+++ b/devel/electron5/files/patch-components_previews_core_previews__features.cc
@@ -0,0 +1,18 @@
+--- components/previews/core/previews_features.cc.orig 2019-04-08 08:32:51 UTC
++++ components/previews/core/previews_features.cc
+@@ -14,12 +14,12 @@ namespace features {
+ // are enabled are controlled by other features.
+ const base::Feature kPreviews {
+ "Previews",
+-#if defined(OS_ANDROID) || defined(OS_LINUX)
++#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_BSD)
+ // Previews allowed for Android (but also allow on Linux for dev/debug).
+ base::FEATURE_ENABLED_BY_DEFAULT
+-#else // !defined(OS_ANDROID) || defined(OS_LINUX)
++#else // !defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_BSD)
+ base::FEATURE_DISABLED_BY_DEFAULT
+-#endif // defined(OS_ANDROID) || defined(OS_LINUX)
++#endif // defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_BSD)
+ };
+
+ // Enables the Offline previews on android slow connections.
diff --git a/devel/electron5/files/patch-components_services_filesystem_file__system__app.cc b/devel/electron5/files/patch-components_services_filesystem_file__system__app.cc
new file mode 100644
index 000000000000..2eb39ce0d2cd
--- /dev/null
+++ b/devel/electron5/files/patch-components_services_filesystem_file__system__app.cc
@@ -0,0 +1,20 @@
+--- components/services/filesystem/file_system_app.cc.orig 2019-04-08 08:32:51 UTC
++++ components/services/filesystem/file_system_app.cc
+@@ -19,7 +19,7 @@
+ #elif defined(OS_ANDROID)
+ #include "base/base_paths_android.h"
+ #include "base/path_service.h"
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ #include "base/environment.h"
+ #include "base/nix/xdg_util.h"
+ #elif defined(OS_MACOSX)
+@@ -73,7 +73,7 @@ base::FilePath FileSystemApp::GetUserDataDir() {
+ CHECK(base::PathService::Get(base::DIR_APP_DATA, &path));
+ #elif defined(OS_ANDROID)
+ CHECK(base::PathService::Get(base::DIR_ANDROID_APP_DATA, &path));
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ std::unique_ptr<base::Environment> env(base::Environment::Create());
+ path = base::nix::GetXDGDirectory(
+ env.get(), base::nix::kXdgConfigHomeEnvVar, base::nix::kDotConfigDir);
diff --git a/devel/electron5/files/patch-components_services_font_font__service__app.cc b/devel/electron5/files/patch-components_services_font_font__service__app.cc
new file mode 100644
index 000000000000..10043906fb47
--- /dev/null
+++ b/devel/electron5/files/patch-components_services_font_font__service__app.cc
@@ -0,0 +1,11 @@
+--- components/services/font/font_service_app.cc.orig 2019-04-08 08:32:51 UTC
++++ components/services/font/font_service_app.cc
+@@ -20,7 +20,7 @@
+ #include "components/services/font/ppapi_fontconfig_matching.h" // nogncheck
+ #endif
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include "base/test/fontconfig_util_linux.h"
+ #endif
+
diff --git a/devel/electron5/files/patch-components_startup__metric__utils_browser_startup__metric__utils.cc b/devel/electron5/files/patch-components_startup__metric__utils_browser_startup__metric__utils.cc
new file mode 100644
index 000000000000..e3334c5fc472
--- /dev/null
+++ b/devel/electron5/files/patch-components_startup__metric__utils_browser_startup__metric__utils.cc
@@ -0,0 +1,20 @@
+--- components/startup_metric_utils/browser/startup_metric_utils.cc.orig 2019-04-08 08:32:51 UTC
++++ components/startup_metric_utils/browser/startup_metric_utils.cc
+@@ -456,7 +456,7 @@ void AddStartupEventsForTelemetry()
+ // RecordBrowserMainMessageLoopStart, the time since last startup is also logged
+ // to a histogram suffixed with the startup temperature.
+ void RecordTimeSinceLastStartup(PrefService* pref_service) {
+-#if defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_LINUX)
++#if defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD)
+ DCHECK(pref_service);
+
+ // Get the timestamp of the current startup.
+@@ -485,7 +485,7 @@ void RecordTimeSinceLastStartup(PrefService* pref_serv
+ // Write the timestamp of the current startup in |pref_service|.
+ pref_service->SetInt64(prefs::kLastStartupTimestamp,
+ process_start_time.ToInternalValue());
+-#endif // defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_LINUX)
++#endif // defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD)
+ }
+
+ // Logs the Startup.SameVersionStartupCount histogram. Relies on |pref_service|
diff --git a/devel/electron5/files/patch-components_storage__monitor_BUILD.gn b/devel/electron5/files/patch-components_storage__monitor_BUILD.gn
new file mode 100644
index 000000000000..246f01948e98
--- /dev/null
+++ b/devel/electron5/files/patch-components_storage__monitor_BUILD.gn
@@ -0,0 +1,20 @@
+--- components/storage_monitor/BUILD.gn.orig 2019-04-08 08:18:18 UTC
++++ components/storage_monitor/BUILD.gn
+@@ -65,6 +65,17 @@ static_library("storage_monitor") {
+ ]
+ }
+
++ if (is_bsd) {
++ sources -= [
++ "mtab_watcher_linux.cc",
++ "mtab_watcher_linux.h",
++ ]
++ sources += [
++ "storage_monitor_freebsd.cc",
++ "storage_monitor_freebsd.h",
++ ]
++ }
++
+ if (use_udev) {
+ deps += [ "//device/udev_linux" ]
+ } else if (is_linux) {
diff --git a/devel/electron5/files/patch-components_storage__monitor_removable__device__constants.cc b/devel/electron5/files/patch-components_storage__monitor_removable__device__constants.cc
new file mode 100644
index 000000000000..8e3c4f45fabc
--- /dev/null
+++ b/devel/electron5/files/patch-components_storage__monitor_removable__device__constants.cc
@@ -0,0 +1,11 @@
+--- components/storage_monitor/removable_device_constants.cc.orig 2019-04-08 08:18:18 UTC
++++ components/storage_monitor/removable_device_constants.cc
+@@ -10,7 +10,7 @@ namespace storage_monitor {
+ const char kFSUniqueIdPrefix[] = "UUID:";
+ const char kVendorModelSerialPrefix[] = "VendorModelSerial:";
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ const char kVendorModelVolumeStoragePrefix[] = "VendorModelVolumeStorage:";
+ #endif
+
diff --git a/devel/electron5/files/patch-components_storage__monitor_removable__device__constants.h b/devel/electron5/files/patch-components_storage__monitor_removable__device__constants.h
new file mode 100644
index 000000000000..a8ced84a6840
--- /dev/null
+++ b/devel/electron5/files/patch-components_storage__monitor_removable__device__constants.h
@@ -0,0 +1,11 @@
+--- components/storage_monitor/removable_device_constants.h.orig 2019-04-08 08:18:18 UTC
++++ components/storage_monitor/removable_device_constants.h
+@@ -15,7 +15,7 @@ namespace storage_monitor {
+ extern const char kFSUniqueIdPrefix[];
+ extern const char kVendorModelSerialPrefix[];
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ extern const char kVendorModelVolumeStoragePrefix[];
+ #endif
+
diff --git a/devel/electron5/files/patch-components_storage__monitor_storage__monitor__freebsd.cc b/devel/electron5/files/patch-components_storage__monitor_storage__monitor__freebsd.cc
new file mode 100644
index 000000000000..a39e5b9a0831
--- /dev/null
+++ b/devel/electron5/files/patch-components_storage__monitor_storage__monitor__freebsd.cc
@@ -0,0 +1,57 @@
+--- components/storage_monitor/storage_monitor_freebsd.cc.orig 2019-04-09 12:48:46 UTC
++++ components/storage_monitor/storage_monitor_freebsd.cc
+@@ -0,0 +1,54 @@
++// Copyright 2014 The Chromium Authors. All rights reserved.
++// Use of this source code is governed by a BSD-style license that can be
++// found in the LICENSE file.
++
++// StorageMonitorFreeBSD implementation.
++
++#include "components/storage_monitor/storage_monitor_freebsd.h"
++
++#include <stdio.h>
++
++#include <list>
++
++#include "base/bind.h"
++#include "base/metrics/histogram.h"
++#include "base/process/kill.h"
++#include "base/process/launch.h"
++#include "base/stl_util.h"
++#include "base/strings/string_number_conversions.h"
++#include "base/strings/string_util.h"
++#include "base/strings/utf_string_conversions.h"
++#include "components/storage_monitor/media_storage_util.h"
++#include "components/storage_monitor/removable_device_constants.h"
++#include "components/storage_monitor/storage_info.h"
++
++using content::BrowserThread;
++
++namespace storage_monitor {
++
++namespace {
++
++} // namespace
++
++StorageMonitorFreeBSD::StorageMonitorFreeBSD() {
++ DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
++}
++
++StorageMonitorFreeBSD::~StorageMonitorFreeBSD() {
++ DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
++}
++
++void StorageMonitorFreeBSD::Init() {
++}
++
++bool StorageMonitorFreeBSD::GetStorageInfoForPath(
++ const base::FilePath& path,
++ StorageInfo* device_info) const {
++ return false; // TODO
++}
++
++StorageMonitor* StorageMonitor::CreateInternal() {
++ return new StorageMonitorFreeBSD();
++}
++
++} // namespace storage_monitor
diff --git a/devel/electron5/files/patch-components_storage__monitor_storage__monitor__freebsd.h b/devel/electron5/files/patch-components_storage__monitor_storage__monitor__freebsd.h
new file mode 100644
index 000000000000..0b301a208cd9
--- /dev/null
+++ b/devel/electron5/files/patch-components_storage__monitor_storage__monitor__freebsd.h
@@ -0,0 +1,48 @@
+--- components/storage_monitor/storage_monitor_freebsd.h.orig 2019-04-09 12:48:46 UTC
++++ components/storage_monitor/storage_monitor_freebsd.h
+@@ -0,0 +1,45 @@
++// Copyright 2014 The Chromium Authors. All rights reserved.
++// Use of this source code is governed by a BSD-style license that can be
++// found in the LICENSE file.
++
++// StorageMonitorFreeBSD processes mount point change events, notifies listeners
++// about the addition and deletion of media devices, and answers queries about
++// mounted devices.
++// StorageMonitorFreeBSD lives on the UI thread, and uses ???
++// the FILE thread to get mount point change events.
++
++#ifndef COMPONENTS_STORAGE_MONITOR_STORAGE_MONITOR_FREEBSD_H_
++#define COMPONENTS_STORAGE_MONITOR_STORAGE_MONITOR_FREEBSD_H_
++
++#include <map>
++#include <string>
++
++#include "base/compiler_specific.h"
++#include "base/files/file_path.h"
++#include "base/files/file_path_watcher.h"
++#include "base/memory/weak_ptr.h"
++#include "components/storage_monitor/storage_monitor.h"
++#include "content/public/browser/browser_thread.h"
++
++namespace storage_monitor {
++
++class StorageMonitorFreeBSD : public StorageMonitor {
++ public:
++ // Should only be called by browser start up code.
++ // Use StorageMonitor::GetInstance() instead.
++ explicit StorageMonitorFreeBSD();
++ virtual ~StorageMonitorFreeBSD();
++
++ // Must be called for StorageMonitorFreeBSD to work.
++ virtual void Init() override;
++ private:
++ // StorageMonitor implementation.
++ virtual bool GetStorageInfoForPath(const base::FilePath& path,
++ StorageInfo* device_info) const override;
++
++ DISALLOW_COPY_AND_ASSIGN(StorageMonitorFreeBSD);
++};
++
++} // namespace storage_monitor
++
++#endif // COMPONENTS_STORAGE_MONITOR_STORAGE_MONITOR_FREEBSD_H_
diff --git a/devel/electron5/files/patch-components_sync_base_get__session__name.cc b/devel/electron5/files/patch-components_sync_base_get__session__name.cc
new file mode 100644
index 000000000000..457a8ff7aba8
--- /dev/null
+++ b/devel/electron5/files/patch-components_sync_base_get__session__name.cc
@@ -0,0 +1,20 @@
+--- components/sync/base/get_session_name.cc.orig 2019-04-08 08:32:52 UTC
++++ components/sync/base/get_session_name.cc
+@@ -17,7 +17,7 @@
+
+ #if defined(OS_CHROMEOS)
+ #include "chromeos/constants/devicetype.h"
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ #include "components/sync/base/get_session_name_linux.h"
+ #elif defined(OS_IOS)
+ #include "components/sync/base/get_session_name_ios.h"
+@@ -52,7 +52,7 @@ std::string GetSessionNameBlocking() {
+ session_name = "Chromebook";
+ break;
+ }
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ session_name = internal::GetHostname();
+ #elif defined(OS_IOS)
+ session_name = internal::GetComputerName();
diff --git a/devel/electron5/files/patch-components_sync_base_get__session__name__linux.cc b/devel/electron5/files/patch-components_sync_base_get__session__name__linux.cc
new file mode 100644
index 000000000000..2f447c6d116c
--- /dev/null
+++ b/devel/electron5/files/patch-components_sync_base_get__session__name__linux.cc
@@ -0,0 +1,14 @@
+--- components/sync/base/get_session_name_linux.cc.orig 2019-04-08 08:18:18 UTC
++++ components/sync/base/get_session_name_linux.cc
+@@ -13,8 +13,9 @@ namespace syncer {
+ namespace internal {
+
+ std::string GetHostname() {
+- char hostname[HOST_NAME_MAX];
+- if (gethostname(hostname, HOST_NAME_MAX) == 0) // Success.
++ int len = sysconf(_SC_HOST_NAME_MAX);
++ char hostname[len];
++ if (gethostname(hostname, len) == 0) // Success.
+ return hostname;
+ return base::GetLinuxDistro();
+ }
diff --git a/devel/electron5/files/patch-components_sync_device__info_local__device__info__provider__impl.cc b/devel/electron5/files/patch-components_sync_device__info_local__device__info__provider__impl.cc
new file mode 100644
index 000000000000..c0bf786fda9d
--- /dev/null
+++ b/devel/electron5/files/patch-components_sync_device__info_local__device__info__provider__impl.cc
@@ -0,0 +1,11 @@
+--- components/sync/device_info/local_device_info_provider_impl.cc.orig 2019-04-08 08:32:52 UTC
++++ components/sync/device_info/local_device_info_provider_impl.cc
+@@ -15,7 +15,7 @@ namespace {
+ sync_pb::SyncEnums::DeviceType GetLocalDeviceType(bool is_tablet) {
+ #if defined(OS_CHROMEOS)
+ return sync_pb::SyncEnums_DeviceType_TYPE_CROS;
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ return sync_pb::SyncEnums_DeviceType_TYPE_LINUX;
+ #elif defined(OS_ANDROID) || defined(OS_IOS)
+ return is_tablet ? sync_pb::SyncEnums_DeviceType_TYPE_TABLET
diff --git a/devel/electron5/files/patch-components_update__client_update__query__params.cc b/devel/electron5/files/patch-components_update__client_update__query__params.cc
new file mode 100644
index 000000000000..d3d51d838078
--- /dev/null
+++ b/devel/electron5/files/patch-components_update__client_update__query__params.cc
@@ -0,0 +1,11 @@
+--- components/update_client/update_query_params.cc.orig 2019-04-08 08:32:52 UTC
++++ components/update_client/update_query_params.cc
+@@ -38,6 +38,8 @@ const char kOs[] =
+ "fuchsia";
+ #elif defined(OS_OPENBSD)
+ "openbsd";
++#elif defined(OS_FREEBSD)
++ "freebsd";
+ #else
+ #error "unknown os"
+ #endif
diff --git a/devel/electron5/files/patch-components_url__matcher_regex__set__matcher.cc b/devel/electron5/files/patch-components_url__matcher_regex__set__matcher.cc
new file mode 100644
index 000000000000..bfdbfff020ca
--- /dev/null
+++ b/devel/electron5/files/patch-components_url__matcher_regex__set__matcher.cc
@@ -0,0 +1,16 @@
+--- components/url_matcher/regex_set_matcher.cc.orig 2019-04-08 08:18:18 UTC
++++ components/url_matcher/regex_set_matcher.cc
+@@ -11,8 +11,13 @@
+ #include "base/logging.h"
+ #include "base/strings/string_util.h"
+ #include "components/url_matcher/substring_set_matcher.h"
++#if defined(OS_BSD)
++#include <re2/filtered_re2.h>
++#include <re2/re2.h>
++#else
+ #include "third_party/re2/src/re2/filtered_re2.h"
+ #include "third_party/re2/src/re2/re2.h"
++#endif
+
+ namespace url_matcher {
+
diff --git a/devel/electron5/files/patch-components_url__matcher_url__matcher__factory.cc b/devel/electron5/files/patch-components_url__matcher_url__matcher__factory.cc
new file mode 100644
index 000000000000..851085a479aa
--- /dev/null
+++ b/devel/electron5/files/patch-components_url__matcher_url__matcher__factory.cc
@@ -0,0 +1,14 @@
+--- components/url_matcher/url_matcher_factory.cc.orig 2019-04-08 08:18:18 UTC
++++ components/url_matcher/url_matcher_factory.cc
+@@ -16,7 +16,11 @@
+ #include "base/values.h"
+ #include "components/url_matcher/url_matcher_constants.h"
+ #include "components/url_matcher/url_matcher_helpers.h"
++#if defined(OS_BSD)
++#include <re2/re2.h>
++#else
+ #include "third_party/re2/src/re2/re2.h"
++#endif
+
+ namespace url_matcher {
+
diff --git a/devel/electron5/files/patch-components_webcrypto_algorithms_test__helpers.cc b/devel/electron5/files/patch-components_webcrypto_algorithms_test__helpers.cc
new file mode 100644
index 000000000000..04bf4e642ba7
--- /dev/null
+++ b/devel/electron5/files/patch-components_webcrypto_algorithms_test__helpers.cc
@@ -0,0 +1,14 @@
+--- components/webcrypto/algorithms/test_helpers.cc.orig 2019-04-08 08:32:53 UTC
++++ components/webcrypto/algorithms/test_helpers.cc
+@@ -25,7 +25,11 @@
+ #include "components/webcrypto/status.h"
+ #include "third_party/blink/public/platform/web_crypto_algorithm_params.h"
+ #include "third_party/blink/public/platform/web_crypto_key_algorithm.h"
++#if defined(OS_BSD)
++#include <re2/re2.h>
++#else
+ #include "third_party/re2/src/re2/re2.h"
++#endif
+
+ namespace webcrypto {
+
diff --git a/devel/electron5/files/patch-content_app_content__main__runner__impl.cc b/devel/electron5/files/patch-content_app_content__main__runner__impl.cc
new file mode 100644
index 000000000000..8497a70a3d28
--- /dev/null
+++ b/devel/electron5/files/patch-content_app_content__main__runner__impl.cc
@@ -0,0 +1,73 @@
+--- content/app/content_main_runner_impl.cc.orig 2019-04-09 12:48:20 UTC
++++ content/app/content_main_runner_impl.cc
+@@ -93,17 +93,17 @@
+ #include "base/posix/global_descriptors.h"
+ #include "content/public/common/content_descriptors.h"
+
+-#if !defined(OS_MACOSX)
++#if !defined(OS_MACOSX) && !defined(OS_BSD)
+ #include "services/service_manager/zygote/common/zygote_fork_delegate_linux.h"
+ #endif
+-#if !defined(OS_MACOSX) && !defined(OS_ANDROID)
++#if !defined(OS_MACOSX) && !defined(OS_ANDROID) && !defined(OS_BSD)
+ #include "sandbox/linux/services/libc_interceptor.h"
+ #include "services/service_manager/zygote/zygote_main.h"
+ #endif
+
+ #endif // OS_POSIX || OS_FUCHSIA
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include "base/native_library.h"
+ #include "base/rand_util.h"
+ #include "services/service_manager/zygote/common/common_sandbox_support_linux.h"
+@@ -124,7 +124,7 @@
+ #include "content/public/common/content_client.h"
+ #endif
+
+-#endif // OS_LINUX
++#endif // OS_LINUX || defined(OS_BSD)
+
+ #if !defined(CHROME_MULTIPLE_DLL_BROWSER)
+ #include "content/child/field_trial.h"
+@@ -309,7 +309,7 @@ void InitializeZygoteSandboxForBrowserProcess(
+ }
+ #endif // BUILDFLAG(USE_ZYGOTE_HANDLE)
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+
+ #if BUILDFLAG(ENABLE_PLUGINS)
+ // Loads the (native) libraries but does not initialize them (i.e., does not
+@@ -406,7 +406,7 @@ void PreSandboxInit() {
+ }
+ #endif // BUILDFLAG(USE_ZYGOTE_HANDLE)
+
+-#endif // OS_LINUX
++#endif // OS_LINUX || OS_BSD
+
+ } // namespace
+
+@@ -464,7 +464,7 @@ int RunZygote(ContentMainDelegate* delegate) {
+ delegate->ZygoteStarting(&zygote_fork_delegates);
+ media::InitializeMediaLibrary();
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ PreSandboxInit();
+ #endif
+
+@@ -637,11 +637,11 @@ int ContentMainRunnerImpl::Initialize(const ContentMai
+ base::GlobalDescriptors::kBaseDescriptor);
+ #endif // !OS_ANDROID
+
+-#if defined(OS_LINUX) || defined(OS_OPENBSD)
++#if defined(OS_LINUX)
+ g_fds->Set(service_manager::kCrashDumpSignal,
+ service_manager::kCrashDumpSignal +
+ base::GlobalDescriptors::kBaseDescriptor);
+-#endif // OS_LINUX || OS_OPENBSD
++#endif // OS_LINUX
+
+ #endif // !OS_WIN
+
diff --git a/devel/electron5/files/patch-content_browser_BUILD.gn b/devel/electron5/files/patch-content_browser_BUILD.gn
new file mode 100644
index 000000000000..4fca3c5fa7ba
--- /dev/null
+++ b/devel/electron5/files/patch-content_browser_BUILD.gn
@@ -0,0 +1,14 @@
+--- content/browser/BUILD.gn.orig 2019-04-08 08:32:53 UTC
++++ content/browser/BUILD.gn
+@@ -1939,11 +1939,6 @@ jumbo_source_set("browser") {
+ "tracing/cros_tracing_agent.h",
+ ]
+ deps += [ "//chromeos/resources" ]
+- } else {
+- sources += [
+- "memory/memory_monitor_linux.cc",
+- "memory/memory_monitor_linux.h",
+- ]
+ }
+
+ if (is_chromeos || is_android || is_chromecast) {
diff --git a/devel/electron5/files/patch-content_browser_browser__main__loop.cc b/devel/electron5/files/patch-content_browser_browser__main__loop.cc
new file mode 100644
index 000000000000..9b715ca09eb2
--- /dev/null
+++ b/devel/electron5/files/patch-content_browser_browser__main__loop.cc
@@ -0,0 +1,46 @@
+--- content/browser/browser_main_loop.cc.orig 2019-04-09 12:48:20 UTC
++++ content/browser/browser_main_loop.cc
+@@ -250,6 +250,13 @@
+ #include "mojo/public/cpp/bindings/lib/test_random_mojo_delays.h"
+ #endif
+
++#if defined(OS_BSD)
++#include "content/browser/sandbox_host_linux.h"
++#include "services/service_manager/zygote/common/common_sandbox_support_linux.h"
++#include "content/public/common/common_sandbox_support_linux.h"
++#include "services/service_manager/sandbox/sandbox.h"
++#endif
++
+ // One of the linux specific headers defines this as a macro.
+ #ifdef DestroyAll
+ #undef DestroyAll
+@@ -585,6 +592,11 @@ int BrowserMainLoop::EarlyInitialization() {
+ // by now since a thread to start the ServiceManager has been created
+ // before the browser main loop starts.
+ DCHECK(SandboxHostLinux::GetInstance()->IsInitialized());
++#elif defined(OS_BSD)
++ SandboxHostLinux::GetInstance()->Init();
++ base::FileHandleMappingVector fds_to_map;
++ const int sfd = SandboxHostLinux::GetInstance()->GetChildSocket();
++ fds_to_map.push_back(std::make_pair(sfd, service_manager::GetSandboxFD()));
+ #endif
+
+ #if defined(USE_X11)
+@@ -629,7 +641,7 @@ int BrowserMainLoop::EarlyInitialization() {
+ #endif // defined(OS_ANDROID) || defined(OS_CHROMEOS)
+
+ #if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_CHROMEOS) || \
+- defined(OS_ANDROID)
++ defined(OS_ANDROID) || defined(OS_BSD)
+ // We use quite a few file descriptors for our IPC as well as disk the disk
+ // cache,and the default limit on the Mac is low (256), so bump it up.
+
+@@ -639,7 +651,7 @@ int BrowserMainLoop::EarlyInitialization() {
+ // an arbitrarily high number. See https://crbug.com/539567
+ base::IncreaseFdLimitTo(8192);
+ #endif // defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_CHROMEOS) ||
+- // defined(OS_ANDROID)
++ // defined(OS_ANDROID) || defined(OS_BSD)
+
+ #if defined(OS_WIN)
+ net::EnsureWinsockInit();
diff --git a/devel/electron5/files/patch-content_browser_child__process__launcher__helper__linux.cc b/devel/electron5/files/patch-content_browser_child__process__launcher__helper__linux.cc
new file mode 100644
index 000000000000..fc75b91a8681
--- /dev/null
+++ b/devel/electron5/files/patch-content_browser_child__process__launcher__helper__linux.cc
@@ -0,0 +1,76 @@
+--- content/browser/child_process_launcher_helper_linux.cc.orig 2019-04-08 08:32:53 UTC
++++ content/browser/child_process_launcher_helper_linux.cc
+@@ -17,7 +17,9 @@
+ #include "content/public/common/sandboxed_process_launcher_delegate.h"
+ #include "services/service_manager/sandbox/linux/sandbox_linux.h"
+ #include "services/service_manager/zygote/common/common_sandbox_support_linux.h"
++#if !defined(OS_BSD)
+ #include "services/service_manager/zygote/common/zygote_handle.h"
++#endif
+ #include "services/service_manager/zygote/host/zygote_communication_linux.h"
+ #include "services/service_manager/zygote/host/zygote_host_impl_linux.h"
+
+@@ -69,6 +71,7 @@ ChildProcessLauncherHelper::LaunchProcessOnLauncherThr
+ int* launch_result) {
+ *is_synchronous_launch = true;
+
++#if !defined(OS_BSD)
+ service_manager::ZygoteHandle zygote_handle =
+ base::CommandLine::ForCurrentProcess()->HasSwitch(switches::kNoZygote)
+ ? nullptr
+@@ -82,7 +85,6 @@ ChildProcessLauncherHelper::LaunchProcessOnLauncherThr
+ GetProcessType());
+ *launch_result = LAUNCH_RESULT_SUCCESS;
+
+-#if !defined(OS_OPENBSD)
+ if (handle) {
+ // This is just a starting score for a renderer or extension (the
+ // only types of processes that will be started this way). It will
+@@ -93,13 +95,13 @@ ChildProcessLauncherHelper::LaunchProcessOnLauncherThr
+ service_manager::ZygoteHostImpl::GetInstance()->AdjustRendererOOMScore(
+ handle, kLowestRendererOomScore);
+ }
+-#endif
+
+ Process process;
+ process.process = base::Process(handle);
+ process.zygote = zygote_handle;
+ return process;
+ }
++#endif
+
+ Process process;
+ process.process = base::LaunchProcess(*command_line(), options);
+@@ -117,10 +119,14 @@ ChildProcessTerminationInfo ChildProcessLauncherHelper
+ const ChildProcessLauncherHelper::Process& process,
+ bool known_dead) {
+ ChildProcessTerminationInfo info;
++#if !defined(OS_BSD)
+ if (process.zygote) {
+ info.status = process.zygote->GetTerminationStatus(
+ process.process.Handle(), known_dead, &info.exit_code);
+ } else if (known_dead) {
++#else
++ if (known_dead) {
++#endif
+ info.status = base::GetKnownDeadTerminationStatus(process.process.Handle(),
+ &info.exit_code);
+ } else {
+@@ -144,13 +150,17 @@ void ChildProcessLauncherHelper::ForceNormalProcessTer
+ DCHECK(CurrentlyOnProcessLauncherTaskRunner());
+ process.process.Terminate(service_manager::RESULT_CODE_NORMAL_EXIT, false);
+ // On POSIX, we must additionally reap the child.
++#if !defined(OS_BSD)
+ if (process.zygote) {
+ // If the renderer was created via a zygote, we have to proxy the reaping
+ // through the zygote process.
+ process.zygote->EnsureProcessTerminated(process.process.Handle());
+ } else {
++#endif
+ base::EnsureProcessTerminated(std::move(process.process));
++#if !defined(OS_BSD)
+ }
++#endif
+ }
+
+ void ChildProcessLauncherHelper::SetProcessPriorityOnLauncherThread(
diff --git a/devel/electron5/files/patch-content_browser_media_media__internals.cc b/devel/electron5/files/patch-content_browser_media_media__internals.cc
new file mode 100644
index 000000000000..a2523c0ceef1
--- /dev/null
+++ b/devel/electron5/files/patch-content_browser_media_media__internals.cc
@@ -0,0 +1,11 @@
+--- content/browser/media/media_internals.cc.orig 2019-04-08 08:32:54 UTC
++++ content/browser/media/media_internals.cc
+@@ -763,7 +763,7 @@ void MediaInternals::UpdateVideoCaptureDeviceCapabilit
+ device_dict->SetString("name", descriptor.GetNameAndModel());
+ device_dict->Set("formats", std::move(format_list));
+ #if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || \
+- defined(OS_ANDROID)
++ defined(OS_ANDROID) || defined(OS_BSD)
+ device_dict->SetString("captureApi", descriptor.GetCaptureApiTypeString());
+ #endif
+ video_capture_capabilities_cached_data_.Append(std::move(device_dict));
diff --git a/devel/electron5/files/patch-content_browser_memory_memory__monitor.cc b/devel/electron5/files/patch-content_browser_memory_memory__monitor.cc
new file mode 100644
index 000000000000..442d814f3bc2
--- /dev/null
+++ b/devel/electron5/files/patch-content_browser_memory_memory__monitor.cc
@@ -0,0 +1,11 @@
+--- content/browser/memory/memory_monitor.cc.orig 2019-04-08 08:18:19 UTC
++++ content/browser/memory/memory_monitor.cc
+@@ -22,7 +22,7 @@ void MemoryMonitorDelegate::GetSystemMemoryInfo(
+ base::GetSystemMemoryInfo(mem_info);
+ }
+
+-#if defined(OS_MACOSX)
++#if defined(OS_MACOSX) || defined(OS_BSD)
+ // TODO(bashi,bcwhite): Remove when memory monitor for mac is available.
+ std::unique_ptr<MemoryMonitor> CreateMemoryMonitor() {
+ NOTREACHED();
diff --git a/devel/electron5/files/patch-content_browser_memory_swap__metrics__driver__impl__linux.cc b/devel/electron5/files/patch-content_browser_memory_swap__metrics__driver__impl__linux.cc
new file mode 100644
index 000000000000..a1531915b262
--- /dev/null
+++ b/devel/electron5/files/patch-content_browser_memory_swap__metrics__driver__impl__linux.cc
@@ -0,0 +1,27 @@
+--- content/browser/memory/swap_metrics_driver_impl_linux.cc.orig 2019-04-08 08:18:19 UTC
++++ content/browser/memory/swap_metrics_driver_impl_linux.cc
+@@ -43,6 +43,7 @@ SwapMetricsDriverImplLinux::~SwapMetricsDriverImplLinu
+
+ SwapMetricsDriver::SwapMetricsUpdateResult
+ SwapMetricsDriverImplLinux::UpdateMetricsInternal(base::TimeDelta interval) {
++#if !defined(OS_BSD)
+ base::VmStatInfo vmstat;
+ if (!base::GetVmStatInfo(&vmstat)) {
+ return SwapMetricsDriver::SwapMetricsUpdateResult::kSwapMetricsUpdateFailed;
+@@ -55,12 +56,15 @@ SwapMetricsDriverImplLinux::UpdateMetricsInternal(base
+
+ if (interval.is_zero())
+ return SwapMetricsDriver::SwapMetricsUpdateResult::
+- kSwapMetricsUpdateSuccess;
++ kSwapMetricsUpdateSuccess;
+
+ delegate_->OnSwapInCount(in_counts, interval);
+ delegate_->OnSwapOutCount(out_counts, interval);
+
+ return SwapMetricsDriver::SwapMetricsUpdateResult::kSwapMetricsUpdateSuccess;
++#else
++ return SwapMetricsDriver::SwapMetricsUpdateResult::kSwapMetricsUpdateFailed;
++#endif
+ }
+
+ } // namespace content
diff --git a/devel/electron5/files/patch-content_browser_renderer__host_input_input__device__change__observer.cc b/devel/electron5/files/patch-content_browser_renderer__host_input_input__device__change__observer.cc
new file mode 100644
index 000000000000..173633245d7b
--- /dev/null
+++ b/devel/electron5/files/patch-content_browser_renderer__host_input_input__device__change__observer.cc
@@ -0,0 +1,29 @@
+--- content/browser/renderer_host/input/input_device_change_observer.cc.orig 2019-04-08 08:18:19 UTC
++++ content/browser/renderer_host/input/input_device_change_observer.cc
+@@ -10,7 +10,7 @@
+
+ #if defined(OS_WIN)
+ #include "ui/events/devices/input_device_observer_win.h"
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ #include "ui/events/devices/input_device_manager.h"
+ #elif defined(OS_ANDROID)
+ #include "ui/events/devices/input_device_observer_android.h"
+@@ -22,7 +22,7 @@ InputDeviceChangeObserver::InputDeviceChangeObserver(R
+ render_view_host_impl_ = rvhi;
+ #if defined(OS_WIN)
+ ui::InputDeviceObserverWin::GetInstance()->AddObserver(this);
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ ui::InputDeviceManager::GetInstance()->AddObserver(this);
+ #elif defined(OS_ANDROID)
+ ui::InputDeviceObserverAndroid::GetInstance()->AddObserver(this);
+@@ -32,7 +32,7 @@ InputDeviceChangeObserver::InputDeviceChangeObserver(R
+ InputDeviceChangeObserver::~InputDeviceChangeObserver() {
+ #if defined(OS_WIN)
+ ui::InputDeviceObserverWin::GetInstance()->RemoveObserver(this);
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ ui::InputDeviceManager::GetInstance()->RemoveObserver(this);
+ #elif defined(OS_ANDROID)
+ ui::InputDeviceObserverAndroid::GetInstance()->RemoveObserver(this);
diff --git a/devel/electron5/files/patch-content_browser_renderer__host_render__message__filter.cc b/devel/electron5/files/patch-content_browser_renderer__host_render__message__filter.cc
new file mode 100644
index 000000000000..3673a9721890
--- /dev/null
+++ b/devel/electron5/files/patch-content_browser_renderer__host_render__message__filter.cc
@@ -0,0 +1,29 @@
+--- content/browser/renderer_host/render_message_filter.cc.orig 2019-04-08 08:18:19 UTC
++++ content/browser/renderer_host/render_message_filter.cc
+@@ -71,7 +71,7 @@
+ #if defined(OS_MACOSX)
+ #include "ui/accelerated_widget_mac/window_resize_helper_mac.h"
+ #endif
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include "base/linux_util.h"
+ #include "base/threading/platform_thread.h"
+ #endif
+@@ -151,7 +151,7 @@ void RenderMessageFilter::CreateFullscreenWidget(
+ std::move(callback).Run(route_id);
+ }
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ void RenderMessageFilter::SetThreadPriorityOnFileThread(
+ base::PlatformThreadId ns_tid,
+ base::ThreadPriority priority) {
+@@ -172,7 +172,7 @@ void RenderMessageFilter::SetThreadPriorityOnFileThrea
+ }
+ #endif
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ void RenderMessageFilter::SetThreadPriority(int32_t ns_tid,
+ base::ThreadPriority priority) {
+ constexpr base::TaskTraits kTraits = {
diff --git a/devel/electron5/files/patch-content_browser_renderer__host_render__message__filter.h b/devel/electron5/files/patch-content_browser_renderer__host_render__message__filter.h
new file mode 100644
index 000000000000..bf67c7d20ae8
--- /dev/null
+++ b/devel/electron5/files/patch-content_browser_renderer__host_render__message__filter.h
@@ -0,0 +1,19 @@
+--- content/browser/renderer_host/render_message_filter.h.orig 2019-04-08 08:18:19 UTC
++++ content/browser/renderer_host/render_message_filter.h
+@@ -87,14 +87,14 @@ class CONTENT_EXPORT RenderMessageFilter
+ mojom::WidgetPtr widget,
+ CreateFullscreenWidgetCallback callback) override;
+ void HasGpuProcess(HasGpuProcessCallback callback) override;
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ void SetThreadPriority(int32_t ns_tid,
+ base::ThreadPriority priority) override;
+ #endif
+
+ void OnResolveProxy(const GURL& url, IPC::Message* reply_msg);
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ void SetThreadPriorityOnFileThread(base::PlatformThreadId ns_tid,
+ base::ThreadPriority priority);
+ #endif
diff --git a/devel/electron5/files/patch-content_browser_renderer__host_render__process__host__impl.h b/devel/electron5/files/patch-content_browser_renderer__host_render__process__host__impl.h
new file mode 100644
index 000000000000..5c58b7351ead
--- /dev/null
+++ b/devel/electron5/files/patch-content_browser_renderer__host_render__process__host__impl.h
@@ -0,0 +1,15 @@
+--- content/browser/renderer_host/render_process_host_impl.h.orig 2019-04-08 08:32:54 UTC
++++ content/browser/renderer_host/render_process_host_impl.h
+@@ -407,10 +407,10 @@ class CONTENT_EXPORT RenderProcessHostImpl
+ is_for_guests_only_ = is_for_guests_only;
+ }
+
+-#if defined(OS_POSIX) && !defined(OS_ANDROID) && !defined(OS_MACOSX)
++#if defined(OS_POSIX) && !defined(OS_ANDROID) && !defined(OS_MACOSX) && !defined(OS_BSD)
+ // Launch the zygote early in the browser startup.
+ static void EarlyZygoteLaunch();
+-#endif // defined(OS_POSIX) && !defined(OS_ANDROID) && !defined(OS_MACOSX)
++#endif // defined(OS_POSIX) && !defined(OS_ANDROID) && !defined(OS_MACOSX) && !defined(OS_BSD)
+
+ RendererAudioOutputStreamFactoryContext*
+ GetRendererAudioOutputStreamFactoryContext() override;
diff --git a/devel/electron5/files/patch-content_browser_renderer__host_render__view__host__impl.cc b/devel/electron5/files/patch-content_browser_renderer__host_render__view__host__impl.cc
new file mode 100644
index 000000000000..303aab716e04
--- /dev/null
+++ b/devel/electron5/files/patch-content_browser_renderer__host_render__view__host__impl.cc
@@ -0,0 +1,11 @@
+--- content/browser/renderer_host/render_view_host_impl.cc.orig 2019-04-08 08:32:54 UTC
++++ content/browser/renderer_host/render_view_host_impl.cc
+@@ -161,7 +161,7 @@ void GetPlatformSpecificPrefs(RendererPreferences* pre
+ display::win::ScreenWin::GetSystemMetricsInDIP(SM_CYVSCROLL);
+ prefs->arrow_bitmap_width_horizontal_scroll_bar_in_dips =
+ display::win::ScreenWin::GetSystemMetricsInDIP(SM_CXHSCROLL);
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ prefs->system_font_family_name = gfx::Font().GetFontName();
+ #endif
+ }
diff --git a/devel/electron5/files/patch-content_browser_renderer__host_render__widget__host__view__aura.cc b/devel/electron5/files/patch-content_browser_renderer__host_render__widget__host__view__aura.cc
new file mode 100644
index 000000000000..012854ec2417
--- /dev/null
+++ b/devel/electron5/files/patch-content_browser_renderer__host_render__widget__host__view__aura.cc
@@ -0,0 +1,29 @@
+--- content/browser/renderer_host/render_widget_host_view_aura.cc.orig 2019-04-08 08:32:54 UTC
++++ content/browser/renderer_host/render_widget_host_view_aura.cc
+@@ -121,7 +121,7 @@
+ #include "content/browser/accessibility/browser_accessibility_auralinux.h"
+ #endif
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS)
+ #include "ui/base/ime/linux/text_edit_command_auralinux.h"
+ #include "ui/base/ime/linux/text_edit_key_bindings_delegate_auralinux.h"
+ #endif
+@@ -2192,7 +2192,7 @@ bool RenderWidgetHostViewAura::NeedsInputGrab() {
+ }
+
+ bool RenderWidgetHostViewAura::NeedsMouseCapture() {
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS)
+ return NeedsInputGrab();
+ #endif
+ return false;
+@@ -2390,7 +2390,7 @@ void RenderWidgetHostViewAura::ForwardKeyboardEventWit
+ if (!target_host)
+ return;
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS)
+ ui::TextEditKeyBindingsDelegateAuraLinux* keybinding_delegate =
+ ui::GetTextEditKeyBindingsDelegate();
+ std::vector<ui::TextEditCommandAuraLinux> commands;
diff --git a/devel/electron5/files/patch-content_browser_renderer__host_render__widget__host__view__event__handler.cc b/devel/electron5/files/patch-content_browser_renderer__host_render__widget__host__view__event__handler.cc
new file mode 100644
index 000000000000..e4ae33552531
--- /dev/null
+++ b/devel/electron5/files/patch-content_browser_renderer__host_render__widget__host__view__event__handler.cc
@@ -0,0 +1,11 @@
+--- content/browser/renderer_host/render_widget_host_view_event_handler.cc.orig 2019-04-08 08:18:19 UTC
++++ content/browser/renderer_host/render_widget_host_view_event_handler.cc
+@@ -608,7 +608,7 @@ bool RenderWidgetHostViewEventHandler::CanRendererHand
+ if (event->type() == ui::ET_MOUSE_EXITED) {
+ if (mouse_locked || selection_popup)
+ return false;
+-#if defined(OS_WIN) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD)
+ // Don't forward the mouse leave message which is received when the context
+ // menu is displayed by the page. This confuses the page and causes state
+ // changes.
diff --git a/devel/electron5/files/patch-content_browser_scheduler_responsiveness_native__event__observer.cc b/devel/electron5/files/patch-content_browser_scheduler_responsiveness_native__event__observer.cc
new file mode 100644
index 000000000000..1319ffd70470
--- /dev/null
+++ b/devel/electron5/files/patch-content_browser_scheduler_responsiveness_native__event__observer.cc
@@ -0,0 +1,29 @@
+--- content/browser/scheduler/responsiveness/native_event_observer.cc.orig 2019-04-08 08:18:19 UTC
++++ content/browser/scheduler/responsiveness/native_event_observer.cc
+@@ -15,7 +15,7 @@
+
+ #include "ui/events/platform/platform_event_source.h"
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include "ui/aura/env.h"
+ #include "ui/events/event.h"
+ #endif
+@@ -39,7 +39,7 @@ NativeEventObserver::~NativeEventObserver() {
+ DeregisterObserver();
+ }
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ void NativeEventObserver::RegisterObserver() {
+ aura::Env::GetInstance()->AddWindowEventDispatcherObserver(this);
+ }
+@@ -61,7 +61,7 @@ void NativeEventObserver::OnWindowEventDispatcherFinis
+ did_run_event_callback_.Run(info.unique_id);
+ events_being_processed_.pop_back();
+ }
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+
+ #if defined(OS_WIN)
+ void NativeEventObserver::RegisterObserver() {
diff --git a/devel/electron5/files/patch-content_browser_scheduler_responsiveness_native__event__observer.h b/devel/electron5/files/patch-content_browser_scheduler_responsiveness_native__event__observer.h
new file mode 100644
index 000000000000..5f428c6ed946
--- /dev/null
+++ b/devel/electron5/files/patch-content_browser_scheduler_responsiveness_native__event__observer.h
@@ -0,0 +1,47 @@
+--- content/browser/scheduler/responsiveness/native_event_observer.h.orig 2019-04-08 08:18:19 UTC
++++ content/browser/scheduler/responsiveness/native_event_observer.h
+@@ -14,7 +14,7 @@
+ #include "content/public/browser/native_event_processor_observer_mac.h"
+ #endif
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include "ui/aura/window_event_dispatcher_observer.h"
+ #endif
+
+@@ -39,7 +39,7 @@ namespace responsiveness {
+ class CONTENT_EXPORT NativeEventObserver
+ #if defined(OS_MACOSX)
+ : public NativeEventProcessorObserver
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ : public aura::WindowEventDispatcherObserver
+ #elif defined(OS_WIN)
+ : public base::MessagePumpForUI::Observer
+@@ -56,7 +56,7 @@ class CONTENT_EXPORT NativeEventObserver
+ NativeEventObserver(WillRunEventCallback will_run_event_callback,
+ DidRunEventCallback did_run_event_callback);
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ ~NativeEventObserver() override;
+ #else
+ virtual ~NativeEventObserver();
+@@ -68,7 +68,7 @@ class CONTENT_EXPORT NativeEventObserver
+ // Exposed for tests.
+ void WillRunNativeEvent(const void* opaque_identifier) override;
+ void DidRunNativeEvent(const void* opaque_identifier) override;
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ // aura::WindowEventDispatcherObserver overrides:
+ void OnWindowEventDispatcherStartedProcessing(
+ aura::WindowEventDispatcher* dispatcher,
+@@ -85,7 +85,7 @@ class CONTENT_EXPORT NativeEventObserver
+ void RegisterObserver();
+ void DeregisterObserver();
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ struct EventInfo {
+ const void* unique_id;
+ };
diff --git a/devel/electron5/files/patch-content_browser_service__manager_service__manager__context.cc b/devel/electron5/files/patch-content_browser_service__manager_service__manager__context.cc
new file mode 100644
index 000000000000..0a9aa9acde92
--- /dev/null
+++ b/devel/electron5/files/patch-content_browser_service__manager_service__manager__context.cc
@@ -0,0 +1,35 @@
+--- content/browser/service_manager/service_manager_context.cc.orig 2019-04-08 08:32:54 UTC
++++ content/browser/service_manager/service_manager_context.cc
+@@ -99,7 +99,7 @@
+ #include "jni/ContentNfcDelegate_jni.h"
+ #endif
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include "components/services/font/font_service_app.h"
+ #include "components/services/font/public/interfaces/constants.mojom.h"
+ #endif
+@@ -378,12 +378,12 @@ void CreateInProcessAudioService(
+ BrowserMainLoop::GetAudioManager(), std::move(request)));
+ }
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ std::unique_ptr<service_manager::Service> CreateFontService(
+ service_manager::mojom::ServiceRequest request) {
+ return std::make_unique<font_service::FontServiceApp>(std::move(request));
+ }
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+
+ std::unique_ptr<service_manager::Service> CreateResourceCoordinatorService(
+ service_manager::mojom::ServiceRequest request) {
+@@ -618,7 +618,7 @@ ServiceManagerContext::ServiceManagerContext(
+ base::BindRepeating(&CreateVideoCaptureService));
+ }
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ RegisterInProcessService(
+ packaged_services_connection_.get(), font_service::mojom::kServiceName,
+ base::CreateSequencedTaskRunnerWithTraits(
diff --git a/devel/electron5/files/patch-content_browser_storage__partition__impl.cc b/devel/electron5/files/patch-content_browser_storage__partition__impl.cc
new file mode 100644
index 000000000000..b4a2284f90e3
--- /dev/null
+++ b/devel/electron5/files/patch-content_browser_storage__partition__impl.cc
@@ -0,0 +1,11 @@
+--- content/browser/storage_partition_impl.cc.orig 2019-04-08 08:32:54 UTC
++++ content/browser/storage_partition_impl.cc
+@@ -768,7 +768,7 @@ net::URLRequestContextGetter* StoragePartitionImpl::Ge
+ // TODO(jam): enable for all, still used on WebView.
+ // See copy of this ifdef in:
+ // StoragePartitionImplMap::Get
+-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+ if (base::FeatureList::IsEnabled(network::features::kNetworkService))
+ NOTREACHED();
+ #endif
diff --git a/devel/electron5/files/patch-content_browser_storage__partition__impl__map.cc b/devel/electron5/files/patch-content_browser_storage__partition__impl__map.cc
new file mode 100644
index 000000000000..bad77210c635
--- /dev/null
+++ b/devel/electron5/files/patch-content_browser_storage__partition__impl__map.cc
@@ -0,0 +1,11 @@
+--- content/browser/storage_partition_impl_map.cc.orig 2019-04-08 08:32:54 UTC
++++ content/browser/storage_partition_impl_map.cc
+@@ -425,7 +425,7 @@ StoragePartitionImpl* StoragePartitionImplMap::Get(
+ bool create_request_context = true;
+ if (base::FeatureList::IsEnabled(network::features::kNetworkService)) {
+ // These ifdefs should match StoragePartitionImpl::GetURLRequestContext.
+-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+ create_request_context = false;
+ #elif defined(OS_ANDROID)
+ create_request_context =
diff --git a/devel/electron5/files/patch-content_browser_webui_shared__resources__data__source.cc b/devel/electron5/files/patch-content_browser_webui_shared__resources__data__source.cc
new file mode 100644
index 000000000000..20d0742f869c
--- /dev/null
+++ b/devel/electron5/files/patch-content_browser_webui_shared__resources__data__source.cc
@@ -0,0 +1,14 @@
+--- content/browser/webui/shared_resources_data_source.cc.orig 2019-04-08 08:32:54 UTC
++++ content/browser/webui/shared_resources_data_source.cc
+@@ -72,9 +72,9 @@ const std::map<int, std::string> CreateMojoResourceIdT
+ return std::map<int, std::string> {
+ {IDR_MOJO_MOJO_BINDINGS_JS, "js/mojo_bindings.js"},
+ {IDR_MOJO_MOJO_BINDINGS_LITE_JS, "js/mojo_bindings_lite.js"},
+-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+ {IDR_MOJO_TIME_MOJOM_JS, "js/time.mojom.js"},
+-#endif // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
++#endif // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+ };
+ }
+
diff --git a/devel/electron5/files/patch-content_common_BUILD.gn b/devel/electron5/files/patch-content_common_BUILD.gn
new file mode 100644
index 000000000000..84a623759634
--- /dev/null
+++ b/devel/electron5/files/patch-content_common_BUILD.gn
@@ -0,0 +1,15 @@
+--- content/common/BUILD.gn.orig 2019-04-08 08:32:54 UTC
++++ content/common/BUILD.gn
+@@ -382,6 +382,12 @@ source_set("common") {
+ libs += [ "android" ]
+ }
+
++ if (is_bsd) {
++ sources -= [
++ "sandbox_init_linux.cc",
++ ]
++ }
++
+ if (is_debug && !is_component_build && enable_plugins) {
+ # Content depends on the PPAPI message logging stuff; if this isn't here,
+ # some unit test binaries won't compile. This only worked in release mode
diff --git a/devel/electron5/files/patch-content_common_common__sandbox__support__linux.cc b/devel/electron5/files/patch-content_common_common__sandbox__support__linux.cc
new file mode 100644
index 000000000000..a255b6f85604
--- /dev/null
+++ b/devel/electron5/files/patch-content_common_common__sandbox__support__linux.cc
@@ -0,0 +1,10 @@
+--- content/common/common_sandbox_support_linux.cc.orig 2019-04-08 08:18:19 UTC
++++ content/common/common_sandbox_support_linux.cc
+@@ -5,6 +5,7 @@
+ #include "content/public/common/common_sandbox_support_linux.h"
+
+ #include <sys/stat.h>
++#include <unistd.h>
+
+ #include <limits>
+ #include <memory>
diff --git a/devel/electron5/files/patch-content_common_user__agent.cc b/devel/electron5/files/patch-content_common_user__agent.cc
new file mode 100644
index 000000000000..4456692317e9
--- /dev/null
+++ b/devel/electron5/files/patch-content_common_user__agent.cc
@@ -0,0 +1,17 @@
+--- content/common/user_agent.cc.orig 2019-04-08 08:32:54 UTC
++++ content/common/user_agent.cc
+@@ -131,6 +131,14 @@ std::string BuildOSCpuInfo(bool include_android_build_
+ #endif
+ ); // NOLINT
+
++#if defined(OS_BSD)
++#if defined(__x86_64__)
++ base::StringAppendF(&os_cpu, "; Linux x86_64");
++#else
++ base::StringAppendF(&os_cpu, "; Linux i686");
++#endif
++#endif
++
+ return os_cpu;
+ }
+
diff --git a/devel/electron5/files/patch-content_gpu_BUILD.gn b/devel/electron5/files/patch-content_gpu_BUILD.gn
new file mode 100644
index 000000000000..3ecb06b8b71e
--- /dev/null
+++ b/devel/electron5/files/patch-content_gpu_BUILD.gn
@@ -0,0 +1,11 @@
+--- content/gpu/BUILD.gn.orig 2019-04-08 08:32:54 UTC
++++ content/gpu/BUILD.gn
+@@ -133,7 +133,7 @@ target(link_target_type, "gpu_sources") {
+
+ # Use DRI on desktop Linux builds.
+ if (current_cpu != "s390x" && current_cpu != "ppc64" && is_desktop_linux &&
+- (!is_chromecast || is_cast_desktop_build)) {
++ (!is_chromecast || is_cast_desktop_build) && !is_bsd) {
+ configs += [ "//build/config/linux/dri" ]
+ }
+ }
diff --git a/devel/electron5/files/patch-content_gpu_gpu__main.cc b/devel/electron5/files/patch-content_gpu_gpu__main.cc
new file mode 100644
index 000000000000..a5db07f08c04
--- /dev/null
+++ b/devel/electron5/files/patch-content_gpu_gpu__main.cc
@@ -0,0 +1,47 @@
+--- content/gpu/gpu_main.cc.orig 2019-04-09 12:48:19 UTC
++++ content/gpu/gpu_main.cc
+@@ -78,7 +78,7 @@
+ #include "ui/gfx/x/x11_switches.h" // nogncheck
+ #endif
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include "content/gpu/gpu_sandbox_hook_linux.h"
+ #include "content/public/common/sandbox_init.h"
+ #include "services/service_manager/sandbox/linux/sandbox_linux.h"
+@@ -111,7 +111,7 @@ namespace content {
+
+ namespace {
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) && !defined(OS_BSD)
+ bool StartSandboxLinux(gpu::GpuWatchdogThread*,
+ const gpu::GPUInfo*,
+ const gpu::GpuPreferences&);
+@@ -172,7 +172,7 @@ class ContentSandboxHelper : public gpu::GpuSandboxHel
+ bool EnsureSandboxInitialized(gpu::GpuWatchdogThread* watchdog_thread,
+ const gpu::GPUInfo* gpu_info,
+ const gpu::GpuPreferences& gpu_prefs) override {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) && !defined(OS_BSD)
+ return StartSandboxLinux(watchdog_thread, gpu_info, gpu_prefs);
+ #elif defined(OS_WIN)
+ return StartSandboxWindows(sandbox_info_);
+@@ -367,7 +367,7 @@ int GpuMain(const MainFunctionParams& parameters) {
+
+ namespace {
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) && !defined(OS_BSD)
+ bool StartSandboxLinux(gpu::GpuWatchdogThread* watchdog_thread,
+ const gpu::GPUInfo* gpu_info,
+ const gpu::GpuPreferences& gpu_prefs) {
+@@ -402,7 +402,7 @@ bool StartSandboxLinux(gpu::GpuWatchdogThread* watchdo
+
+ return res;
+ }
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) && !defined(OS_BSD)
+
+ #if defined(OS_WIN)
+ bool StartSandboxWindows(const sandbox::SandboxInterfaceInfo* sandbox_info) {
diff --git a/devel/electron5/files/patch-content_gpu_gpu__sandbox__hook__linux.cc b/devel/electron5/files/patch-content_gpu_gpu__sandbox__hook__linux.cc
new file mode 100644
index 000000000000..790ba884806f
--- /dev/null
+++ b/devel/electron5/files/patch-content_gpu_gpu__sandbox__hook__linux.cc
@@ -0,0 +1,58 @@
+--- content/gpu/gpu_sandbox_hook_linux.cc.orig 2019-04-08 08:18:19 UTC
++++ content/gpu/gpu_sandbox_hook_linux.cc
+@@ -95,8 +95,9 @@ static const char kLibV4lEncPluginPath[] =
+ "/usr/lib/libv4l/plugins/libv4l-encplugin.so";
+ #endif
+
+-constexpr int dlopen_flag = RTLD_NOW | RTLD_GLOBAL | RTLD_NODELETE;
++constexpr int dlopen_flag = RTLD_NOW | RTLD_GLOBAL;
+
++#if !defined(OS_BSD)
+ void AddV4L2GpuWhitelist(
+ std::vector<BrokerFilePermission>* permissions,
+ const service_manager::SandboxSeccompBPF::Options& options) {
+@@ -277,8 +278,10 @@ std::vector<BrokerFilePermission> FilePermissionsForGp
+ AddStandardGpuWhiteList(&permissions);
+ return permissions;
+ }
++#endif
+
+ void LoadArmGpuLibraries() {
++#if !defined(OS_BSD)
+ // Preload the Mali library.
+ if (UseChromecastSandboxWhitelist()) {
+ for (const char* path : kWhitelistedChromecastPaths) {
+@@ -293,6 +296,7 @@ void LoadArmGpuLibraries() {
+ // Preload the Tegra V4L2 (video decode acceleration) library.
+ dlopen(kLibTegraPath, dlopen_flag);
+ }
++#endif
+ }
+
+ bool LoadAmdGpuLibraries() {
+@@ -348,6 +352,7 @@ bool LoadLibrariesForGpu(
+ return true;
+ }
+
++#if !defined(OS_BSD)
+ sandbox::syscall_broker::BrokerCommandSet CommandSetForGPU(
+ const service_manager::SandboxLinux::Options& options) {
+ sandbox::syscall_broker::BrokerCommandSet command_set;
+@@ -368,13 +373,17 @@ bool BrokerProcessPreSandboxHook(
+ service_manager::SetProcessTitleFromCommandLine(nullptr);
+ return true;
+ }
++#endif
+
+ } // namespace
+
+ bool GpuProcessPreSandboxHook(service_manager::SandboxLinux::Options options) {
++ NOTIMPLEMENTED();
++#if !defined(OS_BSD)
+ service_manager::SandboxLinux::GetInstance()->StartBrokerProcess(
+ CommandSetForGPU(options), FilePermissionsForGpu(options),
+ base::BindOnce(BrokerProcessPreSandboxHook), options);
++#endif
+
+ if (!LoadLibrariesForGpu(options))
+ return false;
diff --git a/devel/electron5/files/patch-content_ppapi__plugin_ppapi__blink__platform__impl.cc b/devel/electron5/files/patch-content_ppapi__plugin_ppapi__blink__platform__impl.cc
new file mode 100644
index 000000000000..0ffa35fa93e3
--- /dev/null
+++ b/devel/electron5/files/patch-content_ppapi__plugin_ppapi__blink__platform__impl.cc
@@ -0,0 +1,38 @@
+--- content/ppapi_plugin/ppapi_blink_platform_impl.cc.orig 2019-04-08 08:32:54 UTC
++++ content/ppapi_plugin/ppapi_blink_platform_impl.cc
+@@ -20,7 +20,7 @@
+
+ #if defined(OS_MACOSX)
+ #include "content/child/child_process_sandbox_support_impl_mac.h"
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ #include "content/child/child_process_sandbox_support_impl_linux.h"
+ #endif
+
+@@ -34,7 +34,7 @@ typedef struct CGFont* CGFontRef;
+ namespace content {
+
+ PpapiBlinkPlatformImpl::PpapiBlinkPlatformImpl() {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ font_loader_ =
+ sk_make_sp<font_service::FontLoader>(ChildThread::Get()->GetConnector());
+ SkFontConfigInterface::SetGlobal(font_loader_);
+@@ -49,7 +49,7 @@ PpapiBlinkPlatformImpl::~PpapiBlinkPlatformImpl() {
+ }
+
+ void PpapiBlinkPlatformImpl::Shutdown() {
+-#if defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ // SandboxSupport contains a map of OutOfProcessFont objects, which hold
+ // WebStrings and WebVectors, which become invalidated when blink is shut
+ // down. Hence, we need to clear that map now, just before blink::shutdown()
+@@ -59,7 +59,7 @@ void PpapiBlinkPlatformImpl::Shutdown() {
+ }
+
+ blink::WebSandboxSupport* PpapiBlinkPlatformImpl::GetSandboxSupport() {
+-#if defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ return sandbox_support_.get();
+ #else
+ return nullptr;
diff --git a/devel/electron5/files/patch-content_ppapi__plugin_ppapi__blink__platform__impl.h b/devel/electron5/files/patch-content_ppapi__plugin_ppapi__blink__platform__impl.h
new file mode 100644
index 000000000000..2ec5475bec25
--- /dev/null
+++ b/devel/electron5/files/patch-content_ppapi__plugin_ppapi__blink__platform__impl.h
@@ -0,0 +1,25 @@
+--- content/ppapi_plugin/ppapi_blink_platform_impl.h.orig 2019-04-08 08:32:54 UTC
++++ content/ppapi_plugin/ppapi_blink_platform_impl.h
+@@ -13,7 +13,7 @@
+ #include "build/build_config.h"
+ #include "content/child/blink_platform_impl.h"
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include "components/services/font/public/cpp/font_loader.h"
+ #include "third_party/skia/include/core/SkRefCnt.h"
+ #endif
+@@ -42,11 +42,11 @@ class PpapiBlinkPlatformImpl : public BlinkPlatformImp
+ bool sync_dir) override;
+
+ private:
+-#if defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ std::unique_ptr<blink::WebSandboxSupport> sandbox_support_;
+ #endif
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ sk_sp<font_service::FontLoader> font_loader_;
+ #endif
+
diff --git a/devel/electron5/files/patch-content_public_app_content__packaged__services__manifest.cc b/devel/electron5/files/patch-content_public_app_content__packaged__services__manifest.cc
new file mode 100644
index 000000000000..ea5add9d44ce
--- /dev/null
+++ b/devel/electron5/files/patch-content_public_app_content__packaged__services__manifest.cc
@@ -0,0 +1,20 @@
+--- content/public/app/content_packaged_services_manifest.cc.orig 2019-04-08 08:32:55 UTC
++++ content/public/app/content_packaged_services_manifest.cc
+@@ -23,7 +23,7 @@
+ #include "services/video_capture/manifest.h"
+ #include "services/viz/manifest.h"
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include "components/services/font/manifest.h"
+ #endif
+
+@@ -67,7 +67,7 @@ const service_manager::Manifest& GetContentPackagedSer
+ .PackageService(tracing::GetManifest())
+ .PackageService(video_capture::GetManifest())
+ .PackageService(viz::GetManifest())
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ .PackageService(font_service::GetManifest())
+ #endif
+ #if defined(OS_CHROMEOS)
diff --git a/devel/electron5/files/patch-content_public_app_v8__snapshot__overlay__manifest.cc b/devel/electron5/files/patch-content_public_app_v8__snapshot__overlay__manifest.cc
new file mode 100644
index 000000000000..ee77b0ab1e0a
--- /dev/null
+++ b/devel/electron5/files/patch-content_public_app_v8__snapshot__overlay__manifest.cc
@@ -0,0 +1,11 @@
+--- content/public/app/v8_snapshot_overlay_manifest.cc.orig 2019-04-08 08:18:19 UTC
++++ content/public/app/v8_snapshot_overlay_manifest.cc
+@@ -15,7 +15,7 @@ namespace content {
+ const service_manager::Manifest& GetV8SnapshotOverlayManifest() {
+ static base::NoDestructor<service_manager::Manifest> manifest {
+ service_manager::ManifestBuilder()
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ .PreloadFile(kV8NativesDataDescriptor,
+ base::FilePath(FILE_PATH_LITERAL("natives_blob.bin")))
+ #if defined(USE_V8_CONTEXT_SNAPSHOT)
diff --git a/devel/electron5/files/patch-content_public_common_child__process__host.h b/devel/electron5/files/patch-content_public_common_child__process__host.h
new file mode 100644
index 000000000000..37f3d7d78f59
--- /dev/null
+++ b/devel/electron5/files/patch-content_public_common_child__process__host.h
@@ -0,0 +1,20 @@
+--- content/public/common/child_process_host.h.orig 2019-04-08 08:32:55 UTC
++++ content/public/common/child_process_host.h
+@@ -47,7 +47,7 @@ class CONTENT_EXPORT ChildProcessHost : public IPC::Se
+ // No special behavior requested.
+ CHILD_NORMAL = 0,
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Indicates that the child execed after forking may be execced from
+ // /proc/self/exe rather than using the "real" app path. This prevents
+ // autoupdate from confusing us if it changes the file out from under us.
+@@ -56,7 +56,7 @@ class CONTENT_EXPORT ChildProcessHost : public IPC::Se
+ // gdb). In this case, you'd use GetChildPath to get the real executable
+ // file name, and then prepend the GDB command to the command line.
+ CHILD_ALLOW_SELF = 1 << 0,
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+ };
+
+ // Returns the pathname to be used for a child process. If a subprocess
diff --git a/devel/electron5/files/patch-content_public_common_common__param__traits__macros.h b/devel/electron5/files/patch-content_public_common_common__param__traits__macros.h
new file mode 100644
index 000000000000..3767c3b68ca0
--- /dev/null
+++ b/devel/electron5/files/patch-content_public_common_common__param__traits__macros.h
@@ -0,0 +1,11 @@
+--- content/public/common/common_param_traits_macros.h.orig 2019-04-08 08:32:55 UTC
++++ content/public/common/common_param_traits_macros.h
+@@ -325,7 +325,7 @@ IPC_STRUCT_TRAITS_BEGIN(content::RendererPreferences)
+ IPC_STRUCT_TRAITS_MEMBER(disable_client_blocked_error_page)
+ IPC_STRUCT_TRAITS_MEMBER(plugin_fullscreen_allowed)
+ IPC_STRUCT_TRAITS_MEMBER(network_contry_iso)
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ IPC_STRUCT_TRAITS_MEMBER(system_font_family_name)
+ #endif
+ #if defined(OS_WIN)
diff --git a/devel/electron5/files/patch-content_public_common_content__features.cc b/devel/electron5/files/patch-content_public_common_content__features.cc
new file mode 100644
index 000000000000..9038c05e0a96
--- /dev/null
+++ b/devel/electron5/files/patch-content_public_common_content__features.cc
@@ -0,0 +1,11 @@
+--- content/public/common/content_features.cc.orig 2019-04-08 08:32:55 UTC
++++ content/public/common/content_features.cc
+@@ -493,7 +493,7 @@ const base::Feature kWebAssemblyThreads{"WebAssemblyTh
+ base::FEATURE_DISABLED_BY_DEFAULT};
+
+ // Enable WebAssembly trap handler.
+-#if defined(OS_LINUX) && defined(ARCH_CPU_X86_64)
++#if (defined(OS_BSD) || defined(OS_LINUX)) && defined(ARCH_CPU_X86_64)
+ const base::Feature kWebAssemblyTrapHandler{"WebAssemblyTrapHandler",
+ base::FEATURE_ENABLED_BY_DEFAULT};
+ #else
diff --git a/devel/electron5/files/patch-content_public_common_content__switches.cc b/devel/electron5/files/patch-content_public_common_content__switches.cc
new file mode 100644
index 000000000000..cca3699508eb
--- /dev/null
+++ b/devel/electron5/files/patch-content_public_common_content__switches.cc
@@ -0,0 +1,11 @@
+--- content/public/common/content_switches.cc.orig 2019-04-08 08:32:55 UTC
++++ content/public/common/content_switches.cc
+@@ -968,7 +968,7 @@ const char kDisableAudioSupportForDesktopShare[] =
+ const char kDisablePanelFitting[] = "disable-panel-fitting";
+ #endif
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_FREEBSD)
+ // Allows sending text-to-speech requests to speech-dispatcher, a common
+ // Linux speech service. Because it's buggy, the user must explicitly
+ // enable it so that visiting a random webpage can't cause instability.
diff --git a/devel/electron5/files/patch-content_public_common_content__switches.h b/devel/electron5/files/patch-content_public_common_content__switches.h
new file mode 100644
index 000000000000..4ad5026ad08c
--- /dev/null
+++ b/devel/electron5/files/patch-content_public_common_content__switches.h
@@ -0,0 +1,11 @@
+--- content/public/common/content_switches.h.orig 2019-04-08 08:32:55 UTC
++++ content/public/common/content_switches.h
+@@ -270,7 +270,7 @@ CONTENT_EXPORT extern const char kEnableOSKOverscroll[
+ CONTENT_EXPORT extern const char kDisablePanelFitting[];
+ #endif
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_FREEBSD)
+ CONTENT_EXPORT extern const char kEnableSpeechDispatcher[];
+ #endif
+
diff --git a/devel/electron5/files/patch-content_public_common_renderer__preferences.h b/devel/electron5/files/patch-content_public_common_renderer__preferences.h
new file mode 100644
index 000000000000..04190193cc83
--- /dev/null
+++ b/devel/electron5/files/patch-content_public_common_renderer__preferences.h
@@ -0,0 +1,11 @@
+--- content/public/common/renderer_preferences.h.orig 2019-04-08 08:32:55 UTC
++++ content/public/common/renderer_preferences.h
+@@ -120,7 +120,7 @@ struct CONTENT_EXPORT RendererPreferences {
+ // Country iso of the mobile network for content detection purpose.
+ std::string network_contry_iso;
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ std::string system_font_family_name;
+ #endif
+
diff --git a/devel/electron5/files/patch-content_public_common_use__zoom__for__dsf__policy.cc b/devel/electron5/files/patch-content_public_common_use__zoom__for__dsf__policy.cc
new file mode 100644
index 000000000000..1d8bdce8fd3c
--- /dev/null
+++ b/devel/electron5/files/patch-content_public_common_use__zoom__for__dsf__policy.cc
@@ -0,0 +1,11 @@
+--- content/public/common/use_zoom_for_dsf_policy.cc.orig 2019-04-08 08:18:19 UTC
++++ content/public/common/use_zoom_for_dsf_policy.cc
+@@ -25,7 +25,7 @@ const base::Feature kUseZoomForDsfEnabledByDefault{
+ #endif
+
+ bool IsUseZoomForDSFEnabledByDefault() {
+-#if defined(OS_LINUX) || defined(OS_FUCHSIA)
++#if defined(OS_LINUX) || defined(OS_FUCHSIA) || defined(OS_BSD)
+ return true;
+ #elif defined(OS_WIN) || defined(OS_ANDROID)
+ return base::FeatureList::IsEnabled(kUseZoomForDsfEnabledByDefault);
diff --git a/devel/electron5/files/patch-content_public_test_browser__test__base.cc b/devel/electron5/files/patch-content_public_test_browser__test__base.cc
new file mode 100644
index 000000000000..5080cfd82237
--- /dev/null
+++ b/devel/electron5/files/patch-content_public_test_browser__test__base.cc
@@ -0,0 +1,13 @@
+--- content/public/test/browser_test_base.cc.orig 2019-04-08 08:32:55 UTC
++++ content/public/test/browser_test_base.cc
+@@ -62,6 +62,10 @@
+ #include "ui/views/test/event_generator_delegate_mac.h"
+ #endif
+
++#if defined(OS_FREEBSD)
++#include <sys/signal.h>
++#endif
++
+ #if defined(OS_POSIX)
+ #include "base/process/process_handle.h"
+ #endif
diff --git a/devel/electron5/files/patch-content_public_test_mock__render__thread.cc b/devel/electron5/files/patch-content_public_test_mock__render__thread.cc
new file mode 100644
index 000000000000..54d358309dc3
--- /dev/null
+++ b/devel/electron5/files/patch-content_public_test_mock__render__thread.cc
@@ -0,0 +1,11 @@
+--- content/public/test/mock_render_thread.cc.orig 2019-04-08 08:32:55 UTC
++++ content/public/test/mock_render_thread.cc
+@@ -69,7 +69,7 @@ class MockRenderMessageFilterImpl : public mojom::Rend
+ std::move(callback).Run(false);
+ }
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ void SetThreadPriority(int32_t platform_thread_id,
+ base::ThreadPriority thread_priority) override {}
+ #endif
diff --git a/devel/electron5/files/patch-content_renderer_media_audio_audio__device__factory.cc b/devel/electron5/files/patch-content_renderer_media_audio_audio__device__factory.cc
new file mode 100644
index 000000000000..c4b271290315
--- /dev/null
+++ b/devel/electron5/files/patch-content_renderer_media_audio_audio__device__factory.cc
@@ -0,0 +1,11 @@
+--- content/renderer/media/audio/audio_device_factory.cc.orig 2019-04-08 08:32:55 UTC
++++ content/renderer/media/audio/audio_device_factory.cc
+@@ -33,7 +33,7 @@ AudioDeviceFactory* AudioDeviceFactory::factory_ = nul
+
+ namespace {
+
+-#if defined(OS_WIN) || defined(OS_MACOSX) || \
++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_BSD) || \
+ (defined(OS_LINUX) && !defined(OS_CHROMEOS))
+ // Due to driver deadlock issues on Windows (http://crbug/422522) there is a
+ // chance device authorization response is never received from the browser side.
diff --git a/devel/electron5/files/patch-content_renderer_media_stream_processed__local__audio__source.cc b/devel/electron5/files/patch-content_renderer_media_stream_processed__local__audio__source.cc
new file mode 100644
index 000000000000..ef7824fc5db7
--- /dev/null
+++ b/devel/electron5/files/patch-content_renderer_media_stream_processed__local__audio__source.cc
@@ -0,0 +1,20 @@
+--- content/renderer/media/stream/processed_local_audio_source.cc.orig 2019-04-08 08:32:55 UTC
++++ content/renderer/media/stream/processed_local_audio_source.cc
+@@ -35,7 +35,7 @@ void* const kProcessedLocalAudioSourceIdentifier =
+ const_cast<void**>(&kProcessedLocalAudioSourceIdentifier);
+
+ bool ApmInAudioServiceEnabled() {
+-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+ return base::FeatureList::IsEnabled(features::kWebRtcApmInAudioService);
+ #else
+ return false;
+@@ -355,7 +355,7 @@ void ProcessedLocalAudioSource::CaptureUsingProcessor(
+ bool key_pressed) {
+ #if defined(OS_WIN) || defined(OS_MACOSX)
+ DCHECK_LE(volume, 1.0);
+-#elif (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_OPENBSD)
++#elif (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ // We have a special situation on Linux where the microphone volume can be
+ // "higher than maximum". The input volume slider in the sound preference
+ // allows the user to set a scaling that is higher than 100%. It means that
diff --git a/devel/electron5/files/patch-content_renderer_media_webrtc_webrtc__audio__renderer__unittest.cc b/devel/electron5/files/patch-content_renderer_media_webrtc_webrtc__audio__renderer__unittest.cc
new file mode 100644
index 000000000000..10d5c966c9d1
--- /dev/null
+++ b/devel/electron5/files/patch-content_renderer_media_webrtc_webrtc__audio__renderer__unittest.cc
@@ -0,0 +1,11 @@
+--- content/renderer/media/webrtc/webrtc_audio_renderer_unittest.cc.orig 2019-04-08 08:32:55 UTC
++++ content/renderer/media/webrtc/webrtc_audio_renderer_unittest.cc
+@@ -203,7 +203,7 @@ TEST_F(WebRtcAudioRendererTest, MultipleRenderers) {
+ TEST_F(WebRtcAudioRendererTest, VerifySinkParameters) {
+ SetupRenderer(kDefaultOutputDeviceId);
+ renderer_proxy_->Start();
+-#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_FUCHSIA)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_FUCHSIA) || defined(OS_BSD)
+ static const int kExpectedBufferSize = kHardwareSampleRate / 100;
+ #elif defined(OS_ANDROID)
+ static const int kExpectedBufferSize = 2 * kHardwareSampleRate / 100;
diff --git a/devel/electron5/files/patch-content_renderer_render__thread__impl.cc b/devel/electron5/files/patch-content_renderer_render__thread__impl.cc
new file mode 100644
index 000000000000..f8c259b5e58d
--- /dev/null
+++ b/devel/electron5/files/patch-content_renderer_render__thread__impl.cc
@@ -0,0 +1,56 @@
+--- content/renderer/render_thread_impl.cc.orig 2019-04-09 12:48:19 UTC
++++ content/renderer/render_thread_impl.cc
+@@ -191,12 +191,21 @@
+ #include "mojo/public/cpp/bindings/message_dumper.h"
+ #endif
+
++#if !defined(OS_BSD)
+ #if defined(OS_MACOSX)
+ #include <malloc/malloc.h>
+ #else
+ #include <malloc.h>
+ #endif
++#endif
+
++#if defined(OS_BSD)
++#include <stddef.h>
++#include <stdint.h>
++#include <sys/param.h>
++#include <sys/sysctl.h>
++#endif
++
+ using base::ThreadRestrictions;
+ using blink::WebDocument;
+ using blink::WebFrame;
+@@ -926,7 +935,7 @@ void RenderThreadImpl::Init() {
+ DCHECK(parsed_num_raster_threads) << string_value;
+ DCHECK_GT(num_raster_threads, 0);
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ categorized_worker_pool_->SetBackgroundingCallback(
+ main_thread_scheduler_->DefaultTaskRunner(),
+ base::BindOnce(
+@@ -967,7 +976,7 @@ void RenderThreadImpl::Init() {
+ GetConnector()->BindInterface(mojom::kBrowserServiceName,
+ mojo::MakeRequest(&storage_partition_service_));
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ render_message_filter()->SetThreadPriority(
+ ChildProcess::current()->io_thread_id(), base::ThreadPriority::DISPLAY);
+ #endif
+@@ -1337,11 +1346,11 @@ media::GpuVideoAcceleratorFactories* RenderThreadImpl:
+ gpu::kGpuFeatureStatusEnabled);
+ const bool enable_gpu_memory_buffers =
+ !is_gpu_compositing_disabled_ &&
+-#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_WIN)
++#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD)
+ !cmd_line->HasSwitch(switches::kDisableGpuMemoryBufferVideoFrames);
+ #else
+ cmd_line->HasSwitch(switches::kEnableGpuMemoryBufferVideoFrames);
+-#endif // defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_WIN)
++#endif // defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD)
+ const bool enable_media_stream_gpu_memory_buffers =
+ enable_gpu_memory_buffers &&
+ base::FeatureList::IsEnabled(
diff --git a/devel/electron5/files/patch-content_renderer_renderer__blink__platform__impl.cc b/devel/electron5/files/patch-content_renderer_renderer__blink__platform__impl.cc
new file mode 100644
index 000000000000..31a6cfd814a8
--- /dev/null
+++ b/devel/electron5/files/patch-content_renderer_renderer__blink__platform__impl.cc
@@ -0,0 +1,56 @@
+--- content/renderer/renderer_blink_platform_impl.cc.orig 2019-04-09 12:48:19 UTC
++++ content/renderer/renderer_blink_platform_impl.cc
+@@ -109,7 +109,7 @@
+
+ #if defined(OS_MACOSX)
+ #include "content/child/child_process_sandbox_support_impl_mac.h"
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ #include "content/child/child_process_sandbox_support_impl_linux.h"
+ #endif
+
+@@ -202,7 +202,7 @@ RendererBlinkPlatformImpl::RendererBlinkPlatformImpl(
+ ->Clone();
+ thread_safe_sender_ = RenderThreadImpl::current()->thread_safe_sender();
+ blob_registry_.reset(new WebBlobRegistryImpl(thread_safe_sender_.get()));
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ font_loader_ = sk_make_sp<font_service::FontLoader>(connector_.get());
+ SkFontConfigInterface::SetGlobal(font_loader_);
+ #endif
+@@ -211,7 +211,7 @@ RendererBlinkPlatformImpl::RendererBlinkPlatformImpl(
+ connector_ = service_manager::Connector::Create(&request);
+ }
+
+-#if defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ if (g_sandbox_enabled && sandboxEnabled()) {
+ #if defined(OS_MACOSX)
+ sandbox_support_.reset(new WebSandboxSupportMac(connector_.get()));
+@@ -239,7 +239,7 @@ RendererBlinkPlatformImpl::~RendererBlinkPlatformImpl(
+ }
+
+ void RendererBlinkPlatformImpl::Shutdown() {
+-#if defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ // SandboxSupport contains a map of OutOfProcessFont objects, which hold
+ // WebStrings and WebVectors, which become invalidated when blink is shut
+ // down. Hence, we need to clear that map now, just before blink::shutdown()
+@@ -320,7 +320,7 @@ RendererBlinkPlatformImpl::CreateNetworkURLLoaderFacto
+
+ void RendererBlinkPlatformImpl::SetDisplayThreadPriority(
+ base::PlatformThreadId thread_id) {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ if (RenderThreadImpl* render_thread = RenderThreadImpl::current()) {
+ render_thread->render_message_filter()->SetThreadPriority(
+ thread_id, base::ThreadPriority::DISPLAY);
+@@ -333,7 +333,7 @@ blink::BlameContext* RendererBlinkPlatformImpl::GetTop
+ }
+
+ blink::WebSandboxSupport* RendererBlinkPlatformImpl::GetSandboxSupport() {
+-#if defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ return sandbox_support_.get();
+ #else
+ // These platforms do not require sandbox support.
diff --git a/devel/electron5/files/patch-content_renderer_renderer__blink__platform__impl.h b/devel/electron5/files/patch-content_renderer_renderer__blink__platform__impl.h
new file mode 100644
index 000000000000..daf3ceb03ccc
--- /dev/null
+++ b/devel/electron5/files/patch-content_renderer_renderer__blink__platform__impl.h
@@ -0,0 +1,29 @@
+--- content/renderer/renderer_blink_platform_impl.h.orig 2019-04-09 12:48:19 UTC
++++ content/renderer/renderer_blink_platform_impl.h
+@@ -29,7 +29,7 @@
+ #include "third_party/blink/public/mojom/loader/code_cache.mojom.h"
+ #include "third_party/blink/public/platform/modules/webdatabase/web_database.mojom.h"
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include "components/services/font/public/cpp/font_loader.h" // nogncheck
+ #include "third_party/skia/include/core/SkRefCnt.h" // nogncheck
+ #endif
+@@ -264,7 +264,7 @@ class CONTENT_EXPORT RendererBlinkPlatformImpl : publi
+ std::unique_ptr<service_manager::Connector> connector_;
+ scoped_refptr<base::SingleThreadTaskRunner> io_runner_;
+
+-#if defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ std::unique_ptr<blink::WebSandboxSupport> sandbox_support_;
+ #endif
+
+@@ -299,7 +299,7 @@ class CONTENT_EXPORT RendererBlinkPlatformImpl : publi
+ blink::mojom::CodeCacheHostPtrInfo code_cache_host_info_;
+ scoped_refptr<blink::mojom::ThreadSafeCodeCacheHostPtr> code_cache_host_;
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ sk_sp<font_service::FontLoader> font_loader_;
+ #endif
+
diff --git a/devel/electron5/files/patch-content_renderer_renderer__main__platform__delegate__linux.cc b/devel/electron5/files/patch-content_renderer_renderer__main__platform__delegate__linux.cc
new file mode 100644
index 000000000000..3d0117a67802
--- /dev/null
+++ b/devel/electron5/files/patch-content_renderer_renderer__main__platform__delegate__linux.cc
@@ -0,0 +1,19 @@
+--- content/renderer/renderer_main_platform_delegate_linux.cc.orig 2019-04-08 08:18:19 UTC
++++ content/renderer/renderer_main_platform_delegate_linux.cc
+@@ -30,6 +30,7 @@ void RendererMainPlatformDelegate::PlatformUninitializ
+ }
+
+ bool RendererMainPlatformDelegate::EnableSandbox() {
++#if !defined(OS_BSD)
+ // The setuid sandbox is started in the zygote process: zygote_main_linux.cc
+ // https://chromium.googlesource.com/chromium/src/+/master/docs/linux_suid_sandbox.md
+ //
+@@ -65,7 +66,7 @@ bool RendererMainPlatformDelegate::EnableSandbox() {
+ CHECK_EQ(errno, EPERM);
+ }
+ #endif // __x86_64__
+-
++#endif // ! OS_BSD
+ return true;
+ }
+
diff --git a/devel/electron5/files/patch-content_shell_BUILD.gn b/devel/electron5/files/patch-content_shell_BUILD.gn
new file mode 100644
index 000000000000..5b280089b62f
--- /dev/null
+++ b/devel/electron5/files/patch-content_shell_BUILD.gn
@@ -0,0 +1,11 @@
+--- content/shell/BUILD.gn.orig 2019-04-08 08:32:55 UTC
++++ content/shell/BUILD.gn
+@@ -942,7 +942,7 @@ group("content_shell_crash_test") {
+ if (is_win) {
+ data_deps += [ "//build/win:copy_cdb_to_output" ]
+ }
+- if (is_posix && !is_android) {
++ if (is_posix && !is_android && !is_bsd) {
+ data_deps += [
+ "//third_party/breakpad:dump_syms($host_toolchain)",
+ "//third_party/breakpad:minidump_stackwalk($host_toolchain)",
diff --git a/devel/electron5/files/patch-content_shell_browser_shell__browser__context.cc b/devel/electron5/files/patch-content_shell_browser_shell__browser__context.cc
new file mode 100644
index 000000000000..cca1d51f6a73
--- /dev/null
+++ b/devel/electron5/files/patch-content_shell_browser_shell__browser__context.cc
@@ -0,0 +1,20 @@
+--- content/shell/browser/shell_browser_context.cc.orig 2019-04-08 08:18:19 UTC
++++ content/shell/browser/shell_browser_context.cc
+@@ -28,7 +28,7 @@
+
+ #if defined(OS_WIN)
+ #include "base/base_paths_win.h"
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ #include "base/nix/xdg_util.h"
+ #elif defined(OS_MACOSX)
+ #include "base/base_paths_mac.h"
+@@ -103,7 +103,7 @@ void ShellBrowserContext::InitWhileIOAllowed() {
+ #if defined(OS_WIN)
+ CHECK(base::PathService::Get(base::DIR_LOCAL_APP_DATA, &path_));
+ path_ = path_.Append(std::wstring(L"content_shell"));
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ std::unique_ptr<base::Environment> env(base::Environment::Create());
+ base::FilePath config_dir(
+ base::nix::GetXDGDirectory(env.get(),
diff --git a/devel/electron5/files/patch-content_shell_browser_shell__browser__main__parts.cc b/devel/electron5/files/patch-content_shell_browser_shell__browser__main__parts.cc
new file mode 100644
index 000000000000..c3236c2785a2
--- /dev/null
+++ b/devel/electron5/files/patch-content_shell_browser_shell__browser__main__parts.cc
@@ -0,0 +1,20 @@
+--- content/shell/browser/shell_browser_main_parts.cc.orig 2019-04-08 08:32:55 UTC
++++ content/shell/browser/shell_browser_main_parts.cc
+@@ -48,7 +48,7 @@
+ #if defined(USE_AURA) && defined(USE_X11)
+ #include "ui/events/devices/x11/touch_factory_x11.h" // nogncheck
+ #endif
+-#if !defined(OS_CHROMEOS) && defined(USE_AURA) && defined(OS_LINUX)
++#if !defined(OS_CHROMEOS) && defined(USE_AURA) && (defined(OS_BSD) || defined(OS_LINUX))
+ #include "ui/base/ime/input_method_initializer.h"
+ #endif
+ #if defined(OS_CHROMEOS)
+@@ -126,7 +126,7 @@ int ShellBrowserMainParts::PreEarlyInitialization() {
+ #if defined(USE_X11)
+ ui::SetDefaultX11ErrorHandlers();
+ #endif
+-#if !defined(OS_CHROMEOS) && defined(USE_AURA) && defined(OS_LINUX)
++#if !defined(OS_CHROMEOS) && defined(USE_AURA) && (defined(OS_BSD) || defined(OS_LINUX))
+ ui::InitializeInputMethodForTesting();
+ #endif
+ #if defined(OS_ANDROID)
diff --git a/devel/electron5/files/patch-content_shell_test__runner_test__runner.cc b/devel/electron5/files/patch-content_shell_test__runner_test__runner.cc
new file mode 100644
index 000000000000..b0df38733e4c
--- /dev/null
+++ b/devel/electron5/files/patch-content_shell_test__runner_test__runner.cc
@@ -0,0 +1,29 @@
+--- content/shell/test_runner/test_runner.cc.orig 2019-04-08 08:32:55 UTC
++++ content/shell/test_runner/test_runner.cc
+@@ -64,7 +64,7 @@
+ #include "ui/gfx/geometry/size.h"
+ #include "ui/gfx/skia_util.h"
+
+-#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_FUCHSIA)
++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_FUCHSIA) || defined(OS_BSD)
+ #include "third_party/blink/public/platform/web_font_render_style.h"
+ #endif
+
+@@ -1542,7 +1542,7 @@ void TestRunner::Reset() {
+ drag_image_.reset();
+
+ blink::WebSecurityPolicy::ClearOriginAccessList();
+-#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_FUCHSIA)
++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_FUCHSIA) || defined(OS_BSD)
+ blink::WebFontRenderStyle::SetSubpixelPositioning(false);
+ #endif
+
+@@ -2091,7 +2091,7 @@ void TestRunner::AddOriginAccessAllowListEntry(
+ }
+
+ void TestRunner::SetTextSubpixelPositioning(bool value) {
+-#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_FUCHSIA)
++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_FUCHSIA) || defined(OS_BSD)
+ // Since FontConfig doesn't provide a variable to control subpixel
+ // positioning, we'll fall back to setting it globally for all fonts.
+ blink::WebFontRenderStyle::SetSubpixelPositioning(value);
diff --git a/devel/electron5/files/patch-content_test_content__test__suite.cc b/devel/electron5/files/patch-content_test_content__test__suite.cc
new file mode 100644
index 000000000000..fbd3fec4c6a4
--- /dev/null
+++ b/devel/electron5/files/patch-content_test_content__test__suite.cc
@@ -0,0 +1,18 @@
+--- content/test/content_test_suite.cc.orig 2019-04-08 08:32:55 UTC
++++ content/test/content_test_suite.cc
+@@ -85,6 +85,7 @@ void ContentTestSuite::Initialize() {
+ // to initialize GL, so don't do it here.
+ base::CommandLine* command_line = base::CommandLine::ForCurrentProcess();
+ bool is_child_process = command_line->HasSwitch(switches::kTestChildProcess);
++#if !defined(OS_BSD)
+ if (!is_child_process) {
+ gl::GLSurfaceTestSupport::InitializeNoExtensionsOneOff();
+ auto* gpu_feature_info = gpu::GetTestGpuThreadHolder()->GetGpuFeatureInfo();
+@@ -92,6 +93,7 @@ void ContentTestSuite::Initialize() {
+ gpu_feature_info->disabled_extensions);
+ gl::init::InitializeExtensionSettingsOneOffPlatform();
+ }
++#endif
+ testing::TestEventListeners& listeners =
+ testing::UnitTest::GetInstance()->listeners();
+ listeners.Append(new TestInitializationListener);
diff --git a/devel/electron5/files/patch-content_utility_utility__blink__platform__with__sandbox__support__impl.cc b/devel/electron5/files/patch-content_utility_utility__blink__platform__with__sandbox__support__impl.cc
new file mode 100644
index 000000000000..269d7b9da7b3
--- /dev/null
+++ b/devel/electron5/files/patch-content_utility_utility__blink__platform__with__sandbox__support__impl.cc
@@ -0,0 +1,29 @@
+--- content/utility/utility_blink_platform_with_sandbox_support_impl.cc.orig 2019-04-08 08:18:20 UTC
++++ content/utility/utility_blink_platform_with_sandbox_support_impl.cc
+@@ -8,7 +8,7 @@
+
+ #if defined(OS_MACOSX)
+ #include "content/child/child_process_sandbox_support_impl_mac.h"
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ #include "content/child/child_process_sandbox_support_impl_linux.h"
+ #endif
+
+@@ -17,7 +17,7 @@ namespace content {
+ UtilityBlinkPlatformWithSandboxSupportImpl::
+ UtilityBlinkPlatformWithSandboxSupportImpl(
+ service_manager::Connector* connector) {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ font_loader_ = sk_make_sp<font_service::FontLoader>(connector);
+ SkFontConfigInterface::SetGlobal(font_loader_);
+ sandbox_support_ = std::make_unique<WebSandboxSupportLinux>(font_loader_);
+@@ -31,7 +31,7 @@ UtilityBlinkPlatformWithSandboxSupportImpl::
+
+ blink::WebSandboxSupport*
+ UtilityBlinkPlatformWithSandboxSupportImpl::GetSandboxSupport() {
+-#if defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ return sandbox_support_.get();
+ #else
+ return nullptr;
diff --git a/devel/electron5/files/patch-content_utility_utility__blink__platform__with__sandbox__support__impl.h b/devel/electron5/files/patch-content_utility_utility__blink__platform__with__sandbox__support__impl.h
new file mode 100644
index 000000000000..eb29dd292c9c
--- /dev/null
+++ b/devel/electron5/files/patch-content_utility_utility__blink__platform__with__sandbox__support__impl.h
@@ -0,0 +1,24 @@
+--- content/utility/utility_blink_platform_with_sandbox_support_impl.h.orig 2019-04-08 08:18:20 UTC
++++ content/utility/utility_blink_platform_with_sandbox_support_impl.h
+@@ -11,7 +11,7 @@
+ #include "build/build_config.h"
+ #include "third_party/blink/public/platform/platform.h"
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include "components/services/font/public/cpp/font_loader.h" // nogncheck
+ #include "third_party/skia/include/core/SkRefCnt.h" // nogncheck
+ #endif
+@@ -39,10 +39,10 @@ class UtilityBlinkPlatformWithSandboxSupportImpl : pub
+ blink::WebSandboxSupport* GetSandboxSupport() override;
+
+ private:
+-#if defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ std::unique_ptr<blink::WebSandboxSupport> sandbox_support_;
+ #endif
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ sk_sp<font_service::FontLoader> font_loader_;
+ #endif
+
diff --git a/devel/electron5/files/patch-device_bluetooth_BUILD.gn b/devel/electron5/files/patch-device_bluetooth_BUILD.gn
new file mode 100644
index 000000000000..abd58abba84e
--- /dev/null
+++ b/devel/electron5/files/patch-device_bluetooth_BUILD.gn
@@ -0,0 +1,11 @@
+--- device/bluetooth/BUILD.gn.orig 2019-04-08 08:32:55 UTC
++++ device/bluetooth/BUILD.gn
+@@ -277,7 +277,7 @@ component("bluetooth") {
+ ]
+ }
+
+- if (is_chromeos || is_linux) {
++ if (is_chromeos || (is_linux && !is_bsd)) {
+ if (use_dbus) {
+ sources += [
+ "bluez/bluetooth_adapter_bluez.cc",
diff --git a/devel/electron5/files/patch-device_gamepad_gamepad__provider.cc b/devel/electron5/files/patch-device_gamepad_gamepad__provider.cc
new file mode 100644
index 000000000000..2554909b1c07
--- /dev/null
+++ b/devel/electron5/files/patch-device_gamepad_gamepad__provider.cc
@@ -0,0 +1,11 @@
+--- device/gamepad/gamepad_provider.cc.orig 2019-04-08 08:32:56 UTC
++++ device/gamepad/gamepad_provider.cc
+@@ -164,7 +164,7 @@ void GamepadProvider::Initialize(std::unique_ptr<Gamep
+ monitor->AddDevicesChangedObserver(this);
+
+ polling_thread_.reset(new base::Thread("Gamepad polling thread"));
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // On Linux, the data fetcher needs to watch file descriptors, so the message
+ // loop needs to be a libevent loop.
+ const base::MessageLoop::Type kMessageLoopType = base::MessageLoop::TYPE_IO;
diff --git a/devel/electron5/files/patch-device_usb_BUILD.gn b/devel/electron5/files/patch-device_usb_BUILD.gn
new file mode 100644
index 000000000000..8db32d7ec105
--- /dev/null
+++ b/devel/electron5/files/patch-device_usb_BUILD.gn
@@ -0,0 +1,21 @@
+--- device/usb/BUILD.gn.orig 2019-04-08 08:32:56 UTC
++++ device/usb/BUILD.gn
+@@ -112,10 +112,17 @@ static_library("usb") {
+ ]
+ }
+
+- if (is_android || is_chromeos || is_linux) {
++ if (is_android || is_chromeos || (is_linux && !is_bsd)) {
+ sources += [
+ "usb_device_handle_usbfs.cc",
+ "usb_device_handle_usbfs.h",
++ ]
++ }
++
++ if (is_bsd) {
++ sources -= [
++ "usb_device_linux.cc",
++ "usb_device_linux.h",
+ ]
+ }
+
diff --git a/devel/electron5/files/patch-device_usb_usb__context.cc b/devel/electron5/files/patch-device_usb_usb__context.cc
new file mode 100644
index 000000000000..976725befc57
--- /dev/null
+++ b/devel/electron5/files/patch-device_usb_usb__context.cc
@@ -0,0 +1,12 @@
+--- device/usb/usb_context.cc.orig 2019-04-08 08:18:20 UTC
++++ device/usb/usb_context.cc
+@@ -58,7 +58,9 @@ void UsbContext::UsbEventHandler::Run() {
+
+ void UsbContext::UsbEventHandler::Stop() {
+ base::subtle::Release_Store(&running_, 0);
++#if !defined(OS_FREEBSD) // XXX(rene) not available in base version
+ libusb_interrupt_handle_event(context_);
++#endif
+ }
+
+ UsbContext::UsbContext(PlatformUsbContext context) : context_(context) {
diff --git a/devel/electron5/files/patch-device_usb_usb__error.cc b/devel/electron5/files/patch-device_usb_usb__error.cc
new file mode 100644
index 000000000000..919ca8366d6b
--- /dev/null
+++ b/devel/electron5/files/patch-device_usb_usb__error.cc
@@ -0,0 +1,11 @@
+--- device/usb/usb_error.cc.orig 2019-04-08 08:18:20 UTC
++++ device/usb/usb_error.cc
+@@ -9,7 +9,7 @@
+ namespace device {
+
+ std::string ConvertPlatformUsbErrorToString(int errcode) {
+- return libusb_strerror(static_cast<libusb_error>(errcode));
++ return "";
+ }
+
+ } // namespace device
diff --git a/devel/electron5/files/patch-device_usb_usb__service__impl.cc b/devel/electron5/files/patch-device_usb_usb__service__impl.cc
new file mode 100644
index 000000000000..e528cef5cbbd
--- /dev/null
+++ b/devel/electron5/files/patch-device_usb_usb__service__impl.cc
@@ -0,0 +1,45 @@
+--- device/usb/usb_service_impl.cc.orig 2019-04-08 08:32:56 UTC
++++ device/usb/usb_service_impl.cc
+@@ -231,8 +231,10 @@ UsbServiceImpl::UsbServiceImpl()
+ }
+
+ UsbServiceImpl::~UsbServiceImpl() {
++#if !defined(OS_FREEBSD)
+ if (hotplug_enabled_)
+ libusb_hotplug_deregister_callback(context_->context(), hotplug_handle_);
++#endif // !defined(OS_FREEBSD)
+ }
+
+ void UsbServiceImpl::GetDevices(const GetDevicesCallback& callback) {
+@@ -287,6 +289,7 @@ void UsbServiceImpl::OnUsbContext(scoped_refptr<UsbCon
+
+ context_ = std::move(context);
+
++#if !defined(OS_FREEBSD)
+ int rv = libusb_hotplug_register_callback(
+ context_->context(),
+ static_cast<libusb_hotplug_event>(LIBUSB_HOTPLUG_EVENT_DEVICE_ARRIVED |
+@@ -299,6 +302,7 @@ void UsbServiceImpl::OnUsbContext(scoped_refptr<UsbCon
+
+ // This will call any enumeration callbacks queued while initializing.
+ RefreshDevices();
++#endif // !defined(OS_FREEBSD)
+
+ #if defined(OS_WIN)
+ DeviceMonitorWin* device_monitor = DeviceMonitorWin::GetForAllInterfaces();
+@@ -495,6 +499,7 @@ void UsbServiceImpl::RemoveDevice(scoped_refptr<UsbDev
+ device->OnDisconnect();
+ }
+
++#if !defined(OS_FREEBSD)
+ // static
+ int LIBUSB_CALL UsbServiceImpl::HotplugCallback(libusb_context* context,
+ libusb_device* device_raw,
+@@ -528,6 +533,7 @@ int LIBUSB_CALL UsbServiceImpl::HotplugCallback(libusb
+
+ return 0;
+ }
++#endif // !defined(OS_FREEBSD)
+
+ void UsbServiceImpl::OnPlatformDeviceAdded(
+ ScopedLibusbDeviceRef platform_device) {
diff --git a/devel/electron5/files/patch-device_usb_usb__service__impl.h b/devel/electron5/files/patch-device_usb_usb__service__impl.h
new file mode 100644
index 000000000000..ad11f82527ed
--- /dev/null
+++ b/devel/electron5/files/patch-device_usb_usb__service__impl.h
@@ -0,0 +1,26 @@
+--- device/usb/usb_service_impl.h.orig 2019-04-08 08:18:20 UTC
++++ device/usb/usb_service_impl.h
+@@ -73,11 +73,13 @@ class UsbServiceImpl :
+ scoped_refptr<UsbDeviceImpl> device);
+ void RemoveDevice(scoped_refptr<UsbDeviceImpl> device);
+
++#if !defined(OS_FREEBSD)
+ // Handle hotplug events from libusb.
+ static int LIBUSB_CALL HotplugCallback(libusb_context* context,
+ libusb_device* device,
+ libusb_hotplug_event event,
+ void* user_data);
++#endif
+ // These functions release a reference to the provided platform device.
+ void OnPlatformDeviceAdded(ScopedLibusbDeviceRef platform_device);
+ void OnPlatformDeviceRemoved(ScopedLibusbDeviceRef platform_device);
+@@ -97,7 +99,9 @@ class UsbServiceImpl :
+ // connected instead of only when a full enumeration is requested.
+ // TODO(reillyg): Support this on all platforms. crbug.com/411715
+ bool hotplug_enabled_ = false;
++#if !defined(OS_FREEBSD)
+ libusb_hotplug_callback_handle hotplug_handle_;
++#endif
+
+ // Enumeration callbacks are queued until an enumeration completes.
+ bool enumeration_ready_ = false;
diff --git a/devel/electron5/files/patch-electron_BUILD.gn b/devel/electron5/files/patch-electron_BUILD.gn
new file mode 100644
index 000000000000..2daec0384286
--- /dev/null
+++ b/devel/electron5/files/patch-electron_BUILD.gn
@@ -0,0 +1,36 @@
+--- electron/BUILD.gn.orig 2019-07-23 18:38:39 UTC
++++ electron/BUILD.gn
+@@ -366,6 +366,15 @@ static_library("electron_lib") {
+ sources = filenames.lib_sources
+ set_sources_assignment_filter(sources_assignment_filter)
+
++ if (is_bsd) {
++ sources -= [
++ "atom/common/crash_reporter/crash_reporter_linux.cc",
++ "atom/common/crash_reporter/crash_reporter_linux.h",
++ "atom/common/crash_reporter/linux/crash_dump_handler.cc",
++ "atom/common/crash_reporter/linux/crash_dump_handler.h",
++ ]
++ }
++
+ if (is_component_build) {
+ defines += [ "NODE_SHARED_MODE" ]
+ }
+@@ -440,7 +449,7 @@ static_library("electron_lib") {
+ if (is_win) {
+ libs += [ "dwmapi.lib" ]
+ }
+- if (is_linux || is_win) {
++ if ((is_linux && !is_bsd) || is_win) {
+ deps += [ "//third_party/breakpad:client" ]
+ include_dirs += [ "//third_party/breakpad" ]
+ }
+@@ -1057,7 +1066,7 @@ dist_zip("electron_dist_zip") {
+ ":licenses",
+ ":electron_version",
+ ]
+- if (is_linux) {
++ if (is_linux && !is_bsd) {
+ data_deps += [ "//sandbox/linux:chrome_sandbox" ]
+ }
+ outputs = [
diff --git a/devel/electron5/files/patch-electron_atom_app_atom__main.cc b/devel/electron5/files/patch-electron_atom_app_atom__main.cc
new file mode 100644
index 000000000000..0074c4419b54
--- /dev/null
+++ b/devel/electron5/files/patch-electron_atom_app_atom__main.cc
@@ -0,0 +1,35 @@
+--- electron/atom/app/atom_main.cc.orig 2019-04-04 16:09:31 UTC
++++ electron/atom/app/atom_main.cc
+@@ -25,12 +25,12 @@
+ #include "base/win/windows_version.h"
+ #include "content/public/app/sandbox_helper_win.h"
+ #include "sandbox/win/src/sandbox_types.h"
+-#elif defined(OS_LINUX) // defined(OS_WIN)
++#elif defined(OS_LINUX) || defined(OS_BSD) // defined(OS_WIN)
+ #include <unistd.h>
+ #include <cstdio>
+ #include "atom/app/atom_main_delegate.h" // NOLINT
+ #include "content/public/app/content_main.h"
+-#else // defined(OS_LINUX)
++#else // defined(OS_LINUX) || defined(OS_BSD)
+ #include <mach-o/dyld.h>
+ #include <unistd.h>
+ #include <cstdio>
+@@ -181,7 +181,7 @@ int APIENTRY wWinMain(HINSTANCE instance, HINSTANCE, w
+ return content::ContentMain(params);
+ }
+
+-#elif defined(OS_LINUX) // defined(OS_WIN)
++#elif defined(OS_LINUX) || defined(OS_BSD) // defined(OS_WIN)
+
+ int main(int argc, char* argv[]) {
+ FixStdioStreams();
+@@ -202,7 +202,7 @@ int main(int argc, char* argv[]) {
+ return content::ContentMain(params);
+ }
+
+-#else // defined(OS_LINUX)
++#else // defined(OS_LINUX) || defined(OS_BSD)
+
+ int main(int argc, char* argv[]) {
+ FixStdioStreams();
diff --git a/devel/electron5/files/patch-electron_atom_app_atom__main__delegate.cc b/devel/electron5/files/patch-electron_atom_app_atom__main__delegate.cc
new file mode 100644
index 000000000000..dac3eabea8cd
--- /dev/null
+++ b/devel/electron5/files/patch-electron_atom_app_atom__main__delegate.cc
@@ -0,0 +1,29 @@
+--- electron/atom/app/atom_main_delegate.cc.orig 2019-12-17 03:11:25 UTC
++++ electron/atom/app/atom_main_delegate.cc
+@@ -8,7 +8,7 @@
+ #include <memory>
+ #include <string>
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include <glib.h> // for g_setenv()
+ #endif
+
+@@ -188,7 +188,7 @@ bool AtomMainDelegate::BasicStartupComplete(int* exit_
+ base::win::DisableHandleVerifier();
+ #endif
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Check for --no-sandbox parameter when running as root.
+ if (getuid() == 0 && IsSandboxEnabled(command_line))
+ LOG(FATAL) << "Running as root without --"
+@@ -213,7 +213,7 @@ void AtomMainDelegate::PostEarlyInitialization(bool is
+ ui::ResourceBundle::GetSharedInstance().GetLocaleFilePath(locale, true);
+ if (!locale_file_path.empty()) {
+ custom_locale = locale;
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ /* When built with USE_GLIB, libcc's GetApplicationLocaleInternal() uses
+ * glib's g_get_language_names(), which keys off of getenv("LC_ALL") */
+ g_setenv("LC_ALL", custom_locale.c_str(), TRUE);
diff --git a/devel/electron5/files/patch-electron_atom_browser_api_atom__api__app.cc b/devel/electron5/files/patch-electron_atom_browser_api_atom__api__app.cc
new file mode 100644
index 000000000000..97f47ba7a2f3
--- /dev/null
+++ b/devel/electron5/files/patch-electron_atom_browser_api_atom__api__app.cc
@@ -0,0 +1,38 @@
+--- electron/atom/browser/api/atom_api_app.cc.orig 2019-04-04 16:09:31 UTC
++++ electron/atom/browser/api/atom_api_app.cc
+@@ -609,7 +609,7 @@ void App::OnWillFinishLaunching() {
+ }
+
+ void App::OnFinishLaunching(const base::DictionaryValue& launch_info) {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Set the application name for audio streams shown in external
+ // applications. Only affects pulseaudio currently.
+ media::AudioManager::SetGlobalAppName(Browser::Get()->GetName());
+@@ -864,7 +864,7 @@ void App::SetPath(mate::Arguments* args,
+ }
+
+ void App::SetDesktopName(const std::string& desktop_name) {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ std::unique_ptr<base::Environment> env(base::Environment::Create());
+ env->SetVar("CHROME_DESKTOP", desktop_name);
+ #endif
+@@ -1313,7 +1313,7 @@ void App::BuildPrototype(v8::Isolate* isolate,
+ .SetMethod("moveToApplicationsFolder", &App::MoveToApplicationsFolder)
+ .SetMethod("isInApplicationsFolder", &App::IsInApplicationsFolder)
+ #endif
+-#if defined(OS_MACOSX) || defined(OS_LINUX)
++#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+ .SetMethod("setAboutPanelOptions",
+ base::Bind(&Browser::SetAboutPanelOptions, browser))
+ .SetMethod("showAboutPanel",
+@@ -1324,7 +1324,7 @@ void App::BuildPrototype(v8::Isolate* isolate,
+ .SetMethod("getJumpListSettings", &App::GetJumpListSettings)
+ .SetMethod("setJumpList", &App::SetJumpList)
+ #endif
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ .SetMethod("isUnityRunning",
+ base::Bind(&Browser::IsUnityRunning, browser))
+ #endif
diff --git a/devel/electron5/files/patch-electron_atom_browser_api_atom__api__web__contents.cc b/devel/electron5/files/patch-electron_atom_browser_api_atom__api__web__contents.cc
new file mode 100644
index 000000000000..8e548542e2ee
--- /dev/null
+++ b/devel/electron5/files/patch-electron_atom_browser_api_atom__api__web__contents.cc
@@ -0,0 +1,34 @@
+--- electron/atom/browser/api/atom_api_web_contents.cc.orig 2019-12-17 03:11:25 UTC
++++ electron/atom/browser/api/atom_api_web_contents.cc
+@@ -97,11 +97,11 @@
+ #include "ui/base/cocoa/defaults_utils.h"
+ #endif
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include "ui/views/linux_ui/linux_ui.h"
+ #endif
+
+-#if defined(OS_LINUX) || defined(OS_WIN)
++#if defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD)
+ #include "content/public/common/renderer_preferences.h"
+ #include "ui/gfx/font_render_params.h"
+ #endif
+@@ -428,7 +428,7 @@ void WebContents::InitWithSessionAndOptions(
+ auto* prefs = web_contents()->GetMutableRendererPrefs();
+ prefs->accept_languages = g_browser_process->GetApplicationLocale();
+
+-#if defined(OS_LINUX) || defined(OS_WIN)
++#if defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD)
+ // Update font settings.
+ static const base::NoDestructor<gfx::FontRenderParams> params(
+ gfx::GetFontRenderParams(gfx::FontRenderParamsQuery(), nullptr));
+@@ -445,7 +445,7 @@ void WebContents::InitWithSessionAndOptions(
+ base::TimeDelta interval;
+ if (ui::TextInsertionCaretBlinkPeriod(&interval))
+ prefs->caret_blink_interval = interval;
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ views::LinuxUI* linux_ui = views::LinuxUI::instance();
+ if (linux_ui)
+ prefs->caret_blink_interval = linux_ui->GetCursorBlinkInterval();
diff --git a/devel/electron5/files/patch-electron_atom_browser_atom__browser__main__parts.cc b/devel/electron5/files/patch-electron_atom_browser_atom__browser__main__parts.cc
new file mode 100644
index 000000000000..6aa2b67607b3
--- /dev/null
+++ b/devel/electron5/files/patch-electron_atom_browser_atom__browser__main__parts.cc
@@ -0,0 +1,11 @@
+--- electron/atom/browser/atom_browser_main_parts.cc.orig 2019-12-19 06:05:28 UTC
++++ electron/atom/browser/atom_browser_main_parts.cc
+@@ -6,7 +6,7 @@
+
+ #include <utility>
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include <glib.h> // for g_setenv()
+ #endif
+
diff --git a/devel/electron5/files/patch-electron_atom_browser_atom__browser__main__parts__posix.cc b/devel/electron5/files/patch-electron_atom_browser_atom__browser__main__parts__posix.cc
new file mode 100644
index 000000000000..6555d08f055e
--- /dev/null
+++ b/devel/electron5/files/patch-electron_atom_browser_atom__browser__main__parts__posix.cc
@@ -0,0 +1,20 @@
+--- electron/atom/browser/atom_browser_main_parts_posix.cc.orig 2019-04-04 16:09:31 UTC
++++ electron/atom/browser/atom_browser_main_parts_posix.cc
+@@ -182,6 +182,9 @@ void AtomBrowserMainParts::HandleShutdownSignals() {
+ g_pipe_pid = getpid();
+ g_shutdown_pipe_read_fd = pipefd[0];
+ g_shutdown_pipe_write_fd = pipefd[1];
++#if defined(OS_BSD)
++ const size_t kShutdownDetectorThreadStackSize = 0;
++#else
+ #if !defined(ADDRESS_SANITIZER) && !defined(KEEP_SHADOW_STACKS)
+ const size_t kShutdownDetectorThreadStackSize = PTHREAD_STACK_MIN * 2;
+ #else
+@@ -189,6 +192,7 @@ void AtomBrowserMainParts::HandleShutdownSignals() {
+ // shadow stacks) bloat the stack frames, so we need to increase the stack
+ // size to avoid hitting the guard page.
+ const size_t kShutdownDetectorThreadStackSize = PTHREAD_STACK_MIN * 4;
++#endif
+ #endif
+ // TODO(viettrungluu,willchan): crbug.com/29675 - This currently leaks, so
+ // if you change this, you'll probably need to change the suppression.
diff --git a/devel/electron5/files/patch-electron_atom_browser_atom__paths.h b/devel/electron5/files/patch-electron_atom_browser_atom__paths.h
new file mode 100644
index 000000000000..3f7191c61ed9
--- /dev/null
+++ b/devel/electron5/files/patch-electron_atom_browser_atom__paths.h
@@ -0,0 +1,11 @@
+--- electron/atom/browser/atom_paths.h.orig 2019-04-04 16:09:31 UTC
++++ electron/atom/browser/atom_paths.h
+@@ -26,7 +26,7 @@ enum {
+ DIR_USER_CACHE, // Directory where user cache can be written.
+ DIR_APP_LOGS, // Directory where app logs live
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ DIR_APP_DATA, // Application Data directory under the user profile.
+ #else
+ DIR_APP_DATA = base::DIR_APP_DATA,
diff --git a/devel/electron5/files/patch-electron_atom_browser_browser.h b/devel/electron5/files/patch-electron_atom_browser_browser.h
new file mode 100644
index 000000000000..d7144305fcef
--- /dev/null
+++ b/devel/electron5/files/patch-electron_atom_browser_browser.h
@@ -0,0 +1,33 @@
+--- electron/atom/browser/browser.h.orig 2019-04-04 16:09:31 UTC
++++ electron/atom/browser/browser.h
+@@ -182,7 +182,7 @@ class Browser : public WindowListObserver {
+
+ #endif // defined(OS_MACOSX)
+
+-#if defined(OS_MACOSX) || defined(OS_LINUX)
++#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+ void ShowAboutPanel();
+ void SetAboutPanelOptions(const base::DictionaryValue& options);
+ #endif
+@@ -210,10 +210,10 @@ class Browser : public WindowListObserver {
+ PCWSTR GetAppUserModelID();
+ #endif // defined(OS_WIN)
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Whether Unity launcher is running.
+ bool IsUnityRunning();
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+
+ // Tell the application to open a file.
+ bool OpenFile(const std::string& file_path);
+@@ -294,7 +294,7 @@ class Browser : public WindowListObserver {
+
+ std::unique_ptr<util::Promise> ready_promise_;
+
+-#if defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ base::DictionaryValue about_panel_options_;
+ #endif
+
diff --git a/devel/electron5/files/patch-electron_atom_browser_native__window__views.cc b/devel/electron5/files/patch-electron_atom_browser_native__window__views.cc
new file mode 100644
index 000000000000..684b3c62ad07
--- /dev/null
+++ b/devel/electron5/files/patch-electron_atom_browser_native__window__views.cc
@@ -0,0 +1,47 @@
+--- electron/atom/browser/native_window_views.cc.orig 2019-08-19 21:30:51 UTC
++++ electron/atom/browser/native_window_views.cc
+@@ -290,7 +290,7 @@ NativeWindowViews::NativeWindowViews(const mate::Dicti
+ last_normal_bounds_ = GetBounds();
+ #endif
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Listen to move events.
+ aura::Window* window = GetNativeWindow();
+ if (window)
+@@ -306,7 +306,7 @@ NativeWindowViews::~NativeWindowViews() {
+ SetForwardMouseMessages(false);
+ #endif
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ aura::Window* window = GetNativeWindow();
+ if (window)
+ window->RemovePreTargetHandler(this);
+@@ -1228,7 +1228,7 @@ void NativeWindowViews::OnWidgetBoundsChanged(views::W
+ }
+
+ void NativeWindowViews::OnWidgetDestroying(views::Widget* widget) {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ aura::Window* window = GetNativeWindow();
+ if (window)
+ window->RemovePreTargetHandler(this);
+@@ -1321,7 +1321,7 @@ void NativeWindowViews::OnWidgetMove() {
+ void NativeWindowViews::HandleKeyboardEvent(
+ content::WebContents*,
+ const content::NativeWebKeyboardEvent& event) {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ if (event.windows_key_code == ui::VKEY_BROWSER_BACK)
+ NotifyWindowExecuteAppCommand(kBrowserBackward);
+ else if (event.windows_key_code == ui::VKEY_BROWSER_FORWARD)
+@@ -1333,7 +1333,7 @@ void NativeWindowViews::HandleKeyboardEvent(
+ root_view_->HandleKeyEvent(event);
+ }
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ void NativeWindowViews::OnMouseEvent(ui::MouseEvent* event) {
+ if (event->type() != ui::ET_MOUSE_PRESSED)
+ return;
diff --git a/devel/electron5/files/patch-electron_atom_browser_native__window__views.h b/devel/electron5/files/patch-electron_atom_browser_native__window__views.h
new file mode 100644
index 000000000000..7ab9fa37ba58
--- /dev/null
+++ b/devel/electron5/files/patch-electron_atom_browser_native__window__views.h
@@ -0,0 +1,11 @@
+--- electron/atom/browser/native_window_views.h.orig 2019-04-04 16:09:31 UTC
++++ electron/atom/browser/native_window_views.h
+@@ -209,7 +209,7 @@ class NativeWindowViews : public NativeWindow,
+ content::WebContents*,
+ const content::NativeWebKeyboardEvent& event) override;
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // ui::EventHandler:
+ void OnMouseEvent(ui::MouseEvent* event) override;
+ #endif
diff --git a/devel/electron5/files/patch-electron_atom_browser_relauncher__linux.cc b/devel/electron5/files/patch-electron_atom_browser_relauncher__linux.cc
new file mode 100644
index 000000000000..132838134d02
--- /dev/null
+++ b/devel/electron5/files/patch-electron_atom_browser_relauncher__linux.cc
@@ -0,0 +1,32 @@
+--- electron/atom/browser/relauncher_linux.cc.orig 2019-04-04 16:09:31 UTC
++++ electron/atom/browser/relauncher_linux.cc
+@@ -6,8 +6,10 @@
+
+ #include <fcntl.h>
+ #include <signal.h>
++#if !defined(__FreeBSD__)
+ #include <sys/prctl.h>
+ #include <sys/signalfd.h>
++#endif
+
+ #include "base/files/file_util.h"
+ #include "base/files/scoped_file.h"
+@@ -26,6 +28,10 @@ void RelauncherSynchronizeWithParent() {
+ base::ScopedFD relauncher_sync_fd(kRelauncherSyncFD);
+ static const auto signum = SIGUSR2;
+
++#if defined(__FreeBSD__)
++ PLOG(ERROR) << "signalfd & prctl";
++ fprintf(stderr, "Not Implemented signalfd & prctl in atom/browser/relauncher_linux.cc");
++#else
+ // send signum to current process when parent process ends.
+ if (HANDLE_EINTR(prctl(PR_SET_PDEATHSIG, signum)) != 0) {
+ PLOG(ERROR) << "prctl";
+@@ -50,6 +56,7 @@ void RelauncherSynchronizeWithParent() {
+
+ // Wait for the parent to exit
+ parentWaiter.Wait();
++#endif
+ }
+
+ int LaunchProgram(const StringVector& relauncher_args,
diff --git a/devel/electron5/files/patch-electron_atom_browser_ui_views_atom__views__delegate.cc b/devel/electron5/files/patch-electron_atom_browser_ui_views_atom__views__delegate.cc
new file mode 100644
index 000000000000..2f4f2d4a5a61
--- /dev/null
+++ b/devel/electron5/files/patch-electron_atom_browser_ui_views_atom__views__delegate.cc
@@ -0,0 +1,38 @@
+--- electron/atom/browser/ui/views/atom_views_delegate.cc.orig 2019-04-04 16:09:31 UTC
++++ electron/atom/browser/ui/views/atom_views_delegate.cc
+@@ -9,7 +9,7 @@
+ #include "ui/views/widget/desktop_aura/desktop_native_widget_aura.h"
+ #include "ui/views/widget/native_widget_aura.h"
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include "base/environment.h"
+ #include "base/nix/xdg_util.h"
+ #include "ui/views/linux_ui/linux_ui.h"
+@@ -17,7 +17,7 @@
+
+ namespace {
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ bool IsDesktopEnvironmentUnity() {
+ std::unique_ptr<base::Environment> env(base::Environment::Create());
+ base::nix::DesktopEnvironment desktop_env =
+@@ -68,7 +68,7 @@ bool ViewsDelegate::IsWindowInMetro(gfx::NativeWindow
+ return false;
+ }
+
+-#elif defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#elif (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ gfx::ImageSkia* ViewsDelegate::GetDefaultWindowIcon() const {
+ return NULL;
+ }
+@@ -100,7 +100,7 @@ void ViewsDelegate::OnBeforeWidgetInit(
+ }
+
+ bool ViewsDelegate::WindowManagerProvidesTitleBar(bool maximized) {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // On Ubuntu Unity, the system always provides a title bar for maximized
+ // windows.
+ if (!maximized)
diff --git a/devel/electron5/files/patch-electron_atom_browser_ui_views_atom__views__delegate.h b/devel/electron5/files/patch-electron_atom_browser_ui_views_atom__views__delegate.h
new file mode 100644
index 000000000000..f282feba6bac
--- /dev/null
+++ b/devel/electron5/files/patch-electron_atom_browser_ui_views_atom__views__delegate.h
@@ -0,0 +1,11 @@
+--- electron/atom/browser/ui/views/atom_views_delegate.h.orig 2019-04-04 16:09:31 UTC
++++ electron/atom/browser/ui/views/atom_views_delegate.h
+@@ -37,7 +37,7 @@ class ViewsDelegate : public views::ViewsDelegate {
+ HICON GetDefaultWindowIcon() const override;
+ HICON GetSmallWindowIcon() const override;
+ bool IsWindowInMetro(gfx::NativeWindow window) const override;
+-#elif defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#elif (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ gfx::ImageSkia* GetDefaultWindowIcon() const override;
+ #endif
+ views::NonClientFrameView* CreateDefaultNonClientFrameView(
diff --git a/devel/electron5/files/patch-electron_atom_browser_ui_views_submenu__button.cc b/devel/electron5/files/patch-electron_atom_browser_ui_views_submenu__button.cc
new file mode 100644
index 000000000000..a51eb62cdf35
--- /dev/null
+++ b/devel/electron5/files/patch-electron_atom_browser_ui_views_submenu__button.cc
@@ -0,0 +1,11 @@
+--- electron/atom/browser/ui/views/submenu_button.cc.orig 2019-04-04 16:09:31 UTC
++++ electron/atom/browser/ui/views/submenu_button.cc
+@@ -25,7 +25,7 @@ SubmenuButton::SubmenuButton(const base::string16& tit
+ : views::MenuButton(gfx::RemoveAcceleratorChar(title, '&', NULL, NULL),
+ menu_button_listener),
+ background_color_(background_color) {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Dont' use native style border.
+ SetBorder(CreateDefaultBorder());
+ #endif
diff --git a/devel/electron5/files/patch-electron_atom_common_api_atom__api__crash__reporter.cc b/devel/electron5/files/patch-electron_atom_common_api_atom__api__crash__reporter.cc
new file mode 100644
index 000000000000..40e69d413987
--- /dev/null
+++ b/devel/electron5/files/patch-electron_atom_common_api_atom__api__crash__reporter.cc
@@ -0,0 +1,42 @@
+--- electron/atom/common/api/atom_api_crash_reporter.cc.orig 2019-04-04 16:09:31 UTC
++++ electron/atom/common/api/atom_api_crash_reporter.cc
+@@ -35,15 +35,23 @@ struct Converter<CrashReporter::UploadReportResult> {
+ namespace {
+
+ void AddExtraParameter(const std::string& key, const std::string& value) {
++#if !defined(OS_BSD)
+ CrashReporter::GetInstance()->AddExtraParameter(key, value);
++#endif
+ }
+
+ void RemoveExtraParameter(const std::string& key) {
++#if !defined(OS_BSD)
+ CrashReporter::GetInstance()->RemoveExtraParameter(key);
++#endif
+ }
+
+ std::map<std::string, std::string> GetParameters() {
++#if !defined(OS_BSD)
+ return CrashReporter::GetInstance()->GetParameters();
++#else
++ return std::map<std::string, std::string>();
++#endif
+ }
+
+ void Initialize(v8::Local<v8::Object> exports,
+@@ -51,6 +59,7 @@ void Initialize(v8::Local<v8::Object> exports,
+ v8::Local<v8::Context> context,
+ void* priv) {
+ mate::Dictionary dict(context->GetIsolate(), exports);
++#if !defined(OS_BSD)
+ auto reporter = base::Unretained(CrashReporter::GetInstance());
+ dict.SetMethod("start", base::Bind(&CrashReporter::Start, reporter));
+ dict.SetMethod("addExtraParameter", &AddExtraParameter);
+@@ -62,6 +71,7 @@ void Initialize(v8::Local<v8::Object> exports,
+ base::Bind(&CrashReporter::SetUploadToServer, reporter));
+ dict.SetMethod("getUploadToServer",
+ base::Bind(&CrashReporter::GetUploadToServer, reporter));
++#endif
+ }
+
+ } // namespace
diff --git a/devel/electron5/files/patch-electron_atom_common_api_atom__bindings.cc b/devel/electron5/files/patch-electron_atom_common_api_atom__bindings.cc
new file mode 100644
index 000000000000..0d33a0aefeee
--- /dev/null
+++ b/devel/electron5/files/patch-electron_atom_common_api_atom__bindings.cc
@@ -0,0 +1,11 @@
+--- electron/atom/common/api/atom_bindings.cc.orig 2019-12-19 06:08:26 UTC
++++ electron/atom/common/api/atom_bindings.cc
+@@ -273,7 +273,7 @@ void AtomBindings::DidReceiveMemoryDump(
+ if (base::GetCurrentProcId() == dump.pid()) {
+ mate::Dictionary dict = mate::Dictionary::CreateEmpty(isolate);
+ const auto& osdump = dump.os_dump();
+-#if defined(OS_LINUX) || defined(OS_WIN)
++#if defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD)
+ dict.Set("residentSet", osdump.resident_set_kb);
+ #endif
+ dict.Set("private", osdump.private_footprint_kb);
diff --git a/devel/electron5/files/patch-electron_atom_common_atom__command__line.cc b/devel/electron5/files/patch-electron_atom_common_atom__command__line.cc
new file mode 100644
index 000000000000..a735ffad0884
--- /dev/null
+++ b/devel/electron5/files/patch-electron_atom_common_atom__command__line.cc
@@ -0,0 +1,11 @@
+--- electron/atom/common/atom_command_line.cc.orig 2019-04-04 16:09:31 UTC
++++ electron/atom/common/atom_command_line.cc
+@@ -26,7 +26,7 @@ void AtomCommandLine::Init(int argc, base::CommandLine
+ argv_.assign(argv, argv + argc);
+ }
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // static
+ void AtomCommandLine::InitializeFromCommandLine() {
+ argv_ = base::CommandLine::ForCurrentProcess()->argv();
diff --git a/devel/electron5/files/patch-electron_atom_common_atom__command__line.h b/devel/electron5/files/patch-electron_atom_common_atom__command__line.h
new file mode 100644
index 000000000000..556a52335549
--- /dev/null
+++ b/devel/electron5/files/patch-electron_atom_common_atom__command__line.h
@@ -0,0 +1,11 @@
+--- electron/atom/common/atom_command_line.h.orig 2019-04-04 16:09:31 UTC
++++ electron/atom/common/atom_command_line.h
+@@ -21,7 +21,7 @@ class AtomCommandLine {
+
+ static void Init(int argc, base::CommandLine::CharType** argv);
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // On Linux the command line has to be read from base::CommandLine since
+ // it is using zygote.
+ static void InitializeFromCommandLine();
diff --git a/devel/electron5/files/patch-electron_atom_common_crash__reporter_crash__reporter.cc b/devel/electron5/files/patch-electron_atom_common_crash__reporter_crash__reporter.cc
new file mode 100644
index 000000000000..f0b4664f0b16
--- /dev/null
+++ b/devel/electron5/files/patch-electron_atom_common_crash__reporter_crash__reporter.cc
@@ -0,0 +1,14 @@
+--- electron/atom/common/crash_reporter/crash_reporter.cc.orig 2019-04-04 16:09:31 UTC
++++ electron/atom/common/crash_reporter/crash_reporter.cc
+@@ -102,7 +102,11 @@ CrashReporter* CrashReporter::GetInstance() {
+ #endif
+
+ void CrashReporter::StartInstance(const mate::Dictionary& options) {
++#if !defined(OS_BSD)
+ auto* reporter = GetInstance();
++#else
++ CrashReporter *reporter = NULL;
++#endif
+ if (!reporter)
+ return;
+
diff --git a/devel/electron5/files/patch-electron_atom_common_node__bindings.cc b/devel/electron5/files/patch-electron_atom_common_node__bindings.cc
new file mode 100644
index 000000000000..f54a497962e0
--- /dev/null
+++ b/devel/electron5/files/patch-electron_atom_common_node__bindings.cc
@@ -0,0 +1,11 @@
+--- electron/atom/common/node_bindings.cc.orig 2019-06-26 20:05:00 UTC
++++ electron/atom/common/node_bindings.cc
+@@ -210,7 +210,7 @@ void NodeBindings::Initialize() {
+ node::g_standalone_mode = browser_env_ == BROWSER;
+ node::g_upstream_node_mode = false;
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Get real command line in renderer process forked by zygote.
+ if (browser_env_ != BROWSER)
+ AtomCommandLine::InitializeFromCommandLine();
diff --git a/devel/electron5/files/patch-electron_atom_common_node__bindings__linux.cc b/devel/electron5/files/patch-electron_atom_common_node__bindings__linux.cc
new file mode 100644
index 000000000000..62927deda81e
--- /dev/null
+++ b/devel/electron5/files/patch-electron_atom_common_node__bindings__linux.cc
@@ -0,0 +1,69 @@
+--- electron/atom/common/node_bindings_linux.cc.orig 2019-04-04 16:09:31 UTC
++++ electron/atom/common/node_bindings_linux.cc
+@@ -4,17 +4,31 @@
+
+ #include "atom/common/node_bindings_linux.h"
+
++#if !defined(OS_BSD)
+ #include <sys/epoll.h>
++#else
++#include <errno.h>
++#include <sys/select.h>
++#include <sys/sysctl.h>
++#include <sys/time.h>
++#include <sys/types.h>
++#endif
+
+ namespace atom {
+
+ NodeBindingsLinux::NodeBindingsLinux(BrowserEnvironment browser_env)
++#if !defined(OS_BSD)
+ : NodeBindings(browser_env), epoll_(epoll_create(1)) {
++#else
++ : NodeBindings(browser_env) {
++#endif
++#if !defined(OS_BSD)
+ int backend_fd = uv_backend_fd(uv_loop_);
+ struct epoll_event ev = {0};
+ ev.events = EPOLLIN;
+ ev.data.fd = backend_fd;
+ epoll_ctl(epoll_, EPOLL_CTL_ADD, backend_fd, &ev);
++#endif
+ }
+
+ NodeBindingsLinux::~NodeBindingsLinux() {}
+@@ -37,6 +51,7 @@ void NodeBindingsLinux::OnWatcherQueueChanged(uv_loop_
+ }
+
+ void NodeBindingsLinux::PollEvents() {
++#if !defined(OS_BSD)
+ int timeout = uv_backend_timeout(uv_loop_);
+
+ // Wait for new libuv events.
+@@ -45,6 +60,26 @@ void NodeBindingsLinux::PollEvents() {
+ struct epoll_event ev;
+ r = epoll_wait(epoll_, &ev, 1, timeout);
+ } while (r == -1 && errno == EINTR);
++#else
++ struct timeval tv;
++ int timeout = uv_backend_timeout(uv_loop_);
++ if (timeout != -1) {
++ tv.tv_sec = timeout / 1000;
++ tv.tv_usec = (timeout % 1000) * 1000;
++ }
++
++ fd_set readset;
++ int fd = uv_backend_fd(uv_loop_);
++ FD_ZERO(&readset);
++ FD_SET(fd, &readset);
++
++ // Wait for new libuv events.
++ int r;
++ do {
++ r = select(fd + 1, &readset, nullptr, nullptr,
++ timeout == -1 ? nullptr : &tv);
++ } while (r == -1 && errno == EINTR);
++#endif
+ }
+
+ // static
diff --git a/devel/electron5/files/patch-electron_atom_common_platform__util.h b/devel/electron5/files/patch-electron_atom_common_platform__util.h
new file mode 100644
index 000000000000..15c526cf5e51
--- /dev/null
+++ b/devel/electron5/files/patch-electron_atom_common_platform__util.h
@@ -0,0 +1,11 @@
+--- electron/atom/common/platform_util.h.orig 2019-04-04 16:09:31 UTC
++++ electron/atom/common/platform_util.h
+@@ -64,7 +64,7 @@ bool GetLoginItemEnabled();
+ bool SetLoginItemEnabled(bool enabled);
+ #endif
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Returns a success flag.
+ // Unlike libgtkui, does *not* use "chromium-browser.desktop" as a fallback.
+ bool GetDesktopName(std::string* setme);
diff --git a/devel/electron5/files/patch-electron_chromium__src_chrome_browser_process__singleton__posix.cc b/devel/electron5/files/patch-electron_chromium__src_chrome_browser_process__singleton__posix.cc
new file mode 100644
index 000000000000..2d44062601e5
--- /dev/null
+++ b/devel/electron5/files/patch-electron_chromium__src_chrome_browser_process__singleton__posix.cc
@@ -0,0 +1,20 @@
+--- electron/chromium_src/chrome/browser/process_singleton_posix.cc.orig 2019-12-17 03:11:25 UTC
++++ electron/chromium_src/chrome/browser/process_singleton_posix.cc
+@@ -95,7 +95,7 @@
+ #include "net/base/network_interfaces.h"
+ #include "ui/base/l10n/l10n_util.h"
+
+-#if defined(TOOLKIT_VIEWS) && defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if defined(TOOLKIT_VIEWS) && ((defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD))
+ #include "ui/views/linux_ui/linux_ui.h"
+ #endif
+
+@@ -862,7 +862,7 @@ ProcessSingleton::NotifyResult ProcessSingleton::Notif
+ // The other process is shutting down, it's safe to start a new process.
+ return PROCESS_NONE;
+ } else if (strncmp(buf, kACKToken, base::size(kACKToken) - 1) == 0) {
+-#if defined(TOOLKIT_VIEWS) && defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if defined(TOOLKIT_VIEWS) && ((defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD))
+ // Likely NULL in unit tests.
+ views::LinuxUI* linux_ui = views::LinuxUI::instance();
+ if (linux_ui)
diff --git a/devel/electron5/files/patch-electron_default__app_default__app.js b/devel/electron5/files/patch-electron_default__app_default__app.js
new file mode 100644
index 000000000000..ad4007078dbd
--- /dev/null
+++ b/devel/electron5/files/patch-electron_default__app_default__app.js
@@ -0,0 +1,11 @@
+--- electron/default_app/default_app.js.orig 2019-12-19 06:10:58 UTC
++++ electron/default_app/default_app.js
+@@ -27,7 +27,7 @@ exports.load = async (appUrl) => {
+ show: false
+ }
+
+- if (process.platform === 'linux') {
++ if (process.platform === 'linux' || process.platform === 'freebsd') {
+ options.icon = path.join(__dirname, 'icon.png')
+ }
+
diff --git a/devel/electron5/files/patch-electron_lib_browser_api_app.js b/devel/electron5/files/patch-electron_lib_browser_api_app.js
new file mode 100644
index 000000000000..2dbbfb776b86
--- /dev/null
+++ b/devel/electron5/files/patch-electron_lib_browser_api_app.js
@@ -0,0 +1,11 @@
+--- electron/lib/browser/api/app.js.orig 2019-06-04 19:13:27 UTC
++++ electron/lib/browser/api/app.js
+@@ -84,7 +84,7 @@ if (process.platform === 'darwin') {
+ }
+ }
+
+-if (process.platform === 'linux') {
++if (process.platform === 'linux' || process.platform === 'freebsd') {
+ app.launcher = {
+ setBadgeCount: bindings.unityLauncherSetBadgeCount,
+ getBadgeCount: bindings.unityLauncherGetBadgeCount,
diff --git a/devel/electron5/files/patch-electron_lib_browser_api_dialog.js b/devel/electron5/files/patch-electron_lib_browser_api_dialog.js
new file mode 100644
index 000000000000..4f67fb9f9434
--- /dev/null
+++ b/devel/electron5/files/patch-electron_lib_browser_api_dialog.js
@@ -0,0 +1,11 @@
+--- electron/lib/browser/api/dialog.js.orig 2019-05-23 04:03:08 UTC
++++ electron/lib/browser/api/dialog.js
+@@ -54,7 +54,7 @@ const normalizeAccessKey = (text) => {
+ // existing single underscores with a second underscore, replace double
+ // ampersands with a single ampersand, and replace a single ampersand with
+ // a single underscore
+- if (process.platform === 'linux') {
++ if (process.platform === 'linux' || process.platform === 'freebsd') {
+ return text.replace(/_/g, '__').replace(/&(.?)/g, (match, after) => {
+ if (after === '&') return after
+ return `_${after}`
diff --git a/devel/electron5/files/patch-electron_lib_browser_api_menu-item-roles.js b/devel/electron5/files/patch-electron_lib_browser_api_menu-item-roles.js
new file mode 100644
index 000000000000..2259913a86f7
--- /dev/null
+++ b/devel/electron5/files/patch-electron_lib_browser_api_menu-item-roles.js
@@ -0,0 +1,11 @@
+--- electron/lib/browser/api/menu-item-roles.js.orig 2019-05-23 04:04:22 UTC
++++ electron/lib/browser/api/menu-item-roles.js
+@@ -4,7 +4,7 @@ const { app } = require('electron')
+
+ const isMac = process.platform === 'darwin'
+ const isWindows = process.platform === 'win32'
+-const isLinux = process.platform === 'linux'
++const isLinux = (process.platform === 'linux' || process.platform === 'freebsd')
+
+ const roles = {
+ about: {
diff --git a/devel/electron5/files/patch-electron_lib_browser_api_power-monitor.js b/devel/electron5/files/patch-electron_lib_browser_api_power-monitor.js
new file mode 100644
index 000000000000..3e130dc4bfc9
--- /dev/null
+++ b/devel/electron5/files/patch-electron_lib_browser_api_power-monitor.js
@@ -0,0 +1,11 @@
+--- electron/lib/browser/api/power-monitor.js.orig 2019-05-23 04:05:25 UTC
++++ electron/lib/browser/api/power-monitor.js
+@@ -8,7 +8,7 @@ Object.setPrototypeOf(PowerMonitor.prototype, EventEmi
+ EventEmitter.call(powerMonitor)
+
+ // On Linux we need to call blockShutdown() to subscribe to shutdown event.
+-if (process.platform === 'linux') {
++if (process.platform === 'linux' || process.platform === 'freebsd') {
+ powerMonitor.on('newListener', (event) => {
+ if (event === 'shutdown' && powerMonitor.listenerCount('shutdown') === 0) {
+ powerMonitor.blockShutdown()
diff --git a/devel/electron5/files/patch-electron_lib_browser_init.js b/devel/electron5/files/patch-electron_lib_browser_init.js
new file mode 100644
index 000000000000..46f3242ca52e
--- /dev/null
+++ b/devel/electron5/files/patch-electron_lib_browser_init.js
@@ -0,0 +1,11 @@
+--- electron/lib/browser/init.js.orig 2019-05-23 04:06:34 UTC
++++ electron/lib/browser/init.js
+@@ -164,7 +164,7 @@ const mainStartupScript = packageJson.main || 'index.j
+ const KNOWN_XDG_DESKTOP_VALUES = ['Pantheon', 'Unity:Unity7', 'pop:GNOME']
+
+ function currentPlatformSupportsAppIndicator () {
+- if (process.platform !== 'linux') return false
++ if (process.platform !== 'linux' && process.platform !== 'freebsd') return false
+ const currentDesktop = process.env.XDG_CURRENT_DESKTOP
+
+ if (!currentDesktop) return false
diff --git a/devel/electron5/files/patch-electron_lib_common_api_clipboard.js b/devel/electron5/files/patch-electron_lib_common_api_clipboard.js
new file mode 100644
index 000000000000..55a61b461274
--- /dev/null
+++ b/devel/electron5/files/patch-electron_lib_common_api_clipboard.js
@@ -0,0 +1,10 @@
+--- electron/lib/common/api/clipboard.js.orig 2019-05-23 04:07:30 UTC
++++ electron/lib/common/api/clipboard.js
+@@ -1,6 +1,6 @@
+ 'use strict'
+
+-if (process.platform === 'linux' && process.type === 'renderer') {
++if ((process.platform === 'linux' || process.platform === 'freebsd') && process.type === 'renderer') {
+ // On Linux we could not access clipboard in renderer process.
+ const { getRemote } = require('@electron/internal/renderer/remote')
+ module.exports = getRemote('clipboard')
diff --git a/devel/electron5/files/patch-electron_script_lib_config.py b/devel/electron5/files/patch-electron_script_lib_config.py
new file mode 100644
index 000000000000..5869a1ee8c2c
--- /dev/null
+++ b/devel/electron5/files/patch-electron_script_lib_config.py
@@ -0,0 +1,11 @@
+--- electron/script/lib/config.py.orig 2019-12-19 06:24:18 UTC
++++ electron/script/lib/config.py
+@@ -21,6 +21,8 @@ PLATFORM = {
+ 'cygwin': 'win32',
+ 'darwin': 'darwin',
+ 'linux2': 'linux',
++ 'freebsd11': 'freebsd',
++ 'freebsd12': 'freebsd',
+ 'win32': 'win32',
+ }[sys.platform]
+
diff --git a/devel/electron5/files/patch-electron_script_lib_utils.js b/devel/electron5/files/patch-electron_script_lib_utils.js
new file mode 100644
index 000000000000..9faa8173951e
--- /dev/null
+++ b/devel/electron5/files/patch-electron_script_lib_utils.js
@@ -0,0 +1,11 @@
+--- electron/script/lib/utils.js.orig 2019-12-17 03:11:25 UTC
++++ electron/script/lib/utils.js
+@@ -12,7 +12,7 @@ function getElectronExec () {
+ return `out/${OUT_DIR}/Electron.app/Contents/MacOS/Electron`
+ case 'win32':
+ return `out/${OUT_DIR}/electron.exe`
+- case 'linux':
++ case 'linux': case 'freebsd':
+ return `out/${OUT_DIR}/electron`
+ default:
+ throw new Error('Unknown platform')
diff --git a/devel/electron5/files/patch-electron_script_spec-runner.js b/devel/electron5/files/patch-electron_script_spec-runner.js
new file mode 100644
index 000000000000..a0651c1c5713
--- /dev/null
+++ b/devel/electron5/files/patch-electron_script_spec-runner.js
@@ -0,0 +1,11 @@
+--- electron/script/spec-runner.js.orig 2019-12-19 06:12:13 UTC
++++ electron/script/spec-runner.js
+@@ -40,7 +40,7 @@ function saveSpecHash ([newSpecHash, newSpecInstallHas
+ async function runElectronTests () {
+ let exe = path.resolve(BASE, utils.getElectronExec())
+ const args = process.argv.slice(2)
+- if (process.platform === 'linux') {
++ if (process.platform === 'linux' || process.platform === 'freebsd') {
+ args.unshift(path.resolve(__dirname, 'dbus_mock.py'), exe)
+ exe = 'python'
+ }
diff --git a/devel/electron5/files/patch-electron_spec_api-app-spec.js b/devel/electron5/files/patch-electron_spec_api-app-spec.js
new file mode 100644
index 000000000000..2dcca1b118eb
--- /dev/null
+++ b/devel/electron5/files/patch-electron_spec_api-app-spec.js
@@ -0,0 +1,83 @@
+--- electron/spec/api-app-spec.js.orig 2019-12-17 03:11:25 UTC
++++ electron/spec/api-app-spec.js
+@@ -129,7 +129,7 @@ describe('app module', () => {
+ describe('app.getLocaleCountryCode()', () => {
+ it('should be empty or have length of two', () => {
+ let expectedLength = 2
+- if (isCI && process.platform === 'linux') {
++ if (isCI && (process.platform === 'linux' || process.platform === 'freebsd')) {
+ // Linux CI machines have no locale.
+ expectedLength = 0
+ }
+@@ -189,7 +189,7 @@ describe('app module', () => {
+ })
+
+ it('exits gracefully', async function () {
+- if (!['darwin', 'linux'].includes(process.platform)) {
++ if (!['darwin', 'linux', 'freebsd'].includes(process.platform)) {
+ this.skip()
+ return
+ }
+@@ -289,7 +289,7 @@ describe('app module', () => {
+ let w = null
+
+ before(function () {
+- if (process.platform !== 'linux') {
++ if (process.platform !== 'linux' && process.platform !== 'freebsd') {
+ this.skip()
+ }
+ })
+@@ -482,7 +482,7 @@ describe('app module', () => {
+ describe('app.setBadgeCount', () => {
+ const platformIsNotSupported =
+ (process.platform === 'win32') ||
+- (process.platform === 'linux' && !app.isUnityRunning())
++ (process.platform === 'linux' && !app.isUnityRunning()) || (process.platform === 'freebsd')
+ const platformIsSupported = !platformIsNotSupported
+
+ const expectedBadgeCount = 42
+@@ -536,7 +536,7 @@ describe('app module', () => {
+ ]
+
+ before(function () {
+- if (process.platform === 'linux' || process.mas) this.skip()
++ if (process.platform === 'linux' || process.platform === 'freebsd' || process.mas) this.skip()
+ })
+
+ beforeEach(() => {
+@@ -665,7 +665,7 @@ describe('app module', () => {
+ let w = null
+
+ before(function () {
+- if (process.platform === 'linux') {
++ if (process.platform === 'linux' || process.platform === 'freebsd') {
+ this.skip()
+ }
+ })
+@@ -859,7 +859,7 @@ describe('app module', () => {
+ // doesn't affect nested `describe`s.
+ beforeEach(function () {
+ // FIXME Get these specs running on Linux CI
+- if (process.platform === 'linux' && isCI) {
++ if ((process.platform === 'linux' || process.platform === 'freebsd') && isCI) {
+ this.skip()
+ }
+ })
+@@ -1011,7 +1011,7 @@ describe('app module', () => {
+
+ it('succeeds with complete GPUInfo', async () => {
+ const completeInfo = await getGPUInfo('complete')
+- if (process.platform === 'linux') {
++ if (process.platform === 'linux' || process.platform === 'freebsd') {
+ // For linux and macOS complete info is same as basic info
+ await verifyBasicGPUInfo(completeInfo)
+ const basicInfo = await getGPUInfo('basic')
+@@ -1039,7 +1039,7 @@ describe('app module', () => {
+ const socketPath = process.platform === 'win32' ? '\\\\.\\pipe\\electron-mixed-sandbox' : '/tmp/electron-mixed-sandbox'
+
+ beforeEach(function (done) {
+- if (process.platform === 'linux' && (process.arch === 'arm64' || process.arch === 'arm')) {
++ if ((process.platform === 'linux' || process.platform === 'freebsd') && (process.arch === 'arm64' || process.arch === 'arm')) {
+ // Our ARM tests are run on VSTS rather than CircleCI, and the Docker
+ // setup on VSTS disallows syscalls that Chrome requires for setting up
+ // sandboxing.
diff --git a/devel/electron5/files/patch-electron_spec_api-auto-updater-spec.js b/devel/electron5/files/patch-electron_spec_api-auto-updater-spec.js
new file mode 100644
index 000000000000..fe4b4d3acd8c
--- /dev/null
+++ b/devel/electron5/files/patch-electron_spec_api-auto-updater-spec.js
@@ -0,0 +1,11 @@
+--- electron/spec/api-auto-updater-spec.js.orig 2019-05-16 02:00:37 UTC
++++ electron/spec/api-auto-updater-spec.js
+@@ -140,7 +140,7 @@ describe('autoUpdater module', function () {
+
+ describe('error event', () => {
+ it('serializes correctly over the remote module', function (done) {
+- if (process.platform === 'linux') {
++ if (process.platform === 'linux' || process.platform === 'freebsd') {
+ // FIXME(alexeykuzmin): Skip the test.
+ // this.skip()
+ return done()
diff --git a/devel/electron5/files/patch-electron_spec_api-browser-window-spec.js b/devel/electron5/files/patch-electron_spec_api-browser-window-spec.js
new file mode 100644
index 000000000000..d89d39b5fb2f
--- /dev/null
+++ b/devel/electron5/files/patch-electron_spec_api-browser-window-spec.js
@@ -0,0 +1,47 @@
+--- electron/spec/api-browser-window-spec.js.orig 2019-12-17 03:11:25 UTC
++++ electron/spec/api-browser-window-spec.js
+@@ -1174,7 +1174,7 @@ describe('BrowserWindow module', () => {
+ describe('BrowserWindow.setOpacity(opacity)', () => {
+ describe('Windows and Mac', () => {
+ before(function () {
+- if (process.platform === 'linux') {
++ if (process.platform === 'linux' || process.platform === 'freebsd') {
+ this.skip()
+ }
+ })
+@@ -1206,7 +1206,7 @@ describe('BrowserWindow module', () => {
+
+ describe('Linux', () => {
+ before(function () {
+- if (process.platform !== 'linux') {
++ if (process.platform !== 'linux' && process.platform !== 'freebsd') {
+ this.skip()
+ }
+ })
+@@ -1306,7 +1306,7 @@ describe('BrowserWindow module', () => {
+
+ describe('enableLargerThanScreen" option', () => {
+ before(function () {
+- if (process.platform === 'linux') {
++ if (process.platform === 'linux' || process.platform === 'freebsd') {
+ this.skip()
+ }
+ })
+@@ -2400,7 +2400,7 @@ describe('BrowserWindow module', () => {
+ w.loadFile(path.join(fixtures, 'pages', 'visibilitychange.html'))
+ })
+ it('visibilityState changes when window is minimized', function (done) {
+- if (isCI && process.platform === 'linux') {
++ if (isCI && (process.platform === 'linux' || process.platform === 'freebsd')) {
+ // FIXME(alexeykuzmin): Skip the test instead of marking it as passed.
+ // afterEach hook won't be run if a test is skipped dynamically.
+ // If afterEach isn't run current window won't be destroyed
+@@ -2833,7 +2833,7 @@ describe('BrowserWindow module', () => {
+ // - `.skip()` called in the 'beforeEach' hook prevents 'afterEach'
+ // hook from being called.
+ // Not implemented on Linux.
+- if (process.platform === 'linux') {
++ if (process.platform === 'linux' || process.platform === 'freebsd') {
+ return
+ }
+
diff --git a/devel/electron5/files/patch-electron_spec_api-clipboard-spec.js b/devel/electron5/files/patch-electron_spec_api-clipboard-spec.js
new file mode 100644
index 000000000000..2c86fc0089a7
--- /dev/null
+++ b/devel/electron5/files/patch-electron_spec_api-clipboard-spec.js
@@ -0,0 +1,38 @@
+--- electron/spec/api-clipboard-spec.js.orig 2019-05-16 02:04:28 UTC
++++ electron/spec/api-clipboard-spec.js
+@@ -27,7 +27,7 @@ describe('clipboard module', () => {
+ describe('clipboard.readHTML()', () => {
+ it('returns markup correctly', () => {
+ const text = '<string>Hi</string>'
+- const markup = process.platform === 'darwin' ? "<meta charset='utf-8'><string>Hi</string>" : process.platform === 'linux' ? '<meta http-equiv="content-type" ' + 'content="text/html; charset=utf-8"><string>Hi</string>' : '<string>Hi</string>'
++ const markup = process.platform === 'darwin' ? "<meta charset='utf-8'><string>Hi</string>" : (process.platform === 'linux' || process.platform === 'freebsd') ? '<meta http-equiv="content-type" ' + 'content="text/html; charset=utf-8"><string>Hi</string>' : '<string>Hi</string>'
+ clipboard.writeHTML(text)
+ expect(clipboard.readHTML()).to.equal(markup)
+ })
+@@ -43,7 +43,7 @@ describe('clipboard module', () => {
+
+ describe('clipboard.readBookmark', () => {
+ before(function () {
+- if (process.platform === 'linux') {
++ if (process.platform === 'linux' || process.platform === 'freebsd') {
+ this.skip()
+ }
+ })
+@@ -69,7 +69,7 @@ describe('clipboard module', () => {
+ const rtf = '{\\rtf1\\utf8 text}'
+ const p = path.join(fixtures, 'assets', 'logo.png')
+ const i = nativeImage.createFromPath(p)
+- const markup = process.platform === 'darwin' ? "<meta charset='utf-8'><b>Hi</b>" : process.platform === 'linux' ? '<meta http-equiv="content-type" ' + 'content="text/html; charset=utf-8"><b>Hi</b>' : '<b>Hi</b>'
++ const markup = process.platform === 'darwin' ? "<meta charset='utf-8'><b>Hi</b>" : (process.platform === 'linux' || process.platform === 'freebsd') ? '<meta http-equiv="content-type" ' + 'content="text/html; charset=utf-8"><b>Hi</b>' : '<b>Hi</b>'
+ const bookmark = { title: 'a title', url: 'test' }
+ clipboard.write({
+ text: 'test',
+@@ -84,7 +84,7 @@ describe('clipboard module', () => {
+ expect(clipboard.readRTF()).to.equal(rtf)
+ expect(clipboard.readImage().toDataURL()).to.equal(i.toDataURL())
+
+- if (process.platform !== 'linux') {
++ if (process.platform !== 'linux' && process.platform !== 'freebsd') {
+ expect(clipboard.readBookmark()).to.deep.equal(bookmark)
+ }
+ })
diff --git a/devel/electron5/files/patch-electron_spec_api-content-tracing-spec.js b/devel/electron5/files/patch-electron_spec_api-content-tracing-spec.js
new file mode 100644
index 000000000000..faec2f2ff9e1
--- /dev/null
+++ b/devel/electron5/files/patch-electron_spec_api-content-tracing-spec.js
@@ -0,0 +1,11 @@
+--- electron/spec/api-content-tracing-spec.js.orig 2019-12-19 06:17:05 UTC
++++ electron/spec/api-content-tracing-spec.js
+@@ -22,7 +22,7 @@ const getPathInATempFolder = (filename) => {
+ describe('contentTracing', () => {
+ beforeEach(function () {
+ // FIXME: The tests are skipped on arm/arm64.
+- if (process.platform === 'linux' &&
++ if ((process.platform === 'linux' || process.platform === 'freebsd') &&
+ ['arm', 'arm64'].includes(process.arch)) {
+ this.skip()
+ }
diff --git a/devel/electron5/files/patch-electron_spec_api-crash-reporter-spec.js b/devel/electron5/files/patch-electron_spec_api-crash-reporter-spec.js
new file mode 100644
index 000000000000..9caa2c7f8d7b
--- /dev/null
+++ b/devel/electron5/files/patch-electron_spec_api-crash-reporter-spec.js
@@ -0,0 +1,11 @@
+--- electron/spec/api-crash-reporter-spec.js.orig 2019-05-16 02:07:53 UTC
++++ electron/spec/api-crash-reporter-spec.js
+@@ -16,7 +16,7 @@ describe('crashReporter module', () => {
+ if (process.mas || process.env.DISABLE_CRASH_REPORTER_TESTS) return
+
+ // TODO(alexeykuzmin): [Ch66] Fails. Fix it and enable back.
+- if (process.platform === 'linux') return
++ if (process.platform === 'linux' || process.platform === 'freebsd') return
+
+ let originalTempDirectory = null
+ let tempDirectory = null
diff --git a/devel/electron5/files/patch-electron_spec_api-net-log-spec.js b/devel/electron5/files/patch-electron_spec_api-net-log-spec.js
new file mode 100644
index 000000000000..f5f7abf16bad
--- /dev/null
+++ b/devel/electron5/files/patch-electron_spec_api-net-log-spec.js
@@ -0,0 +1,29 @@
+--- electron/spec/api-net-log-spec.js.orig 2019-05-16 02:08:40 UTC
++++ electron/spec/api-net-log-spec.js
+@@ -95,7 +95,7 @@ describe('netLog module', () => {
+ })
+
+ it('should begin and end logging automatically when --log-net-log is passed', done => {
+- if (isCI && process.platform === 'linux') {
++ if (isCI && (process.platform === 'linux' || process.platform === 'freebsd')) {
+ done()
+ return
+ }
+@@ -116,7 +116,7 @@ describe('netLog module', () => {
+
+ // FIXME(deepak1556): Ch69 follow up.
+ it('should begin and end logging automtically when --log-net-log is passed, and behave correctly when .startLogging() and .stopLogging() is called', done => {
+- if (isCI && process.platform === 'linux') {
++ if (isCI && (process.platform === 'linux' || process.platform === 'freebsd')) {
+ done()
+ return
+ }
+@@ -139,7 +139,7 @@ describe('netLog module', () => {
+ })
+
+ it('should end logging automatically when only .startLogging() is called', done => {
+- if (isCI && process.platform === 'linux') {
++ if (isCI && (process.platform === 'linux' || process.platform === 'freebsd')) {
+ done()
+ return
+ }
diff --git a/devel/electron5/files/patch-electron_spec_api-notification-dbus-spec.js b/devel/electron5/files/patch-electron_spec_api-notification-dbus-spec.js
new file mode 100644
index 000000000000..bc1852ba00be
--- /dev/null
+++ b/devel/electron5/files/patch-electron_spec_api-notification-dbus-spec.js
@@ -0,0 +1,11 @@
+--- electron/spec/api-notification-dbus-spec.js.orig 2019-12-17 03:11:25 UTC
++++ electron/spec/api-notification-dbus-spec.js
+@@ -13,7 +13,7 @@ const Promise = require('bluebird')
+ const { remote } = require('electron')
+ const { app } = remote
+
+-const skip = process.platform !== 'linux' ||
++const skip = process.platform !== 'linux' || process.platform !== 'freebsd' ||
+ process.arch === 'ia32' ||
+ process.arch.indexOf('arm') === 0 ||
+ !process.env.DBUS_SESSION_BUS_ADDRESS;
diff --git a/devel/electron5/files/patch-electron_spec_api-power-monitor-spec.js b/devel/electron5/files/patch-electron_spec_api-power-monitor-spec.js
new file mode 100644
index 000000000000..edfa796f7a9d
--- /dev/null
+++ b/devel/electron5/files/patch-electron_spec_api-power-monitor-spec.js
@@ -0,0 +1,11 @@
+--- electron/spec/api-power-monitor-spec.js.orig 2019-05-16 02:12:02 UTC
++++ electron/spec/api-power-monitor-spec.js
+@@ -14,7 +14,7 @@ const Promise = require('bluebird')
+ const { expect } = chai
+ chai.use(dirtyChai)
+
+-const skip = process.platform !== 'linux' || !process.env.DBUS_SYSTEM_BUS_ADDRESS
++const skip = process.platform !== 'linux' || process.platform === 'freebsd' || !process.env.DBUS_SYSTEM_BUS_ADDRESS
+
+ describe('powerMonitor', () => {
+ let logindMock, dbusMockPowerMonitor, getCalls, emitSignal, reset
diff --git a/devel/electron5/files/patch-electron_spec_api-process-spec.js b/devel/electron5/files/patch-electron_spec_api-process-spec.js
new file mode 100644
index 000000000000..1316a566cd6b
--- /dev/null
+++ b/devel/electron5/files/patch-electron_spec_api-process-spec.js
@@ -0,0 +1,11 @@
+--- electron/spec/api-process-spec.js.orig 2019-12-19 06:18:31 UTC
++++ electron/spec/api-process-spec.js
+@@ -42,7 +42,7 @@ describe('process module', () => {
+ it('resolves promise successfully with valid data', async () => {
+ const memoryInfo = await process.getProcessMemoryInfo()
+ expect(memoryInfo).to.be.an('object')
+- if (process.platform === 'linux' || process.platform === 'windows') {
++ if (process.platform === 'linux' || process.platform === 'windows' || process.platform === 'freebsd') {
+ expect(memoryInfo.residentSet).to.be.a('number').greaterThan(0)
+ }
+ expect(memoryInfo.private).to.be.a('number').greaterThan(0)
diff --git a/devel/electron5/files/patch-electron_spec_api-shell-spec.js b/devel/electron5/files/patch-electron_spec_api-shell-spec.js
new file mode 100644
index 000000000000..87aace3f7828
--- /dev/null
+++ b/devel/electron5/files/patch-electron_spec_api-shell-spec.js
@@ -0,0 +1,42 @@
+--- electron/spec/api-shell-spec.js.orig 2019-12-17 03:11:25 UTC
++++ electron/spec/api-shell-spec.js
+@@ -35,7 +35,7 @@ describe('shell module', () => {
+ await closeWindow(w)
+ w = null
+ // reset env vars to prevent side effects
+- if (process.platform === 'linux') {
++ if (process.platform === 'linux' || process.platform === 'freebsd') {
+ process.env.DE = envVars.de
+ process.env.BROWSER = envVars.browser
+ process.env.DISPLAY = envVars.display
+@@ -48,6 +48,10 @@ describe('shell module', () => {
+ process.env.BROWSER = '/bin/true'
+ process.env.DE = 'generic'
+ process.env.DISPLAY = ''
++ } else if (process.platform === 'freebsd') {
++ process.env.BROWSER = '/usr/bin/true'
++ process.env.DE = 'generic'
++ process.env.DISPLAY = ''
+ }
+
+ // Ensure an external window is activated via a new window's blur event
+@@ -64,7 +68,7 @@ describe('shell module', () => {
+
+ shell.openExternal(url).then(() => {
+ promiseResolved = true
+- if (blurEventEmitted || process.platform === 'linux') {
++ if (blurEventEmitted || process.platform === 'linux' || process.platform === 'freebsd') {
+ done()
+ }
+ })
+@@ -75,6 +79,10 @@ describe('shell module', () => {
+ if (process.platform === 'linux') {
+ process.env.DE = 'generic'
+ process.env.DE = '/bin/true'
++ process.env.DISPLAY = ''
++ } else if (process.platform === 'freebsd') {
++ process.env.DE = 'generic'
++ process.env.DE = '/usr/bin/true'
+ process.env.DISPLAY = ''
+ }
+
diff --git a/devel/electron5/files/patch-electron_spec_chromium-spec.js b/devel/electron5/files/patch-electron_spec_chromium-spec.js
new file mode 100644
index 000000000000..e1c8eb62bfd4
--- /dev/null
+++ b/devel/electron5/files/patch-electron_spec_chromium-spec.js
@@ -0,0 +1,27 @@
+--- electron/spec/chromium-spec.js.orig 2019-05-16 02:16:13 UTC
++++ electron/spec/chromium-spec.js
+@@ -849,7 +849,7 @@ describe('chromium feature', () => {
+ })
+
+ it('can be get as context in canvas', () => {
+- if (process.platform === 'linux') {
++ if (process.platform === 'linux' || process.platform === 'freebsd') {
+ // FIXME(alexeykuzmin): Skip the test.
+ // this.skip()
+ return
+@@ -1533,12 +1533,13 @@ describe('font fallback', () => {
+ expect(fonts[0].familyName).to.equal({
+ 'win32': 'Arial',
+ 'darwin': 'Helvetica',
+- 'linux': 'DejaVu Sans' // I think this depends on the distro? We don't specify a default.
++ 'linux': 'DejaVu Sans', // I think this depends on the distro? We don't specify a default.
++ 'freebsd': 'DejaVu Sans'
+ }[process.platform])
+ })
+
+ it('should fall back to Japanese font for sans-serif Japanese script', async function () {
+- if (process.platform === 'linux') {
++ if (process.platform === 'linux' || process.platform === 'freebsd') {
+ return this.skip()
+ }
+ const html = `
diff --git a/devel/electron5/files/patch-electron_spec_version-bump-spec.js b/devel/electron5/files/patch-electron_spec_version-bump-spec.js
new file mode 100644
index 000000000000..2f9557c97349
--- /dev/null
+++ b/devel/electron5/files/patch-electron_spec_version-bump-spec.js
@@ -0,0 +1,11 @@
+--- electron/spec/version-bump-spec.js.orig 2019-12-19 06:19:49 UTC
++++ electron/spec/version-bump-spec.js
+@@ -51,7 +51,7 @@ describeFn('bump-version script', () => {
+ const betaPattern = /[0-9.]*(-beta[0-9.]*)/g
+
+ before(function () {
+- if (process.platform === 'linux' && process.arch === 'arm') {
++ if ((process.platform === 'linux' || process.platform === 'freebsd') && process.arch === 'arm') {
+ this.skip()
+ }
+ })
diff --git a/devel/electron5/files/patch-extensions_browser_api_declarative__webrequest_webrequest__action.cc b/devel/electron5/files/patch-extensions_browser_api_declarative__webrequest_webrequest__action.cc
new file mode 100644
index 000000000000..b3fc09fc608d
--- /dev/null
+++ b/devel/electron5/files/patch-extensions_browser_api_declarative__webrequest_webrequest__action.cc
@@ -0,0 +1,14 @@
+--- extensions/browser/api/declarative_webrequest/webrequest_action.cc.orig 2019-04-08 08:18:20 UTC
++++ extensions/browser/api/declarative_webrequest/webrequest_action.cc
+@@ -28,7 +28,11 @@
+ #include "extensions/common/extension.h"
+ #include "net/base/registry_controlled_domains/registry_controlled_domain.h"
+ #include "net/http/http_util.h"
++#if defined(OS_BSD)
++#include <re2/re2.h>
++#else
+ #include "third_party/re2/src/re2/re2.h"
++#endif
+
+ using content::ResourceRequestInfo;
+ using extension_web_request_api_helpers::EventResponseDelta;
diff --git a/devel/electron5/files/patch-extensions_browser_api_messaging_message__service.cc b/devel/electron5/files/patch-extensions_browser_api_messaging_message__service.cc
new file mode 100644
index 000000000000..fa865cd4321d
--- /dev/null
+++ b/devel/electron5/files/patch-extensions_browser_api_messaging_message__service.cc
@@ -0,0 +1,35 @@
+--- extensions/browser/api/messaging/message_service.cc.orig 2019-04-08 08:32:56 UTC
++++ extensions/browser/api/messaging/message_service.cc
+@@ -58,7 +58,7 @@ namespace {
+
+ const char kReceivingEndDoesntExistError[] =
+ "Could not establish connection. Receiving end does not exist.";
+-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+ const char kMissingPermissionError[] =
+ "Access to native messaging requires nativeMessaging permission.";
+ const char kProhibitedByPoliciesError[] =
+@@ -318,7 +318,7 @@ void MessageService::OpenChannelToNativeApp(
+ if (!source)
+ return;
+
+-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+ content::WebContents* web_contents =
+ content::WebContents::FromRenderFrameHost(source);
+ ExtensionWebContentsObserver* extension_web_contents_observer =
+@@ -378,12 +378,12 @@ void MessageService::OpenChannelToNativeApp(
+ channel->opener->IncrementLazyKeepaliveCount();
+
+ AddChannel(std::move(channel), receiver_port_id);
+-#else // !(defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX))
++#else // !(defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD))
+ const char kNativeMessagingNotSupportedError[] =
+ "Native Messaging is not supported on this platform.";
+ DispatchOnDisconnect(
+ source, receiver_port_id, kNativeMessagingNotSupportedError);
+-#endif // !(defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX))
++#endif // !(defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD))
+ }
+
+ void MessageService::OpenChannelToTab(int source_process_id,
diff --git a/devel/electron5/files/patch-extensions_browser_api_networking__private_networking__private__delegate__factory.cc b/devel/electron5/files/patch-extensions_browser_api_networking__private_networking__private__delegate__factory.cc
new file mode 100644
index 000000000000..c2c287d5ac0e
--- /dev/null
+++ b/devel/electron5/files/patch-extensions_browser_api_networking__private_networking__private__delegate__factory.cc
@@ -0,0 +1,20 @@
+--- extensions/browser/api/networking_private/networking_private_delegate_factory.cc.orig 2019-04-08 08:18:20 UTC
++++ extensions/browser/api/networking_private/networking_private_delegate_factory.cc
+@@ -11,7 +11,7 @@
+
+ #if defined(OS_CHROMEOS)
+ #include "extensions/browser/api/networking_private/networking_private_chromeos.h"
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ #include "extensions/browser/api/networking_private/networking_private_linux.h"
+ #elif defined(OS_WIN) || defined(OS_MACOSX)
+ #include "components/wifi/wifi_service.h"
+@@ -61,7 +61,7 @@ KeyedService* NetworkingPrivateDelegateFactory::BuildS
+ NetworkingPrivateDelegate* delegate;
+ #if defined(OS_CHROMEOS)
+ delegate = new NetworkingPrivateChromeOS(browser_context);
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ delegate = new NetworkingPrivateLinux();
+ #elif defined(OS_WIN) || defined(OS_MACOSX)
+ std::unique_ptr<wifi::WiFiService> wifi_service(wifi::WiFiService::Create());
diff --git a/devel/electron5/files/patch-extensions_browser_api_web__request_form__data__parser.cc b/devel/electron5/files/patch-extensions_browser_api_web__request_form__data__parser.cc
new file mode 100644
index 000000000000..69b1a7176fbd
--- /dev/null
+++ b/devel/electron5/files/patch-extensions_browser_api_web__request_form__data__parser.cc
@@ -0,0 +1,14 @@
+--- extensions/browser/api/web_request/form_data_parser.cc.orig 2019-04-08 08:18:20 UTC
++++ extensions/browser/api/web_request/form_data_parser.cc
+@@ -15,7 +15,11 @@
+ #include "base/values.h"
+ #include "net/base/escape.h"
+ #include "net/http/http_request_headers.h"
++#if defined(OS_BSD)
++#include <re2/re2.h>
++#else
+ #include "third_party/re2/src/re2/re2.h"
++#endif
+
+ using base::DictionaryValue;
+ using base::ListValue;
diff --git a/devel/electron5/files/patch-extensions_browser_browser__context__keyed__service__factories.cc b/devel/electron5/files/patch-extensions_browser_browser__context__keyed__service__factories.cc
new file mode 100644
index 000000000000..84d3d268c369
--- /dev/null
+++ b/devel/electron5/files/patch-extensions_browser_browser__context__keyed__service__factories.cc
@@ -0,0 +1,11 @@
+--- extensions/browser/browser_context_keyed_service_factories.cc.orig 2019-04-08 08:32:56 UTC
++++ extensions/browser/browser_context_keyed_service_factories.cc
+@@ -85,7 +85,7 @@ void EnsureBrowserContextKeyedServiceFactoriesBuilt()
+ #if defined(OS_CHROMEOS)
+ NetworkingConfigServiceFactory::GetInstance();
+ #endif
+-#if defined(OS_LINUX) || defined(OS_WIN) || defined(OS_MACOSX)
++#if defined(OS_LINUX) || defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_BSD)
+ NetworkingPrivateEventRouterFactory::GetInstance();
+ #endif
+ PowerAPI::GetFactoryInstance();
diff --git a/devel/electron5/files/patch-extensions_common_api___permission__features.json b/devel/electron5/files/patch-extensions_common_api___permission__features.json
new file mode 100644
index 000000000000..4c3651e0b06d
--- /dev/null
+++ b/devel/electron5/files/patch-extensions_common_api___permission__features.json
@@ -0,0 +1,29 @@
+--- extensions/common/api/_permission_features.json.orig 2019-04-08 08:32:56 UTC
++++ extensions/common/api/_permission_features.json
+@@ -135,7 +135,7 @@
+ {
+ "channel": "stable",
+ "extension_types": ["platform_app"],
+- "platforms": ["chromeos", "win", "mac", "linux"],
++ "platforms": ["chromeos", "win", "mac", "linux", "bsd"],
+ "whitelist": [
+ "1C93BD3CF875F4A73C0B2A163BB8FBDA8B8B3D80", // http://crbug.com/387169
+ "A3BC37E2148AC4E99BE4B16AF9D42DD1E592BBBE", // http://crbug.com/387169
+@@ -470,7 +470,7 @@
+ }, {
+ "channel": "stable",
+ "extension_types": ["extension", "legacy_packaged_app", "platform_app"],
+- "platforms": ["chromeos", "mac", "win", "linux"],
++ "platforms": ["chromeos", "mac", "win", "linux", "bsd"],
+ "whitelist": [
+ "0DE0F05680A4A056BCEC864ED8DDA84296F82B40", // http://crbug.com/434651
+ "1C93BD3CF875F4A73C0B2A163BB8FBDA8B8B3D80", // http://crbug.com/293683
+@@ -501,7 +501,7 @@
+ "networkingPrivate": {
+ "channel": "stable",
+ "extension_types": ["extension", "legacy_packaged_app", "platform_app"],
+- "platforms": ["chromeos", "mac", "win", "linux"],
++ "platforms": ["chromeos", "mac", "win", "linux", "bsd"],
+ "whitelist": [
+ // DO NOT ADD ANY MORE ENTRIES HERE.
+ // networkingPrivate is being migrated to networking.onc.
diff --git a/devel/electron5/files/patch-extensions_common_api_runtime.json b/devel/electron5/files/patch-extensions_common_api_runtime.json
new file mode 100644
index 000000000000..9a25613be199
--- /dev/null
+++ b/devel/electron5/files/patch-extensions_common_api_runtime.json
@@ -0,0 +1,11 @@
+--- extensions/common/api/runtime.json.orig 2019-04-08 08:32:56 UTC
++++ extensions/common/api/runtime.json
+@@ -66,7 +66,7 @@
+ "id": "PlatformOs",
+ "type": "string",
+ "description": "The operating system chrome is running on.",
+- "enum": ["mac", "win", "android", "cros", "linux", "openbsd"]
++ "enum": ["mac", "win", "android", "cros", "linux", "freebsd", "openbsd"]
+ },
+ {
+ "id": "PlatformArch",
diff --git a/devel/electron5/files/patch-extensions_common_feature__switch.cc b/devel/electron5/files/patch-extensions_common_feature__switch.cc
new file mode 100644
index 000000000000..95eb7ed5dd72
--- /dev/null
+++ b/devel/electron5/files/patch-extensions_common_feature__switch.cc
@@ -0,0 +1,14 @@
+--- extensions/common/feature_switch.cc.orig 2019-04-08 08:18:20 UTC
++++ extensions/common/feature_switch.cc
+@@ -44,11 +44,7 @@ class CommonSwitches {
+ FeatureSwitch::DEFAULT_ENABLED),
+ load_media_router_component_extension(
+ kLoadMediaRouterComponentExtensionFlag,
+-#if defined(GOOGLE_CHROME_BUILD)
+ FeatureSwitch::DEFAULT_ENABLED)
+-#else
+- FeatureSwitch::DEFAULT_DISABLED)
+-#endif // defined(GOOGLE_CHROME_BUILD)
+ {
+ }
+
diff --git a/devel/electron5/files/patch-extensions_common_features_feature.cc b/devel/electron5/files/patch-extensions_common_features_feature.cc
new file mode 100644
index 000000000000..0f316dd9f39e
--- /dev/null
+++ b/devel/electron5/files/patch-extensions_common_features_feature.cc
@@ -0,0 +1,11 @@
+--- extensions/common/features/feature.cc.orig 2019-04-08 08:18:20 UTC
++++ extensions/common/features/feature.cc
+@@ -26,6 +26,8 @@ Feature::Platform Feature::GetCurrentPlatform() {
+ return MACOSX_PLATFORM;
+ #elif defined(OS_WIN)
+ return WIN_PLATFORM;
++#elif defined(OS_BSD)
++ return LINUX_PLATFORM;
+ #else
+ return UNSPECIFIED_PLATFORM;
+ #endif
diff --git a/devel/electron5/files/patch-extensions_common_image__util.cc b/devel/electron5/files/patch-extensions_common_image__util.cc
new file mode 100644
index 000000000000..def441ae2217
--- /dev/null
+++ b/devel/electron5/files/patch-extensions_common_image__util.cc
@@ -0,0 +1,14 @@
+--- extensions/common/image_util.cc.orig 2019-04-08 08:32:56 UTC
++++ extensions/common/image_util.cc
+@@ -18,7 +18,11 @@
+ #include "base/strings/stringprintf.h"
+ #include "base/time/time.h"
+ #include "base/timer/elapsed_timer.h"
++#if defined(OS_BSD)
++#include <re2/re2.h>
++#else
+ #include "third_party/re2/src/re2/re2.h"
++#endif // defined(OS_BSD)
+ #include "third_party/skia/include/core/SkBitmap.h"
+ #include "third_party/skia/include/core/SkCanvas.h"
+ #include "third_party/skia/include/core/SkColor.h"
diff --git a/devel/electron5/files/patch-extensions_common_stack__frame.cc b/devel/electron5/files/patch-extensions_common_stack__frame.cc
new file mode 100644
index 000000000000..c6b9302e36e3
--- /dev/null
+++ b/devel/electron5/files/patch-extensions_common_stack__frame.cc
@@ -0,0 +1,14 @@
+--- extensions/common/stack_frame.cc.orig 2019-04-08 08:18:20 UTC
++++ extensions/common/stack_frame.cc
+@@ -7,7 +7,11 @@
+ #include <string>
+
+ #include "base/strings/utf_string_conversions.h"
++#if defined(OS_BSD)
++#include <re2/re2.h>
++#else
+ #include "third_party/re2/src/re2/re2.h"
++#endif
+
+ namespace extensions {
+
diff --git a/devel/electron5/files/patch-extensions_renderer_bindings_api__binding__util.cc b/devel/electron5/files/patch-extensions_renderer_bindings_api__binding__util.cc
new file mode 100644
index 000000000000..edd4646df31b
--- /dev/null
+++ b/devel/electron5/files/patch-extensions_renderer_bindings_api__binding__util.cc
@@ -0,0 +1,11 @@
+--- extensions/renderer/bindings/api_binding_util.cc.orig 2019-04-08 08:18:20 UTC
++++ extensions/renderer/bindings/api_binding_util.cc
+@@ -129,6 +129,8 @@ std::string GetPlatformString() {
+ return "mac";
+ #elif defined(OS_WIN)
+ return "win";
++#elif defined(OS_BSD)
++ return "bsd";
+ #else
+ NOTREACHED();
+ return std::string();
diff --git a/devel/electron5/files/patch-extensions_shell_app_shell__main__delegate.cc b/devel/electron5/files/patch-extensions_shell_app_shell__main__delegate.cc
new file mode 100644
index 000000000000..cec6a956b1ad
--- /dev/null
+++ b/devel/electron5/files/patch-extensions_shell_app_shell__main__delegate.cc
@@ -0,0 +1,29 @@
+--- extensions/shell/app/shell_main_delegate.cc.orig 2019-04-08 08:18:20 UTC
++++ extensions/shell/app/shell_main_delegate.cc
+@@ -38,7 +38,7 @@
+
+ #if defined(OS_WIN)
+ #include "base/base_paths_win.h"
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ #include "base/nix/xdg_util.h"
+ #elif defined(OS_MACOSX)
+ #include "base/base_paths_mac.h"
+@@ -52,7 +52,7 @@
+
+ namespace {
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS)
+ extensions::ShellCrashReporterClient* GetCrashReporterClient() {
+ static base::NoDestructor<extensions::ShellCrashReporterClient> instance;
+ return instance.get();
+@@ -70,7 +70,7 @@ base::FilePath GetDataPath() {
+ return cmd_line->GetSwitchValuePath(switches::kContentShellDataPath);
+
+ base::FilePath data_dir;
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ std::unique_ptr<base::Environment> env(base::Environment::Create());
+ data_dir = base::nix::GetXDGDirectory(
+ env.get(), base::nix::kXdgConfigHomeEnvVar, base::nix::kDotConfigDir);
diff --git a/devel/electron5/files/patch-gpu_command__buffer_common_gpu__memory__buffer__support.cc b/devel/electron5/files/patch-gpu_command__buffer_common_gpu__memory__buffer__support.cc
new file mode 100644
index 000000000000..d1f614ba85da
--- /dev/null
+++ b/devel/electron5/files/patch-gpu_command__buffer_common_gpu__memory__buffer__support.cc
@@ -0,0 +1,11 @@
+--- gpu/command_buffer/common/gpu_memory_buffer_support.cc.orig 2019-04-08 08:32:57 UTC
++++ gpu/command_buffer/common/gpu_memory_buffer_support.cc
+@@ -89,7 +89,7 @@ bool IsImageSizeValidForGpuMemoryBufferFormat(const gf
+ uint32_t GetPlatformSpecificTextureTarget() {
+ #if defined(OS_MACOSX)
+ return GL_TEXTURE_RECTANGLE_ARB;
+-#elif defined(OS_ANDROID) || defined(OS_LINUX)
++#elif defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_BSD)
+ return GL_TEXTURE_EXTERNAL_OES;
+ #elif defined(OS_WIN)
+ return GL_TEXTURE_2D;
diff --git a/devel/electron5/files/patch-gpu_command__buffer_service_program__manager.cc b/devel/electron5/files/patch-gpu_command__buffer_service_program__manager.cc
new file mode 100644
index 000000000000..75e45fcc066b
--- /dev/null
+++ b/devel/electron5/files/patch-gpu_command__buffer_service_program__manager.cc
@@ -0,0 +1,14 @@
+--- gpu/command_buffer/service/program_manager.cc.orig 2019-04-08 08:32:57 UTC
++++ gpu/command_buffer/service/program_manager.cc
+@@ -30,7 +30,11 @@
+ #include "gpu/command_buffer/service/program_cache.h"
+ #include "gpu/command_buffer/service/shader_manager.h"
+ #include "gpu/config/gpu_preferences.h"
++#if defined(OS_BSD)
++#include <re2/re2.h>
++#else
+ #include "third_party/re2/src/re2/re2.h"
++#endif
+ #include "ui/gl/gl_version_info.h"
+ #include "ui/gl/progress_reporter.h"
+
diff --git a/devel/electron5/files/patch-gpu_command__buffer_tests_gl__copy__texture__CHROMIUM__unittest.cc b/devel/electron5/files/patch-gpu_command__buffer_tests_gl__copy__texture__CHROMIUM__unittest.cc
new file mode 100644
index 000000000000..7cb781d9cfea
--- /dev/null
+++ b/devel/electron5/files/patch-gpu_command__buffer_tests_gl__copy__texture__CHROMIUM__unittest.cc
@@ -0,0 +1,11 @@
+--- gpu/command_buffer/tests/gl_copy_texture_CHROMIUM_unittest.cc.orig 2019-04-08 08:32:57 UTC
++++ gpu/command_buffer/tests/gl_copy_texture_CHROMIUM_unittest.cc
+@@ -562,7 +562,7 @@ class GLCopyTextureCHROMIUMES3Test : public GLCopyText
+
+ bool ShouldSkipNorm16() const {
+ DCHECK(!ShouldSkipTest());
+-#if (defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_LINUX)) && \
++#if (defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD)) && \
+ (defined(ARCH_CPU_X86) || defined(ARCH_CPU_X86_64))
+ // Make sure it's tested; it is safe to assume that the flag is always true
+ // on desktop.
diff --git a/devel/electron5/files/patch-gpu_command__buffer_tests_gl__test__utils.cc b/devel/electron5/files/patch-gpu_command__buffer_tests_gl__test__utils.cc
new file mode 100644
index 000000000000..c5b2286b5c5d
--- /dev/null
+++ b/devel/electron5/files/patch-gpu_command__buffer_tests_gl__test__utils.cc
@@ -0,0 +1,20 @@
+--- gpu/command_buffer/tests/gl_test_utils.cc.orig 2019-04-08 08:32:57 UTC
++++ gpu/command_buffer/tests/gl_test_utils.cc
+@@ -22,7 +22,7 @@
+ #include "ui/gfx/geometry/size.h"
+ #include "ui/gl/init/gl_factory.h"
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include "ui/gl/gl_image_native_pixmap.h"
+ #endif
+
+@@ -425,7 +425,7 @@ void GpuCommandBufferTestEGL::RestoreGLDefault() {
+ window_system_binding_info_ = gl::GLWindowSystemBindingInfo();
+ }
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ scoped_refptr<gl::GLImageNativePixmap>
+ GpuCommandBufferTestEGL::CreateGLImageNativePixmap(gfx::BufferFormat format,
+ gfx::Size size,
diff --git a/devel/electron5/files/patch-gpu_command__buffer_tests_gl__test__utils.h b/devel/electron5/files/patch-gpu_command__buffer_tests_gl__test__utils.h
new file mode 100644
index 000000000000..eb7c32cf12dd
--- /dev/null
+++ b/devel/electron5/files/patch-gpu_command__buffer_tests_gl__test__utils.h
@@ -0,0 +1,11 @@
+--- gpu/command_buffer/tests/gl_test_utils.h.orig 2019-04-08 08:18:20 UTC
++++ gpu/command_buffer/tests/gl_test_utils.h
+@@ -112,7 +112,7 @@ class GpuCommandBufferTestEGL {
+ return gfx::HasExtension(gl_extensions_, extension);
+ }
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Create GLImageNativePixmap filled in with the given pixels.
+ scoped_refptr<gl::GLImageNativePixmap> CreateGLImageNativePixmap(
+ gfx::BufferFormat format,
diff --git a/devel/electron5/files/patch-gpu_config_gpu__control__list.cc b/devel/electron5/files/patch-gpu_config_gpu__control__list.cc
new file mode 100644
index 000000000000..d5284e500ac5
--- /dev/null
+++ b/devel/electron5/files/patch-gpu_config_gpu__control__list.cc
@@ -0,0 +1,32 @@
+--- gpu/config/gpu_control_list.cc.orig 2019-04-08 08:32:57 UTC
++++ gpu/config/gpu_control_list.cc
+@@ -16,7 +16,11 @@
+ #include "base/values.h"
+ #include "build/build_config.h"
+ #include "gpu/config/gpu_util.h"
++#if defined(OS_BSD)
++#include <re2/re2.h>
++#else
+ #include "third_party/re2/src/re2/re2.h"
++#endif // defined(OS_BSD)
+
+ namespace gpu {
+ namespace {
+@@ -213,7 +217,7 @@ bool GpuControlList::More::GLVersionInfoMismatch(
+ GpuControlList::GLType GpuControlList::More::GetDefaultGLType() {
+ #if defined(OS_CHROMEOS)
+ return kGLTypeGL;
+-#elif defined(OS_LINUX) || defined(OS_OPENBSD)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ return kGLTypeGL;
+ #elif defined(OS_MACOSX)
+ return kGLTypeGL;
+@@ -699,7 +703,7 @@ GpuControlList::OsType GpuControlList::GetOsType() {
+ return kOsAndroid;
+ #elif defined(OS_FUCHSIA)
+ return kOsFuchsia;
+-#elif defined(OS_LINUX) || defined(OS_OPENBSD)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ return kOsLinux;
+ #elif defined(OS_MACOSX)
+ return kOsMacosx;
diff --git a/devel/electron5/files/patch-gpu_config_gpu__test__config.cc b/devel/electron5/files/patch-gpu_config_gpu__test__config.cc
new file mode 100644
index 000000000000..b169e7555541
--- /dev/null
+++ b/devel/electron5/files/patch-gpu_config_gpu__test__config.cc
@@ -0,0 +1,11 @@
+--- gpu/config/gpu_test_config.cc.orig 2019-04-08 08:18:21 UTC
++++ gpu/config/gpu_test_config.cc
+@@ -25,7 +25,7 @@ namespace {
+ GPUTestConfig::OS GetCurrentOS() {
+ #if defined(OS_CHROMEOS)
+ return GPUTestConfig::kOsChromeOS;
+-#elif defined(OS_LINUX) || defined(OS_OPENBSD)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ return GPUTestConfig::kOsLinux;
+ #elif defined(OS_WIN)
+ int32_t major_version = 0;
diff --git a/devel/electron5/files/patch-gpu_ipc_common_gpu__memory__buffer__support.cc b/devel/electron5/files/patch-gpu_ipc_common_gpu__memory__buffer__support.cc
new file mode 100644
index 000000000000..a8c1a59e9642
--- /dev/null
+++ b/devel/electron5/files/patch-gpu_ipc_common_gpu__memory__buffer__support.cc
@@ -0,0 +1,47 @@
+--- gpu/ipc/common/gpu_memory_buffer_support.cc.orig 2019-04-08 08:32:57 UTC
++++ gpu/ipc/common/gpu_memory_buffer_support.cc
+@@ -12,7 +12,7 @@
+ #include "gpu/ipc/common/gpu_memory_buffer_impl_io_surface.h"
+ #endif
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include "gpu/ipc/common/gpu_memory_buffer_impl_native_pixmap.h"
+ #include "ui/gfx/client_native_pixmap_factory.h"
+ #include "ui/gfx/linux/client_native_pixmap_factory_dmabuf.h"
+@@ -37,7 +37,7 @@ namespace gpu {
+ GpuMemoryBufferSupport::GpuMemoryBufferSupport() {
+ #if defined(USE_OZONE)
+ client_native_pixmap_factory_ = ui::CreateClientNativePixmapFactoryOzone();
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ client_native_pixmap_factory_.reset(
+ gfx::CreateClientNativePixmapFactoryDmabuf());
+ #endif
+@@ -51,7 +51,7 @@ GpuMemoryBufferSupport::GetNativeGpuMemoryBufferType()
+ return gfx::IO_SURFACE_BUFFER;
+ #elif defined(OS_ANDROID)
+ return gfx::ANDROID_HARDWARE_BUFFER;
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ return gfx::NATIVE_PIXMAP;
+ #elif defined(OS_WIN)
+ return gfx::DXGI_SHARED_HANDLE;
+@@ -109,7 +109,7 @@ bool GpuMemoryBufferSupport::IsNativeGpuMemoryBufferCo
+ #elif defined(USE_OZONE)
+ return ui::OzonePlatform::EnsureInstance()->IsNativePixmapConfigSupported(
+ format, usage);
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ return false; // TODO(julian.isorce): Add linux support.
+ #elif defined(OS_WIN)
+ switch (usage) {
+@@ -166,7 +166,7 @@ GpuMemoryBufferSupport::CreateGpuMemoryBufferImplFromH
+ return GpuMemoryBufferImplIOSurface::CreateFromHandle(
+ std::move(handle), size, format, usage, std::move(callback));
+ #endif
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ case gfx::NATIVE_PIXMAP:
+ return GpuMemoryBufferImplNativePixmap::CreateFromHandle(
+ client_native_pixmap_factory(), std::move(handle), size, format,
diff --git a/devel/electron5/files/patch-gpu_ipc_common_gpu__memory__buffer__support.h b/devel/electron5/files/patch-gpu_ipc_common_gpu__memory__buffer__support.h
new file mode 100644
index 000000000000..9dabad770214
--- /dev/null
+++ b/devel/electron5/files/patch-gpu_ipc_common_gpu__memory__buffer__support.h
@@ -0,0 +1,29 @@
+--- gpu/ipc/common/gpu_memory_buffer_support.h.orig 2019-04-08 08:18:21 UTC
++++ gpu/ipc/common/gpu_memory_buffer_support.h
+@@ -16,7 +16,7 @@
+ #include "ui/gfx/geometry/size.h"
+ #include "ui/gfx/gpu_memory_buffer.h"
+
+-#if defined(OS_LINUX) || defined(USE_OZONE)
++#if defined(OS_LINUX) || defined(OS_BSD) || defined(USE_OZONE)
+ namespace gfx {
+ class ClientNativePixmapFactory;
+ }
+@@ -38,7 +38,7 @@ class GPU_EXPORT GpuMemoryBufferSupport {
+ bool IsNativeGpuMemoryBufferConfigurationSupported(gfx::BufferFormat format,
+ gfx::BufferUsage usage);
+
+-#if defined(OS_LINUX) || defined(USE_OZONE)
++#if defined(OS_LINUX) || defined(OS_BSD) || defined(USE_OZONE)
+ gfx::ClientNativePixmapFactory* client_native_pixmap_factory() {
+ return client_native_pixmap_factory_.get();
+ }
+@@ -61,7 +61,7 @@ class GPU_EXPORT GpuMemoryBufferSupport {
+ GpuMemoryBufferImpl::DestructionCallback callback);
+
+ private:
+-#if defined(OS_LINUX) || defined(USE_OZONE)
++#if defined(OS_LINUX) || defined(OS_BSD) || defined(USE_OZONE)
+ std::unique_ptr<gfx::ClientNativePixmapFactory> client_native_pixmap_factory_;
+ #endif
+
diff --git a/devel/electron5/files/patch-gpu_ipc_service_gpu__init.cc b/devel/electron5/files/patch-gpu_ipc_service_gpu__init.cc
new file mode 100644
index 000000000000..d80d5b5ca9ea
--- /dev/null
+++ b/devel/electron5/files/patch-gpu_ipc_service_gpu__init.cc
@@ -0,0 +1,29 @@
+--- gpu/ipc/service/gpu_init.cc.orig 2019-04-08 08:32:57 UTC
++++ gpu/ipc/service/gpu_init.cc
+@@ -87,7 +87,7 @@ void InitializeDirectCompositionOverlaySupport(GPUInfo
+ }
+ #endif // defined(OS_WIN)
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) && !defined(IS_CHROMECAST)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS) && !defined(IS_CHROMECAST)) || defined(OS_BSD)
+ bool CanAccessNvidiaDeviceFile() {
+ bool res = true;
+ base::ScopedBlockingCall scoped_blocking_call(base::BlockingType::WILL_BLOCK);
+@@ -129,7 +129,7 @@ bool GpuInit::InitializeAndStartSandbox(base::CommandL
+ // crash during feature collection.
+ gpu::SetKeysForCrashLogging(gpu_info_);
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ if (gpu_info_.gpu.vendor_id == 0x10de && // NVIDIA
+ gpu_info_.gpu.driver_vendor == "NVIDIA" && !CanAccessNvidiaDeviceFile())
+ return false;
+@@ -199,7 +199,7 @@ bool GpuInit::InitializeAndStartSandbox(base::CommandL
+ sandbox_helper_->PreSandboxStartup();
+
+ bool attempted_startsandbox = false;
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) && !defined(OS_BSD)
+ // On Chrome OS ARM Mali, GPU driver userspace creates threads when
+ // initializing a GL context, so start the sandbox early.
+ // TODO(zmo): Need to collect OS version before this.
diff --git a/devel/electron5/files/patch-gpu_ipc_service_gpu__memory__buffer__factory.cc b/devel/electron5/files/patch-gpu_ipc_service_gpu__memory__buffer__factory.cc
new file mode 100644
index 000000000000..71374fdd34a3
--- /dev/null
+++ b/devel/electron5/files/patch-gpu_ipc_service_gpu__memory__buffer__factory.cc
@@ -0,0 +1,20 @@
+--- gpu/ipc/service/gpu_memory_buffer_factory.cc.orig 2019-04-08 08:18:21 UTC
++++ gpu/ipc/service/gpu_memory_buffer_factory.cc
+@@ -12,7 +12,7 @@
+ #include "gpu/ipc/service/gpu_memory_buffer_factory_io_surface.h"
+ #endif
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include "gpu/ipc/service/gpu_memory_buffer_factory_native_pixmap.h"
+ #endif
+
+@@ -33,7 +33,7 @@ GpuMemoryBufferFactory::CreateNativeType() {
+ return base::WrapUnique(new GpuMemoryBufferFactoryIOSurface);
+ #elif defined(OS_ANDROID)
+ return base::WrapUnique(new GpuMemoryBufferFactoryAndroidHardwareBuffer);
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ return base::WrapUnique(new GpuMemoryBufferFactoryNativePixmap);
+ #elif defined(OS_WIN)
+ return base::WrapUnique(new GpuMemoryBufferFactoryDXGI);
diff --git a/devel/electron5/files/patch-gpu_ipc_service_gpu__watchdog__thread.cc b/devel/electron5/files/patch-gpu_ipc_service_gpu__watchdog__thread.cc
new file mode 100644
index 000000000000..0a5145ee02db
--- /dev/null
+++ b/devel/electron5/files/patch-gpu_ipc_service_gpu__watchdog__thread.cc
@@ -0,0 +1,73 @@
+--- gpu/ipc/service/gpu_watchdog_thread.cc.orig 2019-04-08 08:32:57 UTC
++++ gpu/ipc/service/gpu_watchdog_thread.cc
+@@ -51,8 +51,10 @@ const int kGpuTimeout = 10000;
+ #endif
+
+ #if defined(USE_X11)
++#if !defined(OS_BSD)
+ const base::FilePath::CharType kTtyFilePath[] =
+ FILE_PATH_LITERAL("/sys/class/tty/tty0/active");
++#endif
+ const unsigned char text[20] = "check";
+ #endif
+
+@@ -75,8 +77,10 @@ GpuWatchdogThread::GpuWatchdogThread()
+ display_(nullptr),
+ window_(0),
+ atom_(x11::None),
++#if !defined(OS_BSD)
+ host_tty_(-1),
+ #endif
++#endif
+ weak_factory_(this) {
+ base::subtle::NoBarrier_Store(&awaiting_acknowledge_, false);
+
+@@ -91,7 +95,9 @@ GpuWatchdogThread::GpuWatchdogThread()
+ #endif
+
+ #if defined(USE_X11)
++#if !defined(OS_BSD)
+ tty_file_ = base::OpenFile(base::FilePath(kTtyFilePath), "r");
++#endif
+ SetupXServer();
+ #endif
+ base::MessageLoopCurrent::Get()->AddTaskObserver(&task_observer_);
+@@ -238,8 +244,10 @@ GpuWatchdogThread::~GpuWatchdogThread() {
+ power_monitor->RemoveObserver(this);
+
+ #if defined(USE_X11)
++#if !defined(OS_BSD)
+ if (tty_file_)
+ fclose(tty_file_);
++#endif
+ if (display_) {
+ DCHECK(window_);
+ XDestroyWindow(display_, window_);
+@@ -463,7 +471,7 @@ void GpuWatchdogThread::DeliberatelyTerminateToRecover
+ return;
+ #endif
+
+-#if defined(USE_X11)
++#if defined(USE_X11) && !defined(OS_BSD)
+ // Don't crash if we're not on the TTY of our host X11 server.
+ int active_tty = GetActiveTTY();
+ if (host_tty_ != -1 && active_tty != -1 && host_tty_ != active_tty) {
+@@ -526,7 +534,9 @@ void GpuWatchdogThread::SetupXServer() {
+ CopyFromParent, InputOutput, CopyFromParent, 0, nullptr);
+ atom_ = XInternAtom(display_, "CHECK", x11::False);
+ }
++#if !defined(OS_BSD)
+ host_tty_ = GetActiveTTY();
++#endif
+ }
+
+ void GpuWatchdogThread::SetupXChangeProp() {
+@@ -627,7 +637,7 @@ base::ThreadTicks GpuWatchdogThread::GetWatchedThreadT
+ }
+ #endif
+
+-#if defined(USE_X11)
++#if defined(USE_X11) && !defined(OS_BSD)
+ int GpuWatchdogThread::GetActiveTTY() const {
+ char tty_string[8] = {0};
+ if (tty_file_ && !fseek(tty_file_, 0, SEEK_SET) &&
diff --git a/devel/electron5/files/patch-gpu_ipc_service_gpu__watchdog__thread.h b/devel/electron5/files/patch-gpu_ipc_service_gpu__watchdog__thread.h
new file mode 100644
index 000000000000..cc2a3b4d121d
--- /dev/null
+++ b/devel/electron5/files/patch-gpu_ipc_service_gpu__watchdog__thread.h
@@ -0,0 +1,13 @@
+--- gpu/ipc/service/gpu_watchdog_thread.h.orig 2019-04-08 08:32:57 UTC
++++ gpu/ipc/service/gpu_watchdog_thread.h
+@@ -191,8 +191,10 @@ class GPU_IPC_SERVICE_EXPORT GpuWatchdogThread : publi
+ XDisplay* display_;
+ gfx::AcceleratedWidget window_;
+ XAtom atom_;
++#if !defined(OS_BSD)
+ FILE* tty_file_;
+ int host_tty_;
++#endif
+ #endif
+
+ base::RepeatingClosure alternative_terminate_for_testing_;
diff --git a/devel/electron5/files/patch-headless_lib_browser_headless__content__browser__client.cc b/devel/electron5/files/patch-headless_lib_browser_headless__content__browser__client.cc
new file mode 100644
index 000000000000..27fb859e4b7a
--- /dev/null
+++ b/devel/electron5/files/patch-headless_lib_browser_headless__content__browser__client.cc
@@ -0,0 +1,20 @@
+--- headless/lib/browser/headless_content_browser_client.cc.orig 2019-04-08 08:32:57 UTC
++++ headless/lib/browser/headless_content_browser_client.cc
+@@ -187,7 +187,7 @@ HeadlessContentBrowserClient::GetGeneratedCodeCacheSet
+ return content::GeneratedCodeCacheSettings(true, 0, context->GetPath());
+ }
+
+-#if defined(OS_POSIX) && !defined(OS_MACOSX)
++#if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_BSD)
+ void HeadlessContentBrowserClient::GetAdditionalMappedFilesForChildProcess(
+ const base::CommandLine& command_line,
+ int child_process_id,
+@@ -198,7 +198,7 @@ void HeadlessContentBrowserClient::GetAdditionalMapped
+ mappings->Share(service_manager::kCrashDumpSignal, crash_signal_fd);
+ #endif // defined(HEADLESS_USE_BREAKPAD)
+ }
+-#endif // defined(OS_POSIX) && !defined(OS_MACOSX)
++#endif // defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_BSD)
+
+ void HeadlessContentBrowserClient::AppendExtraCommandLineSwitches(
+ base::CommandLine* command_line,
diff --git a/devel/electron5/files/patch-headless_lib_browser_headless__content__browser__client.h b/devel/electron5/files/patch-headless_lib_browser_headless__content__browser__client.h
new file mode 100644
index 000000000000..f3db145c0e95
--- /dev/null
+++ b/devel/electron5/files/patch-headless_lib_browser_headless__content__browser__client.h
@@ -0,0 +1,11 @@
+--- headless/lib/browser/headless_content_browser_client.h.orig 2019-04-08 08:18:21 UTC
++++ headless/lib/browser/headless_content_browser_client.h
+@@ -34,7 +34,7 @@ class HeadlessContentBrowserClient : public content::C
+ ::storage::OptionalQuotaSettingsCallback callback) override;
+ content::GeneratedCodeCacheSettings GetGeneratedCodeCacheSettings(
+ content::BrowserContext* context) override;
+-#if defined(OS_POSIX) && !defined(OS_MACOSX)
++#if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_BSD)
+ void GetAdditionalMappedFilesForChildProcess(
+ const base::CommandLine& command_line,
+ int child_process_id,
diff --git a/devel/electron5/files/patch-headless_lib_browser_headless__request__context__manager.cc b/devel/electron5/files/patch-headless_lib_browser_headless__request__context__manager.cc
new file mode 100644
index 000000000000..a3d5c2f229de
--- /dev/null
+++ b/devel/electron5/files/patch-headless_lib_browser_headless__request__context__manager.cc
@@ -0,0 +1,38 @@
+--- headless/lib/browser/headless_request_context_manager.cc.orig 2019-04-08 08:32:57 UTC
++++ headless/lib/browser/headless_request_context_manager.cc
+@@ -35,7 +35,7 @@ namespace headless {
+
+ namespace {
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ static char kProductName[] = "HeadlessChrome";
+ #endif
+
+@@ -81,7 +81,7 @@ net::NetworkTrafficAnnotationTag GetProxyConfigTraffic
+ return traffic_annotation;
+ }
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ ::network::mojom::CryptConfigPtr BuildCryptConfigOnce(
+ const base::FilePath& user_data_path) {
+ static bool done_once = false;
+@@ -290,7 +290,7 @@ HeadlessRequestContextManager::HeadlessRequestContextM
+ proxy_config_monitor_ =
+ std::make_unique<HeadlessProxyConfigMonitor>(proxy_monitor_task_runner);
+ }
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ crypt_config_ = BuildCryptConfigOnce(user_data_path_);
+ if (network_service_enabled_ && crypt_config_)
+ content::GetNetworkService()->SetCryptConfig(std::move(crypt_config_));
+@@ -366,7 +366,7 @@ void HeadlessRequestContextManager::InitializeOnIO() {
+ std::move(protocol_handler.second));
+ }
+ protocol_handlers_.clear();
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ if (crypt_config_) {
+ content::GetNetworkServiceImpl()->SetCryptConfig(
+ std::move(crypt_config_));
diff --git a/devel/electron5/files/patch-headless_lib_browser_headless__request__context__manager.h b/devel/electron5/files/patch-headless_lib_browser_headless__request__context__manager.h
new file mode 100644
index 000000000000..6ad7e4b69bd1
--- /dev/null
+++ b/devel/electron5/files/patch-headless_lib_browser_headless__request__context__manager.h
@@ -0,0 +1,11 @@
+--- headless/lib/browser/headless_request_context_manager.h.orig 2019-04-08 08:18:21 UTC
++++ headless/lib/browser/headless_request_context_manager.h
+@@ -69,7 +69,7 @@ class HeadlessRequestContextManager {
+ std::unique_ptr<HeadlessProxyConfigMonitor> proxy_config_monitor_;
+ bool is_system_context_;
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ ::network::mojom::CryptConfigPtr crypt_config_;
+ #endif
+
diff --git a/devel/electron5/files/patch-headless_lib_headless__macros.h b/devel/electron5/files/patch-headless_lib_headless__macros.h
new file mode 100644
index 000000000000..91de5d982ec9
--- /dev/null
+++ b/devel/electron5/files/patch-headless_lib_headless__macros.h
@@ -0,0 +1,13 @@
+--- headless/lib/headless_macros.h.orig 2019-04-08 08:18:21 UTC
++++ headless/lib/headless_macros.h
+@@ -7,8 +7,8 @@
+
+ #include "build/build_config.h"
+
+-#if defined(OS_POSIX) && !defined(OS_MACOSX)
++#if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_BSD)
+ #define HEADLESS_USE_BREAKPAD
+-#endif // defined(OS_POSIX) && !defined(OS_MACOSX)
++#endif // defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_BSD)
+
+ #endif // HEADLESS_LIB_HEADLESS_MACROS_H_
diff --git a/devel/electron5/files/patch-ipc_ipc__channel.h b/devel/electron5/files/patch-ipc_ipc__channel.h
new file mode 100644
index 000000000000..bd2c82e7791e
--- /dev/null
+++ b/devel/electron5/files/patch-ipc_ipc__channel.h
@@ -0,0 +1,11 @@
+--- ipc/ipc_channel.h.orig 2019-04-08 08:32:59 UTC
++++ ipc/ipc_channel.h
+@@ -244,7 +244,7 @@ class COMPONENT_EXPORT(IPC) Channel : public Sender {
+ static std::string GenerateUniqueRandomChannelID();
+ #endif
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Sandboxed processes live in a PID namespace, so when sending the IPC hello
+ // message from client to server we need to send the PID from the global
+ // PID namespace.
diff --git a/devel/electron5/files/patch-ipc_ipc__channel__common.cc b/devel/electron5/files/patch-ipc_ipc__channel__common.cc
new file mode 100644
index 000000000000..80a9eac25d53
--- /dev/null
+++ b/devel/electron5/files/patch-ipc_ipc__channel__common.cc
@@ -0,0 +1,11 @@
+--- ipc/ipc_channel_common.cc.orig 2019-04-08 08:18:22 UTC
++++ ipc/ipc_channel_common.cc
+@@ -9,7 +9,7 @@
+
+ namespace IPC {
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+
+ namespace {
+ int g_global_pid = 0;
diff --git a/devel/electron5/files/patch-ipc_ipc__channel__mojo.cc b/devel/electron5/files/patch-ipc_ipc__channel__mojo.cc
new file mode 100644
index 000000000000..23d22bf7228d
--- /dev/null
+++ b/devel/electron5/files/patch-ipc_ipc__channel__mojo.cc
@@ -0,0 +1,11 @@
+--- ipc/ipc_channel_mojo.cc.orig 2019-04-08 08:32:59 UTC
++++ ipc/ipc_channel_mojo.cc
+@@ -64,7 +64,7 @@ class MojoChannelFactory : public ChannelFactory {
+ };
+
+ base::ProcessId GetSelfPID() {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ if (int global_pid = Channel::GetGlobalPid())
+ return global_pid;
+ #endif // OS_LINUX
diff --git a/devel/electron5/files/patch-ipc_ipc__message__utils.cc b/devel/electron5/files/patch-ipc_ipc__message__utils.cc
new file mode 100644
index 000000000000..49cd38da4230
--- /dev/null
+++ b/devel/electron5/files/patch-ipc_ipc__message__utils.cc
@@ -0,0 +1,11 @@
+--- ipc/ipc_message_utils.cc.orig 2019-04-08 08:32:59 UTC
++++ ipc/ipc_message_utils.cc
+@@ -349,7 +349,7 @@ void ParamTraits<unsigned int>::Log(const param_type&
+ }
+
+ #if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_FUCHSIA) || \
+- (defined(OS_ANDROID) && defined(ARCH_CPU_64_BITS))
++ defined(OS_BSD) || (defined(OS_ANDROID) && defined(ARCH_CPU_64_BITS))
+ void ParamTraits<long>::Log(const param_type& p, std::string* l) {
+ l->append(base::NumberToString(p));
+ }
diff --git a/devel/electron5/files/patch-ipc_ipc__message__utils.h b/devel/electron5/files/patch-ipc_ipc__message__utils.h
new file mode 100644
index 000000000000..2586a2577eb5
--- /dev/null
+++ b/devel/electron5/files/patch-ipc_ipc__message__utils.h
@@ -0,0 +1,11 @@
+--- ipc/ipc_message_utils.h.orig 2019-04-08 08:32:59 UTC
++++ ipc/ipc_message_utils.h
+@@ -204,7 +204,7 @@ struct ParamTraits<unsigned int> {
+ // Since we want to support Android 32<>64 bit IPC, as long as we don't have
+ // these traits for 32 bit ARM then that'll catch any errors.
+ #if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_FUCHSIA) || \
+- (defined(OS_ANDROID) && defined(ARCH_CPU_64_BITS))
++ defined(OS_BSD) || (defined(OS_ANDROID) && defined(ARCH_CPU_64_BITS))
+ template <>
+ struct ParamTraits<long> {
+ typedef long param_type;
diff --git a/devel/electron5/files/patch-media_BUILD.gn b/devel/electron5/files/patch-media_BUILD.gn
new file mode 100644
index 000000000000..7a73dae0671b
--- /dev/null
+++ b/devel/electron5/files/patch-media_BUILD.gn
@@ -0,0 +1,12 @@
+--- media/BUILD.gn.orig 2019-04-08 08:32:59 UTC
++++ media/BUILD.gn
+@@ -59,6 +59,9 @@ config("media_config") {
+ defines += [ "DLOPEN_PULSEAUDIO" ]
+ }
+ }
++ if (use_sndio) {
++ defines += [ "USE_SNDIO" ]
++ }
+ if (use_cras) {
+ defines += [ "USE_CRAS" ]
+ }
diff --git a/devel/electron5/files/patch-media_audio_BUILD.gn b/devel/electron5/files/patch-media_audio_BUILD.gn
new file mode 100644
index 000000000000..fd28953c9bcc
--- /dev/null
+++ b/devel/electron5/files/patch-media_audio_BUILD.gn
@@ -0,0 +1,22 @@
+--- media/audio/BUILD.gn.orig 2019-04-09 12:48:19 UTC
++++ media/audio/BUILD.gn
+@@ -248,8 +248,18 @@ source_set("audio") {
+ deps += [ "//media/base/android:media_jni_headers" ]
+ }
+
+- if (is_linux) {
++ if (is_linux && !use_sndio) {
+ sources += [ "linux/audio_manager_linux.cc" ]
++ }
++ if (use_sndio) {
++ libs += [ "sndio" ]
++ sources += [
++ "openbsd/audio_manager_openbsd.cc",
++ "sndio/sndio_input.cc",
++ "sndio/sndio_input.h",
++ "sndio/sndio_output.cc",
++ "sndio/sndio_output.h"
++ ]
+ }
+
+ if (use_alsa) {
diff --git a/devel/electron5/files/patch-media_audio_alsa_audio__manager__alsa.cc b/devel/electron5/files/patch-media_audio_alsa_audio__manager__alsa.cc
new file mode 100644
index 000000000000..3d6bef4bdca2
--- /dev/null
+++ b/devel/electron5/files/patch-media_audio_alsa_audio__manager__alsa.cc
@@ -0,0 +1,54 @@
+--- media/audio/alsa/audio_manager_alsa.cc.orig 2019-04-08 08:18:22 UTC
++++ media/audio/alsa/audio_manager_alsa.cc
+@@ -92,7 +92,9 @@ void AudioManagerAlsa::GetAlsaAudioDevices(StreamType
+ int card = -1;
+
+ // Loop through the sound cards to get ALSA device hints.
++#if defined(OS_LINUX)
+ while (!wrapper_->CardNext(&card) && card >= 0) {
++#endif
+ void** hints = NULL;
+ int error = wrapper_->DeviceNameHint(card, kPcmInterfaceName, &hints);
+ if (!error) {
+@@ -104,7 +106,9 @@ void AudioManagerAlsa::GetAlsaAudioDevices(StreamType
+ DLOG(WARNING) << "GetAlsaAudioDevices: unable to get device hints: "
+ << wrapper_->StrError(error);
+ }
++#if defined(OS_LINUX)
+ }
++#endif
+ }
+
+ void AudioManagerAlsa::GetAlsaDevicesInfo(AudioManagerAlsa::StreamType type,
+@@ -187,7 +191,11 @@ bool AudioManagerAlsa::IsAlsaDeviceAvailable(
+ // goes through software conversion if needed (e.g. incompatible
+ // sample rate).
+ // TODO(joi): Should we prefer "hw" instead?
++#ifdef OS_LINUX
+ static const char kDeviceTypeDesired[] = "plughw";
++#else
++ static const char kDeviceTypeDesired[] = "plug";
++#endif
+ return strncmp(kDeviceTypeDesired, device_name,
+ base::size(kDeviceTypeDesired) - 1) == 0;
+ }
+@@ -209,7 +217,9 @@ bool AudioManagerAlsa::HasAnyAlsaAudioDevice(
+ // Loop through the sound cards.
+ // Don't use snd_device_name_hint(-1,..) since there is a access violation
+ // inside this ALSA API with libasound.so.2.0.0.
++#if defined(OS_LINUX)
+ while (!wrapper_->CardNext(&card) && (card >= 0) && !has_device) {
++#endif
+ int error = wrapper_->DeviceNameHint(card, kPcmInterfaceName, &hints);
+ if (!error) {
+ for (void** hint_iter = hints; *hint_iter != NULL; hint_iter++) {
+@@ -233,7 +243,9 @@ bool AudioManagerAlsa::HasAnyAlsaAudioDevice(
+ DLOG(WARNING) << "HasAnyAudioDevice: unable to get device hints: "
+ << wrapper_->StrError(error);
+ }
++#if defined(OS_LINUX)
+ }
++#endif
+
+ return has_device;
+ }
diff --git a/devel/electron5/files/patch-media_audio_audio__input__device.cc b/devel/electron5/files/patch-media_audio_audio__input__device.cc
new file mode 100644
index 000000000000..e0540ac98ef5
--- /dev/null
+++ b/devel/electron5/files/patch-media_audio_audio__input__device.cc
@@ -0,0 +1,11 @@
+--- media/audio/audio_input_device.cc.orig 2019-04-08 08:18:22 UTC
++++ media/audio/audio_input_device.cc
+@@ -248,7 +248,7 @@ void AudioInputDevice::OnStreamCreated(
+ // also a risk of false positives if we are suspending when starting the stream
+ // here. See comments in AliveChecker and PowerObserverHelper for details and
+ // todos.
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ const bool stop_at_first_alive_notification = true;
+ const bool pause_check_during_suspend = false;
+ #else
diff --git a/devel/electron5/files/patch-media_audio_audio__manager.cc b/devel/electron5/files/patch-media_audio_audio__manager.cc
new file mode 100644
index 000000000000..7aceb6038d07
--- /dev/null
+++ b/devel/electron5/files/patch-media_audio_audio__manager.cc
@@ -0,0 +1,29 @@
+--- media/audio/audio_manager.cc.orig 2019-04-08 08:18:22 UTC
++++ media/audio/audio_manager.cc
+@@ -48,7 +48,7 @@ class AudioManagerHelper {
+ }
+ #endif
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ void set_app_name(const std::string& app_name) { app_name_ = app_name; }
+ const std::string& app_name() const { return app_name_; }
+ #endif
+@@ -59,7 +59,7 @@ class AudioManagerHelper {
+ std::unique_ptr<base::win::ScopedCOMInitializer> com_initializer_for_testing_;
+ #endif
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ std::string app_name_;
+ #endif
+
+@@ -128,7 +128,7 @@ std::unique_ptr<AudioManager> AudioManager::CreateForT
+ return Create(std::move(audio_thread), GetHelper()->fake_log_factory());
+ }
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // static
+ void AudioManager::SetGlobalAppName(const std::string& app_name) {
+ GetHelper()->set_app_name(app_name);
diff --git a/devel/electron5/files/patch-media_audio_audio__manager.h b/devel/electron5/files/patch-media_audio_audio__manager.h
new file mode 100644
index 000000000000..1206e1c0f003
--- /dev/null
+++ b/devel/electron5/files/patch-media_audio_audio__manager.h
@@ -0,0 +1,11 @@
+--- media/audio/audio_manager.h.orig 2019-04-08 08:18:22 UTC
++++ media/audio/audio_manager.h
+@@ -60,7 +60,7 @@ class MEDIA_EXPORT AudioManager {
+ static std::unique_ptr<AudioManager> CreateForTesting(
+ std::unique_ptr<AudioThread> audio_thread);
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Sets the name of the audio source as seen by external apps. Only actually
+ // used with PulseAudio as of this writing.
+ static void SetGlobalAppName(const std::string& app_name);
diff --git a/devel/electron5/files/patch-media_audio_audio__output__proxy__unittest.cc b/devel/electron5/files/patch-media_audio_audio__output__proxy__unittest.cc
new file mode 100644
index 000000000000..2edd7bc92e96
--- /dev/null
+++ b/devel/electron5/files/patch-media_audio_audio__output__proxy__unittest.cc
@@ -0,0 +1,11 @@
+--- media/audio/audio_output_proxy_unittest.cc.orig 2019-04-08 08:32:59 UTC
++++ media/audio/audio_output_proxy_unittest.cc
+@@ -410,7 +410,7 @@ class AudioOutputProxyTest : public testing::Test {
+ // |stream| is closed at this point. Start() should reopen it again.
+ EXPECT_CALL(manager(), MakeAudioOutputStream(_, _, _))
+ .Times(2)
+- .WillRepeatedly(Return(reinterpret_cast<AudioOutputStream*>(NULL)));
++ .WillRepeatedly(Return(static_cast<AudioOutputStream*>(NULL)));
+
+ EXPECT_CALL(callback_, OnError()).Times(2);
+
diff --git a/devel/electron5/files/patch-media_base_audio__latency.cc b/devel/electron5/files/patch-media_base_audio__latency.cc
new file mode 100644
index 000000000000..3e0733304ea8
--- /dev/null
+++ b/devel/electron5/files/patch-media_base_audio__latency.cc
@@ -0,0 +1,11 @@
+--- media/base/audio_latency.cc.orig 2019-04-08 08:18:22 UTC
++++ media/base/audio_latency.cc
+@@ -106,7 +106,7 @@ int AudioLatency::GetRtcBufferSize(int sample_rate, in
+ return frames_per_buffer;
+ }
+
+-#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_FUCHSIA)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_FUCHSIA) || defined(OS_BSD)
+ // On Linux, MacOS and Fuchsia, the low level IO implementations on the
+ // browser side supports all buffer size the clients want. We use the native
+ // peer connection buffer size (10ms) to achieve best possible performance.
diff --git a/devel/electron5/files/patch-media_base_scopedfd__helper.h b/devel/electron5/files/patch-media_base_scopedfd__helper.h
new file mode 100644
index 000000000000..6ad60567ddf7
--- /dev/null
+++ b/devel/electron5/files/patch-media_base_scopedfd__helper.h
@@ -0,0 +1,19 @@
+--- media/base/scopedfd_helper.h.orig 2019-04-08 08:18:23 UTC
++++ media/base/scopedfd_helper.h
+@@ -14,14 +14,14 @@ namespace media {
+ // since the only current user is V4L2 we are limiting the scope to OS_LINUX so
+ // the binary size does not inflate on non-using systems. Feel free to adapt
+ // this and BUILD.gn as our needs evolve.
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+
+ // Return a new vector containing duplicates of |fds|, or an empty vector in
+ // case of error.
+ MEDIA_EXPORT std::vector<base::ScopedFD> DuplicateFDs(
+ const std::vector<base::ScopedFD>& fds);
+
+-#endif // OS_LINUX
++#endif // OS_LINUX || OS_BSD
+
+ } // namespace media
+
diff --git a/devel/electron5/files/patch-media_base_video__frame.cc b/devel/electron5/files/patch-media_base_video__frame.cc
new file mode 100644
index 000000000000..c40ba7da4618
--- /dev/null
+++ b/devel/electron5/files/patch-media_base_video__frame.cc
@@ -0,0 +1,47 @@
+--- media/base/video_frame.cc.orig 2019-04-08 08:32:59 UTC
++++ media/base/video_frame.cc
+@@ -53,7 +53,7 @@ static std::string StorageTypeToString(
+ return "OWNED_MEMORY";
+ case VideoFrame::STORAGE_SHMEM:
+ return "SHMEM";
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ case VideoFrame::STORAGE_DMABUFS:
+ return "DMABUFS";
+ #endif
+@@ -68,7 +68,7 @@ static std::string StorageTypeToString(
+ // static
+ bool VideoFrame::IsStorageTypeMappable(VideoFrame::StorageType storage_type) {
+ return
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // This is not strictly needed but makes explicit that, at VideoFrame
+ // level, DmaBufs are not mappable from userspace.
+ storage_type != VideoFrame::STORAGE_DMABUFS &&
+@@ -461,7 +461,7 @@ scoped_refptr<VideoFrame> VideoFrame::WrapExternalYuva
+ return frame;
+ }
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // static
+ scoped_refptr<VideoFrame> VideoFrame::WrapExternalDmabufs(
+ const VideoFrameLayout& layout,
+@@ -592,7 +592,7 @@ scoped_refptr<VideoFrame> VideoFrame::WrapVideoFrame(
+ }
+ }
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // If there are any |dmabuf_fds_| plugged in, we should duplicate them.
+ if (frame->storage_type() == STORAGE_DMABUFS) {
+ wrapping_frame->dmabuf_fds_ = DuplicateFDs(frame->dmabuf_fds_);
+@@ -917,7 +917,7 @@ size_t VideoFrame::shared_memory_offset() const {
+ return shared_memory_offset_;
+ }
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ const std::vector<base::ScopedFD>& VideoFrame::DmabufFds() const {
+ DCHECK_EQ(storage_type_, STORAGE_DMABUFS);
+
diff --git a/devel/electron5/files/patch-media_base_video__frame.h b/devel/electron5/files/patch-media_base_video__frame.h
new file mode 100644
index 000000000000..754660888d92
--- /dev/null
+++ b/devel/electron5/files/patch-media_base_video__frame.h
@@ -0,0 +1,38 @@
+--- media/base/video_frame.h.orig 2019-04-08 08:32:59 UTC
++++ media/base/video_frame.h
+@@ -71,7 +71,7 @@ class MEDIA_EXPORT VideoFrame : public base::RefCounte
+ STORAGE_UNOWNED_MEMORY = 2, // External, non owned data pointers.
+ STORAGE_OWNED_MEMORY = 3, // VideoFrame has allocated its own data buffer.
+ STORAGE_SHMEM = 4, // Pixels are backed by Shared Memory.
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // TODO(mcasas): Consider turning this type into STORAGE_NATIVE
+ // based on the idea of using this same enum value for both DMA
+ // buffers on Linux and CVPixelBuffers on Mac (which currently use
+@@ -245,7 +245,7 @@ class MEDIA_EXPORT VideoFrame : public base::RefCounte
+ uint8_t* a_data,
+ base::TimeDelta timestamp);
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Wraps provided dmabufs
+ // (https://www.kernel.org/doc/html/latest/driver-api/dma-buf.html) with a
+ // VideoFrame. The frame will take ownership of |dmabuf_fds|, and will
+@@ -430,7 +430,7 @@ class MEDIA_EXPORT VideoFrame : public base::RefCounte
+ // Returns the offset into the shared memory where the frame data begins.
+ size_t shared_memory_offset() const;
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Returns a vector containing the backing DmaBufs for this frame. The number
+ // of returned DmaBufs will be equal or less than the number of planes of
+ // the frame. If there are less, this means that the last FD contains the
+@@ -624,7 +624,7 @@ class MEDIA_EXPORT VideoFrame : public base::RefCounte
+ // memory.
+ size_t shared_memory_offset_;
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Dmabufs for the frame, used when storage is STORAGE_DMABUFS. Size is either
+ // equal or less than the number of planes of the frame. If it is less, then
+ // the memory area represented by the last FD contains the remaining planes.
diff --git a/devel/electron5/files/patch-media_capture_video_create__video__capture__device__factory.cc b/devel/electron5/files/patch-media_capture_video_create__video__capture__device__factory.cc
new file mode 100644
index 000000000000..c35af6d0cfd1
--- /dev/null
+++ b/devel/electron5/files/patch-media_capture_video_create__video__capture__device__factory.cc
@@ -0,0 +1,20 @@
+--- media/capture/video/create_video_capture_device_factory.cc.orig 2019-04-08 08:18:23 UTC
++++ media/capture/video/create_video_capture_device_factory.cc
+@@ -10,7 +10,7 @@
+ #include "media/capture/video/fake_video_capture_device_factory.h"
+ #include "media/capture/video/file_video_capture_device_factory.h"
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ #include "media/capture/video/linux/video_capture_device_factory_linux.h"
+ #elif defined(OS_CHROMEOS)
+ #include "media/capture/video/chromeos/public/cros_features.h"
+@@ -33,7 +33,7 @@ namespace {
+ std::unique_ptr<VideoCaptureDeviceFactory>
+ CreatePlatformSpecificVideoCaptureDeviceFactory(
+ scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner) {
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ return std::make_unique<VideoCaptureDeviceFactoryLinux>(ui_task_runner);
+ #elif defined(OS_CHROMEOS)
+ // On Chrome OS we have to support two use cases:
diff --git a/devel/electron5/files/patch-media_capture_video_fake__video__capture__device__factory.cc b/devel/electron5/files/patch-media_capture_video_fake__video__capture__device__factory.cc
new file mode 100644
index 000000000000..0fe3b2b6e5f7
--- /dev/null
+++ b/devel/electron5/files/patch-media_capture_video_fake__video__capture__device__factory.cc
@@ -0,0 +1,11 @@
+--- media/capture/video/fake_video_capture_device_factory.cc.orig 2019-04-08 08:32:59 UTC
++++ media/capture/video/fake_video_capture_device_factory.cc
+@@ -204,7 +204,7 @@ void FakeVideoCaptureDeviceFactory::GetDeviceDescripto
+ for (const auto& entry : devices_config_) {
+ device_descriptors->emplace_back(
+ base::StringPrintf("fake_device_%d", entry_index), entry.device_id,
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ VideoCaptureApi::LINUX_V4L2_SINGLE_PLANE
+ #elif defined(OS_MACOSX)
+ VideoCaptureApi::MACOSX_AVFOUNDATION
diff --git a/devel/electron5/files/patch-media_capture_video_file__video__capture__device__factory.cc b/devel/electron5/files/patch-media_capture_video_file__video__capture__device__factory.cc
new file mode 100644
index 000000000000..033e1da95914
--- /dev/null
+++ b/devel/electron5/files/patch-media_capture_video_file__video__capture__device__factory.cc
@@ -0,0 +1,11 @@
+--- media/capture/video/file_video_capture_device_factory.cc.orig 2019-04-08 08:32:59 UTC
++++ media/capture/video/file_video_capture_device_factory.cc
+@@ -53,7 +53,7 @@ void FileVideoCaptureDeviceFactory::GetDeviceDescripto
+ #elif defined(OS_MACOSX)
+ command_line_file_path.value(), kFileVideoCaptureDeviceName,
+ VideoCaptureApi::MACOSX_AVFOUNDATION
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ command_line_file_path.value(), kFileVideoCaptureDeviceName,
+ VideoCaptureApi::LINUX_V4L2_SINGLE_PLANE
+ #else
diff --git a/devel/electron5/files/patch-media_capture_video_linux_v4l2__capture__delegate.cc b/devel/electron5/files/patch-media_capture_video_linux_v4l2__capture__delegate.cc
new file mode 100644
index 000000000000..f8f5049ac9b3
--- /dev/null
+++ b/devel/electron5/files/patch-media_capture_video_linux_v4l2__capture__delegate.cc
@@ -0,0 +1,26 @@
+--- media/capture/video/linux/v4l2_capture_delegate.cc.orig 2019-04-08 08:32:59 UTC
++++ media/capture/video/linux/v4l2_capture_delegate.cc
+@@ -4,8 +4,10 @@
+
+ #include "media/capture/video/linux/v4l2_capture_delegate.h"
+
++#if !defined(OS_BSD)
+ #include <linux/version.h>
+ #include <linux/videodev2.h>
++#endif
+ #include <poll.h>
+ #include <sys/fcntl.h>
+ #include <sys/ioctl.h>
+@@ -24,10 +26,10 @@
+
+ using media::mojom::MeteringMode;
+
+-#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 6, 0)
++// #if LINUX_VERSION_CODE < KERNEL_VERSION(4, 6, 0)
+ // 16 bit depth, Realsense F200.
+ #define V4L2_PIX_FMT_Z16 v4l2_fourcc('Z', '1', '6', ' ')
+-#endif
++// #endif
+
+ // TODO(aleksandar.stojiljkovic): Wrap this with kernel version check once the
+ // format is introduced to kernel.
diff --git a/devel/electron5/files/patch-media_capture_video_linux_video__capture__device__factory__linux.cc b/devel/electron5/files/patch-media_capture_video_linux_video__capture__device__factory__linux.cc
new file mode 100644
index 000000000000..3d050521bb7a
--- /dev/null
+++ b/devel/electron5/files/patch-media_capture_video_linux_video__capture__device__factory__linux.cc
@@ -0,0 +1,32 @@
+--- media/capture/video/linux/video_capture_device_factory_linux.cc.orig 2019-04-08 08:18:23 UTC
++++ media/capture/video/linux/video_capture_device_factory_linux.cc
+@@ -259,6 +259,7 @@ bool VideoCaptureDeviceFactoryLinux::HasUsableFormats(
+ if (!(capabilities & V4L2_CAP_VIDEO_CAPTURE))
+ return false;
+
++#if !defined(OS_FREEBSD)
+ const std::vector<uint32_t>& usable_fourccs =
+ VideoCaptureDeviceLinux::GetListOfUsableFourCCs(false);
+ v4l2_fmtdesc fmtdesc = {};
+@@ -267,6 +268,7 @@ bool VideoCaptureDeviceFactoryLinux::HasUsableFormats(
+ if (base::ContainsValue(usable_fourccs, fmtdesc.pixelformat))
+ return true;
+ }
++#endif
+
+ DVLOG(1) << "No usable formats found";
+ return false;
+@@ -312,9 +314,13 @@ void VideoCaptureDeviceFactoryLinux::GetSupportedForma
+ v4l2_format.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
+ for (; DoIoctl(fd, VIDIOC_ENUM_FMT, &v4l2_format) == 0; ++v4l2_format.index) {
+ VideoCaptureFormat supported_format;
++#if !defined(OS_FREEBSD)
+ supported_format.pixel_format =
+ VideoCaptureDeviceLinux::V4l2FourCcToChromiumPixelFormat(
+ v4l2_format.pixelformat);
++#else
++ supported_format.pixel_format = PIXEL_FORMAT_UNKNOWN;
++#endif
+
+ if (supported_format.pixel_format == PIXEL_FORMAT_UNKNOWN)
+ continue;
diff --git a/devel/electron5/files/patch-media_capture_video_linux_video__capture__device__linux.cc b/devel/electron5/files/patch-media_capture_video_linux_video__capture__device__linux.cc
new file mode 100644
index 000000000000..7de7520a8409
--- /dev/null
+++ b/devel/electron5/files/patch-media_capture_video_linux_video__capture__device__linux.cc
@@ -0,0 +1,60 @@
+--- media/capture/video/linux/video_capture_device_linux.cc.orig 2019-04-08 08:32:59 UTC
++++ media/capture/video/linux/video_capture_device_linux.cc
+@@ -37,6 +37,7 @@ int TranslatePowerLineFrequencyToV4L2(PowerLineFrequen
+
+ } // namespace
+
++#if !defined(OS_FREEBSD)
+ // Translates Video4Linux pixel formats to Chromium pixel formats.
+ // static
+ VideoPixelFormat VideoCaptureDeviceLinux::V4l2FourCcToChromiumPixelFormat(
+@@ -50,6 +51,7 @@ std::vector<uint32_t> VideoCaptureDeviceLinux::GetList
+ bool favour_mjpeg) {
+ return V4L2CaptureDelegate::GetListOfUsableFourCcs(favour_mjpeg);
+ }
++#endif // !defined(OS_FREEBSD)
+
+ VideoCaptureDeviceLinux::VideoCaptureDeviceLinux(
+ scoped_refptr<V4L2CaptureDevice> v4l2,
+@@ -68,6 +70,7 @@ VideoCaptureDeviceLinux::~VideoCaptureDeviceLinux() {
+ void VideoCaptureDeviceLinux::AllocateAndStart(
+ const VideoCaptureParams& params,
+ std::unique_ptr<VideoCaptureDevice::Client> client) {
++#if !defined(OS_FREEBSD)
+ DCHECK(!capture_impl_);
+ if (v4l2_thread_.IsRunning())
+ return; // Wrong state.
+@@ -95,9 +98,11 @@ void VideoCaptureDeviceLinux::AllocateAndStart(
+ for (auto& request : photo_requests_queue_)
+ v4l2_thread_.task_runner()->PostTask(FROM_HERE, std::move(request));
+ photo_requests_queue_.clear();
++#endif // !defined(OS_FREEBSD)
+ }
+
+ void VideoCaptureDeviceLinux::StopAndDeAllocate() {
++#if !defined(OS_FREEBSD)
+ if (!v4l2_thread_.IsRunning())
+ return; // Wrong state.
+ v4l2_thread_.task_runner()->PostTask(
+@@ -107,6 +112,7 @@ void VideoCaptureDeviceLinux::StopAndDeAllocate() {
+ v4l2_thread_.Stop();
+
+ capture_impl_ = nullptr;
++#endif // !defined(OS_FREEBSD)
+ }
+
+ void VideoCaptureDeviceLinux::TakePhoto(TakePhotoCallback callback) {
+@@ -149,11 +155,13 @@ void VideoCaptureDeviceLinux::SetPhotoOptions(
+ }
+
+ void VideoCaptureDeviceLinux::SetRotation(int rotation) {
++#if !defined(OS_FREEBSD)
+ if (v4l2_thread_.IsRunning()) {
+ v4l2_thread_.task_runner()->PostTask(
+ FROM_HERE, base::BindOnce(&V4L2CaptureDelegate::SetRotation,
+ capture_impl_->GetWeakPtr(), rotation));
+ }
++#endif // !defined(OS_FREEBSD)
+ }
+
+ } // namespace media
diff --git a/devel/electron5/files/patch-media_capture_video_mock__gpu__memory__buffer__manager.cc b/devel/electron5/files/patch-media_capture_video_mock__gpu__memory__buffer__manager.cc
new file mode 100644
index 000000000000..ea2cf0f3c02c
--- /dev/null
+++ b/devel/electron5/files/patch-media_capture_video_mock__gpu__memory__buffer__manager.cc
@@ -0,0 +1,11 @@
+--- media/capture/video/mock_gpu_memory_buffer_manager.cc.orig 2019-04-08 08:32:59 UTC
++++ media/capture/video/mock_gpu_memory_buffer_manager.cc
+@@ -103,7 +103,7 @@ class FakeGpuMemoryBuffer : public gfx::GpuMemoryBuffe
+ gfx::GpuMemoryBufferHandle handle;
+ handle.type = gfx::NATIVE_PIXMAP;
+ handle.id = handle_.id;
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ handle.native_pixmap_handle =
+ gfx::CloneHandleForIPC(handle_.native_pixmap_handle);
+ #endif
diff --git a/devel/electron5/files/patch-media_capture_video_shared__memory__handle__provider.cc b/devel/electron5/files/patch-media_capture_video_shared__memory__handle__provider.cc
new file mode 100644
index 000000000000..6a23b69c4743
--- /dev/null
+++ b/devel/electron5/files/patch-media_capture_video_shared__memory__handle__provider.cc
@@ -0,0 +1,11 @@
+--- media/capture/video/shared_memory_handle_provider.cc.orig 2019-04-08 08:18:23 UTC
++++ media/capture/video/shared_memory_handle_provider.cc
+@@ -63,7 +63,7 @@ bool SharedMemoryHandleProvider::InitFromMojoHandle(
+ return true;
+ }
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ bool SharedMemoryHandleProvider::InitAsReadOnlyFromRawFileDescriptor(
+ mojo::ScopedHandle fd_handle,
+ uint32_t memory_size_in_bytes) {
diff --git a/devel/electron5/files/patch-media_capture_video_shared__memory__handle__provider.h b/devel/electron5/files/patch-media_capture_video_shared__memory__handle__provider.h
new file mode 100644
index 000000000000..e6aae89c4358
--- /dev/null
+++ b/devel/electron5/files/patch-media_capture_video_shared__memory__handle__provider.h
@@ -0,0 +1,11 @@
+--- media/capture/video/shared_memory_handle_provider.h.orig 2019-04-08 08:18:23 UTC
++++ media/capture/video/shared_memory_handle_provider.h
+@@ -38,7 +38,7 @@ class CAPTURE_EXPORT SharedMemoryHandleProvider
+
+ // This requires platforms where base::SharedMemoryHandle is backed by a
+ // file descriptor.
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ bool InitAsReadOnlyFromRawFileDescriptor(mojo::ScopedHandle fd_handle,
+ uint32_t memory_size_in_bytes);
+ #endif // defined(OS_LINUX)
diff --git a/devel/electron5/files/patch-media_capture_video_video__capture__device__client.cc b/devel/electron5/files/patch-media_capture_video_video__capture__device__client.cc
new file mode 100644
index 000000000000..29b7a3c2b088
--- /dev/null
+++ b/devel/electron5/files/patch-media_capture_video_video__capture__device__client.cc
@@ -0,0 +1,11 @@
+--- media/capture/video/video_capture_device_client.cc.orig 2019-04-08 08:32:59 UTC
++++ media/capture/video/video_capture_device_client.cc
+@@ -236,7 +236,7 @@ void VideoCaptureDeviceClient::OnIncomingCapturedData(
+ // see http://linuxtv.org/downloads/v4l-dvb-apis/packed-rgb.html.
+ // Windows RGB24 defines blue at lowest byte,
+ // see https://msdn.microsoft.com/en-us/library/windows/desktop/dd407253
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ origin_colorspace = libyuv::FOURCC_RAW;
+ #elif defined(OS_WIN)
+ origin_colorspace = libyuv::FOURCC_24BG;
diff --git a/devel/electron5/files/patch-media_filters_vp9__parser.h b/devel/electron5/files/patch-media_filters_vp9__parser.h
new file mode 100644
index 000000000000..236d06463247
--- /dev/null
+++ b/devel/electron5/files/patch-media_filters_vp9__parser.h
@@ -0,0 +1,10 @@
+--- media/filters/vp9_parser.h.orig 2019-04-08 08:18:23 UTC
++++ media/filters/vp9_parser.h
+@@ -14,6 +14,7 @@
+
+ #include <stddef.h>
+ #include <stdint.h>
++#include <unistd.h>
+ #include <sys/types.h>
+
+ #include <memory>
diff --git a/devel/electron5/files/patch-media_formats_common_offset__byte__queue.cc b/devel/electron5/files/patch-media_formats_common_offset__byte__queue.cc
new file mode 100644
index 000000000000..dd4a1c50da88
--- /dev/null
+++ b/devel/electron5/files/patch-media_formats_common_offset__byte__queue.cc
@@ -0,0 +1,20 @@
+--- media/formats/common/offset_byte_queue.cc.orig 2019-04-08 08:18:23 UTC
++++ media/formats/common/offset_byte_queue.cc
+@@ -46,13 +46,13 @@ void OffsetByteQueue::PeekAt(int64_t offset, const uin
+ *size = tail() - offset;
+ }
+
+-bool OffsetByteQueue::Trim(int64_t max_offset) {
+- if (max_offset < head_) return true;
+- if (max_offset > tail()) {
++bool OffsetByteQueue::Trim(int64_t _max_offset) {
++ if (_max_offset < head_) return true;
++ if (_max_offset > tail()) {
+ Pop(size_);
+ return false;
+ }
+- Pop(max_offset - head_);
++ Pop(_max_offset - head_);
+ return true;
+ }
+
diff --git a/devel/electron5/files/patch-media_formats_common_offset__byte__queue.h b/devel/electron5/files/patch-media_formats_common_offset__byte__queue.h
new file mode 100644
index 000000000000..ebfc7cbdb13f
--- /dev/null
+++ b/devel/electron5/files/patch-media_formats_common_offset__byte__queue.h
@@ -0,0 +1,22 @@
+--- media/formats/common/offset_byte_queue.h.orig 2019-04-08 08:18:23 UTC
++++ media/formats/common/offset_byte_queue.h
+@@ -36,15 +36,15 @@ class MEDIA_EXPORT OffsetByteQueue {
+ // a null |buf| and a |size| of zero.
+ void PeekAt(int64_t offset, const uint8_t** buf, int* size);
+
+- // Marks the bytes up to (but not including) |max_offset| as ready for
++ // Marks the bytes up to (but not including) |_max_offset| as ready for
+ // deletion. This is relatively inexpensive, but will not necessarily reduce
+ // the resident buffer size right away (or ever).
+ //
+ // Returns true if the full range of bytes were successfully trimmed,
+- // including the case where |max_offset| is less than the current head.
+- // Returns false if |max_offset| > tail() (although all bytes currently
++ // including the case where |_max_offset| is less than the current head.
++ // Returns false if |_max_offset| > tail() (although all bytes currently
+ // buffered are still cleared).
+- bool Trim(int64_t max_offset);
++ bool Trim(int64_t _max_offset);
+
+ // The head and tail positions, in terms of the file's absolute offsets.
+ // tail() is an exclusive bound.
diff --git a/devel/electron5/files/patch-media_formats_mp2t_es__parser__adts.cc b/devel/electron5/files/patch-media_formats_mp2t_es__parser__adts.cc
new file mode 100644
index 000000000000..018a9b784027
--- /dev/null
+++ b/devel/electron5/files/patch-media_formats_mp2t_es__parser__adts.cc
@@ -0,0 +1,26 @@
+--- media/formats/mp2t/es_parser_adts.cc.orig 2019-04-08 08:32:59 UTC
++++ media/formats/mp2t/es_parser_adts.cc
+@@ -63,11 +63,11 @@ bool EsParserAdts::LookForAdtsFrame(AdtsFrame* adts_fr
+ const uint8_t* es;
+ es_queue_->Peek(&es, &es_size);
+
+- int max_offset = es_size - kADTSHeaderMinSize;
+- if (max_offset <= 0)
++ int _max_offset = es_size - kADTSHeaderMinSize;
++ if (_max_offset <= 0)
+ return false;
+
+- for (int offset = 0; offset < max_offset; offset++) {
++ for (int offset = 0; offset < _max_offset; offset++) {
+ const uint8_t* cur_buf = &es[offset];
+ if (!isAdtsSyncWord(cur_buf))
+ continue;
+@@ -107,7 +107,7 @@ bool EsParserAdts::LookForAdtsFrame(AdtsFrame* adts_fr
+ return true;
+ }
+
+- es_queue_->Pop(max_offset);
++ es_queue_->Pop(_max_offset);
+ return false;
+ }
+
diff --git a/devel/electron5/files/patch-media_formats_mp2t_es__parser__mpeg1audio.cc b/devel/electron5/files/patch-media_formats_mp2t_es__parser__mpeg1audio.cc
new file mode 100644
index 000000000000..4c873d31d4f4
--- /dev/null
+++ b/devel/electron5/files/patch-media_formats_mp2t_es__parser__mpeg1audio.cc
@@ -0,0 +1,26 @@
+--- media/formats/mp2t/es_parser_mpeg1audio.cc.orig 2019-04-08 08:18:23 UTC
++++ media/formats/mp2t/es_parser_mpeg1audio.cc
+@@ -108,11 +108,11 @@ bool EsParserMpeg1Audio::LookForMpeg1AudioFrame(
+ const uint8_t* es;
+ es_queue_->Peek(&es, &es_size);
+
+- int max_offset = es_size - MPEG1AudioStreamParser::kHeaderSize;
+- if (max_offset <= 0)
++ int _max_offset = es_size - MPEG1AudioStreamParser::kHeaderSize;
++ if (_max_offset <= 0)
+ return false;
+
+- for (int offset = 0; offset < max_offset; offset++) {
++ for (int offset = 0; offset < _max_offset; offset++) {
+ const uint8_t* cur_buf = &es[offset];
+ if (cur_buf[0] != 0xff)
+ continue;
+@@ -153,7 +153,7 @@ bool EsParserMpeg1Audio::LookForMpeg1AudioFrame(
+ return true;
+ }
+
+- es_queue_->Pop(max_offset);
++ es_queue_->Pop(_max_offset);
+ return false;
+ }
+
diff --git a/devel/electron5/files/patch-media_media__options.gni b/devel/electron5/files/patch-media_media__options.gni
new file mode 100644
index 000000000000..bfa30ca26d18
--- /dev/null
+++ b/devel/electron5/files/patch-media_media__options.gni
@@ -0,0 +1,12 @@
+--- media/media_options.gni.orig 2019-04-08 08:33:00 UTC
++++ media/media_options.gni
+@@ -100,6 +100,9 @@ declare_args() {
+ # Enables runtime selection of ALSA library for audio.
+ use_alsa = false
+
++ # Enable runtime selection of sndio(7)
++ use_sndio = false
++
+ # Alsa should be used on non-Android, non-Mac POSIX systems.
+ # Alsa should be used on desktop Chromecast and audio-only Chromecast builds.
+ if (is_posix && !is_android && !is_mac &&
diff --git a/devel/electron5/files/patch-media_mojo_services_gpu__mojo__media__client.cc b/devel/electron5/files/patch-media_mojo_services_gpu__mojo__media__client.cc
new file mode 100644
index 000000000000..3172827a9f0f
--- /dev/null
+++ b/devel/electron5/files/patch-media_mojo_services_gpu__mojo__media__client.cc
@@ -0,0 +1,20 @@
+--- media/mojo/services/gpu_mojo_media_client.cc.orig 2019-04-08 08:33:00 UTC
++++ media/mojo/services/gpu_mojo_media_client.cc
+@@ -55,7 +55,7 @@ namespace media {
+ namespace {
+
+ #if defined(OS_ANDROID) || defined(OS_CHROMEOS) || defined(OS_MACOSX) || \
+- defined(OS_WIN) || defined(OS_LINUX)
++ defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD)
+ gpu::CommandBufferStub* GetCommandBufferStub(
+ base::WeakPtr<MediaGpuChannelManager> media_gpu_channel_manager,
+ base::UnguessableToken channel_token,
+@@ -172,7 +172,7 @@ std::unique_ptr<VideoDecoder> GpuMojoMediaClient::Crea
+ std::make_unique<VideoFrameFactoryImpl>(gpu_task_runner_,
+ std::move(get_stub_cb)));
+ #elif defined(OS_CHROMEOS) || defined(OS_MACOSX) || defined(OS_WIN) || \
+- defined(OS_LINUX)
++ defined(OS_LINUX) || defined(OS_BSD)
+ std::unique_ptr<VideoDecoder> vda_video_decoder = VdaVideoDecoder::Create(
+ task_runner, gpu_task_runner_, media_log->Clone(), target_color_space,
+ gpu_preferences_, gpu_workarounds_,
diff --git a/devel/electron5/files/patch-media_video_gpu__memory__buffer__video__frame__pool.cc b/devel/electron5/files/patch-media_video_gpu__memory__buffer__video__frame__pool.cc
new file mode 100644
index 000000000000..53075d2de6e4
--- /dev/null
+++ b/devel/electron5/files/patch-media_video_gpu__memory__buffer__video__frame__pool.cc
@@ -0,0 +1,11 @@
+--- media/video/gpu_memory_buffer_video_frame_pool.cc.orig 2019-04-08 08:33:00 UTC
++++ media/video/gpu_memory_buffer_video_frame_pool.cc
+@@ -633,7 +633,7 @@ void GpuMemoryBufferVideoFramePool::PoolImpl::CreateHa
+ }
+
+ bool is_software_backed_video_frame = !video_frame->HasTextures();
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ is_software_backed_video_frame &= !video_frame->HasDmaBufs();
+ #endif
+
diff --git a/devel/electron5/files/patch-mojo_public_c_system_thunks.cc b/devel/electron5/files/patch-mojo_public_c_system_thunks.cc
new file mode 100644
index 000000000000..3fe24aa3d915
--- /dev/null
+++ b/devel/electron5/files/patch-mojo_public_c_system_thunks.cc
@@ -0,0 +1,47 @@
+--- mojo/public/c/system/thunks.cc.orig 2019-04-08 08:18:24 UTC
++++ mojo/public/c/system/thunks.cc
+@@ -16,7 +16,7 @@
+ #include "build/build_config.h"
+ #include "mojo/public/c/system/core.h"
+
+-#if defined(OS_CHROMEOS) || defined(OS_LINUX) || defined(OS_WIN)
++#if defined(OS_CHROMEOS) || defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD)
+ #include "base/environment.h"
+ #include "base/files/file_path.h"
+ #include "base/optional.h"
+@@ -28,7 +28,7 @@ namespace {
+
+ typedef void (*MojoGetSystemThunksFunction)(MojoSystemThunks* thunks);
+
+-#if defined(OS_CHROMEOS) || defined(OS_LINUX) || defined(OS_WIN)
++#if defined(OS_CHROMEOS) || defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD)
+ PROTECTED_MEMORY_SECTION
+ base::ProtectedMemory<MojoGetSystemThunksFunction> g_get_thunks;
+ #endif
+@@ -65,7 +65,7 @@ namespace mojo {
+ class CoreLibraryInitializer {
+ public:
+ CoreLibraryInitializer(const MojoInitializeOptions* options) {
+-#if defined(OS_CHROMEOS) || defined(OS_LINUX) || defined(OS_WIN)
++#if defined(OS_CHROMEOS) || defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD)
+ bool application_provided_path = false;
+ base::Optional<base::FilePath> library_path;
+ if (options && options->struct_size >= sizeof(*options) &&
+@@ -84,7 +84,7 @@ class CoreLibraryInitializer {
+
+ if (!library_path) {
+ // Default to looking for the library in the current working directory.
+-#if defined(OS_CHROMEOS) || defined(OS_LINUX)
++#if defined(OS_CHROMEOS) || defined(OS_LINUX) || defined(OS_BSD)
+ const base::FilePath::CharType kDefaultLibraryPathValue[] =
+ FILE_PATH_LITERAL("./libmojo_core.so");
+ #elif defined(OS_WIN)
+@@ -147,7 +147,7 @@ class CoreLibraryInitializer {
+ ~CoreLibraryInitializer() = default;
+
+ private:
+-#if defined(OS_CHROMEOS) || defined(OS_LINUX) || defined(OS_WIN)
++#if defined(OS_CHROMEOS) || defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD)
+ base::Optional<base::ScopedNativeLibrary> library_;
+ #endif
+
diff --git a/devel/electron5/files/patch-mojo_public_js_mojo__bindings__resources.grd b/devel/electron5/files/patch-mojo_public_js_mojo__bindings__resources.grd
new file mode 100644
index 000000000000..cce20626c908
--- /dev/null
+++ b/devel/electron5/files/patch-mojo_public_js_mojo__bindings__resources.grd
@@ -0,0 +1,11 @@
+--- mojo/public/js/mojo_bindings_resources.grd.orig 2019-04-08 08:33:00 UTC
++++ mojo/public/js/mojo_bindings_resources.grd
+@@ -23,7 +23,7 @@
+ use_base_dir="false"
+ type="BINDATA"
+ compress="gzip" />
+- <if expr="is_win or is_macosx or is_linux">
++ <if expr="is_win or is_macosx or is_posix">
+ <include name="IDR_MOJO_TIME_MOJOM_JS"
+ file="${root_gen_dir}/mojo/public/mojom/base/time.mojom.js"
+ use_base_dir="false"
diff --git a/devel/electron5/files/patch-net_BUILD.gn b/devel/electron5/files/patch-net_BUILD.gn
new file mode 100644
index 000000000000..f638d4205b9e
--- /dev/null
+++ b/devel/electron5/files/patch-net_BUILD.gn
@@ -0,0 +1,37 @@
+--- net/BUILD.gn.orig 2019-04-08 08:33:00 UTC
++++ net/BUILD.gn
+@@ -97,7 +97,7 @@ net_configs = [
+ "//build/config/compiler:wexit_time_destructors",
+ ]
+
+-if (is_linux) {
++if (is_linux && !is_bsd) {
+ net_configs += [ "//build/config/linux:libresolv" ]
+ }
+
+@@ -1900,7 +1900,7 @@ component("net") {
+ }
+
+ # Use getifaddrs() on POSIX platforms, except Linux and Android.
+- if (is_posix && !is_linux && !is_android) {
++ if (is_posix && ((!is_linux && !is_android) || (is_bsd))) {
+ sources += [
+ "base/network_interfaces_getifaddrs.cc",
+ "base/network_interfaces_getifaddrs.h",
+@@ -1993,6 +1993,16 @@ component("net") {
+ ]
+
+ sources -= [ "disk_cache/blockfile/file_posix.cc" ]
++ }
++
++ if (is_bsd) {
++ sources -= [
++ "base/address_tracker_linux.cc",
++ "base/address_tracker_linux.h",
++ "base/network_change_notifier_linux.cc",
++ "base/network_change_notifier_linux.h",
++ "base/network_interfaces_linux.cc",
++ ]
+ }
+
+ if (is_ios || is_mac) {
diff --git a/devel/electron5/files/patch-net_base_address__tracker__linux.cc b/devel/electron5/files/patch-net_base_address__tracker__linux.cc
new file mode 100644
index 000000000000..a922c8691e46
--- /dev/null
+++ b/devel/electron5/files/patch-net_base_address__tracker__linux.cc
@@ -0,0 +1,360 @@
+--- net/base/address_tracker_linux.cc.orig 2019-04-08 08:33:00 UTC
++++ net/base/address_tracker_linux.cc
+@@ -21,96 +21,10 @@
+ namespace net {
+ namespace internal {
+
+-namespace {
+-
+-// Some kernel functions such as wireless_send_event and rtnetlink_ifinfo_prep
+-// may send spurious messages over rtnetlink. RTM_NEWLINK messages where
+-// ifi_change == 0 and rta_type == IFLA_WIRELESS should be ignored.
+-bool IgnoreWirelessChange(const struct nlmsghdr* header,
+- const struct ifinfomsg* msg) {
+- size_t length = IFLA_PAYLOAD(header);
+- for (const struct rtattr* attr = IFLA_RTA(msg); RTA_OK(attr, length);
+- attr = RTA_NEXT(attr, length)) {
+- if (attr->rta_type == IFLA_WIRELESS && msg->ifi_change == 0)
+- return true;
+- }
+- return false;
+-}
+-
+-// Retrieves address from NETLINK address message.
+-// Sets |really_deprecated| for IPv6 addresses with preferred lifetimes of 0.
+-bool GetAddress(const struct nlmsghdr* header,
+- IPAddress* out,
+- bool* really_deprecated) {
+- if (really_deprecated)
+- *really_deprecated = false;
+- const struct ifaddrmsg* msg =
+- reinterpret_cast<struct ifaddrmsg*>(NLMSG_DATA(header));
+- size_t address_length = 0;
+- switch (msg->ifa_family) {
+- case AF_INET:
+- address_length = IPAddress::kIPv4AddressSize;
+- break;
+- case AF_INET6:
+- address_length = IPAddress::kIPv6AddressSize;
+- break;
+- default:
+- // Unknown family.
+- return false;
+- }
+- // Use IFA_ADDRESS unless IFA_LOCAL is present. This behavior here is based on
+- // getaddrinfo in glibc (check_pf.c). Judging from kernel implementation of
+- // NETLINK, IPv4 addresses have only the IFA_ADDRESS attribute, while IPv6
+- // have the IFA_LOCAL attribute.
+- uint8_t* address = NULL;
+- uint8_t* local = NULL;
+- size_t length = IFA_PAYLOAD(header);
+- for (const struct rtattr* attr =
+- reinterpret_cast<const struct rtattr*>(IFA_RTA(msg));
+- RTA_OK(attr, length);
+- attr = RTA_NEXT(attr, length)) {
+- switch (attr->rta_type) {
+- case IFA_ADDRESS:
+- DCHECK_GE(RTA_PAYLOAD(attr), address_length);
+- address = reinterpret_cast<uint8_t*>(RTA_DATA(attr));
+- break;
+- case IFA_LOCAL:
+- DCHECK_GE(RTA_PAYLOAD(attr), address_length);
+- local = reinterpret_cast<uint8_t*>(RTA_DATA(attr));
+- break;
+- case IFA_CACHEINFO: {
+- const struct ifa_cacheinfo *cache_info =
+- reinterpret_cast<const struct ifa_cacheinfo*>(RTA_DATA(attr));
+- if (really_deprecated)
+- *really_deprecated = (cache_info->ifa_prefered == 0);
+- } break;
+- default:
+- break;
+- }
+- }
+- if (local)
+- address = local;
+- if (!address)
+- return false;
+- *out = IPAddress(address, address_length);
+- return true;
+-}
+-
+-} // namespace
+-
+ // static
+ char* AddressTrackerLinux::GetInterfaceName(int interface_index, char* buf) {
+- memset(buf, 0, IFNAMSIZ);
+- base::ScopedFD ioctl_socket = GetSocketForIoctl();
+- if (!ioctl_socket.is_valid())
+- return buf;
+-
+- struct ifreq ifr = {};
+- ifr.ifr_ifindex = interface_index;
+-
+- if (ioctl(ioctl_socket.get(), SIOCGIFNAME, &ifr) == 0)
+- strncpy(buf, ifr.ifr_name, IFNAMSIZ - 1);
+- return buf;
++ NOTIMPLEMENTED();
++ return NULL;
+ }
+
+ AddressTrackerLinux::AddressTrackerLinux()
+@@ -153,93 +67,8 @@ AddressTrackerLinux::~AddressTrackerLinux() {
+ }
+
+ void AddressTrackerLinux::Init() {
+- netlink_fd_ = socket(AF_NETLINK, SOCK_RAW, NETLINK_ROUTE);
+- if (netlink_fd_ < 0) {
+- PLOG(ERROR) << "Could not create NETLINK socket";
+- AbortAndForceOnline();
+- return;
+- }
+-
+- int rv;
+-
+- if (tracking_) {
+- // Request notifications.
+- struct sockaddr_nl addr = {};
+- addr.nl_family = AF_NETLINK;
+- addr.nl_pid = getpid();
+- // TODO(szym): Track RTMGRP_LINK as well for ifi_type,
+- // http://crbug.com/113993
+- addr.nl_groups =
+- RTMGRP_IPV4_IFADDR | RTMGRP_IPV6_IFADDR | RTMGRP_NOTIFY | RTMGRP_LINK;
+- rv = bind(
+- netlink_fd_, reinterpret_cast<struct sockaddr*>(&addr), sizeof(addr));
+- if (rv < 0) {
+- PLOG(ERROR) << "Could not bind NETLINK socket";
+- AbortAndForceOnline();
+- return;
+- }
+- }
+-
+- // Request dump of addresses.
+- struct sockaddr_nl peer = {};
+- peer.nl_family = AF_NETLINK;
+-
+- struct {
+- struct nlmsghdr header;
+- struct rtgenmsg msg;
+- } request = {};
+-
+- request.header.nlmsg_len = NLMSG_LENGTH(sizeof(request.msg));
+- request.header.nlmsg_type = RTM_GETADDR;
+- request.header.nlmsg_flags = NLM_F_REQUEST | NLM_F_DUMP;
+- request.header.nlmsg_pid = getpid();
+- request.msg.rtgen_family = AF_UNSPEC;
+-
+- rv = HANDLE_EINTR(sendto(netlink_fd_, &request, request.header.nlmsg_len,
+- 0, reinterpret_cast<struct sockaddr*>(&peer),
+- sizeof(peer)));
+- if (rv < 0) {
+- PLOG(ERROR) << "Could not send NETLINK request";
+- AbortAndForceOnline();
+- return;
+- }
+-
+- // Consume pending message to populate the AddressMap, but don't notify.
+- // Sending another request without first reading responses results in EBUSY.
+- bool address_changed;
+- bool link_changed;
+- bool tunnel_changed;
+- ReadMessages(&address_changed, &link_changed, &tunnel_changed);
+-
+- // Request dump of link state
+- request.header.nlmsg_type = RTM_GETLINK;
+-
+- rv = HANDLE_EINTR(sendto(netlink_fd_, &request, request.header.nlmsg_len, 0,
+- reinterpret_cast<struct sockaddr*>(&peer),
+- sizeof(peer)));
+- if (rv < 0) {
+- PLOG(ERROR) << "Could not send NETLINK request";
+- AbortAndForceOnline();
+- return;
+- }
+-
+- // Consume pending message to populate links_online_, but don't notify.
+- ReadMessages(&address_changed, &link_changed, &tunnel_changed);
+- {
+- AddressTrackerAutoLock lock(*this, connection_type_lock_);
+- connection_type_initialized_ = true;
+- connection_type_initialized_cv_.Broadcast();
+- }
+-
+- if (tracking_) {
+- rv = base::MessageLoopCurrentForIO::Get()->WatchFileDescriptor(
+- netlink_fd_, true, base::MessagePumpForIO::WATCH_READ, &watcher_, this);
+- if (rv < 0) {
+- PLOG(ERROR) << "Could not watch NETLINK socket";
+- AbortAndForceOnline();
+- return;
+- }
+- }
++NOTIMPLEMENTED();
++AbortAndForceOnline();
+ }
+
+ void AddressTrackerLinux::AbortAndForceOnline() {
+@@ -250,25 +79,6 @@ void AddressTrackerLinux::AbortAndForceOnline() {
+ connection_type_initialized_cv_.Broadcast();
+ }
+
+-AddressTrackerLinux::AddressMap AddressTrackerLinux::GetAddressMap() const {
+- AddressTrackerAutoLock lock(*this, address_map_lock_);
+- return address_map_;
+-}
+-
+-std::unordered_set<int> AddressTrackerLinux::GetOnlineLinks() const {
+- AddressTrackerAutoLock lock(*this, online_links_lock_);
+- return online_links_;
+-}
+-
+-bool AddressTrackerLinux::IsInterfaceIgnored(int interface_index) const {
+- if (ignored_interfaces_.empty())
+- return false;
+-
+- char buf[IFNAMSIZ] = {0};
+- const char* interface_name = get_interface_name_(interface_index, buf);
+- return ignored_interfaces_.find(interface_name) != ignored_interfaces_.end();
+-}
+-
+ NetworkChangeNotifier::ConnectionType
+ AddressTrackerLinux::GetCurrentConnectionType() {
+ // http://crbug.com/125097
+@@ -326,102 +136,7 @@ void AddressTrackerLinux::HandleMessage(char* buffer,
+ bool* address_changed,
+ bool* link_changed,
+ bool* tunnel_changed) {
+- DCHECK(buffer);
+- for (struct nlmsghdr* header = reinterpret_cast<struct nlmsghdr*>(buffer);
+- NLMSG_OK(header, length);
+- header = NLMSG_NEXT(header, length)) {
+- switch (header->nlmsg_type) {
+- case NLMSG_DONE:
+- return;
+- case NLMSG_ERROR: {
+- const struct nlmsgerr* msg =
+- reinterpret_cast<struct nlmsgerr*>(NLMSG_DATA(header));
+- LOG(ERROR) << "Unexpected netlink error " << msg->error << ".";
+- } return;
+- case RTM_NEWADDR: {
+- IPAddress address;
+- bool really_deprecated;
+- struct ifaddrmsg* msg =
+- reinterpret_cast<struct ifaddrmsg*>(NLMSG_DATA(header));
+- if (IsInterfaceIgnored(msg->ifa_index))
+- break;
+- if (GetAddress(header, &address, &really_deprecated)) {
+- AddressTrackerAutoLock lock(*this, address_map_lock_);
+- // Routers may frequently (every few seconds) output the IPv6 ULA
+- // prefix which can cause the linux kernel to frequently output two
+- // back-to-back messages, one without the deprecated flag and one with
+- // the deprecated flag but both with preferred lifetimes of 0. Avoid
+- // interpretting this as an actual change by canonicalizing the two
+- // messages by setting the deprecated flag based on the preferred
+- // lifetime also. http://crbug.com/268042
+- if (really_deprecated)
+- msg->ifa_flags |= IFA_F_DEPRECATED;
+- // Only indicate change if the address is new or ifaddrmsg info has
+- // changed.
+- auto it = address_map_.find(address);
+- if (it == address_map_.end()) {
+- address_map_.insert(it, std::make_pair(address, *msg));
+- *address_changed = true;
+- } else if (memcmp(&it->second, msg, sizeof(*msg))) {
+- it->second = *msg;
+- *address_changed = true;
+- }
+- }
+- } break;
+- case RTM_DELADDR: {
+- IPAddress address;
+- const struct ifaddrmsg* msg =
+- reinterpret_cast<struct ifaddrmsg*>(NLMSG_DATA(header));
+- if (IsInterfaceIgnored(msg->ifa_index))
+- break;
+- if (GetAddress(header, &address, NULL)) {
+- AddressTrackerAutoLock lock(*this, address_map_lock_);
+- if (address_map_.erase(address))
+- *address_changed = true;
+- }
+- } break;
+- case RTM_NEWLINK: {
+- const struct ifinfomsg* msg =
+- reinterpret_cast<struct ifinfomsg*>(NLMSG_DATA(header));
+- if (IsInterfaceIgnored(msg->ifi_index))
+- break;
+- if (IgnoreWirelessChange(header, msg)) {
+- VLOG(2) << "Ignoring RTM_NEWLINK message";
+- break;
+- }
+- if (!(msg->ifi_flags & IFF_LOOPBACK) && (msg->ifi_flags & IFF_UP) &&
+- (msg->ifi_flags & IFF_LOWER_UP) && (msg->ifi_flags & IFF_RUNNING)) {
+- AddressTrackerAutoLock lock(*this, online_links_lock_);
+- if (online_links_.insert(msg->ifi_index).second) {
+- *link_changed = true;
+- if (IsTunnelInterface(msg->ifi_index))
+- *tunnel_changed = true;
+- }
+- } else {
+- AddressTrackerAutoLock lock(*this, online_links_lock_);
+- if (online_links_.erase(msg->ifi_index)) {
+- *link_changed = true;
+- if (IsTunnelInterface(msg->ifi_index))
+- *tunnel_changed = true;
+- }
+- }
+- } break;
+- case RTM_DELLINK: {
+- const struct ifinfomsg* msg =
+- reinterpret_cast<struct ifinfomsg*>(NLMSG_DATA(header));
+- if (IsInterfaceIgnored(msg->ifi_index))
+- break;
+- AddressTrackerAutoLock lock(*this, online_links_lock_);
+- if (online_links_.erase(msg->ifi_index)) {
+- *link_changed = true;
+- if (IsTunnelInterface(msg->ifi_index))
+- *tunnel_changed = true;
+- }
+- } break;
+- default:
+- break;
+- }
+- }
++ NOTIMPLEMENTED();
+ }
+
+ void AddressTrackerLinux::OnFileCanReadWithoutBlocking(int fd) {
+@@ -458,31 +173,7 @@ bool AddressTrackerLinux::IsTunnelInterfaceName(const
+ }
+
+ void AddressTrackerLinux::UpdateCurrentConnectionType() {
+- AddressTrackerLinux::AddressMap address_map = GetAddressMap();
+- std::unordered_set<int> online_links = GetOnlineLinks();
+-
+- // Strip out tunnel interfaces from online_links
+- for (auto it = online_links.cbegin(); it != online_links.cend();) {
+- if (IsTunnelInterface(*it)) {
+- it = online_links.erase(it);
+- } else {
+- ++it;
+- }
+- }
+-
+- NetworkInterfaceList networks;
+- NetworkChangeNotifier::ConnectionType type =
+- NetworkChangeNotifier::CONNECTION_NONE;
+- if (GetNetworkListImpl(&networks, 0, online_links, address_map,
+- get_interface_name_)) {
+- type = NetworkChangeNotifier::ConnectionTypeFromInterfaceList(networks);
+- } else {
+- type = online_links.empty() ? NetworkChangeNotifier::CONNECTION_NONE
+- : NetworkChangeNotifier::CONNECTION_UNKNOWN;
+- }
+-
+- AddressTrackerAutoLock lock(*this, connection_type_lock_);
+- current_connection_type_ = type;
++ NOTIMPLEMENTED();
+ }
+
+ int AddressTrackerLinux::GetThreadsWaitingForConnectionTypeInitForTesting()
diff --git a/devel/electron5/files/patch-net_base_address__tracker__linux.h b/devel/electron5/files/patch-net_base_address__tracker__linux.h
new file mode 100644
index 000000000000..b9fde9d72f32
--- /dev/null
+++ b/devel/electron5/files/patch-net_base_address__tracker__linux.h
@@ -0,0 +1,12 @@
+--- net/base/address_tracker_linux.h.orig 2019-04-08 08:33:00 UTC
++++ net/base/address_tracker_linux.h
+@@ -7,9 +7,6 @@
+
+ #include <sys/socket.h> // Needed to include netlink.
+ // Mask superfluous definition of |struct net|. This is fixed in Linux 2.6.38.
+-#define net net_kernel
+-#include <linux/rtnetlink.h>
+-#undef net
+ #include <stddef.h>
+
+ #include <map>
diff --git a/devel/electron5/files/patch-net_base_address__tracker__linux__unittest.cc b/devel/electron5/files/patch-net_base_address__tracker__linux__unittest.cc
new file mode 100644
index 000000000000..c85866fb9652
--- /dev/null
+++ b/devel/electron5/files/patch-net_base_address__tracker__linux__unittest.cc
@@ -0,0 +1,14 @@
+--- net/base/address_tracker_linux_unittest.cc.orig 2019-04-08 08:18:25 UTC
++++ net/base/address_tracker_linux_unittest.cc
+@@ -4,7 +4,11 @@
+
+ #include "net/base/address_tracker_linux.h"
+
++#if defined(__linux__)
+ #include <linux/if.h>
++#else
++#include <net/if.h>
++#endif
+
+ #include <memory>
+ #include <unordered_set>
diff --git a/devel/electron5/files/patch-net_base_network__change__notifier.cc b/devel/electron5/files/patch-net_base_network__change__notifier.cc
new file mode 100644
index 000000000000..d20604193091
--- /dev/null
+++ b/devel/electron5/files/patch-net_base_network__change__notifier.cc
@@ -0,0 +1,10 @@
+--- net/base/network_change_notifier.cc.orig 2019-04-08 08:33:00 UTC
++++ net/base/network_change_notifier.cc
+@@ -221,7 +221,6 @@ NetworkChangeNotifier* NetworkChangeNotifier::Create()
+ #elif defined(OS_FUCHSIA)
+ return new NetworkChangeNotifierFuchsia(0 /* required_features */);
+ #else
+- NOTIMPLEMENTED();
+ return NULL;
+ #endif
+ }
diff --git a/devel/electron5/files/patch-net_base_network__interfaces__posix.h b/devel/electron5/files/patch-net_base_network__interfaces__posix.h
new file mode 100644
index 000000000000..27757bfa412e
--- /dev/null
+++ b/devel/electron5/files/patch-net_base_network__interfaces__posix.h
@@ -0,0 +1,11 @@
+--- net/base/network_interfaces_posix.h.orig 2019-04-08 08:18:25 UTC
++++ net/base/network_interfaces_posix.h
+@@ -8,6 +8,8 @@
+ // This file provides some basic functionality shared between
+ // network_interfaces_linux.cc and network_interfaces_getifaddrs.cc.
+
++#include <sys/socket.h>
++
+ #include <string>
+
+ struct sockaddr;
diff --git a/devel/electron5/files/patch-net_disk__cache_blockfile_disk__format.h b/devel/electron5/files/patch-net_disk__cache_blockfile_disk__format.h
new file mode 100644
index 000000000000..fe3f7204cb7d
--- /dev/null
+++ b/devel/electron5/files/patch-net_disk__cache_blockfile_disk__format.h
@@ -0,0 +1,12 @@
+--- net/disk_cache/blockfile/disk_format.h.orig 2019-04-08 08:18:25 UTC
++++ net/disk_cache/blockfile/disk_format.h
+@@ -149,7 +149,9 @@ struct RankingsNode {
+ };
+ #pragma pack(pop)
+
++#if !defined(OS_BSD)
+ static_assert(sizeof(RankingsNode) == 36, "bad RankingsNode");
++#endif
+
+ } // namespace disk_cache
+
diff --git a/devel/electron5/files/patch-net_dns_address__sorter__posix.cc b/devel/electron5/files/patch-net_dns_address__sorter__posix.cc
new file mode 100644
index 000000000000..fc4e9a208cde
--- /dev/null
+++ b/devel/electron5/files/patch-net_dns_address__sorter__posix.cc
@@ -0,0 +1,12 @@
+--- net/dns/address_sorter_posix.cc.orig 2019-04-08 08:33:00 UTC
++++ net/dns/address_sorter_posix.cc
+@@ -13,7 +13,9 @@
+ #include <sys/socket.h> // Must be included before ifaddrs.h.
+ #include <ifaddrs.h>
+ #include <net/if.h>
++#include <net/if_var.h>
+ #include <netinet/in_var.h>
++#include <netinet6/in6_var.h>
+ #include <string.h>
+ #include <sys/ioctl.h>
+ #endif
diff --git a/devel/electron5/files/patch-net_dns_dns__config__service__posix__unittest.cc b/devel/electron5/files/patch-net_dns_dns__config__service__posix__unittest.cc
new file mode 100644
index 000000000000..b712096ff9d6
--- /dev/null
+++ b/devel/electron5/files/patch-net_dns_dns__config__service__posix__unittest.cc
@@ -0,0 +1,47 @@
+--- net/dns/dns_config_service_posix_unittest.cc.orig 2019-04-08 08:33:00 UTC
++++ net/dns/dns_config_service_posix_unittest.cc
+@@ -2,8 +2,6 @@
+ // Use of this source code is governed by a BSD-style license that can be
+ // found in the LICENSE file.
+
+-#include <resolv.h>
+-
+ #include <memory>
+
+ #include "base/cancelable_callback.h"
+@@ -46,7 +44,7 @@ const char* const kNameserversIPv4[] = {
+ "1.0.0.1",
+ };
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ const char* const kNameserversIPv6[] = {
+ NULL,
+ "2001:DB8:0::42",
+@@ -82,7 +80,7 @@ void InitializeResState(res_state res) {
+ ++res->nscount;
+ }
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Install IPv6 addresses, replacing the corresponding IPv4 addresses.
+ unsigned nscount6 = 0;
+ for (unsigned i = 0; i < base::size(kNameserversIPv6) && i < MAXNS; ++i) {
+@@ -103,7 +101,7 @@ void InitializeResState(res_state res) {
+ }
+
+ void CloseResState(res_state res) {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ for (int i = 0; i < res->nscount; ++i) {
+ if (res->_u._ext.nsaddrs[i] != NULL)
+ free(res->_u._ext.nsaddrs[i]);
+@@ -128,7 +126,7 @@ void InitializeExpectedConfig(DnsConfig* config) {
+ config->nameservers.push_back(IPEndPoint(ip, NS_DEFAULTPORT + i));
+ }
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ for (unsigned i = 0; i < base::size(kNameserversIPv6) && i < MAXNS; ++i) {
+ if (!kNameserversIPv6[i])
+ continue;
diff --git a/devel/electron5/files/patch-net_dns_dns__reloader.cc b/devel/electron5/files/patch-net_dns_dns__reloader.cc
new file mode 100644
index 000000000000..f09b0f7482e0
--- /dev/null
+++ b/devel/electron5/files/patch-net_dns_dns__reloader.cc
@@ -0,0 +1,13 @@
+--- net/dns/dns_reloader.cc.orig 2019-04-08 08:18:25 UTC
++++ net/dns/dns_reloader.cc
+@@ -7,6 +7,10 @@
+ #if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_OPENBSD) && \
+ !defined(OS_ANDROID) && !defined(OS_FUCHSIA)
+
++#if defined(OS_FREEBSD)
++#include <netinet/in.h>
++#endif
++
+ #include <resolv.h>
+
+ #include "base/lazy_instance.h"
diff --git a/devel/electron5/files/patch-net_dns_dns__util.cc b/devel/electron5/files/patch-net_dns_dns__util.cc
new file mode 100644
index 000000000000..7e82382e3190
--- /dev/null
+++ b/devel/electron5/files/patch-net_dns_dns__util.cc
@@ -0,0 +1,11 @@
+--- net/dns/dns_util.cc.orig 2019-04-08 08:33:00 UTC
++++ net/dns/dns_util.cc
+@@ -36,6 +36,8 @@ const uint16_t kFlagNamePointer = 0xc000;
+
+ } // namespace
+
++#include <sys/socket.h>
++
+ #if defined(OS_POSIX)
+ #include <netinet/in.h>
+ #if !defined(OS_NACL)
diff --git a/devel/electron5/files/patch-net_dns_host__resolver__proc.cc b/devel/electron5/files/patch-net_dns_host__resolver__proc.cc
new file mode 100644
index 000000000000..d2614e0359d5
--- /dev/null
+++ b/devel/electron5/files/patch-net_dns_host__resolver__proc.cc
@@ -0,0 +1,11 @@
+--- net/dns/host_resolver_proc.cc.orig 2019-04-08 08:33:00 UTC
++++ net/dns/host_resolver_proc.cc
+@@ -195,7 +195,7 @@ int SystemHostResolverCall(const std::string& host,
+ // current process during that time.
+ base::ScopedBlockingCall scoped_blocking_call(base::BlockingType::WILL_BLOCK);
+
+-#if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_OPENBSD) && \
++#if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_BSD) && \
+ !defined(OS_ANDROID) && !defined(OS_FUCHSIA)
+ DnsReloaderMaybeReload();
+ #endif
diff --git a/devel/electron5/files/patch-net_features.gni b/devel/electron5/files/patch-net_features.gni
new file mode 100644
index 000000000000..2840a729638a
--- /dev/null
+++ b/devel/electron5/files/patch-net_features.gni
@@ -0,0 +1,11 @@
+--- net/features.gni.orig 2019-04-08 08:33:00 UTC
++++ net/features.gni
+@@ -27,7 +27,7 @@ declare_args() {
+ disable_brotli_filter = false
+
+ # Multicast DNS.
+- enable_mdns = is_win || is_linux || is_fuchsia || is_mac || is_ios
++ enable_mdns = is_win || is_linux || is_fuchsia || is_mac || is_ios || is_bsd
+
+ # Reporting not used on iOS.
+ enable_reporting = !is_ios
diff --git a/devel/electron5/files/patch-net_http_http__auth__gssapi__posix.cc b/devel/electron5/files/patch-net_http_http__auth__gssapi__posix.cc
new file mode 100644
index 000000000000..ab308b34295e
--- /dev/null
+++ b/devel/electron5/files/patch-net_http_http__auth__gssapi__posix.cc
@@ -0,0 +1,14 @@
+--- net/http/http_auth_gssapi_posix.cc.orig 2019-04-08 08:33:00 UTC
++++ net/http/http_auth_gssapi_posix.cc
+@@ -431,8 +431,9 @@ base::NativeLibrary GSSAPISharedLibrary::LoadSharedLib
+ static const char* const kDefaultLibraryNames[] = {
+ #if defined(OS_MACOSX)
+ "/System/Library/Frameworks/GSS.framework/GSS"
+-#elif defined(OS_OPENBSD)
+- "libgssapi.so" // Heimdal - OpenBSD
++#elif defined(OS_BSD)
++ "libgssapi_krb5.so.2", // MIT Kerberos - FreeBSD
++ "libgssapi.so" // Heimdal - OpenBSD, FreeBSD
+ #else
+ "libgssapi_krb5.so.2", // MIT Kerberos - FC, Suse10, Debian
+ "libgssapi.so.4", // Heimdal - Suse10, MDK
diff --git a/devel/electron5/files/patch-net_http_http__network__session.cc b/devel/electron5/files/patch-net_http_http__network__session.cc
new file mode 100644
index 000000000000..4a7a218f925d
--- /dev/null
+++ b/devel/electron5/files/patch-net_http_http__network__session.cc
@@ -0,0 +1,12 @@
+--- net/http/http_network_session.cc.orig 2019-04-08 08:33:01 UTC
++++ net/http/http_network_session.cc
+@@ -19,7 +19,9 @@
+ #include "base/trace_event/memory_dump_request_args.h"
+ #include "base/trace_event/process_memory_dump.h"
+ #include "base/values.h"
++#if defined(USE_KERBEROS)
+ #include "net/http/http_auth_handler_factory.h"
++#endif
+ #include "net/http/http_response_body_drainer.h"
+ #include "net/http/http_stream_factory.h"
+ #include "net/http/url_security_manager.h"
diff --git a/devel/electron5/files/patch-net_nqe_network__quality__estimator.cc b/devel/electron5/files/patch-net_nqe_network__quality__estimator.cc
new file mode 100644
index 000000000000..de1c9ebe8b2b
--- /dev/null
+++ b/devel/electron5/files/patch-net_nqe_network__quality__estimator.cc
@@ -0,0 +1,11 @@
+--- net/nqe/network_quality_estimator.cc.orig 2019-04-08 08:33:01 UTC
++++ net/nqe/network_quality_estimator.cc
+@@ -99,7 +99,7 @@ nqe::internal::NetworkID DoGetCurrentNetworkID() {
+ case NetworkChangeNotifier::ConnectionType::CONNECTION_ETHERNET:
+ break;
+ case NetworkChangeNotifier::ConnectionType::CONNECTION_WIFI:
+-#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_WIN)
++#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD)
+ network_id.id = GetWifiSSID();
+ #endif
+ break;
diff --git a/devel/electron5/files/patch-net_nqe_network__quality__estimator__unittest.cc b/devel/electron5/files/patch-net_nqe_network__quality__estimator__unittest.cc
new file mode 100644
index 000000000000..514541af29a0
--- /dev/null
+++ b/devel/electron5/files/patch-net_nqe_network__quality__estimator__unittest.cc
@@ -0,0 +1,11 @@
+--- net/nqe/network_quality_estimator_unittest.cc.orig 2019-04-08 08:33:01 UTC
++++ net/nqe/network_quality_estimator_unittest.cc
+@@ -2058,7 +2058,7 @@ TEST_F(NetworkQualityEstimatorTest, TestGlobalSocketWa
+
+ // TestTCPSocketRTT requires kernel support for tcp_info struct, and so it is
+ // enabled only on certain platforms.
+-#if defined(TCP_INFO) || defined(OS_LINUX) || defined(OS_ANDROID)
++#if defined(TCP_INFO) || defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
+ #define MAYBE_TestTCPSocketRTT TestTCPSocketRTT
+ #else
+ #define MAYBE_TestTCPSocketRTT DISABLED_TestTCPSocketRTT
diff --git a/devel/electron5/files/patch-net_proxy__resolution_proxy__config__service__linux.cc b/devel/electron5/files/patch-net_proxy__resolution_proxy__config__service__linux.cc
new file mode 100644
index 000000000000..bb246d01beb4
--- /dev/null
+++ b/devel/electron5/files/patch-net_proxy__resolution_proxy__config__service__linux.cc
@@ -0,0 +1,39 @@
+--- net/proxy_resolution/proxy_config_service_linux.cc.orig 2019-04-08 08:33:01 UTC
++++ net/proxy_resolution/proxy_config_service_linux.cc
+@@ -6,7 +6,9 @@
+
+ #include <errno.h>
+ #include <limits.h>
++#if !defined(OS_BSD)
+ #include <sys/inotify.h>
++#endif
+ #include <unistd.h>
+
+ #include <map>
+@@ -495,6 +497,7 @@ int StringToIntOrDefault(base::StringPiece value, int
+ return default_value;
+ }
+
++#if !defined(OS_BSD)
+ // This is the KDE version that reads kioslaverc and simulates gsettings.
+ // Doing this allows the main Delegate code, as well as the unit tests
+ // for it, to stay the same - and the settings map fairly well besides.
+@@ -986,6 +989,7 @@ class SettingGetterImplKDE : public ProxyConfigService
+
+ DISALLOW_COPY_AND_ASSIGN(SettingGetterImplKDE);
+ };
++#endif
+
+ } // namespace
+
+@@ -1197,8 +1201,10 @@ ProxyConfigServiceLinux::Delegate::Delegate(
+ case base::nix::DESKTOP_ENVIRONMENT_KDE3:
+ case base::nix::DESKTOP_ENVIRONMENT_KDE4:
+ case base::nix::DESKTOP_ENVIRONMENT_KDE5:
++#if !defined(OS_BSD)
+ setting_getter_.reset(new SettingGetterImplKDE(env_var_getter_.get()));
+ break;
++#endif
+ case base::nix::DESKTOP_ENVIRONMENT_XFCE:
+ case base::nix::DESKTOP_ENVIRONMENT_OTHER:
+ break;
diff --git a/devel/electron5/files/patch-net_proxy__resolution_proxy__resolution__service.cc b/devel/electron5/files/patch-net_proxy__resolution_proxy__resolution__service.cc
new file mode 100644
index 000000000000..8f7f26908d4f
--- /dev/null
+++ b/devel/electron5/files/patch-net_proxy__resolution_proxy__resolution__service.cc
@@ -0,0 +1,29 @@
+--- net/proxy_resolution/proxy_resolution_service.cc.orig 2019-04-08 08:33:01 UTC
++++ net/proxy_resolution/proxy_resolution_service.cc
+@@ -48,7 +48,7 @@
+ #elif defined(OS_MACOSX)
+ #include "net/proxy_resolution/proxy_config_service_mac.h"
+ #include "net/proxy_resolution/proxy_resolver_mac.h"
+-#elif defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#elif (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS)
+ #include "net/proxy_resolution/proxy_config_service_linux.h"
+ #elif defined(OS_ANDROID)
+ #include "net/proxy_resolution/proxy_config_service_android.h"
+@@ -62,7 +62,7 @@ namespace net {
+ namespace {
+
+ #if defined(OS_WIN) || defined(OS_IOS) || defined(OS_MACOSX) || \
+- (defined(OS_LINUX) && !defined(OS_CHROMEOS))
++ ((defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS))
+ constexpr net::NetworkTrafficAnnotationTag kSystemProxyConfigTrafficAnnotation =
+ net::DefineNetworkTrafficAnnotation("proxy_config_system", R"(
+ semantics {
+@@ -1577,7 +1577,7 @@ ProxyResolutionService::CreateSystemProxyConfigService
+ << "profile_io_data.cc::CreateProxyConfigService and this should "
+ << "be used only for examples.";
+ return std::make_unique<UnsetProxyConfigService>();
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ std::unique_ptr<ProxyConfigServiceLinux> linux_config_service(
+ new ProxyConfigServiceLinux());
+
diff --git a/devel/electron5/files/patch-net_socket_socket__posix.cc b/devel/electron5/files/patch-net_socket_socket__posix.cc
new file mode 100644
index 000000000000..409de8cf7e7a
--- /dev/null
+++ b/devel/electron5/files/patch-net_socket_socket__posix.cc
@@ -0,0 +1,11 @@
+--- net/socket/socket_posix.cc.orig 2019-04-08 08:33:01 UTC
++++ net/socket/socket_posix.cc
+@@ -568,7 +568,7 @@ void SocketPosix::ReadCompleted() {
+ }
+
+ int SocketPosix::DoWrite(IOBuffer* buf, int buf_len) {
+-#if defined(OS_LINUX) || defined(OS_ANDROID)
++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
+ // Disable SIGPIPE for this write. Although Chromium globally disables
+ // SIGPIPE, the net stack may be used in other consumers which do not do
+ // this. MSG_NOSIGNAL is a Linux-only API. On OS X, this is a setsockopt on
diff --git a/devel/electron5/files/patch-net_socket_socks5__client__socket.cc b/devel/electron5/files/patch-net_socket_socks5__client__socket.cc
new file mode 100644
index 000000000000..80bb40867f0f
--- /dev/null
+++ b/devel/electron5/files/patch-net_socket_socks5__client__socket.cc
@@ -0,0 +1,13 @@
+--- net/socket/socks5_client_socket.cc.orig 2019-04-08 08:33:01 UTC
++++ net/socket/socks5_client_socket.cc
+@@ -4,6 +4,10 @@
+
+ #include "net/socket/socks5_client_socket.h"
+
++#if defined(OS_BSD)
++#include <netinet/in.h>
++#endif
++
+ #include <utility>
+
+ #include "base/callback_helpers.h"
diff --git a/devel/electron5/files/patch-net_socket_tcp__socket__posix.cc b/devel/electron5/files/patch-net_socket_tcp__socket__posix.cc
new file mode 100644
index 000000000000..bbe9bcaf664f
--- /dev/null
+++ b/devel/electron5/files/patch-net_socket_tcp__socket__posix.cc
@@ -0,0 +1,20 @@
+--- net/socket/tcp_socket_posix.cc.orig 2019-04-08 08:18:25 UTC
++++ net/socket/tcp_socket_posix.cc
+@@ -88,6 +88,17 @@ bool SetTCPKeepAlive(int fd, bool enable, int delay) {
+ PLOG(ERROR) << "Failed to set TCP_KEEPALIVE on fd: " << fd;
+ return false;
+ }
++#elif defined(OS_BSD)
++ // Set seconds until first TCP keep alive.
++ if (setsockopt(fd, IPPROTO_TCP, TCP_KEEPIDLE, &delay, sizeof(delay))) {
++ PLOG(ERROR) << "Failed to set TCP_KEEPIDLE on fd: " << fd;
++ return false;
++ }
++ // Set seconds between TCP keep alives.
++ if (setsockopt(fd, IPPROTO_TCP, TCP_KEEPINTVL, &delay, sizeof(delay))) {
++ PLOG(ERROR) << "Failed to set TCP_KEEPINTVL on fd: " << fd;
++ return false;
++ }
+ #endif
+ return true;
+ }
diff --git a/devel/electron5/files/patch-net_socket_udp__socket__posix.cc b/devel/electron5/files/patch-net_socket_udp__socket__posix.cc
new file mode 100644
index 000000000000..3433652f0c25
--- /dev/null
+++ b/devel/electron5/files/patch-net_socket_udp__socket__posix.cc
@@ -0,0 +1,115 @@
+--- net/socket/udp_socket_posix.cc.orig 2019-04-08 08:33:01 UTC
++++ net/socket/udp_socket_posix.cc
+@@ -68,7 +68,7 @@ const int kActivityMonitorMinimumSamplesForThroughputE
+ const base::TimeDelta kActivityMonitorMsThreshold =
+ base::TimeDelta::FromMilliseconds(100);
+
+-#if defined(OS_MACOSX)
++#if defined(OS_MACOSX) || defined(OS_BSD)
+ // When enabling multicast using setsockopt(IP_MULTICAST_IF) MacOS
+ // requires passing IPv4 address instead of interface index. This function
+ // resolves IPv4 address by interface index. The |address| is returned in
+@@ -97,7 +97,7 @@ int GetIPv4AddressFromIndex(int socket, uint32_t index
+ return OK;
+ }
+
+-#endif // OS_MACOSX
++#endif // OS_MACOSX || OS_BSD
+
+ #if defined(OS_MACOSX) && !defined(OS_IOS)
+
+@@ -644,13 +644,13 @@ int UDPSocketPosix::SetDoNotFragment() {
+ }
+
+ void UDPSocketPosix::SetMsgConfirm(bool confirm) {
+-#if !defined(OS_MACOSX) && !defined(OS_IOS)
++#if !defined(OS_MACOSX) && !defined(OS_IOS) && !defined(OS_BSD)
+ if (confirm) {
+ sendto_flags_ |= MSG_CONFIRM;
+ } else {
+ sendto_flags_ &= ~MSG_CONFIRM;
+ }
+-#endif // !defined(OS_MACOSX) && !defined(OS_IOS)
++#endif // !defined(OS_MACOSX) && !defined(OS_IOS) && !defined(OS_BSD)
+ }
+
+ int UDPSocketPosix::AllowAddressReuse() {
+@@ -665,17 +665,20 @@ int UDPSocketPosix::SetBroadcast(bool broadcast) {
+ DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
+ int value = broadcast ? 1 : 0;
+ int rv;
+-#if defined(OS_MACOSX)
++#if defined(OS_MACOSX) || defined(OS_BSD)
+ // SO_REUSEPORT on OSX permits multiple processes to each receive
+ // UDP multicast or broadcast datagrams destined for the bound
+ // port.
+ // This is only being set on OSX because its behavior is platform dependent
+ // and we are playing it safe by only setting it on platforms where things
+ // break.
++ rv = setsockopt(socket_, SOL_SOCKET, SO_REUSEADDR, &value, sizeof(value));
++ if (rv != 0)
++ return MapSystemError(errno);
+ rv = setsockopt(socket_, SOL_SOCKET, SO_REUSEPORT, &value, sizeof(value));
+ if (rv != 0)
+ return MapSystemError(errno);
+-#endif // defined(OS_MACOSX)
++#endif // defined(OS_MACOSX) || defined(OS_BSD)
+ rv = setsockopt(socket_, SOL_SOCKET, SO_BROADCAST, &value, sizeof(value));
+
+ return rv == 0 ? OK : MapSystemError(errno);
+@@ -937,19 +940,24 @@ int UDPSocketPosix::SetMulticastOptions() {
+ if (multicast_interface_ != 0) {
+ switch (addr_family_) {
+ case AF_INET: {
+-#if defined(OS_MACOSX)
++#if defined(OS_MACOSX) || defined(OS_BSD)
+ ip_mreq mreq = {};
+ int error = GetIPv4AddressFromIndex(socket_, multicast_interface_,
+ &mreq.imr_interface.s_addr);
+ if (error != OK)
+ return error;
+-#else // defined(OS_MACOSX)
++#else // defined(OS_MACOSX) || defined(OS_BSD)
+ ip_mreqn mreq = {};
+ mreq.imr_ifindex = multicast_interface_;
+ mreq.imr_address.s_addr = htonl(INADDR_ANY);
+-#endif // !defined(OS_MACOSX)
++#endif // !defined(OS_MACOSX) || defined(OS_BSD)
+ int rv = setsockopt(socket_, IPPROTO_IP, IP_MULTICAST_IF,
++#if defined(OS_BSD)
++ reinterpret_cast<const char*>(&mreq.imr_interface.s_addr),
++ sizeof(mreq.imr_interface.s_addr));
++#else
+ reinterpret_cast<const char*>(&mreq), sizeof(mreq));
++#endif
+ if (rv)
+ return MapSystemError(errno);
+ break;
+@@ -1011,7 +1019,7 @@ int UDPSocketPosix::JoinGroup(const IPAddress& group_a
+ if (addr_family_ != AF_INET)
+ return ERR_ADDRESS_INVALID;
+
+-#if defined(OS_MACOSX)
++#if defined(OS_MACOSX) || defined(OS_BSD)
+ ip_mreq mreq = {};
+ int error = GetIPv4AddressFromIndex(socket_, multicast_interface_,
+ &mreq.imr_interface.s_addr);
+@@ -1059,9 +1067,18 @@ int UDPSocketPosix::LeaveGroup(const IPAddress& group_
+ case IPAddress::kIPv4AddressSize: {
+ if (addr_family_ != AF_INET)
+ return ERR_ADDRESS_INVALID;
++#if defined(OS_BSD)
++ ip_mreq mreq = {};
++ int error = GetIPv4AddressFromIndex(socket_, multicast_interface_,
++ &mreq.imr_interface.s_addr);
++
++ if (error != OK)
++ return error;
++#else
+ ip_mreqn mreq = {};
+ mreq.imr_ifindex = multicast_interface_;
+ mreq.imr_address.s_addr = INADDR_ANY;
++#endif
+ memcpy(&mreq.imr_multiaddr, group_address.bytes().data(),
+ IPAddress::kIPv4AddressSize);
+ int rv = setsockopt(socket_, IPPROTO_IP, IP_DROP_MEMBERSHIP,
diff --git a/devel/electron5/files/patch-net_third__party_quic_platform_impl_quic__ip__address__impl.cc b/devel/electron5/files/patch-net_third__party_quic_platform_impl_quic__ip__address__impl.cc
new file mode 100644
index 000000000000..547ab5980c42
--- /dev/null
+++ b/devel/electron5/files/patch-net_third__party_quic_platform_impl_quic__ip__address__impl.cc
@@ -0,0 +1,10 @@
+--- net/third_party/quic/platform/impl/quic_ip_address_impl.cc.orig 2019-04-08 08:33:01 UTC
++++ net/third_party/quic/platform/impl/quic_ip_address_impl.cc
+@@ -13,6 +13,7 @@
+ #include <ws2bth.h>
+ #elif defined(OS_POSIX) || defined(OS_FUCHSIA)
+ #include <netinet/in.h>
++#include <sys/socket.h>
+ #endif
+
+ using std::string;
diff --git a/devel/electron5/files/patch-net_tools_cert__verify__tool_cert__verify__tool.cc b/devel/electron5/files/patch-net_tools_cert__verify__tool_cert__verify__tool.cc
new file mode 100644
index 000000000000..669edf6f284c
--- /dev/null
+++ b/devel/electron5/files/patch-net_tools_cert__verify__tool_cert__verify__tool.cc
@@ -0,0 +1,20 @@
+--- net/tools/cert_verify_tool/cert_verify_tool.cc.orig 2019-04-08 08:33:01 UTC
++++ net/tools/cert_verify_tool/cert_verify_tool.cc
+@@ -27,7 +27,7 @@
+ #include "net/url_request/url_request_context_builder.h"
+ #include "net/url_request/url_request_context_getter.h"
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include "net/proxy_resolution/proxy_config.h"
+ #include "net/proxy_resolution/proxy_config_service_fixed.h"
+ #endif
+@@ -46,7 +46,7 @@ void SetUpOnNetworkThread(std::unique_ptr<net::URLRequ
+ base::WaitableEvent* initialization_complete_event) {
+ net::URLRequestContextBuilder url_request_context_builder;
+ url_request_context_builder.set_user_agent(GetUserAgent());
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // On Linux, use a fixed ProxyConfigService, since the default one
+ // depends on glib.
+ //
diff --git a/devel/electron5/files/patch-net_tools_quic_quic__http__proxy__backend.cc b/devel/electron5/files/patch-net_tools_quic_quic__http__proxy__backend.cc
new file mode 100644
index 000000000000..ab751ee3acc4
--- /dev/null
+++ b/devel/electron5/files/patch-net_tools_quic_quic__http__proxy__backend.cc
@@ -0,0 +1,11 @@
+--- net/tools/quic/quic_http_proxy_backend.cc.orig 2019-04-08 08:33:01 UTC
++++ net/tools/quic/quic_http_proxy_backend.cc
+@@ -160,7 +160,7 @@ void QuicHttpProxyBackend::InitializeURLRequestContext
+ // Enable HTTP2, but disable QUIC on the backend
+ context_builder.SetSpdyAndQuicEnabled(true /* http2 */, false /* quic */);
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // On Linux, use a fixed ProxyConfigService, since the default one
+ // depends on glib.
+ context_builder.set_proxy_config_service(
diff --git a/devel/electron5/files/patch-net_url__request_url__request__context__builder.cc b/devel/electron5/files/patch-net_url__request_url__request__context__builder.cc
new file mode 100644
index 000000000000..726efab0d3cd
--- /dev/null
+++ b/devel/electron5/files/patch-net_url__request_url__request__context__builder.cc
@@ -0,0 +1,11 @@
+--- net/url_request/url_request_context_builder.cc.orig 2019-04-08 08:33:01 UTC
++++ net/url_request/url_request_context_builder.cc
+@@ -520,7 +520,7 @@ std::unique_ptr<URLRequestContext> URLRequestContextBu
+ }
+
+ if (!proxy_resolution_service_) {
+-#if !defined(OS_LINUX) && !defined(OS_ANDROID)
++#if !defined(OS_LINUX) && !defined(OS_ANDROID) && !defined(OS_BSD)
+ // TODO(willchan): Switch to using this code when
+ // ProxyResolutionService::CreateSystemProxyConfigService()'s signature
+ // doesn't suck.
diff --git a/devel/electron5/files/patch-pdf_pdfium_pdfium__engine.cc b/devel/electron5/files/patch-pdf_pdfium_pdfium__engine.cc
new file mode 100644
index 000000000000..762a00cc9f74
--- /dev/null
+++ b/devel/electron5/files/patch-pdf_pdfium_pdfium__engine.cc
@@ -0,0 +1,74 @@
+--- pdf/pdfium/pdfium_engine.cc.orig 2019-04-08 08:33:02 UTC
++++ pdf/pdfium/pdfium_engine.cc
+@@ -133,7 +133,7 @@ constexpr base::TimeDelta kMaxInitialProgressivePaintT
+
+ PDFiumEngine* g_engine_for_fontmapper = nullptr;
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+
+ PP_Instance g_last_instance_id;
+
+@@ -413,7 +413,7 @@ void Release(FPDF_SYSFONTINFO* sysfontinfo) {
+ fontinfo_with_metrics->default_sysfontinfo->Release(
+ fontinfo_with_metrics->default_sysfontinfo);
+ }
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+
+ PDFiumEngine::CreateDocumentLoaderFunction
+ g_create_document_loader_for_testing = nullptr;
+@@ -663,7 +663,7 @@ bool InitializeSDK() {
+ config.m_v8EmbedderSlot = gin::kEmbedderPDFium;
+ FPDF_InitLibraryWithConfig(&config);
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Font loading doesn't work in the renderer sandbox in Linux.
+ FPDF_SetSystemFontInfo(&g_font_info);
+ #else
+@@ -688,7 +688,7 @@ bool InitializeSDK() {
+
+ void ShutdownSDK() {
+ FPDF_DestroyLibrary();
+-#if !defined(OS_LINUX)
++#if !defined(OS_LINUX) && !defined(OS_BSD)
+ delete g_font_info;
+ #endif
+ TearDownV8();
+@@ -712,7 +712,7 @@ PDFiumEngine::PDFiumEngine(PDFEngine::Client* client,
+ IFSDK_PAUSE::user = nullptr;
+ IFSDK_PAUSE::NeedToPauseNow = Pause_NeedToPauseNow;
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // PreviewModeClient does not know its pp::Instance.
+ pp::Instance* instance = client_->GetPluginInstance();
+ if (instance)
+@@ -1176,7 +1176,7 @@ pp::Buffer_Dev PDFiumEngine::PrintPagesAsRasterPdf(
+
+ KillFormFocus();
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ g_last_instance_id = client_->GetPluginInstance()->pp_instance();
+ #endif
+
+@@ -2973,7 +2973,7 @@ bool PDFiumEngine::ContinuePaint(int progressive_index
+ DCHECK(image_data);
+
+ last_progressive_start_time_ = base::Time::Now();
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ g_last_instance_id = client_->GetPluginInstance()->pp_instance();
+ #endif
+
+@@ -3448,7 +3448,7 @@ void PDFiumEngine::SetCurrentPage(int index) {
+ FORM_DoPageAAction(old_page, form(), FPDFPAGE_AACTION_CLOSE);
+ }
+ most_visible_page_ = index;
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ g_last_instance_id = client_->GetPluginInstance()->pp_instance();
+ #endif
+ if (most_visible_page_ != -1 && called_do_document_action_) {
diff --git a/devel/electron5/files/patch-ppapi_proxy_file__io__resource.cc b/devel/electron5/files/patch-ppapi_proxy_file__io__resource.cc
new file mode 100644
index 000000000000..c7239be8258d
--- /dev/null
+++ b/devel/electron5/files/patch-ppapi_proxy_file__io__resource.cc
@@ -0,0 +1,48 @@
+--- ppapi/proxy/file_io_resource.cc.orig 2019-04-08 08:33:02 UTC
++++ ppapi/proxy/file_io_resource.cc
+@@ -285,17 +285,19 @@ int32_t FileIOResource::Write(int64_t offset,
+
+ if (check_quota_) {
+ int64_t increase = 0;
+- uint64_t max_offset = 0;
++ uint64_t _max_offset = 0;
++ // (rene) avoid name collission with /usr/include/vm/vm_map.h on FreeBSD
++ // which also defines max_offset
+ bool append = (open_flags_ & PP_FILEOPENFLAG_APPEND) != 0;
+ if (append) {
+ increase = bytes_to_write;
+ } else {
+- uint64_t max_offset = offset + bytes_to_write;
+- if (max_offset >
++ uint64_t _max_offset = offset + bytes_to_write;
++ if (_max_offset >
+ static_cast<uint64_t>(std::numeric_limits<int64_t>::max())) {
+ return PP_ERROR_FAILED; // amount calculation would overflow.
+ }
+- increase = static_cast<int64_t>(max_offset) - max_written_offset_;
++ increase = static_cast<int64_t>(_max_offset) - max_written_offset_;
+ }
+
+ if (increase > 0) {
+@@ -319,7 +321,7 @@ int32_t FileIOResource::Write(int64_t offset,
+ if (append)
+ append_mode_write_amount_ += bytes_to_write;
+ else
+- max_written_offset_ = max_offset;
++ max_written_offset_ = _max_offset;
+ }
+ }
+ return WriteValidated(offset, buffer, bytes_to_write, callback);
+@@ -597,9 +599,9 @@ void FileIOResource::OnRequestWriteQuotaComplete(
+ } else {
+ DCHECK_LE(offset + bytes_to_write - max_written_offset_, granted);
+
+- int64_t max_offset = offset + bytes_to_write;
+- if (max_written_offset_ < max_offset)
+- max_written_offset_ = max_offset;
++ int64_t _max_offset = offset + bytes_to_write;
++ if (max_written_offset_ < _max_offset)
++ max_written_offset_ = _max_offset;
+ }
+
+ if (callback->is_blocking()) {
diff --git a/devel/electron5/files/patch-printing_backend_print__backend__cups.h b/devel/electron5/files/patch-printing_backend_print__backend__cups.h
new file mode 100644
index 000000000000..a4032c726618
--- /dev/null
+++ b/devel/electron5/files/patch-printing_backend_print__backend__cups.h
@@ -0,0 +1,11 @@
+--- printing/backend/print_backend_cups.h.orig 2019-04-08 08:18:26 UTC
++++ printing/backend/print_backend_cups.h
+@@ -5,6 +5,8 @@
+ #ifndef PRINTING_BACKEND_PRINT_BACKEND_CUPS_H_
+ #define PRINTING_BACKEND_PRINT_BACKEND_CUPS_H_
+
++#include <cups/ppd.h>
++
+ #include <string>
+
+ #include "base/files/file_util.h"
diff --git a/devel/electron5/files/patch-printing_cups__config__helper.py b/devel/electron5/files/patch-printing_cups__config__helper.py
new file mode 100644
index 000000000000..352b4c1df48d
--- /dev/null
+++ b/devel/electron5/files/patch-printing_cups__config__helper.py
@@ -0,0 +1,11 @@
+--- printing/cups_config_helper.py.orig 2019-04-08 08:18:26 UTC
++++ printing/cups_config_helper.py
+@@ -65,7 +65,7 @@ def main():
+ mode = sys.argv[1]
+ if len(sys.argv) > 2 and sys.argv[2]:
+ sysroot = sys.argv[2]
+- cups_config = os.path.join(sysroot, 'usr', 'bin', 'cups-config')
++ cups_config = os.path.join(sysroot, 'bin', 'cups-config')
+ if not os.path.exists(cups_config):
+ print 'cups-config not found: %s' % cups_config
+ return 1
diff --git a/devel/electron5/files/patch-remoting_base_chromoting__event.cc b/devel/electron5/files/patch-remoting_base_chromoting__event.cc
new file mode 100644
index 000000000000..d51901efb459
--- /dev/null
+++ b/devel/electron5/files/patch-remoting_base_chromoting__event.cc
@@ -0,0 +1,11 @@
+--- remoting/base/chromoting_event.cc.orig 2019-04-08 08:18:26 UTC
++++ remoting/base/chromoting_event.cc
+@@ -189,7 +189,7 @@ void ChromotingEvent::AddSystemInfo() {
+ SetString(kCpuKey, base::SysInfo::OperatingSystemArchitecture());
+ SetString(kOsVersionKey, GetOperatingSystemVersionString());
+ SetString(kWebAppVersionKey, STRINGIZE(VERSION));
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ Os os = Os::CHROMOTING_LINUX;
+ #elif defined(OS_CHROMEOS)
+ Os os = Os::CHROMOTING_CHROMEOS;
diff --git a/devel/electron5/files/patch-remoting_client_display_sys__opengl.h b/devel/electron5/files/patch-remoting_client_display_sys__opengl.h
new file mode 100644
index 000000000000..bd53b213ca81
--- /dev/null
+++ b/devel/electron5/files/patch-remoting_client_display_sys__opengl.h
@@ -0,0 +1,11 @@
+--- remoting/client/display/sys_opengl.h.orig 2019-04-08 08:18:26 UTC
++++ remoting/client/display/sys_opengl.h
+@@ -9,7 +9,7 @@
+
+ #if defined(OS_IOS)
+ #include <OpenGLES/ES3/gl.h>
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ #define GL_GLEXT_PROTOTYPES
+ #include <GL/gl.h>
+ #include <GL/glext.h>
diff --git a/devel/electron5/files/patch-remoting_host_evaluate__capability.cc b/devel/electron5/files/patch-remoting_host_evaluate__capability.cc
new file mode 100644
index 000000000000..6878d19fb98e
--- /dev/null
+++ b/devel/electron5/files/patch-remoting_host_evaluate__capability.cc
@@ -0,0 +1,11 @@
+--- remoting/host/evaluate_capability.cc.orig 2019-04-08 08:18:26 UTC
++++ remoting/host/evaluate_capability.cc
+@@ -50,7 +50,7 @@ base::FilePath BuildHostBinaryPath() {
+ }
+ #endif
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ if (path.BaseName().value() ==
+ FILE_PATH_LITERAL("chrome-remote-desktop-host")) {
+ return path;
diff --git a/devel/electron5/files/patch-remoting_host_host__attributes.cc b/devel/electron5/files/patch-remoting_host_host__attributes.cc
new file mode 100644
index 000000000000..edcdae7daafd
--- /dev/null
+++ b/devel/electron5/files/patch-remoting_host_host__attributes.cc
@@ -0,0 +1,11 @@
+--- remoting/host/host_attributes.cc.orig 2019-04-08 08:18:26 UTC
++++ remoting/host/host_attributes.cc
+@@ -123,7 +123,7 @@ std::string GetHostAttributes() {
+ media::InitializeMediaFoundation()) {
+ result.push_back("HWEncoder");
+ }
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ result.push_back("HWEncoder");
+ #endif
+
diff --git a/devel/electron5/files/patch-remoting_host_host__details.cc b/devel/electron5/files/patch-remoting_host_host__details.cc
new file mode 100644
index 000000000000..3341edbfbcb4
--- /dev/null
+++ b/devel/electron5/files/patch-remoting_host_host__details.cc
@@ -0,0 +1,11 @@
+--- remoting/host/host_details.cc.orig 2019-04-08 08:18:26 UTC
++++ remoting/host/host_details.cc
+@@ -24,7 +24,7 @@ std::string GetHostOperatingSystemName() {
+ return "Mac";
+ #elif defined(OS_CHROMEOS)
+ return "ChromeOS";
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ return "Linux";
+ #elif defined(OS_ANDROID)
+ return "Android";
diff --git a/devel/electron5/files/patch-remoting_host_it2me_it2me__native__messaging__host__main.cc b/devel/electron5/files/patch-remoting_host_it2me_it2me__native__messaging__host__main.cc
new file mode 100644
index 000000000000..954f9727f346
--- /dev/null
+++ b/devel/electron5/files/patch-remoting_host_it2me_it2me__native__messaging__host__main.cc
@@ -0,0 +1,35 @@
+--- remoting/host/it2me/it2me_native_messaging_host_main.cc.orig 2019-04-08 08:18:26 UTC
++++ remoting/host/it2me/it2me_native_messaging_host_main.cc
+@@ -27,12 +27,12 @@
+ #include "remoting/host/resources.h"
+ #include "remoting/host/usage_stats_consent.h"
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include <gtk/gtk.h>
+
+ #include "base/linux_util.h"
+ #include "ui/gfx/x/x11.h"
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+
+ #if defined(OS_MACOSX)
+ #include "base/mac/scoped_nsautorelease_pool.h"
+@@ -106,7 +106,7 @@ int It2MeNativeMessagingHostMain(int argc, char** argv
+
+ remoting::LoadResources("");
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Required in order for us to run multiple X11 threads.
+ XInitThreads();
+
+@@ -122,7 +122,7 @@ int It2MeNativeMessagingHostMain(int argc, char** argv
+ // Need to prime the host OS version value for linux to prevent IO on the
+ // network thread. base::GetLinuxDistro() caches the result.
+ base::GetLinuxDistro();
+-#endif // OS_LINUX
++#endif // OS_LINUX || OS_BSD
+
+ base::File read_file;
+ base::File write_file;
diff --git a/devel/electron5/files/patch-remoting_host_me2me__desktop__environment.cc b/devel/electron5/files/patch-remoting_host_me2me__desktop__environment.cc
new file mode 100644
index 000000000000..4ca0f3a738f7
--- /dev/null
+++ b/devel/electron5/files/patch-remoting_host_me2me__desktop__environment.cc
@@ -0,0 +1,11 @@
+--- remoting/host/me2me_desktop_environment.cc.orig 2019-04-08 08:33:02 UTC
++++ remoting/host/me2me_desktop_environment.cc
+@@ -129,7 +129,7 @@ bool Me2MeDesktopEnvironment::InitializeSecurity(
+
+ // Otherwise, if the session is shared with the local user start monitoring
+ // the local input and create the in-session UI.
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ bool want_user_interface = false;
+ #elif defined(OS_MACOSX)
+ // Don't try to display any UI on top of the system's login screen as this
diff --git a/devel/electron5/files/patch-remoting_host_remoting__me2me__host.cc b/devel/electron5/files/patch-remoting_host_remoting__me2me__host.cc
new file mode 100644
index 000000000000..5930a149e56c
--- /dev/null
+++ b/devel/electron5/files/patch-remoting_host_remoting__me2me__host.cc
@@ -0,0 +1,108 @@
+--- remoting/host/remoting_me2me_host.cc.orig 2019-04-08 08:33:02 UTC
++++ remoting/host/remoting_me2me_host.cc
+@@ -117,13 +117,13 @@
+ #include "remoting/host/mac/permission_utils.h"
+ #endif // defined(OS_MACOSX)
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include <gtk/gtk.h>
+ #include "base/linux_util.h"
+ #include "remoting/host/audio_capturer_linux.h"
+ #include "remoting/host/linux/certificate_watcher.h"
+ #include "ui/gfx/x/x11.h"
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+
+ #if defined(OS_WIN)
+ #include <commctrl.h>
+@@ -158,11 +158,11 @@ const char kApplicationName[] = "chromoting";
+ const char kStdinConfigPath[] = "-";
+ #endif // !defined(REMOTING_MULTI_PROCESS)
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // The command line switch used to pass name of the pipe to capture audio on
+ // linux.
+ const char kAudioPipeSwitchName[] = "audio-pipe-name";
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+
+ #if defined(OS_POSIX)
+ // The command line switch used to pass name of the unix domain socket used to
+@@ -353,7 +353,7 @@ class HostProcess : public ConfigWatcher::Delegate,
+
+ std::unique_ptr<ChromotingHostContext> context_;
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Watch for certificate changes and kill the host when changes occur
+ std::unique_ptr<CertificateWatcher> cert_watcher_;
+ #endif
+@@ -567,10 +567,10 @@ bool HostProcess::InitWithCommandLine(const base::Comm
+ enable_window_capture_ = cmd_line->HasSwitch(kWindowIdSwitchName);
+ if (enable_window_capture_) {
+
+-#if defined(OS_LINUX) || defined(OS_WIN)
++#if defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD)
+ LOG(WARNING) << "Window capturing is not fully supported on Linux or "
+ "Windows.";
+-#endif // defined(OS_LINUX) || defined(OS_WIN)
++#endif // defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD)
+
+ // uint32_t is large enough to hold window IDs on all platforms.
+ uint32_t window_id;
+@@ -763,7 +763,7 @@ void HostProcess::CreateAuthenticatorFactory() {
+ DCHECK(third_party_auth_config_.token_url.is_valid());
+ DCHECK(third_party_auth_config_.token_validation_url.is_valid());
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ if (!cert_watcher_) {
+ cert_watcher_.reset(new CertificateWatcher(
+ base::Bind(&HostProcess::ShutdownHost, this, kSuccessExitCode),
+@@ -849,7 +849,7 @@ void HostProcess::StartOnUiThread() {
+ base::Bind(&HostProcess::OnPolicyUpdate, base::Unretained(this)),
+ base::Bind(&HostProcess::OnPolicyError, base::Unretained(this)));
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // If an audio pipe is specific on the command-line then initialize
+ // AudioCapturerLinux to capture from it.
+ base::FilePath audio_pipe_name = base::CommandLine::ForCurrentProcess()->
+@@ -858,7 +858,7 @@ void HostProcess::StartOnUiThread() {
+ remoting::AudioCapturerLinux::InitializePipeReader(
+ context_->audio_task_runner(), audio_pipe_name);
+ }
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+
+ #if defined(OS_POSIX)
+ base::FilePath security_key_socket_name =
+@@ -916,7 +916,7 @@ void HostProcess::ShutdownOnUiThread() {
+ // It is now safe for the HostProcess to be deleted.
+ self_ = nullptr;
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Cause the global AudioPipeReader to be freed, otherwise the audio
+ // thread will remain in-use and prevent the process from exiting.
+ // TODO(wez): DesktopEnvironmentFactory should own the pipe reader.
+@@ -1547,7 +1547,7 @@ void HostProcess::StartHost() {
+ host_->AddExtension(std::make_unique<TestEchoExtension>());
+
+ // TODO(simonmorris): Get the maximum session duration from a policy.
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ host_->SetMaximumSessionDuration(base::TimeDelta::FromHours(20));
+ #endif
+
+@@ -1719,7 +1719,7 @@ void HostProcess::OnCrash(const std::string& function_
+ int HostProcessMain() {
+ HOST_LOG << "Starting host process: version " << STRINGIZE(VERSION);
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ if (!base::CommandLine::ForCurrentProcess()->HasSwitch(
+ kReportOfflineReasonSwitchName)) {
+ // Required in order for us to run multiple X11 threads.
diff --git a/devel/electron5/files/patch-remoting_webapp_base_js_platform.js b/devel/electron5/files/patch-remoting_webapp_base_js_platform.js
new file mode 100644
index 000000000000..7547e48f4090
--- /dev/null
+++ b/devel/electron5/files/patch-remoting_webapp_base_js_platform.js
@@ -0,0 +1,17 @@
+--- remoting/webapp/base/js/platform.js.orig 2019-04-08 08:18:26 UTC
++++ remoting/webapp/base/js/platform.js
+@@ -107,6 +107,14 @@ remoting.getSystemInfo = function() {
+ return result;
+ }
+
++ match = new RegExp('FreeBSD ([a-zA-Z0-9_]*)').exec(userAgent);
++ if (match && (match.length >= 2)) {
++ result.osName = remoting.Os.LINUX;
++ result.osVersion = '';
++ result.cpu = match[1];
++ return result;
++ }
++
+ match = new RegExp('([a-zA-Z]*) Mac OS X ([0-9_]*)').exec(userAgent);
+ if (match && (match.length >= 3)) {
+ result.osName = remoting.Os.MAC;
diff --git a/devel/electron5/files/patch-sandbox_features.gni b/devel/electron5/files/patch-sandbox_features.gni
new file mode 100644
index 000000000000..98463e925bc5
--- /dev/null
+++ b/devel/electron5/files/patch-sandbox_features.gni
@@ -0,0 +1,10 @@
+--- sandbox/features.gni.orig 2019-04-08 08:18:26 UTC
++++ sandbox/features.gni
+@@ -12,6 +12,6 @@ use_seccomp_bpf =
+ (is_linux || is_android) &&
+ (current_cpu == "x86" || current_cpu == "x64" || current_cpu == "arm" ||
+ current_cpu == "arm64" || current_cpu == "mipsel" ||
+- current_cpu == "mips64el")
++ current_cpu == "mips64el") && !is_bsd
+
+ use_seccomp_bpf = use_seccomp_bpf || is_nacl_nonsfi
diff --git a/devel/electron5/files/patch-sandbox_linux_BUILD.gn b/devel/electron5/files/patch-sandbox_linux_BUILD.gn
new file mode 100644
index 000000000000..689e8c93fc41
--- /dev/null
+++ b/devel/electron5/files/patch-sandbox_linux_BUILD.gn
@@ -0,0 +1,47 @@
+--- sandbox/linux/BUILD.gn.orig 2019-04-08 08:18:26 UTC
++++ sandbox/linux/BUILD.gn
+@@ -12,12 +12,12 @@ if (is_android) {
+ }
+
+ declare_args() {
+- compile_suid_client = is_linux
++ compile_suid_client = is_linux && !is_bsd
+
+- compile_credentials = is_linux
++ compile_credentials = is_linux && !is_bsd
+
+ # On Android, use plain GTest.
+- use_base_test_suite = is_linux
++ use_base_test_suite = is_linux && !is_bsd
+ }
+
+ if (is_nacl_nonsfi) {
+@@ -379,7 +379,7 @@ component("sandbox_services") {
+ public_deps += [ ":sandbox_services_headers" ]
+ }
+
+- if (is_nacl_nonsfi) {
++ if (is_nacl_nonsfi || is_bsd) {
+ cflags = [ "-fgnu-inline-asm" ]
+
+ sources -= [
+@@ -387,6 +387,8 @@ component("sandbox_services") {
+ "services/init_process_reaper.h",
+ "services/scoped_process.cc",
+ "services/scoped_process.h",
++ "services/syscall_wrappers.cc",
++ "services/syscall_wrappers.h",
+ "services/yama.cc",
+ "services/yama.h",
+ "syscall_broker/broker_channel.cc",
+@@ -405,6 +407,10 @@ component("sandbox_services") {
+ "syscall_broker/broker_process.h",
+ "syscall_broker/broker_simple_message.cc",
+ "syscall_broker/broker_simple_message.h",
++ ]
++ sources += [
++ "services/libc_interceptor.cc",
++ "services/libc_interceptor.h",
+ ]
+ } else if (!is_android) {
+ sources += [
diff --git a/devel/electron5/files/patch-sandbox_linux_services_init__process__reaper.cc b/devel/electron5/files/patch-sandbox_linux_services_init__process__reaper.cc
new file mode 100644
index 000000000000..ea79d823e6cc
--- /dev/null
+++ b/devel/electron5/files/patch-sandbox_linux_services_init__process__reaper.cc
@@ -0,0 +1,15 @@
+--- sandbox/linux/services/init_process_reaper.cc.orig 2019-04-08 08:18:26 UTC
++++ sandbox/linux/services/init_process_reaper.cc
+@@ -1,6 +1,7 @@
+ // Copyright 2013 The Chromium Authors. All rights reserved.
+ // Use of this source code is governed by a BSD-style license that can be
+ // found in the LICENSE file.
++#if 0
+
+ #include "sandbox/linux/services/init_process_reaper.h"
+
+@@ -100,3 +101,4 @@ bool CreateInitProcessReaper(base::OnceClosure post_fo
+ }
+
+ } // namespace sandbox.
++#endif
diff --git a/devel/electron5/files/patch-sandbox_linux_services_libc__interceptor.cc b/devel/electron5/files/patch-sandbox_linux_services_libc__interceptor.cc
new file mode 100644
index 000000000000..f4182f3e0eb0
--- /dev/null
+++ b/devel/electron5/files/patch-sandbox_linux_services_libc__interceptor.cc
@@ -0,0 +1,21 @@
+--- sandbox/linux/services/libc_interceptor.cc.orig 2019-04-08 08:18:26 UTC
++++ sandbox/linux/services/libc_interceptor.cc
+@@ -11,7 +11,9 @@
+ #include <stddef.h>
+ #include <stdint.h>
+ #include <string.h>
++#if !defined(OS_BSD)
+ #include <sys/prctl.h>
++#endif
+ #include <sys/socket.h>
+ #include <sys/types.h>
+ #include <time.h>
+@@ -94,7 +96,7 @@ bool ReadTimeStruct(base::PickleIterator* iter,
+ } else {
+ base::AutoLock lock(g_timezones_lock.Get());
+ auto ret_pair = g_timezones.Get().insert(timezone);
+- output->tm_zone = ret_pair.first->c_str();
++ output->tm_zone = (char *)ret_pair.first->c_str();
+ }
+
+ return true;
diff --git a/devel/electron5/files/patch-services_audio_BUILD.gn b/devel/electron5/files/patch-services_audio_BUILD.gn
new file mode 100644
index 000000000000..9a10a6778acc
--- /dev/null
+++ b/devel/electron5/files/patch-services_audio_BUILD.gn
@@ -0,0 +1,11 @@
+--- services/audio/BUILD.gn.orig 2019-04-08 08:33:02 UTC
++++ services/audio/BUILD.gn
+@@ -106,7 +106,7 @@ source_set("lib") {
+ "//services/service_manager/sandbox:sandbox",
+ ]
+
+- if (is_linux) {
++ if ((is_linux) && (!is_bsd)) {
+ sources += [
+ "audio_sandbox_hook_linux.cc",
+ "audio_sandbox_hook_linux.h",
diff --git a/devel/electron5/files/patch-services_catalog_store.cc b/devel/electron5/files/patch-services_catalog_store.cc
new file mode 100644
index 000000000000..dee83ba8a8f0
--- /dev/null
+++ b/devel/electron5/files/patch-services_catalog_store.cc
@@ -0,0 +1,10 @@
+--- services/catalog/store.cc.orig 2019-04-08 08:33:02 UTC
++++ services/catalog/store.cc
+@@ -38,5 +38,7 @@ const char Store::kRequiredFilesKey_PlatformValue_MacO
+ const char Store::kRequiredFilesKey_PlatformValue_Android[] = "android";
+ // static
+ const char Store::kRequiredFilesKey_PlatformValue_Fuchsia[] = "fuchsia";
++// static
++const char Store::kRequiredFilesKey_PlatformValue_FreeBSD[] = "freebsd";
+
+ } // namespace catalog
diff --git a/devel/electron5/files/patch-services_catalog_store.h b/devel/electron5/files/patch-services_catalog_store.h
new file mode 100644
index 000000000000..bce9be21d3cd
--- /dev/null
+++ b/devel/electron5/files/patch-services_catalog_store.h
@@ -0,0 +1,10 @@
+--- services/catalog/store.h.orig 2019-04-08 08:33:02 UTC
++++ services/catalog/store.h
+@@ -38,6 +38,7 @@ class Store {
+ static const char kRequiredFilesKey_PlatformValue_MacOSX[];
+ static const char kRequiredFilesKey_PlatformValue_Android[];
+ static const char kRequiredFilesKey_PlatformValue_Fuchsia[];
++ static const char kRequiredFilesKey_PlatformValue_FreeBSD[];
+ };
+
+ } // namespace catalog
diff --git a/devel/electron5/files/patch-services_content_simple__browser_simple__browser__service.h b/devel/electron5/files/patch-services_content_simple__browser_simple__browser__service.h
new file mode 100644
index 000000000000..51f69d1e57a1
--- /dev/null
+++ b/devel/electron5/files/patch-services_content_simple__browser_simple__browser__service.h
@@ -0,0 +1,20 @@
+--- services/content/simple_browser/simple_browser_service.h.orig 2019-04-08 08:18:26 UTC
++++ services/content/simple_browser/simple_browser_service.h
+@@ -16,7 +16,7 @@
+ #include "services/service_manager/public/cpp/service_binding.h"
+ #include "services/service_manager/public/mojom/service.mojom.h"
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include "components/services/font/public/cpp/font_loader.h" // nogncheck
+ #endif
+
+@@ -50,7 +50,7 @@ class COMPONENT_EXPORT(SIMPLE_BROWSER) SimpleBrowserSe
+ // service_manager::Service:
+ void OnStart() override;
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ sk_sp<font_service::FontLoader> font_loader_;
+ #endif
+
diff --git a/devel/electron5/files/patch-services_device_device__service.h b/devel/electron5/files/patch-services_device_device__service.h
new file mode 100644
index 000000000000..1c8f733c0f2c
--- /dev/null
+++ b/devel/electron5/files/patch-services_device_device__service.h
@@ -0,0 +1,11 @@
+--- services/device/device_service.h.orig 2019-04-08 08:33:02 UTC
++++ services/device/device_service.h
+@@ -198,7 +198,7 @@ class DeviceService : public service_manager::Service
+ #endif
+
+ #if (defined(OS_LINUX) && defined(USE_UDEV)) || defined(OS_WIN) || \
+- defined(OS_MACOSX)
++ defined(OS_MACOSX) || defined(OS_BSD)
+ // Requests for the SerialPortManager interface must be bound to
+ // |serial_port_manager_| on |serial_port_manager_task_runner_| and it will
+ // be destroyed on that sequence.
diff --git a/devel/electron5/files/patch-services_device_geolocation_location__arbitrator.cc b/devel/electron5/files/patch-services_device_geolocation_location__arbitrator.cc
new file mode 100644
index 000000000000..139eb9b94180
--- /dev/null
+++ b/devel/electron5/files/patch-services_device_geolocation_location__arbitrator.cc
@@ -0,0 +1,11 @@
+--- services/device/geolocation/location_arbitrator.cc.orig 2019-04-08 08:33:02 UTC
++++ services/device/geolocation/location_arbitrator.cc
+@@ -164,7 +164,7 @@ LocationArbitrator::NewNetworkLocationProvider(
+ std::unique_ptr<LocationProvider>
+ LocationArbitrator::NewSystemLocationProvider() {
+ #if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || \
+- defined(OS_FUCHSIA)
++ defined(OS_FUCHSIA) || defined(OS_BSD)
+ return nullptr;
+ #else
+ return device::NewSystemLocationProvider();
diff --git a/devel/electron5/files/patch-services_device_hid_BUILD.gn b/devel/electron5/files/patch-services_device_hid_BUILD.gn
new file mode 100644
index 000000000000..68b3d4ed675a
--- /dev/null
+++ b/devel/electron5/files/patch-services_device_hid_BUILD.gn
@@ -0,0 +1,22 @@
+--- services/device/hid/BUILD.gn.orig 2019-04-08 08:33:02 UTC
++++ services/device/hid/BUILD.gn
+@@ -51,6 +51,19 @@ source_set("hid") {
+ deps += [ "//device/udev_linux" ]
+ }
+
++ if (is_bsd) {
++ sources -= [
++ "hid_connection_linux.cc",
++ "hid_connection_linux.h",
++ ]
++ sources += [
++ "hid_connection_freebsd.cc",
++ "hid_connection_freebsd.h",
++ "hid_service_freebsd.cc",
++ "hid_service_freebsd.h",
++ ]
++ }
++
+ if (is_chromeos) {
+ deps += [ "//chromeos/dbus" ]
+ }
diff --git a/devel/electron5/files/patch-services_device_hid_hid__connection__freebsd.cc b/devel/electron5/files/patch-services_device_hid_hid__connection__freebsd.cc
new file mode 100644
index 000000000000..053b6e4fa236
--- /dev/null
+++ b/devel/electron5/files/patch-services_device_hid_hid__connection__freebsd.cc
@@ -0,0 +1,243 @@
+--- services/device/hid/hid_connection_freebsd.cc.orig 2019-04-09 12:48:48 UTC
++++ services/device/hid/hid_connection_freebsd.cc
+@@ -0,0 +1,240 @@
++// Copyright (c) 2014 The Chromium Authors. All rights reserved.
++// Use of this source code is governed by a BSD-style license that can be
++// found in the LICENSE file.
++
++#include "services/device/hid/hid_connection_freebsd.h"
++
++#include <dev/usb/usbhid.h>
++#include <dev/usb/usb_ioctl.h>
++
++#include "base/bind.h"
++#include "base/files/file_descriptor_watcher_posix.h"
++#include "base/location.h"
++#include "base/numerics/safe_math.h"
++#include "base/posix/eintr_wrapper.h"
++#include "base/single_thread_task_runner.h"
++#include "base/strings/stringprintf.h"
++#include "base/task/post_task.h"
++#include "base/threading/scoped_blocking_call.h"
++#include "base/threading/thread_restrictions.h"
++#include "base/threading/thread_task_runner_handle.h"
++#include "components/device_event_log/device_event_log.h"
++#include "services/device/hid/hid_service.h"
++
++namespace device {
++
++class HidConnectionFreeBSD::BlockingTaskHelper {
++ public:
++ BlockingTaskHelper(base::ScopedFD fd,
++ scoped_refptr<HidDeviceInfo> device_info,
++ base::WeakPtr<HidConnectionFreeBSD> connection)
++ : fd_(std::move(fd)),
++ connection_(connection),
++ origin_task_runner_(base::ThreadTaskRunnerHandle::Get()) {
++ DETACH_FROM_SEQUENCE(sequence_checker_);
++ // Report buffers must always have room for the report ID.
++ report_buffer_size_ = device_info->max_input_report_size() + 1;
++ has_report_id_ = device_info->has_report_id();
++ }
++
++ ~BlockingTaskHelper() { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); }
++
++ // Starts the FileDescriptorWatcher that reads input events from the device.
++ // Must be called on a thread that has a base::MessageLoopForIO.
++ void Start() {
++ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
++ base::internal::AssertBlockingAllowed();
++
++ file_watcher_ = base::FileDescriptorWatcher::WatchReadable(
++ fd_.get(), base::Bind(&BlockingTaskHelper::OnFileCanReadWithoutBlocking,
++ base::Unretained(this)));
++ }
++
++ void Write(scoped_refptr<base::RefCountedBytes> buffer,
++ WriteCallback callback) {
++ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
++ base::ScopedBlockingCall scoped_blocking_call(
++ base::BlockingType::MAY_BLOCK);
++
++ auto data = buffer->front();
++ size_t size = buffer->size();
++ // if report id is 0, it shouldn't be included
++ if (data[0] == 0) {
++ data++;
++ size--;
++ }
++
++ ssize_t result = HANDLE_EINTR(write(fd_.get(), data, size));
++ if (result < 0) {
++ HID_PLOG(EVENT) << "Write failed";
++ origin_task_runner_->PostTask(FROM_HERE, base::BindOnce(std::move(callback), false));
++ } else {
++ if (static_cast<size_t>(result) != size)
++ HID_LOG(EVENT) << "Incomplete HID write: " << result << " != " << size;
++ origin_task_runner_->PostTask(FROM_HERE, base::BindOnce(std::move(callback), true));
++ }
++ }
++
++ void GetFeatureReport(uint8_t report_id,
++ scoped_refptr<base::RefCountedBytes> buffer,
++ ReadCallback callback) {
++ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
++ base::ScopedBlockingCall scoped_blocking_call(
++ base::BlockingType::MAY_BLOCK);
++ struct usb_gen_descriptor ugd;
++ ugd.ugd_report_type = UHID_FEATURE_REPORT;
++ ugd.ugd_data = buffer->front();
++ ugd.ugd_maxlen = buffer->size();
++ int result = HANDLE_EINTR(
++ ioctl(fd_.get(), USB_GET_REPORT, &ugd));
++ if (result < 0) {
++ HID_PLOG(EVENT) << "Failed to get feature report";
++ origin_task_runner_->PostTask(FROM_HERE,
++ base::BindOnce(std::move(callback), false, nullptr, 0));
++ } else if (result == 0) {
++ HID_LOG(EVENT) << "Get feature result too short.";
++ origin_task_runner_->PostTask(FROM_HERE,
++ base::BindOnce(std::move(callback), false, nullptr, 0));
++ } else {
++ origin_task_runner_->PostTask(FROM_HERE,
++ base::BindOnce(std::move(callback), true, buffer, result));
++ }
++ }
++
++ void SendFeatureReport(scoped_refptr<base::RefCountedBytes> buffer,
++ WriteCallback callback) {
++ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
++ struct usb_gen_descriptor ugd;
++ ugd.ugd_report_type = UHID_FEATURE_REPORT;
++ ugd.ugd_data = buffer->front();
++ ugd.ugd_maxlen = buffer->size();
++ // FreeBSD does not require report id if it's not used
++ if (buffer->front()[0] == 0) {
++ ugd.ugd_data = buffer->front() + 1;
++ ugd.ugd_maxlen = buffer->size() - 1;
++ } else {
++ ugd.ugd_data = buffer->front();
++ ugd.ugd_maxlen = buffer->size();
++ }
++ int result = HANDLE_EINTR(
++ ioctl(fd_.get(), USB_SET_REPORT, &ugd));
++ if (result < 0) {
++ HID_PLOG(EVENT) << "Failed to send feature report";
++ origin_task_runner_->PostTask(FROM_HERE,
++ base::BindOnce(std::move(callback), false));
++ } else {
++ origin_task_runner_->PostTask(FROM_HERE,
++ base::BindOnce(std::move(callback), true));
++ }
++ }
++
++ private:
++ void OnFileCanReadWithoutBlocking() {
++ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
++
++ scoped_refptr<base::RefCountedBytes> buffer(new base::RefCountedBytes(report_buffer_size_));
++ unsigned char* data = buffer->front();
++ size_t length = report_buffer_size_;
++ if (!has_report_id_) {
++ // FreeBSD will not prefix the buffer with a report ID if report IDs are not
++ // used by the device. Prefix the buffer with 0.
++ *data++ = 0;
++ length--;
++ }
++
++ ssize_t bytes_read = HANDLE_EINTR(read(fd_.get(), data, length));
++ if (bytes_read < 0) {
++ if (errno != EAGAIN) {
++ HID_PLOG(EVENT) << "Read failed";
++ // This assumes that the error is unrecoverable and disables reading
++ // from the device until it has been re-opened.
++ // TODO(reillyg): Investigate starting and stopping the file descriptor
++ // watcher in response to pending read requests so that per-request
++ // errors can be returned to the client.
++ file_watcher_.reset();
++ }
++ return;
++ }
++ if (!has_report_id_) {
++ // Behave as if the byte prefixed above as the the report ID was read.
++ bytes_read++;
++ }
++
++ origin_task_runner_->PostTask(
++ FROM_HERE, base::BindOnce(&HidConnectionFreeBSD::ProcessInputReport,
++ connection_, buffer, bytes_read));
++ }
++
++ SEQUENCE_CHECKER(sequence_checker_);
++ base::ScopedFD fd_;
++ size_t report_buffer_size_;
++ bool has_report_id_;
++ base::WeakPtr<HidConnectionFreeBSD> connection_;
++ const scoped_refptr<base::SequencedTaskRunner> origin_task_runner_;
++ std::unique_ptr<base::FileDescriptorWatcher::Controller> file_watcher_;
++
++ DISALLOW_COPY_AND_ASSIGN(BlockingTaskHelper);
++};
++
++HidConnectionFreeBSD::HidConnectionFreeBSD(
++ scoped_refptr<HidDeviceInfo> device_info,
++ base::ScopedFD fd,
++ scoped_refptr<base::SequencedTaskRunner> blocking_task_runner)
++ : HidConnection(device_info),
++ blocking_task_runner_(std::move(blocking_task_runner)),
++ weak_factory_(this) {
++ helper_ = std::make_unique<BlockingTaskHelper>(std::move(fd), device_info,
++ weak_factory_.GetWeakPtr());
++ blocking_task_runner_->PostTask(
++ FROM_HERE, base::BindOnce(&BlockingTaskHelper::Start,
++ base::Unretained(helper_.get())));
++}
++
++HidConnectionFreeBSD::~HidConnectionFreeBSD() {}
++
++void HidConnectionFreeBSD::PlatformClose() {
++ // By closing the device on the blocking task runner 1) the requirement that
++ // base::ScopedFD is destroyed on a thread where I/O is allowed is satisfied
++ // and 2) any tasks posted to this task runner that refer to this file will
++ // complete before it is closed.
++ blocking_task_runner_->DeleteSoon(FROM_HERE, helper_.release());
++}
++
++void HidConnectionFreeBSD::PlatformWrite(scoped_refptr<base::RefCountedBytes> buffer,
++ WriteCallback callback) {
++
++ blocking_task_runner_->PostTask(
++ FROM_HERE,
++ base::BindOnce(&BlockingTaskHelper::Write, base::Unretained(helper_.get()),
++ buffer, std::move(callback)));
++}
++
++void HidConnectionFreeBSD::PlatformGetFeatureReport(uint8_t report_id,
++ ReadCallback callback) {
++ // The first byte of the destination buffer is the report ID being requested
++ // and is overwritten by the feature report.
++ DCHECK_GT(device_info()->max_feature_report_size(), 0u);
++ scoped_refptr<base::RefCountedBytes> buffer(
++ new base::RefCountedBytes(device_info()->max_feature_report_size() + 1));
++ if (report_id != 0)
++ buffer->data()[0] = report_id;
++
++ blocking_task_runner_->PostTask(
++ FROM_HERE,
++ base::BindOnce(&BlockingTaskHelper::GetFeatureReport,
++ base::Unretained(helper_.get()), report_id,
++ buffer, std::move(callback)));
++}
++
++void HidConnectionFreeBSD::PlatformSendFeatureReport(
++ scoped_refptr<base::RefCountedBytes> buffer,
++ WriteCallback callback) {
++ base::ScopedBlockingCall scoped_blocking_call(
++ base::BlockingType::MAY_BLOCK);
++ blocking_task_runner_->PostTask(
++ FROM_HERE,
++ base::BindOnce(&BlockingTaskHelper::SendFeatureReport,
++ base::Unretained(helper_.get()), buffer, std::move(callback)));
++}
++
++} // namespace device
diff --git a/devel/electron5/files/patch-services_device_hid_hid__connection__freebsd.h b/devel/electron5/files/patch-services_device_hid_hid__connection__freebsd.h
new file mode 100644
index 000000000000..00a0324b18c3
--- /dev/null
+++ b/devel/electron5/files/patch-services_device_hid_hid__connection__freebsd.h
@@ -0,0 +1,71 @@
+--- services/device/hid/hid_connection_freebsd.h.orig 2019-04-09 12:48:48 UTC
++++ services/device/hid/hid_connection_freebsd.h
+@@ -0,0 +1,68 @@
++// Copyright (c) 2014 The Chromium Authors. All rights reserved.
++// Use of this source code is governed by a BSD-style license that can be
++// found in the LICENSE file.
++
++#ifndef DEVICE_HID_HID_CONNECTION_FREEBSD_H_
++#define DEVICE_HID_HID_CONNECTION_FREEBSD_H_
++
++#include <stddef.h>
++#include <stdint.h>
++
++#include "base/files/scoped_file.h"
++#include "base/macros.h"
++#include "base/memory/ptr_util.h"
++#include "base/memory/ref_counted_memory.h"
++#include "base/memory/weak_ptr.h"
++#include "base/sequence_checker.h"
++#include "services/device/hid/hid_connection.h"
++
++namespace base {
++class SequencedTaskRunner;
++}
++
++namespace net {
++class IOBuffer;
++}
++
++namespace device {
++
++class HidConnectionFreeBSD : public HidConnection {
++ public:
++ HidConnectionFreeBSD(
++ scoped_refptr<HidDeviceInfo> device_info,
++ base::ScopedFD fd,
++ scoped_refptr<base::SequencedTaskRunner> blocking_task_runner);
++
++ private:
++ friend class base::RefCountedThreadSafe<HidConnectionFreeBSD>;
++ class BlockingTaskHelper;
++
++ ~HidConnectionFreeBSD() override;
++
++ // HidConnection implementation.
++ void PlatformClose() override;
++ void PlatformWrite(scoped_refptr<base::RefCountedBytes> buffer,
++ WriteCallback callback) override;
++ void PlatformGetFeatureReport(uint8_t report_id,
++ ReadCallback callback) override;
++ void PlatformSendFeatureReport(scoped_refptr<base::RefCountedBytes> buffer,
++ WriteCallback callback) override;
++
++ // |helper_| lives on the sequence to which |blocking_task_runner_| posts
++ // tasks so all calls must be posted there including this object's
++ // destruction.
++ std::unique_ptr<BlockingTaskHelper> helper_;
++
++ const scoped_refptr<base::SequencedTaskRunner> blocking_task_runner_;
++ const scoped_refptr<base::SequencedTaskRunner> task_runner_;
++
++ SEQUENCE_CHECKER(sequence_checker_);
++
++ base::WeakPtrFactory<HidConnectionFreeBSD> weak_factory_;
++
++ DISALLOW_COPY_AND_ASSIGN(HidConnectionFreeBSD);
++};
++
++} // namespace device
++
++#endif // DEVICE_HID_HID_CONNECTION_FREEBSD_H_
diff --git a/devel/electron5/files/patch-services_device_hid_hid__service.cc b/devel/electron5/files/patch-services_device_hid_hid__service.cc
new file mode 100644
index 000000000000..ee529eee0d39
--- /dev/null
+++ b/devel/electron5/files/patch-services_device_hid_hid__service.cc
@@ -0,0 +1,20 @@
+--- services/device/hid/hid_service.cc.orig 2019-04-08 08:18:26 UTC
++++ services/device/hid/hid_service.cc
+@@ -16,6 +16,8 @@
+
+ #if defined(OS_LINUX) && defined(USE_UDEV)
+ #include "services/device/hid/hid_service_linux.h"
++#elif defined(OS_BSD)
++#include "services/device/hid/hid_service_freebsd.h"
+ #elif defined(OS_MACOSX)
+ #include "services/device/hid/hid_service_mac.h"
+ #elif defined(OS_WIN)
+@@ -36,6 +38,8 @@ constexpr base::TaskTraits HidService::kBlockingTaskTr
+ std::unique_ptr<HidService> HidService::Create() {
+ #if defined(OS_LINUX) && defined(USE_UDEV)
+ return base::WrapUnique(new HidServiceLinux());
++#elif defined(OS_BSD)
++ return base::WrapUnique(new HidServiceFreeBSD());
+ #elif defined(OS_MACOSX)
+ return base::WrapUnique(new HidServiceMac());
+ #elif defined(OS_WIN)
diff --git a/devel/electron5/files/patch-services_device_hid_hid__service__freebsd.cc b/devel/electron5/files/patch-services_device_hid_hid__service__freebsd.cc
new file mode 100644
index 000000000000..6cc08096cb33
--- /dev/null
+++ b/devel/electron5/files/patch-services_device_hid_hid__service__freebsd.cc
@@ -0,0 +1,376 @@
+--- services/device/hid/hid_service_freebsd.cc.orig 2019-04-09 12:48:48 UTC
++++ services/device/hid/hid_service_freebsd.cc
+@@ -0,0 +1,373 @@
++// Copyright 2014 The Chromium Authors. All rights reserved.
++// Use of this source code is governed by a BSD-style license that can be
++// found in the LICENSE file.
++
++#include "services/device/hid/hid_service_freebsd.h"
++
++#include <dev/usb/usb_ioctl.h>
++#include <stdint.h>
++#include <sys/socket.h>
++#include <sys/un.h>
++
++#include <set>
++#include <string>
++#include <vector>
++
++#include "base/bind.h"
++#include "base/files/file_descriptor_watcher_posix.h"
++#include "base/files/file_enumerator.h"
++#include "base/location.h"
++#include "base/logging.h"
++#include "base/posix/eintr_wrapper.h"
++#include "base/single_thread_task_runner.h"
++#include "base/stl_util.h"
++#include "base/strings/pattern.h"
++#include "base/strings/stringprintf.h"
++#include "base/strings/sys_string_conversions.h"
++#include "base/strings/string_util.h"
++#include "base/strings/string_split.h"
++#include "base/task/post_task.h"
++#include "base/threading/scoped_blocking_call.h"
++#include "base/threading/thread_task_runner_handle.h"
++#include "components/device_event_log/device_event_log.h"
++#include "services/device/hid/hid_connection_freebsd.h"
++
++const int kMaxPermissionChecks = 5;
++
++namespace device {
++
++struct HidServiceFreeBSD::ConnectParams {
++ ConnectParams(scoped_refptr<HidDeviceInfo> device_info,
++ const ConnectCallback& callback)
++ : device_info(std::move(device_info)),
++ callback(callback),
++ task_runner(base::ThreadTaskRunnerHandle::Get()),
++ blocking_task_runner(
++ base::CreateSequencedTaskRunnerWithTraits(kBlockingTaskTraits)) {}
++ ~ConnectParams() {}
++
++ scoped_refptr<HidDeviceInfo> device_info;
++ ConnectCallback callback;
++ scoped_refptr<base::SequencedTaskRunner> task_runner;
++ scoped_refptr<base::SequencedTaskRunner> blocking_task_runner;
++ base::ScopedFD fd;
++};
++
++class HidServiceFreeBSD::BlockingTaskHelper {
++ public:
++ BlockingTaskHelper(base::WeakPtr<HidServiceFreeBSD> service)
++ : service_(std::move(service)),
++ task_runner_(base::ThreadTaskRunnerHandle::Get()) {
++ DETACH_FROM_SEQUENCE(sequence_checker_);
++
++ timer_.reset(new base::RepeatingTimer());
++ devd_buffer_ = new net::IOBufferWithSize(1024);
++ }
++
++ ~BlockingTaskHelper() {
++ }
++
++ void Start() {
++ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
++
++ const base::FilePath kDevRoot("/dev");
++ const std::string kUHIDPattern("/dev/uhid*");
++
++ base::FileEnumerator enumerator(kDevRoot, false, base::FileEnumerator::FILES);
++ do {
++ const base::FilePath next_device_path(enumerator.Next());
++ const std::string next_device = next_device_path.value();
++ if (next_device.empty())
++ break;
++
++ if (base::MatchPattern(next_device, kUHIDPattern))
++ OnDeviceAdded(next_device.substr(5));
++ } while (true);
++
++ SetupDevdMonitor();
++
++ task_runner_->PostTask(
++ FROM_HERE,
++ base::Bind(&HidServiceFreeBSD::FirstEnumerationComplete, service_));
++ }
++
++ bool HaveReadWritePermissions(std::string device_id) {
++ std::string device_node = "/dev/" + device_id;
++ base::internal::AssertBlockingAllowed();
++
++ base::FilePath device_path(device_node);
++ base::File device_file;
++ int flags =
++ base::File::FLAG_OPEN | base::File::FLAG_READ | base::File::FLAG_WRITE;
++ device_file.Initialize(device_path, flags);
++ if (!device_file.IsValid())
++ return false;
++
++ return true;
++ }
++
++ void OnDeviceAdded(std::string device_id) {
++ base::ScopedBlockingCall scoped_blocking_call(
++ base::BlockingType::MAY_BLOCK);
++ std::string device_node = "/dev/" + device_id;
++ uint16_t vendor_id = 0xffff;
++ uint16_t product_id = 0xffff;
++ std::string product_name = "";
++ std::string serial_number = "";
++
++ std::vector<uint8_t> report_descriptor;
++
++ base::internal::AssertBlockingAllowed();
++
++ base::FilePath device_path(device_node);
++ base::File device_file;
++ int flags =
++ base::File::FLAG_OPEN | base::File::FLAG_READ | base::File::FLAG_WRITE;
++ device_file.Initialize(device_path, flags);
++ if (!device_file.IsValid()) {
++ HID_LOG(ERROR) << "Failed to open '" << device_node
++ << "': "
++ << base::File::ErrorToString(device_file.error_details());
++ return;
++ }
++
++ base::ScopedFD fd;
++ fd.reset(device_file.TakePlatformFile());
++
++ struct usb_gen_descriptor ugd;
++ ugd.ugd_data = NULL;
++ ugd.ugd_maxlen = 0xffff;
++ int result = HANDLE_EINTR(
++ ioctl(fd.get(), USB_GET_REPORT_DESC, &ugd));
++
++ if (result < 0) {
++ HID_LOG(ERROR) << "Failed to get report descriptor size";
++ return;
++ }
++
++ report_descriptor.resize(ugd.ugd_actlen);
++
++ ugd.ugd_data = report_descriptor.data();
++ ugd.ugd_maxlen = ugd.ugd_actlen;
++ result = HANDLE_EINTR(
++ ioctl(fd.get(), USB_GET_REPORT_DESC, &ugd));
++
++ if (result < 0) {
++ HID_LOG(ERROR) << "Failed to get report descriptor";
++ return;
++ }
++
++ scoped_refptr<HidDeviceInfo> device_info(new HidDeviceInfo(
++ device_id, vendor_id, product_id, product_name, serial_number,
++ device::mojom::HidBusType::kHIDBusTypeUSB,
++ report_descriptor, device_node));
++
++ task_runner_->PostTask(FROM_HERE, base::Bind(&HidServiceFreeBSD::AddDevice,
++ service_, device_info));
++ }
++
++ void OnDeviceRemoved(std::string device_id) {
++ base::ScopedBlockingCall scoped_blocking_call(
++ base::BlockingType::MAY_BLOCK);
++ task_runner_->PostTask(
++ FROM_HERE, base::Bind(&HidServiceFreeBSD::RemoveDevice, service_,
++ device_id));
++ }
++
++ private:
++
++ void CheckPendingPermissionChange() {
++ base::internal::AssertBlockingAllowed();
++ std::map<std::string, int>::iterator it;
++ for (it = permissions_checks_attempts_.begin(); it != permissions_checks_attempts_.end();) {
++ std::string device_name = it->first;
++ bool keep = true;
++ if (HaveReadWritePermissions(device_name)) {
++ OnDeviceAdded(device_name);
++ keep = false;
++ }
++ else if (it->second-- <= 0) {
++ HID_LOG(ERROR) << "Still don't have write permissions to '" << device_name
++ << "' after " << kMaxPermissionChecks << " attempts";
++ keep = false;
++ }
++
++ if (keep)
++ ++it;
++ else
++ permissions_checks_attempts_.erase(it++);
++ }
++
++ if (permissions_checks_attempts_.empty())
++ timer_->Stop();
++ }
++
++ void SetupDevdMonitor() {
++ base::internal::AssertBlockingAllowed();
++
++ int devd_fd = socket(AF_UNIX, SOCK_SEQPACKET, 0);
++ if (devd_fd < 0)
++ return;
++
++ struct sockaddr_un sa;
++
++ sa.sun_family = AF_UNIX;
++ strlcpy(sa.sun_path, "/var/run/devd.seqpacket.pipe", sizeof(sa.sun_path));
++ if (connect(devd_fd, (struct sockaddr *) &sa, sizeof(sa)) < 0) {
++ close(devd_fd);
++ return;
++ }
++
++ devd_fd_.reset(devd_fd);
++ file_watcher_ = base::FileDescriptorWatcher::WatchReadable(
++ devd_fd_.get(), base::Bind(&BlockingTaskHelper::OnDevdMessageCanBeRead,
++ base::Unretained(this)));
++ }
++
++ void OnDevdMessageCanBeRead() {
++ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
++ ssize_t bytes_read = HANDLE_EINTR(recv(devd_fd_.get(), devd_buffer_->data(),
++ devd_buffer_->size() - 1, MSG_WAITALL));
++ if (bytes_read < 0) {
++ if (errno != EAGAIN) {
++ HID_LOG(ERROR) << "Read failed";
++ file_watcher_.reset();
++ }
++ return;
++ }
++
++ devd_buffer_->data()[bytes_read] = 0;
++ char *data = devd_buffer_->data();
++ // It may take some time for devd to change permissions
++ // on /dev/uhidX node. So do not fail immediately if
++ // open fail. Retry each second for kMaxPermissionChecks
++ // times before giving up entirely
++ if (base::StartsWith(data, "+uhid", base::CompareCase::SENSITIVE)) {
++ std::vector<std::string> parts = base::SplitString(
++ data, " ", base::TRIM_WHITESPACE, base::SPLIT_WANT_ALL);
++ if (!parts.empty()) {
++ std::string device_name = parts[0].substr(1); // skip '+'
++ if (HaveReadWritePermissions(device_name))
++ OnDeviceAdded(parts[0].substr(1));
++ else {
++ // Do not re-add to checks
++ if (permissions_checks_attempts_.find(device_name) == permissions_checks_attempts_.end()) {
++ permissions_checks_attempts_.insert(std::pair<std::string, int>(device_name, kMaxPermissionChecks));
++ timer_->Start(FROM_HERE, base::TimeDelta::FromSeconds(1),
++ this, &BlockingTaskHelper::CheckPendingPermissionChange);
++ }
++ }
++ }
++ }
++
++ if (base::StartsWith(data, "-uhid", base::CompareCase::SENSITIVE)) {
++ std::vector<std::string> parts = base::SplitString(
++ data, " ", base::TRIM_WHITESPACE, base::SPLIT_WANT_ALL);
++ if (!parts.empty()) {
++ std::string device_name = parts[0].substr(1); // skip '-'
++ auto it = permissions_checks_attempts_.find(device_name);
++ if (it != permissions_checks_attempts_.end()) {
++ permissions_checks_attempts_.erase(it);
++ if (permissions_checks_attempts_.empty())
++ timer_->Stop();
++ }
++ OnDeviceRemoved(parts[0].substr(1));
++ }
++ }
++ }
++
++ SEQUENCE_CHECKER(sequence_checker_);
++
++ // This weak pointer is only valid when checked on this task runner.
++ base::WeakPtr<HidServiceFreeBSD> service_;
++ scoped_refptr<base::SequencedTaskRunner> task_runner_;
++ std::unique_ptr<base::FileDescriptorWatcher::Controller> file_watcher_;
++ std::unique_ptr<base::RepeatingTimer> timer_;
++ base::ScopedFD devd_fd_;
++ scoped_refptr<net::IOBufferWithSize> devd_buffer_;
++ std::map<std::string, int> permissions_checks_attempts_;
++
++ DISALLOW_COPY_AND_ASSIGN(BlockingTaskHelper);
++};
++
++HidServiceFreeBSD::HidServiceFreeBSD()
++ : task_runner_(base::ThreadTaskRunnerHandle::Get()),
++ blocking_task_runner_(
++ base::CreateSequencedTaskRunnerWithTraits(kBlockingTaskTraits)),
++ weak_factory_(this) {
++ helper_ = std::make_unique<BlockingTaskHelper>(weak_factory_.GetWeakPtr());
++ blocking_task_runner_->PostTask(
++ FROM_HERE,
++ base::Bind(&BlockingTaskHelper::Start, base::Unretained(helper_.get())));
++}
++
++HidServiceFreeBSD::~HidServiceFreeBSD() {
++ blocking_task_runner_->DeleteSoon(FROM_HERE, helper_.release());
++}
++
++base::WeakPtr<HidService> HidServiceFreeBSD::GetWeakPtr() {
++ return weak_factory_.GetWeakPtr();
++}
++
++// static
++void HidServiceFreeBSD::OpenOnBlockingThread(
++ std::unique_ptr<ConnectParams> params) {
++ base::ScopedBlockingCall scoped_blocking_call(base::BlockingType::MAY_BLOCK);
++ scoped_refptr<base::SequencedTaskRunner> task_runner = params->task_runner;
++
++ base::FilePath device_path(params->device_info->device_node());
++ base::File device_file;
++ int flags =
++ base::File::FLAG_OPEN | base::File::FLAG_READ | base::File::FLAG_WRITE;
++ device_file.Initialize(device_path, flags);
++ if (!device_file.IsValid()) {
++ HID_LOG(EVENT) << "Failed to open '" << params->device_info->device_node()
++ << "': "
++ << base::File::ErrorToString(device_file.error_details());
++ task_runner->PostTask(FROM_HERE, base::Bind(params->callback, nullptr));
++ return;
++ }
++ params->fd.reset(device_file.TakePlatformFile());
++ FinishOpen(std::move(params));
++}
++
++void HidServiceFreeBSD::Connect(const std::string& device_guid,
++ const ConnectCallback& callback) {
++ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
++
++ const auto& map_entry = devices().find(device_guid);
++ if (map_entry == devices().end()) {
++ base::ThreadTaskRunnerHandle::Get()->PostTask(
++ FROM_HERE, base::Bind(callback, nullptr));
++ return;
++ }
++
++ scoped_refptr<HidDeviceInfo> device_info = map_entry->second;
++
++ auto params = std::make_unique<ConnectParams>(device_info, callback);
++
++ scoped_refptr<base::SequencedTaskRunner> blocking_task_runner =
++ params->blocking_task_runner;
++ blocking_task_runner->PostTask(
++ FROM_HERE, base::Bind(&HidServiceFreeBSD::OpenOnBlockingThread,
++ base::Passed(&params)));
++}
++
++// static
++void HidServiceFreeBSD::FinishOpen(std::unique_ptr<ConnectParams> params) {
++ scoped_refptr<base::SequencedTaskRunner> task_runner = params->task_runner;
++
++ task_runner->PostTask(
++ FROM_HERE,
++ base::Bind(&HidServiceFreeBSD::CreateConnection, base::Passed(&params)));
++}
++
++// static
++void HidServiceFreeBSD::CreateConnection(std::unique_ptr<ConnectParams> params) {
++ DCHECK(params->fd.is_valid());
++ params->callback.Run(base::MakeRefCounted<HidConnectionFreeBSD>(
++ std::move(params->device_info), std::move(params->fd),
++ std::move(params->blocking_task_runner)));
++}
++
++} // namespace device
diff --git a/devel/electron5/files/patch-services_device_hid_hid__service__freebsd.h b/devel/electron5/files/patch-services_device_hid_hid__service__freebsd.h
new file mode 100644
index 000000000000..74113a6fec3e
--- /dev/null
+++ b/devel/electron5/files/patch-services_device_hid_hid__service__freebsd.h
@@ -0,0 +1,51 @@
+--- services/device/hid/hid_service_freebsd.h.orig 2019-04-09 12:48:48 UTC
++++ services/device/hid/hid_service_freebsd.h
+@@ -0,0 +1,48 @@
++// Copyright 2014 The Chromium Authors. All rights reserved.
++// Use of this source code is governed by a BSD-style license that can be
++// found in the LICENSE file.
++
++#ifndef DEVICE_HID_HID_SERVICE_FREEBSD_H_
++#define DEVICE_HID_HID_SERVICE_FREEBSD_H_
++
++#include <string>
++
++#include "base/macros.h"
++#include "base/memory/ref_counted.h"
++#include "base/memory/weak_ptr.h"
++#include "base/timer/timer.h"
++#include "services/device/hid/hid_service.h"
++#include "net/base/io_buffer.h"
++
++namespace device {
++
++class HidServiceFreeBSD : public HidService {
++ public:
++ HidServiceFreeBSD();
++ ~HidServiceFreeBSD() override;
++
++ void Connect(const std::string& device_guid,
++ const ConnectCallback& connect) override;
++ base::WeakPtr<HidService> GetWeakPtr() override;
++
++ private:
++ struct ConnectParams;
++ class BlockingTaskHelper;
++
++ static void OpenOnBlockingThread(std::unique_ptr<ConnectParams> params);
++ static void FinishOpen(std::unique_ptr<ConnectParams> params);
++ static void CreateConnection(std::unique_ptr<ConnectParams> params);
++
++ const scoped_refptr<base::SequencedTaskRunner> task_runner_;
++ const scoped_refptr<base::SequencedTaskRunner> blocking_task_runner_;
++ // |helper_| lives on the sequence |blocking_task_runner_| posts to and holds
++ // a weak reference back to the service that owns it.
++ std::unique_ptr<BlockingTaskHelper> helper_;
++ base::WeakPtrFactory<HidServiceFreeBSD> weak_factory_;
++
++ DISALLOW_COPY_AND_ASSIGN(HidServiceFreeBSD);
++};
++
++} // namespace device
++
++#endif // DEVICE_HID_HID_SERVICE_FREEBSD_H_
diff --git a/devel/electron5/files/patch-services_device_serial_BUILD.gn b/devel/electron5/files/patch-services_device_serial_BUILD.gn
new file mode 100644
index 000000000000..5c0d7ebd3a7f
--- /dev/null
+++ b/devel/electron5/files/patch-services_device_serial_BUILD.gn
@@ -0,0 +1,11 @@
+--- services/device/serial/BUILD.gn.orig 2019-04-08 08:33:02 UTC
++++ services/device/serial/BUILD.gn
+@@ -4,7 +4,7 @@
+
+ import("//build/config/features.gni")
+
+-if (is_win || (is_linux && use_udev) || is_mac) {
++if (is_win || (is_linux && use_udev) || is_mac || is_bsd) {
+ config("platform_support") {
+ visibility = [ ":serial" ]
+ if (is_win) {
diff --git a/devel/electron5/files/patch-services_device_serial_serial__io__handler__posix.cc b/devel/electron5/files/patch-services_device_serial_serial__io__handler__posix.cc
new file mode 100644
index 000000000000..8c06b77ca7f7
--- /dev/null
+++ b/devel/electron5/files/patch-services_device_serial_serial__io__handler__posix.cc
@@ -0,0 +1,11 @@
+--- services/device/serial/serial_io_handler_posix.cc.orig 2019-04-08 08:33:02 UTC
++++ services/device/serial/serial_io_handler_posix.cc
+@@ -65,7 +65,7 @@ bool BitrateToSpeedConstant(int bitrate, speed_t* spee
+ BITRATE_TO_SPEED_CASE(9600)
+ BITRATE_TO_SPEED_CASE(19200)
+ BITRATE_TO_SPEED_CASE(38400)
+-#if !defined(OS_MACOSX)
++#if !defined(OS_MACOSX) && !defined(OS_BSD)
+ BITRATE_TO_SPEED_CASE(57600)
+ BITRATE_TO_SPEED_CASE(115200)
+ BITRATE_TO_SPEED_CASE(230400)
diff --git a/devel/electron5/files/patch-services_device_time__zone__monitor_time__zone__monitor.cc b/devel/electron5/files/patch-services_device_time__zone__monitor_time__zone__monitor.cc
new file mode 100644
index 000000000000..85f64b960194
--- /dev/null
+++ b/devel/electron5/files/patch-services_device_time__zone__monitor_time__zone__monitor.cc
@@ -0,0 +1,20 @@
+--- services/device/time_zone_monitor/time_zone_monitor.cc.orig 2019-04-08 08:18:26 UTC
++++ services/device/time_zone_monitor/time_zone_monitor.cc
+@@ -29,7 +29,7 @@ void TimeZoneMonitor::Bind(device::mojom::TimeZoneMoni
+
+ void TimeZoneMonitor::NotifyClients() {
+ DCHECK(thread_checker_.CalledOnValidThread());
+-#if defined(OS_CHROMEOS) || (defined(OS_LINUX) && defined(IS_CHROMECAST))
++#if defined(OS_CHROMEOS) || ((defined(OS_BSD) || defined(OS_LINUX)) && defined(IS_CHROMECAST))
+ // On CrOS (and Chromecast), ICU's default tz is already set to a new zone. No
+ // need to redetect it with detectHostTimeZone().
+ std::unique_ptr<icu::TimeZone> new_zone(icu::TimeZone::createDefault());
+@@ -41,7 +41,7 @@ void TimeZoneMonitor::NotifyClients() {
+ #else
+ std::unique_ptr<icu::TimeZone> new_zone(icu::TimeZone::detectHostTimeZone());
+ #endif
+-#if defined(OS_LINUX) && !defined(IS_CHROMECAST)
++#if (defined(OS_LINUX) && !defined(IS_CHROMECAST)) || defined(OS_BSD)
+ // We get here multiple times on Linux per a single tz change, but
+ // want to update the ICU default zone and notify renderer only once.
+ std::unique_ptr<icu::TimeZone> current_zone(icu::TimeZone::createDefault());
diff --git a/devel/electron5/files/patch-services_device_time__zone__monitor_time__zone__monitor__linux.cc b/devel/electron5/files/patch-services_device_time__zone__monitor_time__zone__monitor__linux.cc
new file mode 100644
index 000000000000..e24de2d95c5c
--- /dev/null
+++ b/devel/electron5/files/patch-services_device_time__zone__monitor_time__zone__monitor__linux.cc
@@ -0,0 +1,14 @@
+--- services/device/time_zone_monitor/time_zone_monitor_linux.cc.orig 2019-04-08 08:33:02 UTC
++++ services/device/time_zone_monitor/time_zone_monitor_linux.cc
+@@ -104,7 +104,11 @@ class TimeZoneMonitorLinuxImpl
+ // false positives are harmless, assuming the false positive rate is
+ // reasonable.
+ const char* const kFilesToWatch[] = {
++#if defined(OS_BSD)
++ "/etc/localtime",
++#else
+ "/etc/localtime", "/etc/timezone", "/etc/TZ",
++#endif
+ };
+ for (size_t index = 0; index < base::size(kFilesToWatch); ++index) {
+ file_path_watchers_.push_back(std::make_unique<base::FilePathWatcher>());
diff --git a/devel/electron5/files/patch-services_network_BUILD.gn b/devel/electron5/files/patch-services_network_BUILD.gn
new file mode 100644
index 000000000000..81fdc4b77154
--- /dev/null
+++ b/devel/electron5/files/patch-services_network_BUILD.gn
@@ -0,0 +1,10 @@
+--- services/network/BUILD.gn.orig 2019-04-08 08:33:02 UTC
++++ services/network/BUILD.gn
+@@ -248,7 +248,6 @@ jumbo_component("network_service") {
+
+ if (is_linux) {
+ deps += [
+- "//sandbox/linux:sandbox_services",
+ "//services/service_manager/sandbox:sandbox",
+ ]
+ }
diff --git a/devel/electron5/files/patch-services_network_network__context.cc b/devel/electron5/files/patch-services_network_network__context.cc
new file mode 100644
index 000000000000..de3dfcd32138
--- /dev/null
+++ b/devel/electron5/files/patch-services_network_network__context.cc
@@ -0,0 +1,38 @@
+--- services/network/network_context.cc.orig 2019-04-08 08:33:02 UTC
++++ services/network/network_context.cc
+@@ -132,7 +132,7 @@
+ #endif // defined(USE_NSS_CERTS)
+
+ #if defined(OS_ANDROID) || defined(OS_FUCHSIA) || \
+- (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_MACOSX)
++ ((defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS)) || defined(OS_MACOSX)
+ #include "net/cert/cert_net_fetcher.h"
+ #include "net/cert_net/cert_net_fetcher_impl.h"
+ #endif
+@@ -610,7 +610,7 @@ NetworkContext::~NetworkContext() {
+ #endif
+
+ #if defined(OS_ANDROID) || defined(OS_FUCHSIA) || \
+- (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_MACOSX)
++ ((defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS)) || defined(OS_MACOSX)
+ net::ShutdownGlobalCertNetFetcher();
+ #endif
+ }
+@@ -1700,7 +1700,7 @@ URLRequestContextOwner NetworkContext::ApplyContextPar
+
+ net::CookieCryptoDelegate* crypto_delegate = nullptr;
+ if (params_->enable_encrypted_cookies) {
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) && !defined(IS_CHROMECAST)
++#if (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS) && !defined(IS_CHROMECAST)
+ DCHECK(network_service_->os_crypt_config_set())
+ << "NetworkService::SetCryptConfig must be called before creating a "
+ "NetworkContext with encrypted cookies.";
+@@ -2015,7 +2015,7 @@ URLRequestContextOwner NetworkContext::ApplyContextPar
+ net::SetURLRequestContextForNSSHttpIO(result.url_request_context.get());
+ #endif
+ #if defined(OS_ANDROID) || defined(OS_FUCHSIA) || \
+- (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_MACOSX)
++ ((defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS)) || defined(OS_MACOSX)
+ net::SetGlobalCertNetFetcher(
+ net::CreateCertNetFetcher(result.url_request_context.get()));
+ #endif
diff --git a/devel/electron5/files/patch-services_network_network__sandbox__hook__linux.cc b/devel/electron5/files/patch-services_network_network__sandbox__hook__linux.cc
new file mode 100644
index 000000000000..4ad9e94f2116
--- /dev/null
+++ b/devel/electron5/files/patch-services_network_network__sandbox__hook__linux.cc
@@ -0,0 +1,18 @@
+--- services/network/network_sandbox_hook_linux.cc.orig 2019-04-08 08:18:26 UTC
++++ services/network/network_sandbox_hook_linux.cc
+@@ -14,6 +14,7 @@ using sandbox::syscall_broker::MakeBrokerCommandSet;
+ namespace network {
+
+ bool NetworkPreSandboxHook(service_manager::SandboxLinux::Options options) {
++#if !defined(OS_BSD)
+ auto* instance = service_manager::SandboxLinux::GetInstance();
+
+ // TODO(tsepez): remove universal permission under filesytem root.
+@@ -32,6 +33,7 @@ bool NetworkPreSandboxHook(service_manager::SandboxLin
+ service_manager::SandboxLinux::PreSandboxHook(), options);
+
+ instance->EngageNamespaceSandboxIfPossible();
++#endif // defined(OS_BSD)
+ return true;
+ }
+
diff --git a/devel/electron5/files/patch-services_network_network__service.cc b/devel/electron5/files/patch-services_network_network__service.cc
new file mode 100644
index 000000000000..411722a98c1c
--- /dev/null
+++ b/devel/electron5/files/patch-services_network_network__service.cc
@@ -0,0 +1,20 @@
+--- services/network/network_service.cc.orig 2019-04-08 08:33:02 UTC
++++ services/network/network_service.cc
+@@ -61,7 +61,7 @@
+ #include "third_party/boringssl/src/include/openssl/cpu.h"
+ #endif
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) && !defined(IS_CHROMECAST)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS) && !defined(IS_CHROMECAST)) || defined(OS_BSD)
+ #include "components/os_crypt/key_storage_config_linux.h"
+ #endif
+
+@@ -605,7 +605,7 @@ void NetworkService::OnCertDBChanged() {
+ net::CertDatabase::GetInstance()->NotifyObserversCertDBChanged();
+ }
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ void NetworkService::SetCryptConfig(mojom::CryptConfigPtr crypt_config) {
+ #if !defined(IS_CHROMECAST)
+ DCHECK(!os_crypt_config_set_);
diff --git a/devel/electron5/files/patch-services_network_network__service.h b/devel/electron5/files/patch-services_network_network__service.h
new file mode 100644
index 000000000000..5307f12a689f
--- /dev/null
+++ b/devel/electron5/files/patch-services_network_network__service.h
@@ -0,0 +1,11 @@
+--- services/network/network_service.h.orig 2019-04-08 08:33:02 UTC
++++ services/network/network_service.h
+@@ -186,7 +186,7 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) NetworkService
+ #endif // !BUILDFLAG(IS_CT_SUPPORTED)
+ void UpdateCRLSet(base::span<const uint8_t> crl_set) override;
+ void OnCertDBChanged() override;
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ void SetCryptConfig(mojom::CryptConfigPtr crypt_config) override;
+ #endif
+ #if defined(OS_MACOSX) && !defined(OS_IOS)
diff --git a/devel/electron5/files/patch-services_resource__coordinator_public_cpp_memory__instrumentation_os__metrics.h b/devel/electron5/files/patch-services_resource__coordinator_public_cpp_memory__instrumentation_os__metrics.h
new file mode 100644
index 000000000000..d66877b139bc
--- /dev/null
+++ b/devel/electron5/files/patch-services_resource__coordinator_public_cpp_memory__instrumentation_os__metrics.h
@@ -0,0 +1,14 @@
+--- services/resource_coordinator/public/cpp/memory_instrumentation/os_metrics.h.orig 2019-04-08 08:33:03 UTC
++++ services/resource_coordinator/public/cpp/memory_instrumentation/os_metrics.h
+@@ -26,9 +26,9 @@ class COMPONENT_EXPORT(
+ mojom::RawOSMemDump*);
+ static std::vector<mojom::VmRegionPtr> GetProcessMemoryMaps(base::ProcessId);
+
+-#if defined(OS_LINUX) || defined(OS_ANDROID)
++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
+ static void SetProcSmapsForTesting(FILE*);
+-#endif // defined(OS_LINUX) || defined(OS_ANDROID)
++#endif // defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
+
+ private:
+ FRIEND_TEST_ALL_PREFIXES(OSMetricsTest, ParseProcSmaps);
diff --git a/devel/electron5/files/patch-services_resource__coordinator_public_cpp_memory__instrumentation_os__metrics__linux.cc b/devel/electron5/files/patch-services_resource__coordinator_public_cpp_memory__instrumentation_os__metrics__linux.cc
new file mode 100644
index 000000000000..4aef77c49f4b
--- /dev/null
+++ b/devel/electron5/files/patch-services_resource__coordinator_public_cpp_memory__instrumentation_os__metrics__linux.cc
@@ -0,0 +1,80 @@
+--- services/resource_coordinator/public/cpp/memory_instrumentation/os_metrics_linux.cc.orig 2019-04-08 08:33:03 UTC
++++ services/resource_coordinator/public/cpp/memory_instrumentation/os_metrics_linux.cc
+@@ -17,8 +17,10 @@
+ #include "build/build_config.h"
+ #include "services/resource_coordinator/public/cpp/memory_instrumentation/os_metrics.h"
+
++#if !defined(OS_BSD)
+ // Symbol with virtual address of the start of ELF header of the current binary.
+ extern char __ehdr_start;
++#endif
+
+ namespace memory_instrumentation {
+
+@@ -67,6 +69,7 @@ struct ModuleData {
+
+ ModuleData GetMainModuleData() {
+ ModuleData module_data;
++#if !defined(OS_BSD)
+ Dl_info dl_info;
+ if (dladdr(&__ehdr_start, &dl_info)) {
+ base::Optional<std::string> build_id =
+@@ -76,6 +79,7 @@ ModuleData GetMainModuleData() {
+ module_data.build_id = *build_id;
+ }
+ }
++#endif
+ return module_data;
+ }
+
+@@ -123,14 +127,14 @@ bool ParseSmapsHeader(const char* header_line,
+ // Build ID is needed to symbolize heap profiles, and is generated only on
+ // official builds. Build ID is only added for the current library (chrome)
+ // since it is racy to read other libraries which can be unmapped any time.
+-#if defined(OFFICIAL_BUILD)
++#if defined(OFFICIAL_BUILD) && !defined(OS_BSD)
+ if (!region->mapped_file.empty() &&
+ base::StartsWith(main_module_data.path, region->mapped_file,
+ base::CompareCase::SENSITIVE) &&
+ !main_module_data.build_id.empty()) {
+ region->module_debugid = main_module_data.build_id;
+ }
+-#endif // defined(OFFICIAL_BUILD)
++#endif // defined(OFFICIAL_BUILD) && !defined(OS_BSD)
+
+ return res;
+ }
+@@ -217,6 +221,9 @@ void OSMetrics::SetProcSmapsForTesting(FILE* f) {
+ // static
+ bool OSMetrics::FillOSMemoryDump(base::ProcessId pid,
+ mojom::RawOSMemDump* dump) {
++#if defined(OS_BSD)
++ return false;
++#else
+ base::ScopedFD autoclose = OpenStatm(pid);
+ int statm_fd = autoclose.get();
+
+@@ -242,10 +249,12 @@ bool OSMetrics::FillOSMemoryDump(base::ProcessId pid,
+ dump->resident_set_kb = process_metrics->GetResidentSetSize() / 1024;
+
+ return true;
++#endif
+ }
+
+ // static
+ std::vector<VmRegionPtr> OSMetrics::GetProcessMemoryMaps(base::ProcessId pid) {
++#if defined(OS_BSD)
+ std::vector<VmRegionPtr> maps;
+ uint32_t res = 0;
+ if (g_proc_smaps_for_testing) {
+@@ -263,6 +272,10 @@ std::vector<VmRegionPtr> OSMetrics::GetProcessMemoryMa
+ return std::vector<VmRegionPtr>();
+
+ return maps;
++#else
++ NOTIMPLEMENTED();
++ return std::vector<VmRegionPtr>();
++#endif
+ }
+
+ } // namespace memory_instrumentation
diff --git a/devel/electron5/files/patch-services_service__manager_embedder_main.cc b/devel/electron5/files/patch-services_service__manager_embedder_main.cc
new file mode 100644
index 000000000000..00d4deb34b71
--- /dev/null
+++ b/devel/electron5/files/patch-services_service__manager_embedder_main.cc
@@ -0,0 +1,11 @@
+--- services/service_manager/embedder/main.cc.orig 2019-04-08 08:33:03 UTC
++++ services/service_manager/embedder/main.cc
+@@ -320,7 +320,7 @@ int Main(const MainParams& params) {
+ #endif
+ base::EnableTerminationOnOutOfMemory();
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // The various desktop environments set this environment variable that
+ // allows the dbus client library to connect directly to the bus. When this
+ // variable is not set (test environments like xvfb-run), the dbus client
diff --git a/devel/electron5/files/patch-services_service__manager_embedder_set__process__title__linux.cc b/devel/electron5/files/patch-services_service__manager_embedder_set__process__title__linux.cc
new file mode 100644
index 000000000000..804e4a124e26
--- /dev/null
+++ b/devel/electron5/files/patch-services_service__manager_embedder_set__process__title__linux.cc
@@ -0,0 +1,19 @@
+--- services/service_manager/embedder/set_process_title_linux.cc.orig 2019-04-08 08:18:26 UTC
++++ services/service_manager/embedder/set_process_title_linux.cc
+@@ -49,6 +49,8 @@
+ extern char** environ;
+
+ static char** g_main_argv = NULL;
++
++#if !defined(OS_FREEBSD)
+ static char* g_orig_argv0 = NULL;
+
+ void setproctitle(const char* fmt, ...) {
+@@ -101,6 +103,7 @@ void setproctitle(const char* fmt, ...) {
+ va_end(ap);
+ g_main_argv[1] = NULL;
+ }
++#endif
+
+ // A version of this built into glibc would not need this function, since
+ // it could stash the argv pointer in __libc_start_main(). But we need it.
diff --git a/devel/electron5/files/patch-services_service__manager_embedder_set__process__title__linux.h b/devel/electron5/files/patch-services_service__manager_embedder_set__process__title__linux.h
new file mode 100644
index 000000000000..e3c7708c7be5
--- /dev/null
+++ b/devel/electron5/files/patch-services_service__manager_embedder_set__process__title__linux.h
@@ -0,0 +1,20 @@
+--- services/service_manager/embedder/set_process_title_linux.h.orig 2019-04-08 08:18:26 UTC
++++ services/service_manager/embedder/set_process_title_linux.h
+@@ -5,6 +5,9 @@
+ #ifndef SERVICES_SERVICE_MANAGER_EMBEDDER_SET_PROCESS_TITLE_LINUX_H_
+ #define SERVICES_SERVICE_MANAGER_EMBEDDER_SET_PROCESS_TITLE_LINUX_H_
+
++#include "build/build_config.h"
++
++#if !defined(OS_FREEBSD)
+ // Set the process title that will show in "ps" and similar tools. Takes
+ // printf-style format string and arguments. After calling setproctitle()
+ // the original main() argv[] array should not be used. By default, the
+@@ -14,6 +17,7 @@
+ // This signature and naming is to be compatible with most other Unix
+ // implementations of setproctitle().
+ void setproctitle(const char* fmt, ...);
++#endif
+
+ // Initialize state needed for setproctitle() on Linux. Pass the argv pointer
+ // from main() to setproctitle_init() before calling setproctitle().
diff --git a/devel/electron5/files/patch-services_service__manager_public_cpp_service__executable_BUILD.gn b/devel/electron5/files/patch-services_service__manager_public_cpp_service__executable_BUILD.gn
new file mode 100644
index 000000000000..30bd68867a08
--- /dev/null
+++ b/devel/electron5/files/patch-services_service__manager_public_cpp_service__executable_BUILD.gn
@@ -0,0 +1,14 @@
+--- services/service_manager/public/cpp/service_executable/BUILD.gn.orig 2019-04-08 08:33:03 UTC
++++ services/service_manager/public/cpp/service_executable/BUILD.gn
+@@ -30,6 +30,11 @@ source_set("support") {
+ "//sandbox/linux:seccomp_bpf",
+ ]
+ }
++ if (is_bsd) {
++ deps -= [
++ "//sandbox/linux:seccomp_bpf"
++ ]
++ }
+ }
+
+ # Service executable targets should link against this to get a boilerplate entry
diff --git a/devel/electron5/files/patch-services_service__manager_runner_host_BUILD.gn b/devel/electron5/files/patch-services_service__manager_runner_host_BUILD.gn
new file mode 100644
index 000000000000..7d72747dadb8
--- /dev/null
+++ b/devel/electron5/files/patch-services_service__manager_runner_host_BUILD.gn
@@ -0,0 +1,11 @@
+--- services/service_manager/runner/host/BUILD.gn.orig 2019-04-08 08:33:03 UTC
++++ services/service_manager/runner/host/BUILD.gn
+@@ -30,7 +30,7 @@ source_set("lib") {
+ "//mojo/public/cpp/system",
+ ]
+
+- if (is_linux) {
++ if (is_linux && !is_bsd) {
+ deps += [ "//sandbox/linux:sandbox_services" ]
+ }
+
diff --git a/devel/electron5/files/patch-services_service__manager_sandbox_BUILD.gn b/devel/electron5/files/patch-services_service__manager_sandbox_BUILD.gn
new file mode 100644
index 000000000000..9d157b9e22e7
--- /dev/null
+++ b/devel/electron5/files/patch-services_service__manager_sandbox_BUILD.gn
@@ -0,0 +1,11 @@
+--- services/service_manager/sandbox/BUILD.gn.orig 2019-04-08 08:18:26 UTC
++++ services/service_manager/sandbox/BUILD.gn
+@@ -28,7 +28,7 @@ component("sandbox") {
+ "//base",
+ "//sandbox:common",
+ ]
+- if (is_linux) {
++ if (is_linux && !is_bsd) {
+ sources += [
+ "linux/bpf_audio_policy_linux.cc",
+ "linux/bpf_audio_policy_linux.h",
diff --git a/devel/electron5/files/patch-services_service__manager_sandbox_sandbox__type.cc b/devel/electron5/files/patch-services_service__manager_sandbox_sandbox__type.cc
new file mode 100644
index 000000000000..dedc7c871451
--- /dev/null
+++ b/devel/electron5/files/patch-services_service__manager_sandbox_sandbox__type.cc
@@ -0,0 +1,11 @@
+--- services/service_manager/sandbox/sandbox_type.cc.orig 2019-04-08 08:18:26 UTC
++++ services/service_manager/sandbox/sandbox_type.cc
+@@ -25,7 +25,7 @@ bool IsUnsandboxedSandboxType(SandboxType sandbox_type
+ service_manager::features::kXRSandbox);
+ #endif
+ case SANDBOX_TYPE_AUDIO:
+-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+ return !base::FeatureList::IsEnabled(
+ service_manager::features::kAudioServiceSandbox);
+ #else
diff --git a/devel/electron5/files/patch-services_service__manager_zygote_common_zygote__features.gni b/devel/electron5/files/patch-services_service__manager_zygote_common_zygote__features.gni
new file mode 100644
index 000000000000..2f9368bc966e
--- /dev/null
+++ b/devel/electron5/files/patch-services_service__manager_zygote_common_zygote__features.gni
@@ -0,0 +1,8 @@
+--- services/service_manager/zygote/common/zygote_features.gni.orig 2019-04-08 08:18:26 UTC
++++ services/service_manager/zygote/common/zygote_features.gni
+@@ -2,4 +2,4 @@
+ # Use of this source code is governed by a BSD-style license that can be
+ # found in the LICENSE file.
+
+-use_zygote_handle = is_posix && !is_android && !is_mac
++use_zygote_handle = is_posix && !is_android && !is_mac && !is_bsd
diff --git a/devel/electron5/files/patch-services_service__manager_zygote_host_zygote__host__impl__linux.cc b/devel/electron5/files/patch-services_service__manager_zygote_host_zygote__host__impl__linux.cc
new file mode 100644
index 000000000000..b699a32d8001
--- /dev/null
+++ b/devel/electron5/files/patch-services_service__manager_zygote_host_zygote__host__impl__linux.cc
@@ -0,0 +1,40 @@
+--- services/service_manager/zygote/host/zygote_host_impl_linux.cc.orig 2019-04-08 08:33:03 UTC
++++ services/service_manager/zygote/host/zygote_host_impl_linux.cc
+@@ -72,6 +72,7 @@ ZygoteHostImpl* ZygoteHostImpl::GetInstance() {
+ }
+
+ void ZygoteHostImpl::Init(const base::CommandLine& command_line) {
++#if !defined(OS_BSD)
+ if (command_line.HasSwitch(service_manager::switches::kNoSandbox)) {
+ return;
+ }
+@@ -122,6 +123,7 @@ void ZygoteHostImpl::Init(const base::CommandLine& com
+ "you can try using --"
+ << service_manager::switches::kNoSandbox << ".";
+ }
++#endif
+ }
+
+ void ZygoteHostImpl::AddZygotePid(pid_t pid) {
+@@ -146,6 +148,7 @@ pid_t ZygoteHostImpl::LaunchZygote(
+ base::CommandLine* cmd_line,
+ base::ScopedFD* control_fd,
+ base::FileHandleMappingVector additional_remapped_fds) {
++#if !defined(OS_BSD)
+ int fds[2];
+ CHECK_EQ(0, socketpair(AF_UNIX, SOCK_SEQPACKET, 0, fds));
+ CHECK(base::UnixDomainSocket::EnableReceiveProcessId(fds[0]));
+@@ -210,9 +213,12 @@ pid_t ZygoteHostImpl::LaunchZygote(
+
+ AddZygotePid(pid);
+ return pid;
++#else
++ return 0;
++#endif
+ }
+
+-#if !defined(OS_OPENBSD)
++#if !defined(OS_BSD)
+ void ZygoteHostImpl::AdjustRendererOOMScore(base::ProcessHandle pid,
+ int score) {
+ // 1) You can't change the oom_score_adj of a non-dumpable process
diff --git a/devel/electron5/files/patch-services_service__manager_zygote_host_zygote__host__impl__linux.h b/devel/electron5/files/patch-services_service__manager_zygote_host_zygote__host__impl__linux.h
new file mode 100644
index 000000000000..1e9b6ea59d20
--- /dev/null
+++ b/devel/electron5/files/patch-services_service__manager_zygote_host_zygote__host__impl__linux.h
@@ -0,0 +1,13 @@
+--- services/service_manager/zygote/host/zygote_host_impl_linux.h.orig 2019-04-08 08:18:26 UTC
++++ services/service_manager/zygote/host/zygote_host_impl_linux.h
+@@ -44,8 +44,10 @@ class COMPONENT_EXPORT(SERVICE_MANAGER_ZYGOTE) ZygoteH
+ base::ScopedFD* control_fd,
+ base::FileHandleMappingVector additional_remapped_fds);
+
++#if !defined(OS_BSD)
+ void AdjustRendererOOMScore(base::ProcessHandle process_handle,
+ int score) override;
++#endif
+ bool HasZygote() { return !zygote_pids_.empty(); }
+
+ private:
diff --git a/devel/electron5/files/patch-services_service__manager_zygote_zygote__host__linux.h b/devel/electron5/files/patch-services_service__manager_zygote_zygote__host__linux.h
new file mode 100644
index 000000000000..66040b07548b
--- /dev/null
+++ b/devel/electron5/files/patch-services_service__manager_zygote_zygote__host__linux.h
@@ -0,0 +1,16 @@
+--- services/service_manager/zygote/zygote_host_linux.h.orig 2019-04-08 08:18:26 UTC
++++ services/service_manager/zygote/zygote_host_linux.h
+@@ -30,11 +30,13 @@ class ZygoteHost {
+ // after the first render has been forked.
+ virtual int GetRendererSandboxStatus() const = 0;
+
++#if !defined(OS_BSD)
+ // Adjust the OOM score of the given renderer's PID. The allowed
+ // range for the score is [0, 1000], where higher values are more
+ // likely to be killed by the OOM killer.
+ virtual void AdjustRendererOOMScore(base::ProcessHandle process_handle,
+ int score) = 0;
++#endif
+ };
+
+ } // namespace service_manager
diff --git a/devel/electron5/files/patch-services_service__manager_zygote_zygote__linux.cc b/devel/electron5/files/patch-services_service__manager_zygote_zygote__linux.cc
new file mode 100644
index 000000000000..929073a78dbb
--- /dev/null
+++ b/devel/electron5/files/patch-services_service__manager_zygote_zygote__linux.cc
@@ -0,0 +1,15 @@
+--- services/service_manager/zygote/zygote_linux.cc.orig 2019-04-08 08:33:03 UTC
++++ services/service_manager/zygote/zygote_linux.cc
+@@ -1,6 +1,7 @@
+ // Copyright (c) 2012 The Chromium Authors. All rights reserved.
+ // Use of this source code is governed by a BSD-style license that can be
+ // found in the LICENSE file.
++#if 0
+
+ #include "services/service_manager/zygote/zygote_linux.h"
+
+@@ -664,3 +665,4 @@ bool Zygote::HandleGetSandboxStatus(int fd, base::Pick
+ }
+
+ } // namespace service_manager
++#endif
diff --git a/devel/electron5/files/patch-services_service__manager_zygote_zygote__main__linux.cc b/devel/electron5/files/patch-services_service__manager_zygote_zygote__main__linux.cc
new file mode 100644
index 000000000000..eaef4b039d37
--- /dev/null
+++ b/devel/electron5/files/patch-services_service__manager_zygote_zygote__main__linux.cc
@@ -0,0 +1,48 @@
+--- services/service_manager/zygote/zygote_main_linux.cc.orig 2019-04-08 08:18:26 UTC
++++ services/service_manager/zygote/zygote_main_linux.cc
+@@ -11,7 +11,9 @@
+ #include <stddef.h>
+ #include <stdint.h>
+ #include <string.h>
++#if !defined(OS_BSD)
+ #include <sys/prctl.h>
++#endif
+ #include <sys/socket.h>
+ #include <sys/types.h>
+ #include <unistd.h>
+@@ -101,6 +103,7 @@ static bool CreateInitProcessReaper(
+ // created through the setuid sandbox.
+ static bool EnterSuidSandbox(sandbox::SetuidSandboxClient* setuid_sandbox,
+ base::OnceClosure post_fork_parent_callback) {
++#if !defined(OS_BSD)
+ DCHECK(setuid_sandbox);
+ DCHECK(setuid_sandbox->IsSuidSandboxChild());
+
+@@ -133,6 +136,9 @@ static bool EnterSuidSandbox(sandbox::SetuidSandboxCli
+
+ CHECK(service_manager::SandboxDebugHandling::SetDumpableStatusAndHandlers());
+ return true;
++#else
++ return false;
++#endif
+ }
+
+ static void DropAllCapabilities(int proc_fd) {
+@@ -178,6 +184,7 @@ static void EnterLayerOneSandbox(service_manager::Sand
+
+ bool ZygoteMain(
+ std::vector<std::unique_ptr<ZygoteForkDelegate>> fork_delegates) {
++#if !defined(OS_BSD)
+ sandbox::SetAmZygoteOrRenderer(true, GetSandboxFD());
+
+ auto* linux_sandbox = service_manager::SandboxLinux::GetInstance();
+@@ -240,6 +247,9 @@ bool ZygoteMain(
+
+ // This function call can return multiple times, once per fork().
+ return zygote.ProcessRequests();
++#else
++ return false;
++#endif
+ }
+
+ } // namespace service_manager
diff --git a/devel/electron5/files/patch-skia_ext_SkMemory__new__handler.cpp b/devel/electron5/files/patch-skia_ext_SkMemory__new__handler.cpp
new file mode 100644
index 000000000000..5e5b3bfb755a
--- /dev/null
+++ b/devel/electron5/files/patch-skia_ext_SkMemory__new__handler.cpp
@@ -0,0 +1,20 @@
+--- skia/ext/SkMemory_new_handler.cpp.orig 2019-04-08 08:18:26 UTC
++++ skia/ext/SkMemory_new_handler.cpp
+@@ -77,7 +77,7 @@ static void* malloc_nothrow(size_t size) {
+ // TODO(b.kelemen): we should always use UncheckedMalloc but currently it
+ // doesn't work as intended everywhere.
+ void* result;
+-#if defined(OS_IOS)
++#if defined(OS_IOS) || defined(OS_BSD)
+ result = malloc(size);
+ #else
+ // It's the responsibility of the caller to check the return value.
+@@ -97,7 +97,7 @@ static void* calloc_nothrow(size_t size) {
+ // TODO(b.kelemen): we should always use UncheckedCalloc but currently it
+ // doesn't work as intended everywhere.
+ void* result;
+-#if defined(OS_IOS)
++#if defined(OS_IOS) || defined(OS_BSD)
+ result = calloc(1, size);
+ #else
+ // It's the responsibility of the caller to check the return value.
diff --git a/devel/electron5/files/patch-third__party_angle_BUILD.gn b/devel/electron5/files/patch-third__party_angle_BUILD.gn
new file mode 100644
index 000000000000..79678f044552
--- /dev/null
+++ b/devel/electron5/files/patch-third__party_angle_BUILD.gn
@@ -0,0 +1,21 @@
+--- third_party/angle/BUILD.gn.orig 2019-04-08 08:33:52 UTC
++++ third_party/angle/BUILD.gn
+@@ -276,6 +276,7 @@ angle_static_library("angle_gpu_info_util") {
+ "X11",
+ "Xi",
+ "Xext",
++ "GL",
+ ]
+ }
+ }
+@@ -842,10 +843,6 @@ foreach(is_shared_library,
+ libs = []
+ if (is_linux) {
+ sources += util_linux_sources
+- libs += [
+- "rt",
+- "dl",
+- ]
+ }
+
+ if (is_mac) {
diff --git a/devel/electron5/files/patch-third__party_angle_src_gpu__info__util_SystemInfo__internal.h b/devel/electron5/files/patch-third__party_angle_src_gpu__info__util_SystemInfo__internal.h
new file mode 100644
index 000000000000..d2f83501b635
--- /dev/null
+++ b/devel/electron5/files/patch-third__party_angle_src_gpu__info__util_SystemInfo__internal.h
@@ -0,0 +1,16 @@
+--- third_party/angle/src/gpu_info_util/SystemInfo_internal.h.orig 2019-04-08 08:20:00 UTC
++++ third_party/angle/src/gpu_info_util/SystemInfo_internal.h
+@@ -14,8 +14,13 @@
+ namespace angle
+ {
+
++bool CollectMesaCardInfo(std::vector<GPUDeviceInfo> *devices);
++
+ // Defined in SystemInfo_libpci when GPU_INFO_USE_LIBPCI is defined.
+ bool GetPCIDevicesWithLibPCI(std::vector<GPUDeviceInfo> *devices);
++#if defined(__FreeBSD__)
++bool GetPCIDevicesFreeBSD(std::vector<GPUDeviceInfo> *devices);
++#endif
+ // Defined in SystemInfo_x11 when GPU_INFO_USE_X11 is defined.
+ bool GetNvidiaDriverVersionWithXNVCtrl(std::string *version);
+
diff --git a/devel/electron5/files/patch-third__party_angle_src_gpu__info__util_SystemInfo__libpci.cpp b/devel/electron5/files/patch-third__party_angle_src_gpu__info__util_SystemInfo__libpci.cpp
new file mode 100644
index 000000000000..32ad0de9e1d0
--- /dev/null
+++ b/devel/electron5/files/patch-third__party_angle_src_gpu__info__util_SystemInfo__libpci.cpp
@@ -0,0 +1,90 @@
+--- third_party/angle/src/gpu_info_util/SystemInfo_libpci.cpp.orig 2019-04-08 08:20:00 UTC
++++ third_party/angle/src/gpu_info_util/SystemInfo_libpci.cpp
+@@ -12,6 +12,11 @@
+ #include <pci/pci.h>
+ #include <unistd.h>
+
++#if defined(__FreeBSD__)
++#include <fcntl.h>
++#include <sys/pciio.h>
++#endif
++
+ #include "common/angleutils.h"
+ #include "common/debug.h"
+
+@@ -82,6 +87,75 @@ struct LibPCI : private angle::NonCopyable
+ };
+
+ } // anonymous namespace
++
++#if defined(__FreeBSD__)
++// Adds an entry per PCI GPU found and fills the device and vendor ID.
++bool GetPCIDevicesFreeBSD(std::vector<GPUDeviceInfo> *devices)
++{
++ int fd;
++ struct pci_conf_io conf;
++ struct pci_conf *matches;
++ uint32_t offset = 0;
++
++ fd = open("/dev/pci", O_RDONLY);
++ if (fd < 0)
++ return false;
++
++ matches = new struct pci_conf[32];
++ conf.generation = 0;
++ do {
++ conf.pat_buf_len = 0;
++ conf.num_patterns = 0;
++ conf.patterns = NULL;
++ conf.match_buf_len = 32 * sizeof(struct pci_conf);
++ conf.num_matches = 32;
++ conf.matches = matches;
++ conf.offset = offset;
++ conf.status = PCI_GETCONF_ERROR;
++ if (ioctl(fd, PCIOCGETCONF, &conf) < 0) {
++ if (errno == ENODEV)
++ break;
++ }
++ /* PCI_GETCONF_LIST_CHANGED would require us to start over. */
++ if (conf.status == PCI_GETCONF_ERROR || conf.status == PCI_GETCONF_LIST_CHANGED) {
++ break;
++ }
++
++ for (unsigned int i = 0; i < conf.num_matches; i++) {
++ uint16_t device_class = (matches[i].pc_class << 8) | matches[i].pc_subclass;
++
++ // Skip non-GPU devices
++ switch (device_class)
++ {
++ case PCI_CLASS_DISPLAY_VGA:
++ case PCI_CLASS_DISPLAY_XGA:
++ case PCI_CLASS_DISPLAY_3D:
++ break;
++ default:
++ continue;
++ }
++
++ // Skip unknown devices
++ if (matches[i].pc_vendor == 0 || matches[i].pc_device == 0) {
++ continue;
++ }
++
++ GPUDeviceInfo info;
++ info.vendorId = matches[i].pc_vendor;
++ info.deviceId = matches[i].pc_device;
++
++ devices->push_back(info);
++ }
++ offset += conf.num_matches;
++ } while (conf.status == PCI_GETCONF_MORE_DEVS);
++
++ delete[] matches;
++
++ close(fd);
++
++ return true;
++}
++#endif
+
+ // Adds an entry per PCI GPU found and fills the device and vendor ID.
+ bool GetPCIDevicesWithLibPCI(std::vector<GPUDeviceInfo> *devices)
diff --git a/devel/electron5/files/patch-third__party_angle_src_gpu__info__util_SystemInfo__linux.cpp b/devel/electron5/files/patch-third__party_angle_src_gpu__info__util_SystemInfo__linux.cpp
new file mode 100644
index 000000000000..ffaa86d8fd39
--- /dev/null
+++ b/devel/electron5/files/patch-third__party_angle_src_gpu__info__util_SystemInfo__linux.cpp
@@ -0,0 +1,21 @@
+--- third_party/angle/src/gpu_info_util/SystemInfo_linux.cpp.orig 2019-04-08 08:33:53 UTC
++++ third_party/angle/src/gpu_info_util/SystemInfo_linux.cpp
+@@ -71,10 +71,18 @@ bool GetPCIDevicesWithLibPCI(std::vector<GPUDeviceInfo
+
+ bool GetSystemInfo(SystemInfo *info)
+ {
++#if defined(__FreeBSD__)
++ if (!CollectMesaCardInfo(&(info->gpus)))
++ {
++ if (!GetPCIDevicesFreeBSD(&(info->gpus)))
++ return false;
++ }
++#else
+ if (!GetPCIDevicesWithLibPCI(&(info->gpus)))
+ {
+ return false;
+ }
++#endif
+
+ if (info->gpus.size() == 0)
+ {
diff --git a/devel/electron5/files/patch-third__party_angle_src_gpu__info__util_SystemInfo__x11.cpp b/devel/electron5/files/patch-third__party_angle_src_gpu__info__util_SystemInfo__x11.cpp
new file mode 100644
index 000000000000..41da10ee0178
--- /dev/null
+++ b/devel/electron5/files/patch-third__party_angle_src_gpu__info__util_SystemInfo__x11.cpp
@@ -0,0 +1,55 @@
+--- third_party/angle/src/gpu_info_util/SystemInfo_x11.cpp.orig 2019-04-08 08:20:00 UTC
++++ third_party/angle/src/gpu_info_util/SystemInfo_x11.cpp
+@@ -8,6 +8,8 @@
+
+ #include "gpu_info_util/SystemInfo_internal.h"
+
++#include <GL/glx.h>
++#include <GL/glxext.h>
+ #include <X11/Xlib.h>
+
+ #include "common/debug.h"
+@@ -18,8 +20,43 @@
+ # error SystemInfo_x11.cpp compiled without GPU_INFO_USE_X11
+ #endif
+
++#define GLX_RENDERER_VENDOR_ID_MESA 0x8183
++#define GLX_RENDERER_DEVICE_ID_MESA 0x8184
++
+ namespace angle
+ {
++
++bool CollectMesaCardInfo(std::vector<GPUDeviceInfo> *devices)
++{
++
++ unsigned int vid[3], did[3];
++
++ Display *display = XOpenDisplay(NULL);
++ if (!display) {
++ return false;
++ }
++
++ PFNGLXQUERYRENDERERINTEGERMESAPROC queryInteger =
++ (PFNGLXQUERYRENDERERINTEGERMESAPROC) glXGetProcAddressARB((const GLubyte *)
++ "glXQueryRendererIntegerMESA");
++
++ if (!queryInteger)
++ return false;
++
++ bool vendor_ret =
++ queryInteger(display, 0, 0, GLX_RENDERER_VENDOR_ID_MESA, vid);
++ bool device_ret =
++ queryInteger(display, 0, 0, GLX_RENDERER_DEVICE_ID_MESA, did);
++
++ if (vendor_ret && device_ret) {
++ GPUDeviceInfo info;
++ info.vendorId = vid[0];
++ info.deviceId = did[0];
++ devices->push_back(info);
++ }
++
++ return true;
++}
+
+ bool GetNvidiaDriverVersionWithXNVCtrl(std::string *version)
+ {
diff --git a/devel/electron5/files/patch-third__party_angle_src_libANGLE_Display.cpp b/devel/electron5/files/patch-third__party_angle_src_libANGLE_Display.cpp
new file mode 100644
index 000000000000..37c505eb161d
--- /dev/null
+++ b/devel/electron5/files/patch-third__party_angle_src_libANGLE_Display.cpp
@@ -0,0 +1,20 @@
+--- third_party/angle/src/libANGLE/Display.cpp.orig 2019-04-08 08:33:54 UTC
++++ third_party/angle/src/libANGLE/Display.cpp
+@@ -64,7 +64,7 @@
+ #if defined(ANGLE_ENABLE_VULKAN)
+ # if defined(ANGLE_PLATFORM_WINDOWS)
+ # include "libANGLE/renderer/vulkan/win32/DisplayVkWin32.h"
+-# elif defined(ANGLE_PLATFORM_LINUX)
++# elif defined(ANGLE_PLATFORM_POSIX)
+ # include "libANGLE/renderer/vulkan/xcb/DisplayVkXcb.h"
+ # elif defined(ANGLE_PLATFORM_ANDROID)
+ # include "libANGLE/renderer/vulkan/android/DisplayVkAndroid.h"
+@@ -216,7 +216,7 @@ rx::DisplayImpl *CreateDisplayFromAttribs(const Attrib
+ #if defined(ANGLE_ENABLE_VULKAN)
+ # if defined(ANGLE_PLATFORM_WINDOWS)
+ impl = new rx::DisplayVkWin32(state);
+-# elif defined(ANGLE_PLATFORM_LINUX)
++# elif defined(ANGLE_PLATFORM_POSIX)
+ impl = new rx::DisplayVkXcb(state);
+ # elif defined(ANGLE_PLATFORM_ANDROID)
+ impl = new rx::DisplayVkAndroid(state);
diff --git a/devel/electron5/files/patch-third__party_angle_src_libANGLE_renderer_driver__utils.h b/devel/electron5/files/patch-third__party_angle_src_libANGLE_renderer_driver__utils.h
new file mode 100644
index 000000000000..a3b134d5b6dd
--- /dev/null
+++ b/devel/electron5/files/patch-third__party_angle_src_libANGLE_renderer_driver__utils.h
@@ -0,0 +1,11 @@
+--- third_party/angle/src/libANGLE/renderer/driver_utils.h.orig 2019-04-08 08:20:00 UTC
++++ third_party/angle/src/libANGLE/renderer/driver_utils.h
+@@ -107,7 +107,7 @@ inline bool IsWindows()
+
+ inline bool IsLinux()
+ {
+-#if defined(ANGLE_PLATFORM_LINUX)
++#if defined(ANGLE_PLATFORM_POSIX)
+ return true;
+ #else
+ return false;
diff --git a/devel/electron5/files/patch-third__party_angle_third__party_glslang_src_glslang_Include_PoolAlloc.h b/devel/electron5/files/patch-third__party_angle_third__party_glslang_src_glslang_Include_PoolAlloc.h
new file mode 100644
index 000000000000..f18a21e78616
--- /dev/null
+++ b/devel/electron5/files/patch-third__party_angle_third__party_glslang_src_glslang_Include_PoolAlloc.h
@@ -0,0 +1,10 @@
+--- third_party/angle/third_party/glslang/src/glslang/Include/PoolAlloc.h.orig 2020-03-15 13:45:58 UTC
++++ third_party/angle/third_party/glslang/src/glslang/Include/PoolAlloc.h
+@@ -304,7 +304,6 @@ class pool_allocator { (public)
+ size_type max_size() const { return static_cast<size_type>(-1) / sizeof(T); }
+ size_type max_size(int size) const { return static_cast<size_type>(-1) / size; }
+
+- void setAllocator(TPoolAllocator* a) { allocator = *a; }
+ TPoolAllocator& getAllocator() const { return allocator; }
+
+ protected:
diff --git a/devel/electron5/files/patch-third__party_angle_third__party_vulkan-loader_src_loader_loader.c b/devel/electron5/files/patch-third__party_angle_third__party_vulkan-loader_src_loader_loader.c
new file mode 100644
index 000000000000..3cc5adee15d2
--- /dev/null
+++ b/devel/electron5/files/patch-third__party_angle_third__party_vulkan-loader_src_loader_loader.c
@@ -0,0 +1,11 @@
+--- third_party/angle/third_party/vulkan-loader/src/loader/loader.c.orig 2019-04-08 08:34:43 UTC
++++ third_party/angle/third_party/vulkan-loader/src/loader/loader.c
+@@ -215,7 +215,7 @@ void *loader_device_heap_realloc(const struct loader_d
+ }
+
+ // Environment variables
+-#if defined(__linux__) || defined(__APPLE__)
++#if defined(__linux__) || defined(__APPLE__) || defined(__FreeBSD__)
+
+ static inline char *loader_getenv(const char *name, const struct loader_instance *inst) {
+ // No allocation of memory necessary for Linux, but we should at least touch
diff --git a/devel/electron5/files/patch-third__party_angle_third__party_vulkan-loader_src_loader_vk__loader__platform.h b/devel/electron5/files/patch-third__party_angle_third__party_vulkan-loader_src_loader_vk__loader__platform.h
new file mode 100644
index 000000000000..4a5a8d7c7000
--- /dev/null
+++ b/devel/electron5/files/patch-third__party_angle_third__party_vulkan-loader_src_loader_vk__loader__platform.h
@@ -0,0 +1,11 @@
+--- third_party/angle/third_party/vulkan-loader/src/loader/vk_loader_platform.h.orig 2019-04-08 08:34:43 UTC
++++ third_party/angle/third_party/vulkan-loader/src/loader/vk_loader_platform.h
+@@ -31,7 +31,7 @@
+ #include "vulkan/vk_platform.h"
+ #include "vulkan/vk_sdk_platform.h"
+
+-#if defined(__linux__) || defined(__APPLE__)
++#if defined(__linux__) || defined(__APPLE__) || defined(__FreeBSD__)
+ /* Linux-specific common code: */
+
+ // Headers:
diff --git a/devel/electron5/files/patch-third__party_angle_third__party_vulkan-validation-layers_src_layers_vk__loader__platform.h b/devel/electron5/files/patch-third__party_angle_third__party_vulkan-validation-layers_src_layers_vk__loader__platform.h
new file mode 100644
index 000000000000..22f7728f2e6f
--- /dev/null
+++ b/devel/electron5/files/patch-third__party_angle_third__party_vulkan-validation-layers_src_layers_vk__loader__platform.h
@@ -0,0 +1,11 @@
+--- third_party/angle/third_party/vulkan-validation-layers/src/layers/vk_loader_platform.h.orig 2019-04-08 08:23:49 UTC
++++ third_party/angle/third_party/vulkan-validation-layers/src/layers/vk_loader_platform.h
+@@ -31,7 +31,7 @@
+ #include "vulkan/vk_platform.h"
+ #include "vulkan/vk_sdk_platform.h"
+
+-#if defined(__linux__) || defined(__APPLE__)
++#if defined(__linux__) || defined(__APPLE__) || defined(__FreeBSD__)
+ /* Linux-specific common code: */
+
+ // Headers:
diff --git a/devel/electron5/files/patch-third__party_blink_renderer_core_editing_editing__behavior.cc b/devel/electron5/files/patch-third__party_blink_renderer_core_editing_editing__behavior.cc
new file mode 100644
index 000000000000..b3e5c5fa9c4d
--- /dev/null
+++ b/devel/electron5/files/patch-third__party_blink_renderer_core_editing_editing__behavior.cc
@@ -0,0 +1,11 @@
+--- third_party/blink/renderer/core/editing/editing_behavior.cc.orig 2019-04-08 08:18:45 UTC
++++ third_party/blink/renderer/core/editing/editing_behavior.cc
+@@ -270,7 +270,7 @@ bool EditingBehavior::ShouldInsertCharacter(const Keyb
+ // unexpected behaviour
+ if (ch < ' ')
+ return false;
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // According to XKB map no keyboard combinations with ctrl key are mapped to
+ // printable characters, however we need the filter as the DomKey/text could
+ // contain printable characters.
diff --git a/devel/electron5/files/patch-third__party_blink_renderer_core_html_canvas_canvas__async__blob__creator.cc b/devel/electron5/files/patch-third__party_blink_renderer_core_html_canvas_canvas__async__blob__creator.cc
new file mode 100644
index 000000000000..937666b67090
--- /dev/null
+++ b/devel/electron5/files/patch-third__party_blink_renderer_core_html_canvas_canvas__async__blob__creator.cc
@@ -0,0 +1,11 @@
+--- third_party/blink/renderer/core/html/canvas/canvas_async_blob_creator.cc.orig 2019-04-08 08:33:04 UTC
++++ third_party/blink/renderer/core/html/canvas/canvas_async_blob_creator.cc
+@@ -39,7 +39,7 @@ constexpr TimeDelta kEncodeRowSlackBeforeDeadline =
+ TimeDelta::FromMicroseconds(100);
+
+ /* The value is based on user statistics on Nov 2017. */
+-#if (defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN))
++#if (defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN)) || defined(OS_BSD)
+ const double kIdleTaskStartTimeoutDelayMs = 1000.0;
+ #else
+ const double kIdleTaskStartTimeoutDelayMs = 4000.0; // For ChromeOS, Mobile
diff --git a/devel/electron5/files/patch-third__party_blink_renderer_core_html_forms_internal__popup__menu.cc b/devel/electron5/files/patch-third__party_blink_renderer_core_html_forms_internal__popup__menu.cc
new file mode 100644
index 000000000000..52c3d5bf3c55
--- /dev/null
+++ b/devel/electron5/files/patch-third__party_blink_renderer_core_html_forms_internal__popup__menu.cc
@@ -0,0 +1,11 @@
+--- third_party/blink/renderer/core/html/forms/internal_popup_menu.cc.orig 2019-04-08 08:33:04 UTC
++++ third_party/blink/renderer/core/html/forms/internal_popup_menu.cc
+@@ -127,7 +127,7 @@ class InternalPopupMenu::ItemIterationContext {
+ is_in_group_(false),
+ buffer_(buffer) {
+ DCHECK(buffer_);
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // On other platforms, the <option> background color is the same as the
+ // <select> background color. On Linux, that makes the <option>
+ // background color very dark, so by default, try to use a lighter
diff --git a/devel/electron5/files/patch-third__party_blink_renderer_core_inspector_inspector__memory__agent.cc b/devel/electron5/files/patch-third__party_blink_renderer_core_inspector_inspector__memory__agent.cc
new file mode 100644
index 000000000000..89b7f6ecaa0c
--- /dev/null
+++ b/devel/electron5/files/patch-third__party_blink_renderer_core_inspector_inspector__memory__agent.cc
@@ -0,0 +1,11 @@
+--- third_party/blink/renderer/core/inspector/inspector_memory_agent.cc.orig 2019-04-08 08:33:05 UTC
++++ third_party/blink/renderer/core/inspector/inspector_memory_agent.cc
+@@ -171,7 +171,7 @@ InspectorMemoryAgent::GetSamplingProfileById(uint32_t
+
+ std::vector<std::string> InspectorMemoryAgent::Symbolize(
+ const std::vector<void*>& addresses) {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // TODO(alph): Move symbolization to the client.
+ std::vector<void*> addresses_to_symbolize;
+ for (void* address : addresses) {
diff --git a/devel/electron5/files/patch-third__party_blink_renderer_core_layout_layout__view.cc b/devel/electron5/files/patch-third__party_blink_renderer_core_layout_layout__view.cc
new file mode 100644
index 000000000000..1e42711f77c1
--- /dev/null
+++ b/devel/electron5/files/patch-third__party_blink_renderer_core_layout_layout__view.cc
@@ -0,0 +1,20 @@
+--- third_party/blink/renderer/core/layout/layout_view.cc.orig 2019-04-08 08:33:05 UTC
++++ third_party/blink/renderer/core/layout/layout_view.cc
+@@ -58,7 +58,7 @@
+ #include "third_party/blink/renderer/platform/runtime_enabled_features.h"
+ #include "third_party/blink/renderer/platform/transforms/transform_state.h"
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ #include "third_party/blink/renderer/platform/fonts/font_cache.h"
+ #endif
+
+@@ -321,7 +321,7 @@ void LayoutView::UpdateLayout() {
+ DCHECK(!layout_state_);
+ LayoutState root_layout_state(*this);
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ // The font code in FontPlatformData does not have a direct connection to the
+ // document, the frame or anything from which we could retrieve the device
+ // scale factor. After using zoom for DSF, the GraphicsContext does only ever
diff --git a/devel/electron5/files/patch-third__party_blink_renderer_core_paint_paint__layer.cc b/devel/electron5/files/patch-third__party_blink_renderer_core_paint_paint__layer.cc
new file mode 100644
index 000000000000..172fffdf91cd
--- /dev/null
+++ b/devel/electron5/files/patch-third__party_blink_renderer_core_paint_paint__layer.cc
@@ -0,0 +1,11 @@
+--- third_party/blink/renderer/core/paint/paint_layer.cc.orig 2019-04-08 08:33:05 UTC
++++ third_party/blink/renderer/core/paint/paint_layer.cc
+@@ -104,7 +104,7 @@ namespace {
+ static CompositingQueryMode g_compositing_query_mode =
+ kCompositingQueriesAreOnlyAllowedInCertainDocumentLifecyclePhases;
+
+-#ifdef OS_LINUX
++#if defined(OS_LINUX) || defined(OS_BSD)
+ struct SameSizeAsPaintLayer : DisplayItemClient {
+ // The bit fields may fit into the machine word of DisplayItemClient which
+ // has only 8-bit data.
diff --git a/devel/electron5/files/patch-third__party_blink_renderer_core_scroll_scrollbar__theme__aura.cc b/devel/electron5/files/patch-third__party_blink_renderer_core_scroll_scrollbar__theme__aura.cc
new file mode 100644
index 000000000000..0df5cdde6338
--- /dev/null
+++ b/devel/electron5/files/patch-third__party_blink_renderer_core_scroll_scrollbar__theme__aura.cc
@@ -0,0 +1,11 @@
+--- third_party/blink/renderer/core/scroll/scrollbar_theme_aura.cc.orig 2019-04-08 08:33:05 UTC
++++ third_party/blink/renderer/core/scroll/scrollbar_theme_aura.cc
+@@ -332,7 +332,7 @@ ScrollbarPart ScrollbarThemeAura::InvalidateOnThumbPos
+
+ bool ScrollbarThemeAura::ShouldCenterOnThumb(const Scrollbar& scrollbar,
+ const WebMouseEvent& event) {
+-#if (defined(OS_LINUX) && !defined(OS_CHROMEOS))
++#if ((defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS))
+ if (event.button == WebPointerProperties::Button::kMiddle)
+ return true;
+ #endif
diff --git a/devel/electron5/files/patch-third__party_blink_renderer_platform_BUILD.gn b/devel/electron5/files/patch-third__party_blink_renderer_platform_BUILD.gn
new file mode 100644
index 000000000000..e0ac59a88c46
--- /dev/null
+++ b/devel/electron5/files/patch-third__party_blink_renderer_platform_BUILD.gn
@@ -0,0 +1,10 @@
+--- third_party/blink/renderer/platform/BUILD.gn.orig 2019-04-09 12:48:19 UTC
++++ third_party/blink/renderer/platform/BUILD.gn
+@@ -129,6 +129,7 @@ executable("character_data_generator") {
+ "//build/win:default_exe_manifest",
+ "//third_party/icu",
+ ]
++ libs = [ "cxxrt" ]
+ }
+
+ # This isn't strictly necessary since we can just add the deps to "platform",
diff --git a/devel/electron5/files/patch-third__party_blink_renderer_platform_fonts_font__cache.cc b/devel/electron5/files/patch-third__party_blink_renderer_platform_fonts_font__cache.cc
new file mode 100644
index 000000000000..e772a18de3e6
--- /dev/null
+++ b/devel/electron5/files/patch-third__party_blink_renderer_platform_fonts_font__cache.cc
@@ -0,0 +1,20 @@
+--- third_party/blink/renderer/platform/fonts/font_cache.cc.orig 2019-04-08 08:33:06 UTC
++++ third_party/blink/renderer/platform/fonts/font_cache.cc
+@@ -66,7 +66,7 @@ namespace blink {
+
+ SkFontMgr* FontCache::static_font_manager_ = nullptr;
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ float FontCache::device_scale_factor_ = 1.0;
+ #endif
+
+@@ -89,7 +89,7 @@ FontCache::FontCache()
+ FontPlatformData* FontCache::SystemFontPlatformData(
+ const FontDescription& font_description) {
+ const AtomicString& family = FontCache::SystemFontFamily();
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ if (family.IsEmpty() || family == font_family_names::kSystemUi)
+ return nullptr;
+ #else
diff --git a/devel/electron5/files/patch-third__party_blink_renderer_platform_fonts_font__cache.h b/devel/electron5/files/patch-third__party_blink_renderer_platform_fonts_font__cache.h
new file mode 100644
index 000000000000..bb2412e7d453
--- /dev/null
+++ b/devel/electron5/files/patch-third__party_blink_renderer_platform_fonts_font__cache.h
@@ -0,0 +1,53 @@
+--- third_party/blink/renderer/platform/fonts/font_cache.h.orig 2019-04-08 08:33:06 UTC
++++ third_party/blink/renderer/platform/fonts/font_cache.h
+@@ -157,7 +157,7 @@ class PLATFORM_EXPORT FontCache {
+ sk_sp<SkFontMgr> FontManager() { return font_manager_; }
+ static void SetFontManager(sk_sp<SkFontMgr>);
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ // These are needed for calling QueryRenderStyleForStrike, since
+ // gfx::GetFontRenderParams makes distinctions based on DSF.
+ static float DeviceScaleFactor() { return device_scale_factor_; }
+@@ -218,7 +218,7 @@ class PLATFORM_EXPORT FontCache {
+ const FontDescription&);
+ #endif // defined(OS_ANDROID)
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ struct PlatformFallbackFont {
+ String name;
+ CString filename;
+@@ -230,7 +230,7 @@ class PLATFORM_EXPORT FontCache {
+ static void GetFontForCharacter(UChar32,
+ const char* preferred_locale,
+ PlatformFallbackFont*);
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+
+ scoped_refptr<SimpleFontData> FontDataFromFontPlatformData(
+ const FontPlatformData*,
+@@ -294,12 +294,12 @@ class PLATFORM_EXPORT FontCache {
+ const FontFaceCreationParams&,
+ CString& name);
+
+-#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_FUCHSIA)
++#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_FUCHSIA) || defined(OS_BSD)
+ static AtomicString GetFamilyNameForCharacter(SkFontMgr*,
+ UChar32,
+ const FontDescription&,
+ FontFallbackPriority);
+-#endif // defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_FUCHSIA)
++#endif // defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_FUCHSIA) || defined(OS_BSD)
+
+ scoped_refptr<SimpleFontData> FallbackOnStandardFontStyle(const FontDescription&,
+ UChar32);
+@@ -330,7 +330,7 @@ class PLATFORM_EXPORT FontCache {
+ bool is_test_font_mgr_ = false;
+ #endif // defined(OS_WIN)
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ static float device_scale_factor_;
+ #endif
+
diff --git a/devel/electron5/files/patch-third__party_blink_renderer_platform_fonts_font__description.cc b/devel/electron5/files/patch-third__party_blink_renderer_platform_fonts_font__description.cc
new file mode 100644
index 000000000000..a61452b04d27
--- /dev/null
+++ b/devel/electron5/files/patch-third__party_blink_renderer_platform_fonts_font__description.cc
@@ -0,0 +1,20 @@
+--- third_party/blink/renderer/platform/fonts/font_description.cc.orig 2019-04-08 08:33:06 UTC
++++ third_party/blink/renderer/platform/fonts/font_description.cc
+@@ -38,7 +38,7 @@
+ #include "third_party/blink/renderer/platform/wtf/text/atomic_string_hash.h"
+ #include "third_party/blink/renderer/platform/wtf/text/string_hash.h"
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ #include "third_party/blink/renderer/platform/fonts/font_cache.h"
+ #endif
+
+@@ -223,7 +223,7 @@ FontCacheKey FontDescription::CacheKey(
+ static_cast<unsigned>(fields_.orientation_) << 1 | // bit 2-3
+ static_cast<unsigned>(fields_.subpixel_text_position_); // bit 1
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ float device_scale_factor_for_key = FontCache::DeviceScaleFactor();
+ #else
+ float device_scale_factor_for_key = 1.0f;
diff --git a/devel/electron5/files/patch-third__party_blink_renderer_platform_fonts_font__metrics.cc b/devel/electron5/files/patch-third__party_blink_renderer_platform_fonts_font__metrics.cc
new file mode 100644
index 000000000000..80dc79a8edc5
--- /dev/null
+++ b/devel/electron5/files/patch-third__party_blink_renderer_platform_fonts_font__metrics.cc
@@ -0,0 +1,29 @@
+--- third_party/blink/renderer/platform/fonts/font_metrics.cc.orig 2019-04-08 08:18:48 UTC
++++ third_party/blink/renderer/platform/fonts/font_metrics.cc
+@@ -39,7 +39,7 @@
+
+ namespace blink {
+
+-#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_FUCHSIA)
++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_FUCHSIA) || defined(OS_BSD)
+ // This is the largest VDMX table which we'll try to load and parse.
+ static const size_t kMaxVDMXTableSize = 1024 * 1024; // 1 MB
+ #endif
+@@ -61,7 +61,7 @@ void FontMetrics::AscentDescentWithHacks(
+ int vdmx_ascent = 0, vdmx_descent = 0;
+ bool is_vdmx_valid = false;
+
+-#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_FUCHSIA)
++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_FUCHSIA) || defined(OS_BSD)
+ // Manually digging up VDMX metrics is only applicable when bytecode hinting
+ // using FreeType. With DirectWrite or CoreText, no bytecode hinting is ever
+ // done. This code should be pushed into FreeType (hinted font metrics).
+@@ -107,7 +107,7 @@ void FontMetrics::AscentDescentWithHacks(
+ visual_overflow_inflation_for_ascent = 1;
+ if (descent < metrics.fDescent) {
+ visual_overflow_inflation_for_descent = 1;
+-#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_FUCHSIA)
++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_FUCHSIA) || defined(OS_BSD)
+ // When subpixel positioning is enabled, if the descent is rounded down,
+ // the descent part of the glyph may be truncated when displayed in a
+ // 'overflow: hidden' container. To avoid that, borrow 1 unit from the
diff --git a/devel/electron5/files/patch-third__party_blink_renderer_platform_fonts_font__unique__name__lookup.cc b/devel/electron5/files/patch-third__party_blink_renderer_platform_fonts_font__unique__name__lookup.cc
new file mode 100644
index 000000000000..21c331e6dcf9
--- /dev/null
+++ b/devel/electron5/files/patch-third__party_blink_renderer_platform_fonts_font__unique__name__lookup.cc
@@ -0,0 +1,20 @@
+--- third_party/blink/renderer/platform/fonts/font_unique_name_lookup.cc.orig 2019-04-08 08:33:06 UTC
++++ third_party/blink/renderer/platform/fonts/font_unique_name_lookup.cc
+@@ -10,7 +10,7 @@
+ #if defined(OS_ANDROID)
+ #include "third_party/blink/public/platform/modules/font_unique_name_lookup/font_unique_name_lookup.mojom-blink.h"
+ #include "third_party/blink/renderer/platform/fonts/android/font_unique_name_lookup_android.h"
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ #include "third_party/blink/renderer/platform/fonts/linux/font_unique_name_lookup_linux.h"
+ #elif defined(OS_WIN)
+ #include "third_party/blink/public/mojom/dwrite_font_proxy/dwrite_font_proxy.mojom-blink.h"
+@@ -26,7 +26,7 @@ std::unique_ptr<FontUniqueNameLookup>
+ FontUniqueNameLookup::GetPlatformUniqueNameLookup() {
+ #if defined(OS_ANDROID)
+ return std::make_unique<FontUniqueNameLookupAndroid>();
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ return std::make_unique<FontUniqueNameLookupLinux>();
+ #elif defined(OS_WIN)
+ return std::make_unique<FontUniqueNameLookupWin>();
diff --git a/devel/electron5/files/patch-third__party_blink_renderer_platform_fonts_skia_font__cache__skia.cc b/devel/electron5/files/patch-third__party_blink_renderer_platform_fonts_skia_font__cache__skia.cc
new file mode 100644
index 000000000000..43ba1b65967a
--- /dev/null
+++ b/devel/electron5/files/patch-third__party_blink_renderer_platform_fonts_skia_font__cache__skia.cc
@@ -0,0 +1,38 @@
+--- third_party/blink/renderer/platform/fonts/skia/font_cache_skia.cc.orig 2019-04-08 08:18:48 UTC
++++ third_party/blink/renderer/platform/fonts/skia/font_cache_skia.cc
+@@ -60,7 +60,7 @@ AtomicString ToAtomicString(const SkString& str) {
+ return AtomicString::FromUTF8(str.c_str(), str.size());
+ }
+
+-#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_FUCHSIA)
++#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_FUCHSIA) || defined(OS_BSD)
+ // Android special locale for retrieving the color emoji font
+ // based on the proposed changes in UTR #51 for introducing
+ // an Emoji script code:
+@@ -104,7 +104,7 @@ AtomicString FontCache::GetFamilyNameForCharacter(
+ typeface->getFamilyName(&skia_family_name);
+ return ToAtomicString(skia_family_name);
+ }
+-#endif // defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_FUCHSIA)
++#endif // defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_FUCHSIA) || defined(OS_BSD)
+
+ void FontCache::PlatformInit() {}
+
+@@ -249,7 +249,7 @@ sk_sp<SkTypeface> FontCache::CreateTypeface(
+ }
+ #endif
+
+-#if defined(OS_LINUX) || defined(OS_WIN)
++#if defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD)
+ // On linux if the fontManager has been overridden then we should be calling
+ // the embedder provided font Manager rather than calling
+ // SkTypeface::CreateFromName which may redirect the call to the default font
+@@ -276,7 +276,7 @@ std::unique_ptr<FontPlatformData> FontCache::CreateFon
+ CString name;
+
+ sk_sp<SkTypeface> typeface;
+-#if defined(OS_ANDROID) || defined(OS_LINUX)
++#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_BSD)
+ if (alternate_name == AlternateFontName::kLocalUniqueFace &&
+ RuntimeEnabledFeatures::FontSrcLocalMatchingEnabled()) {
+ typeface = CreateTypefaceFromUniqueName(creation_params, name);
diff --git a/devel/electron5/files/patch-third__party_blink_renderer_platform_heap_stack__frame__depth.cc b/devel/electron5/files/patch-third__party_blink_renderer_platform_heap_stack__frame__depth.cc
new file mode 100644
index 000000000000..d8e75613913d
--- /dev/null
+++ b/devel/electron5/files/patch-third__party_blink_renderer_platform_heap_stack__frame__depth.cc
@@ -0,0 +1,14 @@
+--- third_party/blink/renderer/platform/heap/stack_frame_depth.cc.orig 2019-04-08 08:33:06 UTC
++++ third_party/blink/renderer/platform/heap/stack_frame_depth.cc
+@@ -15,6 +15,11 @@
+ extern "C" void* __libc_stack_end; // NOLINT
+ #endif
+
++#if defined(OS_FREEBSD)
++#include <sys/signal.h>
++#include <pthread_np.h>
++#endif
++
+ namespace blink {
+
+ static const char* g_avoid_optimization = nullptr;
diff --git a/devel/electron5/files/patch-third__party_blink_renderer_platform_wtf_BUILD.gn b/devel/electron5/files/patch-third__party_blink_renderer_platform_wtf_BUILD.gn
new file mode 100644
index 000000000000..cdfd30da8b9b
--- /dev/null
+++ b/devel/electron5/files/patch-third__party_blink_renderer_platform_wtf_BUILD.gn
@@ -0,0 +1,16 @@
+--- third_party/blink/renderer/platform/wtf/BUILD.gn.orig 2019-04-08 08:33:06 UTC
++++ third_party/blink/renderer/platform/wtf/BUILD.gn
+@@ -267,8 +267,12 @@ jumbo_component("wtf") {
+ if (is_android) {
+ libs = [ "log" ]
+ }
+- if (is_linux) {
++ if (is_linux && !is_bsd) {
+ libs = [ "dl" ]
++ }
++
++ if (is_bsd) {
++ libs = [ "execinfo" ]
+ }
+
+ if (is_mac) {
diff --git a/devel/electron5/files/patch-third__party_blink_renderer_platform_wtf_assertions.cc b/devel/electron5/files/patch-third__party_blink_renderer_platform_wtf_assertions.cc
new file mode 100644
index 000000000000..fc15d052b5e4
--- /dev/null
+++ b/devel/electron5/files/patch-third__party_blink_renderer_platform_wtf_assertions.cc
@@ -0,0 +1,11 @@
+--- third_party/blink/renderer/platform/wtf/assertions.cc.orig 2019-04-08 08:33:06 UTC
++++ third_party/blink/renderer/platform/wtf/assertions.cc
+@@ -48,7 +48,7 @@
+ #include <windows.h>
+ #endif
+
+-#if defined(OS_MACOSX) || (defined(OS_LINUX) && !defined(__UCLIBC__))
++#if defined(OS_MACOSX) || ((defined(OS_LINUX) || defined(OS_BSD)) && !defined(__UCLIBC__))
+ #include <cxxabi.h>
+ #include <dlfcn.h>
+ #include <execinfo.h>
diff --git a/devel/electron5/files/patch-third__party_blink_renderer_platform_wtf_container__annotations.h b/devel/electron5/files/patch-third__party_blink_renderer_platform_wtf_container__annotations.h
new file mode 100644
index 000000000000..a074c8a3bd98
--- /dev/null
+++ b/devel/electron5/files/patch-third__party_blink_renderer_platform_wtf_container__annotations.h
@@ -0,0 +1,11 @@
+--- third_party/blink/renderer/platform/wtf/container_annotations.h.orig 2019-04-08 08:33:06 UTC
++++ third_party/blink/renderer/platform/wtf/container_annotations.h
+@@ -10,7 +10,7 @@
+
+ // TODO(ochang): Remove the ARCH_CPU_X86_64 condition to enable this for X86
+ // once the crashes there have been fixed: http://crbug.com/461406
+-#if defined(ADDRESS_SANITIZER) && defined(OS_LINUX) && defined(ARCH_CPU_X86_64)
++#if defined(ADDRESS_SANITIZER) && (defined(OS_LINUX) || defined(OS_BSD)) && defined(ARCH_CPU_X86_64)
+ #define ANNOTATE_CONTIGUOUS_CONTAINER
+ #define ANNOTATE_NEW_BUFFER(buffer, capacity, newSize) \
+ if (buffer) { \
diff --git a/devel/electron5/files/patch-third__party_blink_renderer_platform_wtf_stack__util.cc b/devel/electron5/files/patch-third__party_blink_renderer_platform_wtf_stack__util.cc
new file mode 100644
index 000000000000..1ea1169b786c
--- /dev/null
+++ b/devel/electron5/files/patch-third__party_blink_renderer_platform_wtf_stack__util.cc
@@ -0,0 +1,14 @@
+--- third_party/blink/renderer/platform/wtf/stack_util.cc.orig 2019-04-08 08:33:06 UTC
++++ third_party/blink/renderer/platform/wtf/stack_util.cc
+@@ -18,6 +18,11 @@
+ extern "C" void* __libc_stack_end; // NOLINT
+ #endif
+
++#if defined(OS_FREEBSD)
++#include <sys/signal.h>
++#include <pthread_np.h>
++#endif
++
+ namespace WTF {
+
+ size_t GetUnderestimatedStackSize() {
diff --git a/devel/electron5/files/patch-third__party_blink_renderer_platform_wtf_threading.cc b/devel/electron5/files/patch-third__party_blink_renderer_platform_wtf_threading.cc
new file mode 100644
index 000000000000..ce944b84e3f4
--- /dev/null
+++ b/devel/electron5/files/patch-third__party_blink_renderer_platform_wtf_threading.cc
@@ -0,0 +1,29 @@
+--- third_party/blink/renderer/platform/wtf/threading.cc.orig 2019-04-08 08:33:06 UTC
++++ third_party/blink/renderer/platform/wtf/threading.cc
+@@ -17,12 +17,16 @@
+ #error Blink does not support threading on your platform.
+ #endif
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include <sys/syscall.h>
+ #elif defined(OS_ANDROID)
+ #include <sys/types.h>
+ #endif
+
++#if defined(OS_BSD)
++#include <pthread_np.h>
++#endif
++
+ namespace WTF {
+
+ // Current thread identity
+@@ -38,6 +42,8 @@ ThreadIdentifier CurrentThreadSyscall() {
+ return syscall(__NR_gettid);
+ #elif defined(OS_ANDROID)
+ return gettid();
++#elif defined(OS_BSD)
++ return pthread_getthreadid_np();
+ #else
+ return reinterpret_cast<uintptr_t>(pthread_self());
+ #endif
diff --git a/devel/electron5/files/patch-third__party_blink_renderer_platform_wtf_threading__pthreads.cc b/devel/electron5/files/patch-third__party_blink_renderer_platform_wtf_threading__pthreads.cc
new file mode 100644
index 000000000000..941137bdc6b3
--- /dev/null
+++ b/devel/electron5/files/patch-third__party_blink_renderer_platform_wtf_threading__pthreads.cc
@@ -0,0 +1,22 @@
+--- third_party/blink/renderer/platform/wtf/threading_pthreads.cc.orig 2019-04-08 08:33:06 UTC
++++ third_party/blink/renderer/platform/wtf/threading_pthreads.cc
+@@ -52,12 +52,17 @@
+ #include <objc/objc-auto.h>
+ #endif
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include <sys/syscall.h>
+ #endif
+
+-#if defined(OS_LINUX) || defined(OS_ANDROID)
++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
+ #include <unistd.h>
++#endif
++
++#if defined(OS_BSD)
++#include <sys/signal.h>
++#include <pthread_np.h>
+ #endif
+
+ namespace WTF {
diff --git a/devel/electron5/files/patch-third__party_boringssl_BUILD.gn b/devel/electron5/files/patch-third__party_boringssl_BUILD.gn
new file mode 100644
index 000000000000..9f542ecdcd1e
--- /dev/null
+++ b/devel/electron5/files/patch-third__party_boringssl_BUILD.gn
@@ -0,0 +1,36 @@
+--- third_party/boringssl/BUILD.gn.orig 2019-04-09 12:48:19 UTC
++++ third_party/boringssl/BUILD.gn
+@@ -84,7 +84,7 @@ if (is_win && !is_msan && current_cpu != "arm64") {
+ } else if (current_cpu == "x64") {
+ if (is_mac) {
+ sources += crypto_sources_mac_x86_64
+- } else if (is_linux || is_android) {
++ } else if (is_linux || is_bsd || is_android) {
+ sources += crypto_sources_linux_x86_64
+ } else {
+ public_configs = [ ":no_asm_config" ]
+@@ -92,13 +92,13 @@ if (is_win && !is_msan && current_cpu != "arm64") {
+ } else if (current_cpu == "x86") {
+ if (is_mac) {
+ sources += crypto_sources_mac_x86
+- } else if (is_linux || is_android) {
++ } else if (is_linux || is_bsd || is_android) {
+ sources += crypto_sources_linux_x86
+ } else {
+ public_configs = [ ":no_asm_config" ]
+ }
+ } else if (current_cpu == "arm") {
+- if (is_linux || is_android) {
++ if (is_linux || is_bsd || is_android) {
+ sources += crypto_sources_linux_arm
+ } else if (is_ios) {
+ sources += crypto_sources_ios_arm
+@@ -106,7 +106,7 @@ if (is_win && !is_msan && current_cpu != "arm64") {
+ public_configs = [ ":no_asm_config" ]
+ }
+ } else if (current_cpu == "arm64") {
+- if (is_linux || is_android) {
++ if (is_linux || is_bsd || is_android) {
+ sources += crypto_sources_linux_aarch64
+ } else if (is_ios) {
+ sources += crypto_sources_ios_aarch64
diff --git a/devel/electron5/files/patch-third__party_boringssl_src_crypto_cpu-aarch64-linux.c b/devel/electron5/files/patch-third__party_boringssl_src_crypto_cpu-aarch64-linux.c
new file mode 100644
index 000000000000..301402403373
--- /dev/null
+++ b/devel/electron5/files/patch-third__party_boringssl_src_crypto_cpu-aarch64-linux.c
@@ -0,0 +1,63 @@
+--- third_party/boringssl/src/crypto/cpu-aarch64-linux.c.orig 2019-04-20 10:47:08 UTC
++++ third_party/boringssl/src/crypto/cpu-aarch64-linux.c
+@@ -14,49 +14,35 @@
+
+ #include <openssl/cpu.h>
+
+-#if defined(OPENSSL_AARCH64) && defined(OPENSSL_LINUX) && \
+- !defined(OPENSSL_STATIC_ARMCAP)
++#if defined(OPENSSL_AARCH64)
+
+-#include <sys/auxv.h>
+-
+ #include <openssl/arm_arch.h>
+
+ #include "internal.h"
+
+-
+ extern uint32_t OPENSSL_armcap_P;
+
++#include <sys/types.h>
++#include <machine/armreg.h>
++
+ void OPENSSL_cpuid_setup(void) {
+- unsigned long hwcap = getauxval(AT_HWCAP);
++ uint64_t id_aa64isar0;
+
+- // See /usr/include/asm/hwcap.h on an aarch64 installation for the source of
+- // these values.
+- static const unsigned long kNEON = 1 << 1;
+- static const unsigned long kAES = 1 << 3;
+- static const unsigned long kPMULL = 1 << 4;
+- static const unsigned long kSHA1 = 1 << 5;
+- static const unsigned long kSHA256 = 1 << 6;
++ id_aa64isar0 = READ_SPECIALREG(ID_AA64ISAR0_EL1);
+
+- if ((hwcap & kNEON) == 0) {
+- // Matching OpenSSL, if NEON is missing, don't report other features
+- // either.
+- return;
+- }
+-
+ OPENSSL_armcap_P |= ARMV7_NEON;
+
+- if (hwcap & kAES) {
++ if (ID_AA64ISAR0_AES(id_aa64isar0) == ID_AA64ISAR0_AES_BASE) {
+ OPENSSL_armcap_P |= ARMV8_AES;
+ }
+- if (hwcap & kPMULL) {
++ if (ID_AA64ISAR0_AES(id_aa64isar0) == ID_AA64ISAR0_AES_PMULL) {
+ OPENSSL_armcap_P |= ARMV8_PMULL;
+ }
+- if (hwcap & kSHA1) {
++ if (ID_AA64ISAR0_SHA1(id_aa64isar0) == ID_AA64ISAR0_SHA1_BASE) {
+ OPENSSL_armcap_P |= ARMV8_SHA1;
+ }
+- if (hwcap & kSHA256) {
++ if(ID_AA64ISAR0_SHA2(id_aa64isar0) == ID_AA64ISAR0_SHA2_BASE) {
+ OPENSSL_armcap_P |= ARMV8_SHA256;
+ }
+ }
+-
+-#endif // OPENSSL_AARCH64 && !OPENSSL_STATIC_ARMCAP
++#endif // OPENSSL_AARCH64
diff --git a/devel/electron5/files/patch-third__party_boringssl_src_crypto_ex__data.c b/devel/electron5/files/patch-third__party_boringssl_src_crypto_ex__data.c
new file mode 100644
index 000000000000..2311dfba1b64
--- /dev/null
+++ b/devel/electron5/files/patch-third__party_boringssl_src_crypto_ex__data.c
@@ -0,0 +1,13 @@
+--- third_party/boringssl/src/crypto/ex_data.c.orig 2019-04-08 08:20:18 UTC
++++ third_party/boringssl/src/crypto/ex_data.c
+@@ -186,7 +186,9 @@ int CRYPTO_set_ex_data(CRYPTO_EX_DATA *ad, int index,
+ }
+ }
+
+- sk_void_set(ad->sk, index, val);
++ // expression result unused; should this cast be to 'void'?
++ // seems it should, feel free to investigate those #def
++ (void) sk_void_set(ad->sk, index, val);
+ return 1;
+ }
+
diff --git a/devel/electron5/files/patch-third__party_breakpad_breakpad_src_common_simple__string__dictionary.h b/devel/electron5/files/patch-third__party_breakpad_breakpad_src_common_simple__string__dictionary.h
new file mode 100644
index 000000000000..747642a65399
--- /dev/null
+++ b/devel/electron5/files/patch-third__party_breakpad_breakpad_src_common_simple__string__dictionary.h
@@ -0,0 +1,11 @@
+--- third_party/breakpad/breakpad/src/common/simple_string_dictionary.h.orig 2019-04-08 08:19:57 UTC
++++ third_party/breakpad/breakpad/src/common/simple_string_dictionary.h
+@@ -33,7 +33,7 @@
+ #include <assert.h>
+ #include <string.h>
+
+-#include "common/basictypes.h"
++#include "third_party/breakpad/breakpad/src/common/basictypes.h"
+
+ namespace google_breakpad {
+
diff --git a/devel/electron5/files/patch-third__party_cacheinvalidation_src_google_cacheinvalidation_include_types.h b/devel/electron5/files/patch-third__party_cacheinvalidation_src_google_cacheinvalidation_include_types.h
new file mode 100644
index 000000000000..6082c62aa021
--- /dev/null
+++ b/devel/electron5/files/patch-third__party_cacheinvalidation_src_google_cacheinvalidation_include_types.h
@@ -0,0 +1,11 @@
+--- third_party/cacheinvalidation/src/google/cacheinvalidation/include/types.h.orig 2019-04-08 08:19:06 UTC
++++ third_party/cacheinvalidation/src/google/cacheinvalidation/include/types.h
+@@ -334,6 +334,8 @@ class Status {
+ */
+ PERMANENT_FAILURE
+ };
++
++ Status() : code_(SUCCESS), message_() {}
+
+ /* Creates a new Status object given the code and message. */
+ Status(Code code, const string& message) : code_(code), message_(message) {}
diff --git a/devel/electron5/files/patch-third__party_crashpad_crashpad_build_crashpad__buildconfig.gni b/devel/electron5/files/patch-third__party_crashpad_crashpad_build_crashpad__buildconfig.gni
new file mode 100644
index 000000000000..1610687b2c8e
--- /dev/null
+++ b/devel/electron5/files/patch-third__party_crashpad_crashpad_build_crashpad__buildconfig.gni
@@ -0,0 +1,11 @@
+--- third_party/crashpad/crashpad/build/crashpad_buildconfig.gni.orig 2019-04-08 08:19:06 UTC
++++ third_party/crashpad/crashpad/build/crashpad_buildconfig.gni
+@@ -38,7 +38,7 @@ crashpad_is_standalone = crashpad_dependencies == "sta
+ if (crashpad_is_in_chromium) {
+ crashpad_is_mac = is_mac
+ crashpad_is_win = is_win
+- crashpad_is_linux = is_linux
++ crashpad_is_linux = is_linux && !is_bsd
+ crashpad_is_android = is_android
+ crashpad_is_fuchsia = is_fuchsia
+
diff --git a/devel/electron5/files/patch-third__party_crashpad_crashpad_client_BUILD.gn b/devel/electron5/files/patch-third__party_crashpad_crashpad_client_BUILD.gn
new file mode 100644
index 000000000000..4fb6b49e546b
--- /dev/null
+++ b/devel/electron5/files/patch-third__party_crashpad_crashpad_client_BUILD.gn
@@ -0,0 +1,15 @@
+--- third_party/crashpad/crashpad/client/BUILD.gn.orig 2019-04-08 08:19:06 UTC
++++ third_party/crashpad/crashpad/client/BUILD.gn
+@@ -71,6 +71,12 @@ static_library("client") {
+ sources += [ "crashpad_client_fuchsia.cc" ]
+ }
+
++ if (crashpad_is_posix) {
++ sources += [
++ "crashpad_client_posix.cc",
++ ]
++ }
++
+ if (crashpad_is_linux || crashpad_is_android || crashpad_is_fuchsia) {
+ sources += [ "crash_report_database_generic.cc" ]
+ }
diff --git a/devel/electron5/files/patch-third__party_crashpad_crashpad_client_crashpad__client__posix.cc b/devel/electron5/files/patch-third__party_crashpad_crashpad_client_crashpad__client__posix.cc
new file mode 100644
index 000000000000..deae8fe68399
--- /dev/null
+++ b/devel/electron5/files/patch-third__party_crashpad_crashpad_client_crashpad__client__posix.cc
@@ -0,0 +1,41 @@
+--- third_party/crashpad/crashpad/client/crashpad_client_posix.cc.orig 2019-04-09 12:48:49 UTC
++++ third_party/crashpad/crashpad/client/crashpad_client_posix.cc
+@@ -0,0 +1,38 @@
++// Copyright 2017 The Crashpad Authors. All rights reserved.
++//
++// Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0
++//
++// 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.
++
++#include "client/crashpad_client.h"
++
++#include "base/logging.h"
++
++namespace crashpad {
++
++CrashpadClient::CrashpadClient() {}
++
++CrashpadClient::~CrashpadClient() {}
++
++bool CrashpadClient::StartHandler(
++ const base::FilePath& handler,
++ const base::FilePath& database,
++ const base::FilePath& metrics_dir,
++ const std::string& url,
++ const std::map<std::string, std::string>& annotations,
++ const std::vector<std::string>& arguments,
++ bool restartable,
++ bool asynchronous_start) {
++ NOTREACHED(); // TODO(scottmg): https://crashpad.chromium.org/bug/196
++ return false;
++}
++
++} // namespace crashpad
diff --git a/devel/electron5/files/patch-third__party_crashpad_crashpad_util_misc_address__types.h b/devel/electron5/files/patch-third__party_crashpad_crashpad_util_misc_address__types.h
new file mode 100644
index 000000000000..87dc1a47e85b
--- /dev/null
+++ b/devel/electron5/files/patch-third__party_crashpad_crashpad_util_misc_address__types.h
@@ -0,0 +1,20 @@
+--- third_party/crashpad/crashpad/util/misc/address_types.h.orig 2019-04-08 08:19:06 UTC
++++ third_party/crashpad/crashpad/util/misc/address_types.h
+@@ -25,7 +25,7 @@
+ #include <mach/mach_types.h>
+ #elif defined(OS_WIN)
+ #include "util/win/address_types.h"
+-#elif defined(OS_LINUX) || defined(OS_ANDROID)
++#elif defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
+ #include "util/linux/address_types.h"
+ #elif defined(OS_FUCHSIA)
+ #include <zircon/types.h>
+@@ -55,7 +55,7 @@ using VMSize = mach_vm_size_t;
+ using VMAddress = WinVMAddress;
+ using VMSize = WinVMSize;
+
+-#elif defined(OS_LINUX) || defined(OS_ANDROID)
++#elif defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
+
+ using VMAddress = LinuxVMAddress;
+ using VMSize = LinuxVMSize;
diff --git a/devel/electron5/files/patch-third__party_crashpad_crashpad_util_misc_capture__context.h b/devel/electron5/files/patch-third__party_crashpad_crashpad_util_misc_capture__context.h
new file mode 100644
index 000000000000..92cc4b47decc
--- /dev/null
+++ b/devel/electron5/files/patch-third__party_crashpad_crashpad_util_misc_capture__context.h
@@ -0,0 +1,20 @@
+--- third_party/crashpad/crashpad/util/misc/capture_context.h.orig 2019-04-08 08:19:06 UTC
++++ third_party/crashpad/crashpad/util/misc/capture_context.h
+@@ -21,7 +21,7 @@
+ #include <mach/mach.h>
+ #elif defined(OS_WIN)
+ #include <windows.h>
+-#elif defined(OS_LINUX) || defined(OS_ANDROID)
++#elif defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
+ #include <ucontext.h>
+ #elif defined(OS_FUCHSIA)
+ #include <signal.h>
+@@ -35,7 +35,7 @@ using NativeCPUContext = x86_thread_state;
+ #endif
+ #elif defined(OS_WIN)
+ using NativeCPUContext = CONTEXT;
+-#elif defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_FUCHSIA)
++#elif defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_FUCHSIA) || defined(OS_BSD)
+ using NativeCPUContext = ucontext_t;
+ #endif // OS_MACOSX
+
diff --git a/devel/electron5/files/patch-third__party_crashpad_crashpad_util_misc_metrics.cc b/devel/electron5/files/patch-third__party_crashpad_crashpad_util_misc_metrics.cc
new file mode 100644
index 000000000000..74cc0a55ae5e
--- /dev/null
+++ b/devel/electron5/files/patch-third__party_crashpad_crashpad_util_misc_metrics.cc
@@ -0,0 +1,11 @@
+--- third_party/crashpad/crashpad/util/misc/metrics.cc.orig 2019-04-08 08:19:06 UTC
++++ third_party/crashpad/crashpad/util/misc/metrics.cc
+@@ -25,7 +25,7 @@
+ #define METRICS_OS_NAME "Win"
+ #elif defined(OS_ANDROID)
+ #define METRICS_OS_NAME "Android"
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ #define METRICS_OS_NAME "Linux"
+ #elif defined(OS_FUCHSIA)
+ #define METRICS_OS_NAME "Fuchsia"
diff --git a/devel/electron5/files/patch-third__party_crashpad_crashpad_util_misc_uuid.cc b/devel/electron5/files/patch-third__party_crashpad_crashpad_util_misc_uuid.cc
new file mode 100644
index 000000000000..832c99d5cf4e
--- /dev/null
+++ b/devel/electron5/files/patch-third__party_crashpad_crashpad_util_misc_uuid.cc
@@ -0,0 +1,11 @@
+--- third_party/crashpad/crashpad/util/misc/uuid.cc.orig 2019-04-08 08:19:06 UTC
++++ third_party/crashpad/crashpad/util/misc/uuid.cc
+@@ -95,7 +95,7 @@ bool UUID::InitializeWithNew() {
+ InitializeFromBytes(uuid);
+ return true;
+ #elif defined(OS_WIN) || defined(OS_LINUX) || defined(OS_ANDROID) || \
+- defined(OS_FUCHSIA)
++ defined(OS_FUCHSIA) || defined(OS_BSD)
+ // Linux, Android, and Fuchsia do not provide a UUID generator in a
+ // widely-available system library. On Linux and Android, uuid_generate()
+ // from libuuid is not available everywhere.
diff --git a/devel/electron5/files/patch-third__party_crashpad_crashpad_util_posix_close__multiple.cc b/devel/electron5/files/patch-third__party_crashpad_crashpad_util_posix_close__multiple.cc
new file mode 100644
index 000000000000..7eeddd3fef9c
--- /dev/null
+++ b/devel/electron5/files/patch-third__party_crashpad_crashpad_util_posix_close__multiple.cc
@@ -0,0 +1,29 @@
+--- third_party/crashpad/crashpad/util/posix/close_multiple.cc.orig 2019-04-08 08:19:07 UTC
++++ third_party/crashpad/crashpad/util/posix/close_multiple.cc
+@@ -31,7 +31,7 @@
+ #include "util/file/directory_reader.h"
+ #include "util/misc/implicit_cast.h"
+
+-#if defined(OS_MACOSX)
++#if defined(OS_MACOSX) || defined(OS_BSD)
+ #include <sys/sysctl.h>
+ #endif
+
+@@ -72,7 +72,7 @@ void CloseNowOrOnExec(int fd, bool ebadf_ok) {
+ // This is an advantage over looping over all possible file descriptors, because
+ // no attempt needs to be made to close file descriptors that are not open.
+ bool CloseMultipleNowOrOnExecUsingFDDir(int min_fd, int preserve_fd) {
+-#if defined(OS_MACOSX)
++#if defined(OS_MACOSX) || defined(OS_BSD)
+ static constexpr char kFDDir[] = "/dev/fd";
+ #elif defined(OS_LINUX) || defined(OS_ANDROID)
+ static constexpr char kFDDir[] = "/proc/self/fd";
+@@ -146,7 +146,7 @@ void CloseMultipleNowOrOnExec(int fd, int preserve_fd)
+ // while the system is running, but it’s still a better upper bound than the
+ // current RLIMIT_NOFILE value.
+
+-#if defined(OS_MACOSX)
++#if defined(OS_MACOSX) || defined(OS_BSD)
+ // See 10.11.6 xnu-3248.60.10/bsd/kern/kern_resource.c maxfilesperproc,
+ // referenced by dosetrlimit().
+ int oid[] = {CTL_KERN, KERN_MAXFILESPERPROC};
diff --git a/devel/electron5/files/patch-third__party_crashpad_crashpad_util_posix_drop__privileges.cc b/devel/electron5/files/patch-third__party_crashpad_crashpad_util_posix_drop__privileges.cc
new file mode 100644
index 000000000000..e448d8c90254
--- /dev/null
+++ b/devel/electron5/files/patch-third__party_crashpad_crashpad_util_posix_drop__privileges.cc
@@ -0,0 +1,11 @@
+--- third_party/crashpad/crashpad/util/posix/drop_privileges.cc.orig 2019-04-08 08:19:07 UTC
++++ third_party/crashpad/crashpad/util/posix/drop_privileges.cc
+@@ -23,7 +23,7 @@ void DropPrivileges() {
+ gid_t gid = getgid();
+ uid_t uid = getuid();
+
+-#if defined(OS_MACOSX)
++#if defined(OS_MACOSX) || defined(OS_BSD)
+ // Based on the POSIX.1-2008 2013 edition documentation for setreuid() and
+ // setregid(), setreuid() and setregid() alone should be sufficient to drop
+ // privileges. The standard specifies that the saved ID should be set to the
diff --git a/devel/electron5/files/patch-third__party_crashpad_crashpad_util_posix_signals.cc b/devel/electron5/files/patch-third__party_crashpad_crashpad_util_posix_signals.cc
new file mode 100644
index 000000000000..c24f14bbdd7e
--- /dev/null
+++ b/devel/electron5/files/patch-third__party_crashpad_crashpad_util_posix_signals.cc
@@ -0,0 +1,40 @@
+--- third_party/crashpad/crashpad/util/posix/signals.cc.orig 2019-04-08 08:19:07 UTC
++++ third_party/crashpad/crashpad/util/posix/signals.cc
+@@ -45,10 +45,10 @@ constexpr int kCrashSignals[] = {
+ #if defined(SIGEMT)
+ SIGEMT,
+ #endif // defined(SIGEMT)
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ SIGXCPU,
+ SIGXFSZ,
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+ };
+
+ // These are the non-core-generating but terminating signals.
+@@ -85,9 +85,9 @@ constexpr int kTerminateSignals[] = {
+ SIGXCPU,
+ SIGXFSZ,
+ #endif // defined(OS_MACOSX)
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ SIGIO,
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+ };
+
+ bool InstallHandlers(const std::vector<int>& signals,
+@@ -216,8 +216,12 @@ bool Signals::WillSignalReraiseAutonomously(const sigi
+ // remains. See 10.12.3 xnu-3789.41.3/bsd/kern/kern_sig.c
+ // psignal_internal().
+ (code > 0 &&
++#if defined(SI_ASYNCIO)
+ code != SI_ASYNCIO &&
++#endif
++#if defined(SI_MESGQ)
+ code != SI_MESGQ &&
++#endif
+ code != SI_QUEUE &&
+ code != SI_TIMER &&
+ code != SI_USER &&
diff --git a/devel/electron5/files/patch-third__party_crashpad_crashpad_util_posix_symbolic__constants__posix.cc b/devel/electron5/files/patch-third__party_crashpad_crashpad_util_posix_symbolic__constants__posix.cc
new file mode 100644
index 000000000000..f1602bf0fefb
--- /dev/null
+++ b/devel/electron5/files/patch-third__party_crashpad_crashpad_util_posix_symbolic__constants__posix.cc
@@ -0,0 +1,20 @@
+--- third_party/crashpad/crashpad/util/posix/symbolic_constants_posix.cc.orig 2019-04-08 08:19:07 UTC
++++ third_party/crashpad/crashpad/util/posix/symbolic_constants_posix.cc
+@@ -64,7 +64,7 @@ constexpr const char* kSignalNames[] = {
+ "INFO",
+ "USR1",
+ "USR2",
+-#elif defined(OS_LINUX) || defined(OS_ANDROID)
++#elif defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
+ #if defined(ARCH_CPU_MIPS_FAMILY)
+ "HUP",
+ "INT",
+@@ -135,7 +135,7 @@ constexpr const char* kSignalNames[] = {
+ #endif // defined(ARCH_CPU_MIPS_FAMILY)
+ #endif
+ };
+-#if defined(OS_LINUX) || defined(OS_ANDROID)
++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
+ // NSIG is 64 to account for real-time signals.
+ static_assert(base::size(kSignalNames) == 32, "kSignalNames length");
+ #else
diff --git a/devel/electron5/files/patch-third__party_crc32c_src_src_crc32c__arm64__linux__check.h b/devel/electron5/files/patch-third__party_crc32c_src_src_crc32c__arm64__linux__check.h
new file mode 100644
index 000000000000..55f002d1bd79
--- /dev/null
+++ b/devel/electron5/files/patch-third__party_crc32c_src_src_crc32c__arm64__linux__check.h
@@ -0,0 +1,53 @@
+--- third_party/crc32c/src/src/crc32c_arm64_linux_check.h.orig 2019-04-20 10:46:48 UTC
++++ third_party/crc32c/src/src/crc32c_arm64_linux_check.h
+@@ -7,8 +7,6 @@
+ #ifndef CRC32C_CRC32C_ARM_LINUX_CHECK_H_
+ #define CRC32C_CRC32C_ARM_LINUX_CHECK_H_
+
+-// X86-specific code checking for the availability of SSE4.2 instructions.
+-
+ #include <cstddef>
+ #include <cstdint>
+
+@@ -16,30 +14,19 @@
+
+ #if HAVE_ARM64_CRC32C
+
+-#if HAVE_STRONG_GETAUXVAL
+-#include <sys/auxv.h>
+-#elif HAVE_WEAK_GETAUXVAL
+-// getauxval() is not available on Android until API level 20. Link it as a weak
+-// symbol.
+-extern "C" unsigned long getauxval(unsigned long type) __attribute__((weak));
+-
+-#define AT_HWCAP 16
+-#endif // HAVE_STRONG_GETAUXVAL || HAVE_WEAK_GETAUXVAL
+-
++#include <machine/armreg.h>
++#include <sys/types.h>
+ namespace crc32c {
+
+-inline bool CanUseArm64Linux() {
+-#if HAVE_STRONG_GETAUXVAL || HAVE_WEAK_GETAUXVAL
+- // From 'arch/arm64/include/uapi/asm/hwcap.h' in Linux kernel source code.
+- constexpr unsigned long kHWCAP_PMULL = 1 << 4;
+- constexpr unsigned long kHWCAP_CRC32 = 1 << 7;
+- unsigned long hwcap = (&getauxval != nullptr) ? getauxval(AT_HWCAP) : 0;
+- return (hwcap & (kHWCAP_PMULL | kHWCAP_CRC32)) ==
+- (kHWCAP_PMULL | kHWCAP_CRC32);
+-#else
+- return false;
+-#endif // HAVE_STRONG_GETAUXVAL || HAVE_WEAK_GETAUXVAL
+-}
++ inline bool CanUseArm64Linux() {
++ uint64_t id_aa64isar0;
++
++ id_aa64isar0 = READ_SPECIALREG(ID_AA64ISAR0_EL1);
++ if ((ID_AA64ISAR0_AES(id_aa64isar0) == ID_AA64ISAR0_AES_PMULL) && \
++ (ID_AA64ISAR0_CRC32(id_aa64isar0) == ID_AA64ISAR0_CRC32_BASE))
++ return true;
++ return false;
++ }
+
+ } // namespace crc32c
+
diff --git a/devel/electron5/files/patch-third__party_electron__node_deps_uv_BUILD.gn b/devel/electron5/files/patch-third__party_electron__node_deps_uv_BUILD.gn
new file mode 100644
index 000000000000..d83be9372341
--- /dev/null
+++ b/devel/electron5/files/patch-third__party_electron__node_deps_uv_BUILD.gn
@@ -0,0 +1,45 @@
+--- third_party/electron_node/deps/uv/BUILD.gn.orig 2019-03-05 17:17:42 UTC
++++ third_party/electron_node/deps/uv/BUILD.gn
+@@ -3,7 +3,7 @@ config("libuv_config") {
+
+ defines = []
+
+- if (is_linux) {
++ if (is_linux && !is_bsd) {
+ defines += [ "_POSIX_C_SOURCE=200112" ]
+ }
+ if (!is_win) {
+@@ -147,7 +147,7 @@ static_library("uv") {
+ libs += [ "m" ]
+ ldflags += [ "-pthread" ]
+ }
+- if (is_mac || is_linux) {
++ if (is_mac || (is_linux && !is_bsd)) {
+ sources += [ "src/unix/proctitle.c" ]
+ }
+ if (is_mac) {
+@@ -161,7 +161,7 @@ static_library("uv") {
+ "_DARWIN_UNLIMITED_SELECT=1",
+ ]
+ }
+- if (is_linux) {
++ if (is_linux && !is_bsd) {
+ defines += [ "_GNU_SOURCE" ]
+ sources += [
+ "src/unix/linux-core.c",
+@@ -181,6 +181,15 @@ static_library("uv") {
+ sources += [
+ "src/unix/bsd-ifaddrs.c",
+ "src/unix/kqueue.c",
++ ]
++ }
++ if (is_bsd) {
++ sources += [
++ "src/unix/bsd-ifaddrs.c",
++ "src/unix/bsd-proctitle.c",
++ "src/unix/freebsd.c",
++ "src/unix/kqueue.c",
++ "src/unix/posix-hrtime.c",
+ ]
+ }
+ }
diff --git a/devel/electron5/files/patch-third__party_ffmpeg_libavutil_mem.c b/devel/electron5/files/patch-third__party_ffmpeg_libavutil_mem.c
new file mode 100644
index 000000000000..7304d1869b3f
--- /dev/null
+++ b/devel/electron5/files/patch-third__party_ffmpeg_libavutil_mem.c
@@ -0,0 +1,12 @@
+--- third_party/ffmpeg/libavutil/mem.c.orig 2019-04-08 08:34:04 UTC
++++ third_party/ffmpeg/libavutil/mem.c
+@@ -32,9 +32,6 @@
+ #include <stdint.h>
+ #include <stdlib.h>
+ #include <string.h>
+-#if HAVE_MALLOC_H
+-#include <malloc.h>
+-#endif
+
+ #include "avassert.h"
+ #include "avutil.h"
diff --git a/devel/electron5/files/patch-third__party_googletest_src_googletest_include_gtest_internal_gtest-port.h b/devel/electron5/files/patch-third__party_googletest_src_googletest_include_gtest_internal_gtest-port.h
new file mode 100644
index 000000000000..3a14afec3e86
--- /dev/null
+++ b/devel/electron5/files/patch-third__party_googletest_src_googletest_include_gtest_internal_gtest-port.h
@@ -0,0 +1,11 @@
+--- third_party/googletest/src/googletest/include/gtest/internal/gtest-port.h.orig 2019-04-08 08:34:16 UTC
++++ third_party/googletest/src/googletest/include/gtest/internal/gtest-port.h
+@@ -623,7 +623,7 @@ typedef struct _RTL_CRITICAL_SECTION GTEST_CRITICAL_SE
+ (GTEST_OS_WINDOWS || GTEST_OS_CYGWIN || GTEST_OS_AIX || GTEST_OS_OS2)
+
+ // Determines whether test results can be streamed to a socket.
+-#if GTEST_OS_LINUX
++#if GTEST_OS_LINUX || GTEST_OS_FREEBSD
+ # define GTEST_CAN_STREAM_RESULTS_ 1
+ #endif
+
diff --git a/devel/electron5/files/patch-third__party_googletest_src_googletest_src_gtest-port.cc b/devel/electron5/files/patch-third__party_googletest_src_googletest_src_gtest-port.cc
new file mode 100644
index 000000000000..975546cfb897
--- /dev/null
+++ b/devel/electron5/files/patch-third__party_googletest_src_googletest_src_gtest-port.cc
@@ -0,0 +1,43 @@
+--- third_party/googletest/src/googletest/src/gtest-port.cc.orig 2019-04-08 08:34:16 UTC
++++ third_party/googletest/src/googletest/src/gtest-port.cc
+@@ -55,6 +55,11 @@
+ # include <mach/vm_map.h>
+ #endif // GTEST_OS_MAC
+
++#if GTEST_OS_FREEBSD
++#include <sys/sysctl.h>
++#include <sys/user.h>
++#endif
++
+ #if GTEST_OS_QNX
+ # include <devctl.h>
+ # include <fcntl.h>
+@@ -129,6 +134,28 @@ size_t GetThreadCount() {
+ } else {
+ return 0;
+ }
++}
++
++#elif GTEST_OS_FREEBSD
++
++#define KP_NLWP(kp) (kp.ki_numthreads)
++
++// Return the number of threads running in the process, or 0 to indicate that
++// we cannot detect it.
++size_t GetThreadCount() {
++ int mib[] = {
++ CTL_KERN,
++ KERN_PROC,
++ KERN_PROC_PID,
++ getpid(),
++ };
++ u_int miblen = sizeof(mib) / sizeof(mib[0]);
++ struct kinfo_proc(info);
++ size_t size = sizeof(info);
++ if (sysctl(mib, miblen, &info, &size, NULL, 0)) {
++ return 0;
++ }
++ return KP_NLWP(info);
+ }
+
+ #elif GTEST_OS_QNX
diff --git a/devel/electron5/files/patch-third__party_googletest_src_googletest_src_gtest.cc b/devel/electron5/files/patch-third__party_googletest_src_googletest_src_gtest.cc
new file mode 100644
index 000000000000..8965b5c8a4f6
--- /dev/null
+++ b/devel/electron5/files/patch-third__party_googletest_src_googletest_src_gtest.cc
@@ -0,0 +1,10 @@
+--- third_party/googletest/src/googletest/src/gtest.cc.orig 2019-04-08 08:34:16 UTC
++++ third_party/googletest/src/googletest/src/gtest.cc
+@@ -114,6 +114,7 @@
+
+ #if GTEST_CAN_STREAM_RESULTS_
+ # include <arpa/inet.h> // NOLINT
++# include <sys/socket.h> // NOLINT
+ # include <netdb.h> // NOLINT
+ # include <sys/socket.h> // NOLINT
+ # include <sys/types.h> // NOLINT
diff --git a/devel/electron5/files/patch-third__party_googletest_src_googletest_test_googletest-port-test.cc b/devel/electron5/files/patch-third__party_googletest_src_googletest_test_googletest-port-test.cc
new file mode 100644
index 000000000000..9b63ca59ceac
--- /dev/null
+++ b/devel/electron5/files/patch-third__party_googletest_src_googletest_test_googletest-port-test.cc
@@ -0,0 +1,11 @@
+--- third_party/googletest/src/googletest/test/googletest-port-test.cc.orig 2019-04-08 08:34:16 UTC
++++ third_party/googletest/src/googletest/test/googletest-port-test.cc
+@@ -286,7 +286,7 @@ TEST(FormatCompilerIndependentFileLocationTest, Format
+ EXPECT_EQ("unknown file", FormatCompilerIndependentFileLocation(nullptr, -1));
+ }
+
+-#if GTEST_OS_LINUX || GTEST_OS_MAC || GTEST_OS_QNX || GTEST_OS_FUCHSIA
++#if GTEST_OS_LINUX || GTEST_OS_MAC || GTEST_OS_QNX || GTEST_OS_FUCHSIA || GTEST_OS_FREEBSD
+ void* ThreadFunc(void* data) {
+ internal::Mutex* mutex = static_cast<internal::Mutex*>(data);
+ mutex->Lock();
diff --git a/devel/electron5/files/patch-third__party_leveldatabase_env__chromium.cc b/devel/electron5/files/patch-third__party_leveldatabase_env__chromium.cc
new file mode 100644
index 000000000000..e6c2135d1aa1
--- /dev/null
+++ b/devel/electron5/files/patch-third__party_leveldatabase_env__chromium.cc
@@ -0,0 +1,14 @@
+--- third_party/leveldatabase/env_chromium.cc.orig 2019-04-08 08:33:17 UTC
++++ third_party/leveldatabase/env_chromium.cc
+@@ -39,7 +39,11 @@
+ #include "third_party/leveldatabase/leveldb_chrome.h"
+ #include "third_party/leveldatabase/leveldb_features.h"
+ #include "third_party/leveldatabase/src/include/leveldb/options.h"
++#if defined(OS_BSD)
++#include <re2/re2.h>
++#else
+ #include "third_party/re2/src/re2/re2.h"
++#endif
+
+ using base::FilePath;
+ using base::trace_event::MemoryAllocatorDump;
diff --git a/devel/electron5/files/patch-third__party_libXNVCtrl_NVCtrl.c b/devel/electron5/files/patch-third__party_libXNVCtrl_NVCtrl.c
new file mode 100644
index 000000000000..a8e1b30f7938
--- /dev/null
+++ b/devel/electron5/files/patch-third__party_libXNVCtrl_NVCtrl.c
@@ -0,0 +1,25 @@
+--- third_party/libXNVCtrl/NVCtrl.c.orig 2019-04-08 08:19:07 UTC
++++ third_party/libXNVCtrl/NVCtrl.c
+@@ -27,10 +27,6 @@
+ * libXNVCtrl library properly protects the Display connection.
+ */
+
+-#if !defined(XTHREADS)
+-#define XTHREADS
+-#endif /* XTHREADS */
+-
+ #define NEED_EVENTS
+ #define NEED_REPLIES
+ #include <stdint.h>
+@@ -39,6 +35,11 @@
+ #include <X11/Xutil.h>
+ #include <X11/extensions/Xext.h>
+ #include <X11/extensions/extutil.h>
++
++#if !defined(XTHREADS)
++#define XTHREADS
++#endif /* XTHREADS */
++
+ #include "NVCtrlLib.h"
+ #include "nv_control.h"
+
diff --git a/devel/electron5/files/patch-third__party_libjingle__xmpp_task__runner_taskrunner.cc b/devel/electron5/files/patch-third__party_libjingle__xmpp_task__runner_taskrunner.cc
new file mode 100644
index 000000000000..b0cec81984e5
--- /dev/null
+++ b/devel/electron5/files/patch-third__party_libjingle__xmpp_task__runner_taskrunner.cc
@@ -0,0 +1,11 @@
+--- third_party/libjingle_xmpp/task_runner/taskrunner.cc.orig 2019-04-08 08:33:17 UTC
++++ third_party/libjingle_xmpp/task_runner/taskrunner.cc
+@@ -80,7 +80,7 @@ void TaskRunner::InternalRunTasks(bool in_destructor)
+ std::vector<Task *>::iterator it;
+ it = std::remove(tasks_.begin(),
+ tasks_.end(),
+- reinterpret_cast<Task *>(NULL));
++ static_cast<Task *>(NULL));
+
+ tasks_.erase(it, tasks_.end());
+ tasks_running_ = false;
diff --git a/devel/electron5/files/patch-third__party_libphonenumber_dist_cpp_src_phonenumbers_base_memory_singleton.h b/devel/electron5/files/patch-third__party_libphonenumber_dist_cpp_src_phonenumbers_base_memory_singleton.h
new file mode 100644
index 000000000000..a51c272ab418
--- /dev/null
+++ b/devel/electron5/files/patch-third__party_libphonenumber_dist_cpp_src_phonenumbers_base_memory_singleton.h
@@ -0,0 +1,11 @@
+--- third_party/libphonenumber/dist/cpp/src/phonenumbers/base/memory/singleton.h.orig 2019-04-08 08:21:36 UTC
++++ third_party/libphonenumber/dist/cpp/src/phonenumbers/base/memory/singleton.h
+@@ -56,7 +56,7 @@ template <class T> boost::once_flag Singleton<T>::flag
+ #include "phonenumbers/base/logging.h"
+ #include "phonenumbers/base/thread_checker.h"
+
+-#if !defined(__linux__) && !defined(__APPLE__)
++#if !defined(__linux__) && !defined(__APPLE__) && !defined(__FreeBSD__) && !defined(__OpenBSD__)
+
+ namespace i18n {
+ namespace phonenumbers {
diff --git a/devel/electron5/files/patch-third__party_libphonenumber_dist_cpp_src_phonenumbers_base_synchronization_lock.h b/devel/electron5/files/patch-third__party_libphonenumber_dist_cpp_src_phonenumbers_base_synchronization_lock.h
new file mode 100644
index 000000000000..8dd61badaf0b
--- /dev/null
+++ b/devel/electron5/files/patch-third__party_libphonenumber_dist_cpp_src_phonenumbers_base_synchronization_lock.h
@@ -0,0 +1,11 @@
+--- third_party/libphonenumber/dist/cpp/src/phonenumbers/base/synchronization/lock.h.orig 2019-04-08 08:21:36 UTC
++++ third_party/libphonenumber/dist/cpp/src/phonenumbers/base/synchronization/lock.h
+@@ -37,7 +37,7 @@ typedef boost::mutex::scoped_lock AutoLock;
+ // Dummy lock implementation on non-POSIX platforms. If you are running on a
+ // different platform and care about thread-safety, please compile with
+ // -DI18N_PHONENUMBERS_USE_BOOST.
+-#if !defined(__linux__) && !defined(__APPLE__)
++#if !defined(__linux__) && !defined(__APPLE__) && !defined(__FreeBSD__) && !defined(__OpenBSD__)
+
+ namespace i18n {
+ namespace phonenumbers {
diff --git a/devel/electron5/files/patch-third__party_libphonenumber_dist_cpp_src_phonenumbers_base_thread__checker.h b/devel/electron5/files/patch-third__party_libphonenumber_dist_cpp_src_phonenumbers_base_thread__checker.h
new file mode 100644
index 000000000000..aedc6260ca23
--- /dev/null
+++ b/devel/electron5/files/patch-third__party_libphonenumber_dist_cpp_src_phonenumbers_base_thread__checker.h
@@ -0,0 +1,19 @@
+--- third_party/libphonenumber/dist/cpp/src/phonenumbers/base/thread_checker.h.orig 2019-04-08 08:21:36 UTC
++++ third_party/libphonenumber/dist/cpp/src/phonenumbers/base/thread_checker.h
+@@ -23,6 +23,7 @@
+ // user of the library know that it can't be used in a thread-safe manner when
+ // it is not depending on Boost.
+ #if !defined(__linux__) && !defined(__APPLE__) && \
++ !defined(__FreeBSD__) && !defined(__OpenBSD__) && \
+ !defined(I18N_PHONENUMBERS_NO_THREAD_SAFETY)
+ #error Building without Boost, please provide \
+ -DI18N_PHONENUMBERS_NO_THREAD_SAFETY
+@@ -31,7 +32,7 @@
+ #endif
+
+ #if !defined(NDEBUG) && !defined(I18N_PHONENUMBERS_USE_BOOST) && \
+- (defined(__linux__) || defined(__apple__))
++ (defined(__linux__) || defined(__apple__)) || defined(__FreeBSD__) || defined(__OpenBSD__)
+
+ #include <pthread.h>
+
diff --git a/devel/electron5/files/patch-third__party_libyuv_include_libyuv_row.h b/devel/electron5/files/patch-third__party_libyuv_include_libyuv_row.h
new file mode 100644
index 000000000000..28476ef11186
--- /dev/null
+++ b/devel/electron5/files/patch-third__party_libyuv_include_libyuv_row.h
@@ -0,0 +1,37 @@
+--- third_party/libyuv/include/libyuv/row.h.orig 2019-04-08 08:21:44 UTC
++++ third_party/libyuv/include/libyuv/row.h
+@@ -157,10 +157,14 @@ extern "C" {
+ #define HAS_ARGBSHADEROW_SSE2
+ #define HAS_ARGBSUBTRACTROW_SSE2
+ #define HAS_ARGBUNATTENUATEROW_SSE2
++#if !(defined(__i386__) && defined(__GNUC__))
+ #define HAS_BLENDPLANEROW_SSSE3
++#endif
+ #define HAS_COMPUTECUMULATIVESUMROW_SSE2
+ #define HAS_CUMULATIVESUMTOAVERAGEROW_SSE2
++#if !(defined(__i386__) && defined(__GNUC__))
+ #define HAS_INTERPOLATEROW_SSSE3
++#endif
+ #define HAS_RGBCOLORTABLEROW_X86
+ #define HAS_SOBELROW_SSE2
+ #define HAS_SOBELTOPLANEROW_SSE2
+@@ -206,7 +210,9 @@ extern "C" {
+ #define HAS_I422TORGB565ROW_AVX2
+ #define HAS_I422TORGBAROW_AVX2
+ #define HAS_I444TOARGBROW_AVX2
++#if !(defined(__i386__) && defined(__GNUC__))
+ #define HAS_INTERPOLATEROW_AVX2
++#endif
+ #define HAS_J422TOARGBROW_AVX2
+ #define HAS_MERGEUVROW_AVX2
+ #define HAS_MIRRORROW_AVX2
+@@ -231,7 +237,9 @@ extern "C" {
+ #define HAS_ARGBMULTIPLYROW_AVX2
+ #define HAS_ARGBSUBTRACTROW_AVX2
+ #define HAS_ARGBUNATTENUATEROW_AVX2
++#if !(defined(__i386__) && defined(__GNUC__))
+ #define HAS_BLENDPLANEROW_AVX2
++#endif
+
+ #if defined(__x86_64__) || !defined(__pic__) || defined(__clang__) || \
+ defined(_MSC_VER)
diff --git a/devel/electron5/files/patch-third__party_node_node.py b/devel/electron5/files/patch-third__party_node_node.py
new file mode 100644
index 000000000000..2774d7caba08
--- /dev/null
+++ b/devel/electron5/files/patch-third__party_node_node.py
@@ -0,0 +1,10 @@
+--- third_party/node/node.py.orig 2019-04-08 08:19:08 UTC
++++ third_party/node/node.py
+@@ -12,6 +12,7 @@ import sys
+ def GetBinaryPath():
+ return os_path.join(os_path.dirname(__file__), *{
+ 'Darwin': ('mac', 'node-darwin-x64', 'bin', 'node'),
++ 'FreeBSD': ('freebsd', 'node-freebsd-x64', 'bin', 'node'),
+ 'Linux': ('linux', 'node-linux-x64', 'bin', 'node'),
+ 'Windows': ('win', 'node.exe'),
+ }[platform.system()])
diff --git a/devel/electron5/files/patch-third__party_pdfium_core_fxcrt_fx__system.h b/devel/electron5/files/patch-third__party_pdfium_core_fxcrt_fx__system.h
new file mode 100644
index 000000000000..b260cf1f371b
--- /dev/null
+++ b/devel/electron5/files/patch-third__party_pdfium_core_fxcrt_fx__system.h
@@ -0,0 +1,11 @@
+--- third_party/pdfium/core/fxcrt/fx_system.h.orig 2019-04-08 08:34:28 UTC
++++ third_party/pdfium/core/fxcrt/fx_system.h
+@@ -41,7 +41,7 @@
+ #elif defined(_WIN64)
+ #define _FX_OS_ _FX_OS_WIN64_
+ #define _FX_PLATFORM_ _FX_PLATFORM_WINDOWS_
+-#elif defined(__linux__)
++#elif defined(__linux__) || defined(__FreeBSD__)
+ #define _FX_OS_ _FX_OS_LINUX_
+ #define _FX_PLATFORM_ _FX_PLATFORM_LINUX_
+ #elif defined(__APPLE__)
diff --git a/devel/electron5/files/patch-third__party_pdfium_core_fxge_fx__ge__linux.cpp b/devel/electron5/files/patch-third__party_pdfium_core_fxge_fx__ge__linux.cpp
new file mode 100644
index 000000000000..28feaf5b8e6d
--- /dev/null
+++ b/devel/electron5/files/patch-third__party_pdfium_core_fxge_fx__ge__linux.cpp
@@ -0,0 +1,14 @@
+--- third_party/pdfium/core/fxge/fx_ge_linux.cpp.orig 2019-04-08 08:34:28 UTC
++++ third_party/pdfium/core/fxge/fx_ge_linux.cpp
+@@ -146,9 +146,8 @@ std::unique_ptr<SystemFontInfoIface> SystemFontInfoIfa
+ const char** pUserPaths) {
+ auto pInfo = pdfium::MakeUnique<CFX_LinuxFontInfo>();
+ if (!pInfo->ParseFontCfg(pUserPaths)) {
+- pInfo->AddPath("/usr/share/fonts");
+- pInfo->AddPath("/usr/share/X11/fonts/Type1");
+- pInfo->AddPath("/usr/share/X11/fonts/TTF");
++ pInfo->AddPath("/usr/local/share/fonts/Type1");
++ pInfo->AddPath("/usr/local/share/fonts/TTF");
+ pInfo->AddPath("/usr/local/share/fonts");
+ }
+ return std::move(pInfo);
diff --git a/devel/electron5/files/patch-third__party_pdfium_fxjs_cjs__publicmethods.cpp b/devel/electron5/files/patch-third__party_pdfium_fxjs_cjs__publicmethods.cpp
new file mode 100644
index 000000000000..673106a701da
--- /dev/null
+++ b/devel/electron5/files/patch-third__party_pdfium_fxjs_cjs__publicmethods.cpp
@@ -0,0 +1,106 @@
+--- third_party/pdfium/fxjs/cjs_publicmethods.cpp.orig 2019-04-08 08:34:28 UTC
++++ third_party/pdfium/fxjs/cjs_publicmethods.cpp
+@@ -85,6 +85,103 @@ constexpr const wchar_t* kDateFormats[] = {L"m/d",
+ constexpr const wchar_t* kTimeFormats[] = {L"HH:MM", L"h:MM tt", L"HH:MM:ss",
+ L"h:MM:ss tt"};
+
++#if defined(__FreeBSD__)
++/*
++ * cvt.c - IEEE floating point formatting routines for FreeBSD
++ * from GNU libc-4.6.27
++ */
++
++/*
++ * ap_ecvt converts to decimal
++ * the number of digits is specified by ndigit
++ * decpt is set to the position of the decimal point
++ * sign is set to 0 for positive, 1 for negative
++ */
++
++#define NDIG 80
++
++static char *
++ ap_cvt(double arg, int ndigits, int *decpt, int *sign, int eflag)
++{
++ register int r2;
++ double fi, fj;
++ register char *p, *p1;
++ static char buf[NDIG];
++
++ if (ndigits >= NDIG - 1)
++ ndigits = NDIG - 2;
++ r2 = 0;
++ *sign = 0;
++ p = &buf[0];
++ if (arg < 0) {
++ *sign = 1;
++ arg = -arg;
++ }
++ arg = modf(arg, &fi);
++ p1 = &buf[NDIG];
++ /*
++ * Do integer part
++ */
++ if (fi != 0) {
++ p1 = &buf[NDIG];
++ while (fi != 0) {
++ fj = modf(fi / 10, &fi);
++ *--p1 = (int) ((fj + .03) * 10) + '0';
++ r2++;
++ }
++ while (p1 < &buf[NDIG])
++ *p++ = *p1++;
++ }
++ else if (arg > 0) {
++ while ((fj = arg * 10) < 1) {
++ arg = fj;
++ r2--;
++ }
++ }
++ p1 = &buf[ndigits];
++ if (eflag == 0)
++ p1 += r2;
++ *decpt = r2;
++ if (p1 < &buf[0]) {
++ buf[0] = '\0';
++ return (buf);
++ }
++ while (p <= p1 && p < &buf[NDIG]) {
++ arg *= 10;
++ arg = modf(arg, &fj);
++ *p++ = (int) fj + '0';
++ }
++ if (p1 >= &buf[NDIG]) {
++ buf[NDIG - 1] = '\0';
++ return (buf);
++ }
++ p = p1;
++ *p1 += 5;
++ while (*p1 > '9') {
++ *p1 = '0';
++ if (p1 > buf)
++ ++ * --p1;
++ else {
++ *p1 = '1';
++ (*decpt)++;
++ if (eflag == 0) {
++ if (p > buf)
++ *p = '0';
++ p++;
++ }
++ }
++ }
++ *p = '\0';
++ return (buf);
++}
++
++static char *
++ fcvt(double arg, int ndigits, int *decpt, int *sign)
++{
++ return (ap_cvt(arg, ndigits, decpt, sign, 0));
++}
++#endif // defined(__FreeBSD__)
++
+ template <typename T>
+ T StrTrim(const T& str) {
+ T result = str;
diff --git a/devel/electron5/files/patch-third__party_pdfium_fxjs_fx__date__helpers.cpp b/devel/electron5/files/patch-third__party_pdfium_fxjs_fx__date__helpers.cpp
new file mode 100644
index 000000000000..b4c0a7c66579
--- /dev/null
+++ b/devel/electron5/files/patch-third__party_pdfium_fxjs_fx__date__helpers.cpp
@@ -0,0 +1,22 @@
+--- third_party/pdfium/fxjs/fx_date_helpers.cpp.orig 2019-04-08 08:34:28 UTC
++++ third_party/pdfium/fxjs/fx_date_helpers.cpp
+@@ -34,6 +34,11 @@ double GetLocalTZA() {
+ return 0;
+ time_t t = 0;
+ FXSYS_time(&t);
++#ifdef __FreeBSD__
++ struct tm lt;
++ localtime_r(&t, &lt);
++ return (double)(-(lt.tm_gmtoff * 1000));
++#else
+ FXSYS_localtime(&t);
+ #if _FX_PLATFORM_ == _FX_PLATFORM_WINDOWS_
+ // In gcc 'timezone' is a global variable declared in time.h. In VC++, that
+@@ -42,6 +47,7 @@ double GetLocalTZA() {
+ _get_timezone(&timezone);
+ #endif // _FX_PLATFORM_ == _FX_PLATFORM_WINDOWS_
+ return (double)(-(timezone * 1000));
++#endif // __FreeBSD__
+ }
+
+ int GetDaylightSavingTA(double d) {
diff --git a/devel/electron5/files/patch-third__party_pdfium_xfa_fgas_font_cfx__fontsourceenum__file.cpp b/devel/electron5/files/patch-third__party_pdfium_xfa_fgas_font_cfx__fontsourceenum__file.cpp
new file mode 100644
index 000000000000..53c6f880525a
--- /dev/null
+++ b/devel/electron5/files/patch-third__party_pdfium_xfa_fgas_font_cfx__fontsourceenum__file.cpp
@@ -0,0 +1,14 @@
+--- third_party/pdfium/xfa/fgas/font/cfx_fontsourceenum_file.cpp.orig 2019-04-08 08:34:28 UTC
++++ third_party/pdfium/xfa/fgas/font/cfx_fontsourceenum_file.cpp
+@@ -14,8 +14,9 @@ constexpr char kFolderSeparator = '/';
+
+ constexpr const char* g_FontFolders[] = {
+ #if _FX_PLATFORM_ == _FX_PLATFORM_LINUX_
+- "/usr/share/fonts", "/usr/share/X11/fonts/Type1",
+- "/usr/share/X11/fonts/TTF", "/usr/local/share/fonts",
++ "/usr/local/share/fonts/Type1",
++ "/usr/local/share/fonts/TTF",
++ "/usr/local/share/fonts",
+ #elif _FX_PLATFORM_ == _FX_PLATFORM_APPLE_
+ "~/Library/Fonts", "/Library/Fonts", "/System/Library/Fonts",
+ #elif _FX_PLATFORM_ == _FX_PLATFORM_ANDROID_
diff --git a/devel/electron5/files/patch-third__party_perfetto_include_perfetto_base_build__config.h b/devel/electron5/files/patch-third__party_perfetto_include_perfetto_base_build__config.h
new file mode 100644
index 000000000000..6fd1c8c35c5e
--- /dev/null
+++ b/devel/electron5/files/patch-third__party_perfetto_include_perfetto_base_build__config.h
@@ -0,0 +1,51 @@
+--- third_party/perfetto/include/perfetto/base/build_config.h.orig 2019-04-08 08:34:47 UTC
++++ third_party/perfetto/include/perfetto/base/build_config.h
+@@ -28,6 +28,7 @@
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_ANDROID() 1
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_MACOSX() 0
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_LINUX() 0
++#define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_FREEBSD() 0
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_WIN() 0
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_WASM() 0
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_FUCHSIA() 0
+@@ -35,13 +36,15 @@
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_ANDROID() 0
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_MACOSX() 1
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_LINUX() 0
++#define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_FREEBSD() 0
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_WIN() 0
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_WASM() 0
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_FUCHSIA() 0
+-#elif defined(__linux__)
++#elif defined(__linux__) || defined(__FreeBSD__)
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_ANDROID() 0
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_MACOSX() 0
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_LINUX() 1
++#define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_FREEBSD() 1
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_WIN() 0
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_WASM() 0
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_FUCHSIA() 0
+@@ -49,6 +52,7 @@
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_ANDROID() 0
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_MACOSX() 0
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_LINUX() 0
++#define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_FREEBSD() 0
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_WIN() 1
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_WASM() 0
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_FUCHSIA() 0
+@@ -56,6 +60,7 @@
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_ANDROID() 0
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_MACOSX() 0
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_LINUX() 0
++#define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_FREEBSD() 0
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_WIN() 0
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_WASM() 1
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_FUCHSIA() 0
+@@ -63,6 +68,7 @@
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_ANDROID() 0
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_MACOSX() 0
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_LINUX() 0
++#define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_FREEBSD() 0
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_WIN() 0
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_WASM() 0
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_FUCHSIA() 1
diff --git a/devel/electron5/files/patch-third__party_perfetto_include_perfetto_base_event.h b/devel/electron5/files/patch-third__party_perfetto_include_perfetto_base_event.h
new file mode 100644
index 000000000000..7257341b171e
--- /dev/null
+++ b/devel/electron5/files/patch-third__party_perfetto_include_perfetto_base_event.h
@@ -0,0 +1,14 @@
+--- third_party/perfetto/include/perfetto/base/event.h.orig 2019-04-08 08:22:17 UTC
++++ third_party/perfetto/include/perfetto/base/event.h
+@@ -20,8 +20,9 @@
+ #include "perfetto/base/build_config.h"
+ #include "perfetto/base/scoped_file.h"
+
+-#if PERFETTO_BUILDFLAG(PERFETTO_OS_LINUX) || \
+- PERFETTO_BUILDFLAG(PERFETTO_OS_ANDROID)
++#if (PERFETTO_BUILDFLAG(PERFETTO_OS_LINUX) || \
++ PERFETTO_BUILDFLAG(PERFETTO_OS_ANDROID)) && \
++ !PERFETTO_BUILDFLAG(PERFETTO_OS_FREEBSD)
+ #define PERFETTO_USE_EVENTFD() 1
+ #else
+ #define PERFETTO_USE_EVENTFD() 0
diff --git a/devel/electron5/files/patch-third__party_perfetto_include_perfetto_base_time.h b/devel/electron5/files/patch-third__party_perfetto_include_perfetto_base_time.h
new file mode 100644
index 000000000000..32654ee09276
--- /dev/null
+++ b/devel/electron5/files/patch-third__party_perfetto_include_perfetto_base_time.h
@@ -0,0 +1,20 @@
+--- third_party/perfetto/include/perfetto/base/time.h.orig 2019-04-08 08:22:17 UTC
++++ third_party/perfetto/include/perfetto/base/time.h
+@@ -123,6 +123,9 @@ inline TimeNanos GetTimeInternalNs(clockid_t clk_id) {
+ // Return ns from boot. Conversely to GetWallTimeNs, this clock counts also time
+ // during suspend (when supported).
+ inline TimeNanos GetBootTimeNs() {
++#if PERFETTO_BUILDFLAG(PERFETTO_OS_FREEBSD)
++ return GetTimeInternalNs(kWallTimeClockSource);
++#else
+ // Determine if CLOCK_BOOTTIME is available on the first call.
+ static const clockid_t kBootTimeClockSource = [] {
+ struct timespec ts = {};
+@@ -130,6 +133,7 @@ inline TimeNanos GetBootTimeNs() {
+ return res == 0 ? CLOCK_BOOTTIME : kWallTimeClockSource;
+ }();
+ return GetTimeInternalNs(kBootTimeClockSource);
++#endif
+ }
+
+ inline TimeNanos GetWallTimeNs() {
diff --git a/devel/electron5/files/patch-third__party_perfetto_include_perfetto_base_watchdog__posix.h b/devel/electron5/files/patch-third__party_perfetto_include_perfetto_base_watchdog__posix.h
new file mode 100644
index 000000000000..11a9e6542618
--- /dev/null
+++ b/devel/electron5/files/patch-third__party_perfetto_include_perfetto_base_watchdog__posix.h
@@ -0,0 +1,11 @@
+--- third_party/perfetto/include/perfetto/base/watchdog_posix.h.orig 2019-04-08 08:22:17 UTC
++++ third_party/perfetto/include/perfetto/base/watchdog_posix.h
+@@ -46,7 +46,7 @@ class Watchdog {
+ Timer(const Timer&) = delete;
+ Timer& operator=(const Timer&) = delete;
+
+- timer_t timerid_ = nullptr;
++ timer_t timerid_ = 0;
+ };
+ virtual ~Watchdog();
+
diff --git a/devel/electron5/files/patch-third__party_perfetto_src_base_unix__socket.cc b/devel/electron5/files/patch-third__party_perfetto_src_base_unix__socket.cc
new file mode 100644
index 000000000000..9a4029449558
--- /dev/null
+++ b/devel/electron5/files/patch-third__party_perfetto_src_base_unix__socket.cc
@@ -0,0 +1,12 @@
+--- third_party/perfetto/src/base/unix_socket.cc.orig 2019-04-08 08:34:47 UTC
++++ third_party/perfetto/src/base/unix_socket.cc
+@@ -502,7 +502,8 @@ void UnixSocket::DoConnect(const std::string& socket_n
+
+ void UnixSocket::ReadPeerCredentials() {
+ #if PERFETTO_BUILDFLAG(PERFETTO_OS_LINUX) || \
+- PERFETTO_BUILDFLAG(PERFETTO_OS_ANDROID)
++ PERFETTO_BUILDFLAG(PERFETTO_OS_ANDROID) || \
++ PERFETTO_BUILDFLAG(PERFETTO_OS_FREEBSD)
+ struct ucred user_cred;
+ socklen_t len = sizeof(user_cred);
+ int fd = sock_raw_.fd();
diff --git a/devel/electron5/files/patch-third__party_perfetto_src_tracing_core_tracing__service__impl.cc b/devel/electron5/files/patch-third__party_perfetto_src_tracing_core_tracing__service__impl.cc
new file mode 100644
index 000000000000..c56d0895324a
--- /dev/null
+++ b/devel/electron5/files/patch-third__party_perfetto_src_tracing_core_tracing__service__impl.cc
@@ -0,0 +1,22 @@
+--- third_party/perfetto/src/tracing/core/tracing_service_impl.cc.orig 2019-04-08 08:34:47 UTC
++++ third_party/perfetto/src/tracing/core/tracing_service_impl.cc
+@@ -1494,7 +1494,8 @@ TraceBuffer* TracingServiceImpl::GetBufferByID(BufferI
+
+ void TracingServiceImpl::UpdateMemoryGuardrail() {
+ #if !PERFETTO_BUILDFLAG(PERFETTO_EMBEDDER_BUILD) && \
+- !PERFETTO_BUILDFLAG(PERFETTO_OS_MACOSX)
++ !PERFETTO_BUILDFLAG(PERFETTO_OS_MACOSX) && \
++ !PERFETTO_BUILDFLAG(PERFETTO_OS_FREEBSD)
+ uint64_t total_buffer_bytes = 0;
+
+ // Sum up all the shared memory buffers.
+@@ -1545,7 +1546,8 @@ void TracingServiceImpl::SnapshotClocks(std::vector<Tr
+ protos::ClockSnapshot* clock_snapshot = packet.mutable_clock_snapshot();
+
+ #if !PERFETTO_BUILDFLAG(PERFETTO_OS_MACOSX) && \
+- !PERFETTO_BUILDFLAG(PERFETTO_OS_WIN)
++ !PERFETTO_BUILDFLAG(PERFETTO_OS_WIN) && \
++ !PERFETTO_BUILDFLAG(PERFETTO_OS_FREEBSD)
+ struct {
+ clockid_t id;
+ protos::ClockSnapshot::Clock::Type type;
diff --git a/devel/electron5/files/patch-third__party_protobuf_src_google_protobuf_stubs_platform__macros.h b/devel/electron5/files/patch-third__party_protobuf_src_google_protobuf_stubs_platform__macros.h
new file mode 100644
index 000000000000..8a3ebc80977d
--- /dev/null
+++ b/devel/electron5/files/patch-third__party_protobuf_src_google_protobuf_stubs_platform__macros.h
@@ -0,0 +1,11 @@
+--- third_party/protobuf/src/google/protobuf/stubs/platform_macros.h.orig 2019-04-08 08:19:09 UTC
++++ third_party/protobuf/src/google/protobuf/stubs/platform_macros.h
+@@ -117,7 +117,7 @@ GOOGLE_PROTOBUF_PLATFORM_ERROR
+
+ #undef GOOGLE_PROTOBUF_PLATFORM_ERROR
+
+-#if defined(GOOGLE_PROTOBUF_OS_ANDROID) || defined(GOOGLE_PROTOBUF_OS_IPHONE) || defined(__OpenBSD__)
++#if defined(GOOGLE_PROTOBUF_OS_ANDROID) || defined(GOOGLE_PROTOBUF_OS_IPHONE) || defined(__FreeBSD__)
+ // Android ndk does not support the __thread keyword very well yet. Here
+ // we use pthread_key_create()/pthread_getspecific()/... methods for
+ // TLS support on android.
diff --git a/devel/electron5/files/patch-third__party_sfntly_src_cpp_src_sfntly_table_core_cmap__table.cc b/devel/electron5/files/patch-third__party_sfntly_src_cpp_src_sfntly_table_core_cmap__table.cc
new file mode 100644
index 000000000000..eae95fe49404
--- /dev/null
+++ b/devel/electron5/files/patch-third__party_sfntly_src_cpp_src_sfntly_table_core_cmap__table.cc
@@ -0,0 +1,47 @@
+--- third_party/sfntly/src/cpp/src/sfntly/table/core/cmap_table.cc.orig 2019-04-08 08:22:32 UTC
++++ third_party/sfntly/src/cpp/src/sfntly/table/core/cmap_table.cc
+@@ -439,7 +439,7 @@ CMapTable::CMapFormat0::Builder::Builder(
+ }
+
+ CMapTable::CMapFormat0::Builder::Builder(const CMapId& cmap_id)
+- : CMap::Builder(reinterpret_cast<ReadableFontData*>(NULL),
++ : CMap::Builder(static_cast<ReadableFontData*>(NULL),
+ CMapFormat::kFormat0,
+ cmap_id) {
+ }
+@@ -563,7 +563,7 @@ CMapTable::CMapFormat2::Builder::Builder(WritableFontD
+ : CMapTable::CMap::Builder(data ? down_cast<WritableFontData*>(
+ data->Slice(offset, data->ReadUShort(
+ offset + Offset::kFormat0Length)))
+- : reinterpret_cast<WritableFontData*>(NULL),
++ : static_cast<WritableFontData*>(NULL),
+ CMapFormat::kFormat2, cmap_id) {
+ // TODO(arthurhsu): FIXIT: heavy lifting and leak, need fix.
+ }
+@@ -574,7 +574,7 @@ CMapTable::CMapFormat2::Builder::Builder(ReadableFontD
+ : CMapTable::CMap::Builder(data ? down_cast<ReadableFontData*>(
+ data->Slice(offset, data->ReadUShort(
+ offset + Offset::kFormat0Length)))
+- : reinterpret_cast<ReadableFontData*>(NULL),
++ : static_cast<ReadableFontData*>(NULL),
+ CMapFormat::kFormat2, cmap_id) {
+ // TODO(arthurhsu): FIXIT: heavy lifting and leak, need fix.
+ }
+@@ -958,7 +958,7 @@ CMapTable::CMapFormat4::Builder::Builder(WritableFontD
+ CMapTable::CMapFormat4::Builder::Builder(SegmentList* segments,
+ std::vector<int32_t>* glyph_id_array,
+ const CMapId& cmap_id)
+- : CMap::Builder(reinterpret_cast<ReadableFontData*>(NULL),
++ : CMap::Builder(static_cast<ReadableFontData*>(NULL),
+ CMapFormat::kFormat4, cmap_id),
+ segments_(segments->begin(), segments->end()),
+ glyph_id_array_(glyph_id_array->begin(), glyph_id_array->end()) {
+@@ -966,7 +966,7 @@ CMapTable::CMapFormat4::Builder::Builder(SegmentList*
+ }
+
+ CMapTable::CMapFormat4::Builder::Builder(const CMapId& cmap_id)
+- : CMap::Builder(reinterpret_cast<ReadableFontData*>(NULL),
++ : CMap::Builder(static_cast<ReadableFontData*>(NULL),
+ CMapFormat::kFormat4, cmap_id) {
+ }
+
diff --git a/devel/electron5/files/patch-third__party_skia_src_core_SkCpu.cpp b/devel/electron5/files/patch-third__party_skia_src_core_SkCpu.cpp
new file mode 100644
index 000000000000..a66fb7466947
--- /dev/null
+++ b/devel/electron5/files/patch-third__party_skia_src_core_SkCpu.cpp
@@ -0,0 +1,19 @@
+--- third_party/skia/src/core/SkCpu.cpp.orig 2019-04-08 08:24:20 UTC
++++ third_party/skia/src/core/SkCpu.cpp
+@@ -74,6 +74,8 @@
+ #include <sys/auxv.h>
+
+ static uint32_t read_cpu_features() {
++return 0;
++#if 0
+ const uint32_t kHWCAP_CRC32 = (1<< 7),
+ kHWCAP_ASIMDHP = (1<<10);
+
+@@ -82,6 +84,7 @@
+ if (hwcaps & kHWCAP_CRC32 ) { features |= SkCpu::CRC32; }
+ if (hwcaps & kHWCAP_ASIMDHP) { features |= SkCpu::ASIMDHP; }
+ return features;
++#endif
+ }
+
+ #elif defined(SK_CPU_ARM32) && __has_include(<sys/auxv.h>) && \
diff --git a/devel/electron5/files/patch-third__party_skia_src_gpu_GrAutoLocaleSetter.h b/devel/electron5/files/patch-third__party_skia_src_gpu_GrAutoLocaleSetter.h
new file mode 100644
index 000000000000..0934db382469
--- /dev/null
+++ b/devel/electron5/files/patch-third__party_skia_src_gpu_GrAutoLocaleSetter.h
@@ -0,0 +1,11 @@
+--- third_party/skia/src/gpu/GrAutoLocaleSetter.h.orig 2019-04-08 08:24:20 UTC
++++ third_party/skia/src/gpu/GrAutoLocaleSetter.h
+@@ -27,7 +27,7 @@
+ #define HAVE_XLOCALE 0
+ #endif
+
+-#if defined(SK_BUILD_FOR_ANDROID) || defined(__UCLIBC__) || defined(_NEWLIB_VERSION)
++#if defined(SK_BUILD_FOR_ANDROID) || defined(__UCLIBC__) || defined(_NEWLIB_VERSION) || defined(__FreeBSD__)
+ #define HAVE_LOCALE_T 0
+ #else
+ #define HAVE_LOCALE_T 1
diff --git a/devel/electron5/files/patch-third__party_skia_src_images_SkJpegEncoder.cpp b/devel/electron5/files/patch-third__party_skia_src_images_SkJpegEncoder.cpp
new file mode 100644
index 000000000000..0f9ed1001591
--- /dev/null
+++ b/devel/electron5/files/patch-third__party_skia_src_images_SkJpegEncoder.cpp
@@ -0,0 +1,41 @@
+--- third_party/skia/src/images/SkJpegEncoder.cpp.orig 2019-04-08 08:24:20 UTC
++++ third_party/skia/src/images/SkJpegEncoder.cpp
+@@ -75,9 +75,14 @@ bool SkJpegEncoderMgr::setParams(const SkImageInfo& sr
+ return (transform_scanline_proc) nullptr;
+ };
+
++#ifdef JCS_EXTENSIONS
+ J_COLOR_SPACE jpegColorType = JCS_EXT_RGBA;
++#else
++ J_COLOR_SPACE jpegColorType = JCS_RGB;
++#endif
+ int numComponents = 0;
+ switch (srcInfo.colorType()) {
++#ifdef JCS_EXTENSIONS
+ case kRGBA_8888_SkColorType:
+ fProc = chooseProc8888();
+ jpegColorType = JCS_EXT_RGBA;
+@@ -88,6 +93,7 @@ bool SkJpegEncoderMgr::setParams(const SkImageInfo& sr
+ jpegColorType = JCS_EXT_BGRA;
+ numComponents = 4;
+ break;
++#endif
+ case kRGB_565_SkColorType:
+ fProc = transform_scanline_565;
+ jpegColorType = JCS_RGB;
+@@ -107,6 +113,7 @@ bool SkJpegEncoderMgr::setParams(const SkImageInfo& sr
+ jpegColorType = JCS_GRAYSCALE;
+ numComponents = 1;
+ break;
++#ifdef JCS_EXTENSIONS
+ case kRGBA_F16_SkColorType:
+ if (kUnpremul_SkAlphaType == srcInfo.alphaType() &&
+ options.fAlphaOption == SkJpegEncoder::AlphaOption::kBlendOnBlack) {
+@@ -117,6 +124,7 @@ bool SkJpegEncoderMgr::setParams(const SkImageInfo& sr
+ jpegColorType = JCS_EXT_RGBA;
+ numComponents = 4;
+ break;
++#endif
+ default:
+ return false;
+ }
diff --git a/devel/electron5/files/patch-third__party_skia_src_opts_SkRasterPipeline__opts.h b/devel/electron5/files/patch-third__party_skia_src_opts_SkRasterPipeline__opts.h
new file mode 100644
index 000000000000..73e5f6bb9315
--- /dev/null
+++ b/devel/electron5/files/patch-third__party_skia_src_opts_SkRasterPipeline__opts.h
@@ -0,0 +1,20 @@
+--- third_party/skia/src/opts/SkRasterPipeline_opts.h.orig 2019-04-08 08:34:33 UTC
++++ third_party/skia/src/opts/SkRasterPipeline_opts.h
+@@ -729,7 +729,7 @@ SI F approx_powf(F x, F y) {
+ }
+
+ SI F from_half(U16 h) {
+-#if defined(SK_CPU_ARM64) && !defined(SK_BUILD_FOR_GOOGLE3) // Temporary workaround for some Google3 builds.
++#if defined(JUMPER_IS_NEON) && defined(SK_CPU_ARM64) && !defined(SK_BUILD_FOR_GOOGLE3) // Temporary workaround for some Google3 builds.
+ return vcvt_f32_f16(h);
+
+ #elif defined(JUMPER_IS_HSW) || defined(JUMPER_IS_AVX512)
+@@ -749,7 +749,7 @@ SI F from_half(U16 h) {
+ }
+
+ SI U16 to_half(F f) {
+-#if defined(SK_CPU_ARM64) && !defined(SK_BUILD_FOR_GOOGLE3) // Temporary workaround for some Google3 builds.
++#if defined(JUMPER_IS_NEON) && defined(SK_CPU_ARM64) && !defined(SK_BUILD_FOR_GOOGLE3) // Temporary workaround for some Google3 builds.
+ return vcvt_f16_f32(f);
+
+ #elif defined(JUMPER_IS_HSW) || defined(JUMPER_IS_AVX512)
diff --git a/devel/electron5/files/patch-third__party_skia_src_ports_SkFontHost__FreeType.cpp b/devel/electron5/files/patch-third__party_skia_src_ports_SkFontHost__FreeType.cpp
new file mode 100644
index 000000000000..f941b52961c5
--- /dev/null
+++ b/devel/electron5/files/patch-third__party_skia_src_ports_SkFontHost__FreeType.cpp
@@ -0,0 +1,77 @@
+--- third_party/skia/src/ports/SkFontHost_FreeType.cpp.orig 2019-04-08 08:34:33 UTC
++++ third_party/skia/src/ports/SkFontHost_FreeType.cpp
+@@ -122,8 +122,6 @@ class FreeTypeLibrary : SkNoncopyable { (public)
+ : fGetVarDesignCoordinates(nullptr)
+ , fGetVarAxisFlags(nullptr)
+ , fLibrary(nullptr)
+- , fIsLCDSupported(false)
+- , fLCDExtra(0)
+ {
+ if (FT_New_Library(&gFTMemory, &fLibrary)) {
+ return;
+@@ -183,12 +181,7 @@ class FreeTypeLibrary : SkNoncopyable { (public)
+ }
+ #endif
+
+- // Setup LCD filtering. This reduces color fringes for LCD smoothed glyphs.
+- // The default has changed over time, so this doesn't mean the same thing to all users.
+- if (FT_Library_SetLcdFilter(fLibrary, FT_LCD_FILTER_DEFAULT) == 0) {
+- fIsLCDSupported = true;
+- fLCDExtra = 2; //Using a filter adds one full pixel to each side.
+- }
++ FT_Library_SetLcdFilter(fLibrary, FT_LCD_FILTER_DEFAULT);
+ }
+ ~FreeTypeLibrary() {
+ if (fLibrary) {
+@@ -197,8 +190,6 @@ class FreeTypeLibrary : SkNoncopyable { (public)
+ }
+
+ FT_Library library() { return fLibrary; }
+- bool isLCDSupported() { return fIsLCDSupported; }
+- int lcdExtra() { return fLCDExtra; }
+
+ // FT_Get_{MM,Var}_{Blend,Design}_Coordinates were added in FreeType 2.7.1.
+ // Prior to this there was no way to get the coordinates out of the FT_Face.
+@@ -215,8 +206,6 @@ class FreeTypeLibrary : SkNoncopyable { (public)
+
+ private:
+ FT_Library fLibrary;
+- bool fIsLCDSupported;
+- int fLCDExtra;
+
+ // FT_Library_SetLcdFilterWeights was introduced in FreeType 2.4.0.
+ // The following platforms provide FreeType of at least 2.4.0.
+@@ -713,17 +702,6 @@ void SkTypeface_FreeType::onFilterRec(SkScalerContextR
+ rec->fTextSize = SkIntToScalar(1 << 14);
+ }
+
+- if (isLCD(*rec)) {
+- // TODO: re-work so that FreeType is set-up and selected by the SkFontMgr.
+- SkAutoMutexAcquire ama(gFTMutex);
+- ref_ft_library();
+- if (!gFTLibrary->isLCDSupported()) {
+- // If the runtime Freetype library doesn't support LCD, disable it here.
+- rec->fMaskFormat = SkMask::kA8_Format;
+- }
+- unref_ft_library();
+- }
+-
+ SkFontHinting h = rec->getHinting();
+ if (kFull_SkFontHinting == h && !isLCD(*rec)) {
+ // collapse full->normal hinting if we're not doing LCD
+@@ -1121,11 +1099,11 @@ bool SkScalerContext_FreeType::getCBoxForLetter(char l
+ void SkScalerContext_FreeType::updateGlyphIfLCD(SkGlyph* glyph) {
+ if (glyph->fMaskFormat == SkMask::kLCD16_Format) {
+ if (fLCDIsVert) {
+- glyph->fHeight += gFTLibrary->lcdExtra();
+- glyph->fTop -= gFTLibrary->lcdExtra() >> 1;
++ glyph->fHeight += 2;
++ glyph->fTop -= 1;
+ } else {
+- glyph->fWidth += gFTLibrary->lcdExtra();
+- glyph->fLeft -= gFTLibrary->lcdExtra() >> 1;
++ glyph->fWidth += 2;
++ glyph->fLeft -= 1;
+ }
+ }
+ }
diff --git a/devel/electron5/files/patch-third__party_skia_src_ports_SkOSFile__stdio.cpp b/devel/electron5/files/patch-third__party_skia_src_ports_SkOSFile__stdio.cpp
new file mode 100644
index 000000000000..3b6ecd162363
--- /dev/null
+++ b/devel/electron5/files/patch-third__party_skia_src_ports_SkOSFile__stdio.cpp
@@ -0,0 +1,11 @@
+--- third_party/skia/src/ports/SkOSFile_stdio.cpp.orig 2019-04-08 08:24:21 UTC
++++ third_party/skia/src/ports/SkOSFile_stdio.cpp
+@@ -129,7 +129,7 @@ void sk_fflush(FILE* f) {
+
+ void sk_fsync(FILE* f) {
+ #if !defined(_WIN32) && !defined(SK_BUILD_FOR_ANDROID) && !defined(__UCLIBC__) \
+- && !defined(_NEWLIB_VERSION)
++ && !defined(_NEWLIB_VERSION) && !defined(__FreeBSD__)
+ int fd = fileno(f);
+ fsync(fd);
+ #endif
diff --git a/devel/electron5/files/patch-third__party_skia_src_sksl_SkSLString.h b/devel/electron5/files/patch-third__party_skia_src_sksl_SkSLString.h
new file mode 100644
index 000000000000..9d4eef0772db
--- /dev/null
+++ b/devel/electron5/files/patch-third__party_skia_src_sksl_SkSLString.h
@@ -0,0 +1,11 @@
+--- third_party/skia/src/sksl/SkSLString.h.orig 2019-04-08 08:24:21 UTC
++++ third_party/skia/src/sksl/SkSLString.h
+@@ -22,6 +22,8 @@
+ #include "SkString.h"
+ #endif
+
++#include <stdarg.h>
++
+ namespace SkSL {
+
+ // Represents a (not necessarily null-terminated) slice of a string.
diff --git a/devel/electron5/files/patch-third__party_skia_third__party_vulkanmemoryallocator_include_vk__mem__alloc.h b/devel/electron5/files/patch-third__party_skia_third__party_vulkanmemoryallocator_include_vk__mem__alloc.h
new file mode 100644
index 000000000000..b0764d404b47
--- /dev/null
+++ b/devel/electron5/files/patch-third__party_skia_third__party_vulkanmemoryallocator_include_vk__mem__alloc.h
@@ -0,0 +1,11 @@
+--- third_party/skia/third_party/vulkanmemoryallocator/include/vk_mem_alloc.h.orig 2019-04-09 12:48:19 UTC
++++ third_party/skia/third_party/vulkanmemoryallocator/include/vk_mem_alloc.h
+@@ -2232,7 +2232,7 @@ remove them if not needed.
+ #include <mutex> // for std::mutex
+ #include <atomic> // for std::atomic
+
+-#if !defined(_WIN32) && !defined(__APPLE__)
++#if !defined(_WIN32) && !defined(__APPLE__) && !defined(__FreeBSD__)
+ #include <malloc.h> // for aligned_alloc()
+ #endif
+
diff --git a/devel/electron5/files/patch-third__party_snappy_src_snappy.h b/devel/electron5/files/patch-third__party_snappy_src_snappy.h
new file mode 100644
index 000000000000..0720557b3dad
--- /dev/null
+++ b/devel/electron5/files/patch-third__party_snappy_src_snappy.h
@@ -0,0 +1,20 @@
+--- third_party/snappy/src/snappy.h.orig 2019-05-05 07:27:10 UTC
++++ third_party/snappy/src/snappy.h
+@@ -73,7 +73,7 @@ namespace snappy {
+ // Original contents of *output are lost.
+ //
+ // REQUIRES: "input[]" is not an alias of "*output".
+- size_t Compress(const char* input, size_t input_length, string* output);
++ size_t Compress(const char* input, size_t input_length, std::string* output);
+
+ // Decompresses "compressed[0,compressed_length-1]" to "*uncompressed".
+ // Original contents of "*uncompressed" are lost.
+@@ -82,7 +82,7 @@ namespace snappy {
+ //
+ // returns false if the message is corrupted and could not be decompressed
+ bool Uncompress(const char* compressed, size_t compressed_length,
+- string* uncompressed);
++ std::string* uncompressed);
+
+ // Decompresses "compressed" to "*uncompressed".
+ //
diff --git a/devel/electron5/files/patch-third__party_sqlite_BUILD.gn b/devel/electron5/files/patch-third__party_sqlite_BUILD.gn
new file mode 100644
index 000000000000..edf714137bd6
--- /dev/null
+++ b/devel/electron5/files/patch-third__party_sqlite_BUILD.gn
@@ -0,0 +1,11 @@
+--- third_party/sqlite/BUILD.gn.orig 2019-04-08 08:33:18 UTC
++++ third_party/sqlite/BUILD.gn
+@@ -251,7 +251,7 @@ config("sqlite_warnings") {
+ ]
+ }
+ }
+- if (is_linux) {
++ if (is_linux && !is_bsd) {
+ cflags += [
+ # SQLite doesn't believe in compiler warnings, preferring testing.
+ # http://www.sqlite.org/faq.html#q17
diff --git a/devel/electron5/files/patch-third__party_swiftshader_BUILD.gn b/devel/electron5/files/patch-third__party_swiftshader_BUILD.gn
new file mode 100644
index 000000000000..83c8ea6ed84b
--- /dev/null
+++ b/devel/electron5/files/patch-third__party_swiftshader_BUILD.gn
@@ -0,0 +1,24 @@
+--- third_party/swiftshader/BUILD.gn.orig 2019-04-08 08:23:02 UTC
++++ third_party/swiftshader/BUILD.gn
+@@ -126,9 +126,6 @@ config("swiftshader_config") {
+ ldflags = [ "-Wl,--gc-sections" ]
+
+ if (target_cpu == "mipsel") {
+- ldflags += [
+- "-Wl,--hash-style=sysv",
+- ]
+ if (mips_arch_variant == "r1") {
+ ldflags += [
+ "-mips32",
+@@ -140,11 +137,8 @@ config("swiftshader_config") {
+ }
+ } else if (target_cpu == "mips64el") {
+ ldflags += [
+- "-Wl,--hash-style=sysv",
+ "-mips64r2",
+ ]
+- } else {
+- ldflags += [ "-Wl,--hash-style=both" ]
+ }
+
+ # A bug in the gold linker prevents using ICF on 32-bit (crbug.com/729532)
diff --git a/devel/electron5/files/patch-third__party_swiftshader_src_Common_Configurator.cpp b/devel/electron5/files/patch-third__party_swiftshader_src_Common_Configurator.cpp
new file mode 100644
index 000000000000..dd0ef4d02a8a
--- /dev/null
+++ b/devel/electron5/files/patch-third__party_swiftshader_src_Common_Configurator.cpp
@@ -0,0 +1,12 @@
+--- third_party/swiftshader/src/Common/Configurator.cpp.orig 2019-04-08 08:23:02 UTC
++++ third_party/swiftshader/src/Common/Configurator.cpp
+@@ -42,6 +42,9 @@ namespace sw
+
+ bool Configurator::readFile()
+ {
++#if defined(__FreeBSD__)
++ return false;
++#endif
+ #if defined(__unix__)
+ if(access(path.c_str(), R_OK) != 0)
+ {
diff --git a/devel/electron5/files/patch-third__party_swiftshader_src_Common_MutexLock.hpp b/devel/electron5/files/patch-third__party_swiftshader_src_Common_MutexLock.hpp
new file mode 100644
index 000000000000..2b16263ea211
--- /dev/null
+++ b/devel/electron5/files/patch-third__party_swiftshader_src_Common_MutexLock.hpp
@@ -0,0 +1,11 @@
+--- third_party/swiftshader/src/Common/MutexLock.hpp.orig 2019-04-08 08:23:02 UTC
++++ third_party/swiftshader/src/Common/MutexLock.hpp
+@@ -17,7 +17,7 @@
+
+ #include "Thread.hpp"
+
+-#if defined(__linux__)
++#if defined(__linux__) || defined(__FreeBSD__)
+ // Use a pthread mutex on Linux. Since many processes may use SwiftShader
+ // at the same time it's best to just have the scheduler overhead.
+ #include <pthread.h>
diff --git a/devel/electron5/files/patch-third__party_swiftshader_src_Common_SharedLibrary.hpp b/devel/electron5/files/patch-third__party_swiftshader_src_Common_SharedLibrary.hpp
new file mode 100644
index 000000000000..7439cd3efffd
--- /dev/null
+++ b/devel/electron5/files/patch-third__party_swiftshader_src_Common_SharedLibrary.hpp
@@ -0,0 +1,11 @@
+--- third_party/swiftshader/src/Common/SharedLibrary.hpp.orig 2019-04-08 08:23:02 UTC
++++ third_party/swiftshader/src/Common/SharedLibrary.hpp
+@@ -97,7 +97,7 @@ void *loadLibrary(const std::string &libraryDirectory,
+
+ inline void *getLibraryHandle(const char *path)
+ {
+- #ifdef __ANDROID__
++ #if defined( __ANDROID__) || defined(__FreeBSD__)
+ // bionic doesn't support RTLD_NOLOAD before L
+ return dlopen(path, RTLD_NOW | RTLD_LOCAL);
+ #else
diff --git a/devel/electron5/files/patch-third__party_swiftshader_src_Main_SwiftConfig.cpp b/devel/electron5/files/patch-third__party_swiftshader_src_Main_SwiftConfig.cpp
new file mode 100644
index 000000000000..dfa0a43ac45e
--- /dev/null
+++ b/devel/electron5/files/patch-third__party_swiftshader_src_Main_SwiftConfig.cpp
@@ -0,0 +1,14 @@
+--- third_party/swiftshader/src/Main/SwiftConfig.cpp.orig 2019-04-08 08:23:02 UTC
++++ third_party/swiftshader/src/Main/SwiftConfig.cpp
+@@ -762,7 +762,11 @@ namespace sw
+ struct stat status;
+ int lastModified = ini.getInteger("LastModified", "Time", 0);
+
++#if !defined(__FreeBSD__)
+ bool noConfig = stat("SwiftShader.ini", &status) != 0;
++#else
++ bool noConfig = false;
++#endif
+ newConfig = !noConfig && abs((int)status.st_mtime - lastModified) > 1;
+
+ if(disableServerOverride)
diff --git a/devel/electron5/files/patch-third__party_swiftshader_src_OpenGL_libEGL_Display.cpp b/devel/electron5/files/patch-third__party_swiftshader_src_OpenGL_libEGL_Display.cpp
new file mode 100644
index 000000000000..6fba1579182e
--- /dev/null
+++ b/devel/electron5/files/patch-third__party_swiftshader_src_OpenGL_libEGL_Display.cpp
@@ -0,0 +1,20 @@
+--- third_party/swiftshader/src/OpenGL/libEGL/Display.cpp.orig 2019-04-08 08:34:34 UTC
++++ third_party/swiftshader/src/OpenGL/libEGL/Display.cpp
+@@ -686,7 +686,7 @@ bool Display::isValidWindow(EGLNativeWindowType window
+ return status != 0;
+ }
+ return false;
+- #elif defined(__linux__)
++ #elif defined(__linux__) || defined(__FreeBSD__)
+ return false; // Non X11 linux is headless only
+ #elif defined(__APPLE__)
+ return sw::OSX::IsValidWindow(window);
+@@ -862,7 +862,7 @@ sw::Format Display::getDisplayFormat() const
+ {
+ return sw::FORMAT_X8R8G8B8;
+ }
+- #elif defined(__linux__) // Non X11 linux is headless only
++ #elif defined(__linux__) || defined(__FreeBSD__) // Non X11 linux is headless only
+ return sw::FORMAT_A8B8G8R8;
+ #elif defined(__APPLE__)
+ return sw::FORMAT_A8B8G8R8;
diff --git a/devel/electron5/files/patch-third__party_swiftshader_src_OpenGL_libEGL_Surface.cpp b/devel/electron5/files/patch-third__party_swiftshader_src_OpenGL_libEGL_Surface.cpp
new file mode 100644
index 000000000000..e11e8a0c9078
--- /dev/null
+++ b/devel/electron5/files/patch-third__party_swiftshader_src_OpenGL_libEGL_Surface.cpp
@@ -0,0 +1,11 @@
+--- third_party/swiftshader/src/OpenGL/libEGL/Surface.cpp.orig 2019-04-08 08:34:34 UTC
++++ third_party/swiftshader/src/OpenGL/libEGL/Surface.cpp
+@@ -352,7 +352,7 @@ bool WindowSurface::checkForResize()
+
+ int windowWidth = windowAttributes.width;
+ int windowHeight = windowAttributes.height;
+- #elif defined(__linux__)
++ #elif defined(__linux__) || defined(__FreeBSD__)
+ // Non X11 linux is headless only
+ int windowWidth = 100;
+ int windowHeight = 100;
diff --git a/devel/electron5/files/patch-third__party_swiftshader_src_OpenGL_libEGL_libEGL.cpp b/devel/electron5/files/patch-third__party_swiftshader_src_OpenGL_libEGL_libEGL.cpp
new file mode 100644
index 000000000000..8e06c35f05f2
--- /dev/null
+++ b/devel/electron5/files/patch-third__party_swiftshader_src_OpenGL_libEGL_libEGL.cpp
@@ -0,0 +1,29 @@
+--- third_party/swiftshader/src/OpenGL/libEGL/libEGL.cpp.orig 2019-04-08 08:34:34 UTC
++++ third_party/swiftshader/src/OpenGL/libEGL/libEGL.cpp
+@@ -148,7 +148,7 @@ EGLDisplay GetDisplay(EGLNativeDisplayType display_id)
+ // FIXME: Check if display_id is the default display
+ }
+
+- #if defined(__linux__) && !defined(__ANDROID__)
++ #if (defined(__linux__) || defined(__FreeBSD)) && !defined(__ANDROID__)
+ #if defined(USE_X11)
+ if(!libX11)
+ #endif // Non X11 linux is headless only
+@@ -207,7 +207,7 @@ const char *QueryString(EGLDisplay dpy, EGLint name)
+ {
+ return success(
+ "EGL_KHR_client_get_all_proc_addresses "
+-#if defined(__linux__) && !defined(__ANDROID__)
++#if (defined(__linux__) || defined(__FreeBSD__)) && !defined(__ANDROID__)
+ "EGL_KHR_platform_gbm "
+ #endif
+ #if defined(USE_X11)
+@@ -1248,7 +1248,7 @@ EGLDisplay GetPlatformDisplay(EGLenum platform, void *
+ {
+ TRACE("(EGLenum platform = 0x%X, void *native_display = %p, const EGLAttrib *attrib_list = %p)", platform, native_display, attrib_list);
+
+- #if defined(__linux__) && !defined(__ANDROID__)
++ #if (defined(__linux__) || defined(__FreeBSD__)) && !defined(__ANDROID__)
+ switch(platform)
+ {
+ #if defined(USE_X11)
diff --git a/devel/electron5/files/patch-third__party_swiftshader_src_OpenGL_libEGL_libEGL.hpp b/devel/electron5/files/patch-third__party_swiftshader_src_OpenGL_libEGL_libEGL.hpp
new file mode 100644
index 000000000000..8f29f2b58604
--- /dev/null
+++ b/devel/electron5/files/patch-third__party_swiftshader_src_OpenGL_libEGL_libEGL.hpp
@@ -0,0 +1,11 @@
+--- third_party/swiftshader/src/OpenGL/libEGL/libEGL.hpp.orig 2019-04-08 08:23:02 UTC
++++ third_party/swiftshader/src/OpenGL/libEGL/libEGL.hpp
+@@ -100,7 +100,7 @@ class LibEGL (private)
+ #endif
+ #elif defined(__ANDROID__)
+ const char *libEGL_lib[] = {"libEGL_swiftshader.so", "libEGL_swiftshader.so"};
+- #elif defined(__linux__)
++ #elif defined(__linux__) || defined(__FreeBSD__)
+ #if defined(__LP64__)
+ const char *libEGL_lib[] = {"lib64EGL_translator.so", "libEGL.so.1", "libEGL.so"};
+ #else
diff --git a/devel/electron5/files/patch-third__party_swiftshader_src_OpenGL_libGLES__CM_libGLES__CM.hpp b/devel/electron5/files/patch-third__party_swiftshader_src_OpenGL_libGLES__CM_libGLES__CM.hpp
new file mode 100644
index 000000000000..ceaf4f1c8f65
--- /dev/null
+++ b/devel/electron5/files/patch-third__party_swiftshader_src_OpenGL_libGLES__CM_libGLES__CM.hpp
@@ -0,0 +1,11 @@
+--- third_party/swiftshader/src/OpenGL/libGLES_CM/libGLES_CM.hpp.orig 2019-04-08 08:23:02 UTC
++++ third_party/swiftshader/src/OpenGL/libGLES_CM/libGLES_CM.hpp
+@@ -261,7 +261,7 @@ class LibGLES_CM (private)
+ #endif
+ #elif defined(__ANDROID__)
+ const char *libGLES_CM_lib[] = {"libGLESv1_CM_swiftshader.so", "libGLESv1_CM_swiftshader.so"};
+- #elif defined(__linux__)
++ #elif defined(__linux__) || defined(__FreeBSD__)
+ #if defined(__LP64__)
+ const char *libGLES_CM_lib[] = {"lib64GLES_CM_translator.so", "libGLES_CM.so.1", "libGLES_CM.so"};
+ #else
diff --git a/devel/electron5/files/patch-third__party_swiftshader_src_OpenGL_libGLESv2_libGLESv2.hpp b/devel/electron5/files/patch-third__party_swiftshader_src_OpenGL_libGLESv2_libGLESv2.hpp
new file mode 100644
index 000000000000..14832c8a7c80
--- /dev/null
+++ b/devel/electron5/files/patch-third__party_swiftshader_src_OpenGL_libGLESv2_libGLESv2.hpp
@@ -0,0 +1,11 @@
+--- third_party/swiftshader/src/OpenGL/libGLESv2/libGLESv2.hpp.orig 2019-04-08 08:23:02 UTC
++++ third_party/swiftshader/src/OpenGL/libGLESv2/libGLESv2.hpp
+@@ -286,7 +286,7 @@ class LibGLESv2 (private)
+ #endif
+ #elif defined(__ANDROID__)
+ const char *libGLESv2_lib[] = {"libGLESv2_swiftshader.so", "libGLESv2_swiftshader.so"};
+- #elif defined(__linux__)
++ #elif defined(__linux__) || defined(__FreeBSD__)
+ #if defined(__LP64__)
+ const char *libGLESv2_lib[] = {"lib64GLES_V2_translator.so", "libGLESv2.so.2", "libGLESv2.so"};
+ #else
diff --git a/devel/electron5/files/patch-third__party_swiftshader_third__party_llvm-7.0_configs_linux_include_llvm_Config_config.h b/devel/electron5/files/patch-third__party_swiftshader_third__party_llvm-7.0_configs_linux_include_llvm_Config_config.h
new file mode 100644
index 000000000000..aee312637a97
--- /dev/null
+++ b/devel/electron5/files/patch-third__party_swiftshader_third__party_llvm-7.0_configs_linux_include_llvm_Config_config.h
@@ -0,0 +1,152 @@
+--- third_party/swiftshader/third_party/llvm-7.0/configs/linux/include/llvm/Config/config.h.orig 2019-04-20 12:09:44 UTC
++++ third_party/swiftshader/third_party/llvm-7.0/configs/linux/include/llvm/Config/config.h
+@@ -8,15 +8,15 @@
+ #define BUG_REPORT_URL "https://bugs.llvm.org/"
+
+ /* Define to 1 to enable backtraces, and to 0 otherwise. */
+-/* #undef ENABLE_BACKTRACES */
++#define ENABLE_BACKTRACES 1
+
+ /* Define to 1 to enable crash overrides, and to 0 otherwise. */
+-/* #undef ENABLE_CRASH_OVERRIDES */
++#define ENABLE_CRASH_OVERRIDES 1
+
+ /* Define to 1 if you have the `backtrace' function. */
+-/* #undef HAVE_BACKTRACE */
++#define HAVE_BACKTRACE TRUE
+
+-/* #undef BACKTRACE_HEADER */
++#define BACKTRACE_HEADER <execinfo.h>
+
+ /* Define to 1 if you have the <CrashReporterClient.h> header file. */
+ /* #undef HAVE_CRASHREPORTERCLIENT_H */
+@@ -26,7 +26,7 @@
+
+ /* Define to 1 if you have the declaration of `arc4random', and to 0 if you
+ don't. */
+-#define HAVE_DECL_ARC4RANDOM 0
++#define HAVE_DECL_ARC4RANDOM 1
+
+ /* Define to 1 if you have the declaration of `FE_ALL_EXCEPT', and to 0 if you
+ don't. */
+@@ -50,7 +50,7 @@
+ #define HAVE_DLOPEN 1
+
+ /* Define if dladdr() is available on this platform. */
+-/* #undef HAVE_DLADDR */
++#define HAVE_DLADDR 1
+
+ /* Define to 1 if you have the <errno.h> header file. */
+ #define HAVE_ERRNO_H 1
+@@ -89,7 +89,7 @@
+ #define HAVE_ISATTY 1
+
+ /* Define to 1 if you have the `edit' library (-ledit). */
+-/* #undef HAVE_LIBEDIT */
++#define HAVE_LIBEDIT 1
+
+ /* Define to 1 if you have the `pfm' library (-lpfm). */
+ /* #undef HAVE_LIBPFM */
+@@ -107,25 +107,25 @@
+ /* #undef HAVE_PTHREAD_SETNAME_NP */
+
+ /* Define to 1 if you have the `z' library (-lz). */
+-/* #undef HAVE_LIBZ */
++#define HAVE_LIBZ 1
+
+ /* Define to 1 if you have the <link.h> header file. */
+ #define HAVE_LINK_H 1
+
+ /* Define to 1 if you have the `lseek64' function. */
+-#define HAVE_LSEEK64 1
++/* #undef HAVE_LSEEK64 */
+
+ /* Define to 1 if you have the <mach/mach.h> header file. */
+ /* #undef HAVE_MACH_MACH_H */
+
+ /* Define to 1 if you have the `mallctl' function. */
+-/* #undef HAVE_MALLCTL */
++#define HAVE_MALLCTL 1
+
+ /* Define to 1 if you have the `mallinfo' function. */
+-#define HAVE_MALLINFO 1
++/* #undef HAVE_MALLINFO */
+
+ /* Define to 1 if you have the <malloc.h> header file. */
+-#define HAVE_MALLOC_H 1
++/* #undef HAVE_MALLOC_H */
+
+ /* Define to 1 if you have the <malloc/malloc.h> header file. */
+ /* #undef HAVE_MALLOC_MALLOC_H */
+@@ -137,7 +137,7 @@
+ #define HAVE_POSIX_FALLOCATE 1
+
+ /* Define to 1 if you have the `posix_spawn' function. */
+-/* #undef HAVE_POSIX_SPAWN */
++#define HAVE_POSIX_SPAWN 1
+
+ /* Define to 1 if you have the `pread' function. */
+ #define HAVE_PREAD 1
+@@ -158,16 +158,16 @@
+ #define HAVE_REALPATH 1
+
+ /* Define to 1 if you have the `sbrk' function. */
+-#define HAVE_SBRK 1
++/* #undef HAVE_SBRK */
+
+ /* Define to 1 if you have the `setenv' function. */
+ #define HAVE_SETENV 1
+
+ /* Define to 1 if you have the `sched_getaffinity' function. */
+-#define HAVE_SCHED_GETAFFINITY 1
++/* #undef HAVE_SCHED_GETAFFINITY */
+
+ /* Define to 1 if you have the `CPU_COUNT' macro. */
+-#define HAVE_CPU_COUNT 1
++/* #undef HAVE_CPU_COUNT */
+
+ /* Define to 1 if you have the `setrlimit' function. */
+ #define HAVE_SETRLIMIT 1
+@@ -209,13 +209,13 @@
+ #define HAVE_SYS_TYPES_H 1
+
+ /* Define if the setupterm() function is supported this platform. */
+-/* #undef HAVE_TERMINFO */
++#define HAVE_TERMINFO 1
+
+ /* Define if the xar_open() function is supported this platform. */
+ /* #undef HAVE_LIBXAR */
+
+ /* Define to 1 if you have the <termios.h> header file. */
+-/* #undef HAVE_TERMIOS_H */
++#define HAVE_TERMIOS_H 1
+
+ /* Define to 1 if you have the <unistd.h> header file. */
+ #define HAVE_UNISTD_H 1
+@@ -224,7 +224,7 @@
+ /* #undef HAVE_VALGRIND_VALGRIND_H */
+
+ /* Define to 1 if you have the <zlib.h> header file. */
+-/* #undef HAVE_ZLIB_H */
++#define HAVE_ZLIB_H 1
+
+ /* Have host's _alloca */
+ /* #undef HAVE__ALLOCA */
+@@ -298,7 +298,7 @@
+ #elif defined(__arm__)
+ #define LLVM_DEFAULT_TARGET_TRIPLE "armv7-linux-gnueabihf"
+ #elif defined(__aarch64__)
+-#define LLVM_DEFAULT_TARGET_TRIPLE "aarch64-linux-gnu"
++#define LLVM_DEFAULT_TARGET_TRIPLE "aarch64-portbld-freebsd"
+ #elif defined(__mips__)
+ #define LLVM_DEFAULT_TARGET_TRIPLE "mipsel-linux-gnu"
+ #elif defined(__mips64)
+@@ -308,7 +308,7 @@
+ #endif
+
+ /* Define if zlib compression is available */
+-#define LLVM_ENABLE_ZLIB 0
++#define LLVM_ENABLE_ZLIB 1
+
+ /* Define if overriding target triple is enabled */
+ /* #undef LLVM_TARGET_TRIPLE_ENV */
diff --git a/devel/electron5/files/patch-third__party_swiftshader_third__party_llvm-7.0_configs_linux_include_llvm_Config_llvm-config.h b/devel/electron5/files/patch-third__party_swiftshader_third__party_llvm-7.0_configs_linux_include_llvm_Config_llvm-config.h
new file mode 100644
index 000000000000..6f38970074b7
--- /dev/null
+++ b/devel/electron5/files/patch-third__party_swiftshader_third__party_llvm-7.0_configs_linux_include_llvm_Config_llvm-config.h
@@ -0,0 +1,20 @@
+--- third_party/swiftshader/third_party/llvm-7.0/configs/linux/include/llvm/Config/llvm-config.h.orig 2019-04-20 12:09:44 UTC
++++ third_party/swiftshader/third_party/llvm-7.0/configs/linux/include/llvm/Config/llvm-config.h
+@@ -28,7 +28,7 @@
+ #elif defined(__arm__)
+ #define LLVM_DEFAULT_TARGET_TRIPLE "armv7-linux-gnueabihf"
+ #elif defined(__aarch64__)
+-#define LLVM_DEFAULT_TARGET_TRIPLE "aarch64-linux-gnu"
++#define LLVM_DEFAULT_TARGET_TRIPLE "aarch64-portbld-freebsd"
+ #elif defined(__mips__)
+ #define LLVM_DEFAULT_TARGET_TRIPLE "mipsel-linux-gnu"
+ #elif defined(__mips64)
+@@ -51,7 +51,7 @@
+ #elif defined(__arm__)
+ #define LLVM_HOST_TRIPLE "armv7-linux-gnueabihf"
+ #elif defined(__aarch64__)
+-#define LLVM_HOST_TRIPLE "aarch64-linux-gnu"
++#define LLVM_HOST_TRIPLE "aarch64-portbld-freebsd"
+ #elif defined(__mips__)
+ #define LLVM_HOST_TRIPLE "mipsel-linux-gnu"
+ #elif defined(__mips64)
diff --git a/devel/electron5/files/patch-third__party_swiftshader_third__party_llvm-subzero_build_Linux_include_llvm_Config_config.h b/devel/electron5/files/patch-third__party_swiftshader_third__party_llvm-subzero_build_Linux_include_llvm_Config_config.h
new file mode 100644
index 000000000000..052a60d5ba96
--- /dev/null
+++ b/devel/electron5/files/patch-third__party_swiftshader_third__party_llvm-subzero_build_Linux_include_llvm_Config_config.h
@@ -0,0 +1,29 @@
+--- third_party/swiftshader/third_party/llvm-subzero/build/Linux/include/llvm/Config/config.h.orig 2019-04-08 08:34:34 UTC
++++ third_party/swiftshader/third_party/llvm-subzero/build/Linux/include/llvm/Config/config.h
+@@ -121,7 +121,7 @@
+ #define HAVE_LINK_H 1
+
+ /* Define to 1 if you have the `lseek64' function. */
+-#define HAVE_LSEEK64 1
++/* #undef HAVE_LSEEK64 */
+
+ /* Define to 1 if you have the <mach/mach.h> header file. */
+ /* #undef HAVE_MACH_MACH_H */
+@@ -130,7 +130,7 @@
+ /* #undef HAVE_MALLCTL */
+
+ /* Define to 1 if you have the `mallinfo' function. */
+-#define HAVE_MALLINFO 1
++/* #undef HAVE_MALLINFO */
+
+ /* Define to 1 if you have the <malloc.h> header file. */
+ #define HAVE_MALLOC_H 1
+@@ -154,7 +154,7 @@
+ /* #undef HAVE_NDIR_H */
+
+ /* Define to 1 if you have the `posix_fallocate' function. */
+-#define HAVE_POSIX_FALLOCATE 1
++/* #undef HAVE_POSIX_FALLOCATE */
+
+ /* Define to 1 if you have the `posix_spawn' function. */
+ #define HAVE_POSIX_SPAWN 1
diff --git a/devel/electron5/files/patch-third__party_swiftshader_third__party_llvm-subzero_lib_Support_Unix_Process.inc b/devel/electron5/files/patch-third__party_swiftshader_third__party_llvm-subzero_lib_Support_Unix_Process.inc
new file mode 100644
index 000000000000..bab9e6bf6efd
--- /dev/null
+++ b/devel/electron5/files/patch-third__party_swiftshader_third__party_llvm-subzero_lib_Support_Unix_Process.inc
@@ -0,0 +1,11 @@
+--- third_party/swiftshader/third_party/llvm-subzero/lib/Support/Unix/Process.inc.orig 2019-04-08 08:23:16 UTC
++++ third_party/swiftshader/third_party/llvm-subzero/lib/Support/Unix/Process.inc
+@@ -35,7 +35,7 @@
+ // DragonFlyBSD, OpenBSD, and Bitrig have deprecated <malloc.h> for
+ // <stdlib.h> instead. Unix.h includes this for us already.
+ #if defined(HAVE_MALLOC_H) && !defined(__DragonFly__) && \
+- !defined(__OpenBSD__) && !defined(__Bitrig__)
++ !defined(__FreeBSD__) && !defined(__OpenBSD__) && !defined(__Bitrig__)
+ #include <malloc.h>
+ #endif
+ #if defined(HAVE_MALLCTL)
diff --git a/devel/electron5/files/patch-third__party_usrsctp_BUILD.gn b/devel/electron5/files/patch-third__party_usrsctp_BUILD.gn
new file mode 100644
index 000000000000..cc9ff01dff6b
--- /dev/null
+++ b/devel/electron5/files/patch-third__party_usrsctp_BUILD.gn
@@ -0,0 +1,20 @@
+--- third_party/usrsctp/BUILD.gn.orig 2019-04-08 08:19:10 UTC
++++ third_party/usrsctp/BUILD.gn
+@@ -116,11 +116,16 @@ static_library("usrsctp") {
+ "-UINET6",
+ ]
+
+- if (is_linux || is_android) {
++ if ((is_linux && !is_bsd) || is_android ) {
+ defines += [
+ "__Userspace_os_Linux",
+ "_GNU_SOURCE",
+ ]
++ } else if (is_bsd) {
++ defines += [
++ "__Userspace_os_FreeBSD",
++ ]
++ cflags += [ "-U__FreeBSD__" ]
+ } else if (is_mac || is_ios) {
+ defines += [
+ "HAVE_SA_LEN",
diff --git a/devel/electron5/files/patch-third__party_webrtc_BUILD.gn b/devel/electron5/files/patch-third__party_webrtc_BUILD.gn
new file mode 100644
index 000000000000..df6d07394993
--- /dev/null
+++ b/devel/electron5/files/patch-third__party_webrtc_BUILD.gn
@@ -0,0 +1,12 @@
+--- third_party/webrtc/BUILD.gn.orig 2019-04-08 08:34:47 UTC
++++ third_party/webrtc/BUILD.gn
+@@ -153,6 +153,9 @@ config("common_inherited_config") {
+ if (is_linux) {
+ defines += [ "WEBRTC_LINUX" ]
+ }
++ if (is_bsd) {
++ defines += [ "WEBRTC_BSD" ]
++ }
+ if (is_mac) {
+ defines += [ "WEBRTC_MAC" ]
+ }
diff --git a/devel/electron5/files/patch-third__party_webrtc_modules_audio__device_BUILD.gn b/devel/electron5/files/patch-third__party_webrtc_modules_audio__device_BUILD.gn
new file mode 100644
index 000000000000..1bdc699cee40
--- /dev/null
+++ b/devel/electron5/files/patch-third__party_webrtc_modules_audio__device_BUILD.gn
@@ -0,0 +1,11 @@
+--- third_party/webrtc/modules/audio_device/BUILD.gn.orig 2019-04-08 08:34:47 UTC
++++ third_party/webrtc/modules/audio_device/BUILD.gn
+@@ -312,7 +312,7 @@ rtc_source_set("audio_device_impl") {
+ if (rtc_use_dummy_audio_file_devices) {
+ defines += [ "WEBRTC_DUMMY_FILE_DEVICES" ]
+ } else {
+- if (is_linux) {
++ if (is_linux && !is_bsd) {
+ sources += [
+ "linux/alsasymboltable_linux.cc",
+ "linux/alsasymboltable_linux.h",
diff --git a/devel/electron5/files/patch-third__party_webrtc_modules_rtp__rtcp_source_forward__error__correction.cc b/devel/electron5/files/patch-third__party_webrtc_modules_rtp__rtcp_source_forward__error__correction.cc
new file mode 100644
index 000000000000..0d7f4c30f924
--- /dev/null
+++ b/devel/electron5/files/patch-third__party_webrtc_modules_rtp__rtcp_source_forward__error__correction.cc
@@ -0,0 +1,10 @@
+--- third_party/webrtc/modules/rtp_rtcp/source/forward_error_correction.cc.orig 2019-04-08 08:34:47 UTC
++++ third_party/webrtc/modules/rtp_rtcp/source/forward_error_correction.cc
+@@ -12,6 +12,7 @@
+
+ #include <string.h>
+ #include <algorithm>
++#include <cstdlib>
+ #include <utility>
+
+ #include "modules/include/module_common_types_public.h"
diff --git a/devel/electron5/files/patch-third__party_webrtc_rtc__base_BUILD.gn b/devel/electron5/files/patch-third__party_webrtc_rtc__base_BUILD.gn
new file mode 100644
index 000000000000..286ae9aaa2d9
--- /dev/null
+++ b/devel/electron5/files/patch-third__party_webrtc_rtc__base_BUILD.gn
@@ -0,0 +1,20 @@
+--- third_party/webrtc/rtc_base/BUILD.gn.orig 2019-04-08 08:34:47 UTC
++++ third_party/webrtc/rtc_base/BUILD.gn
+@@ -1088,8 +1088,6 @@ rtc_static_library("rtc_base") {
+
+ if (rtc_use_x11) {
+ libs += [
+- "dl",
+- "rt",
+ "Xext",
+ "X11",
+ "Xcomposite",
+@@ -1097,7 +1095,7 @@ rtc_static_library("rtc_base") {
+ ]
+ }
+
+- if (is_linux) {
++ if (is_linux && !is_bsd) {
+ libs += [
+ "dl",
+ "rt",
diff --git a/devel/electron5/files/patch-third__party_webrtc_rtc__base_byte__order.h b/devel/electron5/files/patch-third__party_webrtc_rtc__base_byte__order.h
new file mode 100644
index 000000000000..7b3df0bef5a4
--- /dev/null
+++ b/devel/electron5/files/patch-third__party_webrtc_rtc__base_byte__order.h
@@ -0,0 +1,11 @@
+--- third_party/webrtc/rtc_base/byte_order.h.orig 2019-04-08 08:34:47 UTC
++++ third_party/webrtc/rtc_base/byte_order.h
+@@ -79,7 +79,7 @@
+ #error WEBRTC_ARCH_BIG_ENDIAN or WEBRTC_ARCH_LITTLE_ENDIAN must be defined.
+ #endif // defined(WEBRTC_ARCH_LITTLE_ENDIAN)
+ #elif defined(WEBRTC_POSIX)
+-#include <endian.h>
++#include <sys/endian.h>
+ #endif
+
+ namespace rtc {
diff --git a/devel/electron5/files/patch-third__party_webrtc_rtc__base_ifaddrs__converter.h b/devel/electron5/files/patch-third__party_webrtc_rtc__base_ifaddrs__converter.h
new file mode 100644
index 000000000000..b39ab2dbb609
--- /dev/null
+++ b/devel/electron5/files/patch-third__party_webrtc_rtc__base_ifaddrs__converter.h
@@ -0,0 +1,11 @@
+--- third_party/webrtc/rtc_base/ifaddrs_converter.h.orig 2019-04-08 08:23:51 UTC
++++ third_party/webrtc/rtc_base/ifaddrs_converter.h
+@@ -14,6 +14,8 @@
+ #if defined(WEBRTC_ANDROID)
+ #include "rtc_base/ifaddrs_android.h"
+ #else
++#include <sys/types.h>
++#include <sys/socket.h>
+ #include <ifaddrs.h>
+ #endif // WEBRTC_ANDROID
+
diff --git a/devel/electron5/files/patch-third__party_webrtc_rtc__base_ip__address.cc b/devel/electron5/files/patch-third__party_webrtc_rtc__base_ip__address.cc
new file mode 100644
index 000000000000..95878be40f5f
--- /dev/null
+++ b/devel/electron5/files/patch-third__party_webrtc_rtc__base_ip__address.cc
@@ -0,0 +1,12 @@
+--- third_party/webrtc/rtc_base/ip_address.cc.orig 2019-04-08 08:23:51 UTC
++++ third_party/webrtc/rtc_base/ip_address.cc
+@@ -11,6 +11,9 @@
+ #if defined(WEBRTC_POSIX)
+ #include <netinet/in.h>
+ #include <sys/socket.h>
++#if defined(WEBRTC_BSD)
++#include <sys/types.h>
++#endif
+ #ifdef OPENBSD
+ #include <netinet/in_systm.h>
+ #endif
diff --git a/devel/electron5/files/patch-third__party_webrtc_rtc__base_ip__address.h b/devel/electron5/files/patch-third__party_webrtc_rtc__base_ip__address.h
new file mode 100644
index 000000000000..8ef9855678a4
--- /dev/null
+++ b/devel/electron5/files/patch-third__party_webrtc_rtc__base_ip__address.h
@@ -0,0 +1,13 @@
+--- third_party/webrtc/rtc_base/ip_address.h.orig 2019-04-08 08:23:51 UTC
++++ third_party/webrtc/rtc_base/ip_address.h
+@@ -17,6 +17,10 @@
+ #include <netinet/in.h>
+ #include <sys/socket.h>
+ #endif
++#if defined(WEBRTC_BSD)
++#include <sys/types.h>
++#include <sys/socket.h>
++#endif
+ #if defined(WEBRTC_WIN)
+ #include <winsock2.h>
+ #include <ws2tcpip.h>
diff --git a/devel/electron5/files/patch-third__party_webrtc_rtc__base_network.cc b/devel/electron5/files/patch-third__party_webrtc_rtc__base_network.cc
new file mode 100644
index 000000000000..239c5f0c46b2
--- /dev/null
+++ b/devel/electron5/files/patch-third__party_webrtc_rtc__base_network.cc
@@ -0,0 +1,29 @@
+--- third_party/webrtc/rtc_base/network.cc.orig 2019-04-08 08:34:47 UTC
++++ third_party/webrtc/rtc_base/network.cc
+@@ -14,7 +14,7 @@
+ // linux/if.h can't be included at the same time as the posix sys/if.h, and
+ // it's transitively required by linux/route.h, so include that version on
+ // linux instead of the standard posix one.
+-#if defined(WEBRTC_LINUX)
++#if defined(WEBRTC_LINUX) && !defined(WEBRTC_BSD)
+ #include <linux/if.h>
+ #include <linux/route.h>
+ #elif !defined(__native_client__)
+@@ -762,7 +762,7 @@ bool BasicNetworkManager::CreateNetworks(bool include_
+ }
+ #endif // WEBRTC_WIN
+
+-#if defined(WEBRTC_LINUX)
++#if defined(WEBRTC_LINUX) && !defined(WEBRTC_BSD)
+ bool IsDefaultRoute(const std::string& network_name) {
+ FILE* f = fopen("/proc/net/route", "r");
+ if (!f) {
+@@ -805,7 +805,7 @@ bool BasicNetworkManager::IsIgnoredNetwork(const Netwo
+ strncmp(network.name().c_str(), "vboxnet", 7) == 0) {
+ return true;
+ }
+-#if defined(WEBRTC_LINUX)
++#if defined(WEBRTC_LINUX) && !defined(WEBRTC_BSD)
+ // Make sure this is a default route, if we're ignoring non-defaults.
+ if (ignore_non_default_routes_ && !IsDefaultRoute(network.name())) {
+ return true;
diff --git a/devel/electron5/files/patch-third__party_webrtc_rtc__base_network.h b/devel/electron5/files/patch-third__party_webrtc_rtc__base_network.h
new file mode 100644
index 000000000000..723b73e68139
--- /dev/null
+++ b/devel/electron5/files/patch-third__party_webrtc_rtc__base_network.h
@@ -0,0 +1,13 @@
+--- third_party/webrtc/rtc_base/network.h.orig 2019-04-08 08:23:51 UTC
++++ third_party/webrtc/rtc_base/network.h
+@@ -25,6 +25,10 @@
+ #include "rtc_base/network_monitor.h"
+ #include "rtc_base/third_party/sigslot/sigslot.h"
+
++#if defined(WEBRTC_BSD)
++#include <sys/types.h>
++#endif
++
+ #if defined(WEBRTC_POSIX)
+ struct ifaddrs;
+ #endif // defined(WEBRTC_POSIX)
diff --git a/devel/electron5/files/patch-third__party_webrtc_rtc__base_physical__socket__server.cc b/devel/electron5/files/patch-third__party_webrtc_rtc__base_physical__socket__server.cc
new file mode 100644
index 000000000000..e3c0b18f4ec0
--- /dev/null
+++ b/devel/electron5/files/patch-third__party_webrtc_rtc__base_physical__socket__server.cc
@@ -0,0 +1,56 @@
+--- third_party/webrtc/rtc_base/physical_socket_server.cc.orig 2019-04-08 08:23:51 UTC
++++ third_party/webrtc/rtc_base/physical_socket_server.cc
+@@ -66,7 +66,7 @@ typedef void* SockOptArg;
+
+ #endif // WEBRTC_POSIX
+
+-#if defined(WEBRTC_POSIX) && !defined(WEBRTC_MAC) && !defined(__native_client__)
++#if defined(WEBRTC_POSIX) && !defined(WEBRTC_MAC) && !defined(WEBRTC_BSD) && !defined(__native_client__)
+
+ int64_t GetSocketRecvTimestamp(int socket) {
+ struct timeval tv_ioctl;
+@@ -286,7 +286,7 @@ int PhysicalSocket::GetOption(Option opt, int* value)
+ socklen_t optlen = sizeof(*value);
+ int ret = ::getsockopt(s_, slevel, sopt, (SockOptArg)value, &optlen);
+ if (ret != -1 && opt == OPT_DONTFRAGMENT) {
+-#if defined(WEBRTC_LINUX) && !defined(WEBRTC_ANDROID)
++#if defined(WEBRTC_LINUX) && !defined(WEBRTC_ANDROID) && !defined(WEBRTC_BSD)
+ *value = (*value != IP_PMTUDISC_DONT) ? 1 : 0;
+ #endif
+ }
+@@ -299,7 +299,7 @@ int PhysicalSocket::SetOption(Option opt, int value) {
+ if (TranslateOption(opt, &slevel, &sopt) == -1)
+ return -1;
+ if (opt == OPT_DONTFRAGMENT) {
+-#if defined(WEBRTC_LINUX) && !defined(WEBRTC_ANDROID)
++#if defined(WEBRTC_LINUX) && !defined(WEBRTC_ANDROID) && !defined(WEBRTC_BSD)
+ value = (value) ? IP_PMTUDISC_DO : IP_PMTUDISC_DONT;
+ #endif
+ }
+@@ -309,7 +309,7 @@ int PhysicalSocket::SetOption(Option opt, int value) {
+ int PhysicalSocket::Send(const void* pv, size_t cb) {
+ int sent = DoSend(
+ s_, reinterpret_cast<const char*>(pv), static_cast<int>(cb),
+-#if defined(WEBRTC_LINUX) && !defined(WEBRTC_ANDROID)
++#if defined(WEBRTC_LINUX) && !defined(WEBRTC_ANDROID) && !defined(WEBRTC_BSD)
+ // Suppress SIGPIPE. Without this, attempting to send on a socket whose
+ // other end is closed will result in a SIGPIPE signal being raised to
+ // our process, which by default will terminate the process, which we
+@@ -338,7 +338,7 @@ int PhysicalSocket::SendTo(const void* buffer,
+ size_t len = addr.ToSockAddrStorage(&saddr);
+ int sent =
+ DoSendTo(s_, static_cast<const char*>(buffer), static_cast<int>(length),
+-#if defined(WEBRTC_LINUX) && !defined(WEBRTC_ANDROID)
++#if defined(WEBRTC_LINUX) && !defined(WEBRTC_ANDROID) && !defined(WEBRTC_BSD)
+ // Suppress SIGPIPE. See above for explanation.
+ MSG_NOSIGNAL,
+ #else
+@@ -529,7 +529,7 @@ int PhysicalSocket::TranslateOption(Option opt, int* s
+ *slevel = IPPROTO_IP;
+ *sopt = IP_DONTFRAGMENT;
+ break;
+-#elif defined(WEBRTC_MAC) || defined(BSD) || defined(__native_client__)
++#elif defined(WEBRTC_MAC) || defined(WEBRTC_BSD) || defined(__native_client__)
+ RTC_LOG(LS_WARNING) << "Socket::OPT_DONTFRAGMENT not supported.";
+ return -1;
+ #elif defined(WEBRTC_POSIX)
diff --git a/devel/electron5/files/patch-third__party_webrtc_rtc__base_physical__socket__server.h b/devel/electron5/files/patch-third__party_webrtc_rtc__base_physical__socket__server.h
new file mode 100644
index 000000000000..16161d71b201
--- /dev/null
+++ b/devel/electron5/files/patch-third__party_webrtc_rtc__base_physical__socket__server.h
@@ -0,0 +1,11 @@
+--- third_party/webrtc/rtc_base/physical_socket_server.h.orig 2019-04-08 08:23:51 UTC
++++ third_party/webrtc/rtc_base/physical_socket_server.h
+@@ -11,7 +11,7 @@
+ #ifndef RTC_BASE_PHYSICAL_SOCKET_SERVER_H_
+ #define RTC_BASE_PHYSICAL_SOCKET_SERVER_H_
+
+-#if defined(WEBRTC_POSIX) && defined(WEBRTC_LINUX)
++#if defined(WEBRTC_POSIX) && defined(WEBRTC_LINUX) && !defined(WEBRTC_BSD)
+ #include <sys/epoll.h>
+ #define WEBRTC_USE_EPOLL 1
+ #endif
diff --git a/devel/electron5/files/patch-third__party_webrtc_rtc__base_platform__thread__types.cc b/devel/electron5/files/patch-third__party_webrtc_rtc__base_platform__thread__types.cc
new file mode 100644
index 000000000000..15dbd9b9a753
--- /dev/null
+++ b/devel/electron5/files/patch-third__party_webrtc_rtc__base_platform__thread__types.cc
@@ -0,0 +1,40 @@
+--- third_party/webrtc/rtc_base/platform_thread_types.cc.orig 2019-04-08 08:23:51 UTC
++++ third_party/webrtc/rtc_base/platform_thread_types.cc
+@@ -11,7 +11,9 @@
+ #include "rtc_base/platform_thread_types.h"
+
+ #if defined(WEBRTC_LINUX)
++#if !defined(__FreeBSD__)
+ #include <sys/prctl.h>
++#endif
+ #include <sys/syscall.h>
+ #endif
+
+@@ -27,8 +29,10 @@ PlatformThreadId CurrentThreadId() {
+ return gettid();
+ #elif defined(WEBRTC_FUCHSIA)
+ return zx_thread_self();
+-#elif defined(WEBRTC_LINUX)
++#elif defined(WEBRTC_LINUX) && !defined(__FreeBSD__)
+ return syscall(__NR_gettid);
++#elif defined(__FreeBSD__)
++ return reinterpret_cast<uint64_t>(pthread_self());
+ #else
+ // Default implementation for nacl and solaris.
+ return reinterpret_cast<pid_t>(pthread_self());
+@@ -55,6 +59,7 @@ bool IsThreadRefEqual(const PlatformThreadRef& a, cons
+ }
+
+ void SetCurrentThreadName(const char* name) {
++#if !defined(__FreeBSD__)
+ #if defined(WEBRTC_WIN)
+ struct {
+ DWORD dwType;
+@@ -72,6 +77,7 @@ void SetCurrentThreadName(const char* name) {
+ prctl(PR_SET_NAME, reinterpret_cast<unsigned long>(name)); // NOLINT
+ #elif defined(WEBRTC_MAC) || defined(WEBRTC_IOS)
+ pthread_setname_np(name);
++#endif
+ #endif
+ }
+
diff --git a/devel/electron5/files/patch-third__party_webrtc_rtc__base_string__utils.h b/devel/electron5/files/patch-third__party_webrtc_rtc__base_string__utils.h
new file mode 100644
index 000000000000..5cf060732450
--- /dev/null
+++ b/devel/electron5/files/patch-third__party_webrtc_rtc__base_string__utils.h
@@ -0,0 +1,17 @@
+--- third_party/webrtc/rtc_base/string_utils.h.orig 2019-04-08 08:34:47 UTC
++++ third_party/webrtc/rtc_base/string_utils.h
+@@ -25,11 +25,11 @@
+ #endif // WEBRTC_WIN
+
+ #if defined(WEBRTC_POSIX)
+-#ifdef BSD
++#if defined(WEBRTC_BSD) || defined(BSD)
+ #include <stdlib.h>
+-#else // BSD
++#else // WEBRTC_BSD
+ #include <alloca.h>
+-#endif // !BSD
++#endif // !WEBRTC_BSD
+ #include <strings.h>
+ #endif // WEBRTC_POSIX
+
diff --git a/devel/electron5/files/patch-third__party_webrtc_system__wrappers_BUILD.gn b/devel/electron5/files/patch-third__party_webrtc_system__wrappers_BUILD.gn
new file mode 100644
index 000000000000..210ad8eba53a
--- /dev/null
+++ b/devel/electron5/files/patch-third__party_webrtc_system__wrappers_BUILD.gn
@@ -0,0 +1,11 @@
+--- third_party/webrtc/system_wrappers/BUILD.gn.orig 2019-04-08 08:34:48 UTC
++++ third_party/webrtc/system_wrappers/BUILD.gn
+@@ -59,8 +59,6 @@ rtc_static_library("system_wrappers") {
+ if (!build_with_chromium) {
+ deps += [ ":cpu_features_linux" ]
+ }
+-
+- libs += [ "rt" ]
+ }
+
+ if (is_win) {
diff --git a/devel/electron5/files/patch-third__party_yasm_yasm__assemble.gni b/devel/electron5/files/patch-third__party_yasm_yasm__assemble.gni
new file mode 100644
index 000000000000..9b4a433a44d9
--- /dev/null
+++ b/devel/electron5/files/patch-third__party_yasm_yasm__assemble.gni
@@ -0,0 +1,159 @@
+--- third_party/yasm/yasm_assemble.gni.orig 2019-04-08 08:19:10 UTC
++++ third_party/yasm/yasm_assemble.gni
+@@ -1,105 +1,23 @@
+-# Copyright 2014 The Chromium Authors. All rights reserved.
++# Copyright 2016 The Chromium Authors. All rights reserved.
+ # Use of this source code is governed by a BSD-style license that can be
+ # found in the LICENSE file.
+
+-# This provides the yasm_assemble() template which uses YASM to assemble
+-# assembly files.
+-#
+-# Files to be assembled with YASM should have an extension of .asm.
+-#
+-# Parameters
+-#
+-# yasm_flags (optional)
+-# [list of strings] Pass additional flags into YASM. These are appended
+-# to the command line. Note that the target machine type and system is
+-# already set up based on the current toolchain so you don't need to
+-# specify these things (see below).
+-#
+-# Example: yasm_flags = [ "--force-strict" ]
+-#
+-# include_dirs (optional)
+-# [list of dir names] List of additional include dirs. Note that the
+-# source root and the root generated file dir is always added, just like
+-# our C++ build sets up.
+-#
+-# Example: include_dirs = [ "//some/other/path", target_gen_dir ]
+-#
+-# defines (optional)
+-# [list of strings] List of defines, as with the native code defines.
+-#
+-# Example: defines = [ "FOO", "BAR=1" ]
+-#
+-# inputs, deps, visibility (optional)
+-# These have the same meaning as in an action.
+-#
+-# Example
+-#
+-# yasm_assemble("my_yasm_target") {
+-# sources = [
+-# "ultra_optimized_awesome.asm",
+-# ]
+-# include_dirs = [ "assembly_include" ]
+-# }
+-
+-if (is_mac || is_ios) {
+- if (current_cpu == "x86") {
+- _yasm_flags = [
+- "-fmacho32",
+- "-m",
+- "x86",
+- ]
+- } else if (current_cpu == "x64") {
+- _yasm_flags = [
+- "-fmacho64",
+- "-m",
+- "amd64",
+- ]
+- }
+-} else if (is_posix || is_fuchsia) {
+- if (current_cpu == "x86") {
+- _yasm_flags = [
+- "-felf32",
+- "-m",
+- "x86",
+- ]
+- } else if (current_cpu == "x64") {
+- _yasm_flags = [
+- "-DPIC",
+- "-felf64",
+- "-m",
+- "amd64",
+- ]
+- }
+-} else if (is_win) {
+- if (current_cpu == "x86") {
+- _yasm_flags = [
+- "-DPREFIX",
+- "-fwin32",
+- "-m",
+- "x86",
+- ]
+- } else if (current_cpu == "x64") {
+- _yasm_flags = [
+- "-fwin64",
+- "-m",
+- "amd64",
+- ]
+- }
++if (current_cpu == "x86") {
++ _yasm_flags = [
++ "-felf32",
++ "-m",
++ "x86",
++ ]
++} else if (current_cpu == "x64") {
++ _yasm_flags = [
++ "-DPIC",
++ "-felf64",
++ "-m",
++ "amd64",
++ ]
+ }
+
+-if (is_win) {
+- asm_obj_extension = "obj"
+-} else {
+- asm_obj_extension = "o"
+-}
+-
+ template("yasm_assemble") {
+- assert(defined(invoker.sources), "Need sources defined for $target_name")
+-
+- # Only depend on YASM on x86 systems. Force compilation of .asm files for
+- # ARM to fail.
+- assert(current_cpu == "x86" || current_cpu == "x64")
+-
+ action_name = "${target_name}_action"
+ source_set_name = target_name
+
+@@ -114,24 +32,12 @@ template("yasm_assemble") {
+ inputs = invoker.inputs
+ }
+
+- # Executable (first in the args). The binary might be in the root build dir
+- # (no cross-compiling) or in a toolchain-specific subdirectory of that
+- # (when cross-compiling).
+- yasm_label = "//third_party/yasm($host_toolchain)"
+- args = [ "./" + # Force current dir.
+- rebase_path(get_label_info(yasm_label, "root_out_dir") + "/yasm",
+- root_build_dir) ]
+-
+- # Deps.
+- deps = [
+- yasm_label,
+- ]
++ deps = []
+ if (defined(invoker.deps)) {
+ deps += invoker.deps
+ }
+
+- # Flags.
+- args += _yasm_flags
++ args = [ "yasm" ] + _yasm_flags
+ if (defined(invoker.yasm_flags)) {
+ args += invoker.yasm_flags
+ }
+@@ -188,9 +94,6 @@ template("yasm_assemble") {
+ }
+
+ sources = get_target_outputs(":$action_name")
+-
+- # Do not publicize any header to remove build dependency.
+- public = []
+
+ deps = [
+ ":$action_name",
diff --git a/devel/electron5/files/patch-third__party_zlib_arm__features.c b/devel/electron5/files/patch-third__party_zlib_arm__features.c
new file mode 100644
index 000000000000..3710c3fd1a5f
--- /dev/null
+++ b/devel/electron5/files/patch-third__party_zlib_arm__features.c
@@ -0,0 +1,97 @@
+--- third_party/zlib/arm_features.c.orig 2019-04-20 12:09:23 UTC
++++ third_party/zlib/arm_features.c
+@@ -8,83 +8,30 @@
+
+ #include "zutil.h"
+
+-int ZLIB_INTERNAL arm_cpu_enable_crc32 = 0;
+-int ZLIB_INTERNAL arm_cpu_enable_pmull = 0;
+-
+-#if !defined(_MSC_VER)
+ #include <pthread.h>
+ #include <stdint.h>
++#include <machine/armreg.h>
++#include <sys/types.h>
+
+-#if defined(ARMV8_OS_ANDROID)
+-#include <cpu-features.h>
+-#elif defined(ARMV8_OS_LINUX)
+-#include <asm/hwcap.h>
+-#include <sys/auxv.h>
+-#else
+-#error ### No ARM CPU features detection in your platform/OS
+-#endif
++int ZLIB_INTERNAL arm_cpu_enable_crc32 = 0;
++int ZLIB_INTERNAL arm_cpu_enable_pmull = 0;
+
+ static pthread_once_t cpu_check_inited_once = PTHREAD_ONCE_INIT;
+
+ static void init_arm_features(void)
+ {
+- uint64_t flag_crc32 = 0, flag_pmull = 0, capabilities = 0;
++#if defined (__aarch64__)
++ uint64_t id_aa64isar0;
+
+-#if defined(ARMV8_OS_ANDROID)
+- flag_crc32 = ANDROID_CPU_ARM_FEATURE_CRC32;
+- flag_pmull = ANDROID_CPU_ARM_FEATURE_PMULL;
+- capabilities = android_getCpuFeatures();
+-#elif defined(ARMV8_OS_LINUX)
+- #if defined(__aarch64__)
+- flag_crc32 = HWCAP_CRC32;
+- flag_pmull = HWCAP_PMULL;
+- capabilities = getauxval(AT_HWCAP);
+- #elif defined(__ARM_NEON) || defined(__ARM_NEON__)
+- /* The use of HWCAP2 is for getting features of newer ARMv8-A SoCs
+- * while running in 32bits mode (i.e. aarch32).
+- */
+- flag_crc32 = HWCAP2_CRC32;
+- flag_pmull = HWCAP2_PMULL;
+- capabilities = getauxval(AT_HWCAP2);
+- #endif
+-#endif
+-
+- if (capabilities & flag_crc32)
+- arm_cpu_enable_crc32 = 1;
+-
+- if (capabilities & flag_pmull)
++ id_aa64isar0 = READ_SPECIALREG(ID_AA64ISAR0_EL1);
++ if (ID_AA64ISAR0_AES(id_aa64isar0) == ID_AA64ISAR0_AES_PMULL)
+ arm_cpu_enable_pmull = 1;
++ if (ID_AA64ISAR0_CRC32(id_aa64isar0) == ID_AA64ISAR0_CRC32_BASE)
++ arm_cpu_enable_crc32 = 1;
++#endif
+ }
+
+ void ZLIB_INTERNAL arm_check_features(void)
+ {
+ pthread_once(&cpu_check_inited_once, init_arm_features);
+ }
+-#else
+-#include <windows.h>
+-
+-static BOOL CALLBACK _arm_check_features(PINIT_ONCE once,
+- PVOID param,
+- PVOID *context);
+-static INIT_ONCE cpu_check_inited_once = INIT_ONCE_STATIC_INIT;
+-
+-
+-void ZLIB_INTERNAL arm_check_features(void)
+-{
+- InitOnceExecuteOnce(&cpu_check_inited_once, _arm_check_features,
+- NULL, NULL);
+-}
+-
+-static BOOL CALLBACK _arm_check_features(PINIT_ONCE once,
+- PVOID param,
+- PVOID *context)
+-{
+- if (IsProcessorFeaturePresent(PF_ARM_V8_CRC32_INSTRUCTIONS_AVAILABLE))
+- arm_cpu_enable_crc32 = 1;
+-
+- if (IsProcessorFeaturePresent(PF_ARM_V8_CRYPTO_INSTRUCTIONS_AVAILABLE))
+- arm_cpu_enable_pmull = 1;
+-
+- return TRUE;
+-}
+-#endif /* _MSC_VER */
diff --git a/devel/electron5/files/patch-tools_gn_base_files_file__posix.cc b/devel/electron5/files/patch-tools_gn_base_files_file__posix.cc
new file mode 100644
index 000000000000..b96ca30305db
--- /dev/null
+++ b/devel/electron5/files/patch-tools_gn_base_files_file__posix.cc
@@ -0,0 +1,11 @@
+--- tools/gn/base/files/file_posix.cc.orig 2019-03-11 22:12:13 UTC
++++ tools/gn/base/files/file_posix.cc
+@@ -414,7 +414,7 @@ void File::DoInitialize(const FilePath& path, uint32_t
+ bool File::Flush() {
+ DCHECK(IsValid());
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ return !HANDLE_EINTR(fdatasync(file_.get()));
+ #else
+ return !HANDLE_EINTR(fsync(file_.get()));
diff --git a/devel/electron5/files/patch-tools_gn_base_files_file__util.h b/devel/electron5/files/patch-tools_gn_base_files_file__util.h
new file mode 100644
index 000000000000..142ec10db26a
--- /dev/null
+++ b/devel/electron5/files/patch-tools_gn_base_files_file__util.h
@@ -0,0 +1,11 @@
+--- tools/gn/base/files/file_util.h.orig 2019-06-04 19:02:25 UTC
++++ tools/gn/base/files/file_util.h
+@@ -361,7 +361,7 @@ bool VerifyPathControlledByAdmin(const base::FilePath&
+ // the directory |path|, in the number of FilePath::CharType, or -1 on failure.
+ int GetMaximumPathComponentLength(const base::FilePath& path);
+
+-#if defined(OS_LINUX) || defined(OS_AIX)
++#if defined(OS_LINUX) || defined(OS_AIX) || defined(OS_BSD)
+ // Broad categories of file systems as returned by statfs() on Linux.
+ enum FileSystemType {
+ FILE_SYSTEM_UNKNOWN, // statfs failed.
diff --git a/devel/electron5/files/patch-tools_gn_base_files_file__util__posix.cc b/devel/electron5/files/patch-tools_gn_base_files_file__util__posix.cc
new file mode 100644
index 000000000000..32498b74dcef
--- /dev/null
+++ b/devel/electron5/files/patch-tools_gn_base_files_file__util__posix.cc
@@ -0,0 +1,11 @@
+--- tools/gn/base/files/file_util_posix.cc.orig 2019-06-04 19:02:25 UTC
++++ tools/gn/base/files/file_util_posix.cc
+@@ -254,7 +254,7 @@ bool ReplaceFile(const FilePath& from_path,
+ #endif // !defined(OS_NACL_NONSFI)
+
+ bool CreateLocalNonBlockingPipe(int fds[2]) {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ return pipe2(fds, O_CLOEXEC | O_NONBLOCK) == 0;
+ #else
+ int raw_fds[2];
diff --git a/devel/electron5/files/patch-tools_gn_base_files_scoped__file.cc b/devel/electron5/files/patch-tools_gn_base_files_scoped__file.cc
new file mode 100644
index 000000000000..8364317cad57
--- /dev/null
+++ b/devel/electron5/files/patch-tools_gn_base_files_scoped__file.cc
@@ -0,0 +1,11 @@
+--- tools/gn/base/files/scoped_file.cc.orig 2019-06-04 19:02:25 UTC
++++ tools/gn/base/files/scoped_file.cc
+@@ -30,7 +30,7 @@ void ScopedFDCloseTraits::Free(int fd) {
+ // a single open directory would bypass the entire security model.
+ int ret = IGNORE_EINTR(close(fd));
+
+-#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_FUCHSIA) || \
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_FUCHSIA) || defined(OS_BSD) || \
+ defined(OS_ANDROID)
+ // NB: Some file descriptors can return errors from close() e.g. network
+ // filesystems such as NFS and Linux input devices. On Linux, macOS, and
diff --git a/devel/electron5/files/patch-tools_gn_build_gen.py b/devel/electron5/files/patch-tools_gn_build_gen.py
new file mode 100644
index 000000000000..34b612046ca9
--- /dev/null
+++ b/devel/electron5/files/patch-tools_gn_build_gen.py
@@ -0,0 +1,33 @@
+--- tools/gn/build/gen.py.orig 2019-07-24 19:05:33 UTC
++++ tools/gn/build/gen.py
+@@ -46,7 +46,7 @@ class Platform(object):
+
+ @staticmethod
+ def known_platforms():
+- return ['linux', 'darwin', 'msvc', 'aix', 'fuchsia', 'openbsd']
++ return ['linux', 'darwin', 'msvc', 'aix', 'fuchsia', 'openbsd', 'freebsd']
+
+ def platform(self):
+ return self._platform
+@@ -69,6 +69,9 @@ class Platform(object):
+ def is_aix(self):
+ return self._platform == 'aix'
+
++ def is_freebsd(self):
++ return self._platform == 'freebsd'
++
+ def is_posix(self):
+ return self._platform in ['linux', 'freebsd', 'darwin', 'aix', 'openbsd']
+
+@@ -335,6 +338,11 @@ def WriteGNNinja(path, platform, host, options):
+ elif platform.is_aix():
+ cflags_cc.append('-maix64')
+ ldflags.append('-maix64')
++ elif platform.is_freebsd():
++ cflags.extend(['-Wno-deprecated-register', '-Wno-parentheses-equality'])
++ ldflags.extend(['-pthread'])
++ libs.extend(['-lexecinfo', '-lkvm', '-lutil'])
++ include_dirs += ['/usr/local/include']
+
+ if platform.is_posix():
+ ldflags.append('-pthread')
diff --git a/devel/electron5/files/patch-tools_gn_tools_gn_exec__process.cc b/devel/electron5/files/patch-tools_gn_tools_gn_exec__process.cc
new file mode 100644
index 000000000000..bd6d48b4274e
--- /dev/null
+++ b/devel/electron5/files/patch-tools_gn_tools_gn_exec__process.cc
@@ -0,0 +1,13 @@
+--- tools/gn/tools/gn/exec_process.cc.orig 2019-03-11 22:12:13 UTC
++++ tools/gn/tools/gn/exec_process.cc
+@@ -29,6 +29,10 @@
+ #include "base/posix/file_descriptor_shuffle.h"
+ #endif
+
++#if defined(OS_BSD)
++#include <signal.h>
++#endif
++
+ namespace internal {
+
+ #if defined(OS_WIN)
diff --git a/devel/electron5/files/patch-tools_gn_util_sys__info.cc b/devel/electron5/files/patch-tools_gn_util_sys__info.cc
new file mode 100644
index 000000000000..fdc4849fc8da
--- /dev/null
+++ b/devel/electron5/files/patch-tools_gn_util_sys__info.cc
@@ -0,0 +1,11 @@
+--- tools/gn/util/sys_info.cc.orig 2019-04-30 22:29:37 UTC
++++ tools/gn/util/sys_info.cc
+@@ -28,6 +28,8 @@ std::string OperatingSystemArchitecture() {
+ arch = "x86";
+ } else if (arch == "amd64") {
+ arch = "x86_64";
++ } else if (arch == "arm64") {
++ arch = "aarch64";
+ } else if (std::string(info.sysname) == "AIX") {
+ arch = "ppc64";
+ }
diff --git a/devel/electron5/files/patch-tools_json__schema__compiler_feature__compiler.py b/devel/electron5/files/patch-tools_json__schema__compiler_feature__compiler.py
new file mode 100644
index 000000000000..488bccb0394e
--- /dev/null
+++ b/devel/electron5/files/patch-tools_json__schema__compiler_feature__compiler.py
@@ -0,0 +1,10 @@
+--- tools/json_schema_compiler/feature_compiler.py.orig 2019-04-08 08:19:10 UTC
++++ tools/json_schema_compiler/feature_compiler.py
+@@ -205,6 +205,7 @@ FEATURE_GRAMMAR = (
+ 'enum_map': {
+ 'chromeos': 'Feature::CHROMEOS_PLATFORM',
+ 'linux': 'Feature::LINUX_PLATFORM',
++ 'bsd': 'Feature::LINUX_PLATFORM',
+ 'mac': 'Feature::MACOSX_PLATFORM',
+ 'win': 'Feature::WIN_PLATFORM',
+ }
diff --git a/devel/electron5/files/patch-tools_json__schema__compiler_model.py b/devel/electron5/files/patch-tools_json__schema__compiler_model.py
new file mode 100644
index 000000000000..848fee403a4e
--- /dev/null
+++ b/devel/electron5/files/patch-tools_json__schema__compiler_model.py
@@ -0,0 +1,11 @@
+--- tools/json_schema_compiler/model.py.orig 2019-04-08 08:19:10 UTC
++++ tools/json_schema_compiler/model.py
+@@ -602,7 +602,7 @@ class Platforms(object):
+ """
+ CHROMEOS = _PlatformInfo("chromeos")
+ CHROMEOS_TOUCH = _PlatformInfo("chromeos_touch")
+- LINUX = _PlatformInfo("linux")
++ LINUX = _PlatformInfo("bsd")
+ MAC = _PlatformInfo("mac")
+ WIN = _PlatformInfo("win")
+
diff --git a/devel/electron5/files/patch-tools_perf_chrome__telemetry__build_BUILD.gn b/devel/electron5/files/patch-tools_perf_chrome__telemetry__build_BUILD.gn
new file mode 100644
index 000000000000..88722ef311f7
--- /dev/null
+++ b/devel/electron5/files/patch-tools_perf_chrome__telemetry__build_BUILD.gn
@@ -0,0 +1,11 @@
+--- tools/perf/chrome_telemetry_build/BUILD.gn.orig 2019-04-08 08:33:22 UTC
++++ tools/perf/chrome_telemetry_build/BUILD.gn
+@@ -40,7 +40,7 @@ group("telemetry_chrome_test") {
+ data_deps += [ "//chrome:reorder_imports" ]
+ }
+
+- if (is_linux) {
++ if (is_linux && !is_bsd) {
+ data_deps += [ "//third_party/breakpad:dump_syms($host_toolchain)" ]
+ }
+
diff --git a/devel/electron5/files/patch-tools_variations_fieldtrial__to__struct.py b/devel/electron5/files/patch-tools_variations_fieldtrial__to__struct.py
new file mode 100644
index 000000000000..706ffac6183f
--- /dev/null
+++ b/devel/electron5/files/patch-tools_variations_fieldtrial__to__struct.py
@@ -0,0 +1,10 @@
+--- tools/variations/fieldtrial_to_struct.py.orig 2019-04-08 08:33:22 UTC
++++ tools/variations/fieldtrial_to_struct.py
+@@ -24,6 +24,7 @@ finally:
+ _platforms = [
+ 'android',
+ 'android_webview',
++ 'freebsd',
+ 'chromeos',
+ 'fuchsia',
+ 'ios',
diff --git a/devel/electron5/files/patch-ui_base_dragdrop_os__exchange__data__provider__factory.cc b/devel/electron5/files/patch-ui_base_dragdrop_os__exchange__data__provider__factory.cc
new file mode 100644
index 000000000000..ff07767527fd
--- /dev/null
+++ b/devel/electron5/files/patch-ui_base_dragdrop_os__exchange__data__provider__factory.cc
@@ -0,0 +1,20 @@
+--- ui/base/dragdrop/os_exchange_data_provider_factory.cc.orig 2019-04-08 08:19:15 UTC
++++ ui/base/dragdrop/os_exchange_data_provider_factory.cc
+@@ -8,7 +8,7 @@
+
+ #if defined(USE_X11)
+ #include "ui/base/dragdrop/os_exchange_data_provider_aurax11.h"
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ #include "ui/base/dragdrop/os_exchange_data_provider_aura.h"
+ #elif defined(OS_MACOSX)
+ #include "ui/base/dragdrop/os_exchange_data_provider_builder_mac.h"
+@@ -42,7 +42,7 @@ OSExchangeDataProviderFactory::CreateProvider() {
+
+ #if defined(USE_X11)
+ return std::make_unique<OSExchangeDataProviderAuraX11>();
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ return std::make_unique<OSExchangeDataProviderAura>();
+ #elif defined(OS_MACOSX)
+ return ui::BuildOSExchangeDataProviderMac();
diff --git a/devel/electron5/files/patch-ui_base_ime_ime__engine__handler__interface.h b/devel/electron5/files/patch-ui_base_ime_ime__engine__handler__interface.h
new file mode 100644
index 000000000000..a4a7db01d0fd
--- /dev/null
+++ b/devel/electron5/files/patch-ui_base_ime_ime__engine__handler__interface.h
@@ -0,0 +1,11 @@
+--- ui/base/ime/ime_engine_handler_interface.h.orig 2019-04-08 08:33:23 UTC
++++ ui/base/ime/ime_engine_handler_interface.h
+@@ -166,7 +166,7 @@ class UI_BASE_IME_EXPORT IMEEngineHandlerInterface {
+ virtual void SetMirroringEnabled(bool mirroring_enabled) = 0;
+ virtual void SetCastingEnabled(bool casting_enabled) = 0;
+
+-#elif defined(OS_LINUX) || defined(OS_WIN)
++#elif defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD)
+
+ // Get the id of the IME extension.
+ virtual std::string GetExtensionId() const = 0;
diff --git a/devel/electron5/files/patch-ui_base_ime_input__method__initializer.cc b/devel/electron5/files/patch-ui_base_ime_input__method__initializer.cc
new file mode 100644
index 000000000000..2903d4d49231
--- /dev/null
+++ b/devel/electron5/files/patch-ui_base_ime_input__method__initializer.cc
@@ -0,0 +1,38 @@
+--- ui/base/ime/input_method_initializer.cc.orig 2019-04-08 08:33:23 UTC
++++ ui/base/ime/input_method_initializer.cc
+@@ -8,7 +8,7 @@
+
+ #if defined(OS_CHROMEOS)
+ #include "ui/base/ime/ime_bridge.h"
+-#elif defined(USE_AURA) && defined(OS_LINUX)
++#elif defined(USE_AURA) && (defined(OS_LINUX) || defined(OS_BSD))
+ #include "base/logging.h"
+ #include "ui/base/ime/linux/fake_input_method_context_factory.h"
+ #elif defined(OS_WIN)
+@@ -18,7 +18,7 @@
+
+ namespace {
+
+-#if !defined(OS_CHROMEOS) && defined(USE_AURA) && defined(OS_LINUX)
++#if !defined(OS_CHROMEOS) && defined(USE_AURA) && (defined(OS_LINUX) || defined(OS_BSD))
+ const ui::LinuxInputMethodContextFactory*
+ g_linux_input_method_context_factory_for_testing;
+ #endif
+@@ -46,7 +46,7 @@ void ShutdownInputMethod() {
+ void InitializeInputMethodForTesting() {
+ #if defined(OS_CHROMEOS)
+ IMEBridge::Initialize();
+-#elif defined(USE_AURA) && defined(OS_LINUX)
++#elif defined(USE_AURA) && (defined(OS_LINUX) || defined(OS_BSD))
+ if (!g_linux_input_method_context_factory_for_testing)
+ g_linux_input_method_context_factory_for_testing =
+ new FakeInputMethodContextFactory();
+@@ -67,7 +67,7 @@ void InitializeInputMethodForTesting() {
+ void ShutdownInputMethodForTesting() {
+ #if defined(OS_CHROMEOS)
+ IMEBridge::Shutdown();
+-#elif defined(USE_AURA) && defined(OS_LINUX)
++#elif defined(USE_AURA) && (defined(OS_LINUX) || defined(OS_BSD))
+ const LinuxInputMethodContextFactory* factory =
+ LinuxInputMethodContextFactory::instance();
+ CHECK(!factory || factory == g_linux_input_method_context_factory_for_testing)
diff --git a/devel/electron5/files/patch-ui_base_resource_resource__bundle.cc b/devel/electron5/files/patch-ui_base_resource_resource__bundle.cc
new file mode 100644
index 000000000000..15d469a7d779
--- /dev/null
+++ b/devel/electron5/files/patch-ui_base_resource_resource__bundle.cc
@@ -0,0 +1,20 @@
+--- ui/base/resource/resource_bundle.cc.orig 2019-04-08 08:19:15 UTC
++++ ui/base/resource/resource_bundle.cc
+@@ -692,7 +692,7 @@ void ResourceBundle::ReloadFonts() {
+ }
+
+ ScaleFactor ResourceBundle::GetMaxScaleFactor() const {
+-#if defined(OS_WIN) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD)
+ return max_scale_factor_;
+ #else
+ return GetSupportedScaleFactors().back();
+@@ -745,7 +745,7 @@ void ResourceBundle::InitSharedInstance(Delegate* dele
+ // On platforms other than iOS, 100P is always a supported scale factor.
+ // For Windows we have a separate case in this function.
+ supported_scale_factors.push_back(SCALE_FACTOR_100P);
+-#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_WIN)
++#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD)
+ supported_scale_factors.push_back(SCALE_FACTOR_200P);
+ #endif
+ #endif
diff --git a/devel/electron5/files/patch-ui_base_resource_resource__bundle__freebsd.cc b/devel/electron5/files/patch-ui_base_resource_resource__bundle__freebsd.cc
new file mode 100644
index 000000000000..ed169d7cecdd
--- /dev/null
+++ b/devel/electron5/files/patch-ui_base_resource_resource__bundle__freebsd.cc
@@ -0,0 +1,24 @@
+--- ui/base/resource/resource_bundle_freebsd.cc.orig 2019-04-09 12:48:54 UTC
++++ ui/base/resource/resource_bundle_freebsd.cc
+@@ -0,0 +1,21 @@
++// Copyright 2017 The Chromium Authors. All rights reserved.
++// Use of this source code is governed by a BSD-style license that can be
++// found in the LICENSE file.
++
++#include "ui/base/resource/resource_bundle.h"
++
++#include "base/logging.h"
++#include "base/macros.h"
++#include "ui/gfx/image/image.h"
++
++namespace ui {
++
++void ResourceBundle::LoadCommonResources() {
++ LoadChromeResources();
++}
++
++gfx::Image& ResourceBundle::GetNativeImageNamed(int resource_id) {
++ return GetImageNamed(resource_id);
++}
++
++} // namespace ui
diff --git a/devel/electron5/files/patch-ui_base_ui__base__features.cc b/devel/electron5/files/patch-ui_base_ui__base__features.cc
new file mode 100644
index 000000000000..10935e0e8e64
--- /dev/null
+++ b/devel/electron5/files/patch-ui_base_ui__base__features.cc
@@ -0,0 +1,20 @@
+--- ui/base/ui_base_features.cc.orig 2019-04-08 08:33:23 UTC
++++ ui/base/ui_base_features.cc
+@@ -111,7 +111,7 @@ const base::Feature kEnableAutomaticUiAdjustmentsForTo
+ "EnableAutomaticUiAdjustmentsForTouch", base::FEATURE_ENABLED_BY_DEFAULT};
+ #endif // defined(OS_WIN) || defined(OS_CHROMEOS)
+
+-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+ // Enables stylus appearing as touch when in contact with digitizer.
+ const base::Feature kDirectManipulationStylus = {
+ "DirectManipulationStylus",
+@@ -121,7 +121,7 @@ const base::Feature kDirectManipulationStylus = {
+ base::FEATURE_DISABLED_BY_DEFAULT
+ #endif
+ };
+-#endif // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
++#endif // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+
+ const base::Feature kMash = {"Mash", base::FEATURE_DISABLED_BY_DEFAULT};
+
diff --git a/devel/electron5/files/patch-ui_base_ui__base__features.h b/devel/electron5/files/patch-ui_base_ui__base__features.h
new file mode 100644
index 000000000000..fd2100167607
--- /dev/null
+++ b/devel/electron5/files/patch-ui_base_ui__base__features.h
@@ -0,0 +1,14 @@
+--- ui/base/ui_base_features.h.orig 2019-04-08 08:33:23 UTC
++++ ui/base/ui_base_features.h
+@@ -46,9 +46,9 @@ UI_BASE_EXPORT bool IsUsingWMPointerForTouch();
+ UI_BASE_EXPORT extern const base::Feature kEnableAutomaticUiAdjustmentsForTouch;
+ #endif // defined(OS_WIN) || defined(OS_CHROMEOS)
+
+-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+ UI_BASE_EXPORT extern const base::Feature kDirectManipulationStylus;
+-#endif // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
++#endif // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+
+ // Used to have ash (Chrome OS system UI) run in its own process.
+ // TODO(jamescook): Make flag only available in Chrome OS.
diff --git a/devel/electron5/files/patch-ui_base_webui_web__ui__util.cc b/devel/electron5/files/patch-ui_base_webui_web__ui__util.cc
new file mode 100644
index 000000000000..6861df5eb46a
--- /dev/null
+++ b/devel/electron5/files/patch-ui_base_webui_web__ui__util.cc
@@ -0,0 +1,11 @@
+--- ui/base/webui/web_ui_util.cc.orig 2019-04-08 08:19:15 UTC
++++ ui/base/webui/web_ui_util.cc
+@@ -217,7 +217,7 @@ std::string GetFontFamily() {
+
+ // TODO(dnicoara) Remove Ozone check when PlatformFont support is introduced
+ // into Ozone: crbug.com/320050
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) && !defined(USE_OZONE)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS) && !defined(USE_OZONE)
+ font_family = ui::ResourceBundle::GetSharedInstance().GetFont(
+ ui::ResourceBundle::BaseFont).GetFontName() + ", " + font_family;
+ #endif
diff --git a/devel/electron5/files/patch-ui_events_devices_x11_device__data__manager__x11.cc b/devel/electron5/files/patch-ui_events_devices_x11_device__data__manager__x11.cc
new file mode 100644
index 000000000000..f9d8ee9e9c0e
--- /dev/null
+++ b/devel/electron5/files/patch-ui_events_devices_x11_device__data__manager__x11.cc
@@ -0,0 +1,19 @@
+--- ui/events/devices/x11/device_data_manager_x11.cc.orig 2019-04-08 08:19:16 UTC
++++ ui/events/devices/x11/device_data_manager_x11.cc
+@@ -828,6 +828,8 @@ void DeviceDataManagerX11::SetDisabledKeyboardAllowedK
+ }
+
+ void DeviceDataManagerX11::DisableDevice(int deviceid) {
++ NOTIMPLEMENTED();
++#if !defined(OS_BSD)
+ blocked_devices_.set(deviceid, true);
+ // TODO(rsadam@): Support blocking touchscreen devices.
+ std::vector<InputDevice> keyboards = GetKeyboardDevices();
+@@ -838,6 +840,7 @@ void DeviceDataManagerX11::DisableDevice(int deviceid)
+ keyboards.erase(it);
+ DeviceDataManager::OnKeyboardDevicesUpdated(keyboards);
+ }
++#endif
+ }
+
+ void DeviceDataManagerX11::EnableDevice(int deviceid) {
diff --git a/devel/electron5/files/patch-ui_events_event__switches.cc b/devel/electron5/files/patch-ui_events_event__switches.cc
new file mode 100644
index 000000000000..3295c4f061d7
--- /dev/null
+++ b/devel/electron5/files/patch-ui_events_event__switches.cc
@@ -0,0 +1,11 @@
+--- ui/events/event_switches.cc.orig 2019-04-08 08:19:16 UTC
++++ ui/events/event_switches.cc
+@@ -14,7 +14,7 @@ namespace switches {
+ const char kCompensateForUnstablePinchZoom[] =
+ "compensate-for-unstable-pinch-zoom";
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_FREEBSD)
+ // Tells chrome to interpret events from these devices as touch events. Only
+ // available with XInput 2 (i.e. X server 1.8 or above). The id's of the
+ // devices can be retrieved from 'xinput list'.
diff --git a/devel/electron5/files/patch-ui_events_event__switches.h b/devel/electron5/files/patch-ui_events_event__switches.h
new file mode 100644
index 000000000000..8e001da4f46e
--- /dev/null
+++ b/devel/electron5/files/patch-ui_events_event__switches.h
@@ -0,0 +1,11 @@
+--- ui/events/event_switches.h.orig 2019-04-08 08:19:16 UTC
++++ ui/events/event_switches.h
+@@ -13,7 +13,7 @@ namespace switches {
+
+ EVENTS_BASE_EXPORT extern const char kCompensateForUnstablePinchZoom[];
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_FREEBSD)
+ EVENTS_BASE_EXPORT extern const char kTouchDevices[];
+ EVENTS_BASE_EXPORT extern const char kPenDevices[];
+ #endif
diff --git a/devel/electron5/files/patch-ui_events_keycodes_dom_keycode__converter.cc b/devel/electron5/files/patch-ui_events_keycodes_dom_keycode__converter.cc
new file mode 100644
index 000000000000..3b1ea5f38c7b
--- /dev/null
+++ b/devel/electron5/files/patch-ui_events_keycodes_dom_keycode__converter.cc
@@ -0,0 +1,11 @@
+--- ui/events/keycodes/dom/keycode_converter.cc.orig 2019-04-08 08:19:16 UTC
++++ ui/events/keycodes/dom/keycode_converter.cc
+@@ -19,7 +19,7 @@ namespace {
+ // and DOM Level 3 |code| strings.
+ #if defined(OS_WIN)
+ #define USB_KEYMAP(usb, evdev, xkb, win, mac, code, id) {usb, win, code}
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ #define USB_KEYMAP(usb, evdev, xkb, win, mac, code, id) {usb, xkb, code}
+ #elif defined(OS_MACOSX)
+ #define USB_KEYMAP(usb, evdev, xkb, win, mac, code, id) {usb, mac, code}
diff --git a/devel/electron5/files/patch-ui_gfx_BUILD.gn b/devel/electron5/files/patch-ui_gfx_BUILD.gn
new file mode 100644
index 000000000000..07f7379d0f1a
--- /dev/null
+++ b/devel/electron5/files/patch-ui_gfx_BUILD.gn
@@ -0,0 +1,11 @@
+--- ui/gfx/BUILD.gn.orig 2019-04-08 08:33:23 UTC
++++ ui/gfx/BUILD.gn
+@@ -532,7 +532,7 @@ jumbo_source_set("memory_buffer_sources") {
+ deps += [ "//build/config/linux/libdrm" ]
+ }
+
+- if (is_linux || is_android) {
++ if ((is_linux || is_android) && !is_bsd) {
+ deps += [ "//third_party/libsync" ]
+ }
+
diff --git a/devel/electron5/files/patch-ui_gfx_canvas__skia.cc b/devel/electron5/files/patch-ui_gfx_canvas__skia.cc
new file mode 100644
index 000000000000..75513ccc572f
--- /dev/null
+++ b/devel/electron5/files/patch-ui_gfx_canvas__skia.cc
@@ -0,0 +1,11 @@
+--- ui/gfx/canvas_skia.cc.orig 2019-04-08 08:19:17 UTC
++++ ui/gfx/canvas_skia.cc
+@@ -209,7 +209,7 @@ void Canvas::DrawStringRectWithFlags(const base::strin
+ Range range = StripAcceleratorChars(flags, &adjusted_text);
+ bool elide_text = ((flags & NO_ELLIPSIS) == 0);
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // On Linux, eliding really means fading the end of the string. But only
+ // for LTR text. RTL text is still elided (on the left) with "...".
+ if (elide_text) {
diff --git a/devel/electron5/files/patch-ui_gfx_codec_jpeg__codec.cc b/devel/electron5/files/patch-ui_gfx_codec_jpeg__codec.cc
new file mode 100644
index 000000000000..59e02aa35a05
--- /dev/null
+++ b/devel/electron5/files/patch-ui_gfx_codec_jpeg__codec.cc
@@ -0,0 +1,20 @@
+--- ui/gfx/codec/jpeg_codec.cc.orig 2019-04-08 08:19:17 UTC
++++ ui/gfx/codec/jpeg_codec.cc
+@@ -207,6 +207,7 @@ bool JPEGCodec::Decode(const unsigned char* input, siz
+ case JCS_GRAYSCALE:
+ case JCS_RGB:
+ case JCS_YCbCr:
++#ifdef JCS_EXTENSIONS
+ // Choose an output colorspace and return if it is an unsupported one.
+ // Same as JPEGCodec::Encode(), libjpeg-turbo supports all input formats
+ // used by Chromium (i.e. RGBA and BGRA) and we just map the input
+@@ -223,6 +224,9 @@ bool JPEGCodec::Decode(const unsigned char* input, siz
+ NOTREACHED() << "Invalid pixel format";
+ return false;
+ }
++#else
++ cinfo.out_color_space = JCS_RGB;
++#endif
+ break;
+ case JCS_CMYK:
+ case JCS_YCCK:
diff --git a/devel/electron5/files/patch-ui_gfx_font__fallback__linux.cc b/devel/electron5/files/patch-ui_gfx_font__fallback__linux.cc
new file mode 100644
index 000000000000..e10e982002fe
--- /dev/null
+++ b/devel/electron5/files/patch-ui_gfx_font__fallback__linux.cc
@@ -0,0 +1,13 @@
+--- ui/gfx/font_fallback_linux.cc.orig 2019-04-08 08:33:23 UTC
++++ ui/gfx/font_fallback_linux.cc
+@@ -15,6 +15,10 @@
+ #include "base/memory/ptr_util.h"
+ #include "ui/gfx/font.h"
+
++#if defined(OS_BSD)
++#include <unistd.h>
++#endif
++
+ namespace gfx {
+
+ namespace {
diff --git a/devel/electron5/files/patch-ui_gfx_font__list.cc b/devel/electron5/files/patch-ui_gfx_font__list.cc
new file mode 100644
index 000000000000..42bd4cb4e179
--- /dev/null
+++ b/devel/electron5/files/patch-ui_gfx_font__list.cc
@@ -0,0 +1,11 @@
+--- ui/gfx/font_list.cc.orig 2019-04-08 08:19:17 UTC
++++ ui/gfx/font_list.cc
+@@ -24,7 +24,7 @@ base::LazyInstance<scoped_refptr<gfx::FontListImpl>>::
+ bool g_default_impl_initialized = false;
+
+ bool IsFontFamilyAvailable(const std::string& family, SkFontMgr* fontManager) {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ return !!fontManager->legacyMakeTypeface(family.c_str(), SkFontStyle());
+ #else
+ sk_sp<SkFontStyleSet> set(fontManager->matchFamily(family.c_str()));
diff --git a/devel/electron5/files/patch-ui_gfx_font__render__params.h b/devel/electron5/files/patch-ui_gfx_font__render__params.h
new file mode 100644
index 000000000000..3a783e6ab518
--- /dev/null
+++ b/devel/electron5/files/patch-ui_gfx_font__render__params.h
@@ -0,0 +1,18 @@
+--- ui/gfx/font_render_params.h.orig 2019-04-08 08:19:17 UTC
++++ ui/gfx/font_render_params.h
+@@ -111,13 +111,13 @@ GFX_EXPORT FontRenderParams GetFontRenderParams(
+ const FontRenderParamsQuery& query,
+ std::string* family_out);
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Clears GetFontRenderParams()'s cache. Intended to be called by tests that are
+ // changing Fontconfig's configuration.
+ GFX_EXPORT void ClearFontRenderParamsCacheForTest();
+ #endif
+
+-#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_FUCHSIA)
++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_FUCHSIA) || defined(OS_BSD)
+ // Gets the device scale factor to query the FontRenderParams.
+ GFX_EXPORT float GetFontRenderParamsDeviceScaleFactor();
+
diff --git a/devel/electron5/files/patch-ui_gfx_gpu__memory__buffer.h b/devel/electron5/files/patch-ui_gfx_gpu__memory__buffer.h
new file mode 100644
index 000000000000..eac3577d07b1
--- /dev/null
+++ b/devel/electron5/files/patch-ui_gfx_gpu__memory__buffer.h
@@ -0,0 +1,20 @@
+--- ui/gfx/gpu_memory_buffer.h.orig 2019-04-08 08:33:23 UTC
++++ ui/gfx/gpu_memory_buffer.h
+@@ -16,7 +16,7 @@
+ #include "ui/gfx/geometry/rect.h"
+ #include "ui/gfx/gfx_export.h"
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include "ui/gfx/native_pixmap_handle.h"
+ #elif defined(OS_MACOSX) && !defined(OS_IOS)
+ #include "ui/gfx/mac/io_surface.h"
+@@ -65,7 +65,7 @@ struct GFX_EXPORT GpuMemoryBufferHandle {
+ base::UnsafeSharedMemoryRegion region;
+ uint32_t offset;
+ int32_t stride;
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // TODO(crbug.com/863011): convert this to a scoped handle.
+ NativePixmapHandle native_pixmap_handle;
+ #elif defined(OS_MACOSX) && !defined(OS_IOS)
diff --git a/devel/electron5/files/patch-ui_gfx_ipc_gfx__param__traits__macros.h b/devel/electron5/files/patch-ui_gfx_ipc_gfx__param__traits__macros.h
new file mode 100644
index 000000000000..53d1475df00a
--- /dev/null
+++ b/devel/electron5/files/patch-ui_gfx_ipc_gfx__param__traits__macros.h
@@ -0,0 +1,29 @@
+--- ui/gfx/ipc/gfx_param_traits_macros.h.orig 2019-04-08 08:33:23 UTC
++++ ui/gfx/ipc/gfx_param_traits_macros.h
+@@ -18,7 +18,7 @@
+ #include "ui/gfx/selection_bound.h"
+ #include "ui/gfx/swap_result.h"
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include "ui/gfx/native_pixmap_handle.h"
+ #endif
+
+@@ -51,7 +51,7 @@ IPC_STRUCT_TRAITS_BEGIN(gfx::GpuMemoryBufferHandle)
+ IPC_STRUCT_TRAITS_MEMBER(region)
+ IPC_STRUCT_TRAITS_MEMBER(offset)
+ IPC_STRUCT_TRAITS_MEMBER(stride)
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ IPC_STRUCT_TRAITS_MEMBER(native_pixmap_handle)
+ #elif defined(OS_MACOSX)
+ IPC_STRUCT_TRAITS_MEMBER(mach_port)
+@@ -66,7 +66,7 @@ IPC_STRUCT_TRAITS_BEGIN(gfx::GpuMemoryBufferId)
+ IPC_STRUCT_TRAITS_MEMBER(id)
+ IPC_STRUCT_TRAITS_END()
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ IPC_STRUCT_TRAITS_BEGIN(gfx::NativePixmapPlane)
+ IPC_STRUCT_TRAITS_MEMBER(stride)
+ IPC_STRUCT_TRAITS_MEMBER(offset)
diff --git a/devel/electron5/files/patch-ui_gfx_linux_client__native__pixmap__dmabuf.cc b/devel/electron5/files/patch-ui_gfx_linux_client__native__pixmap__dmabuf.cc
new file mode 100644
index 000000000000..835785882d88
--- /dev/null
+++ b/devel/electron5/files/patch-ui_gfx_linux_client__native__pixmap__dmabuf.cc
@@ -0,0 +1,25 @@
+--- ui/gfx/linux/client_native_pixmap_dmabuf.cc.orig 2019-04-08 08:33:23 UTC
++++ ui/gfx/linux/client_native_pixmap_dmabuf.cc
+@@ -5,7 +5,9 @@
+ #include "ui/gfx/linux/client_native_pixmap_dmabuf.h"
+
+ #include <fcntl.h>
++#if !defined(__FreeBSD__)
+ #include <linux/version.h>
++#endif
+ #include <stddef.h>
+ #include <sys/ioctl.h>
+ #include <sys/mman.h>
+@@ -18,11 +20,7 @@
+ #include "base/trace_event/trace_event.h"
+ #include "build/build_config.h"
+
+-#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 11, 0)
+-#include <linux/dma-buf.h>
+-#else
+-#include <linux/types.h>
+-
++#if defined(__FreeBSD__)
+ struct dma_buf_sync {
+ __u64 flags;
+ };
diff --git a/devel/electron5/files/patch-ui_gfx_mojo_buffer__types__struct__traits.cc b/devel/electron5/files/patch-ui_gfx_mojo_buffer__types__struct__traits.cc
new file mode 100644
index 000000000000..8a6e9d34ccbf
--- /dev/null
+++ b/devel/electron5/files/patch-ui_gfx_mojo_buffer__types__struct__traits.cc
@@ -0,0 +1,38 @@
+--- ui/gfx/mojo/buffer_types_struct_traits.cc.orig 2019-04-08 08:33:23 UTC
++++ ui/gfx/mojo/buffer_types_struct_traits.cc
+@@ -28,7 +28,7 @@ bool StructTraits<gfx::mojom::BufferUsageAndFormatData
+ return data.ReadUsage(&out->usage) && data.ReadFormat(&out->format);
+ }
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ std::vector<mojo::ScopedHandle>
+ StructTraits<gfx::mojom::NativePixmapHandleDataView, gfx::NativePixmapHandle>::
+ fds(const gfx::NativePixmapHandle& pixmap_handle) {
+@@ -55,7 +55,7 @@ bool StructTraits<
+ }
+ return data.ReadPlanes(&out->planes);
+ }
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+
+ gfx::mojom::GpuMemoryBufferPlatformHandlePtr StructTraits<
+ gfx::mojom::GpuMemoryBufferHandleDataView,
+@@ -68,7 +68,7 @@ gfx::mojom::GpuMemoryBufferPlatformHandlePtr StructTra
+ return gfx::mojom::GpuMemoryBufferPlatformHandle::NewSharedMemoryHandle(
+ std::move(handle.region));
+ case gfx::NATIVE_PIXMAP:
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ return gfx::mojom::GpuMemoryBufferPlatformHandle::NewNativePixmapHandle(
+ handle.native_pixmap_handle);
+ #else
+@@ -144,7 +144,7 @@ bool StructTraits<gfx::mojom::GpuMemoryBufferHandleDat
+ out->type = gfx::SHARED_MEMORY_BUFFER;
+ out->region = std::move(platform_handle->get_shared_memory_handle());
+ return true;
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ case gfx::mojom::GpuMemoryBufferPlatformHandleDataView::Tag::
+ NATIVE_PIXMAP_HANDLE:
+ out->type = gfx::NATIVE_PIXMAP;
diff --git a/devel/electron5/files/patch-ui_gfx_mojo_buffer__types__struct__traits.h b/devel/electron5/files/patch-ui_gfx_mojo_buffer__types__struct__traits.h
new file mode 100644
index 000000000000..b35531dad1b3
--- /dev/null
+++ b/devel/electron5/files/patch-ui_gfx_mojo_buffer__types__struct__traits.h
@@ -0,0 +1,20 @@
+--- ui/gfx/mojo/buffer_types_struct_traits.h.orig 2019-04-08 08:33:23 UTC
++++ ui/gfx/mojo/buffer_types_struct_traits.h
+@@ -189,7 +189,7 @@ struct StructTraits<gfx::mojom::GpuMemoryBufferIdDataV
+ }
+ };
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ template <>
+ struct StructTraits<gfx::mojom::NativePixmapPlaneDataView,
+ gfx::NativePixmapPlane> {
+@@ -229,7 +229,7 @@ struct StructTraits<gfx::mojom::NativePixmapHandleData
+ static bool Read(gfx::mojom::NativePixmapHandleDataView data,
+ gfx::NativePixmapHandle* out);
+ };
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+
+ template <>
+ struct StructTraits<gfx::mojom::GpuMemoryBufferHandleDataView,
diff --git a/devel/electron5/files/patch-ui_gfx_native__pixmap__handle.cc b/devel/electron5/files/patch-ui_gfx_native__pixmap__handle.cc
new file mode 100644
index 000000000000..b106d01b1212
--- /dev/null
+++ b/devel/electron5/files/patch-ui_gfx_native__pixmap__handle.cc
@@ -0,0 +1,28 @@
+--- ui/gfx/native_pixmap_handle.cc.orig 2019-04-08 08:33:23 UTC
++++ ui/gfx/native_pixmap_handle.cc
+@@ -4,14 +4,14 @@
+
+ #include "ui/gfx/native_pixmap_handle.h"
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include <drm_fourcc.h>
+ #include "base/posix/eintr_wrapper.h"
+ #endif
+
+ namespace gfx {
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ static_assert(NativePixmapPlane::kNoModifier == DRM_FORMAT_MOD_INVALID,
+ "gfx::NativePixmapPlane::kNoModifier should be an alias for"
+ "DRM_FORMAT_MOD_INVALID");
+@@ -36,7 +36,7 @@ NativePixmapHandle::NativePixmapHandle(const NativePix
+
+ NativePixmapHandle::~NativePixmapHandle() {}
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ NativePixmapHandle CloneHandleForIPC(const NativePixmapHandle& handle) {
+ NativePixmapHandle clone;
+ std::vector<base::ScopedFD> scoped_fds;
diff --git a/devel/electron5/files/patch-ui_gfx_native__pixmap__handle.h b/devel/electron5/files/patch-ui_gfx_native__pixmap__handle.h
new file mode 100644
index 000000000000..9505cee94540
--- /dev/null
+++ b/devel/electron5/files/patch-ui_gfx_native__pixmap__handle.h
@@ -0,0 +1,28 @@
+--- ui/gfx/native_pixmap_handle.h.orig 2019-04-08 08:33:23 UTC
++++ ui/gfx/native_pixmap_handle.h
+@@ -13,7 +13,7 @@
+ #include "build/build_config.h"
+ #include "ui/gfx/gfx_export.h"
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include "base/file_descriptor_posix.h"
+ #endif
+
+@@ -54,14 +54,14 @@ struct GFX_EXPORT NativePixmapHandle {
+
+ ~NativePixmapHandle();
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // File descriptors for the underlying memory objects (usually dmabufs).
+ std::vector<base::FileDescriptor> fds;
+ #endif
+ std::vector<NativePixmapPlane> planes;
+ };
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Returns an instance of |handle| which can be sent over IPC. This duplicates
+ // the file-handles, so that the IPC code take ownership of them, without
+ // invalidating |handle|.
diff --git a/devel/electron5/files/patch-ui_gfx_render__text.cc b/devel/electron5/files/patch-ui_gfx_render__text.cc
new file mode 100644
index 000000000000..14187cc4744e
--- /dev/null
+++ b/devel/electron5/files/patch-ui_gfx_render__text.cc
@@ -0,0 +1,46 @@
+--- ui/gfx/render_text.cc.orig 2019-04-08 08:33:23 UTC
++++ ui/gfx/render_text.cc
+@@ -934,32 +934,33 @@ void RenderText::SetDisplayOffset(int horizontal_offse
+ const int extra_content = GetContentWidth() - display_rect_.width();
+ const int cursor_width = cursor_enabled_ ? 1 : 0;
+
+- int min_offset = 0;
+- int max_offset = 0;
++ // avoid collisions with vm_map.h on FreeBSD --cmt
++ int _min_offset = 0;
++ int _max_offset = 0;
+ if (extra_content > 0) {
+ switch (GetCurrentHorizontalAlignment()) {
+ case ALIGN_LEFT:
+- min_offset = -extra_content;
++ _min_offset = -extra_content;
+ break;
+ case ALIGN_RIGHT:
+- max_offset = extra_content;
++ _max_offset = extra_content;
+ break;
+ case ALIGN_CENTER:
+ // The extra space reserved for cursor at the end of the text is ignored
+ // when centering text. So, to calculate the valid range for offset, we
+ // exclude that extra space, calculate the range, and add it back to the
+ // range (if cursor is enabled).
+- min_offset = -(extra_content - cursor_width + 1) / 2 - cursor_width;
+- max_offset = (extra_content - cursor_width) / 2;
++ _min_offset = -(extra_content - cursor_width + 1) / 2 - cursor_width;
++ _max_offset = (extra_content - cursor_width) / 2;
+ break;
+ default:
+ break;
+ }
+ }
+- if (horizontal_offset < min_offset)
+- horizontal_offset = min_offset;
+- else if (horizontal_offset > max_offset)
+- horizontal_offset = max_offset;
++ if (horizontal_offset < _min_offset)
++ horizontal_offset = _min_offset;
++ else if (horizontal_offset > _max_offset)
++ horizontal_offset = _max_offset;
+
+ cached_bounds_and_offset_valid_ = true;
+ display_offset_.set_x(horizontal_offset);
diff --git a/devel/electron5/files/patch-ui_gl_BUILD.gn b/devel/electron5/files/patch-ui_gl_BUILD.gn
new file mode 100644
index 000000000000..eb92bd407b50
--- /dev/null
+++ b/devel/electron5/files/patch-ui_gl_BUILD.gn
@@ -0,0 +1,11 @@
+--- ui/gl/BUILD.gn.orig 2019-04-09 12:48:20 UTC
++++ ui/gl/BUILD.gn
+@@ -212,7 +212,7 @@ jumbo_component("gl") {
+ ]
+ }
+
+- if (is_posix && !is_fuchsia && !is_mac) {
++ if (is_posix && !is_fuchsia && !is_mac && !is_bsd) {
+ # Windows has USE_EGL but doesn't support base::FileDescriptor.
+ # libsync isn't supported or needed on MacOSX.
+ # Fuchsia is excluded due to a libsync dependency and because it's
diff --git a/devel/electron5/files/patch-ui_gl_generate__bindings.py b/devel/electron5/files/patch-ui_gl_generate__bindings.py
new file mode 100644
index 000000000000..fc0eadcba2a1
--- /dev/null
+++ b/devel/electron5/files/patch-ui_gl_generate__bindings.py
@@ -0,0 +1,12 @@
+--- ui/gl/generate_bindings.py.orig 2019-04-08 08:33:23 UTC
++++ ui/gl/generate_bindings.py
+@@ -2624,6 +2624,9 @@ GLX_FUNCTIONS = [
+ 'arguments':
+ 'Display* dpy, GLXDrawable drawable, int32_t* numerator, '
+ 'int32_t* denominator' },
++{ 'return_type': '__GLXextFuncPtr',
++ 'names': ['glXGetProcAddressARB'],
++ 'arguments': 'const GLubyte* procName', },
+ { 'return_type': 'void',
+ 'names': ['glXGetSelectedEvent'],
+ 'arguments': 'Display* dpy, GLXDrawable drawable, unsigned long* mask', },
diff --git a/devel/electron5/files/patch-ui_gl_gl__bindings__api__autogen__glx.h b/devel/electron5/files/patch-ui_gl_gl__bindings__api__autogen__glx.h
new file mode 100644
index 000000000000..785f1d44c419
--- /dev/null
+++ b/devel/electron5/files/patch-ui_gl_gl__bindings__api__autogen__glx.h
@@ -0,0 +1,10 @@
+--- ui/gl/gl_bindings_api_autogen_glx.h.orig 2019-04-08 08:33:23 UTC
++++ ui/gl/gl_bindings_api_autogen_glx.h
+@@ -88,6 +88,7 @@ bool glXGetMscRateOMLFn(Display* dpy,
+ GLXDrawable drawable,
+ int32_t* numerator,
+ int32_t* denominator) override;
++__GLXextFuncPtr glXGetProcAddressARBFn(const GLubyte* procName) override;
+ void glXGetSelectedEventFn(Display* dpy,
+ GLXDrawable drawable,
+ unsigned long* mask) override;
diff --git a/devel/electron5/files/patch-ui_gl_gl__bindings__autogen__glx.cc b/devel/electron5/files/patch-ui_gl_gl__bindings__autogen__glx.cc
new file mode 100644
index 000000000000..14200bfd1d76
--- /dev/null
+++ b/devel/electron5/files/patch-ui_gl_gl__bindings__autogen__glx.cc
@@ -0,0 +1,61 @@
+--- ui/gl/gl_bindings_autogen_glx.cc.orig 2019-04-08 08:19:17 UTC
++++ ui/gl/gl_bindings_autogen_glx.cc
+@@ -115,6 +115,8 @@ void DriverGLX::InitializeExtensionBindings() {
+
+ ext.b_GLX_ARB_create_context =
+ gfx::HasExtension(extensions, "GLX_ARB_create_context");
++ ext.b_GLX_ARB_get_proc_address =
++ gfx::HasExtension(extensions, "GLX_ARB_get_proc_address");
+ ext.b_GLX_EXT_swap_control =
+ gfx::HasExtension(extensions, "GLX_EXT_swap_control");
+ ext.b_GLX_EXT_texture_from_pixmap =
+@@ -145,6 +147,11 @@ void DriverGLX::InitializeExtensionBindings() {
+ GetGLProcAddress("glXCreateContextAttribsARB"));
+ }
+
++ if (ext.b_GLX_ARB_get_proc_address) {
++ fn.glXGetProcAddressARBFn = reinterpret_cast<glXGetProcAddressARBProc>(
++ GetGLProcAddress("glXGetProcAddressARB"));
++ }
++
+ if (ext.b_GLX_SGIX_fbconfig) {
+ fn.glXGetFBConfigFromVisualSGIXFn =
+ reinterpret_cast<glXGetFBConfigFromVisualSGIXProc>(
+@@ -346,6 +353,10 @@ bool GLXApiBase::glXGetMscRateOMLFn(Display* dpy,
+ return driver_->fn.glXGetMscRateOMLFn(dpy, drawable, numerator, denominator);
+ }
+
++__GLXextFuncPtr GLXApiBase::glXGetProcAddressARBFn(const GLubyte* procName) {
++ return driver_->fn.glXGetProcAddressARBFn(procName);
++}
++
+ void GLXApiBase::glXGetSelectedEventFn(Display* dpy,
+ GLXDrawable drawable,
+ unsigned long* mask) {
+@@ -646,6 +657,11 @@ bool TraceGLXApi::glXGetMscRateOMLFn(Display* dpy,
+ return glx_api_->glXGetMscRateOMLFn(dpy, drawable, numerator, denominator);
+ }
+
++__GLXextFuncPtr TraceGLXApi::glXGetProcAddressARBFn(const GLubyte* procName) {
++ TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glXGetProcAddressARB")
++ return glx_api_->glXGetProcAddressARBFn(procName);
++}
++
+ void TraceGLXApi::glXGetSelectedEventFn(Display* dpy,
+ GLXDrawable drawable,
+ unsigned long* mask) {
+@@ -1068,6 +1084,14 @@ bool DebugGLXApi::glXGetMscRateOMLFn(Display* dpy,
+ << static_cast<const void*>(denominator) << ")");
+ bool result =
+ glx_api_->glXGetMscRateOMLFn(dpy, drawable, numerator, denominator);
++ GL_SERVICE_LOG("GL_RESULT: " << result);
++ return result;
++}
++
++__GLXextFuncPtr DebugGLXApi::glXGetProcAddressARBFn(const GLubyte* procName) {
++ GL_SERVICE_LOG("glXGetProcAddressARB"
++ << "(" << static_cast<const void*>(procName) << ")");
++ __GLXextFuncPtr result = glx_api_->glXGetProcAddressARBFn(procName);
+ GL_SERVICE_LOG("GL_RESULT: " << result);
+ return result;
+ }
diff --git a/devel/electron5/files/patch-ui_gl_gl__bindings__autogen__glx.h b/devel/electron5/files/patch-ui_gl_gl__bindings__autogen__glx.h
new file mode 100644
index 000000000000..f31d727ea5d0
--- /dev/null
+++ b/devel/electron5/files/patch-ui_gl_gl__bindings__autogen__glx.h
@@ -0,0 +1,43 @@
+--- ui/gl/gl_bindings_autogen_glx.h.orig 2019-04-08 08:19:17 UTC
++++ ui/gl/gl_bindings_autogen_glx.h
+@@ -104,6 +104,8 @@ typedef bool(GL_BINDING_CALL* glXGetMscRateOMLProc)(Di
+ GLXDrawable drawable,
+ int32_t* numerator,
+ int32_t* denominator);
++typedef __GLXextFuncPtr(GL_BINDING_CALL* glXGetProcAddressARBProc)(
++ const GLubyte* procName);
+ typedef void(GL_BINDING_CALL* glXGetSelectedEventProc)(Display* dpy,
+ GLXDrawable drawable,
+ unsigned long* mask);
+@@ -166,6 +168,7 @@ typedef void(GL_BINDING_CALL* glXWaitXProc)(void);
+
+ struct ExtensionsGLX {
+ bool b_GLX_ARB_create_context;
++ bool b_GLX_ARB_get_proc_address;
+ bool b_GLX_EXT_swap_control;
+ bool b_GLX_EXT_texture_from_pixmap;
+ bool b_GLX_MESA_copy_sub_buffer;
+@@ -203,6 +206,7 @@ struct ProcsGLX {
+ glXGetFBConfigFromVisualSGIXProc glXGetFBConfigFromVisualSGIXFn;
+ glXGetFBConfigsProc glXGetFBConfigsFn;
+ glXGetMscRateOMLProc glXGetMscRateOMLFn;
++ glXGetProcAddressARBProc glXGetProcAddressARBFn;
+ glXGetSelectedEventProc glXGetSelectedEventFn;
+ glXGetSyncValuesOMLProc glXGetSyncValuesOMLFn;
+ glXGetVisualFromFBConfigProc glXGetVisualFromFBConfigFn;
+@@ -310,6 +314,7 @@ class GL_EXPORT GLXApi {
+ GLXDrawable drawable,
+ int32_t* numerator,
+ int32_t* denominator) = 0;
++ virtual __GLXextFuncPtr glXGetProcAddressARBFn(const GLubyte* procName) = 0;
+ virtual void glXGetSelectedEventFn(Display* dpy,
+ GLXDrawable drawable,
+ unsigned long* mask) = 0;
+@@ -394,6 +399,7 @@ class GL_EXPORT GLXApi {
+ ::gl::g_current_glx_context->glXGetFBConfigFromVisualSGIXFn
+ #define glXGetFBConfigs ::gl::g_current_glx_context->glXGetFBConfigsFn
+ #define glXGetMscRateOML ::gl::g_current_glx_context->glXGetMscRateOMLFn
++#define glXGetProcAddressARB ::gl::g_current_glx_context->glXGetProcAddressARBFn
+ #define glXGetSelectedEvent ::gl::g_current_glx_context->glXGetSelectedEventFn
+ #define glXGetSyncValuesOML ::gl::g_current_glx_context->glXGetSyncValuesOMLFn
+ #define glXGetVisualFromFBConfig \
diff --git a/devel/electron5/files/patch-ui_gl_gl__fence.cc b/devel/electron5/files/patch-ui_gl_gl__fence.cc
new file mode 100644
index 000000000000..e76adcbe9d77
--- /dev/null
+++ b/devel/electron5/files/patch-ui_gl_gl__fence.cc
@@ -0,0 +1,11 @@
+--- ui/gl/gl_fence.cc.orig 2019-04-08 08:19:17 UTC
++++ ui/gl/gl_fence.cc
+@@ -18,7 +18,7 @@
+ #include "ui/gl/gl_fence_apple.h"
+ #endif
+
+-#if defined(USE_EGL) && defined(OS_POSIX) && !defined(OS_MACOSX)
++#if defined(USE_EGL) && defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_FREEBSD)
+ #define USE_GL_FENCE_ANDROID_NATIVE_FENCE_SYNC
+ #include "ui/gl/gl_fence_android_native_fence_sync.h"
+ #include "ui/gl/gl_surface_egl.h"
diff --git a/devel/electron5/files/patch-ui_gl_sync__control__vsync__provider.cc b/devel/electron5/files/patch-ui_gl_sync__control__vsync__provider.cc
new file mode 100644
index 000000000000..039c8d485d00
--- /dev/null
+++ b/devel/electron5/files/patch-ui_gl_sync__control__vsync__provider.cc
@@ -0,0 +1,43 @@
+--- ui/gl/sync_control_vsync_provider.cc.orig 2019-04-08 08:33:23 UTC
++++ ui/gl/sync_control_vsync_provider.cc
+@@ -11,7 +11,7 @@
+ #include "base/trace_event/trace_event.h"
+ #include "build/build_config.h"
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // These constants define a reasonable range for a calculated refresh interval.
+ // Calculating refreshes out of this range will be considered a fatal error.
+ const int64_t kMinVsyncIntervalUs = base::Time::kMicrosecondsPerSecond / 400;
+@@ -26,7 +26,7 @@ const double kRelativeIntervalDifferenceThreshold = 0.
+ namespace gl {
+
+ SyncControlVSyncProvider::SyncControlVSyncProvider() : gfx::VSyncProvider() {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // On platforms where we can't get an accurate reading on the refresh
+ // rate we fall back to the assumption that we're displaying 60 frames
+ // per second.
+@@ -48,7 +48,7 @@ bool SyncControlVSyncProvider::GetVSyncParametersIfAva
+ base::TimeTicks* timebase_out,
+ base::TimeDelta* interval_out) {
+ TRACE_EVENT0("gpu", "SyncControlVSyncProvider::GetVSyncParameters");
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // The actual clock used for the system time returned by glXGetSyncValuesOML
+ // is unspecified. In practice, the clock used is likely to be either
+ // CLOCK_REALTIME or CLOCK_MONOTONIC, so we compare the returned time to the
+@@ -157,11 +157,11 @@ bool SyncControlVSyncProvider::GetVSyncParametersIfAva
+ return true;
+ #else
+ return false;
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+ }
+
+ bool SyncControlVSyncProvider::SupportGetVSyncParametersIfAvailable() const {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ return true;
+ #else
+ return false;
diff --git a/devel/electron5/files/patch-ui_gl_sync__control__vsync__provider.h b/devel/electron5/files/patch-ui_gl_sync__control__vsync__provider.h
new file mode 100644
index 000000000000..e113b28ecf49
--- /dev/null
+++ b/devel/electron5/files/patch-ui_gl_sync__control__vsync__provider.h
@@ -0,0 +1,34 @@
+--- ui/gl/sync_control_vsync_provider.h.orig 2019-04-08 08:33:23 UTC
++++ ui/gl/sync_control_vsync_provider.h
+@@ -26,11 +26,11 @@ class SyncControlVSyncProvider : public gfx::VSyncProv
+ bool SupportGetVSyncParametersIfAvailable() const override;
+
+ static constexpr bool IsSupported() {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ return true;
+ #else
+ return false;
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+ }
+
+ protected:
+@@ -41,7 +41,7 @@ class SyncControlVSyncProvider : public gfx::VSyncProv
+ virtual bool GetMscRate(int32_t* numerator, int32_t* denominator) = 0;
+
+ private:
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ base::TimeTicks last_timebase_;
+ uint64_t last_media_stream_counter_ = 0;
+ base::TimeDelta last_good_interval_;
+@@ -52,7 +52,7 @@ class SyncControlVSyncProvider : public gfx::VSyncProv
+ // from configuration change (monitor reconfiguration, moving windows
+ // between monitors, suspend and resume, etc.).
+ base::queue<base::TimeDelta> last_computed_intervals_;
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+
+ DISALLOW_COPY_AND_ASSIGN(SyncControlVSyncProvider);
+ };
diff --git a/devel/electron5/files/patch-ui_message__center_public_cpp_message__center__constants.h b/devel/electron5/files/patch-ui_message__center_public_cpp_message__center__constants.h
new file mode 100644
index 000000000000..0608ec2a2107
--- /dev/null
+++ b/devel/electron5/files/patch-ui_message__center_public_cpp_message__center__constants.h
@@ -0,0 +1,11 @@
+--- ui/message_center/public/cpp/message_center_constants.h.orig 2019-04-08 08:33:23 UTC
++++ ui/message_center/public/cpp/message_center_constants.h
+@@ -101,7 +101,7 @@ const int kButtonHorizontalPadding = 16; // In DIPs.
+ const int kButtonIconTopPadding = 11; // In DIPs.
+ const int kButtonIconToTitlePadding = 16; // In DIPs.
+
+-#if !defined(OS_LINUX) || defined(USE_AURA)
++#if (!defined(OS_LINUX) && !defined(OS_BSD)) || defined(USE_AURA)
+ constexpr SkColor kButtonSeparatorColor = SkColorSetRGB(234, 234, 234);
+ constexpr SkColor kHoveredButtonBackgroundColor = SkColorSetRGB(243, 243, 243);
+ #endif
diff --git a/devel/electron5/files/patch-ui_message__center_views_message__popup__view.cc b/devel/electron5/files/patch-ui_message__center_views_message__popup__view.cc
new file mode 100644
index 000000000000..8028f1841d1f
--- /dev/null
+++ b/devel/electron5/files/patch-ui_message__center_views_message__popup__view.cc
@@ -0,0 +1,11 @@
+--- ui/message_center/views/message_popup_view.cc.orig 2019-04-08 08:33:23 UTC
++++ ui/message_center/views/message_popup_view.cc
+@@ -114,7 +114,7 @@ void MessagePopupView::AutoCollapse() {
+ void MessagePopupView::Show() {
+ views::Widget::InitParams params(views::Widget::InitParams::TYPE_POPUP);
+ params.keep_on_top = true;
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS)
+ params.opacity = views::Widget::InitParams::OPAQUE_WINDOW;
+ #else
+ params.opacity = views::Widget::InitParams::TRANSLUCENT_WINDOW;
diff --git a/devel/electron5/files/patch-ui_native__theme_native__theme.h b/devel/electron5/files/patch-ui_native__theme_native__theme.h
new file mode 100644
index 000000000000..224a44acdce1
--- /dev/null
+++ b/devel/electron5/files/patch-ui_native__theme_native__theme.h
@@ -0,0 +1,11 @@
+--- ui/native_theme/native_theme.h.orig 2019-04-08 08:33:23 UTC
++++ ui/native_theme/native_theme.h
+@@ -48,7 +48,7 @@ class NATIVE_THEME_EXPORT NativeTheme {
+ // The part to be painted / sized.
+ enum Part {
+ kCheckbox,
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ kFrameTopArea,
+ #endif
+ kInnerSpinButton,
diff --git a/devel/electron5/files/patch-ui_native__theme_native__theme__base.cc b/devel/electron5/files/patch-ui_native__theme_native__theme__base.cc
new file mode 100644
index 000000000000..5d4023386285
--- /dev/null
+++ b/devel/electron5/files/patch-ui_native__theme_native__theme__base.cc
@@ -0,0 +1,11 @@
+--- ui/native_theme/native_theme_base.cc.orig 2019-04-08 08:33:23 UTC
++++ ui/native_theme/native_theme_base.cc
+@@ -172,7 +172,7 @@ void NativeThemeBase::Paint(cc::PaintCanvas* canvas,
+ case kCheckbox:
+ PaintCheckbox(canvas, state, rect, extra.button);
+ break;
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ case kFrameTopArea:
+ PaintFrameTopArea(canvas, state, rect, extra.frame_top_area);
+ break;
diff --git a/devel/electron5/files/patch-ui_strings_app__locale__settings.grd b/devel/electron5/files/patch-ui_strings_app__locale__settings.grd
new file mode 100644
index 000000000000..8cf98ec05f98
--- /dev/null
+++ b/devel/electron5/files/patch-ui_strings_app__locale__settings.grd
@@ -0,0 +1,11 @@
+--- ui/strings/app_locale_settings.grd.orig 2019-04-08 08:19:17 UTC
++++ ui/strings/app_locale_settings.grd
+@@ -187,7 +187,7 @@
+ 75%
+ </message>
+ </if>
+- <if expr="(is_linux or is_android or is_bsd) and not chromeos">
++ <if expr="is_posix and not chromeos">
+ <!-- The font used in Web UI (e.g. History). Note that these are only
+ backups. We try to use the system font if possible. -->
+ <message name="IDS_WEB_FONT_FAMILY" use_name_for_id="true">
diff --git a/devel/electron5/files/patch-ui_views_bubble_bubble__dialog__delegate__view.cc b/devel/electron5/files/patch-ui_views_bubble_bubble__dialog__delegate__view.cc
new file mode 100644
index 000000000000..2b7574f2be16
--- /dev/null
+++ b/devel/electron5/files/patch-ui_views_bubble_bubble__dialog__delegate__view.cc
@@ -0,0 +1,11 @@
+--- ui/views/bubble/bubble_dialog_delegate_view.cc.orig 2019-04-08 08:33:23 UTC
++++ ui/views/bubble/bubble_dialog_delegate_view.cc
+@@ -112,7 +112,7 @@ Widget* BubbleDialogDelegateView::CreateBubble(
+ bubble_delegate->SetAnchorView(bubble_delegate->GetAnchorView());
+ Widget* bubble_widget = CreateBubbleWidget(bubble_delegate);
+
+-#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_MACOSX)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_MACOSX) || defined(OS_BSD)
+ // Linux clips bubble windows that extend outside their parent window bounds.
+ // Mac never adjusts.
+ bubble_delegate->set_adjust_if_offscreen(false);
diff --git a/devel/electron5/files/patch-ui_views_controls_label.cc b/devel/electron5/files/patch-ui_views_controls_label.cc
new file mode 100644
index 000000000000..cd96a1096ab7
--- /dev/null
+++ b/devel/electron5/files/patch-ui_views_controls_label.cc
@@ -0,0 +1,20 @@
+--- ui/views/controls/label.cc.orig 2019-04-08 08:33:23 UTC
++++ ui/views/controls/label.cc
+@@ -542,7 +542,7 @@ bool Label::OnMousePressed(const ui::MouseEvent& event
+ GetFocusManager()->SetFocusedView(this);
+ }
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ if (event.IsOnlyMiddleMouseButton() && GetFocusManager() && !had_focus)
+ GetFocusManager()->SetFocusedView(this);
+ #endif
+@@ -727,7 +727,7 @@ bool Label::PasteSelectionClipboard() {
+ }
+
+ void Label::UpdateSelectionClipboard() {
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ if (!obscured()) {
+ ui::ScopedClipboardWriter(ui::CLIPBOARD_TYPE_SELECTION)
+ .WriteText(GetSelectedText());
diff --git a/devel/electron5/files/patch-ui_views_controls_textfield_textfield.cc b/devel/electron5/files/patch-ui_views_controls_textfield_textfield.cc
new file mode 100644
index 000000000000..21aa5d89b843
--- /dev/null
+++ b/devel/electron5/files/patch-ui_views_controls_textfield_textfield.cc
@@ -0,0 +1,73 @@
+--- ui/views/controls/textfield/textfield.cc.orig 2019-04-08 08:33:23 UTC
++++ ui/views/controls/textfield/textfield.cc
+@@ -59,7 +59,7 @@
+ #include "base/win/win_util.h"
+ #endif
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ #include "base/strings/utf_string_conversions.h"
+ #include "ui/base/ime/linux/text_edit_command_auralinux.h"
+ #include "ui/base/ime/linux/text_edit_key_bindings_delegate_auralinux.h"
+@@ -162,14 +162,14 @@ ui::TextEditCommand GetCommandForKeyEvent(const ui::Ke
+ case ui::VKEY_BACK:
+ if (!control)
+ return ui::TextEditCommand::DELETE_BACKWARD;
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Only erase by line break on Linux and ChromeOS.
+ if (shift)
+ return ui::TextEditCommand::DELETE_TO_BEGINNING_OF_LINE;
+ #endif
+ return ui::TextEditCommand::DELETE_WORD_BACKWARD;
+ case ui::VKEY_DELETE:
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Only erase by line break on Linux and ChromeOS.
+ if (shift && control)
+ return ui::TextEditCommand::DELETE_TO_END_OF_LINE;
+@@ -228,7 +228,7 @@ bool IsControlKeyModifier(int flags) {
+ // Control-modified key combination, but we cannot extend it to other platforms
+ // as Control has different meanings and behaviors.
+ // https://crrev.com/2580483002/#msg46
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ return flags & ui::EF_CONTROL_DOWN;
+ #else
+ return false;
+@@ -682,7 +682,7 @@ bool Textfield::OnMousePressed(const ui::MouseEvent& e
+ #endif
+ }
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ if (!handled && !had_focus && event.IsOnlyMiddleMouseButton())
+ RequestFocusWithPointer(ui::EventPointerType::POINTER_TYPE_MOUSE);
+ #endif
+@@ -726,7 +726,7 @@ bool Textfield::OnKeyPressed(const ui::KeyEvent& event
+ if (!textfield)
+ return handled;
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ ui::TextEditKeyBindingsDelegateAuraLinux* delegate =
+ ui::GetTextEditKeyBindingsDelegate();
+ std::vector<ui::TextEditCommandAuraLinux> commands;
+@@ -894,7 +894,7 @@ void Textfield::AboutToRequestFocusFromTabTraversal(bo
+ }
+
+ bool Textfield::SkipDefaultKeyEventProcessing(const ui::KeyEvent& event) {
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ // Skip any accelerator handling that conflicts with custom keybindings.
+ ui::TextEditKeyBindingsDelegateAuraLinux* delegate =
+ ui::GetTextEditKeyBindingsDelegate();
+@@ -2076,7 +2076,7 @@ bool Textfield::PasteSelectionClipboard() {
+ }
+
+ void Textfield::UpdateSelectionClipboard() {
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ if (text_input_type_ != ui::TEXT_INPUT_TYPE_PASSWORD) {
+ ui::ScopedClipboardWriter(ui::CLIPBOARD_TYPE_SELECTION)
+ .WriteText(GetSelectedText());
diff --git a/devel/electron5/files/patch-ui_views_corewm_tooltip__aura.cc b/devel/electron5/files/patch-ui_views_corewm_tooltip__aura.cc
new file mode 100644
index 000000000000..a79d1cf880df
--- /dev/null
+++ b/devel/electron5/files/patch-ui_views_corewm_tooltip__aura.cc
@@ -0,0 +1,11 @@
+--- ui/views/corewm/tooltip_aura.cc.orig 2019-04-08 08:33:23 UTC
++++ ui/views/corewm/tooltip_aura.cc
+@@ -34,7 +34,7 @@ const int kCursorOffsetY = 15;
+
+ // TODO(varkha): Update if native widget can be transparent on Linux.
+ bool CanUseTranslucentTooltipWidget() {
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ return false;
+ #else
+ return true;
diff --git a/devel/electron5/files/patch-ui_views_examples_widget__example.cc b/devel/electron5/files/patch-ui_views_examples_widget__example.cc
new file mode 100644
index 000000000000..0535628576ce
--- /dev/null
+++ b/devel/electron5/files/patch-ui_views_examples_widget__example.cc
@@ -0,0 +1,11 @@
+--- ui/views/examples/widget_example.cc.orig 2019-04-08 08:33:23 UTC
++++ ui/views/examples/widget_example.cc
+@@ -79,7 +79,7 @@ void WidgetExample::CreateExampleView(View* container)
+ BuildButton(container, "Popup widget", POPUP);
+ BuildButton(container, "Dialog widget", DIALOG);
+ BuildButton(container, "Modal Dialog", MODAL_DIALOG);
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Windows does not support TYPE_CONTROL top-level widgets.
+ BuildButton(container, "Child widget", CHILD);
+ #endif
diff --git a/devel/electron5/files/patch-ui_views_selection__controller.cc b/devel/electron5/files/patch-ui_views_selection__controller.cc
new file mode 100644
index 000000000000..88c625fe68ba
--- /dev/null
+++ b/devel/electron5/files/patch-ui_views_selection__controller.cc
@@ -0,0 +1,11 @@
+--- ui/views/selection_controller.cc.orig 2019-04-08 08:33:23 UTC
++++ ui/views/selection_controller.cc
+@@ -20,7 +20,7 @@ SelectionController::SelectionController(SelectionCont
+ delegate_(delegate),
+ handles_selection_clipboard_(false) {
+ // On Linux, update the selection clipboard on a text selection.
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ set_handles_selection_clipboard(true);
+ #endif
+
diff --git a/devel/electron5/files/patch-ui_views_style_platform__style.cc b/devel/electron5/files/patch-ui_views_style_platform__style.cc
new file mode 100644
index 000000000000..bf650a418e06
--- /dev/null
+++ b/devel/electron5/files/patch-ui_views_style_platform__style.cc
@@ -0,0 +1,11 @@
+--- ui/views/style/platform_style.cc.orig 2019-04-08 08:19:19 UTC
++++ ui/views/style/platform_style.cc
+@@ -18,7 +18,7 @@
+
+ #if defined(OS_CHROMEOS)
+ #include "ui/views/controls/scrollbar/overlay_scroll_bar.h"
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ #define DESKTOP_LINUX
+ #endif
+
diff --git a/devel/electron5/files/patch-ui_views_views__delegate.cc b/devel/electron5/files/patch-ui_views_views__delegate.cc
new file mode 100644
index 000000000000..a608f985187b
--- /dev/null
+++ b/devel/electron5/files/patch-ui_views_views__delegate.cc
@@ -0,0 +1,11 @@
+--- ui/views/views_delegate.cc.orig 2019-04-08 08:33:23 UTC
++++ ui/views/views_delegate.cc
+@@ -85,7 +85,7 @@ HICON ViewsDelegate::GetSmallWindowIcon() const {
+ bool ViewsDelegate::IsWindowInMetro(gfx::NativeWindow window) const {
+ return false;
+ }
+-#elif defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#elif (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_FREEBSD)
+ gfx::ImageSkia* ViewsDelegate::GetDefaultWindowIcon() const {
+ return nullptr;
+ }
diff --git a/devel/electron5/files/patch-ui_views_views__delegate.h b/devel/electron5/files/patch-ui_views_views__delegate.h
new file mode 100644
index 000000000000..9b724836d4c8
--- /dev/null
+++ b/devel/electron5/files/patch-ui_views_views__delegate.h
@@ -0,0 +1,11 @@
+--- ui/views/views_delegate.h.orig 2019-04-08 08:33:23 UTC
++++ ui/views/views_delegate.h
+@@ -146,7 +146,7 @@ class VIEWS_EXPORT ViewsDelegate {
+ // Returns true if the window passed in is in the Windows 8 metro
+ // environment.
+ virtual bool IsWindowInMetro(gfx::NativeWindow window) const;
+-#elif defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#elif defined(OS_LINUX) && !defined(OS_CHROMEOS) || defined(OS_FREEBSD)
+ virtual gfx::ImageSkia* GetDefaultWindowIcon() const;
+ #endif
+
diff --git a/devel/electron5/files/patch-ui_views_widget_desktop__aura_desktop__window__tree__host__platform.cc b/devel/electron5/files/patch-ui_views_widget_desktop__aura_desktop__window__tree__host__platform.cc
new file mode 100644
index 000000000000..eea463ebd9be
--- /dev/null
+++ b/devel/electron5/files/patch-ui_views_widget_desktop__aura_desktop__window__tree__host__platform.cc
@@ -0,0 +1,20 @@
+--- ui/views/widget/desktop_aura/desktop_window_tree_host_platform.cc.orig 2019-04-08 08:33:23 UTC
++++ ui/views/widget/desktop_aura/desktop_window_tree_host_platform.cc
+@@ -89,7 +89,7 @@ void DesktopWindowTreeHostPlatform::OnNativeWidgetCrea
+ const Widget::InitParams& params) {
+ native_widget_delegate_->OnNativeWidgetCreated();
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Setup a non_client_window_event_filter, which handles resize/move, double
+ // click and other events.
+ DCHECK(!non_client_window_event_filter_);
+@@ -540,7 +540,7 @@ void DesktopWindowTreeHostPlatform::Relayout() {
+ }
+
+ void DesktopWindowTreeHostPlatform::RemoveNonClientEventFilter() {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ if (!non_client_window_event_filter_)
+ return;
+
diff --git a/devel/electron5/files/patch-ui_views_widget_desktop__aura_desktop__window__tree__host__platform.h b/devel/electron5/files/patch-ui_views_widget_desktop__aura_desktop__window__tree__host__platform.h
new file mode 100644
index 000000000000..c0bd14af5505
--- /dev/null
+++ b/devel/electron5/files/patch-ui_views_widget_desktop__aura_desktop__window__tree__host__platform.h
@@ -0,0 +1,11 @@
+--- ui/views/widget/desktop_aura/desktop_window_tree_host_platform.h.orig 2019-04-08 08:19:19 UTC
++++ ui/views/widget/desktop_aura/desktop_window_tree_host_platform.h
+@@ -119,7 +119,7 @@ class VIEWS_EXPORT DesktopWindowTreeHostPlatform
+
+ bool is_active_ = false;
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // A handler for events intended for non client area.
+ std::unique_ptr<WindowEventFilter> non_client_window_event_filter_;
+ #endif
diff --git a/devel/electron5/files/patch-ui_views_window_custom__frame__view.cc b/devel/electron5/files/patch-ui_views_window_custom__frame__view.cc
new file mode 100644
index 000000000000..6edd78d825db
--- /dev/null
+++ b/devel/electron5/files/patch-ui_views_window_custom__frame__view.cc
@@ -0,0 +1,11 @@
+--- ui/views/window/custom_frame_view.cc.orig 2019-04-08 08:33:23 UTC
++++ ui/views/window/custom_frame_view.cc
+@@ -305,7 +305,7 @@ int CustomFrameView::NonClientTopBorderHeight() const
+ int CustomFrameView::CaptionButtonY() const {
+ // Maximized buttons start at window top so that even if their images aren't
+ // drawn flush with the screen edge, they still obey Fitts' Law.
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if defined(OS_LINUX) && !defined(OS_CHROMEOS) || defined(OS_BSD)
+ return FrameBorderThickness();
+ #else
+ return frame_->IsMaximized() ? FrameBorderThickness() : kFrameShadowThickness;
diff --git a/devel/electron5/files/patch-ui_views_window_dialog__delegate.cc b/devel/electron5/files/patch-ui_views_window_dialog__delegate.cc
new file mode 100644
index 000000000000..c5cdd41aa27c
--- /dev/null
+++ b/devel/electron5/files/patch-ui_views_window_dialog__delegate.cc
@@ -0,0 +1,11 @@
+--- ui/views/window/dialog_delegate.cc.orig 2019-04-08 08:33:23 UTC
++++ ui/views/window/dialog_delegate.cc
+@@ -64,7 +64,7 @@ Widget::InitParams DialogDelegate::GetDialogWidgetInit
+ params.bounds = bounds;
+ DialogDelegate* dialog = delegate->AsDialogDelegate();
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ // The new style doesn't support unparented dialogs on Linux desktop.
+ if (dialog)
+ dialog->supports_custom_frame_ &= parent != NULL;
diff --git a/devel/electron5/files/patch-ui_views_window_frame__background.cc b/devel/electron5/files/patch-ui_views_window_frame__background.cc
new file mode 100644
index 000000000000..e05c5cfbd54f
--- /dev/null
+++ b/devel/electron5/files/patch-ui_views_window_frame__background.cc
@@ -0,0 +1,11 @@
+--- ui/views/window/frame_background.cc.orig 2019-04-08 08:33:23 UTC
++++ ui/views/window/frame_background.cc
+@@ -122,7 +122,7 @@ void FrameBackground::PaintMaximized(gfx::Canvas* canv
+ const View* view) const {
+ // Fill the top with the frame color first so we have a constant background
+ // for areas not covered by the theme image.
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ auto* native_theme = view->GetNativeTheme();
+ ui::NativeTheme::ExtraParams params;
+ params.frame_top_area.use_custom_frame = use_custom_frame_;
diff --git a/devel/electron5/files/patch-ui_webui_resources_js_cr.js b/devel/electron5/files/patch-ui_webui_resources_js_cr.js
new file mode 100644
index 000000000000..d40813627944
--- /dev/null
+++ b/devel/electron5/files/patch-ui_webui_resources_js_cr.js
@@ -0,0 +1,14 @@
+--- ui/webui/resources/js/cr.js.orig 2019-04-08 08:19:20 UTC
++++ ui/webui/resources/js/cr.js
+@@ -463,6 +463,11 @@ var cr = cr || function(global) {
+ get doc() {
+ return document;
+ },
++
++ /** Whether this is on *BSD. */
++ get isBSD() {
++ return /BSD/.test(navigator.userAgent);
++ },
+
+ /** Whether we are using a Mac or not. */
+ get isMac() {
diff --git a/devel/electron5/files/patch-ui_webui_resources_js_icon.js b/devel/electron5/files/patch-ui_webui_resources_js_icon.js
new file mode 100644
index 000000000000..4572999d12ab
--- /dev/null
+++ b/devel/electron5/files/patch-ui_webui_resources_js_icon.js
@@ -0,0 +1,11 @@
+--- ui/webui/resources/js/icon.js.orig 2019-04-08 08:19:20 UTC
++++ ui/webui/resources/js/icon.js
+@@ -14,7 +14,7 @@ cr.define('cr.icon', function() {
+ // supports SCALE_FACTOR_100P on all non-iOS platforms.
+ supportedScaleFactors.push(1);
+ }
+- if (cr.isMac || cr.isChromeOS || cr.isWindows || cr.isLinux) {
++ if (cr.isMac || cr.isChromeOS || cr.isWindows || cr.isLinux || cr.isBSD) {
+ // All desktop platforms support zooming which also updates the renderer's
+ // device scale factors (a.k.a devicePixelRatio), and these platforms have
+ // high DPI assets for 2x. Let the renderer pick the closest image for
diff --git a/devel/electron5/files/patch-v8_BUILD.gn b/devel/electron5/files/patch-v8_BUILD.gn
new file mode 100644
index 000000000000..0daa98351092
--- /dev/null
+++ b/devel/electron5/files/patch-v8_BUILD.gn
@@ -0,0 +1,32 @@
+--- v8/BUILD.gn.orig 2019-06-10 07:45:01 UTC
++++ v8/BUILD.gn
+@@ -3177,7 +3177,7 @@ v8_component("v8_libbase") {
+ }
+ }
+
+- if (is_linux) {
++ if (is_linux && !is_bsd) {
+ sources += [
+ "src/base/debug/stack_trace_posix.cc",
+ "src/base/platform/platform-linux.cc",
+@@ -3197,6 +3197,12 @@ v8_component("v8_libbase") {
+ "dl",
+ "rt",
+ ]
++ } else if (is_bsd) {
++ sources += [
++ "src/base/debug/stack_trace_posix.cc",
++ "src/base/platform/platform-freebsd.cc",
++ ]
++ libs = [ "rt", "execinfo" ]
+ } else if (is_android) {
+ if (current_toolchain == host_toolchain) {
+ libs = [
+@@ -3399,6 +3405,7 @@ if (v8_use_snapshot && current_toolchain == v8_snapsho
+ "src/snapshot/embedded-file-writer.h",
+ "src/snapshot/mksnapshot.cc",
+ ]
++ libs = ["execinfo"]
+
+ configs = [ ":internal_config" ]
+
diff --git a/devel/electron5/files/patch-v8_src_api.cc b/devel/electron5/files/patch-v8_src_api.cc
new file mode 100644
index 000000000000..ac092b1698aa
--- /dev/null
+++ b/devel/electron5/files/patch-v8_src_api.cc
@@ -0,0 +1,20 @@
+--- v8/src/api.cc.orig 2019-04-09 12:48:20 UTC
++++ v8/src/api.cc
+@@ -107,7 +107,7 @@
+ #include "src/wasm/wasm-result.h"
+ #include "src/wasm/wasm-serialization.h"
+
+-#if V8_OS_LINUX || V8_OS_MACOSX
++#if V8_OS_LINUX || V8_OS_MACOSX || V8_OS_OPENBSD || V8_OS_FREEBSD
+ #include <signal.h>
+ #include "include/v8-wasm-trap-handler-posix.h"
+ #include "src/trap-handler/handler-inside-posix.h"
+@@ -5835,7 +5835,7 @@ bool v8::V8::Initialize() {
+ return true;
+ }
+
+-#if V8_OS_LINUX || V8_OS_MACOSX
++#if V8_OS_LINUX || V8_OS_MACOSX || V8_OS_OPENBSD || V8_OS_FREEBSD
+ bool TryHandleWebAssemblyTrapPosix(int sig_code, siginfo_t* info,
+ void* context) {
+ #if V8_TARGET_ARCH_X64 && !V8_OS_ANDROID
diff --git a/devel/electron5/files/patch-v8_src_base_cpu.cc b/devel/electron5/files/patch-v8_src_base_cpu.cc
new file mode 100644
index 000000000000..7faa79f7ae34
--- /dev/null
+++ b/devel/electron5/files/patch-v8_src_base_cpu.cc
@@ -0,0 +1,18 @@
+--- v8/src/base/cpu.cc.orig 2019-04-08 08:26:55 UTC
++++ v8/src/base/cpu.cc
+@@ -424,6 +424,7 @@ CPU::CPU()
+
+ #if V8_OS_LINUX
+
++#if V8_OS_LINUX
+ CPUInfo cpu_info;
+
+ // Extract implementor from the "CPU implementer" field.
+@@ -457,6 +458,7 @@ CPU::CPU()
+ }
+ delete[] part;
+ }
++#endif
+
+ // Extract architecture from the "CPU Architecture" field.
+ // The list is well-known, unlike the the output of
diff --git a/devel/electron5/files/patch-v8_src_base_platform_platform-posix.cc b/devel/electron5/files/patch-v8_src_base_platform_platform-posix.cc
new file mode 100644
index 000000000000..b336d56e7650
--- /dev/null
+++ b/devel/electron5/files/patch-v8_src_base_platform_platform-posix.cc
@@ -0,0 +1,24 @@
+--- v8/src/base/platform/platform-posix.cc.orig 2019-04-08 08:34:40 UTC
++++ v8/src/base/platform/platform-posix.cc
+@@ -376,7 +376,7 @@ bool OS::DiscardSystemPages(void* address, size_t size
+
+ // static
+ bool OS::HasLazyCommits() {
+-#if V8_OS_AIX || V8_OS_LINUX || V8_OS_MACOSX
++#if V8_OS_AIX || V8_OS_LINUX || V8_OS_MACOSX || V8_OS_FREEBSD
+ return true;
+ #else
+ // TODO(bbudge) Return true for all POSIX platforms.
+@@ -501,6 +501,12 @@ int OS::GetCurrentThreadId() {
+ return static_cast<int>(syscall(__NR_gettid));
+ #elif V8_OS_ANDROID
+ return static_cast<int>(gettid());
++#elif V8_OS_DRAGONFLYBSD || defined(__DragonFly__)
++ return static_cast<int>(lwp_gettid());
++#elif V8_OS_FREEBSD
++ return static_cast<int>(pthread_getthreadid_np());
++#elif V8_OS_NETBSD
++ return static_cast<int>(_lwp_self());
+ #elif V8_OS_AIX
+ return static_cast<int>(thread_self());
+ #elif V8_OS_FUCHSIA
diff --git a/devel/electron5/files/patch-v8_src_external-reference-table.cc b/devel/electron5/files/patch-v8_src_external-reference-table.cc
new file mode 100644
index 000000000000..3badf885bec1
--- /dev/null
+++ b/devel/electron5/files/patch-v8_src_external-reference-table.cc
@@ -0,0 +1,11 @@
+--- v8/src/external-reference-table.cc.orig 2019-04-08 08:34:40 UTC
++++ v8/src/external-reference-table.cc
+@@ -9,7 +9,7 @@
+ #include "src/external-reference.h"
+ #include "src/ic/stub-cache.h"
+
+-#if defined(DEBUG) && defined(V8_OS_LINUX) && !defined(V8_OS_ANDROID)
++#if defined(DEBUG) && (defined(V8_OS_LINUX) || defined(V8_OS_FREEBSD)) && !defined(V8_OS_ANDROID)
+ #define SYMBOLIZE_FUNCTION
+ #include <execinfo.h>
+ #include <vector>
diff --git a/devel/electron5/files/patch-v8_src_log-utils.h b/devel/electron5/files/patch-v8_src_log-utils.h
new file mode 100644
index 000000000000..dc2ecb7eb5db
--- /dev/null
+++ b/devel/electron5/files/patch-v8_src_log-utils.h
@@ -0,0 +1,11 @@
+--- v8/src/log-utils.h.orig 2019-04-08 08:34:40 UTC
++++ v8/src/log-utils.h
+@@ -16,6 +16,8 @@
+ #include "src/flags.h"
+ #include "src/ostreams.h"
+
++#include <stdarg.h>
++
+ namespace v8 {
+ namespace internal {
+
diff --git a/devel/electron5/files/patch-v8_src_trap-handler_handler-inside-posix.cc b/devel/electron5/files/patch-v8_src_trap-handler_handler-inside-posix.cc
new file mode 100644
index 000000000000..d277319f093e
--- /dev/null
+++ b/devel/electron5/files/patch-v8_src_trap-handler_handler-inside-posix.cc
@@ -0,0 +1,20 @@
+--- v8/src/trap-handler/handler-inside-posix.cc.orig 2019-04-08 08:26:55 UTC
++++ v8/src/trap-handler/handler-inside-posix.cc
+@@ -27,7 +27,7 @@
+
+ #include <signal.h>
+
+-#ifdef V8_OS_LINUX
++#if defined(V8_OS_LINUX) || defined(V8_OS_FREEBSD)
+ #include <ucontext.h>
+ #elif V8_OS_MACOSX
+ #include <sys/ucontext.h>
+@@ -112,6 +112,8 @@ bool TryHandleSignal(int signum, siginfo_t* info, void
+ auto* context_rip = &uc->uc_mcontext.gregs[REG_RIP];
+ #elif V8_OS_MACOSX
+ auto* context_rip = &uc->uc_mcontext->__ss.__rip;
++#elif V8_OS_FREEBSD
++ auto* context_rip = &uc->uc_mcontext.mc_rip;
+ #else
+ #error Unsupported platform
+ #endif
diff --git a/devel/electron5/files/patch-v8_src_trap-handler_handler-inside-posix.h b/devel/electron5/files/patch-v8_src_trap-handler_handler-inside-posix.h
new file mode 100644
index 000000000000..9cd2bffa84a3
--- /dev/null
+++ b/devel/electron5/files/patch-v8_src_trap-handler_handler-inside-posix.h
@@ -0,0 +1,11 @@
+--- v8/src/trap-handler/handler-inside-posix.h.orig 2019-04-08 08:26:55 UTC
++++ v8/src/trap-handler/handler-inside-posix.h
+@@ -12,7 +12,7 @@ namespace v8 {
+ namespace internal {
+ namespace trap_handler {
+
+-#if V8_OS_LINUX
++#if defined(V8_OS_LINUX) || defined(V8_OS_FREEBSD)
+ constexpr int kOobSignal = SIGSEGV;
+ #elif V8_OS_MACOSX
+ constexpr int kOobSignal = SIGBUS;
diff --git a/devel/electron5/files/patch-v8_src_trap-handler_trap-handler.h b/devel/electron5/files/patch-v8_src_trap-handler_trap-handler.h
new file mode 100644
index 000000000000..ed7aa9b98d2d
--- /dev/null
+++ b/devel/electron5/files/patch-v8_src_trap-handler_trap-handler.h
@@ -0,0 +1,11 @@
+--- v8/src/trap-handler/trap-handler.h.orig 2019-04-08 08:26:55 UTC
++++ v8/src/trap-handler/trap-handler.h
+@@ -23,6 +23,8 @@ namespace trap_handler {
+ #define V8_TRAP_HANDLER_SUPPORTED true
+ #elif V8_TARGET_ARCH_X64 && V8_OS_MACOSX
+ #define V8_TRAP_HANDLER_SUPPORTED true
++#elif V8_TARGET_ARCH_X64 && V8_OS_FREEBSD
++#define V8_TRAP_HANDLER_SUPPORTED true
+ #else
+ #define V8_TRAP_HANDLER_SUPPORTED false
+ #endif
diff --git a/devel/electron5/pkg-descr b/devel/electron5/pkg-descr
new file mode 100644
index 000000000000..bb5485e9e735
--- /dev/null
+++ b/devel/electron5/pkg-descr
@@ -0,0 +1,10 @@
+Build cross platform desktop apps with JavaScript, HTML, and CSS.
+
+It's easier than you think.
+
+If you can build a website, you can build a desktop app. Electron is a
+framework for creating native applications with web technologies like
+JavaScript, HTML, and CSS. It takes care of the hard parts so you can
+focus on the core of your application.
+
+WWW: https://electronjs.org/
diff --git a/devel/electron5/pkg-plist b/devel/electron5/pkg-plist
new file mode 100644
index 000000000000..73456e413aad
--- /dev/null
+++ b/devel/electron5/pkg-plist
@@ -0,0 +1,124 @@
+bin/electron%%ELECTRON_VER_MAJOR%%
+%%DATADIR%%/LICENSE
+%%DATADIR%%/LICENSES.chromium.html
+%%DATADIR%%/chrome_100_percent.pak
+%%DATADIR%%/chrome_200_percent.pak
+%%DRIVER%%%%DATADIR%%/chromedriver
+%%DATADIR%%/electron
+%%DATADIR%%/icudtl.dat
+%%DATADIR%%/libEGL.so
+%%DATADIR%%/libGLESv2.so
+%%DATADIR%%/locales/am.pak
+%%DATADIR%%/locales/ar.pak
+%%DATADIR%%/locales/bg.pak
+%%DATADIR%%/locales/bn.pak
+%%DATADIR%%/locales/ca.pak
+%%DATADIR%%/locales/cs.pak
+%%DATADIR%%/locales/da.pak
+%%DATADIR%%/locales/de.pak
+%%DATADIR%%/locales/el.pak
+%%DATADIR%%/locales/en-GB.pak
+%%DATADIR%%/locales/en-US.pak
+%%DATADIR%%/locales/es-419.pak
+%%DATADIR%%/locales/es.pak
+%%DATADIR%%/locales/et.pak
+%%DATADIR%%/locales/fa.pak
+%%DATADIR%%/locales/fi.pak
+%%DATADIR%%/locales/fil.pak
+%%DATADIR%%/locales/fr.pak
+%%DATADIR%%/locales/gu.pak
+%%DATADIR%%/locales/he.pak
+%%DATADIR%%/locales/hi.pak
+%%DATADIR%%/locales/hr.pak
+%%DATADIR%%/locales/hu.pak
+%%DATADIR%%/locales/id.pak
+%%DATADIR%%/locales/it.pak
+%%DATADIR%%/locales/ja.pak
+%%DATADIR%%/locales/kn.pak
+%%DATADIR%%/locales/ko.pak
+%%DATADIR%%/locales/lt.pak
+%%DATADIR%%/locales/lv.pak
+%%DATADIR%%/locales/ml.pak
+%%DATADIR%%/locales/mr.pak
+%%DATADIR%%/locales/ms.pak
+%%DATADIR%%/locales/nb.pak
+%%DATADIR%%/locales/nl.pak
+%%DATADIR%%/locales/pl.pak
+%%DATADIR%%/locales/pt-BR.pak
+%%DATADIR%%/locales/pt-PT.pak
+%%DATADIR%%/locales/ro.pak
+%%DATADIR%%/locales/ru.pak
+%%DATADIR%%/locales/sk.pak
+%%DATADIR%%/locales/sl.pak
+%%DATADIR%%/locales/sr.pak
+%%DATADIR%%/locales/sv.pak
+%%DATADIR%%/locales/sw.pak
+%%DATADIR%%/locales/ta.pak
+%%DATADIR%%/locales/te.pak
+%%DATADIR%%/locales/th.pak
+%%DATADIR%%/locales/tr.pak
+%%DATADIR%%/locales/uk.pak
+%%DATADIR%%/locales/vi.pak
+%%DATADIR%%/locales/zh-CN.pak
+%%DATADIR%%/locales/zh-TW.pak
+%%DATADIR%%/mksnapshot
+%%DATADIR%%/natives_blob.bin
+%%DATADIR%%/node_headers/include/node/common.gypi
+%%DATADIR%%/node_headers/include/node/config.gypi
+%%DATADIR%%/node_headers/include/node/js_native_api.h
+%%DATADIR%%/node_headers/include/node/js_native_api_types.h
+%%DATADIR%%/node_headers/include/node/libplatform/libplatform-export.h
+%%DATADIR%%/node_headers/include/node/libplatform/libplatform.h
+%%DATADIR%%/node_headers/include/node/libplatform/v8-tracing.h
+%%DATADIR%%/node_headers/include/node/node.h
+%%DATADIR%%/node_headers/include/node/node_api.h
+%%DATADIR%%/node_headers/include/node/node_api_types.h
+%%DATADIR%%/node_headers/include/node/node_buffer.h
+%%DATADIR%%/node_headers/include/node/node_object_wrap.h
+%%DATADIR%%/node_headers/include/node/node_version.h
+%%DATADIR%%/node_headers/include/node/uv.h
+%%DATADIR%%/node_headers/include/node/uv/aix.h
+%%DATADIR%%/node_headers/include/node/uv/android-ifaddrs.h
+%%DATADIR%%/node_headers/include/node/uv/bsd.h
+%%DATADIR%%/node_headers/include/node/uv/darwin.h
+%%DATADIR%%/node_headers/include/node/uv/errno.h
+%%DATADIR%%/node_headers/include/node/uv/linux.h
+%%DATADIR%%/node_headers/include/node/uv/os390.h
+%%DATADIR%%/node_headers/include/node/uv/posix.h
+%%DATADIR%%/node_headers/include/node/uv/stdint-msvc2008.h
+%%DATADIR%%/node_headers/include/node/uv/sunos.h
+%%DATADIR%%/node_headers/include/node/uv/threadpool.h
+%%DATADIR%%/node_headers/include/node/uv/tree.h
+%%DATADIR%%/node_headers/include/node/uv/unix.h
+%%DATADIR%%/node_headers/include/node/uv/version.h
+%%DATADIR%%/node_headers/include/node/uv/win.h
+%%DATADIR%%/node_headers/include/node/v8-internal.h
+%%DATADIR%%/node_headers/include/node/v8-platform.h
+%%DATADIR%%/node_headers/include/node/v8-profiler.h
+%%DATADIR%%/node_headers/include/node/v8-testing.h
+%%DATADIR%%/node_headers/include/node/v8-util.h
+%%DATADIR%%/node_headers/include/node/v8-value-serializer-version.h
+%%DATADIR%%/node_headers/include/node/v8-version-string.h
+%%DATADIR%%/node_headers/include/node/v8-version.h
+%%DATADIR%%/node_headers/include/node/v8-wasm-trap-handler-posix.h
+%%DATADIR%%/node_headers/include/node/v8-wasm-trap-handler-win.h
+%%DATADIR%%/node_headers/include/node/v8.h
+%%DATADIR%%/node_headers/include/node/v8config.h
+%%DATADIR%%/node_headers/include/node/zconf.h
+%%DATADIR%%/node_headers/include/node/zlib.h
+%%DIST%%%%DATADIR%%/releases/SHASUMS256.txt
+%%DIST%%%%AMD64%%%%DATADIR%%/releases/chromedriver-v%%ELECTRON_VER%%-freebsd-x64.zip
+%%DIST%%%%I386%%%%DATADIR%%/releases/chromedriver-v%%ELECTRON_VER%%-freebsd-ia32.zip
+%%DIST%%%%AMD64%%%%DATADIR%%/releases/electron-v%%ELECTRON_VER%%-freebsd-x64.zip
+%%DIST%%%%I386%%%%DATADIR%%/releases/electron-v%%ELECTRON_VER%%-freebsd-ia32.zip
+%%DIST%%%%AMD64%%%%DATADIR%%/releases/mksnapshot-v%%ELECTRON_VER%%-freebsd-x64.zip
+%%DIST%%%%I386%%%%DATADIR%%/releases/mksnapshot-v%%ELECTRON_VER%%-freebsd-ia32.zip
+%%DATADIR%%/resources.pak
+%%DATADIR%%/resources/default_app.asar
+%%DATADIR%%/resources/electron.asar
+%%DATADIR%%/snapshot_blob.bin
+%%DATADIR%%/swiftshader/libEGL.so
+%%DATADIR%%/swiftshader/libGLESv2.so
+%%DATADIR%%/v8_context_snapshot.bin
+%%DATADIR%%/v8_context_snapshot_generator
+%%DATADIR%%/version
diff --git a/devel/electron6/Makefile b/devel/electron6/Makefile
new file mode 100644
index 000000000000..8a7ffd868151
--- /dev/null
+++ b/devel/electron6/Makefile
@@ -0,0 +1,302 @@
+# $FreeBSD$
+
+PORTNAME= electron
+DISTVERSIONPREFIX= v
+DISTVERSION= ${ELECTRON_VER:S/-beta./.b/}
+PORTREVISION= 1
+CATEGORIES= devel java
+MASTER_SITES= https://github.com/tagattie/FreeBSD-Electron/releases/download/v6.0.9/:chromium \
+ https://commondatastorage.googleapis.com/chromium-browser-official/:chromium_official \
+ https://commondatastorage.googleapis.com/chromium-nodejs/:chromium_node \
+ https://commondatastorage.googleapis.com/chromium-fonts/:chromium_testfonts
+PKGNAMESUFFIX= ${ELECTRON_VER_MAJOR}
+DISTFILES= chromium-${CHROMIUM_VER}${EXTRACT_SUFX}:chromium \
+ chromium-${CHROMIUM_OFFICIAL_VER}${EXTRACT_SUFX}:chromium_official \
+ ${CHROMIUM_NODE_MODULES_HASH}:chromium_node \
+ ${CHROMIUM_TEST_FONTS_HASH}:chromium_testfonts \
+ electron-yarn-cache-${ELECTRON_VER}${EXTRACT_SUFX}:prefetch
+DIST_SUBDIR= ${PORTNAME}
+
+MAINTAINER= tagattie@FreeBSD.org
+COMMENT= Build cross-platform desktop apps with JavaScript, HTML, and CSS
+
+LICENSE= MIT
+LICENSE_FILE= ${WRKSRC}/electron/LICENSE
+
+FETCH_DEPENDS= yarn-node12>0:www/yarn-node12
+EXTRACT_DEPENDS= yarn-node12>0:www/yarn-node12
+PATCH_DEPENDS= git:devel/git
+BUILD_DEPENDS= ${LOCALBASE}/bin/ar:devel/binutils \
+ gperf:devel/gperf \
+ yasm:devel/yasm \
+ ${LOCALBASE}/include/linux/videodev2.h:multimedia/v4l_compat \
+ node12>0:www/node12 \
+ npm-node12>0:www/npm-node12
+LIB_DEPENDS= libatk-bridge-2.0.so:accessibility/at-spi2-atk \
+ libatspi.so:accessibility/at-spi2-core \
+ libsnappy.so:archivers/snappy \
+ libFLAC.so:audio/flac \
+ libopus.so:audio/opus \
+ libdbus-1.so:devel/dbus \
+ libnotify.so:devel/libnotify \
+ libpci.so:devel/libpci \
+ libnspr4.so:devel/nspr \
+ libre2.so:devel/re2 \
+ liblcms2.so:graphics/lcms2 \
+ libdrm.so:graphics/libdrm \
+ libwebp.so:graphics/webp \
+ libavcodec.so:multimedia/ffmpeg \
+ libvpx.so:multimedia/libvpx \
+ libopenh264.so:multimedia/openh264 \
+ libfreetype.so:print/freetype2 \
+ libharfbuzz.so:print/harfbuzz \
+ libsecret-1.so:security/libsecret \
+ libnss3.so:security/nss \
+ libexpat.so:textproc/expat2 \
+ libfontconfig.so:x11-fonts/fontconfig
+RUN_DEPENDS= xdg-open:devel/xdg-utils
+TEST_DEPENDS= ${PYTHON_PKGNAMEPREFIX}python-dbusmock>0:devel/py-python-dbusmock@${PY_FLAVOR} \
+ npm-node12>0:www/npm-node12
+
+USES= bison dos2unix gettext-tools gl gnome jpeg localbase:ldflags \
+ ninja pkgconfig python:2.7,build,test tar:xz xorg
+
+USE_GITHUB= yes
+GH_TAGNAME= ${DISTVERSIONPREFIX}${ELECTRON_VER}
+GH_TUPLE= nodejs:node:v${NODE_VER}:node
+
+# Official chromium version containing "gn" which is known to work
+CHROMIUM_OFFICIAL_VER= 76.0.3809.132
+# See ${WRKSRC}/electron/DEPS for CHROMIUM_VER
+CHROMIUM_VER= 76.0.3809.146
+# See ${WRKSRC}/third_party/node/node_modules.tar.gz.sha1 for CHROMIUM_NODE_MODULES_HASH
+CHROMIUM_NODE_MODULES_HASH= 2dd750e768cec597fc018509009637819ae4549c
+# See ${WRKSRC}/third_party/test_fonts/test_fonts.tar.gz.sha1 for CHROMIUM_TEST_FONTS_HASH
+CHROMIUM_TEST_FONTS_HASH= a22de844e32a3f720d219e3911c3da3478039f89
+# See ${WRKSRC}/electron/DEPS for NODE_VER
+NODE_VER= 12.4.0
+
+NO_WRKSUBDIR= yes
+WRKSRC_SUBDIR= src
+
+DATADIR= ${PREFIX}/share/${PORTNAME}${PKGNAMESUFFIX}
+
+DOS2UNIX_FILES= third_party/skia/third_party/vulkanmemoryallocator/include/vk_mem_alloc.h
+BINARY_ALIAS= python=${PYTHON_CMD}
+
+USE_XORG= x11 xcb xcomposite xcursor xdamage xext xfixes xi xrandr \
+ xrender xscrnsaver xtst
+USE_GL= gl glesv2
+USE_GNOME= atk cairo pango gdkpixbuf2 gtk30 libxml2 libxslt
+USE_JAVA= yes
+JAVA_VERSION= 1.8
+JAVA_BUILD= yes
+
+USE_LDCONFIG= ${DATADIR}
+
+GN_ARGS+= clang_use_chrome_plugins=false \
+ enable_hangout_services_extension=true \
+ enable_nacl=false \
+ enable_one_click_signin=true \
+ enable_remoting=false \
+ fieldtrial_testing_like_official_build=true \
+ is_clang=true \
+ toolkit_views=true \
+ treat_warnings_as_errors=false \
+ use_allocator="none" \
+ use_allocator_shim=false \
+ use_aura=true \
+ use_custom_libcxx=false \
+ use_gnome_keyring=false \
+ use_jumbo_build=true \
+ use_lld=true \
+ use_sysroot=false \
+ use_system_freetype=true \
+ use_system_harfbuzz=true \
+ use_system_lcms2=true \
+ use_system_libdrm=true \
+ use_system_libjpeg=true \
+ extra_cxxflags="${CXXFLAGS}" \
+ extra_ldflags="${LDFLAGS}"
+GN_BOOTSTRAP_FLAGS= --no-clean --no-rebuild --skip-generate-buildfiles
+
+ALL_TARGET= electron third_party/electron_node:headers
+MAKE_ARGS= -C out/${BUILDTYPE}
+MAKE_ENV+= C_INCLUDE_PATH=${LOCALBASE}/include \
+ CPLUS_INCLUDE_PATH=${LOCALBASE}/include
+
+OPTIONS_DEFINE= CUPS DEBUG DIST DRIVER KERBEROS
+DIST_DESC= Build distribution zip files
+DRIVER_DESC= Install chromedriver
+OPTIONS_GROUP= AUDIO
+OPTIONS_GROUP_AUDIO= ALSA PULSEAUDIO
+OPTIONS_DEFAULT= CUPS DRIVER KERBEROS ALSA
+OPTIONS_SUB= yes
+
+ALSA_LIB_DEPENDS= libasound.so:audio/alsa-lib
+ALSA_RUN_DEPENDS= ${LOCALBASE}/lib/alsa-lib/libasound_module_pcm_oss.so:audio/alsa-plugins
+ALSA_VARS= GN_ARGS+=use_alsa=true
+ALSA_VARS_OFF= GN_ARGS+=use_alsa=false
+
+CUPS_LIB_DEPENDS= libcups.so:print/cups
+CUPS_VARS= GN_ARGS+=use_cups=true
+CUPS_VARS_OFF= GN_ARGS+=use_cups=false
+
+DEBUG_VARS= BUILDTYPE=Debug \
+ GN_ARGS+=is_component_build=false
+DEBUG_VARS_OFF= BUILDTYPE=Release
+
+DIST_IMPLIES= DRIVER
+
+DRIVER_ALL_TARGET= chromedriver
+
+KERBEROS_VARS= GN_ARGS+=use_kerberos=true
+KERBEROS_VARS_OFF= GN_ARGS+=use_kerberos=false
+
+PULSEAUDIO_LIB_DEPENDS= libpulse.so:audio/pulseaudio
+PULSEAUDIO_VARS= GN_ARGS+=use_pulseaudio=true
+PULSEAUDIO_VARS_OFF= GN_ARGS+=use_pulseaudio=false
+
+POST_BUILD_TARGETS= licenses version
+POST_BUILD_DIST_TARGETS= electron_dist_zip electron_chromedriver_zip electron_mksnapshot_zip
+
+YARN_TIMESTAMP= 1589883499
+
+PLIST_SUB= ELECTRON_VER=${ELECTRON_VER} \
+ ELECTRON_VER_MAJOR=${ELECTRON_VER_MAJOR}
+
+.include "Makefile.version"
+.include <bsd.port.pre.mk>
+
+.if ${ARCH} == "amd64"
+PLIST_SUB+= AMD64=""
+.else
+PLIST_SUB+= AMD64="@comment "
+.endif
+
+.if ${ARCH} == "i386"
+PLIST_SUB+= I386=""
+.else
+PLIST_SUB+= I386="@comment "
+.endif
+
+pre-fetch:
+ @${MKDIR} ${DISTDIR}/${DIST_SUBDIR}
+ if [ ! -f ${DISTDIR}/${DIST_SUBDIR}/electron-yarn-cache-${ELECTRON_VER}${EXTRACT_SUFX} ]; \
+ then ${MKDIR} ${WRKDIR}; \
+ ${ECHO_CMD} 'yarn-offline-mirror "./yarn-offline-cache"' >> \
+ ${WRKDIR}/.yarnrc; \
+ ${CP} ${FILESDIR}/package.json ${FILESDIR}/yarn.lock ${WRKDIR}; \
+ cd ${WRKDIR} && ${SETENV} HOME=${WRKDIR} XDG_CACHE_HOME=${WRKDIR}/.cache \
+ yarn --frozen-lockfile --ignore-scripts; \
+ ${MTREE_CMD} -cbnSp yarn-offline-cache | ${MTREE_CMD} -C | ${SED} \
+ -e 's:time=[0-9.]*:time=${YARN_TIMESTAMP}.000000000:' \
+ -e 's:\([gu]id\)=[0-9]*:\1=0:g' \
+ -e 's:flags=.*:flags=none:' \
+ -e 's:^\.:./yarn-offline-cache:' > yarn-offline-cache.mtree; \
+ ${TAR} cJf ${DISTDIR}/${DIST_SUBDIR}/electron-yarn-cache-${ELECTRON_VER}${EXTRACT_SUFX} \
+ @yarn-offline-cache.mtree; \
+ ${RM} -r ${WRKDIR}; \
+ fi
+
+post-extract:
+ ${MV} ${WRKDIR}/${PORTNAME}-${ELECTRON_VER}/chromium-${CHROMIUM_VER} ${WRKSRC}
+ ${RM} -r ${WRKSRC}/tools/gn
+ ${MV} ${WRKDIR}/${PORTNAME}-${ELECTRON_VER}/chromium-${CHROMIUM_OFFICIAL_VER}/tools/gn \
+ ${WRKSRC}/tools/gn
+ ${MV} ${WRKDIR}/${PORTNAME}-${ELECTRON_VER}/${PORTNAME}-${ELECTRON_VER} ${WRKSRC}/electron
+ ${MV} ${WRKDIR}/${PORTNAME}-${ELECTRON_VER}/${GH_PROJECT_node}-${NODE_VER} \
+ ${WRKSRC}/third_party/electron_node
+ ${MV} ${WRKDIR}/${PORTNAME}-${ELECTRON_VER}/yarn-offline-cache ${WRKDIR}
+ ${ECHO_CMD} 'yarn-offline-mirror "../../../yarn-offline-cache"' >> ${WRKSRC}/electron/.yarnrc
+ cd ${WRKSRC}/electron && \
+ ${SETENV} HOME=${WRKDIR} XDG_CACHE_HOME=${WRKDIR}/.cache yarn --frozen-lockfile --offline
+ ${MV} ${WRKDIR}/${PORTNAME}-${ELECTRON_VER}/node_modules ${WRKSRC}/third_party/node
+ ${MV} ${WRKDIR}/${PORTNAME}-${ELECTRON_VER}/test_fonts ${WRKSRC}/third_party/test_fonts
+
+pre-patch:
+ ${SH} ${FILESDIR}/apply-electron-patches.sh ${WRKSRC}
+ # ${FIND} ${WRKSRC} -type f -name '*.orig' -print -delete
+ # ${FIND} ${WRKSRC} -type f -name '*~' -print -delete
+
+pre-configure:
+ # We used to remove bundled libraries to be sure that chromium uses
+ # system libraries and not shipped ones.
+ # cd ${WRKSRC} && ${PYTHON_CMD} \
+ #./build/linux/unbundle/remove_bundled_libraries.py [list of preserved]
+ cd ${WRKSRC} && ${SETENV} ${CONFIGURE_ENV} ${PYTHON_CMD} \
+ ./build/linux/unbundle/replace_gn_files.py --system-libraries \
+ ffmpeg flac fontconfig freetype harfbuzz-ng libdrm libjpeg \
+ libusb libvpx libwebp libxml libxslt openh264 opus re2 snappy \
+ yasm || ${FALSE}
+
+do-configure:
+ # GN generator bootstrapping and generating ninja files
+ cd ${WRKSRC} && ${SETENV} ${CONFIGURE_ENV} CC=${CC} CXX=${CXX} LD=${CXX} \
+ READELF=${READELF} AR=${AR} NM=${NM} ${PYTHON_CMD} \
+ ./tools/gn/bootstrap/bootstrap.py ${GN_BOOTSTRAP_FLAGS}
+ cd ${WRKSRC} && ${SETENV} ${CONFIGURE_ENV} ./out/${BUILDTYPE}/gn gen out/${BUILDTYPE} \
+ --args='import("//electron/build/args/${BUILDTYPE:tl}.gn") ${GN_ARGS}'
+ # Setup nodejs dependency
+ ${MKDIR} ${WRKSRC}/third_party/node/freebsd/node-freebsd-x64/bin
+ ${LN} -sf ${LOCALBASE}/bin/node ${WRKSRC}/third_party/node/freebsd/node-freebsd-x64/bin/node
+ # Setup java dependency
+ ${MKDIR} ${WRKDIR}/bin
+ ${LN} -sf ${LOCALBASE}/openjdk8/bin/java ${WRKDIR}/bin/java
+
+post-build:
+ cd ${WRKSRC} && ${SETENV} ${MAKE_ENV} \
+ ${MAKE_CMD} ${MAKE_ARGS} ${POST_BUILD_TARGETS}
+
+post-build-DIST-on:
+ cd ${WRKSRC} && ${SETENV} ${MAKE_ENV} \
+ ${MAKE_CMD} ${MAKE_ARGS} ${POST_BUILD_DIST_TARGETS}
+ cd ${WRKSRC}/out/${BUILDTYPE} && \
+ ${CP} chromedriver.zip chromedriver-v${ELECTRON_VER}-freebsd-${ARCH:S/amd64/x64/:S/i386/ia32/}.zip && \
+ ${CP} dist.zip electron-v${ELECTRON_VER}-freebsd-${ARCH:S/amd64/x64/:S/i386/ia32/}.zip && \
+ ${CP} mksnapshot.zip mksnapshot-v${ELECTRON_VER}-freebsd-${ARCH:S/amd64/x64/:S/i386/ia32/}.zip && \
+ ${SHA256} -r *-v${ELECTRON_VER}-freebsd-*.zip | ${SED} -e 's/ / */' > SHASUMS256.txt
+
+do-install:
+ ${MKDIR} ${STAGEDIR}${DATADIR}
+.for f in electron mksnapshot v8_context_snapshot_generator
+ ${INSTALL_PROGRAM} ${WRKSRC}/out/${BUILDTYPE}/${f} ${STAGEDIR}${DATADIR}
+.endfor
+.for f in libEGL.so libGLESv2.so
+ ${INSTALL_LIB} ${WRKSRC}/out/${BUILDTYPE}/${f} ${STAGEDIR}${DATADIR}
+.endfor
+ ${MKDIR} ${STAGEDIR}${DATADIR}/swiftshader
+.for f in libEGL.so libGLESv2.so
+ ${INSTALL_LIB} ${WRKSRC}/out/${BUILDTYPE}/swiftshader/${f} ${STAGEDIR}${DATADIR}/swiftshader
+.endfor
+.for f in LICENSE LICENSES.chromium.html icudtl.dat natives_blob.bin snapshot_blob.bin v8_context_snapshot.bin version
+ ${INSTALL_DATA} ${WRKSRC}/out/${BUILDTYPE}/${f} ${STAGEDIR}${DATADIR}
+.endfor
+.for f in chrome_100_percent.pak chrome_200_percent.pak resources.pak
+ ${INSTALL_DATA} ${WRKSRC}/out/${BUILDTYPE}/${f} ${STAGEDIR}${DATADIR}
+.endfor
+ ${MKDIR} ${STAGEDIR}${DATADIR}/locales
+ ${INSTALL_DATA} ${WRKSRC}/out/${BUILDTYPE}/locales/*.pak ${STAGEDIR}${DATADIR}/locales
+ ${MKDIR} ${STAGEDIR}${DATADIR}/resources
+.for f in default_app.asar electron.asar
+ ${INSTALL_DATA} ${WRKSRC}/out/${BUILDTYPE}/resources/${f} ${STAGEDIR}${DATADIR}/resources
+.endfor
+ cd ${WRKSRC}/out/${BUILDTYPE}/gen && ${COPYTREE_SHARE} node_headers ${STAGEDIR}${DATADIR}
+ ${RLN} ${STAGEDIR}${DATADIR}/electron ${STAGEDIR}${PREFIX}/bin/electron${PKGNAMESUFFIX}
+
+post-install-DIST-on:
+ ${MKDIR} ${STAGEDIR}${DATADIR}/releases
+ ${INSTALL_DATA} ${WRKSRC}/out/${BUILDTYPE}/SHASUMS256.txt ${STAGEDIR}${DATADIR}/releases
+ ${INSTALL_DATA} ${WRKSRC}/out/${BUILDTYPE}/*-v${ELECTRON_VER}-freebsd-*.zip ${STAGEDIR}${DATADIR}/releases
+
+post-install-DRIVER-on:
+ ${INSTALL_PROGRAM} ${WRKSRC}/out/${BUILDTYPE}/chromedriver ${STAGEDIR}${DATADIR}
+
+do-test:
+ # Note 1: "npm install" will run before actual tests are executed
+ # Note 2: Xvfb or something similar is necessary for headless testing
+ cd ${WRKSRC}/electron && \
+ ${SETENV} ${TEST_ENV} ELECTRON_OUT_DIR=${BUILDTYPE} \
+ npm run test -- --ci
+
+.include <bsd.port.post.mk>
diff --git a/devel/electron6/Makefile.version b/devel/electron6/Makefile.version
new file mode 100644
index 000000000000..495941237b0c
--- /dev/null
+++ b/devel/electron6/Makefile.version
@@ -0,0 +1,4 @@
+# $FreeBSD$
+
+ELECTRON_VER= 6.1.12
+ELECTRON_VER_MAJOR= ${ELECTRON_VER:C/\..*//}
diff --git a/devel/electron6/distinfo b/devel/electron6/distinfo
new file mode 100644
index 000000000000..686cd68d484a
--- /dev/null
+++ b/devel/electron6/distinfo
@@ -0,0 +1,15 @@
+TIMESTAMP = 1589884179
+SHA256 (electron/chromium-76.0.3809.146.tar.xz) = 1538c7118fb94c1ba6b6da18f4b8f6a6d303dee855ee0e5c3f9025f17563f3cd
+SIZE (electron/chromium-76.0.3809.146.tar.xz) = 1355929024
+SHA256 (electron/chromium-76.0.3809.132.tar.xz) = d54e4640b5e399d170dffbc5bcff65157eb1b29314b94b5d808f727d9ce45241
+SIZE (electron/chromium-76.0.3809.132.tar.xz) = 728899912
+SHA256 (electron/2dd750e768cec597fc018509009637819ae4549c) = d63b5953e3e8a0d6b7ed344043f9ffe7a49ddcf4e591d59aebaf87e299360730
+SIZE (electron/2dd750e768cec597fc018509009637819ae4549c) = 4182260
+SHA256 (electron/a22de844e32a3f720d219e3911c3da3478039f89) = 6e331676d098a57c53c1250821dc47ed84c47f823901bf30c4704df90d8a34be
+SIZE (electron/a22de844e32a3f720d219e3911c3da3478039f89) = 17469927
+SHA256 (electron/electron-yarn-cache-6.1.12.tar.xz) = aa696f113e4f6a1a58621f9cc82d3980c4bc0cc7fefce5c4ea4157afea538bc4
+SIZE (electron/electron-yarn-cache-6.1.12.tar.xz) = 36875692
+SHA256 (electron/electron-electron-v6.1.12_GH0.tar.gz) = decf86dfc2e53f17d87b80f0922b5ce10cbd46a33fe1633743adbf65b10edf3a
+SIZE (electron/electron-electron-v6.1.12_GH0.tar.gz) = 4209015
+SHA256 (electron/nodejs-node-v12.4.0_GH0.tar.gz) = fc7df2a5cdb43b7a186f07a04e6b0f5c5c3b4c117f08185ffec3345613c71d94
+SIZE (electron/nodejs-node-v12.4.0_GH0.tar.gz) = 70296027
diff --git a/devel/electron6/files/apply-electron-patches.sh b/devel/electron6/files/apply-electron-patches.sh
new file mode 100644
index 000000000000..300c8166f223
--- /dev/null
+++ b/devel/electron6/files/apply-electron-patches.sh
@@ -0,0 +1,20 @@
+#! /bin/sh
+
+PATH=/bin:/usr/bin:/usr/local/bin
+
+PATCH_CMD="git apply"
+#PATCH_FLAGS="--numstat --check" # for debugging
+PATCH_FLAGS="--verbose --reject"
+
+WRKSRC=$1
+PATCH_CONF=${WRKSRC}/electron/patches/common/config.json
+
+PATCHD_REPOD_PAIRS=$(sed -e '1d; $d; /^$/d; s/[",]//g; s/: */:/' "${PATCH_CONF}")
+for prp in ${PATCHD_REPOD_PAIRS}; do
+ pd=$(echo "${prp}" | awk -F: '{print $1}' | sed -e 's/src/./')
+ rd=$(echo "${prp}" | awk -F: '{print $2}' | sed -e 's/src/./')
+ (cd "${WRKSRC}/${rd}" && \
+ while read -r p; do
+ ${PATCH_CMD} ${PATCH_FLAGS} "${WRKSRC}/${pd}/${p}"
+ done < "${WRKSRC}/${pd}/.patches")
+done
diff --git a/devel/electron6/files/package.json b/devel/electron6/files/package.json
new file mode 100644
index 000000000000..f5c5742f1eed
--- /dev/null
+++ b/devel/electron6/files/package.json
@@ -0,0 +1,135 @@
+{
+ "name": "electron",
+ "version": "6.1.12",
+ "repository": "https://github.com/electron/electron",
+ "description": "Build cross platform desktop apps with JavaScript, HTML, and CSS",
+ "devDependencies": {
+ "@octokit/rest": "^16.3.2",
+ "@types/chai": "^4.1.7",
+ "@types/chai-as-promised": "^7.1.0",
+ "@types/express": "^4.16.1",
+ "@types/fs-extra": "^5.0.5",
+ "@types/mocha": "^5.2.6",
+ "@types/node": "^10.12.21",
+ "@types/split": "^1.0.0",
+ "@typescript-eslint/eslint-plugin": "^1.4.2",
+ "@typescript-eslint/parser": "^1.4.2",
+ "aliasify": "^2.1.0",
+ "asar": "^1.0.0",
+ "browserify": "^16.2.3",
+ "check-for-leaks": "^1.0.2",
+ "clang-format": "^1.2.3",
+ "colors": "^1.1.2",
+ "dotenv-safe": "^4.0.4",
+ "dugite": "^1.45.0",
+ "electron-docs-linter": "^3.0.1",
+ "electron-typescript-definitions": "^8.2.2",
+ "eslint": "^5.13.0",
+ "eslint-config-standard": "^12.0.0",
+ "eslint-plugin-import": "^2.17.2",
+ "eslint-plugin-mocha": "^5.2.0",
+ "eslint-plugin-node": "^8.0.1",
+ "eslint-plugin-standard": "^4.0.0",
+ "eslint-plugin-typescript": "^0.14.0",
+ "express": "^4.16.4",
+ "folder-hash": "^2.1.1",
+ "fs-extra": "^7.0.1",
+ "husky": "^0.14.3",
+ "klaw": "^3.0.0",
+ "lint": "^1.1.2",
+ "lint-staged": "^8.1.0",
+ "minimist": "^1.2.0",
+ "nugget": "^2.0.1",
+ "octicons": "^7.3.0",
+ "plist": "^3.0.1",
+ "pre-flight": "^1.1.0",
+ "remark-cli": "^4.0.0",
+ "remark-preset-lint-markdown-style-guide": "^2.1.1",
+ "request": "^2.88.0",
+ "semver": "^5.6.0",
+ "serve": "^6.5.8",
+ "shx": "^0.3.2",
+ "standard-markdown": "^5.0.0",
+ "sumchecker": "^2.0.2",
+ "temp": "^0.8.3",
+ "ts-node": "^6.0.3",
+ "tsify": "^4.0.1",
+ "typescript": "~3.3.3333"
+ },
+ "private": true,
+ "scripts": {
+ "asar": "asar",
+ "browserify": "browserify",
+ "bump-version": "./script/bump-version.js",
+ "check-tls": "python ./script/tls.py",
+ "clang-format": "find atom/ chromium_src/ -iname *.h -o -iname *.cc -o -iname *.mm | xargs clang-format -i",
+ "lint": "node ./script/lint.js && npm run lint:clang-format && npm run lint:docs",
+ "lint:js": "node ./script/lint.js --js",
+ "lint:clang-format": "python script/run-clang-format.py -r -c atom/ chromium_src/ || (echo \"\\nCode not formatted correctly.\" && exit 1)",
+ "lint:cpp": "node ./script/lint.js --cc",
+ "lint:py": "node ./script/lint.js --py",
+ "lint:gn": "node ./script/lint.js --gn",
+ "lint:docs": "remark docs -qf && npm run lint:js-in-markdown && npm run create-typescript-definitions && npm run lint:docs-relative-links && npm run lint:check-trailing-whitespace",
+ "lint:docs-relative-links": "python ./script/check-relative-doc-links.py",
+ "lint:check-trailing-whitespace": "python ./script/check-trailing-whitespace.py",
+ "lint:js-in-markdown": "standard-markdown docs",
+ "create-api-json": "electron-docs-linter docs --outfile=electron-api.json",
+ "create-typescript-definitions": "npm run create-api-json && electron-typescript-definitions --in=electron-api.json --out=electron.d.ts && node spec/ts-smoke/runner.js",
+ "gn-typescript-definitions": "npm run create-typescript-definitions && shx cp electron.d.ts",
+ "pre-flight": "pre-flight",
+ "preinstall": "node -e 'process.exit(0)'",
+ "precommit": "lint-staged",
+ "prepack": "check-for-leaks",
+ "prepush": "check-for-leaks",
+ "repl": "node ./script/start.js --interactive",
+ "start": "node ./script/start.js",
+ "test": "node ./script/spec-runner.js",
+ "tsc": "tsc"
+ },
+ "license": "MIT",
+ "author": "Electron Community",
+ "keywords": [
+ "electron"
+ ],
+ "aliasify": {
+ "replacements": {
+ "@electron/internal/(.+)": "./lib/$1"
+ },
+ "appliesTo": {
+ "includeExtensions": [
+ ".js",
+ ".ts"
+ ]
+ }
+ },
+ "lint-staged": {
+ "*.{js,ts}": [
+ "node script/lint.js --js --fix --only --",
+ "git add"
+ ],
+ "*.{js,ts,d.ts}": [
+ "node script/gen-filenames.js",
+ "git add"
+ ],
+ "*.{cc,mm,c,h}": [
+ "python script/run-clang-format.py -r -c --fix",
+ "git add"
+ ],
+ "*.md": [
+ "remark -qf"
+ ],
+ "*.{gn,gni}": [
+ "python script/run-gn-format.py",
+ "git add"
+ ],
+ "*.py": [
+ "node script/lint.js --py --fix --only --",
+ "git add"
+ ],
+ "docs/api/**/*.md": [
+ "node script/gen-filenames.js",
+ "python script/check-trailing-whitespace.py --fix",
+ "git add filenames.auto.gni"
+ ]
+ }
+}
diff --git a/devel/electron6/files/patch-BUILD.gn b/devel/electron6/files/patch-BUILD.gn
new file mode 100644
index 000000000000..a796b070c41e
--- /dev/null
+++ b/devel/electron6/files/patch-BUILD.gn
@@ -0,0 +1,95 @@
+--- BUILD.gn.orig 2019-09-10 11:13:30 UTC
++++ BUILD.gn
+@@ -386,7 +386,7 @@ group("gn_all") {
+ ]
+ }
+
+- if (is_linux || is_android) {
++ if ((is_linux && !is_bsd) || is_android) {
+ deps += [
+ "//third_party/breakpad:breakpad_unittests",
+ "//third_party/breakpad:core-2-minidump",
+@@ -427,8 +427,6 @@ group("gn_all") {
+ "//net:disk_cache_memory_test",
+ "//net:quic_client",
+ "//net:quic_server",
+- "//sandbox/linux:chrome_sandbox",
+- "//sandbox/linux:sandbox_linux_unittests",
+ "//testing:empty_main",
+ ]
+
+@@ -483,10 +481,6 @@ group("gn_all") {
+ "//chrome/test:load_library_perf_tests",
+ "//chrome/test:sync_performance_tests",
+ "//chrome/test/chromedriver:chromedriver",
+- "//courgette:courgette",
+- "//courgette:courgette_fuzz",
+- "//courgette:courgette_minimal_tool",
+- "//courgette:courgette_unittests",
+ "//media/cast:generate_barcode_video",
+ "//media/cast:generate_timecode_audio",
+ "//net:crash_cache",
+@@ -541,10 +535,6 @@ group("gn_all") {
+ "//mojo:mojo_perftests",
+ "//services/service_manager/public/cpp",
+ "//testing/gmock:gmock_main",
+- "//third_party/breakpad:dump_syms($host_toolchain)",
+- "//third_party/breakpad:microdump_stackwalk($host_toolchain)",
+- "//third_party/breakpad:minidump_dump($host_toolchain)",
+- "//third_party/breakpad:minidump_stackwalk($host_toolchain)",
+ ]
+
+ if (!is_android) {
+@@ -619,7 +609,7 @@ group("gn_all") {
+ host_os == "win") {
+ deps += [ "//chrome/test/mini_installer:mini_installer_tests" ]
+ }
+- } else if (!is_android && !is_ios && !is_fuchsia) {
++ } else if (!is_android && !is_ios && !is_fuchsia && !is_bsd) {
+ deps += [ "//third_party/breakpad:symupload($host_toolchain)" ]
+ }
+
+@@ -758,7 +748,6 @@ group("gn_all") {
+ "//chrome/browser/vr:vr_common_perftests",
+ "//chrome/browser/vr:vr_common_unittests",
+ "//chrome/browser/vr:vr_pixeltests",
+- "//tools/perf/contrib/vr_benchmarks:vr_perf_tests",
+ ]
+ if (is_desktop_linux && use_ozone) {
+ deps += [ "//chrome/browser/vr/testapp:vr_testapp" ]
+@@ -877,7 +866,6 @@ if (is_chromeos) {
+ "//ppapi/examples/video_decode",
+ "//sandbox/linux:chrome_sandbox",
+ "//sandbox/linux:sandbox_linux_unittests",
+- "//third_party/breakpad:minidump_stackwalk($host_toolchain)",
+
+ # Blocked on https://github.com/catapult-project/catapult/issues/2297
+ #"//third_party/catapult/telemetry:bitmaptools",
+@@ -1033,7 +1021,7 @@ if (!is_ios) {
+ ]
+ }
+
+- if (!is_win && !is_android) {
++ if (!is_win && !is_android && !is_bsd) {
+ data_deps +=
+ [ "//third_party/breakpad:minidump_stackwalk($host_toolchain)" ]
+ }
+@@ -1042,7 +1030,7 @@ if (!is_ios) {
+ data_deps += [ "//third_party/breakpad:dump_syms($host_toolchain)" ]
+ }
+
+- if (is_linux) {
++ if (is_linux && !is_bsd) {
+ data_deps += [ "//third_party/breakpad:dump_syms($host_toolchain)" ]
+ }
+
+@@ -1185,9 +1173,6 @@ group("chromium_builder_perf") {
+
+ if (is_win) {
+ data_deps += [ "//chrome/installer/mini_installer:mini_installer" ]
+- } else {
+- data_deps +=
+- [ "//third_party/breakpad:minidump_stackwalk($host_toolchain)" ]
+ }
+ if (is_win || is_android) {
+ data_deps += [
diff --git a/devel/electron6/files/patch-apps_ui_views_app__window__frame__view.cc b/devel/electron6/files/patch-apps_ui_views_app__window__frame__view.cc
new file mode 100644
index 000000000000..0a2a0a44c935
--- /dev/null
+++ b/devel/electron6/files/patch-apps_ui_views_app__window__frame__view.cc
@@ -0,0 +1,11 @@
+--- apps/ui/views/app_window_frame_view.cc.orig 2019-09-10 10:42:26 UTC
++++ apps/ui/views/app_window_frame_view.cc
+@@ -125,7 +125,7 @@ gfx::Rect AppWindowFrameView::GetBoundsForClientView()
+ gfx::Rect AppWindowFrameView::GetWindowBoundsForClientBounds(
+ const gfx::Rect& client_bounds) const {
+ gfx::Rect window_bounds = client_bounds;
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ // Get the difference between the widget's client area bounds and window
+ // bounds, and grow |window_bounds| by that amount.
+ gfx::Insets native_frame_insets =
diff --git a/devel/electron6/files/patch-ash_display_mirror__window__controller.cc b/devel/electron6/files/patch-ash_display_mirror__window__controller.cc
new file mode 100644
index 000000000000..8b7a0cd355e9
--- /dev/null
+++ b/devel/electron6/files/patch-ash_display_mirror__window__controller.cc
@@ -0,0 +1,14 @@
+--- ash/display/mirror_window_controller.cc.orig 2019-09-10 10:42:26 UTC
++++ ash/display/mirror_window_controller.cc
+@@ -274,7 +274,11 @@ void MirrorWindowController::UpdateWindow(
+ return info.id() == iter->first;
+ }) == display_info_list.end()) {
+ CloseAndDeleteHost(iter->second, true);
++#if defined(__llvm__)
++ mirroring_host_info_map_.erase(iter++);
++#else
+ iter = mirroring_host_info_map_.erase(iter);
++#endif
+ } else {
+ ++iter;
+ }
diff --git a/devel/electron6/files/patch-base_BUILD.gn b/devel/electron6/files/patch-base_BUILD.gn
new file mode 100644
index 000000000000..ec0075851862
--- /dev/null
+++ b/devel/electron6/files/patch-base_BUILD.gn
@@ -0,0 +1,67 @@
+--- base/BUILD.gn.orig 2019-09-10 11:13:31 UTC
++++ base/BUILD.gn
+@@ -1258,7 +1258,7 @@ jumbo_component("base") {
+ # Needed for <atomic> if using newer C++ library than sysroot, except if
+ # building inside the cros_sdk environment - use host_toolchain as a
+ # more robust check for this.
+- if (!use_sysroot && (is_android || (is_linux && !is_chromecast)) &&
++ if (!use_sysroot && (is_android || (is_linux && !is_chromecast) && !is_clang) &&
+ host_toolchain != "//build/toolchain/cros:host") {
+ libs += [ "atomic" ]
+ }
+@@ -1284,7 +1284,7 @@ jumbo_component("base") {
+ "allocator/allocator_shim_override_glibc_weak_symbols.h",
+ ]
+ deps += [ "//base/allocator:tcmalloc" ]
+- } else if (is_linux && use_allocator == "none") {
++ } else if ((is_linux && !is_bsd) && use_allocator == "none") {
+ sources += [ "allocator/allocator_shim_default_dispatch_to_glibc.cc" ]
+ } else if (is_android && use_allocator == "none") {
+ sources += [
+@@ -1862,6 +1862,33 @@ jumbo_component("base") {
+ }
+ }
+
++ if (is_bsd) {
++ sources -= [
++ "files/file_path_watcher_linux.cc",
++ "files/file_util_linux.cc",
++ "process/memory_linux.cc",
++ "process/process_handle_linux.cc",
++ "process/process_iterator_linux.cc",
++ "process/process_metrics_linux.cc",
++ "system/sys_info_linux.cc"
++ ]
++ sources += [
++ "files/file_path_watcher_kqueue.cc",
++ "files/file_path_watcher_kqueue.h",
++ "files/file_path_watcher_stub.cc",
++ "process/memory_stubs.cc",
++ "process/process_handle_freebsd.cc",
++ "process/process_iterator_freebsd.cc",
++ "process/process_metrics_freebsd.cc",
++ "system/sys_info_freebsd.cc",
++ ]
++ libs = [
++ "execinfo", # logging.cc
++ "kvm", # process_metrics_freebsd
++ "util" # process_metrics_freebsd
++ ]
++ }
++
+ # iOS
+ if (is_ios) {
+ set_sources_assignment_filter([])
+@@ -2999,6 +3026,12 @@ test("base_unittests") {
+ ]
+ set_sources_assignment_filter(sources_assignment_filter)
+ }
++
++ if (is_bsd) {
++ sources -= [
++ "debug/proc_maps_linux_unittest.cc",
++ ]
++ }
+
+ if (is_win) {
+ deps += [ "//base:scoped_handle_test_dll" ]
diff --git a/devel/electron6/files/patch-base_allocator_allocator__shim.cc b/devel/electron6/files/patch-base_allocator_allocator__shim.cc
new file mode 100644
index 000000000000..adac3317fa52
--- /dev/null
+++ b/devel/electron6/files/patch-base_allocator_allocator__shim.cc
@@ -0,0 +1,11 @@
+--- base/allocator/allocator_shim.cc.orig 2019-09-10 11:13:31 UTC
++++ base/allocator/allocator_shim.cc
+@@ -70,7 +70,7 @@ inline const base::allocator::AllocatorDispatch* GetCh
+ // Unfortunately due to that bug NoBarrier_Load() is mistakenly fully
+ // barriered on Linux+Clang, and that causes visible perf regressons.
+ return reinterpret_cast<const base::allocator::AllocatorDispatch*>(
+-#if defined(OS_LINUX) && defined(__clang__)
++#if (defined(OS_BSD) || defined(OS_LINUX)) && defined(__clang__)
+ *static_cast<const volatile base::subtle::AtomicWord*>(&g_chain_head)
+ #else
+ base::subtle::NoBarrier_Load(&g_chain_head)
diff --git a/devel/electron6/files/patch-base_allocator_allocator__shim__default__dispatch__to__glibc.cc b/devel/electron6/files/patch-base_allocator_allocator__shim__default__dispatch__to__glibc.cc
new file mode 100644
index 000000000000..7fe4a32e0d17
--- /dev/null
+++ b/devel/electron6/files/patch-base_allocator_allocator__shim__default__dispatch__to__glibc.cc
@@ -0,0 +1,76 @@
+--- base/allocator/allocator_shim_default_dispatch_to_glibc.cc.orig 2019-09-10 10:42:26 UTC
++++ base/allocator/allocator_shim_default_dispatch_to_glibc.cc
+@@ -5,18 +5,28 @@
+ #include "base/allocator/allocator_shim.h"
+
+ #include <dlfcn.h>
+-#include <malloc.h>
++#include <stdio.h>
++#include <stdlib.h>
++#include <malloc_np.h>
+
+ // This translation unit defines a default dispatch for the allocator shim which
+ // routes allocations to libc functions.
+-// The code here is strongly inspired from tcmalloc's libc_override_glibc.h.
++// The code here is strongly inspired from tcmalloc's override_glibc.h.
+
+ extern "C" {
+-void* __libc_malloc(size_t size);
+-void* __libc_calloc(size_t n, size_t size);
+-void* __libc_realloc(void* address, size_t size);
+-void* __libc_memalign(size_t alignment, size_t size);
+-void __libc_free(void* ptr);
++void* __malloc(size_t size);
++void* __calloc(size_t n, size_t size);
++void* __realloc(void* address, size_t len);
++void* __memalign(size_t alignment, size_t size) {
++ void *ret;
++ if (__posix_memalign(&ret, alignment, size) != 0) {
++ return nullptr;
++ } else {
++ return ret;
++ }
++}
++int __posix_memalign(void **ptr, size_t alignment, size_t size);
++void __free(void* ptr);
+ } // extern "C"
+
+ namespace {
+@@ -24,32 +34,32 @@ namespace {
+ using base::allocator::AllocatorDispatch;
+
+ void* GlibcMalloc(const AllocatorDispatch*, size_t size, void* context) {
+- return __libc_malloc(size);
++ return __malloc(size);
+ }
+
+ void* GlibcCalloc(const AllocatorDispatch*,
+ size_t n,
+ size_t size,
+ void* context) {
+- return __libc_calloc(n, size);
++ return __calloc(n, size);
+ }
+
+ void* GlibcRealloc(const AllocatorDispatch*,
+ void* address,
+ size_t size,
+ void* context) {
+- return __libc_realloc(address, size);
++ return __realloc(address, size);
+ }
+
+ void* GlibcMemalign(const AllocatorDispatch*,
+ size_t alignment,
+ size_t size,
+ void* context) {
+- return __libc_memalign(alignment, size);
++ return __memalign(alignment, size);
+ }
+
+ void GlibcFree(const AllocatorDispatch*, void* address, void* context) {
+- __libc_free(address);
++ __free(address);
+ }
+
+ size_t GlibcGetSizeEstimate(const AllocatorDispatch*,
diff --git a/devel/electron6/files/patch-base_allocator_allocator__shim__override__libc__symbols.h b/devel/electron6/files/patch-base_allocator_allocator__shim__override__libc__symbols.h
new file mode 100644
index 000000000000..f82530fb8050
--- /dev/null
+++ b/devel/electron6/files/patch-base_allocator_allocator__shim__override__libc__symbols.h
@@ -0,0 +1,11 @@
+--- base/allocator/allocator_shim_override_libc_symbols.h.orig 2019-09-10 10:42:26 UTC
++++ base/allocator/allocator_shim_override_libc_symbols.h
+@@ -10,7 +10,7 @@
+ #endif
+ #define BASE_ALLOCATOR_ALLOCATOR_SHIM_OVERRIDE_LIBC_SYMBOLS_H_
+
+-#include <malloc.h>
++#include <stdlib.h>
+
+ #include "base/allocator/allocator_shim_internals.h"
+
diff --git a/devel/electron6/files/patch-base_allocator_allocator__shim__unittest.cc b/devel/electron6/files/patch-base_allocator_allocator__shim__unittest.cc
new file mode 100644
index 000000000000..f9259057a4ca
--- /dev/null
+++ b/devel/electron6/files/patch-base_allocator_allocator__shim__unittest.cc
@@ -0,0 +1,36 @@
+--- base/allocator/allocator_shim_unittest.cc.orig 2019-09-10 10:42:26 UTC
++++ base/allocator/allocator_shim_unittest.cc
+@@ -348,7 +348,7 @@ TEST_F(AllocatorShimTest, InterceptLibcSymbols) {
+ ASSERT_GE(aligned_allocs_intercepted_by_size[61], 1u);
+ #endif // !OS_WIN
+
+-#if !defined(OS_WIN) && !defined(OS_MACOSX)
++#if !defined(OS_WIN) && !defined(OS_MACOSX) && !defined(OS_BSD)
+ void* memalign_ptr = memalign(128, 53);
+ ASSERT_NE(nullptr, memalign_ptr);
+ ASSERT_EQ(0u, reinterpret_cast<uintptr_t>(memalign_ptr) % 128);
+@@ -361,7 +361,7 @@ TEST_F(AllocatorShimTest, InterceptLibcSymbols) {
+ ASSERT_GE(aligned_allocs_intercepted_by_alignment[kPageSize], 1u);
+ // pvalloc rounds the size up to the next page.
+ ASSERT_GE(aligned_allocs_intercepted_by_size[kPageSize], 1u);
+-#endif // !OS_WIN && !OS_MACOSX
++#endif // !OS_WIN && !OS_MACOSX && !OS_BSD
+
+ char* realloc_ptr = static_cast<char*>(malloc(10));
+ strcpy(realloc_ptr, "foobar");
+@@ -377,13 +377,13 @@ TEST_F(AllocatorShimTest, InterceptLibcSymbols) {
+ free(zero_alloc_ptr);
+ ASSERT_GE(frees_intercepted_by_addr[Hash(zero_alloc_ptr)], 1u);
+
+-#if !defined(OS_WIN) && !defined(OS_MACOSX)
++#if !defined(OS_WIN) && !defined(OS_MACOSX) && !defined(OS_BSD)
+ free(memalign_ptr);
+ ASSERT_GE(frees_intercepted_by_addr[Hash(memalign_ptr)], 1u);
+
+ free(pvalloc_ptr);
+ ASSERT_GE(frees_intercepted_by_addr[Hash(pvalloc_ptr)], 1u);
+-#endif // !OS_WIN && !OS_MACOSX
++#endif // !OS_WIN && !OS_MACOSX && !OS_BSD
+
+ #if !defined(OS_WIN)
+ free(posix_memalign_ptr);
diff --git a/devel/electron6/files/patch-base_allocator_partition__allocator_page__allocator__internals__posix.h b/devel/electron6/files/patch-base_allocator_partition__allocator_page__allocator__internals__posix.h
new file mode 100644
index 000000000000..bd3157dd56b5
--- /dev/null
+++ b/devel/electron6/files/patch-base_allocator_partition__allocator_page__allocator__internals__posix.h
@@ -0,0 +1,11 @@
+--- base/allocator/partition_allocator/page_allocator_internals_posix.h.orig 2019-09-10 11:13:31 UTC
++++ base/allocator/partition_allocator/page_allocator_internals_posix.h
+@@ -16,7 +16,7 @@
+
+ #include <mach/mach.h>
+ #endif
+-#if defined(OS_LINUX)
++#if defined(OS_BSD) || defined(OS_LINUX)
+ #include <sys/resource.h>
+
+ #include <algorithm>
diff --git a/devel/electron6/files/patch-base_base__switches.cc b/devel/electron6/files/patch-base_base__switches.cc
new file mode 100644
index 000000000000..e9e2538d3252
--- /dev/null
+++ b/devel/electron6/files/patch-base_base__switches.cc
@@ -0,0 +1,20 @@
+--- base/base_switches.cc.orig 2019-09-10 11:13:31 UTC
++++ base/base_switches.cc
+@@ -107,7 +107,7 @@ const char kProfilingFlush[] = "profiling-flush";
+ const char kDisableUsbKeyboardDetect[] = "disable-usb-keyboard-detect";
+ #endif
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ // The /dev/shm partition is too small in certain VM environments, causing
+ // Chrome to fail or crash (see http://crbug.com/715363). Use this flag to
+ // work-around this issue (a temporary directory will always be used to create
+@@ -128,7 +128,7 @@ const char kEnableCrashReporterForTesting[] =
+ const char kEnableReachedCodeProfiler[] = "enable-reached-code-profiler";
+ #endif
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Controls whether or not retired instruction counts are surfaced for threads
+ // in trace events on Linux.
+ //
diff --git a/devel/electron6/files/patch-base_base__switches.h b/devel/electron6/files/patch-base_base__switches.h
new file mode 100644
index 000000000000..783350718c07
--- /dev/null
+++ b/devel/electron6/files/patch-base_base__switches.h
@@ -0,0 +1,20 @@
+--- base/base_switches.h.orig 2019-09-10 11:13:31 UTC
++++ base/base_switches.h
+@@ -36,7 +36,7 @@ extern const char kWaitForDebugger[];
+ extern const char kDisableUsbKeyboardDetect[];
+ #endif
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ extern const char kDisableDevShmUsage[];
+ #endif
+
+@@ -49,7 +49,7 @@ extern const char kEnableReachedCodeProfiler[];
+ extern const char kOrderfileMemoryOptimization[];
+ #endif
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ extern const char kEnableThreadInstructionCount[];
+ #endif
+
diff --git a/devel/electron6/files/patch-base_cpu.cc b/devel/electron6/files/patch-base_cpu.cc
new file mode 100644
index 000000000000..9fcc9b111de7
--- /dev/null
+++ b/devel/electron6/files/patch-base_cpu.cc
@@ -0,0 +1,38 @@
+--- base/cpu.cc.orig 2019-09-10 11:13:31 UTC
++++ base/cpu.cc
+@@ -15,7 +15,7 @@
+ #include "base/stl_util.h"
+ #include "build/build_config.h"
+
+-#if defined(ARCH_CPU_ARM_FAMILY) && (defined(OS_ANDROID) || defined(OS_LINUX))
++#if defined(ARCH_CPU_ARM_FAMILY) && (defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_BSD))
+ #include "base/files/file_util.h"
+ #endif
+
+@@ -97,7 +97,7 @@ uint64_t xgetbv(uint32_t xcr) {
+
+ #endif // ARCH_CPU_X86_FAMILY
+
+-#if defined(ARCH_CPU_ARM_FAMILY) && (defined(OS_ANDROID) || defined(OS_LINUX))
++#if defined(ARCH_CPU_ARM_FAMILY) && (defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_BSD))
+ std::string* CpuInfoBrand() {
+ static std::string* brand = []() {
+ // This function finds the value from /proc/cpuinfo under the key "model
+@@ -127,7 +127,7 @@ std::string* CpuInfoBrand() {
+ return brand;
+ }
+ #endif // defined(ARCH_CPU_ARM_FAMILY) && (defined(OS_ANDROID) ||
+- // defined(OS_LINUX))
++ // defined(OS_LINUX) || defined(OS_BSD))
+
+ } // namespace
+
+@@ -252,7 +252,7 @@ void CPU::Initialize() {
+ }
+ }
+ #elif defined(ARCH_CPU_ARM_FAMILY)
+-#if (defined(OS_ANDROID) || defined(OS_LINUX))
++#if (defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_BSD))
+ cpu_brand_ = *CpuInfoBrand();
+ #elif defined(OS_WIN)
+ // Windows makes high-resolution thread timing information available in
diff --git a/devel/electron6/files/patch-base_debug_debugger__posix.cc b/devel/electron6/files/patch-base_debug_debugger__posix.cc
new file mode 100644
index 000000000000..1c7702c70ed6
--- /dev/null
+++ b/devel/electron6/files/patch-base_debug_debugger__posix.cc
@@ -0,0 +1,56 @@
+--- base/debug/debugger_posix.cc.orig 2019-09-10 11:13:31 UTC
++++ base/debug/debugger_posix.cc
+@@ -87,7 +87,7 @@ bool BeingDebugged() {
+ KERN_PROC,
+ KERN_PROC_PID,
+ getpid()
+-#if defined(OS_OPENBSD)
++#if defined(OS_BSD)
+ , sizeof(struct kinfo_proc),
+ 0
+ #endif
+@@ -95,33 +95,35 @@ bool BeingDebugged() {
+
+ // Caution: struct kinfo_proc is marked __APPLE_API_UNSTABLE. The source and
+ // binary interfaces may change.
+- struct kinfo_proc info;
+- size_t info_size = sizeof(info);
++ struct kinfo_proc *info;
++ size_t info_size;
+
+-#if defined(OS_OPENBSD)
+ if (sysctl(mib, base::size(mib), NULL, &info_size, NULL, 0) < 0)
+ return -1;
+
++ info = (struct kinfo_proc *)malloc(info_size);
+ mib[5] = (info_size / sizeof(struct kinfo_proc));
+-#endif
+
+- int sysctl_result = sysctl(mib, base::size(mib), &info, &info_size, NULL, 0);
++ int sysctl_result = sysctl(mib, base::size(mib), info, &info_size, NULL, 0);
+ DCHECK_EQ(sysctl_result, 0);
+ if (sysctl_result != 0) {
+ is_set = true;
+ being_debugged = false;
+- return being_debugged;
++ goto out;
+ }
+
+ // This process is being debugged if the P_TRACED flag is set.
+ is_set = true;
+ #if defined(OS_FREEBSD)
+- being_debugged = (info.ki_flag & P_TRACED) != 0;
++ being_debugged = (info->ki_flag & P_TRACED) != 0;
+ #elif defined(OS_BSD)
+- being_debugged = (info.p_flag & P_TRACED) != 0;
++ being_debugged = (info->p_flag & P_TRACED) != 0;
+ #else
+- being_debugged = (info.kp_proc.p_flag & P_TRACED) != 0;
++ being_debugged = (info->kp_proc.p_flag & P_TRACED) != 0;
+ #endif
++
++out:
++ free(info);
+ return being_debugged;
+ }
+
diff --git a/devel/electron6/files/patch-base_debug_elf__reader.cc b/devel/electron6/files/patch-base_debug_elf__reader.cc
new file mode 100644
index 000000000000..f9d6f2fa0a2e
--- /dev/null
+++ b/devel/electron6/files/patch-base_debug_elf__reader.cc
@@ -0,0 +1,18 @@
+--- base/debug/elf_reader.cc.orig 2019-09-10 10:42:27 UTC
++++ base/debug/elf_reader.cc
+@@ -83,6 +83,7 @@ size_t ReadElfBuildId(const void* elf_mapped_base,
+ reinterpret_cast<const Nhdr*>(elf_base + header.p_vaddr);
+ bool found = false;
+ while (current_note < section_end) {
++#if !defined(OS_BSD)
+ if (current_note->n_type == NT_GNU_BUILD_ID) {
+ const char* note_name =
+ reinterpret_cast<const char*>(current_note) + sizeof(Nhdr);
+@@ -92,6 +93,7 @@ size_t ReadElfBuildId(const void* elf_mapped_base,
+ break;
+ }
+ }
++#endif
+
+ current_note = reinterpret_cast<const Nhdr*>(
+ reinterpret_cast<const char*>(current_note) + sizeof(Nhdr) +
diff --git a/devel/electron6/files/patch-base_debug_proc__maps__linux.cc b/devel/electron6/files/patch-base_debug_proc__maps__linux.cc
new file mode 100644
index 000000000000..f00b430389aa
--- /dev/null
+++ b/devel/electron6/files/patch-base_debug_proc__maps__linux.cc
@@ -0,0 +1,11 @@
+--- base/debug/proc_maps_linux.cc.orig 2019-09-10 10:42:27 UTC
++++ base/debug/proc_maps_linux.cc
+@@ -12,7 +12,7 @@
+ #include "base/strings/string_split.h"
+ #include "build/build_config.h"
+
+-#if defined(OS_LINUX) || defined(OS_ANDROID)
++#if defined(OS_LINUX) || defined(OS_BSD) || defined(OS_ANDROID)
+ #include <inttypes.h>
+ #endif
+
diff --git a/devel/electron6/files/patch-base_debug_stack__trace.cc b/devel/electron6/files/patch-base_debug_stack__trace.cc
new file mode 100644
index 000000000000..dc573d9ddf69
--- /dev/null
+++ b/devel/electron6/files/patch-base_debug_stack__trace.cc
@@ -0,0 +1,11 @@
+--- base/debug/stack_trace.cc.orig 2019-09-10 10:42:27 UTC
++++ base/debug/stack_trace.cc
+@@ -14,7 +14,7 @@
+
+ #if BUILDFLAG(CAN_UNWIND_WITH_FRAME_POINTERS)
+
+-#if defined(OS_LINUX) || defined(OS_ANDROID)
++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
+ #include <pthread.h>
+ #include "base/process/process_handle.h"
+ #include "base/threading/platform_thread.h"
diff --git a/devel/electron6/files/patch-base_debug_stack__trace.h b/devel/electron6/files/patch-base_debug_stack__trace.h
new file mode 100644
index 000000000000..b29a41e77e09
--- /dev/null
+++ b/devel/electron6/files/patch-base_debug_stack__trace.h
@@ -0,0 +1,10 @@
+--- base/debug/stack_trace.h.orig 2019-09-10 11:13:31 UTC
++++ base/debug/stack_trace.h
+@@ -16,6 +16,7 @@
+ #include "build/build_config.h"
+
+ #if defined(OS_POSIX)
++#include <sys/stdint.h>
+ #include <unistd.h>
+ #endif
+
diff --git a/devel/electron6/files/patch-base_debug_stack__trace__posix.cc b/devel/electron6/files/patch-base_debug_stack__trace__posix.cc
new file mode 100644
index 000000000000..1e89ec696670
--- /dev/null
+++ b/devel/electron6/files/patch-base_debug_stack__trace__posix.cc
@@ -0,0 +1,31 @@
+--- base/debug/stack_trace_posix.cc.orig 2019-09-10 11:13:31 UTC
++++ base/debug/stack_trace_posix.cc
+@@ -35,7 +35,7 @@
+ #include <AvailabilityMacros.h>
+ #endif
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include "base/debug/proc_maps_linux.h"
+ #endif
+
+@@ -653,6 +653,11 @@ class SandboxSymbolizeHelper {
+ // for the modules that are loaded in the current process.
+ // Returns true on success.
+ bool CacheMemoryRegions() {
++#if defined(OS_BSD)
++ // TODO (rene) avoid link error, implement something?
++ NOTIMPLEMENTED();
++ return false;
++#else
+ // Reads /proc/self/maps.
+ std::string contents;
+ if (!ReadProcMaps(&contents)) {
+@@ -670,6 +675,7 @@ class SandboxSymbolizeHelper {
+
+ is_initialized_ = true;
+ return true;
++#endif
+ }
+
+ // Opens all object files and caches their file descriptors.
diff --git a/devel/electron6/files/patch-base_files_file__path__unittest.cc b/devel/electron6/files/patch-base_files_file__path__unittest.cc
new file mode 100644
index 000000000000..4f2fb9153233
--- /dev/null
+++ b/devel/electron6/files/patch-base_files_file__path__unittest.cc
@@ -0,0 +1,11 @@
+--- base/files/file_path_unittest.cc.orig 2019-09-10 11:13:31 UTC
++++ base/files/file_path_unittest.cc
+@@ -1139,7 +1139,7 @@ TEST_F(FilePathTest, FromUTF8Unsafe_And_AsUTF8Unsafe)
+ "\xEF\xBC\xA1\xEF\xBC\xA2\xEF\xBC\xA3.txt" },
+ };
+
+-#if !defined(SYSTEM_NATIVE_UTF8) && defined(OS_LINUX)
++#if !defined(SYSTEM_NATIVE_UTF8) && (defined(OS_LINUX) || defined(OS_BSD))
+ ScopedLocale locale("en_US.UTF-8");
+ #endif
+
diff --git a/devel/electron6/files/patch-base_files_file__path__watcher.cc b/devel/electron6/files/patch-base_files_file__path__watcher.cc
new file mode 100644
index 000000000000..0887616e47da
--- /dev/null
+++ b/devel/electron6/files/patch-base_files_file__path__watcher.cc
@@ -0,0 +1,11 @@
+--- base/files/file_path_watcher.cc.orig 2019-09-10 10:42:27 UTC
++++ base/files/file_path_watcher.cc
+@@ -20,7 +20,7 @@ FilePathWatcher::~FilePathWatcher() {
+ // static
+ bool FilePathWatcher::RecursiveWatchAvailable() {
+ #if (defined(OS_MACOSX) && !defined(OS_IOS)) || defined(OS_WIN) || \
+- defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_AIX)
++ defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_AIX) || defined(OS_BSD)
+ return true;
+ #else
+ // FSEvents isn't available on iOS.
diff --git a/devel/electron6/files/patch-base_files_file__path__watcher__kqueue.h b/devel/electron6/files/patch-base_files_file__path__watcher__kqueue.h
new file mode 100644
index 000000000000..70c1d4a9870c
--- /dev/null
+++ b/devel/electron6/files/patch-base_files_file__path__watcher__kqueue.h
@@ -0,0 +1,13 @@
+--- base/files/file_path_watcher_kqueue.h.orig 2019-09-10 10:42:27 UTC
++++ base/files/file_path_watcher_kqueue.h
+@@ -5,6 +5,10 @@
+ #ifndef BASE_FILES_FILE_PATH_WATCHER_KQUEUE_H_
+ #define BASE_FILES_FILE_PATH_WATCHER_KQUEUE_H_
+
++#ifdef __FreeBSD__
++#include <sys/stdint.h>
++#include <sys/types.h>
++#endif
+ #include <sys/event.h>
+
+ #include <memory>
diff --git a/devel/electron6/files/patch-base_files_file__path__watcher__stub.cc b/devel/electron6/files/patch-base_files_file__path__watcher__stub.cc
new file mode 100644
index 000000000000..22b0a9df5193
--- /dev/null
+++ b/devel/electron6/files/patch-base_files_file__path__watcher__stub.cc
@@ -0,0 +1,51 @@
+--- base/files/file_path_watcher_stub.cc.orig 2019-09-10 10:42:27 UTC
++++ base/files/file_path_watcher_stub.cc
+@@ -1,14 +1,15 @@
+-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
++// Copyright 2014 The Chromium Authors. All rights reserved.
+ // Use of this source code is governed by a BSD-style license that can be
+ // found in the LICENSE file.
+
+-// This file exists for Unix systems which don't have the inotify headers, and
+-// thus cannot build file_watcher_inotify.cc
+
+-#include "base/files/file_path_watcher.h"
++#include <memory>
+
++#include "base/files/file_path_watcher.h"
++#include "base/files/file_path_watcher_kqueue.h"
+ #include "base/macros.h"
+ #include "base/memory/ptr_util.h"
++#include "build/build_config.h"
+
+ namespace base {
+
+@@ -22,12 +23,26 @@ class FilePathWatcherImpl : public FilePathWatcher::Pl
+ bool Watch(const FilePath& path,
+ bool recursive,
+ const FilePathWatcher::Callback& callback) override {
+- return false;
++ DCHECK(!impl_.get());
++ if (recursive) {
++ if (!FilePathWatcher::RecursiveWatchAvailable())
++ return false;
++ } else {
++ impl_ = std::make_unique<FilePathWatcherKQueue>();
++ }
++ DCHECK(impl_.get());
++ return impl_->Watch(path, recursive, callback);
+ }
+
+- void Cancel() override {}
++ void Cancel() override {
++ if (impl_.get())
++ impl_->Cancel();
++ set_cancelled();
++ }
+
+ private:
++ std::unique_ptr<PlatformDelegate> impl_;
++
+ DISALLOW_COPY_AND_ASSIGN(FilePathWatcherImpl);
+ };
+
diff --git a/devel/electron6/files/patch-base_files_file__path__watcher__unittest.cc b/devel/electron6/files/patch-base_files_file__path__watcher__unittest.cc
new file mode 100644
index 000000000000..1f43ef0299b4
--- /dev/null
+++ b/devel/electron6/files/patch-base_files_file__path__watcher__unittest.cc
@@ -0,0 +1,11 @@
+--- base/files/file_path_watcher_unittest.cc.orig 2019-09-10 11:13:31 UTC
++++ base/files/file_path_watcher_unittest.cc
+@@ -436,7 +436,7 @@ TEST_F(FilePathWatcherTest, WatchDirectory) {
+ VLOG(1) << "Waiting for file1 creation";
+ ASSERT_TRUE(WaitForEvents());
+
+-#if !defined(OS_MACOSX)
++#if !defined(OS_MACOSX) && !defined(OS_BSD)
+ // Mac implementation does not detect files modified in a directory.
+ ASSERT_TRUE(WriteFile(file1, "content v2"));
+ VLOG(1) << "Waiting for file1 modification";
diff --git a/devel/electron6/files/patch-base_files_file__util.h b/devel/electron6/files/patch-base_files_file__util.h
new file mode 100644
index 000000000000..4f3b9d590a3d
--- /dev/null
+++ b/devel/electron6/files/patch-base_files_file__util.h
@@ -0,0 +1,11 @@
+--- base/files/file_util.h.orig 2019-09-10 11:13:31 UTC
++++ base/files/file_util.h
+@@ -476,7 +476,7 @@ BASE_EXPORT bool VerifyPathControlledByAdmin(const bas
+ // the directory |path|, in the number of FilePath::CharType, or -1 on failure.
+ BASE_EXPORT int GetMaximumPathComponentLength(const base::FilePath& path);
+
+-#if defined(OS_LINUX) || defined(OS_AIX)
++#if defined(OS_LINUX) || defined(OS_AIX) || defined(OS_BSD)
+ // Broad categories of file systems as returned by statfs() on Linux.
+ enum FileSystemType {
+ FILE_SYSTEM_UNKNOWN, // statfs failed.
diff --git a/devel/electron6/files/patch-base_files_file__util__posix.cc b/devel/electron6/files/patch-base_files_file__util__posix.cc
new file mode 100644
index 000000000000..0280c0e5cc65
--- /dev/null
+++ b/devel/electron6/files/patch-base_files_file__util__posix.cc
@@ -0,0 +1,11 @@
+--- base/files/file_util_posix.cc.orig 2019-09-10 11:13:31 UTC
++++ base/files/file_util_posix.cc
+@@ -419,7 +419,7 @@ bool CreatePipe(ScopedFD* read_fd, ScopedFD* write_fd,
+ }
+
+ bool CreateLocalNonBlockingPipe(int fds[2]) {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ return pipe2(fds, O_CLOEXEC | O_NONBLOCK) == 0;
+ #else
+ int raw_fds[2];
diff --git a/devel/electron6/files/patch-base_files_scoped__file.cc b/devel/electron6/files/patch-base_files_scoped__file.cc
new file mode 100644
index 000000000000..7ddee9104d01
--- /dev/null
+++ b/devel/electron6/files/patch-base_files_scoped__file.cc
@@ -0,0 +1,11 @@
+--- base/files/scoped_file.cc.orig 2019-09-10 10:42:27 UTC
++++ base/files/scoped_file.cc
+@@ -30,7 +30,7 @@ void ScopedFDCloseTraits::Free(int fd) {
+ // a single open directory would bypass the entire security model.
+ int ret = IGNORE_EINTR(close(fd));
+
+-#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_FUCHSIA) || \
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_FUCHSIA) || defined(OS_BSD) || \
+ defined(OS_ANDROID)
+ // NB: Some file descriptors can return errors from close() e.g. network
+ // filesystems such as NFS and Linux input devices. On Linux, macOS, and
diff --git a/devel/electron6/files/patch-base_i18n_icu__util.cc b/devel/electron6/files/patch-base_i18n_icu__util.cc
new file mode 100644
index 000000000000..a5209430a706
--- /dev/null
+++ b/devel/electron6/files/patch-base_i18n_icu__util.cc
@@ -0,0 +1,20 @@
+--- base/i18n/icu_util.cc.orig 2019-09-10 10:42:27 UTC
++++ base/i18n/icu_util.cc
+@@ -20,7 +20,7 @@
+ #include "build/build_config.h"
+ #include "third_party/icu/source/common/unicode/putil.h"
+ #include "third_party/icu/source/common/unicode/udata.h"
+-#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_ANDROID)
++#if (defined(OS_LINUX) || defined(OS_BSD) && !defined(OS_CHROMEOS)) || defined(OS_ANDROID)
+ #include "third_party/icu/source/i18n/unicode/timezone.h"
+ #endif
+
+@@ -285,7 +285,7 @@ bool InitializeICU() {
+ // TODO(jungshik): Some callers do not care about tz at all. If necessary,
+ // add a boolean argument to this function to init'd the default tz only
+ // when requested.
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ if (result)
+ std::unique_ptr<icu::TimeZone> zone(icu::TimeZone::createDefault());
+ #endif
diff --git a/devel/electron6/files/patch-base_linux__util.cc b/devel/electron6/files/patch-base_linux__util.cc
new file mode 100644
index 000000000000..5440aa6dd760
--- /dev/null
+++ b/devel/electron6/files/patch-base_linux__util.cc
@@ -0,0 +1,18 @@
+--- base/linux_util.cc.orig 2019-09-10 10:42:27 UTC
++++ base/linux_util.cc
+@@ -90,12 +90,14 @@ char g_linux_distro[kDistroSize] =
+ "CrOS";
+ #elif defined(OS_ANDROID)
+ "Android";
++#elif defined(OS_BSD)
++ "BSD";
+ #else // if defined(OS_LINUX)
+ "Unknown";
+ #endif
+
+ std::string GetLinuxDistro() {
+-#if defined(OS_CHROMEOS) || defined(OS_ANDROID)
++#if defined(OS_CHROMEOS) || defined(OS_ANDROID) || defined(OS_BSD)
+ return g_linux_distro;
+ #elif defined(OS_LINUX)
+ LinuxDistroHelper* distro_state_singleton = LinuxDistroHelper::GetInstance();
diff --git a/devel/electron6/files/patch-base_logging__unittest.cc b/devel/electron6/files/patch-base_logging__unittest.cc
new file mode 100644
index 000000000000..220ec7e65bad
--- /dev/null
+++ b/devel/electron6/files/patch-base_logging__unittest.cc
@@ -0,0 +1,11 @@
+--- base/logging_unittest.cc.orig 2019-09-10 11:13:31 UTC
++++ base/logging_unittest.cc
+@@ -444,7 +444,7 @@ void CheckCrashTestSighandler(int, siginfo_t* info, vo
+ // need the arch-specific boilerplate below, which is inspired by breakpad.
+ // At the same time, on OSX, ucontext.h is deprecated but si_addr works fine.
+ uintptr_t crash_addr = 0;
+-#if defined(OS_MACOSX)
++#if defined(OS_MACOSX) || defined(OS_BSD)
+ crash_addr = reinterpret_cast<uintptr_t>(info->si_addr);
+ #else // OS_POSIX && !OS_MACOSX
+ ucontext_t* context = reinterpret_cast<ucontext_t*>(context_ptr);
diff --git a/devel/electron6/files/patch-base_memory_protected__memory__posix.cc b/devel/electron6/files/patch-base_memory_protected__memory__posix.cc
new file mode 100644
index 000000000000..af81d832c693
--- /dev/null
+++ b/devel/electron6/files/patch-base_memory_protected__memory__posix.cc
@@ -0,0 +1,31 @@
+--- base/memory/protected_memory_posix.cc.orig 2019-09-10 10:42:27 UTC
++++ base/memory/protected_memory_posix.cc
+@@ -8,9 +8,9 @@
+ #include <sys/mman.h>
+ #include <unistd.h>
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include <sys/resource.h>
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+
+ #if defined(OS_MACOSX) && !defined(OS_IOS)
+ #include <mach/mach.h>
+@@ -44,7 +44,7 @@ bool AutoWritableMemory::SetMemoryReadOnly(void* start
+ return SetMemory(start, end, PROT_READ);
+ }
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ void AssertMemoryIsReadOnly(const void* ptr) {
+ #if DCHECK_IS_ON()
+ const uintptr_t page_mask = ~(base::GetPageSize() - 1);
+@@ -74,6 +74,6 @@ void AssertMemoryIsReadOnly(const void* ptr) {
+ DCHECK_EQ(region_info.protection, VM_PROT_READ);
+ #endif // DCHECK_IS_ON()
+ }
+-#endif // defined(OS_LINUX) || (defined(OS_MACOSX) && !defined(OS_IOS))
++#endif // defined(OS_LINUX) || (defined(OS_MACOSX) && !defined(OS_IOS)) || defined(OS_BSD)
+
+ } // namespace base
diff --git a/devel/electron6/files/patch-base_native__library__posix.cc b/devel/electron6/files/patch-base_native__library__posix.cc
new file mode 100644
index 000000000000..7c0440464d56
--- /dev/null
+++ b/devel/electron6/files/patch-base_native__library__posix.cc
@@ -0,0 +1,11 @@
+--- base/native_library_posix.cc.orig 2019-09-10 10:42:27 UTC
++++ base/native_library_posix.cc
+@@ -29,7 +29,7 @@ NativeLibrary LoadNativeLibraryWithOptions(const FileP
+ // http://crbug.com/17943, http://crbug.com/17557, http://crbug.com/36892,
+ // and http://crbug.com/40794.
+ int flags = RTLD_LAZY;
+-#if defined(OS_ANDROID) || !defined(RTLD_DEEPBIND)
++#if defined(OS_ANDROID) || !defined(RTLD_DEEPBIND) || defined(OS_BSD)
+ // Certain platforms don't define RTLD_DEEPBIND. Android dlopen() requires
+ // further investigation, as it might vary across versions. Crash here to
+ // warn developers that they're trying to rely on uncertain behavior.
diff --git a/devel/electron6/files/patch-base_native__library__unittest.cc b/devel/electron6/files/patch-base_native__library__unittest.cc
new file mode 100644
index 000000000000..6d808ba54fc8
--- /dev/null
+++ b/devel/electron6/files/patch-base_native__library__unittest.cc
@@ -0,0 +1,11 @@
+--- base/native_library_unittest.cc.orig 2019-09-10 10:42:27 UTC
++++ base/native_library_unittest.cc
+@@ -120,7 +120,7 @@ TEST(NativeLibraryTest, LoadLibrary) {
+ // Android dlopen() requires further investigation, as it might vary across
+ // versions with respect to symbol resolution scope.
+ // TSan and MSan error out on RTLD_DEEPBIND, https://crbug.com/705255
+-#if !defined(OS_ANDROID) && !defined(THREAD_SANITIZER) && \
++#if !defined(OS_ANDROID) && !defined(OS_BSD) && !defined(THREAD_SANITIZER) && \
+ !defined(MEMORY_SANITIZER)
+
+ // Verifies that the |prefer_own_symbols| option satisfies its guarantee that
diff --git a/devel/electron6/files/patch-base_numerics_safe__math__shared__impl.h b/devel/electron6/files/patch-base_numerics_safe__math__shared__impl.h
new file mode 100644
index 000000000000..c18190d0ead6
--- /dev/null
+++ b/devel/electron6/files/patch-base_numerics_safe__math__shared__impl.h
@@ -0,0 +1,13 @@
+--- base/numerics/safe_math_shared_impl.h.orig 2019-09-10 11:13:31 UTC
++++ base/numerics/safe_math_shared_impl.h
+@@ -19,9 +19,7 @@
+
+ // Where available use builtin math overflow support on Clang and GCC.
+ #if !defined(__native_client__) && \
+- ((defined(__clang__) && \
+- ((__clang_major__ > 3) || \
+- (__clang_major__ == 3 && __clang_minor__ >= 4))) || \
++ ((defined(__clang__) && (__clang_major__ > 6)) || \
+ (defined(__GNUC__) && __GNUC__ >= 5))
+ #include "base/numerics/safe_math_clang_gcc_impl.h"
+ #define BASE_HAS_OPTIMIZED_SAFE_MATH (1)
diff --git a/devel/electron6/files/patch-base_posix_can__lower__nice__to.cc b/devel/electron6/files/patch-base_posix_can__lower__nice__to.cc
new file mode 100644
index 000000000000..37ccec83ab7d
--- /dev/null
+++ b/devel/electron6/files/patch-base_posix_can__lower__nice__to.cc
@@ -0,0 +1,20 @@
+--- base/posix/can_lower_nice_to.cc.orig 2019-09-10 10:42:27 UTC
++++ base/posix/can_lower_nice_to.cc
+@@ -31,6 +31,9 @@ bool CanLowerNiceTo(int nice_value) {
+ if (geteuid() == 0)
+ return true;
+
++#if defined(OS_BSD)
++ return false;
++#else
+ // 2. Skip checking the CAP_SYS_NICE permission because it would require
+ // libcap.so.
+
+@@ -54,6 +57,7 @@ bool CanLowerNiceTo(int nice_value) {
+ // And lowering niceness to |nice_value| is allowed if it is greater than or
+ // equal to the limit:
+ return nice_value >= lowest_nice_allowed;
++#endif
+ }
+
+ } // namespace internal
diff --git a/devel/electron6/files/patch-base_posix_unix__domain__socket.cc b/devel/electron6/files/patch-base_posix_unix__domain__socket.cc
new file mode 100644
index 000000000000..a4691b9effe2
--- /dev/null
+++ b/devel/electron6/files/patch-base_posix_unix__domain__socket.cc
@@ -0,0 +1,49 @@
+--- base/posix/unix_domain_socket.cc.orig 2019-09-10 10:42:27 UTC
++++ base/posix/unix_domain_socket.cc
+@@ -5,7 +5,10 @@
+ #include "base/posix/unix_domain_socket.h"
+
+ #include <errno.h>
++#include <sys/param.h>
+ #include <sys/socket.h>
++#include <sys/types.h>
++#include <sys/ucred.h>
+ #if !defined(OS_NACL_NONSFI)
+ #include <sys/un.h>
+ #endif
+@@ -28,6 +31,14 @@ namespace base {
+
+ const size_t UnixDomainSocket::kMaxFileDescriptors = 16;
+
++#ifndef SCM_CREDENTIALS
++# define SCM_CREDENTIALS 0x9001
++#endif
++
++#ifndef SO_PASSCRED
++# define SO_PASSCRED 0x9002
++#endif
++
+ #if !defined(OS_NACL_NONSFI)
+ bool CreateSocketPair(ScopedFD* one, ScopedFD* two) {
+ int raw_socks[2];
+@@ -150,7 +161,7 @@ ssize_t UnixDomainSocket::RecvMsgWithFlags(int fd,
+ #if !defined(OS_NACL_NONSFI) && !defined(OS_MACOSX)
+ // The PNaCl toolchain for Non-SFI binary build and macOS do not support
+ // ucred. macOS supports xucred, but this structure is insufficient.
+- + CMSG_SPACE(sizeof(struct ucred))
++ + CMSG_SPACE(sizeof(struct cmsgcred))
+ #endif // OS_NACL_NONSFI or OS_MACOSX
+ ;
+ char control_buffer[kControlBufferSize];
+@@ -180,9 +191,9 @@ ssize_t UnixDomainSocket::RecvMsgWithFlags(int fd,
+ // SCM_CREDENTIALS.
+ if (cmsg->cmsg_level == SOL_SOCKET &&
+ cmsg->cmsg_type == SCM_CREDENTIALS) {
+- DCHECK_EQ(payload_len, sizeof(struct ucred));
++ DCHECK_EQ(payload_len, sizeof(struct cmsgcred));
+ DCHECK_EQ(pid, -1);
+- pid = reinterpret_cast<struct ucred*>(CMSG_DATA(cmsg))->pid;
++ pid = getpid();
+ }
+ #endif // !defined(OS_NACL_NONSFI) && !defined(OS_MACOSX)
+ }
diff --git a/devel/electron6/files/patch-base_posix_unix__domain__socket__unittest.cc b/devel/electron6/files/patch-base_posix_unix__domain__socket__unittest.cc
new file mode 100644
index 000000000000..7e4d9d7bf2d2
--- /dev/null
+++ b/devel/electron6/files/patch-base_posix_unix__domain__socket__unittest.cc
@@ -0,0 +1,12 @@
+--- base/posix/unix_domain_socket_unittest.cc.orig 2019-09-10 10:42:27 UTC
++++ base/posix/unix_domain_socket_unittest.cc
+@@ -8,6 +8,9 @@
+ #include <stdint.h>
+ #include <sys/socket.h>
+ #include <sys/types.h>
++#if defined(OS_BSD)
++#include <signal.h>
++#endif
+ #include <unistd.h>
+
+ #include "base/bind.h"
diff --git a/devel/electron6/files/patch-base_process_internal__linux.cc b/devel/electron6/files/patch-base_process_internal__linux.cc
new file mode 100644
index 000000000000..c5d97bd968f5
--- /dev/null
+++ b/devel/electron6/files/patch-base_process_internal__linux.cc
@@ -0,0 +1,16 @@
+--- base/process/internal_linux.cc.orig 2019-09-10 10:42:27 UTC
++++ base/process/internal_linux.cc
+@@ -60,10 +60,13 @@ bool ReadProcFile(const FilePath& file, std::string* b
+ // Synchronously reading files in /proc is safe.
+ ThreadRestrictions::ScopedAllowIO allow_io;
+
++#if !defined(OS_BSD)
+ if (!ReadFileToString(file, buffer)) {
+ DLOG(WARNING) << "Failed to read " << file.MaybeAsASCII();
+ return false;
+ }
++#endif
++
+ return !buffer->empty();
+ }
+
diff --git a/devel/electron6/files/patch-base_process_internal__linux.h b/devel/electron6/files/patch-base_process_internal__linux.h
new file mode 100644
index 000000000000..6d7b3291ce21
--- /dev/null
+++ b/devel/electron6/files/patch-base_process_internal__linux.h
@@ -0,0 +1,11 @@
+--- base/process/internal_linux.h.orig 2019-09-10 10:42:27 UTC
++++ base/process/internal_linux.h
+@@ -14,6 +14,8 @@
+
+ #include "base/files/file_path.h"
+
++#include <unistd.h> /* pid_t */
++
+ namespace base {
+
+ class Time;
diff --git a/devel/electron6/files/patch-base_process_kill.h b/devel/electron6/files/patch-base_process_kill.h
new file mode 100644
index 000000000000..3033cb958c26
--- /dev/null
+++ b/devel/electron6/files/patch-base_process_kill.h
@@ -0,0 +1,16 @@
+--- base/process/kill.h.orig 2019-09-10 10:42:27 UTC
++++ base/process/kill.h
+@@ -111,11 +111,11 @@ BASE_EXPORT TerminationStatus GetTerminationStatus(Pro
+ BASE_EXPORT TerminationStatus GetKnownDeadTerminationStatus(
+ ProcessHandle handle, int* exit_code);
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Spawns a thread to wait asynchronously for the child |process| to exit
+ // and then reaps it.
+ BASE_EXPORT void EnsureProcessGetsReaped(Process process);
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+ #endif // defined(OS_POSIX)
+
+ // Registers |process| to be asynchronously monitored for termination, forcibly
diff --git a/devel/electron6/files/patch-base_process_kill__posix.cc b/devel/electron6/files/patch-base_process_kill__posix.cc
new file mode 100644
index 000000000000..4a2b6a0300f4
--- /dev/null
+++ b/devel/electron6/files/patch-base_process_kill__posix.cc
@@ -0,0 +1,20 @@
+--- base/process/kill_posix.cc.orig 2019-09-10 10:42:27 UTC
++++ base/process/kill_posix.cc
+@@ -168,7 +168,7 @@ void EnsureProcessTerminated(Process process) {
+ 0, new BackgroundReaper(std::move(process), TimeDelta::FromSeconds(2)));
+ }
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ void EnsureProcessGetsReaped(Process process) {
+ DCHECK(!process.is_current());
+
+@@ -179,7 +179,7 @@ void EnsureProcessGetsReaped(Process process) {
+ PlatformThread::CreateNonJoinable(
+ 0, new BackgroundReaper(std::move(process), TimeDelta()));
+ }
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+
+ #endif // !defined(OS_MACOSX)
+ #endif // !defined(OS_NACL_NONSFI)
diff --git a/devel/electron6/files/patch-base_process_launch.cc b/devel/electron6/files/patch-base_process_launch.cc
new file mode 100644
index 000000000000..5963a42c8a32
--- /dev/null
+++ b/devel/electron6/files/patch-base_process_launch.cc
@@ -0,0 +1,11 @@
+--- base/process/launch.cc.orig 2019-09-10 10:42:27 UTC
++++ base/process/launch.cc
+@@ -15,7 +15,7 @@ LaunchOptions::~LaunchOptions() = default;
+
+ LaunchOptions LaunchOptionsForTest() {
+ LaunchOptions options;
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // To prevent accidental privilege sharing to an untrusted child, processes
+ // are started with PR_SET_NO_NEW_PRIVS. Do not set that here, since this
+ // new child will be used for testing only.
diff --git a/devel/electron6/files/patch-base_process_launch.h b/devel/electron6/files/patch-base_process_launch.h
new file mode 100644
index 000000000000..471f975026dc
--- /dev/null
+++ b/devel/electron6/files/patch-base_process_launch.h
@@ -0,0 +1,20 @@
+--- base/process/launch.h.orig 2019-09-10 11:13:31 UTC
++++ base/process/launch.h
+@@ -181,7 +181,7 @@ struct BASE_EXPORT LaunchOptions {
+ bool clear_environment = false;
+ #endif // OS_WIN || OS_POSIX || OS_FUCHSIA
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // If non-zero, start the process using clone(), using flags as provided.
+ // Unlike in clone, clone_flags may not contain a custom termination signal
+ // that is sent to the parent when the child dies. The termination signal will
+@@ -194,7 +194,7 @@ struct BASE_EXPORT LaunchOptions {
+
+ // Sets parent process death signal to SIGKILL.
+ bool kill_on_parent_death = false;
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+
+ #if defined(OS_MACOSX) && !defined(OS_IOS)
+ // Mach ports that will be accessible to the child process. These are not
diff --git a/devel/electron6/files/patch-base_process_launch__posix.cc b/devel/electron6/files/patch-base_process_launch__posix.cc
new file mode 100644
index 000000000000..9c0f57699832
--- /dev/null
+++ b/devel/electron6/files/patch-base_process_launch__posix.cc
@@ -0,0 +1,10 @@
+--- base/process/launch_posix.cc.orig 2019-09-10 10:42:27 UTC
++++ base/process/launch_posix.cc
+@@ -65,6 +65,7 @@
+ #error "macOS should use launch_mac.cc"
+ #endif
+
++#pragma weak environ
+ extern char** environ;
+
+ namespace base {
diff --git a/devel/electron6/files/patch-base_process_memory.cc b/devel/electron6/files/patch-base_process_memory.cc
new file mode 100644
index 000000000000..4fbfd71d9399
--- /dev/null
+++ b/devel/electron6/files/patch-base_process_memory.cc
@@ -0,0 +1,20 @@
+--- base/process/memory.cc.orig 2019-09-10 10:42:27 UTC
++++ base/process/memory.cc
+@@ -10,7 +10,7 @@
+ namespace base {
+
+ // Defined in memory_win.cc for Windows.
+-#if !defined(OS_WIN)
++#if !defined(OS_WIN) && !defined(OS_BSD)
+
+ namespace {
+
+@@ -31,7 +31,7 @@ void TerminateBecauseOutOfMemory(size_t size) {
+ #endif
+
+ // Defined in memory_mac.mm for Mac.
+-#if !defined(OS_MACOSX)
++#if !defined(OS_MACOSX) && !defined(OS_BSD)
+
+ bool UncheckedCalloc(size_t num_items, size_t size, void** result) {
+ const size_t alloc_size = num_items * size;
diff --git a/devel/electron6/files/patch-base_process_memory.h b/devel/electron6/files/patch-base_process_memory.h
new file mode 100644
index 000000000000..e6f1024d76ce
--- /dev/null
+++ b/devel/electron6/files/patch-base_process_memory.h
@@ -0,0 +1,11 @@
+--- base/process/memory.h.orig 2019-09-10 11:13:31 UTC
++++ base/process/memory.h
+@@ -32,7 +32,7 @@ BASE_EXPORT void EnableTerminationOnOutOfMemory();
+ // Crash reporting classifies such crashes as OOM.
+ BASE_EXPORT void TerminateBecauseOutOfMemory(size_t size);
+
+-#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_AIX)
++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_AIX) || defined(OS_BSD)
+ BASE_EXPORT extern size_t g_oom_size;
+
+ // The maximum allowed value for the OOM score.
diff --git a/devel/electron6/files/patch-base_process_memory__unittest.cc b/devel/electron6/files/patch-base_process_memory__unittest.cc
new file mode 100644
index 000000000000..4ef793aa5df3
--- /dev/null
+++ b/devel/electron6/files/patch-base_process_memory__unittest.cc
@@ -0,0 +1,18 @@
+--- base/process/memory_unittest.cc.orig 2019-09-10 11:13:31 UTC
++++ base/process/memory_unittest.cc
+@@ -104,7 +104,7 @@ TEST(MemoryTest, AllocatorShimWorking) {
+ // OpenBSD does not support these tests. Don't test these on ASan/TSan/MSan
+ // configurations: only test the real allocator.
+ // Windows only supports these tests with the allocator shim in place.
+-#if !defined(OS_OPENBSD) && BUILDFLAG(USE_ALLOCATOR_SHIM) && \
++#if !defined(OS_BSD) && BUILDFLAG(USE_ALLOCATOR_SHIM) && \
+ !defined(MEMORY_TOOL_REPLACES_ALLOCATOR)
+
+ namespace {
+@@ -529,5 +529,5 @@ TEST_F(OutOfMemoryHandledTest, UncheckedCalloc) {
+ EXPECT_FALSE(base::UncheckedCalloc(1, test_size_, &value_));
+ EXPECT_TRUE(value_ == nullptr);
+ }
+-#endif // !defined(OS_OPENBSD) && BUILDFLAG(ENABLE_WIN_ALLOCATOR_SHIM_TESTS) &&
++#endif // !defined(OS_BSD) && BUILDFLAG(ENABLE_WIN_ALLOCATOR_SHIM_TESTS) &&
+ // !defined(MEMORY_TOOL_REPLACES_ALLOCATOR)
diff --git a/devel/electron6/files/patch-base_process_process__handle.cc b/devel/electron6/files/patch-base_process_process__handle.cc
new file mode 100644
index 000000000000..b7acb7b0249a
--- /dev/null
+++ b/devel/electron6/files/patch-base_process_process__handle.cc
@@ -0,0 +1,11 @@
+--- base/process/process_handle.cc.orig 2019-09-10 11:13:31 UTC
++++ base/process/process_handle.cc
+@@ -39,7 +39,7 @@ uint32_t GetUniqueIdForProcess() {
+ return g_unique_id;
+ }
+
+-#if defined(OS_LINUX) || defined(OS_AIX)
++#if defined(OS_LINUX) || defined(OS_AIX) || defined(OS_BSD)
+
+ void InitUniqueIdForProcessInPidNamespace(ProcessId pid_outside_of_namespace) {
+ g_unique_id = MangleProcessId(pid_outside_of_namespace);
diff --git a/devel/electron6/files/patch-base_process_process__handle.h b/devel/electron6/files/patch-base_process_process__handle.h
new file mode 100644
index 000000000000..0d966d2e7997
--- /dev/null
+++ b/devel/electron6/files/patch-base_process_process__handle.h
@@ -0,0 +1,11 @@
+--- base/process/process_handle.h.orig 2019-09-10 11:13:31 UTC
++++ base/process/process_handle.h
+@@ -64,7 +64,7 @@ BASE_EXPORT ProcessId GetCurrentProcId();
+ // a process's PID.
+ BASE_EXPORT uint32_t GetUniqueIdForProcess();
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // When a process is started in a different PID namespace from the browser
+ // process, this function must be called with the process's PID in the browser's
+ // PID namespace in order to initialize its unique ID. Not thread safe.
diff --git a/devel/electron6/files/patch-base_process_process__handle__freebsd.cc b/devel/electron6/files/patch-base_process_process__handle__freebsd.cc
new file mode 100644
index 000000000000..34da38ffcf3c
--- /dev/null
+++ b/devel/electron6/files/patch-base_process_process__handle__freebsd.cc
@@ -0,0 +1,17 @@
+--- base/process/process_handle_freebsd.cc.orig 2019-09-10 10:42:27 UTC
++++ base/process/process_handle_freebsd.cc
+@@ -16,10 +16,13 @@ namespace base {
+
+ ProcessId GetParentProcessId(ProcessHandle process) {
+ struct kinfo_proc info;
+- size_t length;
++ size_t length = sizeof(struct kinfo_proc);
+ int mib[] = { CTL_KERN, KERN_PROC, KERN_PROC_PID, process };
+
+ if (sysctl(mib, base::size(mib), &info, &length, NULL, 0) < 0)
++ return -1;
++
++ if (length < sizeof(struct kinfo_proc))
+ return -1;
+
+ return info.ki_ppid;
diff --git a/devel/electron6/files/patch-base_process_process__iterator__freebsd.cc b/devel/electron6/files/patch-base_process_process__iterator__freebsd.cc
new file mode 100644
index 000000000000..a8db39e07923
--- /dev/null
+++ b/devel/electron6/files/patch-base_process_process__iterator__freebsd.cc
@@ -0,0 +1,44 @@
+--- base/process/process_iterator_freebsd.cc.orig 2019-09-10 10:42:27 UTC
++++ base/process/process_iterator_freebsd.cc
+@@ -10,6 +10,10 @@
+ #include <sys/sysctl.h>
+ #include <unistd.h>
+
++/* getuid() */
++#include <unistd.h>
++#include <sys/types.h>
++
+ #include "base/logging.h"
+ #include "base/stl_util.h"
+ #include "base/strings/string_split.h"
+@@ -40,7 +44,7 @@ ProcessIterator::ProcessIterator(const ProcessFilter*
+ num_of_kinfo_proc += 16;
+ kinfo_procs_.resize(num_of_kinfo_proc);
+ len = num_of_kinfo_proc * sizeof(struct kinfo_proc);
+- if (sysctl(mib, base::size(mib), &kinfo_procs_[0], &len, NULL, 0) < 0) {
++ if (sysctl(mib, base::size(mib), kinfo_procs_.data(), &len, NULL, 0) < 0) {
+ // If we get a mem error, it just means we need a bigger buffer, so
+ // loop around again. Anything else is a real error and give up.
+ if (errno != ENOMEM) {
+@@ -72,18 +76,13 @@ bool ProcessIterator::CheckForNextProcess() {
+ for (; index_of_kinfo_proc_ < kinfo_procs_.size(); ++index_of_kinfo_proc_) {
+ size_t length;
+ struct kinfo_proc kinfo = kinfo_procs_[index_of_kinfo_proc_];
+- int mib[] = { CTL_KERN, KERN_PROC_ARGS, kinfo.ki_pid };
++ int mib[] = { CTL_KERN, KERN_PROC, KERN_PROC_ARGS, kinfo.ki_pid };
+
+ if ((kinfo.ki_pid > 0) && (kinfo.ki_stat == SZOMB))
+ continue;
+
+- length = 0;
+- if (sysctl(mib, base::size(mib), NULL, &length, NULL, 0) < 0) {
+- LOG(ERROR) << "failed to figure out the buffer size for a command line";
+- continue;
+- }
+-
+- data.resize(length);
++ data.resize(ARG_MAX);
++ length = ARG_MAX;
+
+ if (sysctl(mib, base::size(mib), &data[0], &length, NULL, 0) < 0) {
+ LOG(ERROR) << "failed to fetch a commandline";
diff --git a/devel/electron6/files/patch-base_process_process__linux.cc b/devel/electron6/files/patch-base_process_process__linux.cc
new file mode 100644
index 000000000000..5cb802db33c2
--- /dev/null
+++ b/devel/electron6/files/patch-base_process_process__linux.cc
@@ -0,0 +1,18 @@
+--- base/process/process_linux.cc.orig 2019-09-10 10:42:27 UTC
++++ base/process/process_linux.cc
+@@ -88,6 +88,7 @@ Time Process::CreationTime() const {
+ return Time(boot_time + start_offset);
+ }
+
++#if !defined(OS_BSD)
+ // static
+ bool Process::CanBackgroundProcesses() {
+ #if defined(OS_CHROMEOS)
+@@ -139,6 +140,7 @@ bool Process::SetProcessBackgrounded(bool background)
+ DPCHECK(result == 0);
+ return result == 0;
+ }
++#endif // !defined(OS_BSD)
+
+ #if defined(OS_CHROMEOS)
+ bool IsProcessBackgroundedCGroup(const StringPiece& cgroup_contents) {
diff --git a/devel/electron6/files/patch-base_process_process__metrics.cc b/devel/electron6/files/patch-base_process_process__metrics.cc
new file mode 100644
index 000000000000..cb415df9ad5d
--- /dev/null
+++ b/devel/electron6/files/patch-base_process_process__metrics.cc
@@ -0,0 +1,38 @@
+--- base/process/process_metrics.cc.orig 2019-09-10 10:42:27 UTC
++++ base/process/process_metrics.cc
+@@ -57,7 +57,7 @@ SystemMetrics SystemMetrics::Sample() {
+ SystemMetrics system_metrics;
+
+ system_metrics.committed_memory_ = GetSystemCommitCharge();
+-#if defined(OS_LINUX) || defined(OS_ANDROID)
++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
+ GetSystemMemoryInfo(&system_metrics.memory_info_);
+ GetVmStatInfo(&system_metrics.vmstat_info_);
+ GetSystemDiskInfo(&system_metrics.disk_info_);
+@@ -75,7 +75,7 @@ std::unique_ptr<Value> SystemMetrics::ToValue() const
+ std::unique_ptr<DictionaryValue> res(new DictionaryValue());
+
+ res->SetIntKey("committed_memory", static_cast<int>(committed_memory_));
+-#if defined(OS_LINUX) || defined(OS_ANDROID)
++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
+ std::unique_ptr<DictionaryValue> meminfo = memory_info_.ToValue();
+ std::unique_ptr<DictionaryValue> vmstat = vmstat_info_.ToValue();
+ meminfo->MergeDictionary(vmstat.get());
+@@ -126,7 +126,7 @@ double ProcessMetrics::GetPlatformIndependentCPUUsage(
+ }
+ #endif
+
+-#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_AIX)
++#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_AIX) || defined(OS_BSD)
+ int ProcessMetrics::CalculateIdleWakeupsPerSecond(
+ uint64_t absolute_idle_wakeups) {
+ return CalculateEventsPerSecond(absolute_idle_wakeups,
+@@ -138,7 +138,7 @@ int ProcessMetrics::GetIdleWakeupsPerSecond() {
+ NOTIMPLEMENTED(); // http://crbug.com/120488
+ return 0;
+ }
+-#endif // defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_AIX)
++#endif // defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_AIX) || defined(OS_BSD)
+
+ #if defined(OS_MACOSX)
+ int ProcessMetrics::CalculatePackageIdleWakeupsPerSecond(
diff --git a/devel/electron6/files/patch-base_process_process__metrics.h b/devel/electron6/files/patch-base_process_process__metrics.h
new file mode 100644
index 000000000000..6533c2c46542
--- /dev/null
+++ b/devel/electron6/files/patch-base_process_process__metrics.h
@@ -0,0 +1,131 @@
+--- base/process/process_metrics.h.orig 2019-09-10 11:13:31 UTC
++++ base/process/process_metrics.h
+@@ -41,7 +41,7 @@ namespace base {
+ // Full declaration is in process_metrics_iocounters.h.
+ struct IoCounters;
+
+-#if defined(OS_LINUX) || defined(OS_ANDROID)
++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
+ // Minor and major page fault counts since the process creation.
+ // Both counts are process-wide, and exclude child processes.
+ //
+@@ -51,7 +51,7 @@ struct PageFaultCounts {
+ int64_t minor;
+ int64_t major;
+ };
+-#endif // defined(OS_LINUX) || defined(OS_ANDROID)
++#endif // defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
+
+ // Convert a POSIX timeval to microseconds.
+ BASE_EXPORT int64_t TimeValToMicroseconds(const struct timeval& tv);
+@@ -92,7 +92,7 @@ class BASE_EXPORT ProcessMetrics {
+ // convenience wrapper for CreateProcessMetrics().
+ static std::unique_ptr<ProcessMetrics> CreateCurrentProcessMetrics();
+
+-#if defined(OS_LINUX) || defined(OS_ANDROID)
++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
+ // Resident Set Size is a Linux/Android specific memory concept. Do not
+ // attempt to extend this to other platforms.
+ BASE_EXPORT size_t GetResidentSetSize() const;
+@@ -199,14 +199,14 @@ class BASE_EXPORT ProcessMetrics {
+ int GetOpenFdSoftLimit() const;
+ #endif // defined(OS_POSIX)
+
+-#if defined(OS_LINUX) || defined(OS_ANDROID)
++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
+ // Bytes of swap as reported by /proc/[pid]/status.
+ uint64_t GetVmSwapBytes() const;
+
+ // Minor and major page fault count as reported by /proc/[pid]/stat.
+ // Returns true for success.
+ bool GetPageFaultCounts(PageFaultCounts* counts) const;
+-#endif // defined(OS_LINUX) || defined(OS_ANDROID)
++#endif // defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
+
+ // Returns total memory usage of malloc.
+ size_t GetMallocUsage();
+@@ -218,7 +218,7 @@ class BASE_EXPORT ProcessMetrics {
+ ProcessMetrics(ProcessHandle process, PortProvider* port_provider);
+ #endif // !defined(OS_MACOSX) || defined(OS_IOS)
+
+-#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_AIX)
++#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_AIX) || defined(OS_BSD)
+ int CalculateIdleWakeupsPerSecond(uint64_t absolute_idle_wakeups);
+ #endif
+ #if defined(OS_MACOSX)
+@@ -247,7 +247,7 @@ class BASE_EXPORT ProcessMetrics {
+ // Number of bytes transferred to/from disk in bytes.
+ uint64_t last_cumulative_disk_usage_ = 0;
+
+-#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_AIX)
++#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_AIX) || defined(OS_BSD)
+ // Same thing for idle wakeups.
+ TimeTicks last_idle_wakeups_time_;
+ uint64_t last_absolute_idle_wakeups_;
+@@ -292,7 +292,7 @@ BASE_EXPORT size_t GetMaxFds();
+ BASE_EXPORT void IncreaseFdLimitTo(unsigned int max_descriptors);
+ #endif // defined(OS_POSIX)
+
+-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || \
++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD) || \
+ defined(OS_ANDROID) || defined(OS_AIX) || defined(OS_FUCHSIA)
+ // Data about system-wide memory consumption. Values are in KB. Available on
+ // Windows, Mac, Linux, Android and Chrome OS.
+@@ -326,7 +326,7 @@ struct BASE_EXPORT SystemMemoryInfoKB {
+ int avail_phys = 0;
+ #endif
+
+-#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_AIX)
++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_AIX) || defined(OS_BSD)
+ // This provides an estimate of available memory as described here:
+ // https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=34e431b0ae398fc54ea69ff85ec700722c9da773
+ // NOTE: this is ONLY valid in kernels 3.14 and up. Its value will always
+@@ -340,7 +340,7 @@ struct BASE_EXPORT SystemMemoryInfoKB {
+ int swap_free = 0;
+ #endif
+
+-#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_AIX) || \
++#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_AIX) || defined(OS_BSD) || \
+ defined(OS_FUCHSIA)
+ int buffers = 0;
+ int cached = 0;
+@@ -350,7 +350,7 @@ struct BASE_EXPORT SystemMemoryInfoKB {
+ int inactive_file = 0;
+ int dirty = 0;
+ int reclaimable = 0;
+-#endif // defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_AIX) ||
++#endif // defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_AIX) || defined(OS_BSD) ||
+ // defined(OS_FUCHSIA)
+
+ #if defined(OS_CHROMEOS)
+@@ -376,10 +376,10 @@ struct BASE_EXPORT SystemMemoryInfoKB {
+ // Exposed for memory debugging widget.
+ BASE_EXPORT bool GetSystemMemoryInfo(SystemMemoryInfoKB* meminfo);
+
+-#endif // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) ||
++#endif // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+ // defined(OS_ANDROID) || defined(OS_AIX) || defined(OS_FUCHSIA)
+
+-#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_AIX)
++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_AIX) || defined(OS_BSD)
+ // Parse the data found in /proc/<pid>/stat and return the sum of the
+ // CPU-related ticks. Returns -1 on parse error.
+ // Exposed for testing.
+@@ -452,7 +452,7 @@ BASE_EXPORT bool GetSystemDiskInfo(SystemDiskInfo* dis
+ // Returns the amount of time spent in user space since boot across all CPUs.
+ BASE_EXPORT TimeDelta GetUserCpuTimeSinceBoot();
+
+-#endif // defined(OS_LINUX) || defined(OS_ANDROID)
++#endif // defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
+
+ #if defined(OS_CHROMEOS)
+ // Data from files in directory /sys/block/zram0 about ZRAM usage.
+@@ -547,7 +547,7 @@ class BASE_EXPORT SystemMetrics {
+ FRIEND_TEST_ALL_PREFIXES(SystemMetricsTest, SystemMetrics);
+
+ size_t committed_memory_;
+-#if defined(OS_LINUX) || defined(OS_ANDROID)
++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
+ SystemMemoryInfoKB memory_info_;
+ VmStatInfo vmstat_info_;
+ SystemDiskInfo disk_info_;
diff --git a/devel/electron6/files/patch-base_process_process__metrics__freebsd.cc b/devel/electron6/files/patch-base_process_process__metrics__freebsd.cc
new file mode 100644
index 000000000000..aebb0088725b
--- /dev/null
+++ b/devel/electron6/files/patch-base_process_process__metrics__freebsd.cc
@@ -0,0 +1,259 @@
+--- base/process/process_metrics_freebsd.cc.orig 2019-09-10 10:42:27 UTC
++++ base/process/process_metrics_freebsd.cc
+@@ -5,6 +5,7 @@
+ #include "base/process/process_metrics.h"
+
+ #include <stddef.h>
++#include <sys/types.h>
+ #include <sys/sysctl.h>
+ #include <sys/user.h>
+ #include <unistd.h>
+@@ -14,11 +15,29 @@
+ #include "base/process/process_metrics_iocounters.h"
+ #include "base/stl_util.h"
+
++#include <unistd.h> /* getpagesize() */
++#include <fcntl.h> /* O_RDONLY */
++#include <kvm.h>
++#include <libutil.h>
++
+ namespace base {
++namespace {
+
++int GetPageShift() {
++ int pagesize = getpagesize();
++ int pageshift = 0;
++
++ while (pagesize > 1) {
++ pageshift++;
++ pagesize >>= 1;
++ }
++
++ return pageshift;
++}
++}
++
+ ProcessMetrics::ProcessMetrics(ProcessHandle process)
+- : process_(process),
+- last_cpu_(0) {}
++ : process_(process) {}
+
+ // static
+ std::unique_ptr<ProcessMetrics> ProcessMetrics::CreateProcessMetrics(
+@@ -69,4 +88,216 @@ size_t GetSystemCommitCharge() {
+ return mem_total - (mem_free*pagesize) - (mem_inactive*pagesize);
+ }
+
++int GetNumberOfThreads(ProcessHandle process) {
++ // Taken from FreeBSD top (usr.bin/top/machine.c)
++
++ kvm_t* kd = kvm_open(NULL, "/dev/null", NULL, O_RDONLY, "kvm_open");
++ if (kd == NULL)
++ return 0;
++
++ struct kinfo_proc* pbase;
++ int nproc;
++ pbase = kvm_getprocs(kd, KERN_PROC_PID, process, &nproc);
++ if (pbase == NULL)
++ return 0;
++
++ if (kvm_close(kd) == -1)
++ return 0;
++
++ return nproc;
++}
++
++bool GetSystemMemoryInfo(SystemMemoryInfoKB *meminfo) {
++ unsigned int mem_total, mem_free, swap_total, swap_used;
++ size_t length;
++ int pagesizeKB;
++
++ pagesizeKB = getpagesize() / 1024;
++
++ length = sizeof(mem_total);
++ if (sysctlbyname("vm.stats.vm.v_page_count", &mem_total,
++ &length, NULL, 0) != 0 || length != sizeof(mem_total))
++ return false;
++
++ length = sizeof(mem_free);
++ if (sysctlbyname("vm.stats.vm.v_free_count", &mem_free, &length, NULL, 0)
++ != 0 || length != sizeof(mem_free))
++ return false;
++
++ length = sizeof(swap_total);
++ if (sysctlbyname("vm.swap_size", &swap_total, &length, NULL, 0)
++ != 0 || length != sizeof(swap_total))
++ return false;
++
++ length = sizeof(swap_used);
++ if (sysctlbyname("vm.swap_anon_use", &swap_used, &length, NULL, 0)
++ != 0 || length != sizeof(swap_used))
++ return false;
++
++ meminfo->total = mem_total * pagesizeKB;
++ meminfo->free = mem_free * pagesizeKB;
++ meminfo->swap_total = swap_total * pagesizeKB;
++ meminfo->swap_free = (swap_total - swap_used) * pagesizeKB;
++
++ return true;
++}
++
++int ProcessMetrics::GetOpenFdCount() const {
++ struct kinfo_file * kif;
++ int cnt;
++
++ if ((kif = kinfo_getfile(process_, &cnt)) == NULL)
++ return -1;
++
++ free(kif);
++
++ return cnt;
++}
++
++int ProcessMetrics::GetOpenFdSoftLimit() const {
++ size_t length;
++ int total_count = 0;
++ int mib[] = { CTL_KERN, KERN_MAXFILESPERPROC };
++
++ length = sizeof(total_count);
++
++ if (sysctl(mib, base::size(mib), &total_count, &length, NULL, 0) < 0) {
++ total_count = -1;
++ }
++
++ return total_count;
++}
++
++size_t ProcessMetrics::GetResidentSetSize() const {
++ kvm_t *kd = kvm_open(nullptr, "/dev/null", nullptr, O_RDONLY, "kvm_open");
++
++ if (kd == nullptr)
++ return 0;
++
++ struct kinfo_proc *pp;
++ int nproc;
++
++ if ((pp = kvm_getprocs(kd, KERN_PROC_PID, process_, &nproc)) == nullptr) {
++ kvm_close(kd);
++ return 0;
++ }
++
++ size_t rss;
++
++ if (nproc > 0) {
++ rss = pp->ki_rssize << GetPageShift();
++ } else {
++ rss = 0;
++ }
++
++ kvm_close(kd);
++ return rss;
++}
++
++uint64_t ProcessMetrics::GetVmSwapBytes() const {
++ kvm_t *kd = kvm_open(nullptr, "/dev/null", nullptr, O_RDONLY, "kvm_open");
++
++ if (kd == nullptr)
++ return 0;
++
++ struct kinfo_proc *pp;
++ int nproc;
++
++ if ((pp = kvm_getprocs(kd, KERN_PROC_PID, process_, &nproc)) == nullptr) {
++ kvm_close(kd);
++ return 0;
++ }
++
++ size_t swrss;
++
++ if (nproc > 0) {
++ swrss = pp->ki_swrss > pp->ki_rssize
++ ? (pp->ki_swrss - pp->ki_rssize) << GetPageShift()
++ : 0;
++ } else {
++ swrss = 0;
++ }
++
++ kvm_close(kd);
++ return swrss;
++}
++
++int ProcessMetrics::GetIdleWakeupsPerSecond() {
++ NOTIMPLEMENTED();
++ return 0;
++}
++
++bool GetSystemDiskInfo(SystemDiskInfo* diskinfo) {
++ NOTIMPLEMENTED();
++ return false;
++}
++
++bool GetVmStatInfo(VmStatInfo* vmstat) {
++ NOTIMPLEMENTED();
++ return false;
++}
++
++SystemDiskInfo::SystemDiskInfo() {
++ reads = 0;
++ reads_merged = 0;
++ sectors_read = 0;
++ read_time = 0;
++ writes = 0;
++ writes_merged = 0;
++ sectors_written = 0;
++ write_time = 0;
++ io = 0;
++ io_time = 0;
++ weighted_io_time = 0;
++}
++
++SystemDiskInfo::SystemDiskInfo(const SystemDiskInfo& other) = default;
++
++std::unique_ptr<Value> SystemDiskInfo::ToValue() const {
++ auto res = std::make_unique<DictionaryValue>();
++
++ // Write out uint64_t variables as doubles.
++ // Note: this may discard some precision, but for JS there's no other option.
++ res->SetDouble("reads", static_cast<double>(reads));
++ res->SetDouble("reads_merged", static_cast<double>(reads_merged));
++ res->SetDouble("sectors_read", static_cast<double>(sectors_read));
++ res->SetDouble("read_time", static_cast<double>(read_time));
++ res->SetDouble("writes", static_cast<double>(writes));
++ res->SetDouble("writes_merged", static_cast<double>(writes_merged));
++ res->SetDouble("sectors_written", static_cast<double>(sectors_written));
++ res->SetDouble("write_time", static_cast<double>(write_time));
++ res->SetDouble("io", static_cast<double>(io));
++ res->SetDouble("io_time", static_cast<double>(io_time));
++ res->SetDouble("weighted_io_time", static_cast<double>(weighted_io_time));
++
++ return std::move(res);
++}
++
++std::unique_ptr<DictionaryValue> SystemMemoryInfoKB::ToValue() const {
++ auto res = std::make_unique<DictionaryValue>();
++ res->SetIntKey("total", total);
++ res->SetIntKey("free", free);
++ res->SetIntKey("available", available);
++ res->SetIntKey("buffers", buffers);
++ res->SetIntKey("cached", cached);
++ res->SetIntKey("active_anon", active_anon);
++ res->SetIntKey("inactive_anon", inactive_anon);
++ res->SetIntKey("active_file", active_file);
++ res->SetIntKey("inactive_file", inactive_file);
++ res->SetIntKey("swap_total", swap_total);
++ res->SetIntKey("swap_free", swap_free);
++ res->SetIntKey("swap_used", swap_total - swap_free);
++ res->SetIntKey("dirty", dirty);
++ res->SetIntKey("reclaimable", reclaimable);
++
++ return res;
++}
++
++std::unique_ptr<DictionaryValue> VmStatInfo::ToValue() const {
++ auto res = std::make_unique<DictionaryValue>();
++ res->SetIntKey("pswpin", pswpin);
++ res->SetIntKey("pswpout", pswpout);
++ res->SetIntKey("pgmajfault", pgmajfault);
++ return res;
++}
+ } // namespace base
diff --git a/devel/electron6/files/patch-base_process_process__metrics__posix.cc b/devel/electron6/files/patch-base_process_process__metrics__posix.cc
new file mode 100644
index 000000000000..5bb95f40e403
--- /dev/null
+++ b/devel/electron6/files/patch-base_process_process__metrics__posix.cc
@@ -0,0 +1,20 @@
+--- base/process/process_metrics_posix.cc.orig 2019-09-10 11:13:31 UTC
++++ base/process/process_metrics_posix.cc
+@@ -19,6 +19,8 @@
+
+ #if defined(OS_MACOSX)
+ #include <malloc/malloc.h>
++#elif defined(OS_FREEBSD)
++#include <stdlib.h>
+ #else
+ #include <malloc.h>
+ #endif
+@@ -107,7 +109,7 @@ size_t ProcessMetrics::GetMallocUsage() {
+ #else
+ return minfo.hblkhd + minfo.arena;
+ #endif
+-#elif defined(OS_FUCHSIA)
++#elif defined(OS_FUCHSIA) || defined(OS_BSD)
+ // TODO(fuchsia): Not currently exposed. https://crbug.com/735087.
+ return 0;
+ #endif
diff --git a/devel/electron6/files/patch-base_process_process__unittest.cc b/devel/electron6/files/patch-base_process_process__unittest.cc
new file mode 100644
index 000000000000..0bc720f373e3
--- /dev/null
+++ b/devel/electron6/files/patch-base_process_process__unittest.cc
@@ -0,0 +1,11 @@
+--- base/process/process_unittest.cc.orig 2019-09-10 10:42:27 UTC
++++ base/process/process_unittest.cc
+@@ -148,7 +148,7 @@ TEST_F(ProcessTest, CreationTimeOtherProcess) {
+ // was spawned and a time recorded after it was spawned. However, since the
+ // base::Time and process creation clocks don't match, tolerate some error.
+ constexpr base::TimeDelta kTolerance =
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // On Linux, process creation time is relative to boot time which has a
+ // 1-second resolution. Tolerate 1 second for the imprecise boot time and
+ // 100 ms for the imprecise clock.
diff --git a/devel/electron6/files/patch-base_profiler_stack__sampling__profiler__unittest.cc b/devel/electron6/files/patch-base_profiler_stack__sampling__profiler__unittest.cc
new file mode 100644
index 000000000000..0308930a37ce
--- /dev/null
+++ b/devel/electron6/files/patch-base_profiler_stack__sampling__profiler__unittest.cc
@@ -0,0 +1,11 @@
+--- base/profiler/stack_sampling_profiler_unittest.cc.orig 2019-09-10 11:13:31 UTC
++++ base/profiler/stack_sampling_profiler_unittest.cc
+@@ -41,7 +41,7 @@
+ #include <intrin.h>
+ #include <malloc.h>
+ #include <windows.h>
+-#else
++#elif !defined(OS_BSD)
+ #include <alloca.h>
+ #endif
+
diff --git a/devel/electron6/files/patch-base_sampling__heap__profiler_sampling__heap__profiler.cc b/devel/electron6/files/patch-base_sampling__heap__profiler_sampling__heap__profiler.cc
new file mode 100644
index 000000000000..6b79044cf15c
--- /dev/null
+++ b/devel/electron6/files/patch-base_sampling__heap__profiler_sampling__heap__profiler.cc
@@ -0,0 +1,24 @@
+--- base/sampling_heap_profiler/sampling_heap_profiler.cc.orig 2019-09-10 11:13:31 UTC
++++ base/sampling_heap_profiler/sampling_heap_profiler.cc
+@@ -30,6 +30,10 @@
+ #include <sys/prctl.h>
+ #endif
+
++#if defined(OS_BSD)
++#include <pthread_np.h>
++#endif
++
+ #if defined(OS_ANDROID) && BUILDFLAG(CAN_UNWIND_WITH_CFI_TABLE) && \
+ defined(OFFICIAL_BUILD)
+ #include "base/trace_event/cfi_backtrace_android.h"
+@@ -65,6 +69,10 @@ const char* GetAndLeakThreadName() {
+ #elif defined(OS_MACOSX)
+ int err = pthread_getname_np(pthread_self(), name, kBufferLen);
+ if (err == 0 && *name != '\0')
++ return strdup(name);
++#elif defined(OS_BSD) && __FreeBSD__ >= 12
++ pthread_get_name_np(pthread_self(), name, kBufferLen);
++ if (*name != '\0')
+ return strdup(name);
+ #endif // defined(OS_LINUX) || defined(OS_ANDROID)
+
diff --git a/devel/electron6/files/patch-base_security__unittest.cc b/devel/electron6/files/patch-base_security__unittest.cc
new file mode 100644
index 000000000000..7337e79d5f74
--- /dev/null
+++ b/devel/electron6/files/patch-base_security__unittest.cc
@@ -0,0 +1,11 @@
+--- base/security_unittest.cc.orig 2019-09-10 11:13:31 UTC
++++ base/security_unittest.cc
+@@ -60,7 +60,7 @@ NOINLINE Type HideValueFromCompiler(volatile Type valu
+ // FAILS_ is too clunky.
+ void OverflowTestsSoftExpectTrue(bool overflow_detected) {
+ if (!overflow_detected) {
+-#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_MACOSX)
++#if defined(OS_POSIX) && !defined(OS_NACL)
+ // Sadly, on Linux, Android, and OSX we don't have a good story yet. Don't
+ // fail the test, but report.
+ printf("Platform has overflow: %s\n",
diff --git a/devel/electron6/files/patch-base_strings_safe__sprintf__unittest.cc b/devel/electron6/files/patch-base_strings_safe__sprintf__unittest.cc
new file mode 100644
index 000000000000..8c971ef5bc42
--- /dev/null
+++ b/devel/electron6/files/patch-base_strings_safe__sprintf__unittest.cc
@@ -0,0 +1,18 @@
+--- base/strings/safe_sprintf_unittest.cc.orig 2019-09-10 10:42:27 UTC
++++ base/strings/safe_sprintf_unittest.cc
+@@ -730,6 +730,7 @@ TEST(SafeSPrintfTest, EmbeddedNul) {
+ }
+
+ TEST(SafeSPrintfTest, EmitNULL) {
++/* Avoid compiler error: http://pastebin.com/1edWUE84
+ char buf[40];
+ #if defined(__GNUC__)
+ #pragma GCC diagnostic push
+@@ -741,6 +742,7 @@ TEST(SafeSPrintfTest, EmitNULL) {
+ EXPECT_EQ("0x0", std::string(buf));
+ EXPECT_EQ(6, SafeSPrintf(buf, "%s", NULL));
+ EXPECT_EQ("<NULL>", std::string(buf));
++*/
+ #if defined(__GCC__)
+ #pragma GCC diagnostic pop
+ #endif
diff --git a/devel/electron6/files/patch-base_syslog__logging.cc b/devel/electron6/files/patch-base_syslog__logging.cc
new file mode 100644
index 000000000000..22909dec40d2
--- /dev/null
+++ b/devel/electron6/files/patch-base_syslog__logging.cc
@@ -0,0 +1,20 @@
+--- base/syslog_logging.cc.orig 2019-09-10 11:13:31 UTC
++++ base/syslog_logging.cc
+@@ -9,7 +9,7 @@
+ #include "base/bind.h"
+ #include "base/callback_helpers.h"
+ #include "base/debug/stack_trace.h"
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ // <syslog.h> defines LOG_INFO, LOG_WARNING macros that could conflict with
+ // base::LOG_INFO, base::LOG_WARNING.
+ #include <syslog.h>
+@@ -94,7 +94,7 @@ EventLogMessage::~EventLogMessage() {
+ 1, 0, strings, nullptr)) {
+ stream() << " !!NOT ADDED TO EVENTLOG!!";
+ }
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ const char kEventSource[] = "chrome";
+ openlog(kEventSource, LOG_NOWAIT | LOG_PID, LOG_USER);
+ // We can't use the defined names for the logging severity from syslog.h
diff --git a/devel/electron6/files/patch-base_system_sys__info.h b/devel/electron6/files/patch-base_system_sys__info.h
new file mode 100644
index 000000000000..74c59cc8ca84
--- /dev/null
+++ b/devel/electron6/files/patch-base_system_sys__info.h
@@ -0,0 +1,11 @@
+--- base/system/sys_info.h.orig 2019-09-10 10:42:27 UTC
++++ base/system/sys_info.h
+@@ -192,7 +192,7 @@ class BASE_EXPORT SysInfo {
+ static bool IsLowEndDeviceImpl();
+ static HardwareInfo GetHardwareInfoSync();
+
+-#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_AIX)
++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_AIX) || defined(OS_BSD)
+ static int64_t AmountOfAvailablePhysicalMemory(
+ const SystemMemoryInfoKB& meminfo);
+ #endif
diff --git a/devel/electron6/files/patch-base_system_sys__info__freebsd.cc b/devel/electron6/files/patch-base_system_sys__info__freebsd.cc
new file mode 100644
index 000000000000..caf063d4da0a
--- /dev/null
+++ b/devel/electron6/files/patch-base_system_sys__info__freebsd.cc
@@ -0,0 +1,71 @@
+--- base/system/sys_info_freebsd.cc.orig 2019-09-10 10:42:27 UTC
++++ base/system/sys_info_freebsd.cc
+@@ -13,26 +13,58 @@
+ namespace base {
+
+ int64_t SysInfo::AmountOfPhysicalMemoryImpl() {
+- int pages, page_size;
++ int pages, page_size, r = 0;
+ size_t size = sizeof(pages);
+- sysctlbyname("vm.stats.vm.v_page_count", &pages, &size, NULL, 0);
+- sysctlbyname("vm.stats.vm.v_page_size", &page_size, &size, NULL, 0);
+- if (pages == -1 || page_size == -1) {
++ if(r == 0)
++ r = sysctlbyname("vm.stats.vm.v_page_count", &pages, &size, NULL, 0);
++ if(r == 0)
++ r =sysctlbyname("vm.stats.vm.v_page_size", &page_size, &size, NULL, 0);
++ if(r == -1) {
+ NOTREACHED();
+ return 0;
+ }
+ return static_cast<int64_t>(pages) * page_size;
+ }
+
+-// static
+-uint64_t SysInfo::MaxSharedMemorySize() {
+- size_t limit;
+- size_t size = sizeof(limit);
+- if (sysctlbyname("kern.ipc.shmmax", &limit, &size, NULL, 0) < 0) {
++int64_t SysInfo::AmountOfAvailablePhysicalMemoryImpl() {
++ int page_size, r = 0;
++ unsigned pgfree, pginact, pgcache;
++ size_t size = sizeof(page_size);
++ size_t szpg = sizeof(pgfree);
++ if(r == 0)
++ r = sysctlbyname("vm.stats.vm.v_page_size", &page_size, &size, NULL, 0);
++ if(r == 0)
++ r = sysctlbyname("vm.stats.vm.v_free_count", &pgfree, &szpg, NULL, 0);
++ if(r == 0)
++ r = sysctlbyname("vm.stats.vm.v_inactive_count", &pginact, &szpg, NULL, 0);
++ if(r == 0)
++ r = sysctlbyname("vm.stats.vm.v_cache_count", &pgcache, &szpg, NULL, 0);
++ if(r == -1) {
+ NOTREACHED();
+ return 0;
+ }
+- return static_cast<uint64_t>(limit);
++ return static_cast<int64_t>((pgfree + pginact + pgcache) * page_size);
++}
++
++// static
++std::string SysInfo::CPUModelName() {
++ int mib[] = { CTL_HW, HW_MODEL };
++ char name[256];
++ size_t size = base::size(name);
++ if (sysctl(mib, base::size(mib), &name, &size, NULL, 0) == 0)
++ return name;
++ return std::string();
++}
++
++int SysInfo::NumberOfProcessors() {
++ int mib[] = { CTL_HW, HW_NCPU };
++ int ncpu;
++ size_t size = sizeof(ncpu);
++ if (sysctl(mib, base::size(mib), &ncpu, &size, NULL, 0) == -1) {
++ NOTREACHED();
++ return 1;
++ }
++ return ncpu;
+ }
+
+ } // namespace base
diff --git a/devel/electron6/files/patch-base_system_sys__info__posix.cc b/devel/electron6/files/patch-base_system_sys__info__posix.cc
new file mode 100644
index 000000000000..921d6a5ffde1
--- /dev/null
+++ b/devel/electron6/files/patch-base_system_sys__info__posix.cc
@@ -0,0 +1,38 @@
+--- base/system/sys_info_posix.cc.orig 2019-09-10 11:13:31 UTC
++++ base/system/sys_info_posix.cc
+@@ -38,7 +38,7 @@
+
+ namespace {
+
+-#if !defined(OS_OPENBSD) && !defined(OS_FUCHSIA)
++#if !defined(OS_FUCHSIA) && !defined(OS_BSD)
+ int NumberOfProcessors() {
+ // sysconf returns the number of "logical" (not "physical") processors on both
+ // Mac and Linux. So we get the number of max available "logical" processors.
+@@ -64,7 +64,7 @@ int NumberOfProcessors() {
+
+ base::LazyInstance<base::internal::LazySysInfoValue<int, NumberOfProcessors>>::
+ Leaky g_lazy_number_of_processors = LAZY_INSTANCE_INITIALIZER;
+-#endif // !defined(OS_OPENBSD) && !defined(OS_FUCHSIA)
++#endif // !defined(OS_FUCHSIA) && !defined(OS_BSD)
+
+ #if !defined(OS_FUCHSIA)
+ int64_t AmountOfVirtualMemory() {
+@@ -132,7 +132,7 @@ bool GetDiskSpaceInfo(const base::FilePath& path,
+
+ namespace base {
+
+-#if !defined(OS_OPENBSD) && !defined(OS_FUCHSIA)
++#if !defined(OS_FUCHSIA) && !defined(OS_BSD)
+ int SysInfo::NumberOfProcessors() {
+ return g_lazy_number_of_processors.Get().value();
+ }
+@@ -227,6 +227,8 @@ std::string SysInfo::OperatingSystemArchitecture() {
+ arch = "x86";
+ } else if (arch == "amd64") {
+ arch = "x86_64";
++ } else if (arch == "arm64") {
++ arch = "aarch64";
+ } else if (std::string(info.sysname) == "AIX") {
+ arch = "ppc64";
+ }
diff --git a/devel/electron6/files/patch-base_task_thread__pool_environment__config__unittest.cc b/devel/electron6/files/patch-base_task_thread__pool_environment__config__unittest.cc
new file mode 100644
index 000000000000..b5b813ab5c37
--- /dev/null
+++ b/devel/electron6/files/patch-base_task_thread__pool_environment__config__unittest.cc
@@ -0,0 +1,11 @@
+--- base/task/thread_pool/environment_config_unittest.cc.orig 2019-09-10 10:42:27 UTC
++++ base/task/thread_pool/environment_config_unittest.cc
+@@ -14,7 +14,7 @@ namespace internal {
+ TEST(ThreadPoolEnvironmentConfig, CanUseBackgroundPriorityForWorker) {
+ #if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_IOS)
+ EXPECT_TRUE(CanUseBackgroundPriorityForWorkerThread());
+-#elif defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_FUCHSIA) || \
++#elif defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_FUCHSIA) || defined(OS_BSD) || \
+ defined(OS_CHROMEOS) || defined(OS_NACL)
+ EXPECT_FALSE(CanUseBackgroundPriorityForWorkerThread());
+ #else
diff --git a/devel/electron6/files/patch-base_test_fontconfig__util__linux.cc b/devel/electron6/files/patch-base_test_fontconfig__util__linux.cc
new file mode 100644
index 000000000000..792f57840d80
--- /dev/null
+++ b/devel/electron6/files/patch-base_test_fontconfig__util__linux.cc
@@ -0,0 +1,408 @@
+--- base/test/fontconfig_util_linux.cc.orig 2019-09-10 10:42:27 UTC
++++ base/test/fontconfig_util_linux.cc
+@@ -6,24 +6,397 @@
+
+ #include <fontconfig/fontconfig.h>
+
+-#include <memory>
+-
+ #include "base/base_paths.h"
+ #include "base/environment.h"
+ #include "base/files/file_path.h"
++#include "base/files/file_util.h"
+ #include "base/logging.h"
++#include "base/macros.h"
+ #include "base/path_service.h"
++#include "base/strings/string_util.h"
+
+ namespace base {
+
++namespace {
++
++const char kFontsConfTemplate[] = R"(<?xml version="1.0"?>
++<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
++<fontconfig>
++
++ <!-- Cache location. -->
++ <cachedir>$1</cachedir>
++
++ <!-- GCS-synced fonts. -->
++ <dir>$2</dir>
++
++ <!-- Default properties. -->
++ <match target="font">
++ <edit name="embeddedbitmap" mode="append_last">
++ <bool>false</bool>
++ </edit>
++ </match>
++
++ <match target="pattern">
++ <test qual="any" name="family">
++ <string>Times</string>
++ </test>
++ <edit name="family" mode="assign">
++ <string>Tinos</string>
++ </edit>
++ </match>
++
++ <match target="pattern">
++ <test qual="any" name="family">
++ <string>sans</string>
++ </test>
++ <edit name="family" mode="assign">
++ <string>DejaVu Sans</string>
++ </edit>
++ </match>
++
++ <match target="pattern">
++ <test qual="any" name="family">
++ <string>sans serif</string>
++ </test>
++ <edit name="family" mode="assign">
++ <string>Arimo</string>
++ </edit>
++ </match>
++
++ <!-- Some layout tests specify Helvetica as a family and we need to make sure
++ that we don't fallback to Tinos for them -->
++ <match target="pattern">
++ <test qual="any" name="family">
++ <string>Helvetica</string>
++ </test>
++ <edit name="family" mode="assign">
++ <string>Arimo</string>
++ </edit>
++ </match>
++
++ <match target="pattern">
++ <test qual="any" name="family">
++ <string>sans-serif</string>
++ </test>
++ <edit name="family" mode="assign">
++ <string>Arimo</string>
++ </edit>
++ </match>
++
++ <match target="pattern">
++ <test qual="any" name="family">
++ <string>serif</string>
++ </test>
++ <edit name="family" mode="assign">
++ <string>Tinos</string>
++ </edit>
++ </match>
++
++ <match target="pattern">
++ <test qual="any" name="family">
++ <string>mono</string>
++ </test>
++ <edit name="family" mode="assign">
++ <string>Cousine</string>
++ </edit>
++ </match>
++
++ <match target="pattern">
++ <test qual="any" name="family">
++ <string>monospace</string>
++ </test>
++ <edit name="family" mode="assign">
++ <string>Cousine</string>
++ </edit>
++ </match>
++
++ <match target="pattern">
++ <test qual="any" name="family">
++ <string>Courier</string>
++ </test>
++ <edit name="family" mode="assign">
++ <string>Cousine</string>
++ </edit>
++ </match>
++
++ <match target="pattern">
++ <test qual="any" name="family">
++ <string>cursive</string>
++ </test>
++ <edit name="family" mode="assign">
++ <string>Comic Sans MS</string>
++ </edit>
++ </match>
++
++ <match target="pattern">
++ <test qual="any" name="family">
++ <string>fantasy</string>
++ </test>
++ <edit name="family" mode="assign">
++ <string>Impact</string>
++ </edit>
++ </match>
++
++ <match target="pattern">
++ <test qual="any" name="family">
++ <string>Monaco</string>
++ </test>
++ <edit name="family" mode="assign">
++ <string>Tinos</string>
++ </edit>
++ </match>
++
++ <match target="pattern">
++ <test qual="any" name="family">
++ <string>Arial</string>
++ </test>
++ <edit name="family" mode="assign">
++ <string>Arimo</string>
++ </edit>
++ </match>
++
++ <match target="pattern">
++ <test qual="any" name="family">
++ <string>Courier New</string>
++ </test>
++ <edit name="family" mode="assign">
++ <string>Cousine</string>
++ </edit>
++ </match>
++
++ <match target="pattern">
++ <test qual="any" name="family">
++ <string>Georgia</string>
++ </test>
++ <edit name="family" mode="assign">
++ <string>Gelasio</string>
++ </edit>
++ </match>
++
++ <match target="pattern">
++ <test qual="any" name="family">
++ <string>Times New Roman</string>
++ </test>
++ <edit name="family" mode="assign">
++ <string>Tinos</string>
++ </edit>
++ </match>
++
++ <match target="pattern">
++ <test qual="any" name="family">
++ <string>Verdana</string>
++ </test>
++ <!-- NOT metrically compatible! -->
++ <edit name="family" mode="assign">
++ <string>Arimo</string>
++ </edit>
++ </match>
++
++ <!-- TODO(thomasanderson): Move these configs to be test-specific. -->
++ <match target="pattern">
++ <test name="family" compare="eq">
++ <string>NonAntiAliasedSans</string>
++ </test>
++ <edit name="family" mode="assign">
++ <string>Arimo</string>
++ </edit>
++ <edit name="antialias" mode="assign">
++ <bool>false</bool>
++ </edit>
++ </match>
++
++ <match target="pattern">
++ <test name="family" compare="eq">
++ <string>SlightHintedGeorgia</string>
++ </test>
++ <edit name="family" mode="assign">
++ <string>Gelasio</string>
++ </edit>
++ <edit name="hintstyle" mode="assign">
++ <const>hintslight</const>
++ </edit>
++ </match>
++
++ <match target="pattern">
++ <test name="family" compare="eq">
++ <string>NonHintedSans</string>
++ </test>
++ <edit name="family" mode="assign">
++ <string>Arimo</string>
++ </edit>
++ <!-- These deliberately contradict each other. The 'hinting' preference
++ should take priority -->
++ <edit name="hintstyle" mode="assign">
++ <const>hintfull</const>
++ </edit>
++ <edit name="hinting" mode="assign">
++ <bool>false</bool>
++ </edit>
++ </match>
++
++ <match target="pattern">
++ <test name="family" compare="eq">
++ <string>AutohintedSerif</string>
++ </test>
++ <edit name="family" mode="assign">
++ <string>Arimo</string>
++ </edit>
++ <edit name="autohint" mode="assign">
++ <bool>true</bool>
++ </edit>
++ <edit name="hintstyle" mode="assign">
++ <const>hintmedium</const>
++ </edit>
++ </match>
++
++ <match target="pattern">
++ <test name="family" compare="eq">
++ <string>HintedSerif</string>
++ </test>
++ <edit name="family" mode="assign">
++ <string>Arimo</string>
++ </edit>
++ <edit name="autohint" mode="assign">
++ <bool>false</bool>
++ </edit>
++ <edit name="hintstyle" mode="assign">
++ <const>hintmedium</const>
++ </edit>
++ </match>
++
++ <match target="pattern">
++ <test name="family" compare="eq">
++ <string>FullAndAutoHintedSerif</string>
++ </test>
++ <edit name="family" mode="assign">
++ <string>Arimo</string>
++ </edit>
++ <edit name="autohint" mode="assign">
++ <bool>true</bool>
++ </edit>
++ <edit name="hintstyle" mode="assign">
++ <const>hintfull</const>
++ </edit>
++ </match>
++
++ <match target="pattern">
++ <test name="family" compare="eq">
++ <string>SubpixelEnabledArial</string>
++ </test>
++ <edit name="family" mode="assign">
++ <string>Arimo</string>
++ </edit>
++ <edit name="rgba" mode="assign">
++ <const>rgb</const>
++ </edit>
++ </match>
++
++ <match target="pattern">
++ <test name="family" compare="eq">
++ <string>SubpixelDisabledArial</string>
++ </test>
++ <edit name="family" mode="assign">
++ <string>Arimo</string>
++ </edit>
++ <edit name="rgba" mode="assign">
++ <const>none</const>
++ </edit>
++ </match>
++
++ <match target="pattern">
++ <!-- FontConfig doesn't currently provide a well-defined way to turn on
++ subpixel positioning. This is just an arbitrary pattern to use after
++ turning subpixel positioning on globally to ensure that we don't have
++ issues with our style getting cached for other tests. -->
++ <test name="family" compare="eq">
++ <string>SubpixelPositioning</string>
++ </test>
++ <edit name="family" mode="assign">
++ <string>Tinos</string>
++ </edit>
++ </match>
++
++ <match target="pattern">
++ <!-- See comments above -->
++ <test name="family" compare="eq">
++ <string>SubpixelPositioningAhem</string>
++ </test>
++ <edit name="family" mode="assign">
++ <string>ahem</string>
++ </edit>
++ </match>
++
++ <match target="pattern">
++ <test name="family" compare="eq">
++ <string>SlightHintedTimesNewRoman</string>
++ </test>
++ <edit name="family" mode="assign">
++ <string>Tinos</string>
++ </edit>
++ <edit name="hintstyle" mode="assign">
++ <const>hintslight</const>
++ </edit>
++ </match>
++
++ <!-- When we encounter a character that the current font doesn't
++ support, gfx::GetFallbackFontForChar() returns the first font
++ that does have a glyph for the character. The list of fonts is
++ sorted by a pattern that includes the current locale, but doesn't
++ include a font family (which means that the fallback font depends
++ on the locale but not on the current font).
++
++ DejaVu Sans is commonly the only font that supports some
++ characters, such as "⇧", and even when other candidates are
++ available, DejaVu Sans is commonly first among them, because of
++ the way Fontconfig is ordinarily configured. For example, the
++ configuration in the Fonconfig source lists DejaVu Sans under the
++ sans-serif generic family, and appends sans-serif to patterns
++ that don't already include a generic family (such as the pattern
++ in gfx::GetFallbackFontForChar()).
++
++ To get the same fallback font in the layout tests, we could
++ duplicate this configuration here, or more directly, simply
++ append DejaVu Sans to all patterns. -->
++ <match target="pattern">
++ <edit name="family" mode="append_last">
++ <string>DejaVu Sans</string>
++ </edit>
++ </match>
++
++</fontconfig>
++)";
++
++} // namespace
++
+ void SetUpFontconfig() {
+- FilePath dir_module;
+- CHECK(PathService::Get(DIR_MODULE, &dir_module));
++ std::unique_ptr<Environment> env = Environment::Create();
++ if (!env->HasVar("FONTCONFIG_FILE")) {
++ // fonts.conf must be generated on-the-fly since it contains absolute paths
++ // which may be different if
++ // 1. The user moves/renames their build directory (or any parent dirs).
++ // 2. The build directory is mapped on a swarming bot at a location
++ // different from the one the buildbot used.
++ FilePath dir_module;
++ PathService::Get(DIR_MODULE, &dir_module);
++ FilePath font_cache = dir_module.Append("fontconfig_caches");
++ FilePath test_fonts = dir_module.Append("test_fonts");
++ std::string fonts_conf = ReplaceStringPlaceholders(
++ kFontsConfTemplate, {font_cache.value(), test_fonts.value()}, nullptr);
+
+- std::unique_ptr<Environment> env(Environment::Create());
+- // TODO(thomasanderson): This still stat()'s the real /etc/fonts/fonts.conf.
+- // Prevent fontconfig from doing this.
+- CHECK(env->SetVar("FONTCONFIG_SYSROOT", dir_module.value().c_str()));
++ // Write the data to a different file and then atomically rename it to
++ // fonts.conf. This avoids the file being in a bad state when different
++ // parallel tests call this function at the same time.
++ FilePath fonts_conf_file_temp;
++ if(!CreateTemporaryFileInDir(dir_module, &fonts_conf_file_temp))
++ CHECK(CreateTemporaryFile(&fonts_conf_file_temp));
++ CHECK(
++ WriteFile(fonts_conf_file_temp, fonts_conf.c_str(), fonts_conf.size()));
++ FilePath fonts_conf_file = dir_module.Append("fonts.conf");
++ if (ReplaceFile(fonts_conf_file_temp, fonts_conf_file, nullptr))
++ env->SetVar("FONTCONFIG_FILE", fonts_conf_file.value());
++ else
++ env->SetVar("FONTCONFIG_FILE", fonts_conf_file_temp.value());
++ }
+ }
+
+ } // namespace base
diff --git a/devel/electron6/files/patch-base_test_generate__fontconfig__caches.cc b/devel/electron6/files/patch-base_test_generate__fontconfig__caches.cc
new file mode 100644
index 000000000000..53f2e4bfcee5
--- /dev/null
+++ b/devel/electron6/files/patch-base_test_generate__fontconfig__caches.cc
@@ -0,0 +1,25 @@
+--- base/test/generate_fontconfig_caches.cc.orig 2019-09-10 10:42:27 UTC
++++ base/test/generate_fontconfig_caches.cc
+@@ -52,14 +52,21 @@ int main() {
+
+ // Delete directory before generating fontconfig caches. This will notify
+ // future fontconfig_caches changes.
+- CHECK(base::DeleteFile(fontconfig_caches, /*recursive=*/true));
+
++ CHECK(base::DeleteFile(fontconfig_caches, /*recursive=*/true));
+ base::SetUpFontconfig();
+ FcInit();
+ FcFini();
+
+ // Check existence of intended fontconfig cache file.
++#if defined(OS_BSD)
++ // Our version of fontconfig is too old to respect .uuid files in font directories,
++ // so we check for the CACHEDIR.TAG file instead
+ CHECK(base::PathExists(
++ fontconfig_caches.Append("CACHEDIR.TAG")));
++#else
++ CHECK(base::PathExists(
+ fontconfig_caches.Append(base::StrCat({uuid, "-le64.cache-7"}))));
++#endif
+ return 0;
+ }
diff --git a/devel/electron6/files/patch-base_test_launcher_test__launcher.cc b/devel/electron6/files/patch-base_test_launcher_test__launcher.cc
new file mode 100644
index 000000000000..974714483b30
--- /dev/null
+++ b/devel/electron6/files/patch-base_test_launcher_test__launcher.cc
@@ -0,0 +1,10 @@
+--- base/test/launcher/test_launcher.cc.orig 2019-09-10 11:13:31 UTC
++++ base/test/launcher/test_launcher.cc
+@@ -53,6 +53,7 @@
+ #include "testing/gtest/include/gtest/gtest.h"
+
+ #if defined(OS_POSIX)
++#include <signal.h>
+ #include <fcntl.h>
+
+ #include "base/files/file_descriptor_watcher_posix.h"
diff --git a/devel/electron6/files/patch-base_test_test__file__util__linux.cc b/devel/electron6/files/patch-base_test_test__file__util__linux.cc
new file mode 100644
index 000000000000..72effb5b877b
--- /dev/null
+++ b/devel/electron6/files/patch-base_test_test__file__util__linux.cc
@@ -0,0 +1,13 @@
+--- base/test/test_file_util_linux.cc.orig 2019-09-10 10:42:27 UTC
++++ base/test/test_file_util_linux.cc
+@@ -51,8 +51,10 @@ bool EvictFileFromSystemCache(const FilePath& file) {
+ return false;
+ if (fdatasync(fd.get()) != 0)
+ return false;
++#if !defined(OS_BSD)
+ if (posix_fadvise(fd.get(), 0, 0, POSIX_FADV_DONTNEED) != 0)
+ return false;
++#endif
+ return true;
+ }
+
diff --git a/devel/electron6/files/patch-base_test_test__file__util__posix.cc b/devel/electron6/files/patch-base_test_test__file__util__posix.cc
new file mode 100644
index 000000000000..7e78e3eb7711
--- /dev/null
+++ b/devel/electron6/files/patch-base_test_test__file__util__posix.cc
@@ -0,0 +1,11 @@
+--- base/test/test_file_util_posix.cc.orig 2019-09-10 10:42:27 UTC
++++ base/test/test_file_util_posix.cc
+@@ -85,7 +85,7 @@ void SyncPageCacheToDisk() {
+ sync();
+ }
+
+-#if !defined(OS_LINUX) && !defined(OS_MACOSX) && !defined(OS_ANDROID)
++#if !defined(OS_LINUX) && !defined(OS_MACOSX) && !defined(OS_ANDROID) && !defined(OS_BSD)
+ bool EvictFileFromSystemCache(const FilePath& file) {
+ // There doesn't seem to be a POSIX way to cool the disk cache.
+ NOTIMPLEMENTED();
diff --git a/devel/electron6/files/patch-base_third__party_libevent_BUILD.gn b/devel/electron6/files/patch-base_third__party_libevent_BUILD.gn
new file mode 100644
index 000000000000..6720b6ba96dc
--- /dev/null
+++ b/devel/electron6/files/patch-base_third__party_libevent_BUILD.gn
@@ -0,0 +1,24 @@
+--- base/third_party/libevent/BUILD.gn.orig 2019-09-10 10:42:27 UTC
++++ base/third_party/libevent/BUILD.gn
+@@ -43,13 +43,20 @@ static_library("libevent") {
+ "mac/event-config.h",
+ ]
+ include_dirs = [ "mac" ]
+- } else if (is_linux) {
++ } else if (is_linux && !is_bsd) {
+ sources += [
+ "epoll.c",
+ "linux/config.h",
+ "linux/event-config.h",
+ ]
+ include_dirs = [ "linux" ]
++ } else if (is_bsd) {
++ sources += [
++ "kqueue.c",
++ "freebsd/config.h",
++ "freebsd/event-config.h",
++ ]
++ include_dirs = [ "freebsd" ]
+ } else if (is_android) {
+ sources += [
+ "android/config.h",
diff --git a/devel/electron6/files/patch-base_threading_platform__thread.h b/devel/electron6/files/patch-base_threading_platform__thread.h
new file mode 100644
index 000000000000..a3b866a6ee3b
--- /dev/null
+++ b/devel/electron6/files/patch-base_threading_platform__thread.h
@@ -0,0 +1,11 @@
+--- base/threading/platform_thread.h.orig 2019-09-10 11:13:31 UTC
++++ base/threading/platform_thread.h
+@@ -220,7 +220,7 @@ class BASE_EXPORT PlatformThread {
+
+ static ThreadPriority GetCurrentThreadPriority();
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Toggles a specific thread's priority at runtime. This can be used to
+ // change the priority of a thread in a different process and will fail
+ // if the calling process does not have proper permissions. The
diff --git a/devel/electron6/files/patch-base_threading_platform__thread__linux.cc b/devel/electron6/files/patch-base_threading_platform__thread__linux.cc
new file mode 100644
index 000000000000..e91cd08201a6
--- /dev/null
+++ b/devel/electron6/files/patch-base_threading_platform__thread__linux.cc
@@ -0,0 +1,30 @@
+--- base/threading/platform_thread_linux.cc.orig 2019-09-10 10:42:27 UTC
++++ base/threading/platform_thread_linux.cc
+@@ -18,7 +18,9 @@
+
+ #if !defined(OS_NACL) && !defined(OS_AIX)
+ #include <pthread.h>
++#if !defined(OS_BSD)
+ #include <sys/prctl.h>
++#endif
+ #include <sys/resource.h>
+ #include <sys/time.h>
+ #include <sys/types.h>
+@@ -99,7 +101,7 @@ const ThreadPriorityToNiceValuePair kThreadPriorityToN
+
+ Optional<bool> CanIncreaseCurrentThreadPriorityForPlatform(
+ ThreadPriority priority) {
+-#if !defined(OS_NACL)
++#if !defined(OS_NACL) && !defined(OS_BSD)
+ // A non-zero soft-limit on RLIMIT_RTPRIO is required to be allowed to invoke
+ // pthread_setschedparam in SetCurrentThreadPriorityForPlatform().
+ struct rlimit rlim;
+@@ -141,7 +143,7 @@ Optional<ThreadPriority> GetCurrentThreadPriorityForPl
+ void PlatformThread::SetName(const std::string& name) {
+ ThreadIdNameManager::GetInstance()->SetName(name);
+
+-#if !defined(OS_NACL) && !defined(OS_AIX)
++#if !defined(OS_NACL) && !defined(OS_AIX) && !defined(OS_BSD)
+ // On linux we can get the thread names to show up in the debugger by setting
+ // the process name for the LWP. We don't want to do this for the main
+ // thread because that would rename the process, causing tools like killall
diff --git a/devel/electron6/files/patch-base_threading_platform__thread__posix.cc b/devel/electron6/files/patch-base_threading_platform__thread__posix.cc
new file mode 100644
index 000000000000..126b24a3c18a
--- /dev/null
+++ b/devel/electron6/files/patch-base_threading_platform__thread__posix.cc
@@ -0,0 +1,11 @@
+--- base/threading/platform_thread_posix.cc.orig 2019-09-10 10:42:27 UTC
++++ base/threading/platform_thread_posix.cc
+@@ -66,7 +66,7 @@ void* ThreadFunc(void* params) {
+ if (!thread_params->joinable)
+ base::ThreadRestrictions::SetSingletonAllowed(false);
+
+-#if !defined(OS_NACL)
++#if !defined(OS_NACL) && !defined(OS_BSD)
+ // Threads on linux/android may inherit their priority from the thread
+ // where they were created. This explicitly sets the priority of all new
+ // threads.
diff --git a/devel/electron6/files/patch-base_threading_thread__local__storage__unittest.cc b/devel/electron6/files/patch-base_threading_thread__local__storage__unittest.cc
new file mode 100644
index 000000000000..64c8dc88a3a5
--- /dev/null
+++ b/devel/electron6/files/patch-base_threading_thread__local__storage__unittest.cc
@@ -0,0 +1,11 @@
+--- base/threading/thread_local_storage_unittest.cc.orig 2019-09-10 10:42:27 UTC
++++ base/threading/thread_local_storage_unittest.cc
+@@ -86,7 +86,7 @@ class ThreadLocalStorageRunner : public DelegateSimple
+ void ThreadLocalStorageCleanup(void *value) {
+ int *ptr = reinterpret_cast<int*>(value);
+ // Destructors should never be called with a NULL.
+- ASSERT_NE(reinterpret_cast<int*>(NULL), ptr);
++ ASSERT_NE(static_cast<int*>(NULL), ptr);
+ if (*ptr == kFinalTlsValue)
+ return; // We've been called enough times.
+ ASSERT_LT(kFinalTlsValue, *ptr);
diff --git a/devel/electron6/files/patch-base_threading_thread__task__runner__handle.cc b/devel/electron6/files/patch-base_threading_thread__task__runner__handle.cc
new file mode 100644
index 000000000000..54a572404ad7
--- /dev/null
+++ b/devel/electron6/files/patch-base_threading_thread__task__runner__handle.cc
@@ -0,0 +1,26 @@
+--- base/threading/thread_task_runner_handle.cc.orig 2019-09-10 10:42:27 UTC
++++ base/threading/thread_task_runner_handle.cc
+@@ -8,6 +8,7 @@
+ #include <utility>
+
+ #include "base/bind.h"
++#include "base/callback_helpers.h"
+ #include "base/lazy_instance.h"
+ #include "base/logging.h"
+ #include "base/run_loop.h"
+@@ -37,6 +38,7 @@ bool ThreadTaskRunnerHandle::IsSet() {
+ return !!thread_task_runner_tls.Pointer()->Get();
+ }
+
++#if defined(OS_BSD)
+ // static
+ ScopedClosureRunner ThreadTaskRunnerHandle::OverrideForTesting(
+ scoped_refptr<SingleThreadTaskRunner> overriding_task_runner) {
+@@ -81,6 +83,7 @@ ScopedClosureRunner ThreadTaskRunnerHandle::OverrideFo
+ base::Unretained(ttrh->task_runner_.get()),
+ std::move(no_running_during_override)));
+ }
++#endif
+
+ ThreadTaskRunnerHandle::ThreadTaskRunnerHandle(
+ scoped_refptr<SingleThreadTaskRunner> task_runner)
diff --git a/devel/electron6/files/patch-base_trace__event_malloc__dump__provider.cc b/devel/electron6/files/patch-base_trace__event_malloc__dump__provider.cc
new file mode 100644
index 000000000000..460e7c80e458
--- /dev/null
+++ b/devel/electron6/files/patch-base_trace__event_malloc__dump__provider.cc
@@ -0,0 +1,21 @@
+--- base/trace_event/malloc_dump_provider.cc.orig 2019-09-10 11:13:31 UTC
++++ base/trace_event/malloc_dump_provider.cc
+@@ -17,6 +17,8 @@
+
+ #if defined(OS_MACOSX)
+ #include <malloc/malloc.h>
++#elif defined(OS_BSD)
++#include <stdlib.h>
+ #else
+ #include <malloc.h>
+ #endif
+@@ -132,6 +134,9 @@ bool MallocDumpProvider::OnMemoryDump(const MemoryDump
+ }
+ #elif defined(OS_FUCHSIA)
+ // TODO(fuchsia): Port, see https://crbug.com/706592.
++#elif defined(OS_BSD)
++ total_virtual_size = 0;
++ allocated_objects_size = 0;
+ #else
+ struct mallinfo info = mallinfo();
+ DCHECK_GE(info.arena + info.hblkhd, info.uordblks);
diff --git a/devel/electron6/files/patch-base_trace__event_process__memory__dump.cc b/devel/electron6/files/patch-base_trace__event_process__memory__dump.cc
new file mode 100644
index 000000000000..797561ed0b25
--- /dev/null
+++ b/devel/electron6/files/patch-base_trace__event_process__memory__dump.cc
@@ -0,0 +1,11 @@
+--- base/trace_event/process_memory_dump.cc.orig 2019-09-10 10:42:27 UTC
++++ base/trace_event/process_memory_dump.cc
+@@ -94,7 +94,7 @@ size_t ProcessMemoryDump::CountResidentBytes(void* sta
+ #if defined(OS_WIN)
+ std::unique_ptr<PSAPI_WORKING_SET_EX_INFORMATION[]> vec(
+ new PSAPI_WORKING_SET_EX_INFORMATION[max_vec_size]);
+-#elif defined(OS_MACOSX)
++#elif defined(OS_MACOSX) || defined(OS_BSD)
+ std::unique_ptr<char[]> vec(new char[max_vec_size]);
+ #elif defined(OS_POSIX) || defined(OS_FUCHSIA)
+ std::unique_ptr<unsigned char[]> vec(new unsigned char[max_vec_size]);
diff --git a/devel/electron6/files/patch-base_trace__event_process__memory__dump.h b/devel/electron6/files/patch-base_trace__event_process__memory__dump.h
new file mode 100644
index 000000000000..15e8996c3844
--- /dev/null
+++ b/devel/electron6/files/patch-base_trace__event_process__memory__dump.h
@@ -0,0 +1,11 @@
+--- base/trace_event/process_memory_dump.h.orig 2019-09-10 10:42:27 UTC
++++ base/trace_event/process_memory_dump.h
+@@ -22,7 +22,7 @@
+
+ // Define COUNT_RESIDENT_BYTES_SUPPORTED if platform supports counting of the
+ // resident memory.
+-#if !defined(OS_NACL)
++#if !defined(OS_NACL) && !defined(OS_BSD)
+ #define COUNT_RESIDENT_BYTES_SUPPORTED
+ #endif
+
diff --git a/devel/electron6/files/patch-build_config_BUILD.gn b/devel/electron6/files/patch-build_config_BUILD.gn
new file mode 100644
index 000000000000..c9bc3faf1bc9
--- /dev/null
+++ b/devel/electron6/files/patch-build_config_BUILD.gn
@@ -0,0 +1,30 @@
+--- build/config/BUILD.gn.orig 2019-09-10 11:13:31 UTC
++++ build/config/BUILD.gn
+@@ -161,7 +161,7 @@ config("debug") {
+ # builds, and we have to tell it to turn it off.
+ defines += [ "_HAS_ITERATOR_DEBUGGING=0" ]
+ }
+- } else if (is_linux && current_cpu == "x64" && enable_iterator_debugging) {
++ } else if ((is_linux || is_bsd) && current_cpu == "x64" && enable_iterator_debugging) {
+ # Enable libstdc++ debugging facilities to help catch problems early, see
+ # http://crbug.com/65151 .
+ # TODO(phajdan.jr): Should we enable this for all of POSIX?
+@@ -259,9 +259,7 @@ config("default_libs") {
+ ]
+ } else if (is_linux) {
+ libs = [
+- "dl",
+ "pthread",
+- "rt",
+ ]
+ }
+ }
+@@ -349,7 +347,7 @@ config("executable_config") {
+ "//build/config/ios:ios_dynamic_flags",
+ "//build/config/ios:ios_executable_flags",
+ ]
+- } else if (is_linux || is_android || current_os == "aix") {
++ } else if (is_linux || is_bsd || is_android || current_os == "aix") {
+ configs += [ "//build/config/gcc:executable_config" ]
+ if (is_chromecast) {
+ configs += [ "//build/config/chromecast:executable_config" ]
diff --git a/devel/electron6/files/patch-build_config_BUILDCONFIG.gn b/devel/electron6/files/patch-build_config_BUILDCONFIG.gn
new file mode 100644
index 000000000000..789168df9ce2
--- /dev/null
+++ b/devel/electron6/files/patch-build_config_BUILDCONFIG.gn
@@ -0,0 +1,48 @@
+--- build/config/BUILDCONFIG.gn.orig 2019-09-16 09:24:24 UTC
++++ build/config/BUILDCONFIG.gn
+@@ -134,10 +134,10 @@ declare_args() {
+ is_official_build = false
+
+ # Whether we're a traditional desktop unix.
+- is_desktop_linux = current_os == "linux"
++ is_desktop_linux = current_os == "linux" || current_os == "freebsd"
+
+ # Set to true when compiling with the Clang compiler.
+- is_clang = current_os != "linux" ||
++ is_clang = current_os != "linux" || current_os == "freebsd" ||
+ (current_cpu != "s390x" && current_cpu != "s390" &&
+ current_cpu != "ppc64" && current_cpu != "ppc" &&
+ current_cpu != "mips" && current_cpu != "mips64")
+@@ -189,8 +189,8 @@ if (host_toolchain == "") {
+ # TODO(dpranke): Add some sort of assert here that verifies that
+ # no toolchain omitted host_toolchain from its toolchain_args().
+
+- if (host_os == "linux") {
+- if (target_os != "linux") {
++ if (host_os == "linux" || host_os == "freebsd") {
++ if (target_os != "linux" && target_os != "freebsd") {
+ host_toolchain = "//build/toolchain/linux:clang_$host_cpu"
+ } else if (is_clang) {
+ host_toolchain = "//build/toolchain/linux:clang_$host_cpu"
+@@ -227,7 +227,7 @@ if (target_os == "android") {
+ assert(host_os == "linux" || host_os == "mac",
+ "Android builds are only supported on Linux and Mac hosts.")
+ _default_toolchain = "//build/toolchain/android:android_clang_$target_cpu"
+-} else if (target_os == "chromeos" || target_os == "linux") {
++} else if (target_os == "chromeos" || target_os == "linux" || target_os == "freebsd") {
+ # See comments in build/toolchain/cros/BUILD.gn about board compiles.
+ if (is_clang) {
+ _default_toolchain = "//build/toolchain/linux:clang_$target_cpu"
+@@ -291,10 +291,11 @@ is_android = current_os == "android"
+ is_chromeos = current_os == "chromeos"
+ is_fuchsia = current_os == "fuchsia"
+ is_ios = current_os == "ios"
+-is_linux = current_os == "chromeos" || current_os == "linux"
++is_linux = current_os == "chromeos" || current_os == "linux" || current_os == "freebsd"
+ is_mac = current_os == "mac"
+ is_nacl = current_os == "nacl"
+ is_win = current_os == "win" || current_os == "winuwp"
++is_bsd = current_os == "freebsd"
+
+ is_posix = !is_win && !is_fuchsia
+
diff --git a/devel/electron6/files/patch-build_config_allocator.gni b/devel/electron6/files/patch-build_config_allocator.gni
new file mode 100644
index 000000000000..cb963a2bb89b
--- /dev/null
+++ b/devel/electron6/files/patch-build_config_allocator.gni
@@ -0,0 +1,20 @@
+--- build/config/allocator.gni.orig 2019-09-10 11:13:31 UTC
++++ build/config/allocator.gni
+@@ -6,7 +6,7 @@ import("//build/config/sanitizers/sanitizers.gni")
+
+ # Temporarily disable tcmalloc on arm64 linux to get rid of compilation errors.
+ if (is_android || is_mac || is_ios || is_asan || is_lsan || is_tsan ||
+- is_msan || is_win || is_fuchsia || (is_linux && target_cpu == "arm64")) {
++ is_msan || is_win || is_fuchsia || (is_linux && target_cpu == "arm64") || is_bsd) {
+ _default_allocator = "none"
+ } else {
+ _default_allocator = "tcmalloc"
+@@ -17,7 +17,7 @@ if (is_android || is_mac || is_ios || is_asan || is_ls
+ # against the debug CRT with "is_nacl=false".
+ if ((is_linux || is_android || is_mac ||
+ (is_win && !is_component_build && !is_debug)) && !is_asan && !is_hwasan &&
+- !is_lsan && !is_tsan && !is_msan) {
++ !is_lsan && !is_tsan && !is_msan && !is_bsd) {
+ _default_use_allocator_shim = true
+ } else {
+ _default_use_allocator_shim = false
diff --git a/devel/electron6/files/patch-build_config_compiler_BUILD.gn b/devel/electron6/files/patch-build_config_compiler_BUILD.gn
new file mode 100644
index 000000000000..6adaadb95efa
--- /dev/null
+++ b/devel/electron6/files/patch-build_config_compiler_BUILD.gn
@@ -0,0 +1,92 @@
+--- build/config/compiler/BUILD.gn.orig 2019-09-10 11:13:31 UTC
++++ build/config/compiler/BUILD.gn
+@@ -54,7 +54,7 @@ declare_args() {
+ # only two architectures that are currently checked in). Turn this off when
+ # you are using a custom toolchain and need to control -B in cflags.
+ linux_use_bundled_binutils =
+- linux_use_bundled_binutils_override && is_linux &&
++ linux_use_bundled_binutils_override && (is_linux && !is_bsd) &&
+ (current_cpu == "x64" || current_cpu == "x86")
+ binutils_path = rebase_path("//third_party/binutils/Linux_x64/Release/bin",
+ root_build_dir)
+@@ -269,7 +269,7 @@ config("compiler") {
+ # Linker warnings.
+ if (fatal_linker_warnings && !(is_chromeos && current_cpu == "arm") &&
+ !(is_android && use_order_profiling) && !is_mac && !is_ios &&
+- current_os != "aix") {
++ current_os != "aix" && !is_bsd) {
+ # TODO(jochen): Enable this on chromeos on arm. http://crbug.com/356580
+ # TODO(lizeb,pasko): Fix link errors when linking with order_profiling=1
+ # crbug.com/485542
+@@ -363,7 +363,7 @@ config("compiler") {
+
+ # Compiler instrumentation can introduce dependencies in DSOs to symbols in
+ # the executable they are loaded into, so they are unresolved at link-time.
+- if (!using_sanitizer) {
++ if (!using_sanitizer && !is_bsd) {
+ ldflags += [
+ "-Wl,-z,defs",
+ "-Wl,--as-needed",
+@@ -471,7 +471,7 @@ config("compiler") {
+ }
+ }
+
+- if (is_clang && !is_nacl && !use_xcode_clang) {
++ if (is_clang && !is_nacl && !use_xcode_clang && !is_bsd) {
+ cflags += [ "-fcrash-diagnostics-dir=" +
+ rebase_path("//tools/clang/crashreports", root_build_dir) ]
+
+@@ -741,7 +741,7 @@ config("compiler_cpu_abi") {
+ cflags += [ "-mtune=$arm_tune" ]
+ }
+ } else if (current_cpu == "arm64") {
+- if (is_clang && !is_android && !is_nacl && !is_fuchsia) {
++ if (is_clang && !is_android && !is_nacl && !is_fuchsia && !is_bsd) {
+ cflags += [ "--target=aarch64-linux-gnu" ]
+ ldflags += [ "--target=aarch64-linux-gnu" ]
+ }
+@@ -1102,7 +1102,7 @@ config("compiler_deterministic") {
+ "-Xclang",
+ ".",
+ ]
+- if (!is_win) {
++ if (!is_win && !is_bsd) {
+ # We don't use clang -cc1as on Windows (yet? https://crbug.com/762167)
+ asmflags = [ "-Wa,-fdebug-compilation-dir,." ]
+ }
+@@ -1492,7 +1492,7 @@ config("default_warnings") {
+ cflags += [ "-Wno-nonportable-include-path" ]
+ }
+
+- if (current_toolchain == host_toolchain || !use_xcode_clang) {
++ if ((current_toolchain == host_toolchain || !use_xcode_clang) && !is_bsd) {
+ # Flags NaCl (Clang 3.7) and Xcode 9.2 (Clang clang-900.0.39.2) do not
+ # recognize.
+ cflags += [
+@@ -1701,7 +1701,7 @@ config("thin_archive") {
+ # Mac and iOS use the mac-specific "libtool" command, not ar, which doesn't
+ # have a "thin archive" mode (it does accept -T, but it means truncating
+ # archive names to 16 characters, which is not what we want).
+- if ((is_posix && !is_nacl && !is_mac && !is_ios) || is_fuchsia) {
++ if ((is_posix && !is_nacl && !is_mac && !is_ios && !is_bsd) || is_fuchsia) {
+ arflags = [ "-T" ]
+ } else if (is_win && use_lld) {
+ arflags = [ "/llvmlibthin" ]
+@@ -2288,7 +2288,7 @@ config("symbols") {
+ # flag, so we can use use -g1 for pnacl and nacl-clang compiles.
+ # gcc nacl is is_nacl && !is_clang, pnacl and nacl-clang are && is_clang.
+ if (!is_nacl || is_clang) {
+- cflags += [ "-g2" ]
++ cflags += [ "-g0" ]
+ }
+
+ if (use_debug_fission && !is_nacl && !is_android) {
+@@ -2309,7 +2309,7 @@ config("symbols") {
+ # DWARF info may be corrupt; offsets in a range list entry are in different
+ # sections" there. Maybe just a bug in nacl_switch_32.S.
+ if (!is_mac && !is_ios && !is_nacl && current_cpu != "x86" &&
+- (use_gold || use_lld)) {
++ (use_gold || use_lld) && !is_bsd) {
+ if (is_clang) {
+ # This flag enables the GNU-format pubnames and pubtypes sections,
+ # which lld needs in order to generate a correct GDB index.
diff --git a/devel/electron6/files/patch-build_config_compiler_compiler.gni b/devel/electron6/files/patch-build_config_compiler_compiler.gni
new file mode 100644
index 000000000000..92b64565c1b2
--- /dev/null
+++ b/devel/electron6/files/patch-build_config_compiler_compiler.gni
@@ -0,0 +1,11 @@
+--- build/config/compiler/compiler.gni.orig 2019-09-10 11:13:31 UTC
++++ build/config/compiler/compiler.gni
+@@ -179,7 +179,7 @@ declare_args() {
+ declare_args() {
+ # Whether to use the gold linker from binutils instead of lld or bfd.
+ use_gold =
+- !use_lld && !(is_chromecast && is_linux &&
++ !is_bsd && !use_lld && !(is_chromecast && is_linux &&
+ (current_cpu == "arm" || current_cpu == "mipsel")) &&
+ ((is_linux && (current_cpu == "x64" || current_cpu == "x86" ||
+ current_cpu == "arm" || current_cpu == "arm64" ||
diff --git a/devel/electron6/files/patch-build_config_features.gni b/devel/electron6/files/patch-build_config_features.gni
new file mode 100644
index 000000000000..834c9637a5db
--- /dev/null
+++ b/devel/electron6/files/patch-build_config_features.gni
@@ -0,0 +1,11 @@
+--- build/config/features.gni.orig 2019-09-10 11:13:32 UTC
++++ build/config/features.gni
+@@ -45,7 +45,7 @@ declare_args() {
+ }
+
+ # libudev usage. This currently only affects the content layer.
+- use_udev = is_linux && !is_chromecast
++ use_udev = is_linux && !is_chromecast && !is_bsd
+
+ use_dbus = is_linux && !is_chromecast
+
diff --git a/devel/electron6/files/patch-build_config_freetype_freetype.gni b/devel/electron6/files/patch-build_config_freetype_freetype.gni
new file mode 100644
index 000000000000..4dd88cdc4a20
--- /dev/null
+++ b/devel/electron6/files/patch-build_config_freetype_freetype.gni
@@ -0,0 +1,9 @@
+--- build/config/freetype/freetype.gni.orig 2019-09-10 10:42:27 UTC
++++ build/config/freetype/freetype.gni
+@@ -10,5 +10,5 @@ declare_args() {
+ # than version 2.7.1 and have color bitmap support compiled in. WARNING:
+ # System FreeType configurations other than as described WILL INTRODUCE TEXT
+ # RENDERING AND SECURITY REGRESSIONS.
+- use_system_freetype = false
++ use_system_freetype = true
+ }
diff --git a/devel/electron6/files/patch-build_config_linux_BUILD.gn b/devel/electron6/files/patch-build_config_linux_BUILD.gn
new file mode 100644
index 000000000000..975dfdd1f96e
--- /dev/null
+++ b/devel/electron6/files/patch-build_config_linux_BUILD.gn
@@ -0,0 +1,11 @@
+--- build/config/linux/BUILD.gn.orig 2019-09-10 10:42:27 UTC
++++ build/config/linux/BUILD.gn
+@@ -28,7 +28,7 @@ config("runtime_library") {
+ }
+
+ if ((!is_chromeos || default_toolchain != "//build/toolchain/cros:target") &&
+- (!use_custom_libcxx || current_cpu == "mipsel")) {
++ (!use_custom_libcxx || current_cpu == "mipsel") && !is_bsd) {
+ libs = [ "atomic" ]
+ }
+ }
diff --git a/devel/electron6/files/patch-build_config_linux_pkg-config.py b/devel/electron6/files/patch-build_config_linux_pkg-config.py
new file mode 100644
index 000000000000..51d73283252c
--- /dev/null
+++ b/devel/electron6/files/patch-build_config_linux_pkg-config.py
@@ -0,0 +1,26 @@
+--- build/config/linux/pkg-config.py.orig 2019-09-10 10:42:27 UTC
++++ build/config/linux/pkg-config.py
+@@ -59,8 +59,12 @@ def SetConfigPath(options):
+ print("You must specify an architecture via -a if using a sysroot.")
+ sys.exit(1)
+
+- libdir = sysroot + '/usr/' + options.system_libdir + '/pkgconfig'
+- libdir += ':' + sysroot + '/usr/share/pkgconfig'
++ if "linux" in sys.platform:
++ libdir = sysroot + '/libdata/' + options.system_libdir + '/pkgconfig'
++ libdir += ':' + sysroot + '/usr/share/pkgconfig'
++ elif "bsd" in sys.platform:
++ libdir = sysroot + '/libdata/pkgconfig'
++ libdir += ':' + '/usr/libdata/pkgconfig'
+ os.environ['PKG_CONFIG_LIBDIR'] = libdir
+ return libdir
+
+@@ -109,7 +113,7 @@ def main():
+ # If this is run on non-Linux platforms, just return nothing and indicate
+ # success. This allows us to "kind of emulate" a Linux build from other
+ # platforms.
+- if "linux" not in sys.platform:
++ if "bsd" not in sys.platform:
+ print("[[],[],[],[],[]]")
+ return 0
+
diff --git a/devel/electron6/files/patch-build_config_sysroot.gni b/devel/electron6/files/patch-build_config_sysroot.gni
new file mode 100644
index 000000000000..5836c542a813
--- /dev/null
+++ b/devel/electron6/files/patch-build_config_sysroot.gni
@@ -0,0 +1,15 @@
+--- build/config/sysroot.gni.orig 2019-09-10 11:13:32 UTC
++++ build/config/sysroot.gni
+@@ -15,9 +15,10 @@ declare_args() {
+ # The absolute path to directory containing linux sysroot images
+ target_sysroot_dir = "//build/linux"
+
+- use_sysroot = current_cpu == "x86" || current_cpu == "x64" ||
++ use_sysroot = !is_bsd && (
++ current_cpu == "x86" || current_cpu == "x64" ||
+ current_cpu == "arm" || current_cpu == "arm64" ||
+- current_cpu == "mipsel" || current_cpu == "mips64el"
++ current_cpu == "mipsel" || current_cpu == "mips64el")
+ }
+
+ if (current_os == target_os && current_cpu == target_cpu &&
diff --git a/devel/electron6/files/patch-build_detect__host__arch.py b/devel/electron6/files/patch-build_detect__host__arch.py
new file mode 100644
index 000000000000..609d0cbc48bd
--- /dev/null
+++ b/devel/electron6/files/patch-build_detect__host__arch.py
@@ -0,0 +1,11 @@
+--- build/detect_host_arch.py.orig 2019-09-10 10:42:27 UTC
++++ build/detect_host_arch.py
+@@ -21,6 +21,8 @@ def HostArch():
+ host_arch = 'ia32'
+ elif host_arch in ['x86_64', 'amd64']:
+ host_arch = 'x64'
++ elif host_arch.startswith('arm64'):
++ host_arch = 'arm64'
+ elif host_arch.startswith('arm'):
+ host_arch = 'arm'
+ elif host_arch.startswith('aarch64'):
diff --git a/devel/electron6/files/patch-build_gn__run__binary.py b/devel/electron6/files/patch-build_gn__run__binary.py
new file mode 100644
index 000000000000..df5a65dc910f
--- /dev/null
+++ b/devel/electron6/files/patch-build_gn__run__binary.py
@@ -0,0 +1,11 @@
+--- build/gn_run_binary.py.orig 2019-09-10 10:42:27 UTC
++++ build/gn_run_binary.py
+@@ -24,7 +24,7 @@ if not os.path.isabs(path):
+ # The rest of the arguments are passed directly to the executable.
+ args = [path] + sys.argv[2:]
+
+-ret = subprocess.call(args)
++ret = subprocess.call(args, env={"CHROME_EXE_PATH":"${WRKSRC}/out/Release/chrome"})
+ if ret != 0:
+ if ret <= -100:
+ # Windows error codes such as 0xC0000005 and 0xC0000409 are much easier to
diff --git a/devel/electron6/files/patch-build_linux_chrome.map b/devel/electron6/files/patch-build_linux_chrome.map
new file mode 100644
index 000000000000..3fd5dce03090
--- /dev/null
+++ b/devel/electron6/files/patch-build_linux_chrome.map
@@ -0,0 +1,29 @@
+--- build/linux/chrome.map.orig 2019-09-10 10:42:27 UTC
++++ build/linux/chrome.map
+@@ -1,4 +1,7 @@
+ {
++local:
++ *;
++
+ global:
+ __bss_start;
+ __data_start;
+@@ -20,6 +23,10 @@ global:
+ # Program entry point.
+ _start;
+
++ # FreeBSD specific variables.
++ __progname;
++ environ;
++
+ # Memory allocation symbols. We want chrome and any libraries to
+ # share the same heap, so it is correct to export these symbols.
+ calloc;
+@@ -81,7 +88,4 @@ global:
+ localtime64;
+ localtime64_r;
+ localtime_r;
+-
+-local:
+- *;
+ };
diff --git a/devel/electron6/files/patch-build_linux_libpci_BUILD.gn b/devel/electron6/files/patch-build_linux_libpci_BUILD.gn
new file mode 100644
index 000000000000..e6b5d78f81ab
--- /dev/null
+++ b/devel/electron6/files/patch-build_linux_libpci_BUILD.gn
@@ -0,0 +1,53 @@
+--- build/linux/libpci/BUILD.gn.orig 2019-09-10 10:42:27 UTC
++++ build/linux/libpci/BUILD.gn
+@@ -3,20 +3,36 @@
+ # found in the LICENSE file.
+
+ import("//tools/generate_library_loader/generate_library_loader.gni")
++import("//build/config/linux/pkg_config.gni")
+
+-# This generates a target named "libpci".
+-generate_library_loader("libpci") {
+- name = "LibPciLoader"
+- output_h = "libpci.h"
+- output_cc = "libpci_loader.cc"
+- header = "<pci/pci.h>"
++declare_args() {
++ use_system_libpci = is_bsd
++}
+
+- functions = [
+- "pci_alloc",
+- "pci_init",
+- "pci_cleanup",
+- "pci_scan_bus",
+- "pci_fill_info",
+- "pci_lookup_name",
+- ]
++if (use_system_libpci) {
++ pkg_config("system_libpci") {
++ packages = [ "libpci" ]
++ }
++
++ source_set("libpci") {
++ public_configs = [ ":system_libpci" ]
++ }
++
++} else {
++ # This generates a target named "libpci".
++ generate_library_loader("libpci") {
++ name = "LibPciLoader"
++ output_h = "libpci.h"
++ output_cc = "libpci_loader.cc"
++ header = "<pci/pci.h>"
++
++ functions = [
++ "pci_alloc",
++ "pci_init",
++ "pci_cleanup",
++ "pci_scan_bus",
++ "pci_fill_info",
++ "pci_lookup_name",
++ ]
++ }
+ }
diff --git a/devel/electron6/files/patch-build_linux_unbundle_libusb.gn b/devel/electron6/files/patch-build_linux_unbundle_libusb.gn
new file mode 100644
index 000000000000..e4d1bb15f11d
--- /dev/null
+++ b/devel/electron6/files/patch-build_linux_unbundle_libusb.gn
@@ -0,0 +1,27 @@
+--- build/linux/unbundle/libusb.gn.orig 2019-09-16 09:25:10 UTC
++++ build/linux/unbundle/libusb.gn
+@@ -0,0 +1,24 @@
++# Copyright 2016 The Chromium Authors. All rights reserved.
++# Use of this source code is governed by a BSD-style license that can be
++# found in the LICENSE file.
++
++import("//build/config/linux/pkg_config.gni")
++import("//build/shim_headers.gni")
++
++pkg_config("system_libusb") {
++ packages = [ "libusb-1.0" ]
++}
++
++shim_headers("libusb_shim") {
++ root_path = "src/libusb"
++ headers = [
++ "libusb.h",
++ ]
++}
++
++source_set("libusb") {
++ deps = [
++ ":libusb_shim",
++ ]
++ public_configs = [ ":system_libusb" ]
++}
diff --git a/devel/electron6/files/patch-build_linux_unbundle_replace__gn__files.py b/devel/electron6/files/patch-build_linux_unbundle_replace__gn__files.py
new file mode 100644
index 000000000000..310b08490351
--- /dev/null
+++ b/devel/electron6/files/patch-build_linux_unbundle_replace__gn__files.py
@@ -0,0 +1,10 @@
+--- build/linux/unbundle/replace_gn_files.py.orig 2019-09-10 10:42:27 UTC
++++ build/linux/unbundle/replace_gn_files.py
+@@ -27,6 +27,7 @@ REPLACEMENTS = {
+ 'libevent': 'base/third_party/libevent/BUILD.gn',
+ 'libjpeg': 'third_party/libjpeg.gni',
+ 'libpng': 'third_party/libpng/BUILD.gn',
++ 'libusb': 'third_party/libusb/BUILD.gn',
+ 'libvpx': 'third_party/libvpx/BUILD.gn',
+ 'libwebp': 'third_party/libwebp/BUILD.gn',
+ 'libxml': 'third_party/libxml/BUILD.gn',
diff --git a/devel/electron6/files/patch-build_toolchain_gcc__toolchain.gni b/devel/electron6/files/patch-build_toolchain_gcc__toolchain.gni
new file mode 100644
index 000000000000..de9f6ffbe48b
--- /dev/null
+++ b/devel/electron6/files/patch-build_toolchain_gcc__toolchain.gni
@@ -0,0 +1,45 @@
+--- build/toolchain/gcc_toolchain.gni.orig 2019-09-10 11:13:32 UTC
++++ build/toolchain/gcc_toolchain.gni
+@@ -36,6 +36,11 @@ if (is_linux && target_os == "android") {
+ enable_resource_whitelist_generation = false
+ }
+
++declare_args() {
++ extra_cxxflags = ""
++ extra_ldflags = ""
++}
++
+ # This template defines a toolchain for something that works like gcc
+ # (including clang).
+ #
+@@ -617,13 +622,23 @@ template("clang_toolchain") {
+ }
+
+ gcc_toolchain(target_name) {
+- prefix = rebase_path("$clang_base_path/bin", root_build_dir)
+- cc = "$prefix/clang"
+- cxx = "$prefix/clang++"
+- ld = cxx
+- readelf = "${toolprefix}readelf"
+- ar = "${prefix}/llvm-ar"
+- nm = "${toolprefix}nm"
++ if (is_bsd) {
++ prefix = "/usr/local/bin"
++ cc = "cc"
++ cxx = "c++"
++ ld = cxx
++ readelf = "readelf"
++ ar = "${prefix}/ar"
++ nm = "${toolprefix}nm"
++ } else {
++ prefix = rebase_path("$clang_base_path/bin", root_build_dir)
++ cc = "$prefix/clang"
++ cxx = "$prefix/clang++"
++ ld = cxx
++ readelf = "${toolprefix}readelf"
++ ar = "${prefix}/llvm-ar"
++ nm = "${toolprefix}nm"
++ }
+
+ forward_variables_from(invoker,
+ [
diff --git a/devel/electron6/files/patch-build_toolchain_get__concurrent__links.py b/devel/electron6/files/patch-build_toolchain_get__concurrent__links.py
new file mode 100644
index 000000000000..a0b276ce8036
--- /dev/null
+++ b/devel/electron6/files/patch-build_toolchain_get__concurrent__links.py
@@ -0,0 +1,17 @@
+--- build/toolchain/get_concurrent_links.py.orig 2019-09-10 10:42:27 UTC
++++ build/toolchain/get_concurrent_links.py
+@@ -48,6 +48,14 @@ def _GetTotalMemoryInBytes():
+ return int(subprocess.check_output(['sysctl', '-n', 'hw.memsize']))
+ except Exception:
+ return 0
++ elif sys.platform.startswith('freebsd'):
++ try:
++ avail_bytes = int(subprocess.check_output(['sysctl', '-n', 'hw.physmem']))
++ # With -fuse-lld it doesn't take a lot of ram, feel free to change that
++ # 1 * ... to needed amount
++ return max(1, avail_bytes / (1 * (2 ** 30))) # total / 4GB
++ except Exception:
++ return 1
+ # TODO(scottmg): Implement this for other platforms.
+ return 0
+
diff --git a/devel/electron6/files/patch-build_toolchain_linux_BUILD.gn b/devel/electron6/files/patch-build_toolchain_linux_BUILD.gn
new file mode 100644
index 000000000000..248c492da700
--- /dev/null
+++ b/devel/electron6/files/patch-build_toolchain_linux_BUILD.gn
@@ -0,0 +1,10 @@
+--- build/toolchain/linux/BUILD.gn.orig 2019-09-10 10:42:27 UTC
++++ build/toolchain/linux/BUILD.gn
+@@ -22,7 +22,6 @@ clang_toolchain("clang_arm") {
+ }
+
+ clang_toolchain("clang_arm64") {
+- toolprefix = "aarch64-linux-gnu-"
+ toolchain_args = {
+ current_cpu = "arm64"
+ current_os = "linux"
diff --git a/devel/electron6/files/patch-cc_BUILD.gn b/devel/electron6/files/patch-cc_BUILD.gn
new file mode 100644
index 000000000000..44ac52da9549
--- /dev/null
+++ b/devel/electron6/files/patch-cc_BUILD.gn
@@ -0,0 +1,21 @@
+--- cc/BUILD.gn.orig 2019-09-10 11:13:32 UTC
++++ cc/BUILD.gn
+@@ -566,7 +566,7 @@ cc_test_static_library("test_support") {
+ if (enable_vulkan) {
+ deps += [ "//gpu/vulkan/init" ]
+ }
+- if (!is_android) {
++ if (!is_android && !is_bsd) {
+ data_deps = [
+ "//third_party/mesa_headers",
+ ]
+@@ -767,9 +767,6 @@ cc_test("cc_unittests") {
+ "//ui/gfx/geometry",
+ "//ui/gl",
+ "//ui/gl:test_support",
+- ]
+- data_deps = [
+- "//third_party/mesa_headers",
+ ]
+ }
+
diff --git a/devel/electron6/files/patch-cc_layers_scrollbar__layer__impl__base.cc b/devel/electron6/files/patch-cc_layers_scrollbar__layer__impl__base.cc
new file mode 100644
index 000000000000..4224dd142bf9
--- /dev/null
+++ b/devel/electron6/files/patch-cc_layers_scrollbar__layer__impl__base.cc
@@ -0,0 +1,13 @@
+--- cc/layers/scrollbar_layer_impl_base.cc.orig 2019-09-10 11:13:32 UTC
++++ cc/layers/scrollbar_layer_impl_base.cc
+@@ -218,8 +218,8 @@ gfx::Rect ScrollbarLayerImplBase::ComputeThumbQuadRect
+ int thumb_offset = TrackStart();
+ if (maximum > 0) {
+ float ratio = clamped_current_pos / maximum;
+- float max_offset = track_length - thumb_length;
+- thumb_offset += static_cast<int>(ratio * max_offset);
++ float _max_offset = track_length - thumb_length;
++ thumb_offset += static_cast<int>(ratio * _max_offset);
+ }
+
+ float thumb_thickness_adjustment =
diff --git a/devel/electron6/files/patch-cc_trees_property__tree.cc b/devel/electron6/files/patch-cc_trees_property__tree.cc
new file mode 100644
index 000000000000..81e150be23a2
--- /dev/null
+++ b/devel/electron6/files/patch-cc_trees_property__tree.cc
@@ -0,0 +1,20 @@
+--- cc/trees/property_tree.cc.orig 2019-09-10 11:13:33 UTC
++++ cc/trees/property_tree.cc
+@@ -1348,13 +1348,13 @@ gfx::ScrollOffset ScrollTree::MaxScrollOffset(int scro
+
+ gfx::Size clip_layer_bounds = container_bounds(scroll_node->id);
+
+- gfx::ScrollOffset max_offset(
++ gfx::ScrollOffset _max_offset(
+ scaled_scroll_bounds.width() - clip_layer_bounds.width(),
+ scaled_scroll_bounds.height() - clip_layer_bounds.height());
+
+- max_offset.Scale(1 / scale_factor);
+- max_offset.SetToMax(gfx::ScrollOffset());
+- return max_offset;
++ _max_offset.Scale(1 / scale_factor);
++ _max_offset.SetToMax(gfx::ScrollOffset());
++ return _max_offset;
+ }
+
+ gfx::SizeF ScrollTree::scroll_bounds(int scroll_node_id) const {
diff --git a/devel/electron6/files/patch-chrome_app_chrome__command__ids.h b/devel/electron6/files/patch-chrome_app_chrome__command__ids.h
new file mode 100644
index 000000000000..5fd254d7ee57
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_app_chrome__command__ids.h
@@ -0,0 +1,11 @@
+--- chrome/app/chrome_command_ids.h.orig 2019-09-10 11:13:35 UTC
++++ chrome/app/chrome_command_ids.h
+@@ -63,7 +63,7 @@
+ #define IDC_VISIT_DESKTOP_OF_LRU_USER_2 34049
+ #define IDC_VISIT_DESKTOP_OF_LRU_USER_3 34050
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ #define IDC_USE_SYSTEM_TITLE_BAR 34051
+ #define IDC_RESTORE_WINDOW 34052
+ #endif
diff --git a/devel/electron6/files/patch-chrome_app_chrome__content__browser__overlay__manifest.cc b/devel/electron6/files/patch-chrome_app_chrome__content__browser__overlay__manifest.cc
new file mode 100644
index 000000000000..041395feabcc
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_app_chrome__content__browser__overlay__manifest.cc
@@ -0,0 +1,20 @@
+--- chrome/app/chrome_content_browser_overlay_manifest.cc.orig 2019-09-10 11:13:35 UTC
++++ chrome/app/chrome_content_browser_overlay_manifest.cc
+@@ -79,7 +79,7 @@
+ #include "chrome/services/app_service/public/cpp/manifest.h"
+ #endif
+
+-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || \
++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD) || \
+ defined(OS_CHROMEOS)
+ #include "chrome/browser/performance_manager/webui_graph_dump.mojom.h" // nogncheck
+ #include "chrome/browser/ui/webui/discards/discards.mojom.h"
+@@ -240,7 +240,7 @@ const service_manager::Manifest& GetChromeContentBrows
+ #else
+ app_management::mojom::PageHandlerFactory,
+ #endif
+-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || \
++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD) || \
+ defined(OS_CHROMEOS)
+ mojom::DiscardsDetailsProvider,
+ performance_manager::mojom::WebUIGraphDump,
diff --git a/devel/electron6/files/patch-chrome_app_chrome__main.cc b/devel/electron6/files/patch-chrome_app_chrome__main.cc
new file mode 100644
index 000000000000..3a27ea7058cf
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_app_chrome__main.cc
@@ -0,0 +1,16 @@
+--- chrome/app/chrome_main.cc.orig 2019-09-10 11:13:35 UTC
++++ chrome/app/chrome_main.cc
+@@ -94,11 +94,11 @@ int ChromeMain(int argc, const char** argv) {
+ #endif
+
+ // Chrome-specific process modes.
+-#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_BSD)
+ if (command_line->HasSwitch(switches::kHeadless)) {
+ return headless::HeadlessShellMain(params);
+ }
+-#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN)
++#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_BSD)
+
+ int rv = content::ContentMain(params);
+
diff --git a/devel/electron6/files/patch-chrome_app_chrome__main__delegate.cc b/devel/electron6/files/patch-chrome_app_chrome__main__delegate.cc
new file mode 100644
index 000000000000..20d645e2d045
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_app_chrome__main__delegate.cc
@@ -0,0 +1,137 @@
+--- chrome/app/chrome_main_delegate.cc.orig 2019-09-10 11:13:35 UTC
++++ chrome/app/chrome_main_delegate.cc
+@@ -100,7 +100,7 @@
+ #include "chrome/app/shutdown_signal_handlers_posix.h"
+ #endif
+
+-#if BUILDFLAG(ENABLE_NACL) && defined(OS_LINUX)
++#if BUILDFLAG(ENABLE_NACL) && defined(OS_LINUX) && !defined(OS_BSD)
+ #include "components/nacl/common/nacl_paths.h"
+ #include "components/nacl/zygote/nacl_fork_delegate_linux.h"
+ #endif
+@@ -137,7 +137,7 @@
+ #include "v8/include/v8.h"
+ #endif
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include "base/environment.h"
+ #endif
+
+@@ -241,7 +241,7 @@ bool UseHooks() {
+
+ #endif // defined(OS_WIN)
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) && !defined(OS_BSD)
+ void AdjustLinuxOOMScore(const std::string& process_type) {
+ // Browsers and zygotes should still be killable, but killed last.
+ const int kZygoteScore = 0;
+@@ -300,7 +300,7 @@ void AdjustLinuxOOMScore(const std::string& process_ty
+ if (score > -1)
+ base::AdjustOOMScore(base::GetCurrentProcId(), score);
+ }
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) && !defined(OS_BSD)
+
+ // Returns true if this subprocess type needs the ResourceBundle initialized
+ // and resources loaded.
+@@ -345,7 +345,7 @@ bool HandleVersionSwitches(const base::CommandLine& co
+ return false;
+ }
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ // Show the man page if --help or -h is on the command line.
+ void HandleHelpSwitches(const base::CommandLine& command_line) {
+ if (command_line.HasSwitch(switches::kHelp) ||
+@@ -355,7 +355,7 @@ void HandleHelpSwitches(const base::CommandLine& comma
+ PLOG(FATAL) << "execlp failed";
+ }
+ }
+-#endif // defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#endif // (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+
+ #if !defined(OS_MACOSX) && !defined(OS_ANDROID)
+ void SIGTERMProfilingShutdown(int signal) {
+@@ -409,7 +409,7 @@ void InitializeUserDataDir(base::CommandLine* command_
+ std::string process_type =
+ command_line->GetSwitchValueASCII(switches::kProcessType);
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // On Linux, Chrome does not support running multiple copies under different
+ // DISPLAYs, so the profile directory can be specified in the environment to
+ // support the virtual desktop use-case.
+@@ -421,7 +421,7 @@ void InitializeUserDataDir(base::CommandLine* command_
+ user_data_dir = base::FilePath::FromUTF8Unsafe(user_data_dir_string);
+ }
+ }
+-#endif // OS_LINUX
++#endif // OS_LINUX || OS_BSD
+ #if defined(OS_MACOSX)
+ policy::path_parser::CheckUserDataDirPolicy(&user_data_dir);
+ #endif // OS_MAC
+@@ -478,7 +478,7 @@ void InitLogging(const std::string& process_type) {
+ void RecordMainStartupMetrics(base::TimeTicks exe_entry_point_ticks) {
+ if (!exe_entry_point_ticks.is_null())
+ startup_metric_utils::RecordExeMainEntryPointTicks(exe_entry_point_ticks);
+-#if defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_LINUX)
++#if defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD)
+ // Record the startup process creation time on supported platforms.
+ startup_metric_utils::RecordStartupProcessCreationTime(
+ base::Process::Current().CreationTime());
+@@ -650,7 +650,7 @@ bool ChromeMainDelegate::BasicStartupComplete(int* exi
+ *exit_code = 0;
+ return true; // Got a --version switch; exit with a success error code.
+ }
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ // This will directly exit if the user asked for help.
+ HandleHelpSwitches(command_line);
+ #endif
+@@ -674,7 +674,7 @@ bool ChromeMainDelegate::BasicStartupComplete(int* exi
+ #if defined(OS_CHROMEOS)
+ chromeos::RegisterPathProvider();
+ #endif
+-#if BUILDFLAG(ENABLE_NACL) && defined(OS_LINUX)
++#if BUILDFLAG(ENABLE_NACL) && defined(OS_LINUX) && !defined(OS_BSD)
+ nacl::RegisterPathProvider();
+ #endif
+
+@@ -868,7 +868,7 @@ void ChromeMainDelegate::PreSandboxStartup() {
+ #if defined(OS_WIN)
+ child_process_logging::Init();
+ #endif
+-#if defined(ARCH_CPU_ARM_FAMILY) && (defined(OS_ANDROID) || defined(OS_LINUX))
++#if defined(ARCH_CPU_ARM_FAMILY) && (defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_BSD))
+ // Create an instance of the CPU class to parse /proc/cpuinfo and cache
+ // cpu_brand info.
+ base::CPU cpu_info;
+@@ -996,7 +996,7 @@ void ChromeMainDelegate::PreSandboxStartup() {
+ InitializePDF();
+ #endif
+
+-#if defined(OS_POSIX) && !defined(OS_MACOSX)
++#if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_BSD)
+ // Zygote needs to call InitCrashReporter() in RunZygote().
+ if (process_type != service_manager::switches::kZygoteProcess) {
+ #if defined(OS_ANDROID)
+@@ -1011,7 +1011,7 @@ void ChromeMainDelegate::PreSandboxStartup() {
+ breakpad::InitCrashReporter(process_type);
+ #endif // defined(OS_ANDROID)
+ }
+-#endif // defined(OS_POSIX) && !defined(OS_MACOSX)
++#endif // defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_BSD)
+
+ // After all the platform Breakpads have been initialized, store the command
+ // line for crash reporting.
+@@ -1021,7 +1021,7 @@ void ChromeMainDelegate::PreSandboxStartup() {
+ void ChromeMainDelegate::SandboxInitialized(const std::string& process_type) {
+ // Note: If you are adding a new process type below, be sure to adjust the
+ // AdjustLinuxOOMScore function too.
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) && !defined(OS_BSD)
+ AdjustLinuxOOMScore(process_type);
+ #endif
+ #if defined(OS_WIN)
diff --git a/devel/electron6/files/patch-chrome_app_chromium__strings.grd b/devel/electron6/files/patch-chrome_app_chromium__strings.grd
new file mode 100644
index 000000000000..6fb62dfcf696
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_app_chromium__strings.grd
@@ -0,0 +1,29 @@
+--- chrome/app/chromium_strings.grd.orig 2019-09-10 11:13:35 UTC
++++ chrome/app/chromium_strings.grd
+@@ -690,7 +690,7 @@ Signing in anyway will merge Chromium information like
+ </if>
+
+ <!-- about:browser-switch strings -->
+- <if expr="is_win or is_macosx or (is_linux and not is_chromeos)">
++ <if expr="is_win or is_macosx or (is_posix and not is_chromeos)">
+ <message name="IDS_ABOUT_BROWSER_SWITCH_DESCRIPTION_UNKNOWN_BROWSER" desc="Description shown while waiting for an alternative browser to open, when the browser name is not auto-detected">
+ Your system administrator has configured Chromium to open an alternative browser to access <ph name="TARGET_URL_HOSTNAME">$1<ex>example.com</ex></ph>.
+ </message>
+@@ -815,7 +815,7 @@ Signing in anyway will merge Chromium information like
+ </message>
+
+ <!-- ProcessSingleton -->
+- <if expr="is_linux or is_macosx">
++ <if expr="is_linux or is_macosx or is_posix">
+ <message name="IDS_PROFILE_IN_USE_POSIX" desc="Message shown when the browser cannot start because the profile is in use on a different host.">
+ The profile appears to be in use by another Chromium process (<ph name="PROCESS_ID">$1<ex>12345</ex></ph>) on another computer (<ph name="HOST_NAME">$2<ex>example.com</ex></ph>). Chromium has locked the profile so that it doesn't get corrupted. If you are sure no other processes are using this profile, you can unlock the profile and relaunch Chromium.
+ </message>
+@@ -1074,7 +1074,7 @@ Please check your email at <ph name="ACCOUNT_EMAIL">$2
+ </message>
+
+ <!-- Plugin Placeholders -->
+- <if expr="is_linux">
++ <if expr="is_posix">
+ <message name="IDS_PLUGIN_RESTART_REQUIRED" desc="The placeholder text for a plugin that can't be loaded until the browser is restarted.">
+ Restart Chromium to enable <ph name="PLUGIN_NAME">$1<ex>Flash</ex></ph>
+ </message>
diff --git a/devel/electron6/files/patch-chrome_app_generated__resources.grd b/devel/electron6/files/patch-chrome_app_generated__resources.grd
new file mode 100644
index 000000000000..cfab296a2170
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_app_generated__resources.grd
@@ -0,0 +1,29 @@
+--- chrome/app/generated_resources.grd.orig 2019-09-10 11:13:35 UTC
++++ chrome/app/generated_resources.grd
+@@ -4805,7 +4805,7 @@ Keep your key file in a safe place. You will need it t
+ </if>
+
+ <!-- chrome://browser-switch strings -->
+- <if expr="is_win or is_macosx or (is_linux and not is_chromeos)">
++ <if expr="is_win or is_macosx or (is_posix and not is_chromeos)">
+ <message name="IDS_ABOUT_BROWSER_SWITCH_TITLE" desc="about:browser-switch page title">
+ Legacy Browser Support
+ </message>
+@@ -6370,7 +6370,7 @@ the Bookmarks menu.">
+ Google Pay
+ </message>
+
+- <if expr="is_linux and not chromeos">
++ <if expr="is_posix and not chromeos">
+ <message name="IDS_SHOW_WINDOW_DECORATIONS" desc="The label of a radio button in the options dialog for using the system title bar and borders.">
+ Use system title bar and borders
+ </message>
+@@ -7223,7 +7223,7 @@ Please help our engineers fix this problem. Tell us wh
+ Set as default
+ </message>
+
+- <if expr="is_linux and not chromeos">
++ <if expr="is_posix and not chromeos">
+ <message name="IDS_MINIMIZE_WINDOW_MENU" desc="The Linux browser window menu item text for minimizing the window.">
+ Minimize
+ </message>
diff --git a/devel/electron6/files/patch-chrome_app_google__chrome__strings.grd b/devel/electron6/files/patch-chrome_app_google__chrome__strings.grd
new file mode 100644
index 000000000000..53f102c48e87
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_app_google__chrome__strings.grd
@@ -0,0 +1,29 @@
+--- chrome/app/google_chrome_strings.grd.orig 2019-09-10 11:13:35 UTC
++++ chrome/app/google_chrome_strings.grd
+@@ -702,7 +702,7 @@ Signing in anyway will merge Chrome information like b
+ </if>
+
+ <!-- about:browser-switch strings -->
+- <if expr="is_win or is_macosx or (is_linux and not is_chromeos)">
++ <if expr="is_win or is_macosx or (is_posix and not is_chromeos)">
+ <message name="IDS_ABOUT_BROWSER_SWITCH_DESCRIPTION_UNKNOWN_BROWSER" desc="Description shown while waiting for an alternative browser to open, when the browser name is not auto-detected">
+ Your system administrator has configured Google Chrome to open an alternative browser to access <ph name="TARGET_URL_HOSTNAME">$1<ex>example.com</ex></ph>.
+ </message>
+@@ -827,7 +827,7 @@ Signing in anyway will merge Chrome information like b
+ </message>
+
+ <!-- ProcessSingleton -->
+- <if expr="is_linux or is_macosx">
++ <if expr="is_linux or is_macosx or is_posix">
+ <message name="IDS_PROFILE_IN_USE_POSIX" desc="Message shown when the browser cannot start because the profile is in use on a different host.">
+ The profile appears to be in use by another Google Chrome process (<ph name="PROCESS_ID">$1<ex>12345</ex></ph>) on another computer (<ph name="HOST_NAME">$2<ex>example.com</ex></ph>). Chrome has locked the profile so that it doesn't get corrupted. If you are sure no other processes are using this profile, you can unlock the profile and relaunch Chrome.
+ </message>
+@@ -1093,7 +1093,7 @@ Please check your email at <ph name="ACCOUNT_EMAIL">$2
+ </message>
+
+ <!-- Plugin Placeholders -->
+- <if expr="is_linux">
++ <if expr="is_posix">
+ <message name="IDS_PLUGIN_RESTART_REQUIRED" desc="The placeholder text for a plugin that can't be loaded until the browser is restarted.">
+ Restart Chrome to enable <ph name="PLUGIN_NAME">$1<ex>Flash</ex></ph>
+ </message>
diff --git a/devel/electron6/files/patch-chrome_app_settings__strings.grdp b/devel/electron6/files/patch-chrome_app_settings__strings.grdp
new file mode 100644
index 000000000000..d79f857c0a5e
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_app_settings__strings.grdp
@@ -0,0 +1,20 @@
+--- chrome/app/settings_strings.grdp.orig 2019-09-10 11:13:37 UTC
++++ chrome/app/settings_strings.grdp
+@@ -653,7 +653,7 @@
+ Themes
+ </message>
+ </if>
+- <if expr="is_linux and not chromeos">
++ <if expr="is_posix and not chromeos">
+ <message name="IDS_SETTINGS_SYSTEM_THEME" desc="Text of the label describing the system (GTK+) browser theme on Linux">
+ GTK+
+ </message>
+@@ -667,7 +667,7 @@
+ Use Classic
+ </message>
+ </if>
+- <if expr="not is_linux or chromeos">
++ <if expr="not is_posix or chromeos">
+ <message name="IDS_SETTINGS_RESET_TO_DEFAULT_THEME" desc="Name of the control which resets the browser theme back to the default theme.">
+ Reset to default
+ </message>
diff --git a/devel/electron6/files/patch-chrome_app_shutdown__signal__handlers__posix.cc b/devel/electron6/files/patch-chrome_app_shutdown__signal__handlers__posix.cc
new file mode 100644
index 000000000000..515ca276ffd1
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_app_shutdown__signal__handlers__posix.cc
@@ -0,0 +1,21 @@
+--- chrome/app/shutdown_signal_handlers_posix.cc.orig 2019-09-10 10:42:28 UTC
++++ chrome/app/shutdown_signal_handlers_posix.cc
+@@ -186,12 +186,18 @@ void InstallShutdownSignalHandlers(
+ g_pipe_pid = getpid();
+ g_shutdown_pipe_read_fd = pipefd[0];
+ g_shutdown_pipe_write_fd = pipefd[1];
++#if defined(OS_BSD)
++ // PTHREAD_STACK_MIN causes chromium to crash under FreeBSD,
++ // we request the default pthread stack size by specifying 0 here.
++ const size_t kShutdownDetectorThreadStackSize = 0;
++#else
+ #if !defined(ADDRESS_SANITIZER)
+ const size_t kShutdownDetectorThreadStackSize = PTHREAD_STACK_MIN * 2;
+ #else
+ // ASan instrumentation bloats the stack frames, so we need to increase the
+ // stack size to avoid hitting the guard page.
+ const size_t kShutdownDetectorThreadStackSize = PTHREAD_STACK_MIN * 4;
++#endif
+ #endif
+ ShutdownDetector* detector = new ShutdownDetector(
+ g_shutdown_pipe_read_fd, std::move(shutdown_callback), task_runner);
diff --git a/devel/electron6/files/patch-chrome_app_theme_chrome__unscaled__resources.grd b/devel/electron6/files/patch-chrome_app_theme_chrome__unscaled__resources.grd
new file mode 100644
index 000000000000..7e8eb90d5609
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_app_theme_chrome__unscaled__resources.grd
@@ -0,0 +1,20 @@
+--- chrome/app/theme/chrome_unscaled_resources.grd.orig 2019-09-10 11:13:37 UTC
++++ chrome/app/theme/chrome_unscaled_resources.grd
+@@ -18,7 +18,7 @@
+ <include name="IDR_PRODUCT_LOGO_64" file="google_chrome/product_logo_64.png" type="BINDATA" />
+ <include name="IDR_PRODUCT_LOGO_128" file="google_chrome/product_logo_128.png" type="BINDATA" />
+ <include name="IDR_PRODUCT_LOGO_256" file="google_chrome/product_logo_256.png" type="BINDATA" />
+- <if expr="is_linux">
++ <if expr="is_posix">
+ <include name="IDR_PRODUCT_LOGO_128_BETA" file="google_chrome/product_logo_128_beta.png" type="BINDATA" />
+ <include name="IDR_PRODUCT_LOGO_128_DEV" file="google_chrome/product_logo_128_dev.png" type="BINDATA" />
+ </if>
+@@ -100,7 +100,7 @@
+ <include name="IDR_PROFILE_AVATAR_2X_25" file="default_200_percent/common/profile_avatar_sun_cloud.png" type="BINDATA" />
+ <include name="IDR_PROFILE_AVATAR_2X_26" file="default_200_percent/common/profile_avatar_placeholder.png" type="BINDATA" />
+ </if>
+- <if expr="is_linux and enable_app_list">
++ <if expr="is_posix and enable_app_list">
+ <!-- App Launcher icons for desktop icon. -->
+ <if expr="_google_chrome">
+ <then>
diff --git a/devel/electron6/files/patch-chrome_browser_about__flags.cc b/devel/electron6/files/patch-chrome_browser_about__flags.cc
new file mode 100644
index 000000000000..dadc7717233c
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_browser_about__flags.cc
@@ -0,0 +1,183 @@
+--- chrome/browser/about_flags.cc.orig 2019-09-10 11:13:37 UTC
++++ chrome/browser/about_flags.cc
+@@ -621,7 +621,7 @@ const FeatureEntry::FeatureVariation
+ nullptr}};
+ #endif // OS_ANDROID
+
+-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+ const FeatureEntry::FeatureParam
+ kAutofillSaveCreditCardUsesImprovedMessagingStoreCard[] = {
+ {autofill::features::
+@@ -668,7 +668,7 @@ const FeatureEntry::FeatureVariation
+ kAutofillSaveCreditCardUsesImprovedMessagingConfirmAndSaveCard),
+ nullptr},
+ };
+-#endif // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
++#endif // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+
+ const FeatureEntry::Choice kMemlogModeChoices[] = {
+ {flags_ui::kGenericExperimentChoiceDisabled, "", ""},
+@@ -776,7 +776,7 @@ const FeatureEntry::FeatureVariation kOmniboxMaxURLMat
+ {"6 matches", kOmniboxMaxURLMatches6, base::size(kOmniboxMaxURLMatches6),
+ nullptr}};
+
+-#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN) || \
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_BSD) || \
+ defined(OS_CHROMEOS)
+ const FeatureEntry::FeatureParam kTranslateBubbleUIButton[] = {
+ {language::kTranslateUIBubbleKey, language::kTranslateUIBubbleButtonValue}};
+@@ -792,7 +792,7 @@ const FeatureEntry::FeatureVariation kTranslateBubbleU
+ {"Tab", kTranslateBubbleUITab, base::size(kTranslateBubbleUITab), nullptr},
+ {"Button_GM2", kTranslateBubbleUIButtonGM2,
+ base::size(kTranslateBubbleUIButton), nullptr}};
+-#endif // OS_LINUX || OS_MACOSX || OS_WIN || OS_CHROMEOS
++#endif // OS_LINUX || OS_MACOSX || OS_WIN || OS_BSD || OS_CHROMEOS
+
+ const FeatureEntry::FeatureParam kOmniboxUIVerticalMargin0px[] = {
+ {OmniboxFieldTrial::kUIVerticalMarginParam, "0"}};
+@@ -1567,13 +1567,13 @@ const FeatureEntry kFeatureEntries[] = {
+ flag_descriptions::kCloudPrintXpsDescription, kOsWin,
+ SINGLE_VALUE_TYPE(switches::kEnableCloudPrintXps)},
+ #endif // OS_WIN
+-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ {"enable-webgl2-compute-context",
+ flag_descriptions::kWebGL2ComputeContextName,
+ flag_descriptions::kWebGL2ComputeContextDescription,
+ kOsWin | kOsLinux | kOsCrOS,
+ SINGLE_VALUE_TYPE(switches::kEnableWebGL2ComputeContext)},
+-#endif // defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS)
++#endif // defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ {"enable-webgl-draft-extensions",
+ flag_descriptions::kWebglDraftExtensionsName,
+ flag_descriptions::kWebglDraftExtensionsDescription, kOsAll,
+@@ -1614,14 +1614,14 @@ const FeatureEntry kFeatureEntries[] = {
+ "OverrideTranslateTriggerInIndia")},
+ #endif // OS_ANDROID
+
+-#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN) || \
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_BSD) || \
+ defined(OS_CHROMEOS)
+ {"translate-ui-bubble-options", flag_descriptions::kTranslateBubbleUIName,
+ flag_descriptions::kTranslateBubbleUIDescription, kOsDesktop,
+ FEATURE_WITH_PARAMS_VALUE_TYPE(language::kUseButtonTranslateBubbleUI,
+ kTranslateBubbleUIVariations,
+ "UseButtonTranslateBubbleUI")},
+-#endif // OS_LINUX || OS_MACOSX || OS_WIN || OS_CHROMEOS
++#endif // OS_LINUX || OS_MACOSX || OS_WIN || OS_BSD || OS_CHROMEOS
+
+ #if BUILDFLAG(ENABLE_NATIVE_NOTIFICATIONS) && !defined(OS_CHROMEOS)
+ {"enable-native-notifications",
+@@ -1762,7 +1762,7 @@ const FeatureEntry kFeatureEntries[] = {
+ FEATURE_VALUE_TYPE(
+ previews::features::kHTTPSServerPreviewsUsingURLLoader)},
+ #endif // OS_ANDROID
+-#if defined(OS_CHROMEOS) || defined(OS_LINUX)
++#if defined(OS_CHROMEOS) || defined(OS_LINUX) || defined(OS_BSD)
+ {"enable-save-data", flag_descriptions::kEnableSaveDataName,
+ flag_descriptions::kEnableSaveDataDescription, kOsCrOS,
+ SINGLE_VALUE_TYPE(
+@@ -2091,12 +2091,12 @@ const FeatureEntry kFeatureEntries[] = {
+ FEATURE_VALUE_TYPE(chrome::android::kAndroidNightMode)},
+ #endif // BUILDFLAG(ENABLE_ANDROID_NIGHT_MODE)
+ #endif // OS_ANDROID
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ {"passwords-migrate-linux-to-login-db",
+ flag_descriptions::kPasswordsMigrateLinuxToLoginDBName,
+ flag_descriptions::kPasswordsMigrateLinuxToLoginDBDescription, kOsLinux,
+ FEATURE_VALUE_TYPE(password_manager::features::kMigrateLinuxToLoginDB)},
+-#endif // defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#endif // (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ {"enable-experimental-accessibility-features",
+ flag_descriptions::kExperimentalAccessibilityFeaturesName,
+ flag_descriptions::kExperimentalAccessibilityFeaturesDescription, kOsCrOS,
+@@ -2423,7 +2423,7 @@ const FeatureEntry kFeatureEntries[] = {
+ flag_descriptions::kOmniboxLocalEntitySuggestionsDescription, kOsDesktop,
+ FEATURE_VALUE_TYPE(omnibox::kOmniboxLocalEntitySuggestions)},
+
+-#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_BSD)
+ {"omnibox-experimental-keyword-mode",
+ flag_descriptions::kOmniboxExperimentalKeywordModeName,
+ flag_descriptions::kOmniboxExperimentalKeywordModeDescription, kOsDesktop,
+@@ -2470,7 +2470,7 @@ const FeatureEntry kFeatureEntries[] = {
+ flag_descriptions::kOmniboxDeduplicateDriveUrlsName,
+ flag_descriptions::kOmniboxDeduplicateDriveUrlsDescription, kOsDesktop,
+ FEATURE_VALUE_TYPE(omnibox::kDedupeGoogleDriveURLs)},
+-#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN)
++#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_BSD)
+
+ {"enable-speculative-service-worker-start-on-query-input",
+ flag_descriptions::kSpeculativeServiceWorkerStartOnQueryInputName,
+@@ -2696,7 +2696,7 @@ const FeatureEntry kFeatureEntries[] = {
+ flag_descriptions::kClickToOpenPDFDescription, kOsAll,
+ FEATURE_VALUE_TYPE(features::kClickToOpenPDFPlaceholder)},
+
+-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+ {"direct-manipulation-stylus",
+ flag_descriptions::kDirectManipulationStylusName,
+ flag_descriptions::kDirectManipulationStylusDescription,
+@@ -2707,7 +2707,7 @@ const FeatureEntry kFeatureEntries[] = {
+ flag_descriptions::kShowManagedUiDescription,
+ kOsWin | kOsMac | kOsLinux | kOsCrOS,
+ FEATURE_VALUE_TYPE(features::kShowManagedUi)},
+-#endif // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
++#endif // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+
+ #if !defined(OS_ANDROID)
+ {"chrome-colors", flag_descriptions::kChromeColorsName,
+@@ -3514,7 +3514,7 @@ const FeatureEntry kFeatureEntries[] = {
+ FEATURE_VALUE_TYPE(features::kForceEnableSystemAec)},
+ #endif // defined(OS_MACOSX) || defined(OS_CHROMEOS)
+
+-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+ {"autofill-always-show-server-cards-in-sync-transport",
+ flag_descriptions::kAutofillAlwaysShowServerCardsInSyncTransportName,
+ flag_descriptions::
+@@ -3522,7 +3522,7 @@ const FeatureEntry kFeatureEntries[] = {
+ kOsMac | kOsWin | kOsLinux,
+ FEATURE_VALUE_TYPE(
+ autofill::features::kAutofillAlwaysShowServerCardsInSyncTransport)},
+-#endif // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
++#endif // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+
+ #if BUILDFLAG(ENABLE_PRINT_PREVIEW) && defined(OS_MACOSX)
+ {"enable-custom-mac-paper-sizes",
+@@ -3562,13 +3562,13 @@ const FeatureEntry kFeatureEntries[] = {
+ FEATURE_VALUE_TYPE(features::kCrostiniAppSearch)},
+ #endif // OS_CHROMEOS
+
+-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+ {"autofill-settings-split-by-card-type",
+ flag_descriptions::kAutofillSettingsSplitByCardTypeName,
+ flag_descriptions::kAutofillSettingsSplitByCardTypeDescription,
+ kOsMac | kOsWin | kOsLinux,
+ FEATURE_VALUE_TYPE(autofill::features::kAutofillSettingsCardTypeSplit)},
+-#endif // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
++#endif // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+
+ #if !defined(OS_ANDROID)
+ {"hardware-media-key-handling",
+@@ -3895,7 +3895,7 @@ const FeatureEntry kFeatureEntries[] = {
+ flag_descriptions::kAudioWorkletRealtimeThreadDescription, kOsAll,
+ FEATURE_VALUE_TYPE(blink::features::kAudioWorkletRealtimeThread)},
+
+-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+ {"enable-autofill-save-credit-card-uses-improved-messaging",
+ flag_descriptions::kEnableAutofillSaveCreditCardUsesImprovedMessagingName,
+ flag_descriptions::
+@@ -3905,7 +3905,7 @@ const FeatureEntry kFeatureEntries[] = {
+ autofill::features::kAutofillSaveCreditCardUsesImprovedMessaging,
+ kAutofillSaveCreditCardUsesImprovedMessagingVariations,
+ "AutofillSaveCreditCardUsesImprovedMessaging")},
+-#endif // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
++#endif // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+
+ #if defined(OS_CHROMEOS)
+ {"smart-dim-model-v3", flag_descriptions::kSmartDimModelV3Name,
diff --git a/devel/electron6/files/patch-chrome_browser_after__startup__task__utils.cc b/devel/electron6/files/patch-chrome_browser_after__startup__task__utils.cc
new file mode 100644
index 000000000000..1e4ca09babf0
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_browser_after__startup__task__utils.cc
@@ -0,0 +1,38 @@
+--- chrome/browser/after_startup_task_utils.cc.orig 2019-09-10 11:13:37 UTC
++++ chrome/browser/after_startup_task_utils.cc
+@@ -32,7 +32,7 @@
+ #include "chrome/browser/ui/tabs/tab_strip_model.h"
+ #endif
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ #include "ui/views/linux_ui/linux_ui.h"
+ #endif
+
+@@ -118,7 +118,7 @@ void QueueTask(std::unique_ptr<AfterStartupTask> queue
+
+ void SetBrowserStartupIsComplete() {
+ DCHECK_CURRENTLY_ON(BrowserThread::UI);
+-#if defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_LINUX)
++#if defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD)
+ // Process::Current().CreationTime() is not available on all platforms.
+ const base::Time process_creation_time =
+ base::Process::Current().CreationTime();
+@@ -126,7 +126,7 @@ void SetBrowserStartupIsComplete() {
+ UMA_HISTOGRAM_LONG_TIMES("Startup.AfterStartupTaskDelayedUntilTime",
+ base::Time::Now() - process_creation_time);
+ }
+-#endif // defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_LINUX)
++#endif // defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD)
+ UMA_HISTOGRAM_COUNTS_10000("Startup.AfterStartupTaskCount",
+ g_after_startup_tasks.Get().size());
+ g_startup_complete_flag.Get().Set();
+@@ -135,7 +135,7 @@ void SetBrowserStartupIsComplete() {
+ g_after_startup_tasks.Get().clear();
+ g_after_startup_tasks.Get().shrink_to_fit();
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ // Make sure we complete the startup notification sequence, or launchers will
+ // get confused by not receiving the expected message from the main process.
+ views::LinuxUI* linux_ui = views::LinuxUI::instance();
diff --git a/devel/electron6/files/patch-chrome_browser_apps_platform__apps_api_music__manager__private_device__id__linux.cc b/devel/electron6/files/patch-chrome_browser_apps_platform__apps_api_music__manager__private_device__id__linux.cc
new file mode 100644
index 000000000000..8a9d677d4a18
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_browser_apps_platform__apps_api_music__manager__private_device__id__linux.cc
@@ -0,0 +1,70 @@
+--- chrome/browser/apps/platform_apps/api/music_manager_private/device_id_linux.cc.orig 2019-09-10 11:13:38 UTC
++++ chrome/browser/apps/platform_apps/api/music_manager_private/device_id_linux.cc
+@@ -4,6 +4,11 @@
+
+ #include "chrome/browser/apps/platform_apps/api/music_manager_private/device_id.h"
+
++#if defined(OS_FREEBSD)
++#include <sys/types.h>
++#include <net/if_dl.h>
++#endif
++
+ #include <ifaddrs.h>
+ #include <net/if.h>
+ #include <stddef.h>
+@@ -106,9 +111,36 @@ class MacAddressProcessor {
+ const char* const prefixes[],
+ size_t prefixes_count) {
+ const int MAC_LENGTH = 6;
++#if defined(OS_FREEBSD)
++ struct ifaddrs *ifap, *ifinfo;
++#else
+ struct ifreq ifinfo;
++#endif
+
+ memset(&ifinfo, 0, sizeof(ifinfo));
++
++#if defined(OS_FREEBSD)
++ int result = getifaddrs(&ifap);
++
++ if (result != 0)
++ return true;
++
++ result = 1; // no MAC found yet
++
++ for (ifinfo = ifap; ifinfo != NULL; ifinfo = ifinfo->ifa_next) {
++ struct sockaddr* sa = ifinfo->ifa_addr;
++ if (sa->sa_family == AF_LINK &&
++ !strncmp(ifinfo->ifa_name, ifaddr->ifa_name,
++ sizeof(ifinfo->ifa_name) - 1)) {
++ result = 0;
++ break;
++ }
++ }
++
++ char mac_address[6];
++
++ strncpy(mac_address, (const char*)LLADDR((struct sockaddr_dl*)ifinfo->ifa_addr), sizeof(mac_address));
++#else
+ strncpy(ifinfo.ifr_name, ifaddr->ifa_name, sizeof(ifinfo.ifr_name) - 1);
+
+ int sd = socket(AF_INET, SOCK_DGRAM, 0);
+@@ -120,11 +152,18 @@ class MacAddressProcessor {
+
+ const char* mac_address =
+ static_cast<const char*>(ifinfo.ifr_hwaddr.sa_data);
++#endif
++
+ if (!is_valid_mac_address_.Run(mac_address, MAC_LENGTH))
+ return true;
+
++#if defined(OS_FREEBSD)
++ if (!IsValidPrefix(ifinfo->ifa_name, prefixes, prefixes_count))
++ return true;
++#else
+ if (!IsValidPrefix(ifinfo.ifr_name, prefixes, prefixes_count))
+ return true;
++#endif
+
+ // Got one!
+ found_mac_address_ =
diff --git a/devel/electron6/files/patch-chrome_browser_autocomplete_chrome__autocomplete__scheme__classifier.cc b/devel/electron6/files/patch-chrome_browser_autocomplete_chrome__autocomplete__scheme__classifier.cc
new file mode 100644
index 000000000000..abe212f15752
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_browser_autocomplete_chrome__autocomplete__scheme__classifier.cc
@@ -0,0 +1,17 @@
+--- chrome/browser/autocomplete/chrome_autocomplete_scheme_classifier.cc.orig 2019-09-10 11:13:38 UTC
++++ chrome/browser/autocomplete/chrome_autocomplete_scheme_classifier.cc
+@@ -59,12 +59,12 @@ ChromeAutocompleteSchemeClassifier::GetInputTypeForSch
+ return metrics::OmniboxInputType::QUERY;
+
+ case ExternalProtocolHandler::UNKNOWN: {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Linux impl of GetApplicationNameForProtocol doesn't distinguish
+ // between URL schemes with handers and those without. This will
+ // make the default behaviour be search on Linux.
+ return metrics::OmniboxInputType::INVALID;
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+ // If block state is unknown, check if there is an application registered
+ // for the url scheme.
+ GURL url(scheme + "://");
diff --git a/devel/electron6/files/patch-chrome_browser_background_background__mode__optimizer.cc b/devel/electron6/files/patch-chrome_browser_background_background__mode__optimizer.cc
new file mode 100644
index 000000000000..3aaecb96ba66
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_browser_background_background__mode__optimizer.cc
@@ -0,0 +1,15 @@
+--- chrome/browser/background/background_mode_optimizer.cc.orig 2019-09-10 10:42:29 UTC
++++ chrome/browser/background/background_mode_optimizer.cc
+@@ -30,10 +30,10 @@ std::unique_ptr<BackgroundModeOptimizer> BackgroundMod
+ switches::kKeepAliveForTest))
+ return nullptr;
+
+-#if defined(OS_WIN) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD)
+ if (base::FeatureList::IsEnabled(features::kBackgroundModeAllowRestart))
+ return base::WrapUnique(new BackgroundModeOptimizer());
+-#endif // defined(OS_WIN) || defined(OS_LINUX)
++#endif // defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD)
+
+ return nullptr;
+ }
diff --git a/devel/electron6/files/patch-chrome_browser_browser__resources.grd b/devel/electron6/files/patch-chrome_browser_browser__resources.grd
new file mode 100644
index 000000000000..8f1a0c69870c
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_browser_browser__resources.grd
@@ -0,0 +1,20 @@
+--- chrome/browser/browser_resources.grd.orig 2019-09-10 11:13:38 UTC
++++ chrome/browser/browser_resources.grd
+@@ -77,7 +77,7 @@
+ <include name="IDR_DISCARDS_SORTED_TABLE_BEHAVIOR_JS" file="resources\discards\sorted_table_behavior.js" compress="gzip" type="BINDATA" />
+ <include name="IDR_DISCARDS_WEBUI_GRAPH_DUMP_MOJOM_LITE_JS" file="${root_gen_dir}\chrome\browser\performance_manager\webui_graph_dump.mojom-lite.js" compress="gzip" use_base_dir="false" type="BINDATA" />
+ </if>
+- <if expr="is_win or is_macosx or (is_linux and not is_chromeos)">
++ <if expr="is_win or is_macosx or (is_posix and not is_chromeos)">
+ <include name="IDR_BROWSER_SWITCH_APP_HTML" file="resources\browser_switch\app.html" compress="gzip" allowexternalscript="true" type="BINDATA" />
+ <include name="IDR_BROWSER_SWITCH_APP_JS" file="resources\browser_switch\app.js" compress="gzip" type="BINDATA" />
+ <include name="IDR_BROWSER_SWITCH_PROXY_HTML" file="resources\browser_switch\browser_switch_proxy.html" compress="gzip" allowexternalscript="true" type="BINDATA" />
+@@ -666,7 +666,7 @@
+ <include name="IDR_WELCOME_WIN10_PIN_WEBP" file="resources\welcome\pin.webp" type="BINDATA" />
+ </if>
+ <include name="IDR_SSL_ERROR_ASSISTANT_PB" file="${root_gen_dir}/chrome/browser/resources/ssl/ssl_error_assistant/ssl_error_assistant.pb" use_base_dir="false" type="BINDATA" />
+- <if expr="is_android or is_linux">
++ <if expr="is_android or is_posix">
+ <include name="IDR_SANDBOX_INTERNALS_HTML" file="resources\sandbox_internals\sandbox_internals.html" flattenhtml="true" allowexternalscript="true" type="BINDATA" compress="gzip" />
+ <include name="IDR_SANDBOX_INTERNALS_JS" file="resources\sandbox_internals\sandbox_internals.js" type="BINDATA" compress="gzip" />
+ </if>
diff --git a/devel/electron6/files/patch-chrome_browser_chrome__browser__main.cc b/devel/electron6/files/patch-chrome_browser_chrome__browser__main.cc
new file mode 100644
index 000000000000..27d75ad1ec0d
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_browser_chrome__browser__main.cc
@@ -0,0 +1,75 @@
+--- chrome/browser/chrome_browser_main.cc.orig 2019-09-10 11:13:38 UTC
++++ chrome/browser/chrome_browser_main.cc
+@@ -220,9 +220,9 @@
+ #include "components/arc/metrics/stability_metrics_manager.h"
+ #endif // defined(OS_CHROMEOS)
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS)
+ #include "chrome/browser/first_run/upgrade_util_linux.h"
+-#endif // defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#endif // (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS)
+
+ #if defined(OS_LINUX)
+ #include "components/crash/content/app/breakpad_linux.h"
+@@ -260,7 +260,7 @@
+ #endif // defined(OS_WIN)
+
+ #if defined(OS_WIN) || defined(OS_MACOSX) || \
+- (defined(OS_LINUX) && !defined(OS_CHROMEOS))
++ (defined(OS_LINUX) && !defined(OS_CHROMEOS) || defined(OS_BSD))
+ #include "chrome/browser/metrics/desktop_session_duration/desktop_session_duration_tracker.h"
+ #include "chrome/browser/profiles/profile_activity_metrics_recorder.h"
+ #endif
+@@ -1079,7 +1079,7 @@ int ChromeBrowserMainParts::PreCreateThreadsImpl() {
+ AddFirstRunNewTabs(browser_creator_.get(), master_prefs_->new_tabs);
+ }
+
+-#if defined(OS_MACOSX) || defined(OS_LINUX)
++#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+ // Create directory for user-level Native Messaging manifest files. This
+ // makes it less likely that the directory will be created by third-party
+ // software with incorrect owner or permission. See crbug.com/725513 .
+@@ -1088,14 +1088,14 @@ int ChromeBrowserMainParts::PreCreateThreadsImpl() {
+ &user_native_messaging_dir));
+ if (!base::PathExists(user_native_messaging_dir))
+ base::CreateDirectory(user_native_messaging_dir);
+-#endif // defined(OS_MACOSX) || defined(OS_LINUX)
++#endif // defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+ }
+ #endif // !defined(OS_ANDROID) && !defined(OS_CHROMEOS)
+
+-#if defined(OS_LINUX) || defined(OS_OPENBSD)
++#if defined(OS_LINUX)
+ // Set the product channel for crash reports.
+ breakpad::SetChannelCrashKey(chrome::GetChannelName());
+-#endif // defined(OS_LINUX) || defined(OS_OPENBSD)
++#endif // defined(OS_LINUX)
+
+ #if defined(OS_MACOSX)
+ // Get the Keychain API to register for distributed notifications on the main
+@@ -1125,7 +1125,7 @@ int ChromeBrowserMainParts::PreCreateThreadsImpl() {
+ }
+
+ #if defined(OS_WIN) || defined(OS_MACOSX) || \
+- (defined(OS_LINUX) && !defined(OS_CHROMEOS))
++ (defined(OS_LINUX) && !defined(OS_CHROMEOS) || defined(OS_BSD))
+ metrics::DesktopSessionDurationTracker::Initialize();
+ ProfileActivityMetricsRecorder::Initialize();
+ #endif
+@@ -1291,6 +1291,7 @@ void ChromeBrowserMainParts::PostBrowserStart() {
+ base::TimeDelta::FromMinutes(1));
+
+ #if !defined(OS_ANDROID)
++#if !defined(OS_BSD)
+ if (base::FeatureList::IsEnabled(features::kWebUsb)) {
+ web_usb_detector_.reset(new WebUsbDetector());
+ BrowserThread::PostAfterStartupTask(
+@@ -1299,6 +1300,7 @@ void ChromeBrowserMainParts::PostBrowserStart() {
+ base::BindOnce(&WebUsbDetector::Initialize,
+ base::Unretained(web_usb_detector_.get())));
+ }
++#endif
+ if (base::FeatureList::IsEnabled(features::kTabMetricsLogging)) {
+ // Initialize the TabActivityWatcher to begin logging tab activity events.
+ resource_coordinator::TabActivityWatcher::GetInstance();
diff --git a/devel/electron6/files/patch-chrome_browser_chrome__browser__main__linux.cc b/devel/electron6/files/patch-chrome_browser_chrome__browser__main__linux.cc
new file mode 100644
index 000000000000..b267f596dea8
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_browser_chrome__browser__main__linux.cc
@@ -0,0 +1,27 @@
+--- chrome/browser/chrome_browser_main_linux.cc.orig 2019-09-10 11:13:38 UTC
++++ chrome/browser/chrome_browser_main_linux.cc
+@@ -90,12 +90,14 @@ void ChromeBrowserMainPartsLinux::PreProfileInit() {
+ void ChromeBrowserMainPartsLinux::PostProfileInit() {
+ ChromeBrowserMainPartsPosix::PostProfileInit();
+
++#if !defined(OS_BSD)
+ g_browser_process->metrics_service()->RecordBreakpadRegistration(
+ breakpad::IsCrashReporterEnabled());
++#endif
+ }
+
+ void ChromeBrowserMainPartsLinux::PostMainMessageLoopStart() {
+-#if !defined(OS_CHROMEOS)
++#if !defined(OS_CHROMEOS) && !defined(OS_BSD)
+ bluez::BluezDBusManager::Initialize(nullptr /* system_bus */);
+ #endif
+
+@@ -103,7 +105,7 @@ void ChromeBrowserMainPartsLinux::PostMainMessageLoopS
+ }
+
+ void ChromeBrowserMainPartsLinux::PostDestroyThreads() {
+-#if !defined(OS_CHROMEOS)
++#if !defined(OS_CHROMEOS) && !defined(OS_BSD)
+ bluez::BluezDBusManager::Shutdown();
+ bluez::BluezDBusThreadManager::Shutdown();
+ #endif
diff --git a/devel/electron6/files/patch-chrome_browser_chrome__browser__main__posix.cc b/devel/electron6/files/patch-chrome_browser_chrome__browser__main__posix.cc
new file mode 100644
index 000000000000..fb5d828c47fc
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_browser_chrome__browser__main__posix.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/chrome_browser_main_posix.cc.orig 2019-09-10 11:13:38 UTC
++++ chrome/browser/chrome_browser_main_posix.cc
+@@ -70,7 +70,7 @@ void ExitHandler::ExitWhenPossibleOnUIThread(int signa
+ // ExitHandler takes care of deleting itself.
+ new ExitHandler();
+ } else {
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ switch (signal) {
+ case SIGINT:
+ case SIGHUP:
+@@ -166,7 +166,7 @@ void ChromeBrowserMainPartsPosix::PostMainMessageLoopS
+ void ChromeBrowserMainPartsPosix::ShowMissingLocaleMessageBox() {
+ #if defined(OS_CHROMEOS)
+ NOTREACHED(); // Should not ever happen on ChromeOS.
+-#elif defined(OS_MACOSX)
++#elif defined(OS_MACOSX) || defined(OS_BSD)
+ // Not called on Mac because we load the locale files differently.
+ NOTREACHED();
+ #elif defined(USE_AURA)
diff --git a/devel/electron6/files/patch-chrome_browser_chrome__content__browser__client.cc b/devel/electron6/files/patch-chrome_browser_chrome__content__browser__client.cc
new file mode 100644
index 000000000000..8543d17771fa
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_browser_chrome__content__browser__client.cc
@@ -0,0 +1,92 @@
+--- chrome/browser/chrome_content_browser_client.cc.orig 2019-09-10 11:13:38 UTC
++++ chrome/browser/chrome_content_browser_client.cc
+@@ -429,7 +429,7 @@
+ #include "chromeos/services/secure_channel/secure_channel_service.h"
+ #include "components/user_manager/user_manager.h"
+ #include "services/service_manager/public/mojom/interface_provider_spec.mojom.h"
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ #include "chrome/browser/chrome_browser_main_linux.h"
+ #elif defined(OS_ANDROID)
+ #include "base/android/application_status_listener.h"
+@@ -484,7 +484,7 @@
+ #endif // !defined(OS_ANDROID)
+
+ #if defined(OS_WIN) || defined(OS_MACOSX) || \
+- (defined(OS_LINUX) && !defined(OS_CHROMEOS))
++ (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ #include "chrome/browser/browser_switcher/browser_switcher_navigation_throttle.h"
+ #endif
+
+@@ -510,7 +510,7 @@
+ #include "chrome/browser/ui/views/chrome_browser_main_extra_parts_views.h"
+ #endif
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ #if defined(USE_X11)
+ #include "chrome/browser/ui/views/chrome_browser_main_extra_parts_views_linux_x11.h"
+ #else
+@@ -1250,7 +1250,7 @@ ChromeContentBrowserClient::CreateBrowserMainParts(
+ #elif defined(OS_CHROMEOS)
+ main_parts = std::make_unique<chromeos::ChromeBrowserMainPartsChromeos>(
+ parameters, startup_data_);
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ main_parts =
+ std::make_unique<ChromeBrowserMainPartsLinux>(parameters, startup_data_);
+ #elif defined(OS_ANDROID)
+@@ -1276,7 +1276,7 @@ ChromeContentBrowserClient::CreateBrowserMainParts(
+ // Construct additional browser parts. Stages are called in the order in
+ // which they are added.
+ #if defined(TOOLKIT_VIEWS)
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ #if defined(USE_X11)
+ main_parts->AddParts(new ChromeBrowserMainExtraPartsViewsLinuxX11());
+ #else
+@@ -2093,7 +2093,7 @@ void ChromeContentBrowserClient::AppendExtraCommandLin
+ command_line->AppendSwitchASCII(switches::kMetricsClientID,
+ client_info->client_id);
+ }
+-#elif defined(OS_POSIX)
++#elif defined(OS_POSIX) && !defined(OS_BSD)
+ #if defined(OS_ANDROID)
+ bool enable_crash_reporter = true;
+ #else
+@@ -2318,7 +2318,7 @@ void ChromeContentBrowserClient::AppendExtraCommandLin
+ process_type,
+ command_line);
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Processes may only query perf_event_open with the BPF sandbox disabled.
+ if (browser_command_line.HasSwitch(switches::kEnableThreadInstructionCount) &&
+ command_line->HasSwitch(service_manager::switches::kNoSandbox)) {
+@@ -3660,7 +3660,7 @@ void ChromeContentBrowserClient::GetAdditionalFileSyst
+ }
+ }
+
+-#if defined(OS_POSIX) && !defined(OS_MACOSX)
++#if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_BSD)
+ void ChromeContentBrowserClient::GetAdditionalMappedFilesForChildProcess(
+ const base::CommandLine& command_line,
+ int child_process_id,
+@@ -4362,7 +4362,7 @@ ChromeContentBrowserClient::CreateThrottlesForNavigati
+ }
+
+ #if defined(OS_WIN) || defined(OS_MACOSX) || \
+- (defined(OS_LINUX) && !defined(OS_CHROMEOS))
++ (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ std::unique_ptr<content::NavigationThrottle> browser_switcher_throttle =
+ browser_switcher::BrowserSwitcherNavigationThrottle ::
+ MaybeCreateThrottleFor(handle);
+@@ -5205,7 +5205,7 @@ bool ChromeContentBrowserClient::HandleExternalProtoco
+ std::unique_ptr<content::OverlayWindow>
+ ChromeContentBrowserClient::CreateWindowForPictureInPicture(
+ content::PictureInPictureWindowController* controller) {
+-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || \
++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD) || \
+ defined(OS_CHROMEOS)
+ // Note: content::OverlayWindow::Create() is defined by platform-specific
+ // implementation in chrome/browser/ui/views. This layering hack, which goes
diff --git a/devel/electron6/files/patch-chrome_browser_chrome__content__browser__client.h b/devel/electron6/files/patch-chrome_browser_chrome__content__browser__client.h
new file mode 100644
index 000000000000..501089b6acc7
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_browser_chrome__content__browser__client.h
@@ -0,0 +1,17 @@
+--- chrome/browser/chrome_content_browser_client.h.orig 2019-09-10 11:13:38 UTC
++++ chrome/browser/chrome_content_browser_client.h
+@@ -380,12 +380,12 @@ class ChromeContentBrowserClient : public content::Con
+ void OverridePageVisibilityState(
+ content::RenderFrameHost* render_frame_host,
+ content::PageVisibilityState* visibility_state) override;
+-#if defined(OS_POSIX) && !defined(OS_MACOSX)
++#if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_BSD)
+ void GetAdditionalMappedFilesForChildProcess(
+ const base::CommandLine& command_line,
+ int child_process_id,
+ content::PosixFileDescriptorInfo* mappings) override;
+-#endif // defined(OS_POSIX) && !defined(OS_MACOSX)
++#endif // defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_BSD)
+ #if defined(OS_WIN)
+ bool PreSpawnRenderer(sandbox::TargetPolicy* policy) override;
+ base::string16 GetAppContainerSidForSandboxType(
diff --git a/devel/electron6/files/patch-chrome_browser_custom__handlers_protocol__handler__registry.cc b/devel/electron6/files/patch-chrome_browser_custom__handlers_protocol__handler__registry.cc
new file mode 100644
index 000000000000..4cb0dfb25897
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_browser_custom__handlers_protocol__handler__registry.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/custom_handlers/protocol_handler_registry.cc.orig 2019-09-10 11:13:38 UTC
++++ chrome/browser/custom_handlers/protocol_handler_registry.cc
+@@ -48,7 +48,7 @@ const ProtocolHandler& LookupHandler(
+ // If true default protocol handlers will be removed if the OS level
+ // registration for a protocol is no longer Chrome.
+ bool ShouldRemoveHandlersNotInOS() {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // We don't do this on Linux as the OS registration there is not reliable,
+ // and Chrome OS doesn't have any notion of OS registration.
+ // TODO(benwells): When Linux support is more reliable remove this
diff --git a/devel/electron6/files/patch-chrome_browser_defaults.cc b/devel/electron6/files/patch-chrome_browser_defaults.cc
new file mode 100644
index 000000000000..b230d044577c
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_browser_defaults.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/defaults.cc.orig 2019-09-10 10:42:29 UTC
++++ chrome/browser/defaults.cc
+@@ -43,7 +43,7 @@ const bool kSyncAutoStarts = true;
+ const bool kSyncAutoStarts = false;
+ #endif
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ const bool kScrollEventChangesTab = true;
+ #else
+ const bool kScrollEventChangesTab = false;
diff --git a/devel/electron6/files/patch-chrome_browser_devtools_devtools__eye__dropper.cc b/devel/electron6/files/patch-chrome_browser_devtools_devtools__eye__dropper.cc
new file mode 100644
index 000000000000..6a47447c722c
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_browser_devtools_devtools__eye__dropper.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/devtools/devtools_eye_dropper.cc.orig 2019-09-10 11:13:38 UTC
++++ chrome/browser/devtools/devtools_eye_dropper.cc
+@@ -164,7 +164,7 @@ void DevToolsEyeDropper::UpdateCursor() {
+ // magnified projection only with centered hotspot.
+ // Mac Retina requires cursor to be > 120px in order to render smoothly.
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ const float kCursorSize = 63;
+ const float kDiameter = 63;
+ const float kHotspotOffset = 32;
diff --git a/devel/electron6/files/patch-chrome_browser_diagnostics_diagnostics__writer.h b/devel/electron6/files/patch-chrome_browser_diagnostics_diagnostics__writer.h
new file mode 100644
index 000000000000..0749a35d7e3e
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_browser_diagnostics_diagnostics__writer.h
@@ -0,0 +1,11 @@
+--- chrome/browser/diagnostics/diagnostics_writer.h.orig 2019-09-10 10:42:29 UTC
++++ chrome/browser/diagnostics/diagnostics_writer.h
+@@ -15,6 +15,8 @@ namespace diagnostics {
+ // Console base class used internally.
+ class SimpleConsole;
+
++#undef MACHINE
++
+ class DiagnosticsWriter : public DiagnosticsModel::Observer {
+ public:
+ // The type of formatting done by this writer.
diff --git a/devel/electron6/files/patch-chrome_browser_download_chrome__download__manager__delegate.cc b/devel/electron6/files/patch-chrome_browser_download_chrome__download__manager__delegate.cc
new file mode 100644
index 000000000000..3a70a92ef1c1
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_browser_download_chrome__download__manager__delegate.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/download/chrome_download_manager_delegate.cc.orig 2019-09-10 11:13:38 UTC
++++ chrome/browser/download/chrome_download_manager_delegate.cc
+@@ -1237,7 +1237,7 @@ void ChromeDownloadManagerDelegate::OnDownloadTargetDe
+ target_info->is_filetype_handled_safely)
+ DownloadItemModel(item).SetShouldPreferOpeningInBrowser(true);
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ if (item->GetOriginalMimeType() == "application/x-x509-user-cert")
+ DownloadItemModel(item).SetShouldPreferOpeningInBrowser(true);
+ #endif
+@@ -1267,7 +1267,7 @@ void ChromeDownloadManagerDelegate::OnDownloadTargetDe
+
+ bool ChromeDownloadManagerDelegate::IsOpenInBrowserPreferreredForFile(
+ const base::FilePath& path) {
+-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ if (path.MatchesExtension(FILE_PATH_LITERAL(".pdf"))) {
+ return !download_prefs_->ShouldOpenPdfInSystemReader();
+ }
diff --git a/devel/electron6/files/patch-chrome_browser_download_download__commands.cc b/devel/electron6/files/patch-chrome_browser_download_download__commands.cc
new file mode 100644
index 000000000000..72442f45864e
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_browser_download_download__commands.cc
@@ -0,0 +1,35 @@
+--- chrome/browser/download/download_commands.cc.orig 2019-09-10 11:13:39 UTC
++++ chrome/browser/download/download_commands.cc
+@@ -30,7 +30,7 @@
+ #include "net/base/url_util.h"
+ #include "ui/base/clipboard/scoped_clipboard_writer.h"
+
+-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ #include "chrome/browser/ui/browser.h"
+ #include "chrome/browser/ui/browser_finder.h"
+ #include "chrome/browser/ui/scoped_tabbed_browser_displayer.h"
+@@ -157,7 +157,7 @@ void DownloadCommands::ExecuteCommand(Command command)
+ model_->ExecuteCommand(this, command);
+ }
+
+-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+
+ Browser* DownloadCommands::GetBrowser() const {
+ chrome::ScopedTabbedBrowserDisplayer browser_displayer(model_->profile());
+@@ -180,12 +180,12 @@ bool DownloadCommands::CanOpenPdfInSystemViewer() cons
+ return IsDownloadPdf() &&
+ (IsAdobeReaderDefaultPDFViewer() ? is_adobe_pdf_reader_up_to_date
+ : true);
+-#elif defined(OS_MACOSX) || defined(OS_LINUX)
++#elif defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+ return IsDownloadPdf();
+ #endif
+ }
+
+-#endif // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
++#endif // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+
+ void DownloadCommands::CopyFileAsImageToClipboard() {
+ if (model_->GetState() != download::DownloadItem::COMPLETE ||
diff --git a/devel/electron6/files/patch-chrome_browser_download_download__commands.h b/devel/electron6/files/patch-chrome_browser_download_download__commands.h
new file mode 100644
index 000000000000..c77927d6d86f
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_browser_download_download__commands.h
@@ -0,0 +1,11 @@
+--- chrome/browser/download/download_commands.h.orig 2019-09-10 10:42:29 UTC
++++ chrome/browser/download/download_commands.h
+@@ -45,7 +45,7 @@ class DownloadCommands {
+ bool IsCommandVisible(Command command) const;
+ void ExecuteCommand(Command command);
+
+-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ bool IsDownloadPdf() const;
+ bool CanOpenPdfInSystemViewer() const;
+ Browser* GetBrowser() const;
diff --git a/devel/electron6/files/patch-chrome_browser_download_download__item__model.cc b/devel/electron6/files/patch-chrome_browser_download_download__item__model.cc
new file mode 100644
index 000000000000..f7712c15701d
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_browser_download_download__item__model.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/download/download_item_model.cc.orig 2019-09-10 11:13:39 UTC
++++ chrome/browser/download/download_item_model.cc
+@@ -560,7 +560,7 @@ bool DownloadItemModel::IsCommandChecked(
+ return download_->GetOpenWhenComplete() ||
+ download_crx_util::IsExtensionDownload(*download_);
+ case DownloadCommands::ALWAYS_OPEN_TYPE:
+-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ if (download_commands->CanOpenPdfInSystemViewer()) {
+ DownloadPrefs* prefs = DownloadPrefs::FromBrowserContext(profile());
+ return prefs->ShouldOpenPdfInSystemReader();
+@@ -597,7 +597,7 @@ void DownloadItemModel::ExecuteCommand(DownloadCommand
+ bool is_checked = IsCommandChecked(download_commands,
+ DownloadCommands::ALWAYS_OPEN_TYPE);
+ DownloadPrefs* prefs = DownloadPrefs::FromBrowserContext(profile());
+-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ if (download_commands->CanOpenPdfInSystemViewer()) {
+ prefs->SetShouldOpenPdfInSystemReader(!is_checked);
+ SetShouldPreferOpeningInBrowser(is_checked);
diff --git a/devel/electron6/files/patch-chrome_browser_download_download__prefs.cc b/devel/electron6/files/patch-chrome_browser_download_download__prefs.cc
new file mode 100644
index 000000000000..08d1b758ab98
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_browser_download_download__prefs.cc
@@ -0,0 +1,65 @@
+--- chrome/browser/download/download_prefs.cc.orig 2019-09-10 10:42:29 UTC
++++ chrome/browser/download/download_prefs.cc
+@@ -62,7 +62,7 @@ namespace {
+ // Consider downloads 'dangerous' if they go to the home directory on Linux and
+ // to the desktop on any platform.
+ bool DownloadPathIsDangerous(const base::FilePath& download_path) {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ base::FilePath home_dir = base::GetHomeDir();
+ if (download_path == home_dir) {
+ return true;
+@@ -155,7 +155,7 @@ DownloadPrefs::DownloadPrefs(Profile* profile) : profi
+ GetDefaultDownloadDirectoryForProfile()));
+ #endif // defined(OS_CHROMEOS)
+
+-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ should_open_pdf_in_system_reader_ =
+ prefs->GetBoolean(prefs::kOpenPdfDownloadInSystemReader);
+ #endif
+@@ -257,7 +257,7 @@ void DownloadPrefs::RegisterProfilePrefs(
+ default_download_path);
+ registry->RegisterFilePathPref(prefs::kSaveFileDefaultDirectory,
+ default_download_path);
+-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ registry->RegisterBooleanPref(prefs::kOpenPdfDownloadInSystemReader, false);
+ #endif
+ #if defined(OS_ANDROID)
+@@ -354,7 +354,7 @@ bool DownloadPrefs::IsDownloadPathManaged() const {
+ }
+
+ bool DownloadPrefs::IsAutoOpenUsed() const {
+-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ if (ShouldOpenPdfInSystemReader())
+ return true;
+ #endif
+@@ -368,7 +368,7 @@ bool DownloadPrefs::IsAutoOpenEnabledBasedOnExtension(
+ return false;
+ DCHECK(extension[0] == base::FilePath::kExtensionSeparator);
+ extension.erase(0, 1);
+-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ if (base::FilePath::CompareEqualIgnoreCase(extension,
+ FILE_PATH_LITERAL("pdf")) &&
+ ShouldOpenPdfInSystemReader())
+@@ -405,7 +405,7 @@ void DownloadPrefs::DisableAutoOpenBasedOnExtension(
+ SaveAutoOpenState();
+ }
+
+-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ void DownloadPrefs::SetShouldOpenPdfInSystemReader(bool should_open) {
+ if (should_open_pdf_in_system_reader_ == should_open)
+ return;
+@@ -426,7 +426,7 @@ bool DownloadPrefs::ShouldOpenPdfInSystemReader() cons
+ #endif
+
+ void DownloadPrefs::ResetAutoOpen() {
+-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ SetShouldOpenPdfInSystemReader(false);
+ #endif
+ auto_open_.clear();
diff --git a/devel/electron6/files/patch-chrome_browser_download_download__prefs.h b/devel/electron6/files/patch-chrome_browser_download_download__prefs.h
new file mode 100644
index 000000000000..73421d200546
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_browser_download_download__prefs.h
@@ -0,0 +1,20 @@
+--- chrome/browser/download/download_prefs.h.orig 2019-09-10 10:42:29 UTC
++++ chrome/browser/download/download_prefs.h
+@@ -102,7 +102,7 @@ class DownloadPrefs {
+ // Disables auto-open based on file extension.
+ void DisableAutoOpenBasedOnExtension(const base::FilePath& file_name);
+
+-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ // Store the user preference to disk. If |should_open| is true, also disable
+ // the built-in PDF plugin. If |should_open| is false, enable the PDF plugin.
+ void SetShouldOpenPdfInSystemReader(bool should_open);
+@@ -150,7 +150,7 @@ class DownloadPrefs {
+ AutoOpenCompareFunctor> AutoOpenSet;
+ AutoOpenSet auto_open_;
+
+-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ bool should_open_pdf_in_system_reader_;
+ #endif
+
diff --git a/devel/electron6/files/patch-chrome_browser_download_download__query.cc b/devel/electron6/files/patch-chrome_browser_download_download__query.cc
new file mode 100644
index 000000000000..f883759552e7
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_browser_download_download__query.cc
@@ -0,0 +1,14 @@
+--- chrome/browser/download/download_query.cc.orig 2019-09-10 10:42:29 UTC
++++ chrome/browser/download/download_query.cc
+@@ -27,7 +27,11 @@
+ #include "components/download/public/common/download_item.h"
+ #include "components/url_formatter/url_formatter.h"
+ #include "content/public/browser/content_browser_client.h"
++#if defined(OS_BSD)
++#include <re2/re2.h>
++#else
+ #include "third_party/re2/src/re2/re2.h"
++#endif
+ #include "url/gurl.h"
+
+ using download::DownloadDangerType;
diff --git a/devel/electron6/files/patch-chrome_browser_download_download__shelf__context__menu.cc b/devel/electron6/files/patch-chrome_browser_download_download__shelf__context__menu.cc
new file mode 100644
index 000000000000..fe88ac0897a6
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_browser_download_download__shelf__context__menu.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/download/download_shelf_context_menu.cc.orig 2019-09-10 10:42:29 UTC
++++ chrome/browser/download/download_shelf_context_menu.cc
+@@ -127,7 +127,7 @@ base::string16 DownloadShelfContextMenu::GetLabelForCo
+ : IDS_DOWNLOAD_MENU_PLATFORM_OPEN_ALWAYS;
+ break;
+ }
+-#elif defined(OS_MACOSX) || defined(OS_LINUX)
++#elif defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+ if (can_open_pdf_in_system_viewer) {
+ id = IDS_DOWNLOAD_MENU_PLATFORM_OPEN_ALWAYS;
+ break;
diff --git a/devel/electron6/files/patch-chrome_browser_download_download__status__updater.cc b/devel/electron6/files/patch-chrome_browser_download_download__status__updater.cc
new file mode 100644
index 000000000000..3653d2237302
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_browser_download_download__status__updater.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/download/download_status_updater.cc.orig 2019-09-10 10:42:29 UTC
++++ chrome/browser/download/download_status_updater.cc
+@@ -13,7 +13,7 @@
+ #include "base/memory/ptr_util.h"
+ #include "build/build_config.h"
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ #include "ui/views/linux_ui/linux_ui.h"
+ #endif
+
+@@ -136,7 +136,7 @@ void DownloadStatusUpdater::OnDownloadUpdated(content:
+ #if defined(OS_ANDROID) || (defined(USE_AURA) && !defined(OS_WIN))
+ void DownloadStatusUpdater::UpdateAppIconDownloadProgress(
+ download::DownloadItem* download) {
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ const views::LinuxUI* linux_ui = views::LinuxUI::instance();
+ if (linux_ui) {
+ float progress = 0;
diff --git a/devel/electron6/files/patch-chrome_browser_extensions_BUILD.gn b/devel/electron6/files/patch-chrome_browser_extensions_BUILD.gn
new file mode 100644
index 000000000000..ab29792d9d46
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_browser_extensions_BUILD.gn
@@ -0,0 +1,15 @@
+--- chrome/browser/extensions/BUILD.gn.orig 2019-09-10 11:13:39 UTC
++++ chrome/browser/extensions/BUILD.gn
+@@ -1135,6 +1135,12 @@ jumbo_static_library("extensions") {
+ deps += [ "//chrome/common:service_process_mojom" ]
+ }
+
++ if (is_bsd) {
++ sources -= [
++ "api/image_writer_private/removable_storage_provider_linux.cc",
++ ]
++ }
++
+ if (enable_service_discovery) {
+ sources += [
+ "api/mdns/mdns_api.cc",
diff --git a/devel/electron6/files/patch-chrome_browser_extensions_activity__log_activity__log.cc b/devel/electron6/files/patch-chrome_browser_extensions_activity__log_activity__log.cc
new file mode 100644
index 000000000000..b07f5b4ff44f
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_browser_extensions_activity__log_activity__log.cc
@@ -0,0 +1,14 @@
+--- chrome/browser/extensions/activity_log/activity_log.cc.orig 2019-09-10 11:13:39 UTC
++++ chrome/browser/extensions/activity_log/activity_log.cc
+@@ -53,7 +53,11 @@
+ #include "extensions/browser/extensions_browser_client.h"
+ #include "extensions/common/extension.h"
+ #include "extensions/common/extension_messages.h"
++#if defined(OS_BSD)
++#include <re2/re2.h>
++#else
+ #include "third_party/re2/src/re2/re2.h"
++#endif
+ #include "url/gurl.h"
+
+ namespace constants = activity_log_constants;
diff --git a/devel/electron6/files/patch-chrome_browser_extensions_api_image__writer__private_removable__storage__provider.cc b/devel/electron6/files/patch-chrome_browser_extensions_api_image__writer__private_removable__storage__provider.cc
new file mode 100644
index 000000000000..446d8a085346
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_browser_extensions_api_image__writer__private_removable__storage__provider.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/extensions/api/image_writer_private/removable_storage_provider.cc.orig 2019-09-10 11:13:39 UTC
++++ chrome/browser/extensions/api/image_writer_private/removable_storage_provider.cc
+@@ -21,6 +21,7 @@ static base::LazyInstance<scoped_refptr<StorageDeviceL
+
+ void RemovableStorageProvider::GetAllDevices(DeviceListReadyCallback callback) {
+ DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
++#if !defined(OS_BSD)
+ if (g_test_device_list.Get().get() != nullptr) {
+ base::ThreadTaskRunnerHandle::Get()->PostTask(
+ FROM_HERE,
+@@ -34,6 +35,9 @@ void RemovableStorageProvider::GetAllDevices(DeviceLis
+ base::TaskShutdownBehavior::SKIP_ON_SHUTDOWN},
+ base::BindOnce(&RemovableStorageProvider::PopulateDeviceList),
+ std::move(callback));
++#else
++ NOTIMPLEMENTED();
++#endif
+ }
+
+ // static
diff --git a/devel/electron6/files/patch-chrome_browser_extensions_api_input__ime_input__ime__api.h b/devel/electron6/files/patch-chrome_browser_extensions_api_input__ime_input__ime__api.h
new file mode 100644
index 000000000000..03bd5385657c
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_browser_extensions_api_input__ime_input__ime__api.h
@@ -0,0 +1,11 @@
+--- chrome/browser/extensions/api/input_ime/input_ime_api.h.orig 2019-09-10 11:13:39 UTC
++++ chrome/browser/extensions/api/input_ime/input_ime_api.h
+@@ -31,7 +31,7 @@
+
+ #if defined(OS_CHROMEOS)
+ #include "chrome/browser/extensions/api/input_ime/input_ime_api_chromeos.h"
+-#elif defined(OS_LINUX) || defined(OS_WIN)
++#elif defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD)
+ #include "chrome/browser/extensions/api/input_ime/input_ime_api_nonchromeos.h"
+ #endif // defined(OS_CHROMEOS)
+
diff --git a/devel/electron6/files/patch-chrome_browser_extensions_api_runtime_chrome__runtime__api__delegate.cc b/devel/electron6/files/patch-chrome_browser_extensions_api_runtime_chrome__runtime__api__delegate.cc
new file mode 100644
index 000000000000..bdb45568bf73
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_browser_extensions_api_runtime_chrome__runtime__api__delegate.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/extensions/api/runtime/chrome_runtime_api_delegate.cc.orig 2019-09-10 11:13:39 UTC
++++ chrome/browser/extensions/api/runtime/chrome_runtime_api_delegate.cc
+@@ -299,6 +299,8 @@ bool ChromeRuntimeAPIDelegate::GetPlatformInfo(Platfor
+ info->os = extensions::api::runtime::PLATFORM_OS_CROS;
+ } else if (strcmp(os, "linux") == 0) {
+ info->os = extensions::api::runtime::PLATFORM_OS_LINUX;
++ } else if (strcmp(os, "freebsd") == 0) {
++ info->os = extensions::api::runtime::PLATFORM_OS_FREEBSD;
+ } else if (strcmp(os, "openbsd") == 0) {
+ info->os = extensions::api::runtime::PLATFORM_OS_OPENBSD;
+ } else {
diff --git a/devel/electron6/files/patch-chrome_browser_extensions_api_settings__private_prefs__util.cc b/devel/electron6/files/patch-chrome_browser_extensions_api_settings__private_prefs__util.cc
new file mode 100644
index 000000000000..9d50b8e138c8
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_browser_extensions_api_settings__private_prefs__util.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/extensions/api/settings_private/prefs_util.cc.orig 2019-09-10 11:13:39 UTC
++++ chrome/browser/extensions/api/settings_private/prefs_util.cc
+@@ -128,7 +128,7 @@ const PrefsUtil::TypedPrefMap& PrefsUtil::GetWhitelist
+ settings_api::PrefType::PREF_TYPE_BOOLEAN;
+ (*s_whitelist)[bookmarks::prefs::kShowBookmarkBar] =
+ settings_api::PrefType::PREF_TYPE_BOOLEAN;
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS)
+ (*s_whitelist)[::prefs::kUseCustomChromeFrame] =
+ settings_api::PrefType::PREF_TYPE_BOOLEAN;
+ #endif
+@@ -138,7 +138,7 @@ const PrefsUtil::TypedPrefMap& PrefsUtil::GetWhitelist
+ // Appearance settings.
+ (*s_whitelist)[::prefs::kCurrentThemeID] =
+ settings_api::PrefType::PREF_TYPE_STRING;
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS)
+ (*s_whitelist)[::prefs::kUsesSystemTheme] =
+ settings_api::PrefType::PREF_TYPE_BOOLEAN;
+ #endif
diff --git a/devel/electron6/files/patch-chrome_browser_extensions_api_webrtc__logging__private_webrtc__logging__private__api.cc b/devel/electron6/files/patch-chrome_browser_extensions_api_webrtc__logging__private_webrtc__logging__private__api.cc
new file mode 100644
index 000000000000..202f4e4b9d66
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_browser_extensions_api_webrtc__logging__private_webrtc__logging__private__api.cc
@@ -0,0 +1,43 @@
+--- chrome/browser/extensions/api/webrtc_logging_private/webrtc_logging_private_api.cc.orig 2019-09-10 11:13:39 UTC
++++ chrome/browser/extensions/api/webrtc_logging_private/webrtc_logging_private_api.cc
+@@ -29,7 +29,7 @@
+ #include "extensions/browser/process_manager.h"
+ #include "extensions/common/error_utils.h"
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ #include "extensions/common/permissions/permissions_data.h"
+ #endif
+
+@@ -38,7 +38,7 @@ namespace {
+ bool CanEnableAudioDebugRecordingsFromExtension(
+ const extensions::Extension* extension) {
+ bool enabled_by_permissions = false;
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ if (extension) {
+ enabled_by_permissions =
+ extension->permissions_data()->active_permissions().HasAPIPermission(
+@@ -609,7 +609,7 @@ void WebrtcLoggingPrivateStartEventLoggingFunction::Fi
+ }
+
+ bool WebrtcLoggingPrivateGetLogsDirectoryFunction::RunAsync() {
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ // Unlike other WebrtcLoggingPrivate functions that take a RequestInfo object,
+ // this function shouldn't be called by a component extension on behalf of
+ // some web code. It returns a DirectoryEntry for use directly in the calling
+@@ -633,11 +633,11 @@ bool WebrtcLoggingPrivateGetLogsDirectoryFunction::Run
+ &WebrtcLoggingPrivateGetLogsDirectoryFunction::FireErrorCallback,
+ this));
+ return true;
+-#else // defined(OS_LINUX) || defined(OS_CHROMEOS)
++#else // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ SetError("Not supported on the current OS");
+ SendResponse(false);
+ return false;
+-#endif // defined(OS_LINUX) || defined(OS_CHROMEOS)
++#endif // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ }
+
+ void WebrtcLoggingPrivateGetLogsDirectoryFunction::FireCallback(
diff --git a/devel/electron6/files/patch-chrome_browser_extensions_bookmark__app__extension__util.cc b/devel/electron6/files/patch-chrome_browser_extensions_bookmark__app__extension__util.cc
new file mode 100644
index 000000000000..281691145c84
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_browser_extensions_bookmark__app__extension__util.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/extensions/bookmark_app_extension_util.cc.orig 2019-09-10 11:13:39 UTC
++++ chrome/browser/extensions/bookmark_app_extension_util.cc
+@@ -34,7 +34,7 @@ namespace {
+
+ #if !defined(OS_CHROMEOS)
+ bool CanOsAddDesktopShortcuts() {
+-#if defined(OS_LINUX) || defined(OS_WIN)
++#if defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD)
+ return true;
+ #else
+ return false;
diff --git a/devel/electron6/files/patch-chrome_browser_extensions_browser__context__keyed__service__factories.cc b/devel/electron6/files/patch-chrome_browser_extensions_browser__context__keyed__service__factories.cc
new file mode 100644
index 000000000000..af7143471e43
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_browser_extensions_browser__context__keyed__service__factories.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/extensions/browser_context_keyed_service_factories.cc.orig 2019-09-10 11:13:39 UTC
++++ chrome/browser/extensions/browser_context_keyed_service_factories.cc
+@@ -54,7 +54,7 @@
+ #include "chrome/browser/chromeos/extensions/input_method_api.h"
+ #include "chrome/browser/chromeos/extensions/media_player_api.h"
+ #include "chrome/browser/extensions/api/input_ime/input_ime_api.h"
+-#elif defined(OS_LINUX) || defined(OS_WIN)
++#elif defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD)
+ #include "chrome/browser/extensions/api/input_ime/input_ime_api.h"
+ #endif
+
+@@ -92,7 +92,7 @@ void EnsureBrowserContextKeyedServiceFactoriesBuilt()
+ #if defined(OS_CHROMEOS)
+ extensions::InputImeAPI::GetFactoryInstance();
+ extensions::InputMethodAPI::GetFactoryInstance();
+-#elif defined(OS_LINUX) || defined(OS_WIN)
++#elif defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD)
+ extensions::InputImeAPI::GetFactoryInstance();
+ #endif
+ extensions::LanguageSettingsPrivateDelegateFactory::GetInstance();
diff --git a/devel/electron6/files/patch-chrome_browser_extensions_external__provider__impl.cc b/devel/electron6/files/patch-chrome_browser_extensions_external__provider__impl.cc
new file mode 100644
index 000000000000..f9d3932d5447
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_browser_extensions_external__provider__impl.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/extensions/external_provider_impl.cc.orig 2019-09-10 11:13:39 UTC
++++ chrome/browser/extensions/external_provider_impl.cc
+@@ -755,7 +755,7 @@ void ExternalProviderImpl::CreateExternalProviders(
+ chromeos::DemoSession::Get()->SetExtensionsExternalLoader(loader);
+ provider_list->push_back(std::move(demo_apps_provider));
+ }
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ provider_list->push_back(std::make_unique<ExternalProviderImpl>(
+ service,
+ new ExternalPrefLoader(chrome::DIR_STANDALONE_EXTERNAL_EXTENSIONS,
+@@ -782,7 +782,7 @@ void ExternalProviderImpl::CreateExternalProviders(
+ bundled_extension_creation_flags));
+
+ // Define a per-user source of external extensions.
+-#if defined(OS_MACOSX) || (defined(OS_LINUX) && defined(CHROMIUM_BUILD))
++#if defined(OS_MACOSX) || ((defined(OS_LINUX) || defined(OS_BSD)) && defined(CHROMIUM_BUILD))
+ provider_list->push_back(std::make_unique<ExternalProviderImpl>(
+ service,
+ new ExternalPrefLoader(chrome::DIR_USER_EXTERNAL_EXTENSIONS,
diff --git a/devel/electron6/files/patch-chrome_browser_extensions_install__signer.cc b/devel/electron6/files/patch-chrome_browser_extensions_install__signer.cc
new file mode 100644
index 000000000000..c090765e209d
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_browser_extensions_install__signer.cc
@@ -0,0 +1,18 @@
+--- chrome/browser/extensions/install_signer.cc.orig 2019-09-10 10:42:29 UTC
++++ chrome/browser/extensions/install_signer.cc
+@@ -293,13 +293,13 @@ void LogRequestStartHistograms() {
+ DCHECK(g_single_thread_checker.Get().CalledOnValidThread());
+
+ // Process::Current().CreationTime is only defined on some platforms.
+-#if defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_LINUX)
++#if defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD)
+ const base::Time process_creation_time =
+ base::Process::Current().CreationTime();
+ UMA_HISTOGRAM_COUNTS_1M(
+ "ExtensionInstallSigner.UptimeAtTimeOfRequest",
+ (base::Time::Now() - process_creation_time).InSeconds());
+-#endif // defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_LINUX)
++#endif // defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD)
+
+ base::TimeDelta delta;
+ base::TimeTicks now = base::TimeTicks::Now();
diff --git a/devel/electron6/files/patch-chrome_browser_first__run_first__run__dialog.h b/devel/electron6/files/patch-chrome_browser_first__run_first__run__dialog.h
new file mode 100644
index 000000000000..9f551cdbd093
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_browser_first__run_first__run__dialog.h
@@ -0,0 +1,11 @@
+--- chrome/browser/first_run/first_run_dialog.h.orig 2019-09-10 10:42:29 UTC
++++ chrome/browser/first_run/first_run_dialog.h
+@@ -9,7 +9,7 @@
+ #include "build/build_config.h"
+
+ // Hide this function on platforms where the dialog does not exist.
+-#if defined(OS_MACOSX) || (defined(OS_LINUX) && !defined(OS_CHROMEOS))
++#if defined(OS_MACOSX) || (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+
+ class Profile;
+
diff --git a/devel/electron6/files/patch-chrome_browser_first__run_first__run__internal.h b/devel/electron6/files/patch-chrome_browser_first__run_first__run__internal.h
new file mode 100644
index 000000000000..ac2c6417b8db
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_browser_first__run_first__run__internal.h
@@ -0,0 +1,18 @@
+--- chrome/browser/first_run/first_run_internal.h.orig 2019-09-10 10:42:29 UTC
++++ chrome/browser/first_run/first_run_internal.h
+@@ -64,13 +64,13 @@ FirstRunState DetermineFirstRunState(bool has_sentinel
+ bool force_first_run,
+ bool no_first_run);
+
+-#if defined(OS_MACOSX) || (defined(OS_LINUX) && !defined(OS_CHROMEOS))
++#if defined(OS_MACOSX) || (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ // For testing, forces the first run dialog to either be shown or not. If not
+ // called, the decision to show the dialog or not will be made by Chrome based
+ // on a number of factors (such as install type, whether it's a Chrome-branded
+ // build, etc).
+ void ForceFirstRunDialogShownForTesting(bool shown);
+-#endif // defined(OS_MACOSX) || (defined(OS_LINUX) && !defined(OS_CHROMEOS))
++#endif // defined(OS_MACOSX) || (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+
+ } // namespace internal
+ } // namespace first_run
diff --git a/devel/electron6/files/patch-chrome_browser_first__run_first__run__internal__posix.cc b/devel/electron6/files/patch-chrome_browser_first__run_first__run__internal__posix.cc
new file mode 100644
index 000000000000..b18d0dd1f115
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_browser_first__run_first__run__internal__posix.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/first_run/first_run_internal_posix.cc.orig 2019-09-10 11:13:39 UTC
++++ chrome/browser/first_run/first_run_internal_posix.cc
+@@ -44,7 +44,7 @@ enum class ForcedShowDialogState {
+ ForcedShowDialogState g_forced_show_dialog_state =
+ ForcedShowDialogState::kNotForced;
+
+-#if !defined(OS_CHROMEOS)
++#if !defined(OS_CHROMEOS) && !defined(OS_BSD)
+ // Returns whether the first run dialog should be shown. This is only true for
+ // certain builds, and only if the user has not already set preferences. In a
+ // real, official-build first run, initializes the default metrics reporting if
+@@ -95,7 +95,7 @@ void ForceFirstRunDialogShownForTesting(bool shown) {
+ }
+
+ void DoPostImportPlatformSpecificTasks(Profile* profile) {
+-#if !defined(OS_CHROMEOS)
++#if !defined(OS_CHROMEOS) && !defined(OS_BSD)
+ if (!ShouldShowFirstRunDialog())
+ return;
+
diff --git a/devel/electron6/files/patch-chrome_browser_flag__descriptions.cc b/devel/electron6/files/patch-chrome_browser_flag__descriptions.cc
new file mode 100644
index 000000000000..4bf61bbb05cc
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_browser_flag__descriptions.cc
@@ -0,0 +1,28 @@
+--- chrome/browser/flag_descriptions.cc.orig 2019-09-10 11:13:39 UTC
++++ chrome/browser/flag_descriptions.cc
+@@ -3256,21 +3256,21 @@ const char kInstallableInkDropDescription[] =
+
+ // Random platform combinations -----------------------------------------------
+
+-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+
+ const char kWebGL2ComputeContextName[] = "WebGL 2.0 Compute";
+ const char kWebGL2ComputeContextDescription[] =
+ "Enable the use of WebGL 2.0 Compute API.";
+
+-#endif // defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS)
++#endif // defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+
+-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+
+ const char kDirectManipulationStylusName[] = "Direct Manipulation Stylus";
+ const char kDirectManipulationStylusDescription[] =
+ "If enabled, Chrome will scroll web pages on stylus drag.";
+
+-#endif // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
++#endif // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+
+ #if defined(OS_MACOSX) || defined(OS_CHROMEOS)
+
diff --git a/devel/electron6/files/patch-chrome_browser_flag__descriptions.h b/devel/electron6/files/patch-chrome_browser_flag__descriptions.h
new file mode 100644
index 000000000000..8642932a488a
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_browser_flag__descriptions.h
@@ -0,0 +1,26 @@
+--- chrome/browser/flag_descriptions.h.orig 2019-09-10 11:13:39 UTC
++++ chrome/browser/flag_descriptions.h
+@@ -1963,19 +1963,19 @@ extern const char kInstallableInkDropDescription[];
+
+ // Random platform combinations -----------------------------------------------
+
+-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+
+ extern const char kWebGL2ComputeContextName[];
+ extern const char kWebGL2ComputeContextDescription[];
+
+-#endif // defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS)
++#endif // defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+
+-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+
+ extern const char kDirectManipulationStylusName[];
+ extern const char kDirectManipulationStylusDescription[];
+
+-#endif // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
++#endif // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+
+ #if defined(OS_MACOSX) || defined(OS_CHROMEOS)
+
diff --git a/devel/electron6/files/patch-chrome_browser_media__galleries_fileapi_mtp__device__map__service.cc b/devel/electron6/files/patch-chrome_browser_media__galleries_fileapi_mtp__device__map__service.cc
new file mode 100644
index 000000000000..164a94a5399e
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_browser_media__galleries_fileapi_mtp__device__map__service.cc
@@ -0,0 +1,15 @@
+--- chrome/browser/media_galleries/fileapi/mtp_device_map_service.cc.orig 2019-09-10 11:13:40 UTC
++++ chrome/browser/media_galleries/fileapi/mtp_device_map_service.cc
+@@ -39,10 +39,12 @@ void MTPDeviceMapService::RegisterMTPFileSystem(
+ // Note that this initializes the delegate asynchronously, but since
+ // the delegate will only be used from the IO thread, it is guaranteed
+ // to be created before use of it expects it to be there.
++#if !defined(OS_FREEBSD)
+ CreateMTPDeviceAsyncDelegate(
+ device_location, read_only,
+ base::Bind(&MTPDeviceMapService::AddAsyncDelegate,
+ base::Unretained(this), device_location, read_only));
++#endif
+ mtp_device_usage_map_[key] = 0;
+ }
+
diff --git a/devel/electron6/files/patch-chrome_browser_media__galleries_media__file__system__registry.cc b/devel/electron6/files/patch-chrome_browser_media__galleries_media__file__system__registry.cc
new file mode 100644
index 000000000000..93b803ccb112
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_browser_media__galleries_media__file__system__registry.cc
@@ -0,0 +1,14 @@
+--- chrome/browser/media_galleries/media_file_system_registry.cc.orig 2019-09-10 11:13:40 UTC
++++ chrome/browser/media_galleries/media_file_system_registry.cc
+@@ -732,7 +732,10 @@ class MediaFileSystemRegistry::MediaFileSystemContextI
+ // Constructor in 'private' section because depends on private class definition.
+ MediaFileSystemRegistry::MediaFileSystemRegistry()
+ : file_system_context_(new MediaFileSystemContextImpl) {
+- StorageMonitor::GetInstance()->AddObserver(this);
++ // This conditional is needed for shutdown. Destructors
++ // try to get the media file system registry.
++ if (StorageMonitor::GetInstance())
++ StorageMonitor::GetInstance()->AddObserver(this);
+ }
+
+ MediaFileSystemRegistry::~MediaFileSystemRegistry() {
diff --git a/devel/electron6/files/patch-chrome_browser_media_router_discovery_discovery__network__list__posix.cc b/devel/electron6/files/patch-chrome_browser_media_router_discovery_discovery__network__list__posix.cc
new file mode 100644
index 000000000000..11b31c5d3eb4
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_browser_media_router_discovery_discovery__network__list__posix.cc
@@ -0,0 +1,28 @@
+--- chrome/browser/media/router/discovery/discovery_network_list_posix.cc.orig 2019-09-10 10:42:29 UTC
++++ chrome/browser/media/router/discovery/discovery_network_list_posix.cc
+@@ -10,6 +10,7 @@
+ #include <netinet/in.h>
+ #include <sys/socket.h>
+ #include <sys/types.h>
++#include <sys/time.h>
+
+ #include <algorithm>
+
+@@ -19,7 +20,7 @@
+ #include "chrome/browser/media/router/discovery/discovery_network_list_wifi.h"
+ #include "net/base/net_errors.h"
+
+-#if !defined(OS_MACOSX)
++#if !defined(OS_MACOSX) && !defined(OS_BSD)
+ #include <netpacket/packet.h>
+ #else
+ #include <net/if_dl.h>
+@@ -28,7 +29,7 @@
+ namespace media_router {
+ namespace {
+
+-#if !defined(OS_MACOSX)
++#if !defined(OS_MACOSX) && !defined(OS_BSD)
+ using sll = struct sockaddr_ll;
+ #define SOCKET_ARP_TYPE(s) ((s)->sll_hatype)
+ #define SOCKET_ADDRESS_LEN(s) ((s)->sll_halen)
diff --git a/devel/electron6/files/patch-chrome_browser_media_router_discovery_discovery__network__list__wifi__linux.cc b/devel/electron6/files/patch-chrome_browser_media_router_discovery_discovery__network__list__wifi__linux.cc
new file mode 100644
index 000000000000..39153a755e3e
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_browser_media_router_discovery_discovery__network__list__wifi__linux.cc
@@ -0,0 +1,27 @@
+--- chrome/browser/media/router/discovery/discovery_network_list_wifi_linux.cc.orig 2019-09-10 10:42:29 UTC
++++ chrome/browser/media/router/discovery/discovery_network_list_wifi_linux.cc
+@@ -9,8 +9,6 @@
+ #include <sys/socket.h>
+ #include <sys/types.h>
+
+-#include <linux/wireless.h>
+-
+ #include "base/files/scoped_file.h"
+ #include "base/logging.h"
+ #include "net/base/network_interfaces_linux.h"
+@@ -20,6 +18,7 @@ namespace media_router {
+ bool MaybeGetWifiSSID(const std::string& if_name, std::string* ssid_out) {
+ DCHECK(ssid_out);
+
++#if !defined(OS_BSD)
+ base::ScopedFD ioctl_socket(socket(AF_INET, SOCK_DGRAM, 0));
+ if (!ioctl_socket.is_valid()) {
+ // AF_INET is for IPv4, so it may fail for IPv6-only hosts even when there
+@@ -41,6 +40,7 @@ bool MaybeGetWifiSSID(const std::string& if_name, std:
+ ssid_out->assign(ssid);
+ return true;
+ }
++#endif
+ return false;
+ }
+
diff --git a/devel/electron6/files/patch-chrome_browser_media_router_providers_wired__display_wired__display__media__route__provider.cc b/devel/electron6/files/patch-chrome_browser_media_router_providers_wired__display_wired__display__media__route__provider.cc
new file mode 100644
index 000000000000..75c038403333
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_browser_media_router_providers_wired__display_wired__display__media__route__provider.cc
@@ -0,0 +1,23 @@
+--- chrome/browser/media/router/providers/wired_display/wired_display_media_route_provider.cc.orig 2019-09-10 11:13:40 UTC
++++ chrome/browser/media/router/providers/wired_display/wired_display_media_route_provider.cc
+@@ -112,6 +112,12 @@ void WiredDisplayMediaRouteProvider::CreateRoute(
+ bool incognito,
+ CreateRouteCallback callback) {
+ DCHECK(!base::ContainsKey(presentations_, presentation_id));
++#if defined(OS_BSD) // XXX
++ std::move(callback).Run(base::nullopt, nullptr,
++ std::string("Not implemented"),
++ RouteRequestResult::UNKNOWN_ERROR);
++ return;
++#else
+ base::Optional<Display> display = GetDisplayBySinkId(sink_id);
+ if (!display) {
+ std::move(callback).Run(base::nullopt, nullptr,
+@@ -138,6 +144,7 @@ void WiredDisplayMediaRouteProvider::CreateRoute(
+ std::move(callback).Run(route, nullptr, base::nullopt,
+ RouteRequestResult::OK);
+ NotifyRouteObservers();
++#endif
+ }
+
+ void WiredDisplayMediaRouteProvider::JoinRoute(
diff --git a/devel/electron6/files/patch-chrome_browser_media_webrtc_webrtc__event__log__uploader.cc b/devel/electron6/files/patch-chrome_browser_media_webrtc_webrtc__event__log__uploader.cc
new file mode 100644
index 000000000000..07c95966e5e1
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_browser_media_webrtc_webrtc__event__log__uploader.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/media/webrtc/webrtc_event_log_uploader.cc.orig 2019-09-10 11:13:40 UTC
++++ chrome/browser/media/webrtc/webrtc_event_log_uploader.cc
+@@ -36,7 +36,7 @@ constexpr size_t kExpectedMimeOverheadBytes = 1000; /
+ const char kProduct[] = "Chrome";
+ #elif defined(OS_MACOSX)
+ const char kProduct[] = "Chrome_Mac";
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ const char kProduct[] = "Chrome_Linux";
+ #elif defined(OS_ANDROID)
+ const char kProduct[] = "Chrome_Android";
diff --git a/devel/electron6/files/patch-chrome_browser_media_webrtc_webrtc__log__uploader.cc b/devel/electron6/files/patch-chrome_browser_media_webrtc_webrtc__log__uploader.cc
new file mode 100644
index 000000000000..01e831b60f3c
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_browser_media_webrtc_webrtc__log__uploader.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/media/webrtc/webrtc_log_uploader.cc.orig 2019-09-10 11:13:40 UTC
++++ chrome/browser/media/webrtc/webrtc_log_uploader.cc
+@@ -393,6 +393,8 @@ void WebRtcLogUploader::SetupMultipart(
+ const char product[] = "Chrome_Android";
+ #elif defined(OS_CHROMEOS)
+ const char product[] = "Chrome_ChromeOS";
++#elif defined(OS_FREEBSD)
++ const char product[] = "Chrome_FreeBSD";
+ #else
+ #error Platform not supported.
+ #endif
diff --git a/devel/electron6/files/patch-chrome_browser_media_webrtc_webrtc__logging__handler__host.cc b/devel/electron6/files/patch-chrome_browser_media_webrtc_webrtc__logging__handler__host.cc
new file mode 100644
index 000000000000..e77f4111ae56
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_browser_media_webrtc_webrtc__logging__handler__host.cc
@@ -0,0 +1,33 @@
+--- chrome/browser/media/webrtc/webrtc_logging_handler_host.cc.orig 2019-09-10 11:13:40 UTC
++++ chrome/browser/media/webrtc/webrtc_logging_handler_host.cc
+@@ -26,10 +26,10 @@
+ #include "content/public/browser/content_browser_client.h"
+ #include "content/public/browser/render_process_host.h"
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ #include "content/public/browser/child_process_security_policy.h"
+ #include "storage/browser/fileapi/isolated_context.h"
+-#endif // defined(OS_LINUX) || defined(OS_CHROMEOS)
++#endif // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+
+ using content::BrowserThread;
+ using webrtc_event_logging::WebRtcEventLogManager;
+@@ -281,7 +281,7 @@ void WebRtcLoggingHandlerHost::StartEventLogging(
+ web_app_id, callback);
+ }
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ void WebRtcLoggingHandlerHost::GetLogsDirectory(
+ const LogsDirectoryCallback& callback,
+ const LogsDirectoryErrorCallback& error_callback) {
+@@ -328,7 +328,7 @@ void WebRtcLoggingHandlerHost::GrantLogsDirectoryAcces
+ FROM_HERE, {BrowserThread::UI},
+ base::BindOnce(callback, file_system.id(), registered_name));
+ }
+-#endif // defined(OS_LINUX) || defined(OS_CHROMEOS)
++#endif // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD
+
+ void WebRtcLoggingHandlerHost::OnRtpPacket(
+ std::unique_ptr<uint8_t[]> packet_header,
diff --git a/devel/electron6/files/patch-chrome_browser_media_webrtc_webrtc__logging__handler__host.h b/devel/electron6/files/patch-chrome_browser_media_webrtc_webrtc__logging__handler__host.h
new file mode 100644
index 000000000000..02dfc1b9b6c7
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_browser_media_webrtc_webrtc__logging__handler__host.h
@@ -0,0 +1,36 @@
+--- chrome/browser/media/webrtc/webrtc_logging_handler_host.h.orig 2019-09-10 11:13:40 UTC
++++ chrome/browser/media/webrtc/webrtc_logging_handler_host.h
+@@ -153,13 +153,13 @@ class WebRtcLoggingHandlerHost : public content::Brows
+ size_t web_app_id,
+ const StartEventLoggingCallback& callback);
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ // Ensures that the WebRTC Logs directory exists and then grants render
+ // process access to the 'WebRTC Logs' directory, and invokes |callback| with
+ // the ids necessary to create a DirectoryEntry object.
+ void GetLogsDirectory(const LogsDirectoryCallback& callback,
+ const LogsDirectoryErrorCallback& error_callback);
+-#endif // defined(OS_LINUX) || defined(OS_CHROMEOS)
++#endif // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+
+ private:
+ friend class content::BrowserThread;
+@@ -226,7 +226,7 @@ class WebRtcLoggingHandlerHost : public content::Brows
+ bool success,
+ const std::string& error_message);
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ // Grants the render process access to the 'WebRTC Logs' directory, and
+ // invokes |callback| with the ids necessary to create a DirectoryEntry
+ // object. If the |logs_path| couldn't be created or found, |error_callback|
+@@ -235,7 +235,7 @@ class WebRtcLoggingHandlerHost : public content::Brows
+ const LogsDirectoryCallback& callback,
+ const LogsDirectoryErrorCallback& error_callback,
+ const base::FilePath& logs_path);
+-#endif // defined(OS_LINUX) || defined(OS_CHROMEOS)
++#endif // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+
+ // The render process ID this object belongs to.
+ const int render_process_id_;
diff --git a/devel/electron6/files/patch-chrome_browser_memory__details.cc b/devel/electron6/files/patch-chrome_browser_memory__details.cc
new file mode 100644
index 000000000000..5aebd4178839
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_browser_memory__details.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/memory_details.cc.orig 2019-09-10 11:13:40 UTC
++++ chrome/browser/memory_details.cc
+@@ -38,7 +38,7 @@
+ #include "services/resource_coordinator/public/cpp/memory_instrumentation/memory_instrumentation.h"
+ #include "ui/base/l10n/l10n_util.h"
+
+-#if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_ANDROID)
++#if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_ANDROID) && !defined(OS_BSD)
+ #include "services/service_manager/zygote/zygote_host_linux.h"
+ #endif
+
+@@ -336,7 +336,7 @@ void MemoryDetails::CollectChildInfoOnUIThread() {
+ process.titles.push_back(title);
+ }
+
+-#if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_ANDROID)
++#if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_ANDROID) && !defined(OS_BSD)
+ if (service_manager::ZygoteHost::GetInstance()->IsZygotePid(process.pid)) {
+ process.process_type = content::PROCESS_TYPE_ZYGOTE;
+ }
diff --git a/devel/electron6/files/patch-chrome_browser_memory__details__linux.cc b/devel/electron6/files/patch-chrome_browser_memory__details__linux.cc
new file mode 100644
index 000000000000..53913d34622b
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_browser_memory__details__linux.cc
@@ -0,0 +1,13 @@
+--- chrome/browser/memory_details_linux.cc.orig 2019-09-10 11:13:40 UTC
++++ chrome/browser/memory_details_linux.cc
+@@ -72,8 +72,10 @@ ProcessData GetProcessDataMemoryInformation(
+
+ std::unique_ptr<base::ProcessMetrics> metrics(
+ base::ProcessMetrics::CreateProcessMetrics(pid));
++#if !defined(OS_BSD)
+ pmi.num_open_fds = metrics->GetOpenFdCount();
+ pmi.open_fds_soft_limit = metrics->GetOpenFdSoftLimit();
++#endif
+
+ process_data.processes.push_back(pmi);
+ }
diff --git a/devel/electron6/files/patch-chrome_browser_metrics_bluetooth__available__utility.cc b/devel/electron6/files/patch-chrome_browser_metrics_bluetooth__available__utility.cc
new file mode 100644
index 000000000000..62d63769bbcc
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_browser_metrics_bluetooth__available__utility.cc
@@ -0,0 +1,13 @@
+--- chrome/browser/metrics/bluetooth_available_utility.cc.orig 2019-09-10 11:13:40 UTC
++++ chrome/browser/metrics/bluetooth_available_utility.cc
+@@ -76,8 +76,10 @@ void ReportBluetoothAvailability() {
+ return;
+ }
+
++#if !defined(OS_BSD)
+ device::BluetoothAdapterFactory::Get().GetAdapter(
+ base::BindOnce(&OnGetAdapter));
++#endif
+ }
+
+ } // namespace bluetooth_utility
diff --git a/devel/electron6/files/patch-chrome_browser_metrics_chrome__browser__main__extra__parts__metrics.cc b/devel/electron6/files/patch-chrome_browser_metrics_chrome__browser__main__extra__parts__metrics.cc
new file mode 100644
index 000000000000..e851f993f802
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_browser_metrics_chrome__browser__main__extra__parts__metrics.cc
@@ -0,0 +1,21 @@
+--- chrome/browser/metrics/chrome_browser_main_extra_parts_metrics.cc.orig 2019-09-10 11:13:40 UTC
++++ chrome/browser/metrics/chrome_browser_main_extra_parts_metrics.cc
+@@ -44,7 +44,9 @@
+
+ #if defined(OS_LINUX) && !defined(OS_CHROMEOS)
+ #include <gnu/libc-version.h>
++#endif
+
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ #include "base/linux_util.h"
+ #include "base/strings/string_split.h"
+ #include "base/strings/string_util.h"
+@@ -52,7 +54,7 @@
+ #if defined(USE_X11)
+ #include "ui/base/x/x11_util.h"
+ #endif
+-#endif // defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#endif // defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+
+ #if defined(USE_OZONE) || defined(USE_X11)
+ #include "ui/events/devices/input_device_event_observer.h"
diff --git a/devel/electron6/files/patch-chrome_browser_metrics_chrome__metrics__service__client.cc b/devel/electron6/files/patch-chrome_browser_metrics_chrome__metrics__service__client.cc
new file mode 100644
index 000000000000..2ba7a25f3eb6
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_browser_metrics_chrome__metrics__service__client.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/metrics/chrome_metrics_service_client.cc.orig 2019-09-10 11:13:40 UTC
++++ chrome/browser/metrics/chrome_metrics_service_client.cc
+@@ -902,7 +902,7 @@ bool ChromeMetricsServiceClient::RegisterForProfileEve
+ }
+ #endif
+ #if defined(OS_WIN) || defined(OS_MACOSX) || \
+- (defined(OS_LINUX) && !defined(OS_CHROMEOS))
++ (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ // This creates the DesktopProfileSessionDurationsServices if it didn't exist
+ // already.
+ metrics::DesktopProfileSessionDurationsServiceFactory::GetForBrowserContext(
diff --git a/devel/electron6/files/patch-chrome_browser_metrics_process__memory__metrics__emitter.cc b/devel/electron6/files/patch-chrome_browser_metrics_process__memory__metrics__emitter.cc
new file mode 100644
index 000000000000..f928454a9733
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_browser_metrics_process__memory__metrics__emitter.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/metrics/process_memory_metrics_emitter.cc.orig 2019-09-10 11:13:40 UTC
++++ chrome/browser/metrics/process_memory_metrics_emitter.cc
+@@ -360,7 +360,7 @@ void EmitProcessUmaAndUkm(const GlobalMemoryDump::Proc
+
+ builder->SetPrivateMemoryFootprint(pmd.os_dump().private_footprint_kb / 1024);
+ builder->SetSharedMemoryFootprint(pmd.os_dump().shared_footprint_kb / 1024);
+-#if defined(OS_LINUX) || defined(OS_ANDROID)
++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
+ builder->SetPrivateSwapFootprint(pmd.os_dump().private_footprint_swap_kb /
+ 1024);
+ #endif
+@@ -383,7 +383,7 @@ void EmitProcessUmaAndUkm(const GlobalMemoryDump::Proc
+ MEMORY_METRICS_HISTOGRAM_MB(
+ std::string(UMA_PREFIX) + process_name + ".SharedMemoryFootprint",
+ pmd.os_dump().shared_footprint_kb / 1024);
+-#if defined(OS_LINUX) || defined(OS_ANDROID)
++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
+ MEMORY_METRICS_HISTOGRAM_MB(
+ std::string(UMA_PREFIX) + process_name + ".PrivateSwapFootprint",
+ pmd.os_dump().private_footprint_swap_kb / 1024);
diff --git a/devel/electron6/files/patch-chrome_browser_net_system__network__context__manager.cc b/devel/electron6/files/patch-chrome_browser_net_system__network__context__manager.cc
new file mode 100644
index 000000000000..e3848ffb689c
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_browser_net_system__network__context__manager.cc
@@ -0,0 +1,65 @@
+--- chrome/browser/net/system_network_context_manager.cc.orig 2019-09-10 11:13:40 UTC
++++ chrome/browser/net/system_network_context_manager.cc
+@@ -72,12 +72,12 @@
+ #include "chrome/browser/chromeos/policy/browser_policy_connector_chromeos.h"
+ #endif // defined(OS_CHROMEOS)
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS)
+ #include "chrome/common/chrome_paths_internal.h"
+ #include "chrome/common/chrome_switches.h"
+ #include "chrome/grit/chromium_strings.h"
+ #include "ui/base/l10n/l10n_util.h"
+-#endif // defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#endif // (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS)
+
+ namespace {
+
+@@ -191,10 +191,10 @@ network::mojom::HttpAuthDynamicParamsPtr CreateHttpAut
+ auth_dynamic_params->enable_negotiate_port =
+ local_state->GetBoolean(prefs::kEnableAuthNegotiatePort);
+
+-#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ auth_dynamic_params->delegate_by_kdc_policy =
+ local_state->GetBoolean(prefs::kAuthNegotiateDelegateByKdcPolicy);
+-#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_CHROMEOS)
++#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+
+ #if defined(OS_POSIX)
+ auth_dynamic_params->ntlm_v2_enabled =
+@@ -434,10 +434,10 @@ SystemNetworkContextManager::SystemNetworkContextManag
+ pref_change_registrar_.Add(prefs::kEnableAuthNegotiatePort,
+ auth_pref_callback);
+
+-#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ pref_change_registrar_.Add(prefs::kAuthNegotiateDelegateByKdcPolicy,
+ auth_pref_callback);
+-#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_CHROMEOS)
++#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+
+ #if defined(OS_POSIX)
+ pref_change_registrar_.Add(prefs::kNtlmV2Enabled, auth_pref_callback);
+@@ -486,10 +486,10 @@ void SystemNetworkContextManager::RegisterPrefs(PrefRe
+ registry->RegisterStringPref(prefs::kAuthServerWhitelist, std::string());
+ registry->RegisterStringPref(prefs::kAuthNegotiateDelegateWhitelist,
+ std::string());
+-#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ registry->RegisterBooleanPref(prefs::kAuthNegotiateDelegateByKdcPolicy,
+ false);
+-#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_CHROMEOS)
++#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+
+ #if defined(OS_POSIX)
+ registry->RegisterBooleanPref(
+@@ -586,7 +586,7 @@ void SystemNetworkContextManager::OnNetworkServiceCrea
+ content::GetNetworkService()->ConfigureStubHostResolver(
+ stub_resolver_enabled, std::move(dns_over_https_servers));
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS)
+ const base::CommandLine& command_line =
+ *base::CommandLine::ForCurrentProcess();
+
diff --git a/devel/electron6/files/patch-chrome_browser_notifications_notification__display__service__impl.cc b/devel/electron6/files/patch-chrome_browser_notifications_notification__display__service__impl.cc
new file mode 100644
index 000000000000..93e5a0aee1b9
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_browser_notifications_notification__display__service__impl.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/notifications/notification_display_service_impl.cc.orig 2019-09-10 11:13:40 UTC
++++ chrome/browser/notifications/notification_display_service_impl.cc
+@@ -31,7 +31,7 @@
+ #include "chrome/browser/notifications/notification_platform_bridge_message_center.h"
+ #endif
+
+-#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_BSD)
+ #include "chrome/browser/send_tab_to_self/desktop_notification_handler.h"
+ #endif
+
+@@ -121,7 +121,7 @@ NotificationDisplayServiceImpl::NotificationDisplaySer
+ AddNotificationHandler(NotificationHandler::Type::WEB_PERSISTENT,
+ std::make_unique<PersistentNotificationHandler>());
+
+-#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_BSD)
+ AddNotificationHandler(
+ NotificationHandler::Type::SEND_TAB_TO_SELF,
+ std::make_unique<send_tab_to_self::DesktopNotificationHandler>(
diff --git a/devel/electron6/files/patch-chrome_browser_password__manager_chrome__password__manager__client.cc b/devel/electron6/files/patch-chrome_browser_password__manager_chrome__password__manager__client.cc
new file mode 100644
index 000000000000..8fe5641d2b42
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_browser_password__manager_chrome__password__manager__client.cc
@@ -0,0 +1,14 @@
+--- chrome/browser/password_manager/chrome_password_manager_client.cc.orig 2019-09-10 11:13:40 UTC
++++ chrome/browser/password_manager/chrome_password_manager_client.cc
+@@ -82,7 +82,11 @@
+ #include "net/cert/cert_status_flags.h"
+ #include "services/identity/public/cpp/identity_manager.h"
+ #include "services/metrics/public/cpp/ukm_recorder.h"
++#if defined(OS_BSD)
++#include <re2/re2.h>
++#else
+ #include "third_party/re2/src/re2/re2.h"
++#endif
+ #include "url/url_constants.h"
+
+ #if defined(FULL_SAFE_BROWSING)
diff --git a/devel/electron6/files/patch-chrome_browser_password__manager_password__store__factory.cc b/devel/electron6/files/patch-chrome_browser_password__manager_password__store__factory.cc
new file mode 100644
index 000000000000..85d3eb4aa9a9
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_browser_password__manager_password__store__factory.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/password_manager/password_store_factory.cc.orig 2019-09-10 11:13:41 UTC
++++ chrome/browser/password_manager/password_store_factory.cc
+@@ -302,7 +302,7 @@ PasswordStoreFactory::BuildServiceInstanceFor(
+ network_context_getter);
+
+ #if defined(OS_WIN) || defined(OS_MACOSX) || \
+- (defined(OS_LINUX) && !defined(OS_CHROMEOS))
++ (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ std::unique_ptr<password_manager::PasswordStoreSigninNotifier> notifier =
+ std::make_unique<password_manager::PasswordStoreSigninNotifierImpl>(
+ profile);
diff --git a/devel/electron6/files/patch-chrome_browser_performance__monitor_process__metrics__history.cc b/devel/electron6/files/patch-chrome_browser_performance__monitor_process__metrics__history.cc
new file mode 100644
index 000000000000..60d639e8b91f
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_browser_performance__monitor_process__metrics__history.cc
@@ -0,0 +1,38 @@
+--- chrome/browser/performance_monitor/process_metrics_history.cc.orig 2019-09-10 11:13:41 UTC
++++ chrome/browser/performance_monitor/process_metrics_history.cc
+@@ -47,7 +47,7 @@ void ProcessMetricsHistory::SampleMetrics() {
+ #if defined(OS_WIN)
+ disk_usage_ = process_metrics_->GetDiskUsageBytesPerSecond();
+ #endif
+-#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_AIX)
++#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_AIX) || defined(OS_BSD)
+ idle_wakeups_ = process_metrics_->GetIdleWakeupsPerSecond();
+ #endif
+ #if defined(OS_MACOSX)
+@@ -87,7 +87,7 @@ void ProcessMetricsHistory::RunPerformanceTriggers() {
+ kDiskUsageHistogramMin, kDiskUsageHistogramMax,
+ kDiskUsageHistogramBucketCount);
+ #endif
+-#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_AIX)
++#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_AIX) || defined(OS_BSD)
+ UMA_HISTOGRAM_COUNTS_10000(
+ "PerformanceMonitor.IdleWakeups.BrowserProcess", idle_wakeups_);
+ #endif
+@@ -105,7 +105,7 @@ void ProcessMetricsHistory::RunPerformanceTriggers() {
+ UMA_HISTOGRAM_BOOLEAN("PerformanceMonitor.HighCPU.RendererProcess",
+ true);
+ }
+-#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_AIX)
++#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_AIX) || defined(OS_BSD)
+ UMA_HISTOGRAM_COUNTS_10000(
+ "PerformanceMonitor.IdleWakeups.RendererProcess", idle_wakeups_);
+ #endif
+@@ -122,7 +122,7 @@ void ProcessMetricsHistory::RunPerformanceTriggers() {
+ kHistogramBucketCount);
+ if (cpu_usage_ > kHighCPUUtilizationThreshold)
+ UMA_HISTOGRAM_BOOLEAN("PerformanceMonitor.HighCPU.GPUProcess", true);
+-#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_AIX)
++#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_AIX) || defined(OS_BSD)
+ UMA_HISTOGRAM_COUNTS_10000("PerformanceMonitor.IdleWakeups.GPUProcess",
+ idle_wakeups_);
+ #endif
diff --git a/devel/electron6/files/patch-chrome_browser_performance__monitor_process__metrics__history.h b/devel/electron6/files/patch-chrome_browser_performance__monitor_process__metrics__history.h
new file mode 100644
index 000000000000..0d3a4d09d36e
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_browser_performance__monitor_process__metrics__history.h
@@ -0,0 +1,11 @@
+--- chrome/browser/performance_monitor/process_metrics_history.h.orig 2019-09-10 11:13:41 UTC
++++ chrome/browser/performance_monitor/process_metrics_history.h
+@@ -72,7 +72,7 @@ class ProcessMetricsHistory {
+ uint64_t disk_usage_ = 0;
+ #endif
+
+-#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_AIX)
++#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_AIX) || defined(OS_BSD)
+ int idle_wakeups_ = 0;
+ #endif
+ #if defined(OS_MACOSX)
diff --git a/devel/electron6/files/patch-chrome_browser_platform__util.h b/devel/electron6/files/patch-chrome_browser_platform__util.h
new file mode 100644
index 000000000000..4f985533045f
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_browser_platform__util.h
@@ -0,0 +1,11 @@
+--- chrome/browser/platform_util.h.orig 2019-09-10 10:42:29 UTC
++++ chrome/browser/platform_util.h
+@@ -41,7 +41,7 @@ enum OpenOperationResult {
+ enum OpenItemType {
+ OPEN_FILE,
+ OPEN_FOLDER,
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ SHOW_ITEM_IN_FOLDER
+ #endif
+ };
diff --git a/devel/electron6/files/patch-chrome_browser_plugins_plugin__info__host__impl.cc b/devel/electron6/files/patch-chrome_browser_plugins_plugin__info__host__impl.cc
new file mode 100644
index 000000000000..2efd5767ba74
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_browser_plugins_plugin__info__host__impl.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/plugins/plugin_info_host_impl.cc.orig 2019-09-10 11:13:41 UTC
++++ chrome/browser/plugins/plugin_info_host_impl.cc
+@@ -411,7 +411,7 @@ void PluginInfoHostImpl::ComponentPluginLookupDone(
+ std::unique_ptr<component_updater::ComponentInfo> cus_plugin_info) {
+ if (cus_plugin_info) {
+ output->status = chrome::mojom::PluginStatus::kComponentUpdateRequired;
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ if (cus_plugin_info->version != base::Version("0")) {
+ output->status = chrome::mojom::PluginStatus::kRestartRequired;
+ }
diff --git a/devel/electron6/files/patch-chrome_browser_plugins_plugins__resource__service.cc b/devel/electron6/files/patch-chrome_browser_plugins_plugins__resource__service.cc
new file mode 100644
index 000000000000..6ea3237d18c5
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_browser_plugins_plugins__resource__service.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/plugins/plugins_resource_service.cc.orig 2019-09-10 11:13:41 UTC
++++ chrome/browser/plugins/plugins_resource_service.cc
+@@ -63,7 +63,7 @@ GURL GetPluginsServerURL() {
+ filename = "plugins_win.json";
+ #elif defined(OS_CHROMEOS)
+ filename = "plugins_chromeos.json";
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ filename = "plugins_linux.json";
+ #elif defined(OS_MACOSX)
+ filename = "plugins_mac.json";
diff --git a/devel/electron6/files/patch-chrome_browser_policy_configuration__policy__handler__list__factory.cc b/devel/electron6/files/patch-chrome_browser_policy_configuration__policy__handler__list__factory.cc
new file mode 100644
index 000000000000..c4bf9fc723c8
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_browser_policy_configuration__policy__handler__list__factory.cc
@@ -0,0 +1,34 @@
+--- chrome/browser/policy/configuration_policy_handler_list_factory.cc.orig 2019-09-10 11:13:41 UTC
++++ chrome/browser/policy/configuration_policy_handler_list_factory.cc
+@@ -109,7 +109,7 @@
+ #endif
+
+ #if defined(OS_WIN) || defined(OS_MACOSX) || \
+- (defined(OS_LINUX) && !defined(OS_CHROMEOS))
++ (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ #include "chrome/browser/browser_switcher/browser_switcher_prefs.h"
+ #endif
+
+@@ -321,11 +321,11 @@ const PolicyToPreferenceMapEntry kSimplePolicyMap[] =
+ { key::kSafeSitesFilterBehavior,
+ policy_prefs::kSafeSitesFilterBehavior,
+ base::Value::Type::INTEGER},
+-#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ { key::kAuthNegotiateDelegateByKdcPolicy,
+ prefs::kAuthNegotiateDelegateByKdcPolicy,
+ base::Value::Type::BOOLEAN },
+-#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_CHROMEOS)
++#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ #if defined(OS_POSIX)
+ { key::kNtlmV2Enabled,
+ prefs::kNtlmV2Enabled,
+@@ -1021,7 +1021,7 @@ const PolicyToPreferenceMapEntry kSimplePolicyMap[] =
+ base::Value::Type::BOOLEAN },
+
+ #if defined(OS_WIN) || defined(OS_MACOSX) || \
+- (defined(OS_LINUX) && !defined(OS_CHROMEOS))
++ (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ { key::kAlternativeBrowserPath,
+ browser_switcher::prefs::kAlternativeBrowserPath,
+ base::Value::Type::STRING },
diff --git a/devel/electron6/files/patch-chrome_browser_policy_policy__prefs__browsertest.cc b/devel/electron6/files/patch-chrome_browser_policy_policy__prefs__browsertest.cc
new file mode 100644
index 000000000000..43c8ae92e4e1
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_browser_policy_policy__prefs__browsertest.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/policy/policy_prefs_browsertest.cc.orig 2019-09-10 11:13:41 UTC
++++ chrome/browser/policy/policy_prefs_browsertest.cc
+@@ -183,6 +183,8 @@ class PolicyTestCase {
+ const std::string os("chromeos");
+ #elif defined(OS_LINUX)
+ const std::string os("linux");
++#elif defined(OS_FREEBSD)
++ const std::string os("freebsd");
+ #else
+ #error "Unknown platform"
+ #endif
diff --git a/devel/electron6/files/patch-chrome_browser_prefs_browser__prefs.cc b/devel/electron6/files/patch-chrome_browser_prefs_browser__prefs.cc
new file mode 100644
index 000000000000..a98a5fff5b89
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_browser_prefs_browser__prefs.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/prefs/browser_prefs.cc.orig 2019-09-10 11:13:41 UTC
++++ chrome/browser/prefs/browser_prefs.cc
+@@ -338,7 +338,7 @@
+ #endif
+
+ #if defined(OS_WIN) || defined(OS_MACOSX) || \
+- (defined(OS_LINUX) && !defined(OS_CHROMEOS))
++ (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ #include "chrome/browser/browser_switcher/browser_switcher_prefs.h"
+ #endif
+
+@@ -872,7 +872,7 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySync
+ #endif
+
+ #if defined(OS_WIN) || defined(OS_MACOSX) || \
+- (defined(OS_LINUX) && !defined(OS_CHROMEOS))
++ (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ browser_switcher::BrowserSwitcherPrefs::RegisterProfilePrefs(registry);
+ #endif
+
diff --git a/devel/electron6/files/patch-chrome_browser_prefs_pref__service__incognito__whitelist.cc b/devel/electron6/files/patch-chrome_browser_prefs_pref__service__incognito__whitelist.cc
new file mode 100644
index 000000000000..73fb9a2ac2a0
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_browser_prefs_pref__service__incognito__whitelist.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/prefs/pref_service_incognito_whitelist.cc.orig 2019-09-10 11:13:41 UTC
++++ chrome/browser/prefs/pref_service_incognito_whitelist.cc
+@@ -183,7 +183,7 @@ const char* const kPersistentPrefNames[] = {
+ prefs::kShowFullscreenToolbar,
+ #endif
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS)
+ // Toggleing custom frames affects all open windows in the profile, hence
+ // should be written to the regular profile when changed in incognito mode.
+ prefs::kUseCustomChromeFrame,
diff --git a/devel/electron6/files/patch-chrome_browser_process__singleton__posix.cc b/devel/electron6/files/patch-chrome_browser_process__singleton__posix.cc
new file mode 100644
index 000000000000..6021f2492e63
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_browser_process__singleton__posix.cc
@@ -0,0 +1,34 @@
+--- chrome/browser/process_singleton_posix.cc.orig 2019-09-10 11:13:41 UTC
++++ chrome/browser/process_singleton_posix.cc
+@@ -94,11 +94,11 @@
+ #include "net/base/network_interfaces.h"
+ #include "ui/base/l10n/l10n_util.h"
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include "chrome/browser/ui/process_singleton_dialog_linux.h"
+ #endif
+
+-#if defined(TOOLKIT_VIEWS) && defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if defined(TOOLKIT_VIEWS) && (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ #include "ui/views/linux_ui/linux_ui.h"
+ #endif
+
+@@ -325,7 +325,7 @@ bool DisplayProfileInUseError(const base::FilePath& lo
+ if (g_disable_prompt)
+ return g_user_opted_unlock_in_use_profile;
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ base::string16 relaunch_button_text = l10n_util::GetStringUTF16(
+ IDS_PROFILE_IN_USE_LINUX_RELAUNCH);
+ return ShowProcessSingletonDialog(error, relaunch_button_text);
+@@ -901,7 +901,7 @@ ProcessSingleton::NotifyResult ProcessSingleton::Notif
+ SendRemoteProcessInteractionResultHistogram(REMOTE_PROCESS_SHUTTING_DOWN);
+ return PROCESS_NONE;
+ } else if (strncmp(buf, kACKToken, base::size(kACKToken) - 1) == 0) {
+-#if defined(TOOLKIT_VIEWS) && defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if defined(TOOLKIT_VIEWS) && (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ // Likely NULL in unit tests.
+ views::LinuxUI* linux_ui = views::LinuxUI::instance();
+ if (linux_ui)
diff --git a/devel/electron6/files/patch-chrome_browser_profiles_chrome__browser__main__extra__parts__profiles.cc b/devel/electron6/files/patch-chrome_browser_profiles_chrome__browser__main__extra__parts__profiles.cc
new file mode 100644
index 000000000000..d44e1d48f224
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_browser_profiles_chrome__browser__main__extra__parts__profiles.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc.orig 2019-09-10 11:13:41 UTC
++++ chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc
+@@ -330,7 +330,7 @@ void ChromeBrowserMainExtraPartsProfiles::
+ MediaGalleriesPreferencesFactory::GetInstance();
+ #endif
+ #if defined(OS_WIN) || defined(OS_MACOSX) || \
+- (defined(OS_LINUX) && !defined(OS_CHROMEOS))
++ (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ metrics::DesktopProfileSessionDurationsServiceFactory::GetInstance();
+ #endif
+ ModelTypeStoreServiceFactory::GetInstance();
diff --git a/devel/electron6/files/patch-chrome_browser_profiles_profile__attributes__entry.cc b/devel/electron6/files/patch-chrome_browser_profiles_profile__attributes__entry.cc
new file mode 100644
index 000000000000..334aee2acb6f
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_browser_profiles_profile__attributes__entry.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/profiles/profile_attributes_entry.cc.orig 2019-09-10 10:42:29 UTC
++++ chrome/browser/profiles/profile_attributes_entry.cc
+@@ -83,7 +83,7 @@ void ProfileAttributesEntry::Initialize(ProfileInfoCac
+ if (is_force_signin_enabled_) {
+ if (!IsAuthenticated())
+ is_force_signin_profile_locked_ = true;
+-#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_WIN)
++#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD)
+ } else if (IsSigninRequired()) {
+ // Profiles that require signin in the absence of an enterprise policy are
+ // left-overs from legacy supervised users. Just unlock them, so users can
diff --git a/devel/electron6/files/patch-chrome_browser_renderer__context__menu_render__view__context__menu.cc b/devel/electron6/files/patch-chrome_browser_renderer__context__menu_render__view__context__menu.cc
new file mode 100644
index 000000000000..4e31893ed033
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_browser_renderer__context__menu_render__view__context__menu.cc
@@ -0,0 +1,29 @@
+--- chrome/browser/renderer_context_menu/render_view_context_menu.cc.orig 2019-09-10 11:13:41 UTC
++++ chrome/browser/renderer_context_menu/render_view_context_menu.cc
+@@ -1672,7 +1672,7 @@ void RenderViewContextMenu::AppendEditableItems() {
+ // 'Undo' and 'Redo' for text input with no suggestions and no text selected.
+ // We make an exception for OS X as context clicking will select the closest
+ // word. In this case both items are always shown.
+-#if defined(OS_MACOSX)
++#if defined(OS_MACOSX) || defined(OS_BSD)
+ menu_model_.AddItemWithStringId(IDC_CONTENT_CONTEXT_UNDO,
+ IDS_CONTENT_CONTEXT_UNDO);
+ menu_model_.AddItemWithStringId(IDC_CONTENT_CONTEXT_REDO,
+@@ -1714,7 +1714,7 @@ void RenderViewContextMenu::AppendLanguageSettings() {
+ if (!use_spelling)
+ return;
+
+-#if defined(OS_MACOSX)
++#if defined(OS_MACOSX) || defined(OS_BSD)
+ menu_model_.AddItemWithStringId(IDC_CONTENT_CONTEXT_LANGUAGE_SETTINGS,
+ IDS_CONTENT_CONTEXT_LANGUAGE_SETTINGS);
+ #else
+@@ -1994,7 +1994,7 @@ bool RenderViewContextMenu::IsCommandIdEnabled(int id)
+ case IDC_CHECK_SPELLING_WHILE_TYPING:
+ return prefs->GetBoolean(spellcheck::prefs::kSpellCheckEnable);
+
+-#if !defined(OS_MACOSX) && defined(OS_POSIX)
++#if !defined(OS_MACOSX) && !defined(OS_BSD) && defined(OS_POSIX)
+ // TODO(suzhe): this should not be enabled for password fields.
+ case IDC_INPUT_METHODS_MENU:
+ return true;
diff --git a/devel/electron6/files/patch-chrome_browser_renderer__preferences__util.cc b/devel/electron6/files/patch-chrome_browser_renderer__preferences__util.cc
new file mode 100644
index 000000000000..3a399fbf326b
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_browser_renderer__preferences__util.cc
@@ -0,0 +1,29 @@
+--- chrome/browser/renderer_preferences_util.cc.orig 2019-09-10 10:42:29 UTC
++++ chrome/browser/renderer_preferences_util.cc
+@@ -30,7 +30,7 @@
+ #include "ui/base/cocoa/defaults_utils.h"
+ #endif
+
+-#if defined(USE_AURA) && defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if defined(USE_AURA) && (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS)
+ #include "chrome/browser/themes/theme_service.h"
+ #include "chrome/browser/themes/theme_service_factory.h"
+ #include "ui/views/linux_ui/linux_ui.h"
+@@ -130,7 +130,7 @@ void UpdateFromSystemSettings(blink::mojom::RendererPr
+ prefs->caret_blink_interval = interval;
+ #endif
+
+-#if defined(USE_AURA) && defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if defined(USE_AURA) && (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS)
+ views::LinuxUI* linux_ui = views::LinuxUI::instance();
+ if (linux_ui) {
+ if (ThemeServiceFactory::GetForProfile(profile)->UsingSystemTheme()) {
+@@ -149,7 +149,7 @@ void UpdateFromSystemSettings(blink::mojom::RendererPr
+ }
+ #endif
+
+-#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_WIN)
++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_WIN) || defined(OS_BSD)
+ content::UpdateFontRendererPreferencesFromSystemSettings(prefs);
+ #endif
+
diff --git a/devel/electron6/files/patch-chrome_browser_resources_safe__browsing_gen__file__type__proto.py b/devel/electron6/files/patch-chrome_browser_resources_safe__browsing_gen__file__type__proto.py
new file mode 100644
index 000000000000..ea3dccc6f3c2
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_browser_resources_safe__browsing_gen__file__type__proto.py
@@ -0,0 +1,19 @@
+--- chrome/browser/resources/safe_browsing/gen_file_type_proto.py.orig 2019-09-10 10:42:30 UTC
++++ chrome/browser/resources/safe_browsing/gen_file_type_proto.py
+@@ -31,6 +31,7 @@ def PlatformTypes():
+ "android": download_file_types_pb2.DownloadFileType.PLATFORM_ANDROID,
+ "chromeos": download_file_types_pb2.DownloadFileType.PLATFORM_CHROME_OS,
+ "linux": download_file_types_pb2.DownloadFileType.PLATFORM_LINUX,
++ "bsd": download_file_types_pb2.DownloadFileType.PLATFORM_LINUX,
+ "mac": download_file_types_pb2.DownloadFileType.PLATFORM_MAC,
+ "win": download_file_types_pb2.DownloadFileType.PLATFORM_WINDOWS,
+ }
+@@ -169,7 +170,7 @@ class DownloadFileTypeProtoGenerator(BinaryProtoGenera
+ 'Outfile must have a %d for version and %s for platform.')
+ parser.add_option('-t', '--type',
+ help='The platform type. One of android, chromeos, ' +
+- 'linux, mac, win')
++ 'linux, bsd, mac, win')
+
+ def AddExtraCommandLineArgsForVirtualEnvRun(self, opts, command):
+ if opts.type is not None:
diff --git a/devel/electron6/files/patch-chrome_browser_resources_settings_appearance__page_appearance__browser__proxy.js b/devel/electron6/files/patch-chrome_browser_resources_settings_appearance__page_appearance__browser__proxy.js
new file mode 100644
index 000000000000..96a34fa994d2
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_browser_resources_settings_appearance__page_appearance__browser__proxy.js
@@ -0,0 +1,20 @@
+--- chrome/browser/resources/settings/appearance_page/appearance_browser_proxy.js.orig 2019-09-10 11:13:42 UTC
++++ chrome/browser/resources/settings/appearance_page/appearance_browser_proxy.js
+@@ -35,7 +35,7 @@ cr.define('settings', function() {
+
+ useDefaultTheme() {}
+
+- // <if expr="is_linux and not chromeos">
++ // <if expr="is_bsd and not chromeos">
+ useSystemTheme() {}
+
+ // </if>
+@@ -93,7 +93,7 @@ cr.define('settings', function() {
+ chrome.send('useDefaultTheme');
+ }
+
+- // <if expr="is_linux and not chromeos">
++ // <if expr="is_bsd and not chromeos">
+ /** @override */
+ useSystemTheme() {
+ chrome.send('useSystemTheme');
diff --git a/devel/electron6/files/patch-chrome_browser_resources_settings_appearance__page_appearance__page.html b/devel/electron6/files/patch-chrome_browser_resources_settings_appearance__page_appearance__page.html
new file mode 100644
index 000000000000..304136750d27
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_browser_resources_settings_appearance__page_appearance__page.html
@@ -0,0 +1,29 @@
+--- chrome/browser/resources/settings/appearance_page/appearance_page.html.orig 2019-09-10 11:13:42 UTC
++++ chrome/browser/resources/settings/appearance_page/appearance_page.html
+@@ -64,7 +64,7 @@
+ <cr-link-row class="first" hidden="[[!pageVisibility.setTheme]]"
+ label="$i18n{themes}" sub-label="[[themeSublabel_]]"
+ on-click="openThemeUrl_" external></cr-link-row>
+-<if expr="not is_linux or chromeos">
++<if expr="not is_posix or chromeos">
+ <template is="dom-if" if="[[prefs.extensions.theme.id.value]]">
+ <div class="separator"></div>
+ <paper-button id="useDefault" on-click="onUseDefaultTap_"
+@@ -73,7 +73,7 @@
+ </paper-button>
+ </template>
+ </if>
+-<if expr="is_linux and not chromeos">
++<if expr="is_posix and not chromeos">
+ <div class="settings-row continuation"
+ hidden="[[!showThemesSecondary_(
+ prefs.extensions.theme.id.value, useSystemTheme_)]]"
+@@ -138,7 +138,7 @@
+ pref="{{prefs.bookmark_bar.show_on_all_tabs}}"
+ label="$i18n{showBookmarksBar}">
+ </settings-toggle-button>
+-<if expr="is_linux and not chromeos">
++<if expr="is_posix and not chromeos">
+ <settings-toggle-button
+ class$="[[getFirst_(pageVisibility.bookmarksBar)]]"
+ pref="{{prefs.browser.custom_chrome_frame}}"
diff --git a/devel/electron6/files/patch-chrome_browser_resources_settings_appearance__page_appearance__page.js b/devel/electron6/files/patch-chrome_browser_resources_settings_appearance__page_appearance__page.js
new file mode 100644
index 000000000000..7124f1a9c0a4
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_browser_resources_settings_appearance__page_appearance__page.js
@@ -0,0 +1,33 @@
+--- chrome/browser/resources/settings/appearance_page/appearance_page.js.orig 2019-09-10 11:13:42 UTC
++++ chrome/browser/resources/settings/appearance_page/appearance_page.js
+@@ -125,7 +125,7 @@ Polymer({
+ 'defaultFontSizeChanged_(prefs.webkit.webprefs.default_font_size.value)',
+ 'themeChanged_(prefs.extensions.theme.id.value, useSystemTheme_)',
+
+- // <if expr="is_linux and not chromeos">
++ // <if expr="is_bsd and not chromeos">
+ // NOTE: this pref only exists on Linux.
+ 'useSystemThemePrefChanged_(prefs.extensions.theme.use_system.value)',
+ // </if>
+@@ -228,7 +228,7 @@ Polymer({
+ this.browserProxy_.useDefaultTheme();
+ },
+
+- // <if expr="is_linux and not chromeos">
++ // <if expr="is_bsd and not chromeos">
+ /**
+ * @param {boolean} useSystemTheme
+ * @private
+@@ -304,10 +304,10 @@ Polymer({
+ }
+
+ let i18nId;
+- // <if expr="is_linux and not chromeos">
++ // <if expr="is_bsd and not chromeos">
+ i18nId = useSystemTheme ? 'systemTheme' : 'classicTheme';
+ // </if>
+- // <if expr="not is_linux or chromeos">
++ // <if expr="not is_bsd or chromeos">
+ i18nId = 'chooseFromWebStore';
+ // </if>
+ this.themeSublabel_ = this.i18n(i18nId);
diff --git a/devel/electron6/files/patch-chrome_browser_safe__browsing_incident__reporting_incident__handler__util.cc b/devel/electron6/files/patch-chrome_browser_safe__browsing_incident__reporting_incident__handler__util.cc
new file mode 100644
index 000000000000..402180c12971
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_browser_safe__browsing_incident__reporting_incident__handler__util.cc
@@ -0,0 +1,15 @@
+--- chrome/browser/safe_browsing/incident_reporting/incident_handler_util.cc.orig 2019-09-10 10:42:30 UTC
++++ chrome/browser/safe_browsing/incident_reporting/incident_handler_util.cc
+@@ -8,7 +8,12 @@
+
+ #include "base/hash/hash.h"
+ #include "base/logging.h"
++//XXX(rene) needs shim headers?
++#if defined(USE_SYSTEM_PROTOBUF)
++#include <google/protobuf/message_lite.h>
++#else
+ #include "third_party/protobuf/src/google/protobuf/message_lite.h"
++#endif
+
+ namespace safe_browsing {
+
diff --git a/devel/electron6/files/patch-chrome_browser_safe__browsing_incident__reporting_incident__reporting__service.cc b/devel/electron6/files/patch-chrome_browser_safe__browsing_incident__reporting_incident__reporting__service.cc
new file mode 100644
index 000000000000..59192f39e3d3
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_browser_safe__browsing_incident__reporting_incident__reporting__service.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/safe_browsing/incident_reporting/incident_reporting_service.cc.orig 2019-09-10 11:13:42 UTC
++++ chrome/browser/safe_browsing/incident_reporting/incident_reporting_service.cc
+@@ -716,7 +716,7 @@ void IncidentReportingService::OnEnvironmentDataCollec
+ environment_collection_pending_ = false;
+
+ // Process::Current().CreationTime() is missing on some platforms.
+-#if defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_LINUX)
++#if defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD)
+ base::TimeDelta uptime =
+ first_incident_time_ - base::Process::Current().CreationTime();
+ environment_data->mutable_process()->set_uptime_msec(uptime.InMilliseconds());
diff --git a/devel/electron6/files/patch-chrome_browser_search_local__files__ntp__source.cc b/devel/electron6/files/patch-chrome_browser_search_local__files__ntp__source.cc
new file mode 100644
index 000000000000..37cccabe590a
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_browser_search_local__files__ntp__source.cc
@@ -0,0 +1,16 @@
+--- chrome/browser/search/local_files_ntp_source.cc.orig 2019-09-10 11:13:42 UTC
++++ chrome/browser/search/local_files_ntp_source.cc
+@@ -20,8 +20,13 @@
+ #include "build/build_config.h"
+ #include "chrome/common/url_constants.h"
+ #include "content/public/browser/url_data_source.h"
++#if defined(OS_BSD)
++#include <re2/re2.h>
++#include <re2/stringpiece.h>
++#else
+ #include "third_party/re2/src/re2/re2.h"
+ #include "third_party/re2/src/re2/stringpiece.h"
++#endif
+
+ namespace {
+
diff --git a/devel/electron6/files/patch-chrome_browser_send__tab__to__self_receiving__ui__handler__registry.cc b/devel/electron6/files/patch-chrome_browser_send__tab__to__self_receiving__ui__handler__registry.cc
new file mode 100644
index 000000000000..9521e61d874d
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_browser_send__tab__to__self_receiving__ui__handler__registry.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/send_tab_to_self/receiving_ui_handler_registry.cc.orig 2019-09-10 10:42:30 UTC
++++ chrome/browser/send_tab_to_self/receiving_ui_handler_registry.cc
+@@ -11,7 +11,7 @@
+ #include "chrome/browser/profiles/profile.h"
+ #include "chrome/browser/send_tab_to_self/receiving_ui_handler.h"
+
+-#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_BSD)
+ #include "chrome/browser/send_tab_to_self/desktop_notification_handler.h"
+ #endif
+
+@@ -32,7 +32,7 @@ ReceivingUiHandlerRegistry* ReceivingUiHandlerRegistry
+ // Instantiates all the handlers relevant to this platform.
+ void ReceivingUiHandlerRegistry::InstantiatePlatformSpecificHandlers(
+ Profile* profile) {
+-#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_BSD)
+ applicable_handlers_.push_back(
+ std::make_unique<send_tab_to_self::DesktopNotificationHandler>(profile));
+ #elif defined(OS_ANDROID)
diff --git a/devel/electron6/files/patch-chrome_browser_send__tab__to__self_send__tab__to__self__client__service.cc b/devel/electron6/files/patch-chrome_browser_send__tab__to__self_send__tab__to__self__client__service.cc
new file mode 100644
index 000000000000..bc338a2c34e6
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_browser_send__tab__to__self_send__tab__to__self__client__service.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/send_tab_to_self/send_tab_to_self_client_service.cc.orig 2019-09-10 10:42:30 UTC
++++ chrome/browser/send_tab_to_self/send_tab_to_self_client_service.cc
+@@ -41,7 +41,7 @@ void SendTabToSelfClientService::SendTabToSelfModelLoa
+ void SendTabToSelfClientService::EntriesAddedRemotely(
+ const std::vector<const SendTabToSelfEntry*>& new_entries) {
+ for (const std::unique_ptr<ReceivingUiHandler>& handler : GetHandlers()) {
+-#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_BSD)
+ // Only respond to notifications corresponding to this service's profile
+ // for these OSes; mobile does not have a Profile.
+ // Cast note: on desktop, handlers are guaranteed to be the derived class
diff --git a/devel/electron6/files/patch-chrome_browser_signin_signin__util.cc b/devel/electron6/files/patch-chrome_browser_signin_signin__util.cc
new file mode 100644
index 000000000000..b80cb996d55d
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_browser_signin_signin__util.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/signin/signin_util.cc.orig 2019-09-10 11:13:42 UTC
++++ chrome/browser/signin/signin_util.cc
+@@ -33,7 +33,7 @@
+ #include "services/identity/public/cpp/primary_account_mutator.h"
+ #include "ui/base/l10n/l10n_util.h"
+
+-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ #include "chrome/browser/ui/browser_finder.h"
+ #include "chrome/browser/ui/browser_list.h"
+ #include "chrome/browser/ui/browser_list_observer.h"
+@@ -45,7 +45,7 @@ namespace {
+
+ constexpr char kSignoutSettingKey[] = "signout_setting";
+
+-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ #define CAN_DELETE_PROFILE
+ #endif
+
diff --git a/devel/electron6/files/patch-chrome_browser_ssl_captive__portal__blocking__page.cc b/devel/electron6/files/patch-chrome_browser_ssl_captive__portal__blocking__page.cc
new file mode 100644
index 000000000000..ed56fcf76d33
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_browser_ssl_captive__portal__blocking__page.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/ssl/captive_portal_blocking_page.cc.orig 2019-09-10 11:13:42 UTC
++++ chrome/browser/ssl/captive_portal_blocking_page.cc
+@@ -124,7 +124,7 @@ std::string CaptivePortalBlockingPage::GetWiFiSSID() c
+ wifi_service->GetConnectedNetworkSSID(&ssid, &error);
+ if (!error.empty())
+ return std::string();
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ ssid = net::GetWifiSSID();
+ #elif defined(OS_ANDROID)
+ ssid = net::android::GetWifiSSID();
diff --git a/devel/electron6/files/patch-chrome_browser_ssl_ssl__error__controller__client.cc b/devel/electron6/files/patch-chrome_browser_ssl_ssl__error__controller__client.cc
new file mode 100644
index 000000000000..7ac4a5134155
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_browser_ssl_ssl__error__controller__client.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/ssl/ssl_error_controller_client.cc.orig 2019-09-10 11:13:43 UTC
++++ chrome/browser/ssl/ssl_error_controller_client.cc
+@@ -79,7 +79,7 @@ void LaunchDateAndTimeSettingsImpl() {
+ #if defined(OS_ANDROID)
+ chrome::android::OpenDateAndTimeSettings();
+
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ struct ClockCommand {
+ const char* const pathname;
+ const char* const argument;
+@@ -218,7 +218,7 @@ void SSLErrorControllerClient::Proceed() {
+ }
+
+ bool SSLErrorControllerClient::CanLaunchDateAndTimeSettings() {
+-#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_MACOSX) || \
++#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) || \
+ defined(OS_WIN)
+ return true;
+ #else
diff --git a/devel/electron6/files/patch-chrome_browser_sync_chrome__sync__client.cc b/devel/electron6/files/patch-chrome_browser_sync_chrome__sync__client.cc
new file mode 100644
index 000000000000..948f7a5c5e42
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_browser_sync_chrome__sync__client.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/sync/chrome_sync_client.cc.orig 2019-09-10 11:13:43 UTC
++++ chrome/browser/sync/chrome_sync_client.cc
+@@ -372,7 +372,7 @@ ChromeSyncClient::CreateDataTypeControllers(syncer::Sy
+ dump_stack));
+ #endif // BUILDFLAG(ENABLE_APP_LIST)
+
+-#if defined(OS_LINUX) || defined(OS_WIN)
++#if defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD)
+ // Dictionary sync is enabled by default.
+ if (!disabled_types.Has(syncer::DICTIONARY)) {
+ controllers.push_back(
+@@ -382,7 +382,7 @@ ChromeSyncClient::CreateDataTypeControllers(syncer::Sy
+ base::Unretained(this), syncer::DICTIONARY),
+ dump_stack));
+ }
+-#endif // defined(OS_LINUX) || defined(OS_WIN)
++#endif // defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD)
+
+ #if defined(OS_CHROMEOS)
+ if (arc::IsArcAllowedForProfile(profile_) &&
diff --git a/devel/electron6/files/patch-chrome_browser_task__manager_sampling_task__group.cc b/devel/electron6/files/patch-chrome_browser_task__manager_sampling_task__group.cc
new file mode 100644
index 000000000000..2549ba58e92e
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_browser_task__manager_sampling_task__group.cc
@@ -0,0 +1,56 @@
+--- chrome/browser/task_manager/sampling/task_group.cc.orig 2019-09-10 11:13:43 UTC
++++ chrome/browser/task_manager/sampling/task_group.cc
+@@ -33,9 +33,9 @@ const int kBackgroundRefreshTypesMask =
+ #if defined(OS_WIN)
+ REFRESH_TYPE_START_TIME | REFRESH_TYPE_CPU_TIME |
+ #endif // defined(OS_WIN)
+-#if defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ REFRESH_TYPE_FD_COUNT |
+-#endif // defined(OS_LINUX) || defined(OS_MACOSX)
++#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ #if BUILDFLAG(ENABLE_NACL)
+ REFRESH_TYPE_NACL |
+ #endif // BUILDFLAG(ENABLE_NACL)
+@@ -114,9 +114,9 @@ TaskGroup::TaskGroup(
+ #if BUILDFLAG(ENABLE_NACL)
+ nacl_debug_stub_port_(nacl::kGdbDebugStubPortUnknown),
+ #endif // BUILDFLAG(ENABLE_NACL)
+-#if defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ open_fd_count_(-1),
+-#endif // defined(OS_LINUX) || defined(OS_MACOSX)
++#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ idle_wakeups_per_second_(-1),
+ gpu_memory_has_duplicates_(false),
+ is_backgrounded_(false),
+@@ -130,10 +130,10 @@ TaskGroup::TaskGroup(
+ weak_ptr_factory_.GetWeakPtr()),
+ base::Bind(&TaskGroup::OnIdleWakeupsRefreshDone,
+ weak_ptr_factory_.GetWeakPtr()),
+-#if defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ base::Bind(&TaskGroup::OnOpenFdCountRefreshDone,
+ weak_ptr_factory_.GetWeakPtr()),
+-#endif // defined(OS_LINUX) || defined(OS_MACOSX)
++#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ base::Bind(&TaskGroup::OnProcessPriorityDone,
+ weak_ptr_factory_.GetWeakPtr()));
+
+@@ -301,14 +301,14 @@ void TaskGroup::OnRefreshNaClDebugStubPortDone(int nac
+ }
+ #endif // BUILDFLAG(ENABLE_NACL)
+
+-#if defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ void TaskGroup::OnOpenFdCountRefreshDone(int open_fd_count) {
+ DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
+
+ open_fd_count_ = open_fd_count;
+ OnBackgroundRefreshTypeFinished(REFRESH_TYPE_FD_COUNT);
+ }
+-#endif // defined(OS_LINUX) || defined(OS_MACOSX)
++#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+
+ void TaskGroup::OnCpuRefreshDone(double cpu_usage) {
+ DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
diff --git a/devel/electron6/files/patch-chrome_browser_task__manager_sampling_task__group.h b/devel/electron6/files/patch-chrome_browser_task__manager_sampling_task__group.h
new file mode 100644
index 000000000000..1a29f1d67f58
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_browser_task__manager_sampling_task__group.h
@@ -0,0 +1,48 @@
+--- chrome/browser/task_manager/sampling/task_group.h.orig 2019-09-10 11:13:43 UTC
++++ chrome/browser/task_manager/sampling/task_group.h
+@@ -36,7 +36,7 @@ constexpr int kUnsupportedVMRefreshFlags =
+ REFRESH_TYPE_WEBCACHE_STATS | REFRESH_TYPE_NETWORK_USAGE |
+ REFRESH_TYPE_NACL | REFRESH_TYPE_IDLE_WAKEUPS | REFRESH_TYPE_HANDLES |
+ REFRESH_TYPE_START_TIME | REFRESH_TYPE_CPU_TIME | REFRESH_TYPE_PRIORITY |
+-#if defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ REFRESH_TYPE_FD_COUNT |
+ #endif
+ REFRESH_TYPE_HARD_FAULTS;
+@@ -119,9 +119,9 @@ class TaskGroup {
+ int nacl_debug_stub_port() const { return nacl_debug_stub_port_; }
+ #endif // BUILDFLAG(ENABLE_NACL)
+
+-#if defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ int open_fd_count() const { return open_fd_count_; }
+-#endif // defined(OS_LINUX) || defined(OS_MACOSX)
++#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+
+ int idle_wakeups_per_second() const { return idle_wakeups_per_second_; }
+
+@@ -135,9 +135,9 @@ class TaskGroup {
+ void RefreshNaClDebugStubPort(int child_process_unique_id);
+ void OnRefreshNaClDebugStubPortDone(int port);
+ #endif
+-#if defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ void OnOpenFdCountRefreshDone(int open_fd_count);
+-#endif // defined(OS_LINUX) || defined(OS_MACOSX)
++#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+
+ void OnCpuRefreshDone(double cpu_usage);
+ void OnSwappedMemRefreshDone(int64_t swapped_mem_bytes);
+@@ -206,10 +206,10 @@ class TaskGroup {
+ #if BUILDFLAG(ENABLE_NACL)
+ int nacl_debug_stub_port_;
+ #endif // BUILDFLAG(ENABLE_NACL)
+-#if defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ // The number of file descriptors currently open by the process.
+ int open_fd_count_;
+-#endif // defined(OS_LINUX) || defined(OS_MACOSX)
++#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ int idle_wakeups_per_second_;
+ bool gpu_memory_has_duplicates_;
+ bool is_backgrounded_;
diff --git a/devel/electron6/files/patch-chrome_browser_task__manager_sampling_task__group__sampler.cc b/devel/electron6/files/patch-chrome_browser_task__manager_sampling_task__group__sampler.cc
new file mode 100644
index 000000000000..cee676d9b408
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_browser_task__manager_sampling_task__group__sampler.cc
@@ -0,0 +1,72 @@
+--- chrome/browser/task_manager/sampling/task_group_sampler.cc.orig 2019-09-10 11:13:43 UTC
++++ chrome/browser/task_manager/sampling/task_group_sampler.cc
+@@ -43,9 +43,9 @@ TaskGroupSampler::TaskGroupSampler(
+ const OnCpuRefreshCallback& on_cpu_refresh,
+ const OnSwappedMemRefreshCallback& on_swapped_mem_refresh,
+ const OnIdleWakeupsCallback& on_idle_wakeups,
+-#if defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ const OnOpenFdCountCallback& on_open_fd_count,
+-#endif // defined(OS_LINUX) || defined(OS_MACOSX)
++#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ const OnProcessPriorityCallback& on_process_priority)
+ : process_(std::move(process)),
+ process_metrics_(CreateProcessMetrics(process_.Handle())),
+@@ -53,9 +53,9 @@ TaskGroupSampler::TaskGroupSampler(
+ on_cpu_refresh_callback_(on_cpu_refresh),
+ on_swapped_mem_refresh_callback_(on_swapped_mem_refresh),
+ on_idle_wakeups_callback_(on_idle_wakeups),
+-#if defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ on_open_fd_count_callback_(on_open_fd_count),
+-#endif // defined(OS_LINUX) || defined(OS_MACOSX)
++#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ on_process_priority_callback_(on_process_priority) {
+ DCHECK(blocking_pool_runner.get());
+
+@@ -86,7 +86,7 @@ void TaskGroupSampler::Refresh(int64_t refresh_flags)
+ on_swapped_mem_refresh_callback_);
+ }
+
+-#if defined(OS_MACOSX) || defined(OS_LINUX)
++#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+ if (TaskManagerObserver::IsResourceRefreshEnabled(REFRESH_TYPE_IDLE_WAKEUPS,
+ refresh_flags)) {
+ base::PostTaskAndReplyWithResult(
+@@ -95,9 +95,9 @@ void TaskGroupSampler::Refresh(int64_t refresh_flags)
+ base::Bind(&TaskGroupSampler::RefreshIdleWakeupsPerSecond, this),
+ on_idle_wakeups_callback_);
+ }
+-#endif // defined(OS_MACOSX) || defined(OS_LINUX)
++#endif // defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+
+-#if defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ if (TaskManagerObserver::IsResourceRefreshEnabled(REFRESH_TYPE_FD_COUNT,
+ refresh_flags)) {
+ base::PostTaskAndReplyWithResult(
+@@ -106,7 +106,7 @@ void TaskGroupSampler::Refresh(int64_t refresh_flags)
+ base::Bind(&TaskGroupSampler::RefreshOpenFdCount, this),
+ on_open_fd_count_callback_);
+ }
+-#endif // defined(OS_LINUX) || defined(OS_MACOSX)
++#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+
+ if (TaskManagerObserver::IsResourceRefreshEnabled(REFRESH_TYPE_PRIORITY,
+ refresh_flags)) {
+@@ -151,13 +151,13 @@ int TaskGroupSampler::RefreshIdleWakeupsPerSecond() {
+ return process_metrics_->GetIdleWakeupsPerSecond();
+ }
+
+-#if defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ int TaskGroupSampler::RefreshOpenFdCount() {
+ DCHECK(worker_pool_sequenced_checker_.CalledOnValidSequence());
+
+ return process_metrics_->GetOpenFdCount();
+ }
+-#endif // defined(OS_LINUX) || defined(OS_MACOSX)
++#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+
+ bool TaskGroupSampler::RefreshProcessPriority() {
+ DCHECK(worker_pool_sequenced_checker_.CalledOnValidSequence());
diff --git a/devel/electron6/files/patch-chrome_browser_task__manager_sampling_task__group__sampler.h b/devel/electron6/files/patch-chrome_browser_task__manager_sampling_task__group__sampler.h
new file mode 100644
index 000000000000..10dabafa003a
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_browser_task__manager_sampling_task__group__sampler.h
@@ -0,0 +1,50 @@
+--- chrome/browser/task_manager/sampling/task_group_sampler.h.orig 2019-09-10 10:42:30 UTC
++++ chrome/browser/task_manager/sampling/task_group_sampler.h
+@@ -32,9 +32,9 @@ class TaskGroupSampler : public base::RefCountedThread
+ using OnCpuRefreshCallback = base::Callback<void(double)>;
+ using OnSwappedMemRefreshCallback = base::Callback<void(int64_t)>;
+ using OnIdleWakeupsCallback = base::Callback<void(int)>;
+-#if defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ using OnOpenFdCountCallback = base::Callback<void(int)>;
+-#endif // defined(OS_LINUX) || defined(OS_MACOSX)
++#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ using OnProcessPriorityCallback = base::Callback<void(bool)>;
+
+ TaskGroupSampler(
+@@ -43,9 +43,9 @@ class TaskGroupSampler : public base::RefCountedThread
+ const OnCpuRefreshCallback& on_cpu_refresh,
+ const OnSwappedMemRefreshCallback& on_memory_refresh,
+ const OnIdleWakeupsCallback& on_idle_wakeups,
+-#if defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ const OnOpenFdCountCallback& on_open_fd_count,
+-#endif // defined(OS_LINUX) || defined(OS_MACOSX)
++#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ const OnProcessPriorityCallback& on_process_priority);
+
+ // Refreshes the expensive process' stats (CPU usage, memory usage, and idle
+@@ -60,9 +60,9 @@ class TaskGroupSampler : public base::RefCountedThread
+ double RefreshCpuUsage();
+ int64_t RefreshSwappedMem();
+ int RefreshIdleWakeupsPerSecond();
+-#if defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ int RefreshOpenFdCount();
+-#endif // defined(OS_LINUX) || defined(OS_MACOSX)
++#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ bool RefreshProcessPriority();
+
+ // The process that holds the handle that we own so that we can use it for
+@@ -84,9 +84,9 @@ class TaskGroupSampler : public base::RefCountedThread
+ const OnCpuRefreshCallback on_cpu_refresh_callback_;
+ const OnSwappedMemRefreshCallback on_swapped_mem_refresh_callback_;
+ const OnIdleWakeupsCallback on_idle_wakeups_callback_;
+-#if defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ const OnOpenFdCountCallback on_open_fd_count_callback_;
+-#endif // defined(OS_LINUX) || defined(OS_MACOSX)
++#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ const OnProcessPriorityCallback on_process_priority_callback_;
+
+ // To assert we're running on the correct thread.
diff --git a/devel/electron6/files/patch-chrome_browser_task__manager_sampling_task__manager__impl.cc b/devel/electron6/files/patch-chrome_browser_task__manager_sampling_task__manager__impl.cc
new file mode 100644
index 000000000000..2baf596031da
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_browser_task__manager_sampling_task__manager__impl.cc
@@ -0,0 +1,16 @@
+--- chrome/browser/task_manager/sampling/task_manager_impl.cc.orig 2019-09-10 11:13:43 UTC
++++ chrome/browser/task_manager/sampling/task_manager_impl.cc
+@@ -210,11 +210,11 @@ void TaskManagerImpl::GetUSERHandles(TaskId task_id,
+ }
+
+ int TaskManagerImpl::GetOpenFdCount(TaskId task_id) const {
+-#if defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ return GetTaskGroupByTaskId(task_id)->open_fd_count();
+ #else
+ return -1;
+-#endif // defined(OS_LINUX) || defined(OS_MACOSX)
++#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ }
+
+ bool TaskManagerImpl::IsTaskOnBackgroundedProcess(TaskId task_id) const {
diff --git a/devel/electron6/files/patch-chrome_browser_task__manager_task__manager__observer.h b/devel/electron6/files/patch-chrome_browser_task__manager_task__manager__observer.h
new file mode 100644
index 000000000000..6af6b1489594
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_browser_task__manager_task__manager__observer.h
@@ -0,0 +1,16 @@
+--- chrome/browser/task_manager/task_manager_observer.h.orig 2019-09-10 10:42:30 UTC
++++ chrome/browser/task_manager/task_manager_observer.h
+@@ -43,11 +43,11 @@ enum RefreshType {
+ // or backgrounded.
+ REFRESH_TYPE_PRIORITY = 1 << 13,
+
+-#if defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ // For observers interested in getting the number of open file descriptors of
+ // processes.
+ REFRESH_TYPE_FD_COUNT = 1 << 14,
+-#endif // defined(OS_LINUX) || defined(OS_MACOSX)
++#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+
+ REFRESH_TYPE_KEEPALIVE_COUNT = 1 << 15,
+ REFRESH_TYPE_MEMORY_FOOTPRINT = 1 << 16,
diff --git a/devel/electron6/files/patch-chrome_browser_tracing_crash__service__uploader.cc b/devel/electron6/files/patch-chrome_browser_tracing_crash__service__uploader.cc
new file mode 100644
index 000000000000..5dae904c84de
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_browser_tracing_crash__service__uploader.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/tracing/crash_service_uploader.cc.orig 2019-09-10 11:13:43 UTC
++++ chrome/browser/tracing/crash_service_uploader.cc
+@@ -162,6 +162,8 @@ void TraceCrashServiceUploader::DoCompressOnBackground
+ const char product[] = "Chrome_Linux";
+ #elif defined(OS_ANDROID)
+ const char product[] = "Chrome_Android";
++#elif defined(OS_FREEBSD)
++ const char product[] = "Chrome_FreeBSD";
+ #else
+ #error Platform not supported.
+ #endif
diff --git a/devel/electron6/files/patch-chrome_browser_ui_browser__command__controller.cc b/devel/electron6/files/patch-chrome_browser_ui_browser__command__controller.cc
new file mode 100644
index 000000000000..7fef540bcfc7
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_browser_ui_browser__command__controller.cc
@@ -0,0 +1,38 @@
+--- chrome/browser/ui/browser_command_controller.cc.orig 2019-09-10 11:13:43 UTC
++++ chrome/browser/ui/browser_command_controller.cc
+@@ -81,7 +81,7 @@
+ #include "chrome/browser/ui/browser_commands_chromeos.h"
+ #endif
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ #include "ui/base/ime/linux/text_edit_key_bindings_delegate_auralinux.h"
+ #endif
+
+@@ -251,7 +251,7 @@ bool BrowserCommandController::IsReservedCommandOrKey(
+ #endif
+ }
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ // If this key was registered by the user as a content editing hotkey, then
+ // it is not reserved.
+ ui::TextEditKeyBindingsDelegateAuraLinux* delegate =
+@@ -461,7 +461,7 @@ bool BrowserCommandController::ExecuteCommandWithDispo
+ break;
+ #endif
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ case IDC_MINIMIZE_WINDOW:
+ browser_->window()->Minimize();
+ break;
+@@ -911,7 +911,7 @@ void BrowserCommandController::InitCommandState() {
+ command_updater_.UpdateCommandEnabled(IDC_VISIT_DESKTOP_OF_LRU_USER_2, true);
+ command_updater_.UpdateCommandEnabled(IDC_VISIT_DESKTOP_OF_LRU_USER_3, true);
+ #endif
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ command_updater_.UpdateCommandEnabled(IDC_MINIMIZE_WINDOW, true);
+ command_updater_.UpdateCommandEnabled(IDC_MAXIMIZE_WINDOW, true);
+ command_updater_.UpdateCommandEnabled(IDC_RESTORE_WINDOW, true);
diff --git a/devel/electron6/files/patch-chrome_browser_ui_browser__view__prefs.cc b/devel/electron6/files/patch-chrome_browser_ui_browser__view__prefs.cc
new file mode 100644
index 000000000000..662bc0244e87
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_browser_ui_browser__view__prefs.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/ui/browser_view_prefs.cc.orig 2019-09-10 10:42:30 UTC
++++ chrome/browser/ui/browser_view_prefs.cc
+@@ -34,7 +34,7 @@ void RegisterBrowserViewLocalPrefs(PrefRegistrySimple*
+
+ void RegisterBrowserViewProfilePrefs(
+ user_prefs::PrefRegistrySyncable* registry) {
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ bool custom_frame_pref_default = false;
+ #if defined(USE_X11)
+ custom_frame_pref_default = ui::GetCustomFramePrefDefault();
+@@ -45,7 +45,7 @@ void RegisterBrowserViewProfilePrefs(
+ #endif
+ registry->RegisterBooleanPref(prefs::kUseCustomChromeFrame,
+ custom_frame_pref_default);
+-#endif // OS_LINUX && !OS_CHROMEOS
++#endif // (OS_LINUX && !OS_CHROMEOS) || defined(OS_BSD)
+ }
+
+ void MigrateBrowserTabStripPrefs(PrefService* prefs) {
diff --git a/devel/electron6/files/patch-chrome_browser_ui_browser__window.h b/devel/electron6/files/patch-chrome_browser_ui_browser__window.h
new file mode 100644
index 000000000000..5d4fa3f0f891
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_browser_ui_browser__window.h
@@ -0,0 +1,11 @@
+--- chrome/browser/ui/browser_window.h.orig 2019-09-10 11:13:43 UTC
++++ chrome/browser/ui/browser_window.h
+@@ -448,7 +448,7 @@ class BrowserWindow : public ui::BaseWindow {
+ bool is_source_keyboard) = 0;
+
+ #if defined(OS_CHROMEOS) || defined(OS_MACOSX) || defined(OS_WIN) || \
+- defined(OS_LINUX)
++ defined(OS_LINUX) || defined(OS_BSD)
+ virtual void ShowHatsBubbleFromAppMenuButton() = 0;
+ #endif
+
diff --git a/devel/electron6/files/patch-chrome_browser_ui_exclusive__access_exclusive__access__bubble.cc b/devel/electron6/files/patch-chrome_browser_ui_exclusive__access_exclusive__access__bubble.cc
new file mode 100644
index 000000000000..ae97a01055ef
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_browser_ui_exclusive__access_exclusive__access__bubble.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/ui/exclusive_access/exclusive_access_bubble.cc.orig 2019-09-10 10:42:30 UTC
++++ chrome/browser/ui/exclusive_access/exclusive_access_bubble.cc
+@@ -16,7 +16,7 @@
+
+ // NOTE(koz): Linux doesn't use the thick shadowed border, so we add padding
+ // here.
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ const int ExclusiveAccessBubble::kPaddingPx = 8;
+ #else
+ const int ExclusiveAccessBubble::kPaddingPx = 15;
diff --git a/devel/electron6/files/patch-chrome_browser_ui_input__method_input__method__engine__base.cc b/devel/electron6/files/patch-chrome_browser_ui_input__method_input__method__engine__base.cc
new file mode 100644
index 000000000000..3a712c6f0eb6
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_browser_ui_input__method_input__method__engine__base.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/ui/input_method/input_method_engine_base.cc.orig 2019-09-10 11:13:43 UTC
++++ chrome/browser/ui/input_method/input_method_engine_base.cc
+@@ -30,7 +30,7 @@
+ #include "ui/base/ime/chromeos/ime_keymap.h"
+ #elif defined(OS_WIN)
+ #include "ui/events/keycodes/keyboard_codes_win.h"
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ #include "ui/events/keycodes/keyboard_codes_posix.h"
+ #endif
+
diff --git a/devel/electron6/files/patch-chrome_browser_ui_libgtkui_print__dialog__gtk.cc b/devel/electron6/files/patch-chrome_browser_ui_libgtkui_print__dialog__gtk.cc
new file mode 100644
index 000000000000..3f90d355f9f8
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_browser_ui_libgtkui_print__dialog__gtk.cc
@@ -0,0 +1,10 @@
+--- chrome/browser/ui/libgtkui/print_dialog_gtk.cc.orig 2019-09-10 11:13:43 UTC
++++ chrome/browser/ui/libgtkui/print_dialog_gtk.cc
+@@ -333,6 +333,7 @@ void PrintDialogGtk::ShowDialog(
+ // Since we only generate PDF, only show printers that support PDF.
+ // TODO(thestig) Add more capabilities to support?
+ GtkPrintCapabilities cap = static_cast<GtkPrintCapabilities>(
++ GTK_PRINT_CAPABILITY_GENERATE_PS |
+ GTK_PRINT_CAPABILITY_GENERATE_PDF |
+ GTK_PRINT_CAPABILITY_PAGE_SET |
+ GTK_PRINT_CAPABILITY_COPIES |
diff --git a/devel/electron6/files/patch-chrome_browser_ui_sad__tab.cc b/devel/electron6/files/patch-chrome_browser_ui_sad__tab.cc
new file mode 100644
index 000000000000..c854cf547faf
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_browser_ui_sad__tab.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/ui/sad_tab.cc.orig 2019-09-10 11:13:43 UTC
++++ chrome/browser/ui/sad_tab.cc
+@@ -180,7 +180,7 @@ std::vector<int> SadTab::GetSubMessages() {
+ // Only show incognito suggestion if not already in Incognito mode.
+ if (!web_contents_->GetBrowserContext()->IsOffTheRecord())
+ message_ids.insert(message_ids.begin(), IDS_SAD_TAB_RELOAD_INCOGNITO);
+-#if defined(OS_MACOSX) || defined(OS_LINUX)
++#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+ // Note: on macOS, Linux and ChromeOS, the first bullet is either one of
+ // IDS_SAD_TAB_RELOAD_CLOSE_TABS or IDS_SAD_TAB_RELOAD_CLOSE_NOTABS
+ // followed by one of the above suggestions.
diff --git a/devel/electron6/files/patch-chrome_browser_ui_startup_bad__flags__prompt.cc b/devel/electron6/files/patch-chrome_browser_ui_startup_bad__flags__prompt.cc
new file mode 100644
index 000000000000..486260ec53b0
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_browser_ui_startup_bad__flags__prompt.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/ui/startup/bad_flags_prompt.cc.orig 2019-09-10 11:13:43 UTC
++++ chrome/browser/ui/startup/bad_flags_prompt.cc
+@@ -88,7 +88,7 @@ static const char* kBadFlags[] = {
+ extensions::switches::kExtensionsOnChromeURLs,
+ #endif
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ // Speech dispatcher is buggy, it can crash and it can make Chrome freeze.
+ // http://crbug.com/327295
+ switches::kEnableSpeechDispatcher,
diff --git a/devel/electron6/files/patch-chrome_browser_ui_startup_startup__browser__creator.cc b/devel/electron6/files/patch-chrome_browser_ui_startup_startup__browser__creator.cc
new file mode 100644
index 000000000000..a04b15d16e3b
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_browser_ui_startup_startup__browser__creator.cc
@@ -0,0 +1,22 @@
+--- chrome/browser/ui/startup/startup_browser_creator.cc.orig 2019-09-10 11:13:43 UTC
++++ chrome/browser/ui/startup/startup_browser_creator.cc
+@@ -82,7 +82,7 @@
+ #include "chrome/browser/ui/user_manager.h"
+ #endif
+
+-#if defined(TOOLKIT_VIEWS) && defined(OS_LINUX)
++#if defined(TOOLKIT_VIEWS) && (defined(OS_LINUX) || defined(OS_BSD))
+ #include "ui/events/devices/x11/touch_factory_x11.h" // nogncheck
+ #endif
+
+@@ -663,8 +663,10 @@ bool StartupBrowserCreator::ProcessCmdLineImpl(
+ }
+ #endif // OS_CHROMEOS
+
++#if 0 /* XXX */
+ #if defined(TOOLKIT_VIEWS) && defined(USE_X11)
+ ui::TouchFactory::SetTouchDeviceListFromCommandLine();
++#endif
+ #endif
+
+ #if defined(OS_MACOSX)
diff --git a/devel/electron6/files/patch-chrome_browser_ui_tab__helpers.cc b/devel/electron6/files/patch-chrome_browser_ui_tab__helpers.cc
new file mode 100644
index 000000000000..d6b26a736d65
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_browser_ui_tab__helpers.cc
@@ -0,0 +1,25 @@
+--- chrome/browser/ui/tab_helpers.cc.orig 2019-09-10 11:13:43 UTC
++++ chrome/browser/ui/tab_helpers.cc
+@@ -119,7 +119,7 @@
+ #include "components/zoom/zoom_controller.h"
+ #endif // defined(OS_ANDROID)
+
+-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+ #include "chrome/browser/ui/blocked_content/framebust_block_tab_helper.h"
+ #include "chrome/browser/ui/hats/hats_helper.h"
+ #endif
+@@ -307,11 +307,11 @@ void TabHelpers::AttachTabHelpers(WebContents* web_con
+ #endif
+
+ #if defined(OS_WIN) || defined(OS_MACOSX) || \
+- (defined(OS_LINUX) && !defined(OS_CHROMEOS))
++ (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ metrics::DesktopSessionDurationObserver::CreateForWebContents(web_contents);
+ #endif
+
+-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+ if (base::FeatureList::IsEnabled(
+ features::kHappinessTrackingSurveysForDesktop)) {
+ HatsHelper::CreateForWebContents(web_contents);
diff --git a/devel/electron6/files/patch-chrome_browser_ui_task__manager_task__manager__columns.cc b/devel/electron6/files/patch-chrome_browser_ui_task__manager_task__manager__columns.cc
new file mode 100644
index 000000000000..a574d6c70a1c
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_browser_ui_task__manager_task__manager__columns.cc
@@ -0,0 +1,15 @@
+--- chrome/browser/ui/task_manager/task_manager_columns.cc.orig 2019-09-10 10:42:31 UTC
++++ chrome/browser/ui/task_manager/task_manager_columns.cc
+@@ -93,10 +93,10 @@ const TableColumnData kColumns[] = {
+ base::size("100000") * kCharWidth, -1, true, false, false},
+ #endif
+
+-#if defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ {IDS_TASK_MANAGER_OPEN_FD_COUNT_COLUMN, ui::TableColumn::RIGHT, -1, 0,
+ base::size("999") * kCharWidth, -1, true, false, false},
+-#endif // defined(OS_LINUX) || defined(OS_MACOSX)
++#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ {IDS_TASK_MANAGER_PROCESS_PRIORITY_COLUMN, ui::TableColumn::LEFT, -1, 0,
+ base::size("background") * kCharWidth, -1, true, true, false},
+ {IDS_TASK_MANAGER_KEEPALIVE_COUNT_COLUMN, ui::TableColumn::RIGHT, -1, 0,
diff --git a/devel/electron6/files/patch-chrome_browser_ui_task__manager_task__manager__table__model.cc b/devel/electron6/files/patch-chrome_browser_ui_task__manager_task__manager__table__model.cc
new file mode 100644
index 000000000000..4c4a1fd013c2
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_browser_ui_task__manager_task__manager__table__model.cc
@@ -0,0 +1,50 @@
+--- chrome/browser/ui/task_manager/task_manager_table_model.cc.orig 2019-09-10 10:42:31 UTC
++++ chrome/browser/ui/task_manager/task_manager_table_model.cc
+@@ -451,13 +451,13 @@ base::string16 TaskManagerTableModel::GetText(int row,
+ ? stringifier_->backgrounded_string()
+ : stringifier_->foregrounded_string();
+
+-#if defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ case IDS_TASK_MANAGER_OPEN_FD_COUNT_COLUMN: {
+ const int fd_count = observed_task_manager()->GetOpenFdCount(tasks_[row]);
+ return fd_count >= 0 ? base::FormatNumber(fd_count)
+ : stringifier_->n_a_string();
+ }
+-#endif // defined(OS_LINUX) || defined(OS_MACOSX)
++#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+
+ case IDS_TASK_MANAGER_KEEPALIVE_COUNT_COLUMN: {
+ return stringifier_->GetKeepaliveCountText(
+@@ -617,7 +617,7 @@ int TaskManagerTableModel::CompareValues(int row1,
+ return BooleanCompare(is_proc1_bg, is_proc2_bg);
+ }
+
+-#if defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ case IDS_TASK_MANAGER_OPEN_FD_COUNT_COLUMN: {
+ const int proc1_fd_count =
+ observed_task_manager()->GetOpenFdCount(tasks_[row1]);
+@@ -625,7 +625,7 @@ int TaskManagerTableModel::CompareValues(int row1,
+ observed_task_manager()->GetOpenFdCount(tasks_[row2]);
+ return ValueCompare(proc1_fd_count, proc2_fd_count);
+ }
+-#endif // defined(OS_LINUX) || defined(OS_MACOSX)
++#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+
+ default:
+ NOTREACHED();
+@@ -791,11 +791,11 @@ void TaskManagerTableModel::UpdateRefreshTypes(int col
+ type = REFRESH_TYPE_KEEPALIVE_COUNT;
+ break;
+
+-#if defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ case IDS_TASK_MANAGER_OPEN_FD_COUNT_COLUMN:
+ type = REFRESH_TYPE_FD_COUNT;
+ break;
+-#endif // defined(OS_LINUX) || defined(OS_MACOSX)
++#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+
+ default:
+ NOTREACHED();
diff --git a/devel/electron6/files/patch-chrome_browser_ui_toolbar_app__menu__model.cc b/devel/electron6/files/patch-chrome_browser_ui_toolbar_app__menu__model.cc
new file mode 100644
index 000000000000..baa7c460cec5
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_browser_ui_toolbar_app__menu__model.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/ui/toolbar/app_menu_model.cc.orig 2019-09-10 11:13:43 UTC
++++ chrome/browser/ui/toolbar/app_menu_model.cc
+@@ -671,7 +671,7 @@ bool AppMenuModel::IsCommandIdVisible(int command_id)
+ return app_menu_icon_controller_->GetTypeAndSeverity().type ==
+ AppMenuIconController::IconType::UPGRADE_NOTIFICATION;
+ }
+-#if !defined(OS_LINUX) || defined(USE_AURA)
++#if (!defined(OS_LINUX) && !defined(OS_BSD)) || defined(USE_AURA)
+ case IDC_BOOKMARK_PAGE:
+ return !chrome::ShouldRemoveBookmarkThisPageUI(browser_->profile());
+ case IDC_BOOKMARK_ALL_TABS:
diff --git a/devel/electron6/files/patch-chrome_browser_ui_views_accelerator__table.cc b/devel/electron6/files/patch-chrome_browser_ui_views_accelerator__table.cc
new file mode 100644
index 000000000000..76a1d927fa1b
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_browser_ui_views_accelerator__table.cc
@@ -0,0 +1,46 @@
+--- chrome/browser/ui/views/accelerator_table.cc.orig 2019-09-10 11:13:43 UTC
++++ chrome/browser/ui/views/accelerator_table.cc
+@@ -50,7 +50,7 @@ const AcceleratorMapping kAcceleratorMap[] = {
+ {ui::VKEY_S, ui::EF_PLATFORM_ACCELERATOR, IDC_SAVE_PAGE},
+ {ui::VKEY_9, ui::EF_PLATFORM_ACCELERATOR, IDC_SELECT_LAST_TAB},
+ {ui::VKEY_NUMPAD9, ui::EF_PLATFORM_ACCELERATOR, IDC_SELECT_LAST_TAB},
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ {ui::VKEY_9, ui::EF_ALT_DOWN, IDC_SELECT_LAST_TAB},
+ {ui::VKEY_NUMPAD9, ui::EF_ALT_DOWN, IDC_SELECT_LAST_TAB},
+ {ui::VKEY_NEXT, ui::EF_CONTROL_DOWN | ui::EF_SHIFT_DOWN, IDC_MOVE_TAB_NEXT},
+@@ -80,7 +80,7 @@ const AcceleratorMapping kAcceleratorMap[] = {
+ {ui::VKEY_NUMPAD7, ui::EF_PLATFORM_ACCELERATOR, IDC_SELECT_TAB_6},
+ {ui::VKEY_8, ui::EF_PLATFORM_ACCELERATOR, IDC_SELECT_TAB_7},
+ {ui::VKEY_NUMPAD8, ui::EF_PLATFORM_ACCELERATOR, IDC_SELECT_TAB_7},
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ {ui::VKEY_1, ui::EF_ALT_DOWN, IDC_SELECT_TAB_0},
+ {ui::VKEY_NUMPAD1, ui::EF_ALT_DOWN, IDC_SELECT_TAB_0},
+ {ui::VKEY_2, ui::EF_ALT_DOWN, IDC_SELECT_TAB_1},
+@@ -98,7 +98,7 @@ const AcceleratorMapping kAcceleratorMap[] = {
+ {ui::VKEY_8, ui::EF_ALT_DOWN, IDC_SELECT_TAB_7},
+ {ui::VKEY_NUMPAD8, ui::EF_ALT_DOWN, IDC_SELECT_TAB_7},
+ {ui::VKEY_BROWSER_FAVORITES, ui::EF_NONE, IDC_SHOW_BOOKMARK_BAR},
+-#endif // OS_LINUX && !OS_CHROMEOS
++#endif // (OS_LINUX || OS_BSD) && !OS_CHROMEOS
+ {ui::VKEY_B, ui::EF_SHIFT_DOWN | ui::EF_PLATFORM_ACCELERATOR,
+ IDC_SHOW_BOOKMARK_BAR},
+ {ui::VKEY_OEM_MINUS, ui::EF_PLATFORM_ACCELERATOR, IDC_ZOOM_MINUS},
+@@ -124,14 +124,14 @@ const AcceleratorMapping kAcceleratorMap[] = {
+ IDC_SHOW_AVATAR_MENU},
+
+ // Platform-specific key maps.
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ {ui::VKEY_BROWSER_BACK, ui::EF_NONE, IDC_BACK},
+ {ui::VKEY_BROWSER_FORWARD, ui::EF_NONE, IDC_FORWARD},
+ {ui::VKEY_BROWSER_HOME, ui::EF_NONE, IDC_HOME},
+ {ui::VKEY_BROWSER_REFRESH, ui::EF_NONE, IDC_RELOAD},
+ {ui::VKEY_BROWSER_REFRESH, ui::EF_CONTROL_DOWN, IDC_RELOAD_BYPASSING_CACHE},
+ {ui::VKEY_BROWSER_REFRESH, ui::EF_SHIFT_DOWN, IDC_RELOAD_BYPASSING_CACHE},
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+
+ #if defined(OS_CHROMEOS)
+ // On Chrome OS, VKEY_BROWSER_SEARCH is handled in Ash.
diff --git a/devel/electron6/files/patch-chrome_browser_ui_views_chrome__browser__main__extra__parts__views.cc b/devel/electron6/files/patch-chrome_browser_ui_views_chrome__browser__main__extra__parts__views.cc
new file mode 100644
index 000000000000..04715a9d4f83
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_browser_ui_views_chrome__browser__main__extra__parts__views.cc
@@ -0,0 +1,38 @@
+--- chrome/browser/ui/views/chrome_browser_main_extra_parts_views.cc.orig 2019-09-10 11:13:44 UTC
++++ chrome/browser/ui/views/chrome_browser_main_extra_parts_views.cc
+@@ -32,7 +32,7 @@
+ #include "ui/wm/core/wm_state.h"
+ #endif // defined(USE_AURA)
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS)
+ #include <sys/stat.h>
+ #include <sys/types.h>
+ #include <unistd.h>
+@@ -42,7 +42,7 @@
+ #include "chrome/grit/generated_resources.h"
+ #include "content/public/common/content_switches.h"
+ #include "ui/base/l10n/l10n_util.h"
+-#endif // defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#endif // (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS)
+
+ ChromeBrowserMainExtraPartsViews::ChromeBrowserMainExtraPartsViews() {}
+
+@@ -87,7 +87,7 @@ void ChromeBrowserMainExtraPartsViews::PreProfileInit(
+ g_browser_process->system_network_context_manager()->GetContext());
+ }
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS)
+ // On the Linux desktop, we want to prevent the user from logging in as root,
+ // so that we don't destroy the profile. Now that we have some minimal ui
+ // initialized, check to see if we're running as root and bail if we are.
+@@ -118,7 +118,7 @@ void ChromeBrowserMainExtraPartsViews::PreProfileInit(
+ base::RunLoop().RunUntilIdle();
+
+ exit(EXIT_FAILURE);
+-#endif // defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#endif // (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS)
+ }
+
+ void ChromeBrowserMainExtraPartsViews::PostBrowserStart() {
diff --git a/devel/electron6/files/patch-chrome_browser_ui_views_chrome__views__delegate.h b/devel/electron6/files/patch-chrome_browser_ui_views_chrome__views__delegate.h
new file mode 100644
index 000000000000..f10c381e65f5
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_browser_ui_views_chrome__views__delegate.h
@@ -0,0 +1,11 @@
+--- chrome/browser/ui/views/chrome_views_delegate.h.orig 2019-09-10 10:42:31 UTC
++++ chrome/browser/ui/views/chrome_views_delegate.h
+@@ -44,7 +44,7 @@ class ChromeViewsDelegate : public views::ViewsDelegat
+ HICON GetSmallWindowIcon() const override;
+ int GetAppbarAutohideEdges(HMONITOR monitor,
+ base::OnceClosure callback) override;
+-#elif defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#elif (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ gfx::ImageSkia* GetDefaultWindowIcon() const override;
+ bool WindowManagerProvidesTitleBar(bool maximized) override;
+ #endif
diff --git a/devel/electron6/files/patch-chrome_browser_ui_views_first__run__dialog.cc b/devel/electron6/files/patch-chrome_browser_ui_views_first__run__dialog.cc
new file mode 100644
index 000000000000..524e710df24d
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_browser_ui_views_first__run__dialog.cc
@@ -0,0 +1,24 @@
+--- chrome/browser/ui/views/first_run_dialog.cc.orig 2019-09-10 11:13:44 UTC
++++ chrome/browser/ui/views/first_run_dialog.cc
+@@ -37,8 +37,10 @@
+ namespace {
+
+ void InitCrashReporterIfEnabled(bool enabled) {
++#if !defined(OS_BSD)
+ if (enabled)
+ breakpad::InitCrashReporter(std::string());
++#endif
+ }
+
+ } // namespace
+@@ -111,8 +113,10 @@ views::View* FirstRunDialog::CreateExtraView() {
+ bool FirstRunDialog::Accept() {
+ GetWidget()->Hide();
+
++#if !defined(OS_BSD)
+ ChangeMetricsReportingStateWithReply(report_crashes_->GetChecked(),
+ base::Bind(&InitCrashReporterIfEnabled));
++#endif
+
+ if (make_default_->GetChecked())
+ shell_integration::SetAsDefaultBrowser();
diff --git a/devel/electron6/files/patch-chrome_browser_ui_views_frame_browser__frame.cc b/devel/electron6/files/patch-chrome_browser_ui_views_frame_browser__frame.cc
new file mode 100644
index 000000000000..de0479f602e3
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_browser_ui_views_frame_browser__frame.cc
@@ -0,0 +1,29 @@
+--- chrome/browser/ui/views/frame/browser_frame.cc.orig 2019-09-10 11:13:44 UTC
++++ chrome/browser/ui/views/frame/browser_frame.cc
+@@ -39,7 +39,7 @@
+ #include "components/user_manager/user_manager.h"
+ #endif
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include "chrome/browser/ui/views/frame/browser_command_handler_linux.h"
+ #endif
+
+@@ -50,7 +50,7 @@
+ namespace {
+
+ bool IsUsingGtkTheme(Profile* profile) {
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ return ThemeServiceFactory::GetForProfile(profile)->UsingSystemTheme();
+ #else
+ return false;
+@@ -111,7 +111,7 @@ void BrowserFrame::InitBrowserFrame() {
+ non_client_view()->set_context_menu_controller(this);
+ }
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ browser_command_handler_.reset(new BrowserCommandHandlerLinux(browser_view_));
+ #endif
+ }
diff --git a/devel/electron6/files/patch-chrome_browser_ui_views_frame_browser__non__client__frame__view__factory__views.cc b/devel/electron6/files/patch-chrome_browser_ui_views_frame_browser__non__client__frame__view__factory__views.cc
new file mode 100644
index 000000000000..b2553ed67db0
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_browser_ui_views_frame_browser__non__client__frame__view__factory__views.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/ui/views/frame/browser_non_client_frame_view_factory_views.cc.orig 2019-09-10 10:42:31 UTC
++++ chrome/browser/ui/views/frame/browser_non_client_frame_view_factory_views.cc
+@@ -13,7 +13,7 @@
+ #include "chrome/browser/ui/views/frame/glass_browser_frame_view.h"
+ #endif
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS)
+ #include "ui/views/linux_ui/linux_ui.h"
+ #endif
+
+@@ -32,7 +32,7 @@ OpaqueBrowserFrameView* CreateOpaqueBrowserFrameView(
+ BrowserView* browser_view) {
+ #if BUILDFLAG(ENABLE_NATIVE_WINDOW_NAV_BUTTONS)
+ std::unique_ptr<views::NavButtonProvider> nav_button_provider;
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ if (ThemeServiceFactory::GetForProfile(browser_view->browser()->profile())
+ ->UsingSystemTheme() &&
+ views::LinuxUI::instance()) {
diff --git a/devel/electron6/files/patch-chrome_browser_ui_views_frame_browser__view.cc b/devel/electron6/files/patch-chrome_browser_ui_views_frame_browser__view.cc
new file mode 100644
index 000000000000..6f4ce648bd81
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_browser_ui_views_frame_browser__view.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/ui/views/frame/browser_view.cc.orig 2019-09-10 11:13:44 UTC
++++ chrome/browser/ui/views/frame/browser_view.cc
+@@ -1557,7 +1557,7 @@ void BrowserView::UserChangedTheme(BrowserThemeChangeT
+ const bool should_use_native_frame = frame_->ShouldUseNativeFrame();
+
+ bool must_regenerate_frame;
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ // GTK and user theme changes can both change frame buttons, so the frame
+ // always needs to be regenerated on Linux.
+ must_regenerate_frame = true;
diff --git a/devel/electron6/files/patch-chrome_browser_ui_views_frame_opaque__browser__frame__view.cc b/devel/electron6/files/patch-chrome_browser_ui_views_frame_opaque__browser__frame__view.cc
new file mode 100644
index 000000000000..d024ba59ec01
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_browser_ui_views_frame_opaque__browser__frame__view.cc
@@ -0,0 +1,29 @@
+--- chrome/browser/ui/views/frame/opaque_browser_frame_view.cc.orig 2019-09-10 11:13:44 UTC
++++ chrome/browser/ui/views/frame/opaque_browser_frame_view.cc
+@@ -47,7 +47,7 @@
+ #include "ui/views/window/vector_icons/vector_icons.h"
+ #include "ui/views/window/window_shape.h"
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include "ui/views/controls/menu/menu_runner.h"
+ #endif
+
+@@ -353,7 +353,7 @@ void OpaqueBrowserFrameView::ButtonPressed(views::Butt
+ void OpaqueBrowserFrameView::OnMenuButtonClicked(views::Button* source,
+ const gfx::Point& point,
+ const ui::Event* event) {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ views::MenuRunner menu_runner(frame()->GetSystemMenuModel(),
+ views::MenuRunner::HAS_MNEMONICS);
+ menu_runner.RunMenuAt(
+@@ -479,7 +479,7 @@ bool OpaqueBrowserFrameView::EverHasVisibleBackgroundT
+
+ OpaqueBrowserFrameView::FrameButtonStyle
+ OpaqueBrowserFrameView::GetFrameButtonStyle() const {
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ return FrameButtonStyle::kMdButton;
+ #else
+ return FrameButtonStyle::kImageButton;
diff --git a/devel/electron6/files/patch-chrome_browser_ui_views_frame_opaque__browser__frame__view__platform__specific.cc b/devel/electron6/files/patch-chrome_browser_ui_views_frame_opaque__browser__frame__view__platform__specific.cc
new file mode 100644
index 000000000000..5878f6c74be5
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_browser_ui_views_frame_opaque__browser__frame__view__platform__specific.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/ui/views/frame/opaque_browser_frame_view_platform_specific.cc.orig 2019-09-10 10:42:31 UTC
++++ chrome/browser/ui/views/frame/opaque_browser_frame_view_platform_specific.cc
+@@ -6,7 +6,7 @@
+
+ #include "build/build_config.h"
+
+-#if !defined(OS_LINUX)
++#if !defined(OS_LINUX) && !defined(OS_FREEBSD)
+
+ // static
+ std::unique_ptr<OpaqueBrowserFrameViewPlatformSpecific>
diff --git a/devel/electron6/files/patch-chrome_browser_ui_views_frame_system__menu__model__builder.cc b/devel/electron6/files/patch-chrome_browser_ui_views_frame_system__menu__model__builder.cc
new file mode 100644
index 000000000000..1735ae7cd330
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_browser_ui_views_frame_system__menu__model__builder.cc
@@ -0,0 +1,29 @@
+--- chrome/browser/ui/views/frame/system_menu_model_builder.cc.orig 2019-09-10 11:13:44 UTC
++++ chrome/browser/ui/views/frame/system_menu_model_builder.cc
+@@ -79,7 +79,7 @@ void SystemMenuModelBuilder::BuildMenu(ui::SimpleMenuM
+
+ void SystemMenuModelBuilder::BuildSystemMenuForBrowserWindow(
+ ui::SimpleMenuModel* model) {
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ model->AddItemWithStringId(IDC_MINIMIZE_WINDOW, IDS_MINIMIZE_WINDOW_MENU);
+ model->AddItemWithStringId(IDC_MAXIMIZE_WINDOW, IDS_MAXIMIZE_WINDOW_MENU);
+ model->AddItemWithStringId(IDC_RESTORE_WINDOW, IDS_RESTORE_WINDOW_MENU);
+@@ -91,7 +91,7 @@ void SystemMenuModelBuilder::BuildSystemMenuForBrowser
+ model->AddSeparator(ui::NORMAL_SEPARATOR);
+ model->AddItemWithStringId(IDC_TASK_MANAGER, IDS_TASK_MANAGER);
+ }
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ model->AddSeparator(ui::NORMAL_SEPARATOR);
+ model->AddCheckItemWithStringId(IDC_USE_SYSTEM_TITLE_BAR,
+ IDS_SHOW_WINDOW_DECORATIONS_MENU);
+@@ -127,7 +127,7 @@ void SystemMenuModelBuilder::BuildSystemMenuForAppOrPo
+ model->AddSeparator(ui::NORMAL_SEPARATOR);
+ model->AddItemWithStringId(IDC_TASK_MANAGER, IDS_TASK_MANAGER);
+ }
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ model->AddSeparator(ui::NORMAL_SEPARATOR);
+ model->AddItemWithStringId(IDC_CLOSE_WINDOW, IDS_CLOSE);
+ #endif
diff --git a/devel/electron6/files/patch-chrome_browser_ui_views_frame_system__menu__model__delegate.cc b/devel/electron6/files/patch-chrome_browser_ui_views_frame_system__menu__model__delegate.cc
new file mode 100644
index 000000000000..791e697dadf9
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_browser_ui_views_frame_system__menu__model__delegate.cc
@@ -0,0 +1,29 @@
+--- chrome/browser/ui/views/frame/system_menu_model_delegate.cc.orig 2019-09-10 10:42:31 UTC
++++ chrome/browser/ui/views/frame/system_menu_model_delegate.cc
+@@ -15,7 +15,7 @@
+ #include "components/sessions/core/tab_restore_service.h"
+ #include "ui/base/l10n/l10n_util.h"
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ #include "chrome/common/pref_names.h"
+ #include "components/prefs/pref_service.h"
+ #endif
+@@ -30,7 +30,7 @@ SystemMenuModelDelegate::SystemMenuModelDelegate(
+ SystemMenuModelDelegate::~SystemMenuModelDelegate() {}
+
+ bool SystemMenuModelDelegate::IsCommandIdChecked(int command_id) const {
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ if (command_id == IDC_USE_SYSTEM_TITLE_BAR) {
+ PrefService* prefs = browser_->profile()->GetPrefs();
+ return !prefs->GetBoolean(prefs::kUseCustomChromeFrame);
+@@ -44,7 +44,7 @@ bool SystemMenuModelDelegate::IsCommandIdEnabled(int c
+ }
+
+ bool SystemMenuModelDelegate::IsCommandIdVisible(int command_id) const {
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ bool is_maximized = browser_->window()->IsMaximized();
+ switch (command_id) {
+ case IDC_MAXIMIZE_WINDOW:
diff --git a/devel/electron6/files/patch-chrome_browser_ui_views_hung__renderer__view.cc b/devel/electron6/files/patch-chrome_browser_ui_views_hung__renderer__view.cc
new file mode 100644
index 000000000000..ddd7cdd9fa51
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_browser_ui_views_hung__renderer__view.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/ui/views/hung_renderer_view.cc.orig 2019-09-10 11:13:44 UTC
++++ chrome/browser/ui/views/hung_renderer_view.cc
+@@ -390,7 +390,7 @@ bool HungRendererDialogView::Cancel() {
+ content::RenderProcessHost* rph =
+ hung_pages_table_model_->GetRenderWidgetHost()->GetProcess();
+ if (rph) {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // A generic |CrashDumpHungChildProcess()| is not implemented for Linux.
+ // Instead we send an explicit IPC to crash on the renderer's IO thread.
+ rph->ForceCrash();
diff --git a/devel/electron6/files/patch-chrome_browser_ui_views_tabs_new__tab__button.cc b/devel/electron6/files/patch-chrome_browser_ui_views_tabs_new__tab__button.cc
new file mode 100644
index 000000000000..5139da57a524
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_browser_ui_views_tabs_new__tab__button.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/ui/views/tabs/new_tab_button.cc.orig 2019-09-10 11:13:44 UTC
++++ chrome/browser/ui/views/tabs/new_tab_button.cc
+@@ -69,7 +69,7 @@ const gfx::Size NewTabButton::kButtonSize{28, 28};
+ NewTabButton::NewTabButton(TabStrip* tab_strip, views::ButtonListener* listener)
+ : views::ImageButton(listener), tab_strip_(tab_strip) {
+ set_animate_on_state_change(true);
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ set_triggerable_event_flags(triggerable_event_flags() |
+ ui::EF_MIDDLE_MOUSE_BUTTON);
+ #endif
diff --git a/devel/electron6/files/patch-chrome_browser_ui_views_tabs_tab.cc b/devel/electron6/files/patch-chrome_browser_ui_views_tabs_tab.cc
new file mode 100644
index 000000000000..3f2baf888361
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_browser_ui_views_tabs_tab.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/ui/views/tabs/tab.cc.orig 2019-09-10 11:13:44 UTC
++++ chrome/browser/ui/views/tabs/tab.cc
+@@ -525,7 +525,7 @@ void Tab::OnMouseCaptureLost() {
+ void Tab::OnMouseMoved(const ui::MouseEvent& event) {
+ tab_style_->SetHoverLocation(event.location());
+ controller_->OnMouseEventInTab(this, event);
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ MaybeUpdateHoverStatus(event);
+ #endif
+ }
+@@ -535,7 +535,7 @@ void Tab::OnMouseEntered(const ui::MouseEvent& event)
+ }
+
+ void Tab::MaybeUpdateHoverStatus(const ui::MouseEvent& event) {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Move the hit test area for hovering up so that it is not overlapped by tab
+ // hover cards when they are shown.
+ // TODO(crbug/978134): Once Linux/CrOS widget transparency is solved, remove
diff --git a/devel/electron6/files/patch-chrome_browser_ui_views_tabs_tab__drag__controller.cc b/devel/electron6/files/patch-chrome_browser_ui_views_tabs_tab__drag__controller.cc
new file mode 100644
index 000000000000..18a89332a8b5
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_browser_ui_views_tabs_tab__drag__controller.cc
@@ -0,0 +1,29 @@
+--- chrome/browser/ui/views/tabs/tab_drag_controller.cc.orig 2019-09-10 11:13:44 UTC
++++ chrome/browser/ui/views/tabs/tab_drag_controller.cc
+@@ -444,7 +444,7 @@ void TabDragController::Init(TabDragContext* source_co
+ // synchronous on desktop Linux, so use that.
+ // - Chrome OS
+ // Releasing capture on Ash cancels gestures so avoid it.
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ can_release_capture_ = false;
+ #endif
+ start_point_in_screen_ = gfx::Point(source_tab_offset, mouse_offset.y());
+@@ -872,7 +872,7 @@ TabDragController::DragBrowserToNewTabStrip(TabDragCon
+ else
+ SetCapture(target_context);
+
+-#if !defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if (!defined(OS_LINUX) || defined(OS_CHROMEOS)) && !defined(OS_BSD)
+ // EndMoveLoop is going to snap the window back to its original location.
+ // Hide it so users don't see this. Hiding a window in Linux aura causes
+ // it to lose capture so skip it.
+@@ -2023,7 +2023,7 @@ TabDragController::Liveness TabDragController::GetLoca
+ exclude.insert(dragged_window);
+ }
+ }
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ // Exclude windows which are pending deletion via Browser::TabStripEmpty().
+ // These windows can be returned in the Linux Aura port because the browser
+ // window which was used for dragging is not hidden once all of its tabs are
diff --git a/devel/electron6/files/patch-chrome_browser_ui_webui_about__ui.cc b/devel/electron6/files/patch-chrome_browser_ui_webui_about__ui.cc
new file mode 100644
index 000000000000..c7a9dc5e48bc
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_browser_ui_webui_about__ui.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/ui/webui/about_ui.cc.orig 2019-09-10 11:13:44 UTC
++++ chrome/browser/ui/webui/about_ui.cc
+@@ -552,7 +552,7 @@ std::string ChromeURLs() {
+ return html;
+ }
+
+-#if defined(OS_LINUX) || defined(OS_OPENBSD)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ std::string AboutLinuxProxyConfig() {
+ std::string data;
+ AppendHeader(&data, 0,
+@@ -607,7 +607,7 @@ void AboutUIHTMLSource::StartDataRequest(
+ .GetRawDataResource(idr)
+ .as_string();
+ }
+-#if defined(OS_LINUX) || defined(OS_OPENBSD)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ } else if (source_name_ == chrome::kChromeUILinuxProxyConfigHost) {
+ response = AboutLinuxProxyConfig();
+ #endif
diff --git a/devel/electron6/files/patch-chrome_browser_ui_webui_chrome__web__ui__controller__factory.cc b/devel/electron6/files/patch-chrome_browser_ui_webui_chrome__web__ui__controller__factory.cc
new file mode 100644
index 000000000000..75c0f6272ca5
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_browser_ui_webui_chrome__web__ui__controller__factory.cc
@@ -0,0 +1,55 @@
+--- chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc.orig 2019-09-10 11:13:44 UTC
++++ chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc
+@@ -205,11 +205,11 @@
+ #include "chrome/browser/ui/webui/welcome/welcome_win10_ui.h"
+ #endif
+
+-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+ #include "chrome/browser/ui/webui/discards/discards_ui.h"
+ #endif
+
+-#if defined(OS_LINUX) || defined(OS_ANDROID)
++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
+ #include "chrome/browser/ui/webui/sandbox_internals_ui.h"
+ #endif
+
+@@ -325,7 +325,7 @@ bool IsAboutUI(const GURL& url) {
+ #if !defined(OS_ANDROID)
+ || url.host_piece() == chrome::kChromeUITermsHost
+ #endif
+-#if defined(OS_LINUX) || defined(OS_OPENBSD)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ || url.host_piece() == chrome::kChromeUILinuxProxyConfigHost
+ #endif
+ #if defined(OS_CHROMEOS)
+@@ -627,7 +627,7 @@ WebUIFactoryFunction GetWebUIFactoryFunction(WebUI* we
+ if (url.host_piece() == chrome::kChromeUINaClHost)
+ return &NewWebUI<NaClUI>;
+ #endif
+-#if (defined(OS_LINUX) && defined(TOOLKIT_VIEWS)) || defined(USE_AURA)
++#if (defined(OS_LINUX) && defined(TOOLKIT_VIEWS)) || defined(USE_AURA) || defined(OS_BSD)
+ if (url.host_piece() == chrome::kChromeUITabModalConfirmDialogHost)
+ return &NewWebUI<ConstrainedWebDialogUI>;
+ #endif
+@@ -672,17 +672,17 @@ WebUIFactoryFunction GetWebUIFactoryFunction(WebUI* we
+ return &NewWebUI<CastUI>;
+ }
+ #endif
+-#if defined(OS_LINUX) || defined(OS_ANDROID)
++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
+ if (url.host_piece() == chrome::kChromeUISandboxHost) {
+ return &NewWebUI<SandboxInternalsUI>;
+ }
+ #endif
+-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+ if (url.host_piece() == chrome::kChromeUIDiscardsHost)
+ return &NewWebUI<DiscardsUI>;
+ #endif
+ #if defined(OS_WIN) || defined(OS_MACOSX) || \
+- (defined(OS_LINUX) && !defined(OS_CHROMEOS))
++ (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ if (url.host_piece() == chrome::kChromeUIBrowserSwitchHost)
+ return &NewWebUI<BrowserSwitchUI>;
+ #endif
diff --git a/devel/electron6/files/patch-chrome_browser_ui_webui_settings_appearance__handler.cc b/devel/electron6/files/patch-chrome_browser_ui_webui_settings_appearance__handler.cc
new file mode 100644
index 000000000000..99d4f241ed68
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_browser_ui_webui_settings_appearance__handler.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/ui/webui/settings/appearance_handler.cc.orig 2019-09-10 11:13:44 UTC
++++ chrome/browser/ui/webui/settings/appearance_handler.cc
+@@ -31,7 +31,7 @@ void AppearanceHandler::RegisterMessages() {
+ "useDefaultTheme",
+ base::BindRepeating(&AppearanceHandler::HandleUseDefaultTheme,
+ base::Unretained(this)));
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_BSD) && !defined(OS_CHROMEOS)
+ web_ui()->RegisterMessageCallback(
+ "useSystemTheme",
+ base::BindRepeating(&AppearanceHandler::HandleUseSystemTheme,
+@@ -59,7 +59,7 @@ void AppearanceHandler::HandleUseDefaultTheme(const ba
+ ThemeServiceFactory::GetForProfile(profile_)->UseDefaultTheme();
+ }
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_BSD) && !defined(OS_CHROMEOS)
+ void AppearanceHandler::HandleUseSystemTheme(const base::ListValue* args) {
+ if (profile_->IsSupervised())
+ NOTREACHED();
diff --git a/devel/electron6/files/patch-chrome_browser_ui_webui_settings_appearance__handler.h b/devel/electron6/files/patch-chrome_browser_ui_webui_settings_appearance__handler.h
new file mode 100644
index 000000000000..9907cecd4ff2
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_browser_ui_webui_settings_appearance__handler.h
@@ -0,0 +1,11 @@
+--- chrome/browser/ui/webui/settings/appearance_handler.h.orig 2019-09-10 11:13:44 UTC
++++ chrome/browser/ui/webui/settings/appearance_handler.h
+@@ -36,7 +36,7 @@ class AppearanceHandler : public SettingsPageUIHandler
+ // Changes the UI theme of the browser to the default theme.
+ void HandleUseDefaultTheme(const base::ListValue* args);
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS)
+ // Changes the UI theme of the browser to the system (GTK+) theme.
+ void HandleUseSystemTheme(const base::ListValue* args);
+ #endif
diff --git a/devel/electron6/files/patch-chrome_browser_ui_webui_settings_settings__localized__strings__provider.cc b/devel/electron6/files/patch-chrome_browser_ui_webui_settings_settings__localized__strings__provider.cc
new file mode 100644
index 000000000000..4be265ebfb00
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_browser_ui_webui_settings_settings__localized__strings__provider.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc.orig 2019-09-10 11:13:44 UTC
++++ chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc
+@@ -585,7 +585,7 @@ void AddAppearanceStrings(content::WebUIDataSource* ht
+ {"enterCustomWebAddress", IDS_SETTINGS_ENTER_CUSTOM_WEB_ADDRESS},
+ {"homeButtonDisabled", IDS_SETTINGS_HOME_BUTTON_DISABLED},
+ {"themes", IDS_SETTINGS_THEMES},
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ {"systemTheme", IDS_SETTINGS_SYSTEM_THEME},
+ {"useSystemTheme", IDS_SETTINGS_USE_SYSTEM_THEME},
+ {"classicTheme", IDS_SETTINGS_CLASSIC_THEME},
+@@ -605,7 +605,7 @@ void AddAppearanceStrings(content::WebUIDataSource* ht
+ {"openWallpaperApp", IDS_OS_SETTINGS_OPEN_WALLPAPER_APP},
+ {"setWallpaper", IDS_OS_SETTINGS_SET_WALLPAPER},
+ #endif
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ {"showWindowDecorations", IDS_SHOW_WINDOW_DECORATIONS},
+ #endif
+ #if defined(OS_MACOSX)
diff --git a/devel/electron6/files/patch-chrome_browser_web__applications_extensions_web__app__extension__shortcut.cc b/devel/electron6/files/patch-chrome_browser_web__applications_extensions_web__app__extension__shortcut.cc
new file mode 100644
index 000000000000..670f103ae9bc
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_browser_web__applications_extensions_web__app__extension__shortcut.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/web_applications/extensions/web_app_extension_shortcut.cc.orig 2019-09-10 11:13:44 UTC
++++ chrome/browser/web_applications/extensions/web_app_extension_shortcut.cc
+@@ -50,7 +50,7 @@ namespace {
+ #if defined(OS_MACOSX)
+ const int kDesiredSizes[] = {16, 32, 128, 256, 512};
+ const size_t kNumDesiredSizes = base::size(kDesiredSizes);
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ // Linux supports icons of any size. FreeDesktop Icon Theme Specification states
+ // that "Minimally you should install a 48x48 icon in the hicolor theme."
+ const int kDesiredSizes[] = {16, 32, 48, 128, 256, 512};
diff --git a/devel/electron6/files/patch-chrome_common_BUILD.gn b/devel/electron6/files/patch-chrome_common_BUILD.gn
new file mode 100644
index 000000000000..0da1bb32eaf4
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_common_BUILD.gn
@@ -0,0 +1,13 @@
+--- chrome/common/BUILD.gn.orig 2019-09-10 11:13:45 UTC
++++ chrome/common/BUILD.gn
+@@ -298,6 +298,10 @@ static_library("common") {
+ public_deps += [ "//ppapi/shared_impl" ]
+ }
+
++ if (is_bsd) {
++ sources -= [ "component_flash_hint_file_linux.cc" ]
++ }
++
+ if (enable_extensions) {
+ sources += [
+ "cast_messages.cc",
diff --git a/devel/electron6/files/patch-chrome_common_chrome__features.cc b/devel/electron6/files/patch-chrome_common_chrome__features.cc
new file mode 100644
index 000000000000..6e912c525ff9
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_common_chrome__features.cc
@@ -0,0 +1,27 @@
+--- chrome/common/chrome_features.cc.orig 2019-09-10 11:13:45 UTC
++++ chrome/common/chrome_features.cc
+@@ -98,13 +98,13 @@ const base::Feature kAutoFetchOnNetErrorPage{"AutoFetc
+ base::FEATURE_DISABLED_BY_DEFAULT};
+ #endif // defined(OS_ANDROID)
+
+-#if defined(OS_WIN) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD)
+ // Enables the Restart background mode optimization. When all Chrome UI is
+ // closed and it goes in the background, allows to restart the browser to
+ // discard memory.
+ const base::Feature kBackgroundModeAllowRestart{
+ "BackgroundModeAllowRestart", base::FEATURE_DISABLED_BY_DEFAULT};
+-#endif // defined(OS_WIN) || defined(OS_LINUX)
++#endif // defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD)
+
+ // Enables or disables whether permission prompts are automatically blocked
+ // after the user has explicitly dismissed them too many times.
+@@ -150,7 +150,7 @@ const base::Feature kThirdPartyModulesBlocking{
+ "ThirdPartyModulesBlocking", base::FEATURE_DISABLED_BY_DEFAULT};
+ #endif
+
+-#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_MACOSX)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_MACOSX) || defined(OS_BSD)
+ // Enables the dual certificate verification trial feature.
+ // https://crbug.com/649026
+ const base::Feature kCertDualVerificationTrialFeature{
diff --git a/devel/electron6/files/patch-chrome_common_chrome__features.h b/devel/electron6/files/patch-chrome_common_chrome__features.h
new file mode 100644
index 000000000000..749954954f4c
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_common_chrome__features.h
@@ -0,0 +1,24 @@
+--- chrome/common/chrome_features.h.orig 2019-09-10 11:13:45 UTC
++++ chrome/common/chrome_features.h
+@@ -65,10 +65,10 @@ COMPONENT_EXPORT(CHROME_FEATURES)
+ extern const base::Feature kAutoFetchOnNetErrorPage;
+ #endif
+
+-#if defined(OS_WIN) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD)
+ COMPONENT_EXPORT(CHROME_FEATURES)
+ extern const base::Feature kBackgroundModeAllowRestart;
+-#endif // defined(OS_WIN) || defined(OS_LINUX)
++#endif // defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD)
+
+ COMPONENT_EXPORT(CHROME_FEATURES)
+ extern const base::Feature kBlockPromptsIfDismissedOften;
+@@ -84,7 +84,7 @@ extern const base::Feature kBrowserHangFixesExperiment
+ COMPONENT_EXPORT(CHROME_FEATURES)
+ extern const base::Feature kBundledConnectionHelpFeature;
+
+-#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_MACOSX)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_MACOSX) || defined(OS_BSD)
+ COMPONENT_EXPORT(CHROME_FEATURES)
+ extern const base::Feature kCertDualVerificationTrialFeature;
+ #endif
diff --git a/devel/electron6/files/patch-chrome_common_chrome__paths.cc b/devel/electron6/files/patch-chrome_common_chrome__paths.cc
new file mode 100644
index 000000000000..1061b9d4b9be
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_common_chrome__paths.cc
@@ -0,0 +1,113 @@
+--- chrome/common/chrome_paths.cc.orig 2019-09-10 11:13:45 UTC
++++ chrome/common/chrome_paths.cc
+@@ -52,21 +52,21 @@ const base::FilePath::CharType kPepperFlashSystemBaseD
+ FILE_PATH_LITERAL("Internet Plug-Ins/PepperFlashPlayer");
+ #endif
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // The path to the external extension <id>.json files.
+ // /usr/share seems like a good choice, see: http://www.pathname.com/fhs/
+ const base::FilePath::CharType kFilepathSinglePrefExtensions[] =
+ #if defined(GOOGLE_CHROME_BUILD)
+ FILE_PATH_LITERAL("/usr/share/google-chrome/extensions");
+ #else
+- FILE_PATH_LITERAL("/usr/share/chromium/extensions");
++ FILE_PATH_LITERAL("/usr/local/share/chromium/extensions");
+ #endif // defined(GOOGLE_CHROME_BUILD)
+
+ // The path to the hint file that tells the pepper plugin loader
+ // where it can find the latest component updated flash.
+ const base::FilePath::CharType kComponentUpdatedFlashHint[] =
+ FILE_PATH_LITERAL("latest-component-updated-flash");
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+
+ #if defined(OS_CHROMEOS)
+ const base::FilePath::CharType kChromeOSComponentFlash[] = FILE_PATH_LITERAL(
+@@ -197,7 +197,7 @@ bool PathProvider(int key, base::FilePath* result) {
+ return false;
+ break;
+ case chrome::DIR_DEFAULT_DOWNLOADS_SAFE:
+-#if defined(OS_WIN) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD)
+ if (!GetUserDownloadsDirectorySafe(&cur))
+ return false;
+ break;
+@@ -459,17 +459,19 @@ bool PathProvider(int key, base::FilePath* result) {
+ if (!base::PathExists(cur)) // We don't want to create this
+ return false;
+ break;
+-#if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_OPENBSD)
++#if defined(OS_POSIX) && !defined(OS_MACOSX)
+ case chrome::DIR_POLICY_FILES: {
+ #if defined(GOOGLE_CHROME_BUILD)
+ cur = base::FilePath(FILE_PATH_LITERAL("/etc/opt/chrome/policies"));
++#elif defined(OS_BSD)
++ cur = base::FilePath(FILE_PATH_LITERAL("/usr/local/etc/chrome/policies"));
+ #else
+ cur = base::FilePath(FILE_PATH_LITERAL("/etc/chromium/policies"));
+ #endif
+ break;
+ }
+ #endif
+-#if defined(OS_CHROMEOS) || (defined(OS_LINUX) && defined(CHROMIUM_BUILD)) || \
++#if defined(OS_CHROMEOS) || (defined(OS_LINUX) && defined(CHROMIUM_BUILD)) || defined(OS_BSD) || \
+ defined(OS_MACOSX)
+ case chrome::DIR_USER_EXTERNAL_EXTENSIONS: {
+ if (!base::PathService::Get(chrome::DIR_USER_DATA, &cur))
+@@ -478,7 +480,7 @@ bool PathProvider(int key, base::FilePath* result) {
+ break;
+ }
+ #endif
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ case chrome::DIR_STANDALONE_EXTERNAL_EXTENSIONS: {
+ cur = base::FilePath(kFilepathSinglePrefExtensions);
+ break;
+@@ -513,7 +515,7 @@ bool PathProvider(int key, base::FilePath* result) {
+ #endif
+ break;
+
+-#if defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ case chrome::DIR_NATIVE_MESSAGING:
+ #if defined(OS_MACOSX)
+ #if defined(GOOGLE_CHROME_BUILD)
+@@ -527,6 +529,9 @@ bool PathProvider(int key, base::FilePath* result) {
+ #if defined(GOOGLE_CHROME_BUILD)
+ cur = base::FilePath(FILE_PATH_LITERAL(
+ "/etc/opt/chrome/native-messaging-hosts"));
++#elif defined(OS_BSD)
++ cur = base::FilePath(FILE_PATH_LITERAL(
++ "/usr/local/etc/chrome/native-messaging-hosts"));
+ #else
+ cur = base::FilePath(FILE_PATH_LITERAL(
+ "/etc/chromium/native-messaging-hosts"));
+@@ -539,7 +544,7 @@ bool PathProvider(int key, base::FilePath* result) {
+ return false;
+ cur = cur.Append(FILE_PATH_LITERAL("NativeMessagingHosts"));
+ break;
+-#endif // defined(OS_LINUX) || defined(OS_MACOSX)
++#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ #if !defined(OS_ANDROID)
+ case chrome::DIR_GLOBAL_GCM_STORE:
+ if (!base::PathService::Get(chrome::DIR_USER_DATA, &cur))
+@@ -547,7 +552,7 @@ bool PathProvider(int key, base::FilePath* result) {
+ cur = cur.Append(kGCMStoreDirname);
+ break;
+ #endif // !defined(OS_ANDROID)
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ case chrome::FILE_COMPONENT_FLASH_HINT:
+ if (!base::PathService::Get(
+ chrome::DIR_COMPONENT_UPDATED_PEPPER_FLASH_PLUGIN, &cur)) {
+@@ -555,7 +560,7 @@ bool PathProvider(int key, base::FilePath* result) {
+ }
+ cur = cur.Append(kComponentUpdatedFlashHint);
+ break;
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+ #if defined(OS_CHROMEOS)
+ case chrome::FILE_CHROME_OS_COMPONENT_FLASH:
+ cur = base::FilePath(kChromeOSComponentFlash);
diff --git a/devel/electron6/files/patch-chrome_common_chrome__paths.h b/devel/electron6/files/patch-chrome_common_chrome__paths.h
new file mode 100644
index 000000000000..0b16bf9d1ae7
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_common_chrome__paths.h
@@ -0,0 +1,42 @@
+--- chrome/common/chrome_paths.h.orig 2019-09-10 11:13:45 UTC
++++ chrome/common/chrome_paths.h
+@@ -51,7 +51,7 @@ enum {
+ // to set policies for chrome. This directory
+ // contains subdirectories.
+ #endif
+-#if defined(OS_CHROMEOS) || (defined(OS_LINUX) && defined(CHROMIUM_BUILD)) || \
++#if defined(OS_CHROMEOS) || ((defined(OS_LINUX) || defined(OS_BSD)) && defined(CHROMIUM_BUILD)) || \
+ defined(OS_MACOSX)
+ DIR_USER_EXTERNAL_EXTENSIONS, // Directory for per-user external extensions
+ // on Chrome Mac and Chromium Linux.
+@@ -60,7 +60,7 @@ enum {
+ // create it.
+ #endif
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ DIR_STANDALONE_EXTERNAL_EXTENSIONS, // Directory for 'per-extension'
+ // definition manifest files that
+ // describe extensions which are to be
+@@ -107,7 +107,7 @@ enum {
+ DIR_SUPERVISED_USER_INSTALLED_WHITELISTS, // Directory where sanitized
+ // supervised user whitelists are
+ // installed.
+-#if defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_LINUX) || defined(OS_BSD) || defined(OS_MACOSX)
+ DIR_NATIVE_MESSAGING, // System directory where native messaging host
+ // manifest files are stored.
+ DIR_USER_NATIVE_MESSAGING, // Directory with Native Messaging Hosts
+@@ -122,10 +122,10 @@ enum {
+ DIR_GEN_TEST_DATA, // Directory where generated test data resides.
+ DIR_TEST_DATA, // Directory where unit test data resides.
+ DIR_TEST_TOOLS, // Directory where unit test tools reside.
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ FILE_COMPONENT_FLASH_HINT, // A file in a known location that points to
+ // the component updated flash plugin.
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+ #if defined(OS_CHROMEOS)
+ FILE_CHROME_OS_COMPONENT_FLASH, // The location of component updated Flash on
+ // Chrome OS.
diff --git a/devel/electron6/files/patch-chrome_common_chrome__paths__internal.h b/devel/electron6/files/patch-chrome_common_chrome__paths__internal.h
new file mode 100644
index 000000000000..02afef4a6c29
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_common_chrome__paths__internal.h
@@ -0,0 +1,11 @@
+--- chrome/common/chrome_paths_internal.h.orig 2019-09-10 10:42:31 UTC
++++ chrome/common/chrome_paths_internal.h
+@@ -45,7 +45,7 @@ void GetUserCacheDirectory(const base::FilePath& profi
+ // Get the path to the user's documents directory.
+ bool GetUserDocumentsDirectory(base::FilePath* result);
+
+-#if defined(OS_WIN) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD)
+ // Gets the path to a safe default download directory for a user.
+ bool GetUserDownloadsDirectorySafe(base::FilePath* result);
+ #endif
diff --git a/devel/electron6/files/patch-chrome_common_chrome__switches.cc b/devel/electron6/files/patch-chrome_common_chrome__switches.cc
new file mode 100644
index 000000000000..a60ab2d47923
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_common_chrome__switches.cc
@@ -0,0 +1,11 @@
+--- chrome/common/chrome_switches.cc.orig 2019-09-10 11:13:45 UTC
++++ chrome/common/chrome_switches.cc
+@@ -853,7 +853,7 @@ const char kAllowNaClFileHandleAPI[] = "allow-n
+ const char kAllowNaClSocketAPI[] = "allow-nacl-socket-api";
+ #endif
+
+-#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_BSD)
+ const char kEnableNewAppMenuIcon[] = "enable-new-app-menu-icon";
+ #endif
+
diff --git a/devel/electron6/files/patch-chrome_common_chrome__switches.h b/devel/electron6/files/patch-chrome_common_chrome__switches.h
new file mode 100644
index 000000000000..5ff4d96cad3d
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_common_chrome__switches.h
@@ -0,0 +1,11 @@
+--- chrome/common/chrome_switches.h.orig 2019-09-10 11:13:45 UTC
++++ chrome/common/chrome_switches.h
+@@ -265,7 +265,7 @@ extern const char kAllowNaClFileHandleAPI[];
+ extern const char kAllowNaClSocketAPI[];
+ #endif
+
+-#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_BSD)
+ extern const char kEnableNewAppMenuIcon[];
+ #endif
+
diff --git a/devel/electron6/files/patch-chrome_common_extensions_api_api__sources.gni b/devel/electron6/files/patch-chrome_common_extensions_api_api__sources.gni
new file mode 100644
index 000000000000..3d4bd49179b9
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_common_extensions_api_api__sources.gni
@@ -0,0 +1,11 @@
+--- chrome/common/extensions/api/api_sources.gni.orig 2019-09-10 11:13:45 UTC
++++ chrome/common/extensions/api/api_sources.gni
+@@ -106,7 +106,7 @@ if (is_chromeos) {
+ "wallpaper.json",
+ "wallpaper_private.json",
+ ]
+-} else if (is_linux || is_win) {
++} else if (is_linux || is_bsd || is_win) {
+ schema_sources_ += [ "input_ime.json" ]
+ }
+
diff --git a/devel/electron6/files/patch-chrome_common_extensions_command.cc b/devel/electron6/files/patch-chrome_common_extensions_command.cc
new file mode 100644
index 000000000000..5ded7faa8cff
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_common_extensions_command.cc
@@ -0,0 +1,11 @@
+--- chrome/common/extensions/command.cc.orig 2019-09-10 10:42:31 UTC
++++ chrome/common/extensions/command.cc
+@@ -300,7 +300,7 @@ std::string Command::CommandPlatform() {
+ return values::kKeybindingPlatformMac;
+ #elif defined(OS_CHROMEOS)
+ return values::kKeybindingPlatformChromeOs;
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ return values::kKeybindingPlatformLinux;
+ #else
+ return "";
diff --git a/devel/electron6/files/patch-chrome_common_features.gni b/devel/electron6/files/patch-chrome_common_features.gni
new file mode 100644
index 000000000000..86098f230f74
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_common_features.gni
@@ -0,0 +1,14 @@
+--- chrome/common/features.gni.orig 2019-09-10 11:13:46 UTC
++++ chrome/common/features.gni
+@@ -41,9 +41,9 @@ declare_args() {
+ (is_desktop_linux && use_dbus) || is_chromeos
+
+ enable_one_click_signin =
+- is_win || is_mac || (is_linux && !is_chromeos && !is_chromecast)
++ is_win || is_mac || is_bsd || (is_linux && !is_chromeos && !is_chromecast)
+
+- enable_service_discovery = (enable_mdns && !is_android) || is_mac
++ enable_service_discovery = (enable_mdns && !is_android) || is_mac || is_bsd
+
+ # Enables use of the session service, which is enabled by default.
+ # Android stores them separately on the Java side.
diff --git a/devel/electron6/files/patch-chrome_common_pref__names.cc b/devel/electron6/files/patch-chrome_common_pref__names.cc
new file mode 100644
index 000000000000..107fbe7f3b5b
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_common_pref__names.cc
@@ -0,0 +1,44 @@
+--- chrome/common/pref_names.cc.orig 2019-09-10 11:13:46 UTC
++++ chrome/common/pref_names.cc
+@@ -982,7 +982,7 @@ const char kForceYouTubeRestrict[] = "settings.force_y
+ // only using an account that belongs to one of the domains from this pref.
+ const char kAllowedDomainsForApps[] = "settings.allowed_domains_for_apps";
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ // Linux specific preference on whether we should match the system theme.
+ const char kUsesSystemTheme[] = "extensions.theme.use_system";
+ #endif
+@@ -1076,7 +1076,7 @@ const char kShowUpdatePromotionInfoBar[] =
+ "browser.show_update_promotion_info_bar";
+ #endif
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ // Boolean that is false if we should show window manager decorations. If
+ // true, we draw a custom chrome frame (thicker title bar and blue border).
+ const char kUseCustomChromeFrame[] = "browser.custom_chrome_frame";
+@@ -1468,7 +1468,7 @@ const char kDownloadDefaultDirectory[] = "download.def
+ // upgrade a unsafe location to a safe location.
+ const char kDownloadDirUpgraded[] = "download.directory_upgrade";
+
+-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ const char kOpenPdfDownloadInSystemReader[] =
+ "download.open_pdf_in_system_reader";
+ #endif
+@@ -1730,12 +1730,12 @@ const char kAuthAndroidNegotiateAccountType[] =
+ // domain sub-content requests.
+ const char kAllowCrossOriginAuthPrompt[] = "auth.allow_cross_origin_prompt";
+
+-#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ // Boolean that specifies whether OK-AS-DELEGATE flag from KDC is respected
+ // along with kAuthNegotiateDelegateWhitelist.
+ const char kAuthNegotiateDelegateByKdcPolicy[] =
+ "auth.negotiate_delegate_by_kdc_policy";
+-#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_CHROMEOS)
++#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+
+ #if defined(OS_POSIX)
+ // Boolean that specifies whether NTLMv2 is enabled.
diff --git a/devel/electron6/files/patch-chrome_common_pref__names.h b/devel/electron6/files/patch-chrome_common_pref__names.h
new file mode 100644
index 000000000000..920035029f8b
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_common_pref__names.h
@@ -0,0 +1,41 @@
+--- chrome/common/pref_names.h.orig 2019-09-10 11:13:46 UTC
++++ chrome/common/pref_names.h
+@@ -309,7 +309,7 @@ extern const char kHistoryMenuPromoShown[];
+ extern const char kForceGoogleSafeSearch[];
+ extern const char kForceYouTubeRestrict[];
+ extern const char kAllowedDomainsForApps[];
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ extern const char kUsesSystemTheme[];
+ #endif
+ extern const char kCurrentThemePackFilename[];
+@@ -339,7 +339,7 @@ extern const char kDefaultBrowserSettingEnabled[];
+ #if defined(OS_MACOSX)
+ extern const char kShowUpdatePromotionInfoBar[];
+ #endif
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ extern const char kUseCustomChromeFrame[];
+ #endif
+ #if BUILDFLAG(ENABLE_PLUGINS)
+@@ -496,7 +496,7 @@ extern const char kAppWindowPlacement[];
+ extern const char kDownloadDefaultDirectory[];
+ extern const char kDownloadExtensionsToOpen[];
+ extern const char kDownloadDirUpgraded[];
+-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ extern const char kOpenPdfDownloadInSystemReader[];
+ #endif
+ #if defined(OS_ANDROID)
+@@ -696,9 +696,9 @@ extern const char kGSSAPILibraryName[];
+ extern const char kAuthAndroidNegotiateAccountType[];
+ extern const char kAllowCrossOriginAuthPrompt[];
+
+-#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ extern const char kAuthNegotiateDelegateByKdcPolicy[];
+-#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_CHROMEOS)
++#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+
+ #if defined(OS_POSIX)
+ extern const char kNtlmV2Enabled[];
diff --git a/devel/electron6/files/patch-chrome_common_webui__url__constants.cc b/devel/electron6/files/patch-chrome_common_webui__url__constants.cc
new file mode 100644
index 000000000000..63324304eb65
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_common_webui__url__constants.cc
@@ -0,0 +1,48 @@
+--- chrome/common/webui_url_constants.cc.orig 2019-09-10 11:13:46 UTC
++++ chrome/common/webui_url_constants.cc
+@@ -299,7 +299,7 @@ const char kChromeUIMetroFlowURL[] = "chrome://make-me
+ const char kChromeUICastHost[] = "cast";
+ #endif
+
+-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+ const char kChromeUIDiscardsHost[] = "discards";
+ const char kChromeUIDiscardsURL[] = "chrome://discards/";
+ const char kChromeUIHatsHost[] = "hats";
+@@ -310,17 +310,17 @@ const char kChromeUIHatsURL[] = "chrome://hats/";
+ const char kChromeUILinuxProxyConfigHost[] = "linux-proxy-config";
+ #endif
+
+-#if defined(OS_LINUX) || defined(OS_ANDROID)
++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
+ const char kChromeUISandboxHost[] = "sandbox";
+ #endif
+
+ #if defined(OS_WIN) || defined(OS_MACOSX) || \
+- (defined(OS_LINUX) && !defined(OS_CHROMEOS))
++ (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ const char kChromeUIBrowserSwitchHost[] = "browser-switch";
+ const char kChromeUIBrowserSwitchURL[] = "chrome://browser-switch/";
+ #endif
+
+-#if (defined(OS_LINUX) && defined(TOOLKIT_VIEWS)) || defined(USE_AURA)
++#if ((defined(OS_BSD) || defined(OS_LINUX)) && defined(TOOLKIT_VIEWS)) || defined(USE_AURA)
+ const char kChromeUITabModalConfirmDialogHost[] = "tab-modal-confirm-dialog";
+ #endif
+
+@@ -525,13 +525,13 @@ const char* const kChromeHostURLs[] = {
+ kChromeUIInternetDetailDialogHost,
+ kChromeUIAssistantOptInHost,
+ #endif
+-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+ kChromeUIDiscardsHost,
+ #endif
+ #if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_ANDROID)
+ kChromeUILinuxProxyConfigHost,
+ #endif
+-#if defined(OS_LINUX) || defined(OS_ANDROID)
++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
+ kChromeUISandboxHost,
+ #endif
+ #if defined(OS_WIN)
diff --git a/devel/electron6/files/patch-chrome_common_webui__url__constants.h b/devel/electron6/files/patch-chrome_common_webui__url__constants.h
new file mode 100644
index 000000000000..bce6dced691e
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_common_webui__url__constants.h
@@ -0,0 +1,32 @@
+--- chrome/common/webui_url_constants.h.orig 2019-09-10 11:13:46 UTC
++++ chrome/common/webui_url_constants.h
+@@ -262,7 +262,7 @@ extern const char kChromeUIMetroFlowURL[];
+ extern const char kChromeUICastHost[];
+ #endif
+
+-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+ extern const char kChromeUIDiscardsHost[];
+ extern const char kChromeUIDiscardsURL[];
+ extern const char kChromeUIHatsHost[];
+@@ -274,17 +274,17 @@ extern const char kChromeUIHatsURL[];
+ extern const char kChromeUILinuxProxyConfigHost[];
+ #endif
+
+-#if defined(OS_LINUX) || defined(OS_ANDROID)
++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
+ extern const char kChromeUISandboxHost[];
+ #endif
+
+ #if defined(OS_WIN) || defined(OS_MACOSX) || \
+- (defined(OS_LINUX) && !defined(OS_CHROMEOS))
++ (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ extern const char kChromeUIBrowserSwitchHost[];
+ extern const char kChromeUIBrowserSwitchURL[];
+ #endif
+
+-#if (defined(OS_LINUX) && defined(TOOLKIT_VIEWS)) || defined(USE_AURA)
++#if ((defined(OS_BSD) || defined(OS_LINUX)) && defined(TOOLKIT_VIEWS)) || defined(USE_AURA)
+ extern const char kChromeUITabModalConfirmDialogHost[];
+ #endif
+
diff --git a/devel/electron6/files/patch-chrome_renderer_chrome__content__renderer__client.cc b/devel/electron6/files/patch-chrome_renderer_chrome__content__renderer__client.cc
new file mode 100644
index 000000000000..8256c6e80159
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_renderer_chrome__content__renderer__client.cc
@@ -0,0 +1,11 @@
+--- chrome/renderer/chrome_content_renderer_client.cc.orig 2019-09-10 11:13:46 UTC
++++ chrome/renderer/chrome_content_renderer_client.cc
+@@ -1011,7 +1011,7 @@ WebPlugin* ChromeContentRendererClient::CreatePlugin(
+ }
+
+ case chrome::mojom::PluginStatus::kRestartRequired: {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ placeholder = create_blocked_plugin(
+ IDR_BLOCKED_PLUGIN_HTML,
+ l10n_util::GetStringFUTF16(IDS_PLUGIN_RESTART_REQUIRED,
diff --git a/devel/electron6/files/patch-chrome_renderer_pepper_pepper__flash__font__file__host.cc b/devel/electron6/files/patch-chrome_renderer_pepper_pepper__flash__font__file__host.cc
new file mode 100644
index 000000000000..1b33e38d44f9
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_renderer_pepper_pepper__flash__font__file__host.cc
@@ -0,0 +1,29 @@
+--- chrome/renderer/pepper/pepper_flash_font_file_host.cc.orig 2019-09-10 10:42:32 UTC
++++ chrome/renderer/pepper/pepper_flash_font_file_host.cc
+@@ -15,7 +15,7 @@
+ #include "ppapi/proxy/ppapi_messages.h"
+ #include "ppapi/proxy/serialized_structs.h"
+
+-#if defined(OS_LINUX) || defined(OS_OPENBSD)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include "components/services/font/public/cpp/font_loader.h"
+ #include "content/public/common/common_sandbox_support_linux.h"
+ #elif defined(OS_WIN)
+@@ -29,7 +29,7 @@ PepperFlashFontFileHost::PepperFlashFontFileHost(
+ const ppapi::proxy::SerializedFontDescription& description,
+ PP_PrivateFontCharset charset)
+ : ResourceHost(host->GetPpapiHost(), instance, resource) {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // The global SkFontConfigInterface is configured and initialized with a
+ // SkFontconfigInterface compatible font_service::FontLoader in
+ // RendererBlinkPlatformImpl (called from RenderThreadImpl::Init) at startup
+@@ -74,7 +74,7 @@ bool PepperFlashFontFileHost::GetFontData(uint32_t tab
+ void* buffer,
+ size_t* length) {
+ bool result = false;
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ if (font_file_.IsValid()) {
+ result = content::GetFontTable(font_file_.GetPlatformFile(), table,
+ 0 /* offset */,
diff --git a/devel/electron6/files/patch-chrome_renderer_pepper_pepper__flash__font__file__host.h b/devel/electron6/files/patch-chrome_renderer_pepper_pepper__flash__font__file__host.h
new file mode 100644
index 000000000000..5d6a842f6e79
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_renderer_pepper_pepper__flash__font__file__host.h
@@ -0,0 +1,20 @@
+--- chrome/renderer/pepper/pepper_flash_font_file_host.h.orig 2019-09-10 10:42:32 UTC
++++ chrome/renderer/pepper/pepper_flash_font_file_host.h
+@@ -14,7 +14,7 @@
+ #include "ppapi/c/private/pp_private_font_charset.h"
+ #include "ppapi/host/resource_host.h"
+
+-#if defined(OS_LINUX) || defined(OS_OPENBSD)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include "base/files/file.h"
+ #elif defined(OS_WIN)
+ #include "third_party/skia/include/core/SkRefCnt.h"
+@@ -50,7 +50,7 @@ class PepperFlashFontFileHost : public ppapi::host::Re
+ uint32_t table);
+ bool GetFontData(uint32_t table, void* buffer, size_t* length);
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ base::File font_file_;
+ #elif defined(OS_WIN)
+ sk_sp<SkTypeface> typeface_;
diff --git a/devel/electron6/files/patch-chrome_service_cloud__print_print__system.cc b/devel/electron6/files/patch-chrome_service_cloud__print_print__system.cc
new file mode 100644
index 000000000000..c733bf90aea1
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_service_cloud__print_print__system.cc
@@ -0,0 +1,11 @@
+--- chrome/service/cloud_print/print_system.cc.orig 2019-09-10 10:42:32 UTC
++++ chrome/service/cloud_print/print_system.cc
+@@ -36,7 +36,7 @@ std::string PrintSystem::GenerateProxyId() {
+ return base::GenerateGUID();
+ }
+
+-#if defined(OS_LINUX) && !defined(USE_CUPS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(USE_CUPS)
+ scoped_refptr<PrintSystem> PrintSystem::CreateInstance(
+ const base::DictionaryValue*) {
+ return nullptr;
diff --git a/devel/electron6/files/patch-chrome_test_BUILD.gn b/devel/electron6/files/patch-chrome_test_BUILD.gn
new file mode 100644
index 000000000000..4366d0dae98a
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_test_BUILD.gn
@@ -0,0 +1,11 @@
+--- chrome/test/BUILD.gn.orig 2019-09-10 11:13:47 UTC
++++ chrome/test/BUILD.gn
+@@ -5475,7 +5475,7 @@ test("chrome_app_unittests") {
+ "//components/crash/core/common",
+ "//components/flags_ui:switches",
+ ]
+- if (!is_fuchsia) {
++ if (!is_fuchsia && !is_bsd) {
+ # TODO(crbug.com/753619): Enable crash reporting on Fuchsia.
+ deps += [ "//third_party/breakpad:client" ]
+ }
diff --git a/devel/electron6/files/patch-chrome_test_base_in__process__browser__test.cc b/devel/electron6/files/patch-chrome_test_base_in__process__browser__test.cc
new file mode 100644
index 000000000000..eb143501adbe
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_test_base_in__process__browser__test.cc
@@ -0,0 +1,22 @@
+--- chrome/test/base/in_process_browser_test.cc.orig 2019-09-10 11:13:47 UTC
++++ chrome/test/base/in_process_browser_test.cc
+@@ -75,6 +75,10 @@
+ #include "chrome/test/base/scoped_bundle_swizzler_mac.h"
+ #endif
+
++#if defined(OS_FREEBSD)
++#include <signal.h>
++#endif
++
+ #if defined(OS_WIN)
+ #include "base/win/scoped_com_initializer.h"
+ #include "base/win/windows_version.h"
+@@ -101,7 +105,7 @@
+ #include "ui/events/test/event_generator.h"
+ #endif // defined(OS_CHROMEOS)
+
+-#if !defined(OS_CHROMEOS) && defined(OS_LINUX)
++#if !defined(OS_CHROMEOS) && (defined(OS_LINUX) || defined(OS_BSD))
+ #include "ui/views/test/test_desktop_screen_x11.h"
+ #endif
+
diff --git a/devel/electron6/files/patch-chrome_test_base_testing__browser__process.h b/devel/electron6/files/patch-chrome_test_base_testing__browser__process.h
new file mode 100644
index 000000000000..69df67671045
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_test_base_testing__browser__process.h
@@ -0,0 +1,13 @@
+--- chrome/test/base/testing_browser_process.h.orig 2019-09-10 11:13:47 UTC
++++ chrome/test/base/testing_browser_process.h
+@@ -120,8 +120,8 @@ class TestingBrowserProcess : public BrowserProcess {
+ DownloadRequestLimiter* download_request_limiter() override;
+ StartupData* startup_data() override;
+
+-#if (defined(OS_WIN) || defined(OS_LINUX)) && !defined(OS_CHROMEOS)
+- void StartAutoupdateTimer() override {}
++#if (defined(OS_WIN) || defined(OS_LINUX) || defined(OS_FREEBSD)) && !defined(OS_CHROMEOS)
++ void StartAutoupdateTimer() /*override*/ {}
+ #endif
+
+ net_log::ChromeNetLog* net_log() override;
diff --git a/devel/electron6/files/patch-chrome_test_chromedriver_chrome__launcher.cc b/devel/electron6/files/patch-chrome_test_chromedriver_chrome__launcher.cc
new file mode 100644
index 000000000000..ff94b0563919
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_test_chromedriver_chrome__launcher.cc
@@ -0,0 +1,13 @@
+--- chrome/test/chromedriver/chrome_launcher.cc.orig 2019-09-10 11:13:47 UTC
++++ chrome/test/chromedriver/chrome_launcher.cc
+@@ -66,6 +66,10 @@
+ #include "chrome/test/chromedriver/keycode_text_conversion.h"
+ #endif
+
++#if defined(OS_BSD)
++#include <sys/wait.h>
++#endif
++
+ namespace {
+
+ // TODO(eseckler): Remove --ignore-certificate-errors for newer Chrome versions
diff --git a/devel/electron6/files/patch-chrome_test_chromedriver_chrome_chrome__finder.cc b/devel/electron6/files/patch-chrome_test_chromedriver_chrome_chrome__finder.cc
new file mode 100644
index 000000000000..d61ebc6a4334
--- /dev/null
+++ b/devel/electron6/files/patch-chrome_test_chromedriver_chrome_chrome__finder.cc
@@ -0,0 +1,20 @@
+--- chrome/test/chromedriver/chrome/chrome_finder.cc.orig 2019-09-10 10:42:32 UTC
++++ chrome/test/chromedriver/chrome/chrome_finder.cc
+@@ -48,7 +48,7 @@ void GetApplicationDirs(std::vector<base::FilePath>* l
+ installation_locations[i].Append(L"Chromium\\Application"));
+ }
+ }
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ void GetApplicationDirs(std::vector<base::FilePath>* locations) {
+ // TODO: Respect users' PATH variables.
+ // Until then, we use an approximation of the most common defaults.
+@@ -135,7 +135,7 @@ bool FindChrome(base::FilePath* browser_exe) {
+ #elif defined(OS_MACOSX)
+ base::FilePath("Google Chrome.app/Contents/MacOS/Google Chrome"),
+ base::FilePath("Chromium.app/Contents/MacOS/Chromium")
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ base::FilePath("google-chrome"),
+ base::FilePath("chrome"),
+ base::FilePath("chromium"),
diff --git a/devel/electron6/files/patch-chromecast_browser_cast__browser__main__parts.cc b/devel/electron6/files/patch-chromecast_browser_cast__browser__main__parts.cc
new file mode 100644
index 000000000000..b8fc92112102
--- /dev/null
+++ b/devel/electron6/files/patch-chromecast_browser_cast__browser__main__parts.cc
@@ -0,0 +1,38 @@
+--- chromecast/browser/cast_browser_main_parts.cc.orig 2019-09-10 11:13:48 UTC
++++ chromecast/browser/cast_browser_main_parts.cc
+@@ -68,7 +68,7 @@
+ #include "ui/base/ui_base_switches.h"
+ #include "ui/gl/gl_switches.h"
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include <fontconfig/fontconfig.h>
+ #include <signal.h>
+ #include <sys/prctl.h>
+@@ -280,7 +280,7 @@ const DefaultCommandLineSwitch kDefaultSwitches[] = {
+ {cc::switches::kDisableThreadedAnimation, ""},
+ #endif // defined(OS_ANDROID)
+ #endif // BUILDFLAG(IS_CAST_AUDIO_ONLY)
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #if defined(ARCH_CPU_X86_FAMILY)
+ // This is needed for now to enable the x11 Ozone platform to work with
+ // current Linux/NVidia OpenGL drivers.
+@@ -290,7 +290,7 @@ const DefaultCommandLineSwitch kDefaultSwitches[] = {
+ {switches::kEnableHardwareOverlays, "cast"},
+ #endif
+ #endif
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+ // It's better to start GPU process on demand. For example, for TV platforms
+ // cast starts in background and can't render until TV switches to cast
+ // input.
+@@ -435,7 +435,7 @@ void CastBrowserMainParts::ToolkitInitialized() {
+ views_delegate_ = std::make_unique<CastViewsDelegate>();
+ #endif // defined(USE_AURA)
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Without this call, the FontConfig library gets implicitly initialized
+ // on the first call to FontConfig. Since it's not safe to initialize it
+ // concurrently from multiple threads, we explicitly initialize it here
diff --git a/devel/electron6/files/patch-chromecast_browser_cast__content__browser__client.cc b/devel/electron6/files/patch-chromecast_browser_cast__content__browser__client.cc
new file mode 100644
index 000000000000..1ce039cf8e7c
--- /dev/null
+++ b/devel/electron6/files/patch-chromecast_browser_cast__content__browser__client.cc
@@ -0,0 +1,11 @@
+--- chromecast/browser/cast_content_browser_client.cc.orig 2019-09-10 11:13:48 UTC
++++ chromecast/browser/cast_content_browser_client.cc
+@@ -576,7 +576,7 @@ void CastContentBrowserClient::AppendExtraCommandLineS
+ switches::kAudioOutputChannels));
+ }
+ } else if (process_type == switches::kGpuProcess) {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Necessary for accelerated 2d canvas. By default on Linux, Chromium assumes
+ // GLES2 contexts can be lost to a power-save mode, which breaks GPU canvas
+ // apps.
diff --git a/devel/electron6/files/patch-chromecast_browser_metrics_BUILD.gn b/devel/electron6/files/patch-chromecast_browser_metrics_BUILD.gn
new file mode 100644
index 000000000000..962a895f5829
--- /dev/null
+++ b/devel/electron6/files/patch-chromecast_browser_metrics_BUILD.gn
@@ -0,0 +1,11 @@
+--- chromecast/browser/metrics/BUILD.gn.orig 2019-09-10 10:42:34 UTC
++++ chromecast/browser/metrics/BUILD.gn
+@@ -32,7 +32,7 @@ cast_source_set("metrics") {
+ "//third_party/metrics_proto",
+ ]
+
+- if (is_linux) {
++ if (is_linux || is_bsd) {
+ sources += [
+ "external_metrics.cc",
+ "external_metrics.h",
diff --git a/devel/electron6/files/patch-chromecast_browser_tts_tts__controller__impl.cc b/devel/electron6/files/patch-chromecast_browser_tts_tts__controller__impl.cc
new file mode 100644
index 000000000000..d80dfe7cca5b
--- /dev/null
+++ b/devel/electron6/files/patch-chromecast_browser_tts_tts__controller__impl.cc
@@ -0,0 +1,14 @@
+--- chromecast/browser/tts/tts_controller_impl.cc.orig 2019-09-10 11:13:48 UTC
++++ chromecast/browser/tts/tts_controller_impl.cc
+@@ -390,7 +390,11 @@ int TtsControllerImpl::QueueSize() {
+ }
+
+ TtsPlatformImpl* TtsControllerImpl::GetPlatformImpl() {
++#if defined(OS_BSD)
++ return NULL;
++#else
+ return platform_impl_.get();
++#endif // defined(OS_BSD)
+ }
+
+ std::string TtsControllerImpl::GetApplicationLocale() const {
diff --git a/devel/electron6/files/patch-chromecast_media_cma_backend_media__pipeline__backend__for__mixer.cc b/devel/electron6/files/patch-chromecast_media_cma_backend_media__pipeline__backend__for__mixer.cc
new file mode 100644
index 000000000000..9da2af310b78
--- /dev/null
+++ b/devel/electron6/files/patch-chromecast_media_cma_backend_media__pipeline__backend__for__mixer.cc
@@ -0,0 +1,23 @@
+--- chromecast/media/cma/backend/media_pipeline_backend_for_mixer.cc.orig 2019-09-10 11:13:49 UTC
++++ chromecast/media/cma/backend/media_pipeline_backend_for_mixer.cc
+@@ -16,9 +16,9 @@
+ #include "chromecast/media/cma/backend/av_sync.h"
+ #include "chromecast/media/cma/backend/video_decoder_for_mixer.h"
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include "chromecast/media/cma/backend/audio_buildflags.h"
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+
+ #if defined(OS_FUCHSIA)
+ #include <zircon/syscalls.h>
+@@ -239,7 +239,7 @@ MediaPipelineBackendForMixer::GetTaskRunner() const {
+ return static_cast<TaskRunnerImpl*>(params_.task_runner)->runner();
+ }
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ int64_t MediaPipelineBackendForMixer::MonotonicClockNow() const {
+ timespec now = {0, 0};
+ #if BUILDFLAG(MEDIA_CLOCK_MONOTONIC_RAW)
diff --git a/devel/electron6/files/patch-components_autofill_content_renderer_password__form__conversion__utils.cc b/devel/electron6/files/patch-components_autofill_content_renderer_password__form__conversion__utils.cc
new file mode 100644
index 000000000000..04054a1be166
--- /dev/null
+++ b/devel/electron6/files/patch-components_autofill_content_renderer_password__form__conversion__utils.cc
@@ -0,0 +1,14 @@
+--- components/autofill/content/renderer/password_form_conversion_utils.cc.orig 2019-09-10 11:13:49 UTC
++++ components/autofill/content/renderer/password_form_conversion_utils.cc
+@@ -36,7 +36,11 @@
+ #include "third_party/blink/public/web/web_form_control_element.h"
+ #include "third_party/blink/public/web/web_input_element.h"
+ #include "third_party/blink/public/web/web_local_frame.h"
++#if defined(OS_BSD)
++#include <re2/re2.h>
++#else
+ #include "third_party/re2/src/re2/re2.h"
++#endif
+ #include "url/gurl.h"
+
+ using blink::WebFormControlElement;
diff --git a/devel/electron6/files/patch-components_autofill_core_browser_autofill__experiments.cc b/devel/electron6/files/patch-components_autofill_core_browser_autofill__experiments.cc
new file mode 100644
index 000000000000..b0064cb6b072
--- /dev/null
+++ b/devel/electron6/files/patch-components_autofill_core_browser_autofill__experiments.cc
@@ -0,0 +1,11 @@
+--- components/autofill/core/browser/autofill_experiments.cc.orig 2019-09-10 11:13:49 UTC
++++ components/autofill/core/browser/autofill_experiments.cc
+@@ -215,7 +215,7 @@ bool IsAutofillNoLocalSaveOnUploadSuccessExperimentEna
+ }
+
+ bool OfferStoreUnmaskedCards(bool is_off_the_record) {
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ // The checkbox can be forced on with a flag, but by default we don't store
+ // on Linux due to lack of system keychain integration. See crbug.com/162735
+ return base::CommandLine::ForCurrentProcess()->HasSwitch(
diff --git a/devel/electron6/files/patch-components_autofill_core_browser_personal__data__manager.cc b/devel/electron6/files/patch-components_autofill_core_browser_personal__data__manager.cc
new file mode 100644
index 000000000000..2abb59c985d3
--- /dev/null
+++ b/devel/electron6/files/patch-components_autofill_core_browser_personal__data__manager.cc
@@ -0,0 +1,15 @@
+--- components/autofill/core/browser/personal_data_manager.cc.orig 2019-09-10 11:13:50 UTC
++++ components/autofill/core/browser/personal_data_manager.cc
+@@ -1940,10 +1940,10 @@ bool PersonalDataManager::IsServerCard(const CreditCar
+
+ bool PersonalDataManager::ShouldShowCardsFromAccountOption() const {
+ // The feature is only for Linux, Windows and Mac.
+-#if (!defined(OS_LINUX) && !defined(OS_WIN) && !defined(OS_MACOSX)) || \
++#if (!defined(OS_LINUX) && !defined(OS_WIN) && !defined(OS_MACOSX) && !defined(OS_BSD)) || \
+ defined(OS_CHROMEOS)
+ return false;
+-#endif // (!defined(OS_LINUX) && !defined(OS_WIN) && !defined(OS_MACOSX)) ||
++#endif // (!defined(OS_LINUX) && !defined(OS_WIN) && !defined(OS_MACOSX) && !defined(OS_BSD)) ||
+ // defined(OS_CHROMEOS)
+
+ // This option should only be shown for users that have not enabled the Sync
diff --git a/devel/electron6/files/patch-components_autofill_core_common_autofill__util.cc b/devel/electron6/files/patch-components_autofill_core_common_autofill__util.cc
new file mode 100644
index 000000000000..2ff0fc28d15d
--- /dev/null
+++ b/devel/electron6/files/patch-components_autofill_core_common_autofill__util.cc
@@ -0,0 +1,11 @@
+--- components/autofill/core/common/autofill_util.cc.orig 2019-09-10 11:13:50 UTC
++++ components/autofill/core/common/autofill_util.cc
+@@ -203,7 +203,7 @@ bool SanitizedFieldIsEmpty(const base::string16& value
+ }
+
+ bool ShouldAutoselectFirstSuggestionOnArrowDown() {
+-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+ return true;
+ #else
+ return false;
diff --git a/devel/electron6/files/patch-components_content__settings_core_browser_website__settings__registry.cc b/devel/electron6/files/patch-components_content__settings_core_browser_website__settings__registry.cc
new file mode 100644
index 000000000000..5e1f8b9fdf49
--- /dev/null
+++ b/devel/electron6/files/patch-components_content__settings_core_browser_website__settings__registry.cc
@@ -0,0 +1,11 @@
+--- components/content_settings/core/browser/website_settings_registry.cc.orig 2019-09-10 10:42:34 UTC
++++ components/content_settings/core/browser/website_settings_registry.cc
+@@ -66,7 +66,7 @@ const WebsiteSettingsInfo* WebsiteSettingsRegistry::Re
+ #if defined(OS_WIN)
+ if (!(platform & PLATFORM_WINDOWS))
+ return nullptr;
+-#elif defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#elif (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ if (!(platform & PLATFORM_LINUX))
+ return nullptr;
+ #elif defined(OS_MACOSX) && !defined(OS_IOS)
diff --git a/devel/electron6/files/patch-components_cookie__config_cookie__store__util.cc b/devel/electron6/files/patch-components_cookie__config_cookie__store__util.cc
new file mode 100644
index 000000000000..5aad97e04e3e
--- /dev/null
+++ b/devel/electron6/files/patch-components_cookie__config_cookie__store__util.cc
@@ -0,0 +1,24 @@
+--- components/cookie_config/cookie_store_util.cc.orig 2019-09-10 10:42:34 UTC
++++ components/cookie_config/cookie_store_util.cc
+@@ -11,7 +11,7 @@
+
+ namespace cookie_config {
+
+-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+ namespace {
+
+ // Use the operating system's mechanisms to encrypt cookies before writing
+@@ -63,10 +63,10 @@ base::LazyInstance<CookieOSCryptoDelegate>::Destructor
+ net::CookieCryptoDelegate* GetCookieCryptoDelegate() {
+ return g_cookie_crypto_delegate.Pointer();
+ }
+-#else // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
++#else // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+ net::CookieCryptoDelegate* GetCookieCryptoDelegate() {
+ return NULL;
+ }
+-#endif // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
++#endif // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+
+ } // namespace cookie_config
diff --git a/devel/electron6/files/patch-components_crash_content_app_BUILD.gn b/devel/electron6/files/patch-components_crash_content_app_BUILD.gn
new file mode 100644
index 000000000000..3b320f5f240c
--- /dev/null
+++ b/devel/electron6/files/patch-components_crash_content_app_BUILD.gn
@@ -0,0 +1,20 @@
+--- components/crash/content/app/BUILD.gn.orig 2019-09-10 11:13:50 UTC
++++ components/crash/content/app/BUILD.gn
+@@ -37,7 +37,7 @@ static_library("app") {
+ sources += [ "crashpad.cc" ]
+ }
+
+- if (is_linux) {
++ if (is_linux && !is_bsd) {
+ sources += [
+ "breakpad_linux.cc",
+ "breakpad_linux.h",
+@@ -78,7 +78,7 @@ static_library("app") {
+ "//sandbox",
+ ]
+
+- if (is_linux) {
++ if (is_linux && !is_bsd) {
+ deps += [ "//third_party/breakpad:client" ]
+ }
+ }
diff --git a/devel/electron6/files/patch-components_crash_content_app_crashpad.cc b/devel/electron6/files/patch-components_crash_content_app_crashpad.cc
new file mode 100644
index 000000000000..ba0b46182002
--- /dev/null
+++ b/devel/electron6/files/patch-components_crash_content_app_crashpad.cc
@@ -0,0 +1,43 @@
+--- components/crash/content/app/crashpad.cc.orig 2019-09-10 10:42:34 UTC
++++ components/crash/content/app/crashpad.cc
+@@ -104,6 +104,12 @@ void InitializeCrashpadImpl(bool initial_client,
+ const base::FilePath& exe_path,
+ const std::vector<std::string>& initial_arguments,
+ bool embedded_handler) {
++
++#if defined(OS_BSD)
++ NOTIMPLEMENTED();
++ return;
++#endif
++
+ static bool initialized = false;
+ DCHECK(!initialized);
+ initialized = true;
+@@ -124,7 +130,7 @@ void InitializeCrashpadImpl(bool initial_client,
+ DCHECK(browser_process || process_type == "Chrome Installer" ||
+ process_type == "notification-helper" ||
+ process_type == "GCPW Installer" || process_type == "GCPW DLL");
+-#elif defined(OS_LINUX) || defined(OS_ANDROID)
++#elif defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
+ DCHECK(browser_process);
+ #else
+ #error Port.
+@@ -192,7 +198,7 @@ void InitializeCrashpadImpl(bool initial_client,
+ // other "main, first process" to initialize things. There is no "relauncher"
+ // on Windows, so this is synonymous with initial_client.
+ const bool should_initialize_database_and_set_upload_policy = initial_client;
+-#elif defined(OS_LINUX) || defined(OS_ANDROID)
++#elif defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
+ const bool should_initialize_database_and_set_upload_policy = browser_process;
+ #endif
+ if (should_initialize_database_and_set_upload_policy) {
+@@ -272,7 +278,9 @@ bool GetUploadsEnabled() {
+
+ #if !defined(OS_ANDROID)
+ void DumpWithoutCrashing() {
++#if !defined(OS_BSD)
+ CRASHPAD_SIMULATE_CRASH();
++#endif
+ }
+ #endif
+
diff --git a/devel/electron6/files/patch-components_crash_content_browser_BUILD.gn b/devel/electron6/files/patch-components_crash_content_browser_BUILD.gn
new file mode 100644
index 000000000000..d951d6ad4fec
--- /dev/null
+++ b/devel/electron6/files/patch-components_crash_content_browser_BUILD.gn
@@ -0,0 +1,27 @@
+--- components/crash/content/browser/BUILD.gn.orig 2019-09-10 10:42:34 UTC
++++ components/crash/content/browser/BUILD.gn
+@@ -28,7 +28,7 @@ source_set("browser") {
+ "//content/public/common",
+ ]
+
+- if (is_linux || is_android) {
++ if ((is_linux && !is_bsd) || is_android) {
+ set_sources_assignment_filter([])
+
+ # Want this file on both Linux and Android.
+@@ -42,13 +42,13 @@ source_set("browser") {
+ deps += [ "//third_party/crashpad/crashpad/client" ]
+ }
+
+- if (!is_android) {
++ if (!is_android && !is_bsd) {
+ deps += [ "//third_party/breakpad:client" ]
+ }
+
+ # This is not in the GYP build but this target includes breakpad client
+ # headers, so add the dependency here.
+- if ((is_posix && !is_ios) || is_fuchsia) {
++ if ((is_posix && !is_ios && !is_bsd) || is_fuchsia) {
+ configs += [ "//third_party/breakpad:client_config" ]
+ public_configs = [ "//third_party/breakpad:client_config" ]
+ }
diff --git a/devel/electron6/files/patch-components_crash_core_common_BUILD.gn b/devel/electron6/files/patch-components_crash_core_common_BUILD.gn
new file mode 100644
index 000000000000..8cc3451c5a3e
--- /dev/null
+++ b/devel/electron6/files/patch-components_crash_core_common_BUILD.gn
@@ -0,0 +1,28 @@
+--- components/crash/core/common/BUILD.gn.orig 2019-09-10 11:13:50 UTC
++++ components/crash/core/common/BUILD.gn
+@@ -7,7 +7,7 @@ import("//components/gwp_asan/buildflags/buildflags.gn
+
+ declare_args() {
+ # If set to true, this will stub out and disable the entire crash key system.
+- use_crash_key_stubs = is_fuchsia
++ use_crash_key_stubs = is_fuchsia || is_bsd
+ }
+
+ group("common") {
+@@ -93,7 +93,6 @@ target(crash_key_target_type, "crash_key") {
+ ]
+ }
+
+- deps += [ "//third_party/breakpad:client" ]
+ }
+ }
+
+@@ -153,7 +152,7 @@ source_set("unit_tests") {
+ sources += [ "objc_zombie_unittest.mm" ]
+ }
+
+- if (!is_mac && !is_win && !is_fuchsia && !is_android) {
++ if (!is_mac && !is_win && !is_fuchsia && !is_android && !is_bsd) {
+ include_dirs = [ "//third_party/breakpad/breakpad/src/" ]
+ sources += [ "crash_key_breakpad_unittest.cc" ]
+ }
diff --git a/devel/electron6/files/patch-components_discardable__memory_service_discardable__shared__memory__manager.cc b/devel/electron6/files/patch-components_discardable__memory_service_discardable__shared__memory__manager.cc
new file mode 100644
index 000000000000..c65e1dcad327
--- /dev/null
+++ b/devel/electron6/files/patch-components_discardable__memory_service_discardable__shared__memory__manager.cc
@@ -0,0 +1,20 @@
+--- components/discardable_memory/service/discardable_shared_memory_manager.cc.orig 2019-09-10 11:13:51 UTC
++++ components/discardable_memory/service/discardable_shared_memory_manager.cc
+@@ -32,7 +32,7 @@
+ #include "components/discardable_memory/common/discardable_shared_memory_heap.h"
+ #include "mojo/public/cpp/bindings/strong_binding.h"
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include "base/files/file_path.h"
+ #include "base/files/file_util.h"
+ #include "base/metrics/histogram_macros.h"
+@@ -170,7 +170,7 @@ int64_t GetDefaultMemoryLimit() {
+ max_default_memory_limit /= 8;
+ #endif
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ base::FilePath shmem_dir;
+ if (base::GetShmemTempDir(false, &shmem_dir)) {
+ int64_t shmem_dir_amount_of_free_space =
diff --git a/devel/electron6/files/patch-components_download_internal_common_base__file.cc b/devel/electron6/files/patch-components_download_internal_common_base__file.cc
new file mode 100644
index 000000000000..24b0d89c8dfe
--- /dev/null
+++ b/devel/electron6/files/patch-components_download_internal_common_base__file.cc
@@ -0,0 +1,20 @@
+--- components/download/internal/common/base_file.cc.orig 2019-09-10 11:13:51 UTC
++++ components/download/internal/common/base_file.cc
+@@ -516,7 +516,7 @@ DownloadInterruptReason BaseFile::PublishDownload() {
+ }
+ #endif // defined(OS_ANDROID)
+
+-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+
+ namespace {
+
+@@ -600,7 +600,7 @@ DownloadInterruptReason BaseFile::AnnotateWithSourceIn
+ }
+ return DOWNLOAD_INTERRUPT_REASON_FILE_FAILED;
+ }
+-#else // !OS_WIN && !OS_MACOSX && !OS_LINUX
++#else // !OS_WIN && !OS_MACOSX && !OS_LINUX && !OS_BSD
+ DownloadInterruptReason BaseFile::AnnotateWithSourceInformation(
+ const std::string& client_guid,
+ const GURL& source_url,
diff --git a/devel/electron6/files/patch-components_feature__engagement_public_event__constants.cc b/devel/electron6/files/patch-components_feature__engagement_public_event__constants.cc
new file mode 100644
index 000000000000..d2d3b25ac32b
--- /dev/null
+++ b/devel/electron6/files/patch-components_feature__engagement_public_event__constants.cc
@@ -0,0 +1,14 @@
+--- components/feature_engagement/public/event_constants.cc.orig 2019-09-10 11:13:51 UTC
++++ components/feature_engagement/public/event_constants.cc
+@@ -29,9 +29,9 @@ const char kFocusModeOpened[] = "focus_mode_opened";
+ const char kFocusModeConditionsMet[] = "focus_mode_conditions_met";
+ #endif // BUILDFLAG(ENABLE_DESKTOP_IN_PRODUCT_HELP)
+
+-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_IOS)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_IOS) || defined(OS_BSD)
+ const char kNewTabOpened[] = "new_tab_opened";
+-#endif // defined(OS_WIN) || defined(OS_LINUX) || defined(OS_IOS)
++#endif // defined(OS_WIN) || defined(OS_LINUX) || defined(OS_IOS) || defined(OS_BSD)
+
+ #if defined(OS_IOS)
+ const char kChromeOpened[] = "chrome_opened";
diff --git a/devel/electron6/files/patch-components_feature__engagement_public_event__constants.h b/devel/electron6/files/patch-components_feature__engagement_public_event__constants.h
new file mode 100644
index 000000000000..6a8f8bc0de41
--- /dev/null
+++ b/devel/electron6/files/patch-components_feature__engagement_public_event__constants.h
@@ -0,0 +1,20 @@
+--- components/feature_engagement/public/event_constants.h.orig 2019-09-10 11:13:51 UTC
++++ components/feature_engagement/public/event_constants.h
+@@ -57,7 +57,7 @@ extern const char kFocusModeOpened[];
+ extern const char kFocusModeConditionsMet[];
+ #endif // BUILDFLAG(ENABLE_DESKTOP_IN_PRODUCT_HELP)
+
+-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_IOS)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_IOS) || defined(OS_BSD)
+ // This event is included in the deferred onboarding events for the New Tab
+ // described above, but it is also used on iOS, so it must be compiled
+ // separately.
+@@ -65,7 +65,7 @@ extern const char kFocusModeConditionsMet[];
+ // The user has explicitly opened a new tab via an entry point from inside of
+ // Chrome.
+ extern const char kNewTabOpened[];
+-#endif // defined(OS_WIN) || defined(OS_LINUX) || defined(OS_IOS)
++#endif // defined(OS_WIN) || defined(OS_LINUX) || defined(OS_IOS) || defined(OS_BSD)
+
+ #if defined(OS_IOS)
+ // The user has opened Chrome (cold start or from background).
diff --git a/devel/electron6/files/patch-components_feedback_anonymizer__tool.cc b/devel/electron6/files/patch-components_feedback_anonymizer__tool.cc
new file mode 100644
index 000000000000..28c9d6bf5e3f
--- /dev/null
+++ b/devel/electron6/files/patch-components_feedback_anonymizer__tool.cc
@@ -0,0 +1,14 @@
+--- components/feedback/anonymizer_tool.cc.orig 2019-09-10 11:13:51 UTC
++++ components/feedback/anonymizer_tool.cc
+@@ -13,7 +13,11 @@
+ #include "base/strings/stringprintf.h"
+ #include "content/public/browser/browser_thread.h"
+ #include "net/base/ip_address.h"
++#if defined(OS_BSD)
++#include <re2/re2.h>
++#else
+ #include "third_party/re2/src/re2/re2.h"
++#endif
+
+ using re2::RE2;
+
diff --git a/devel/electron6/files/patch-components_flags__ui_flags__state.cc b/devel/electron6/files/patch-components_flags__ui_flags__state.cc
new file mode 100644
index 000000000000..9314cfe80ddd
--- /dev/null
+++ b/devel/electron6/files/patch-components_flags__ui_flags__state.cc
@@ -0,0 +1,11 @@
+--- components/flags_ui/flags_state.cc.orig 2019-09-10 11:13:52 UTC
++++ components/flags_ui/flags_state.cc
+@@ -616,7 +616,7 @@ int FlagsState::GetCurrentPlatform() {
+ return kOsWin;
+ #elif defined(OS_CHROMEOS) // Needs to be before the OS_LINUX check.
+ return kOsCrOS;
+-#elif defined(OS_LINUX) || defined(OS_OPENBSD)
++#elif defined(OS_LINUX) || defined(OS_OPENBSD) || defined(OS_FREEBSD)
+ return kOsLinux;
+ #elif defined(OS_ANDROID)
+ return kOsAndroid;
diff --git a/devel/electron6/files/patch-components_gcm__driver_gcm__client.h b/devel/electron6/files/patch-components_gcm__driver_gcm__client.h
new file mode 100644
index 000000000000..6fb13d1031b1
--- /dev/null
+++ b/devel/electron6/files/patch-components_gcm__driver_gcm__client.h
@@ -0,0 +1,10 @@
+--- components/gcm_driver/gcm_client.h.orig 2019-09-10 11:13:52 UTC
++++ components/gcm_driver/gcm_client.h
+@@ -85,6 +85,7 @@ class GCMClient {
+ PLATFORM_CROS,
+ PLATFORM_IOS,
+ PLATFORM_ANDROID,
++ PLATFORM_BSD,
+ PLATFORM_UNSPECIFIED
+ };
+
diff --git a/devel/electron6/files/patch-components_gcm__driver_gcm__client__impl.cc b/devel/electron6/files/patch-components_gcm__driver_gcm__client__impl.cc
new file mode 100644
index 000000000000..236c2f05ab98
--- /dev/null
+++ b/devel/electron6/files/patch-components_gcm__driver_gcm__client__impl.cc
@@ -0,0 +1,12 @@
+--- components/gcm_driver/gcm_client_impl.cc.orig 2019-09-10 11:13:52 UTC
++++ components/gcm_driver/gcm_client_impl.cc
+@@ -149,6 +149,9 @@ void ToCheckinProtoVersion(
+ case GCMClient::PLATFORM_CROS:
+ platform = checkin_proto::ChromeBuildProto_Platform_PLATFORM_CROS;
+ break;
++ case GCMClient::PLATFORM_BSD:
++ platform = checkin_proto::ChromeBuildProto_Platform_PLATFORM_LINUX;
++ break;
+ case GCMClient::PLATFORM_UNSPECIFIED:
+ // For unknown platform, return as LINUX.
+ platform = checkin_proto::ChromeBuildProto_Platform_PLATFORM_LINUX;
diff --git a/devel/electron6/files/patch-components_keyed__service_core_dependency__graph__unittest.cc b/devel/electron6/files/patch-components_keyed__service_core_dependency__graph__unittest.cc
new file mode 100644
index 000000000000..6598619bec1a
--- /dev/null
+++ b/devel/electron6/files/patch-components_keyed__service_core_dependency__graph__unittest.cc
@@ -0,0 +1,14 @@
+--- components/keyed_service/core/dependency_graph_unittest.cc.orig 2019-09-10 10:42:35 UTC
++++ components/keyed_service/core/dependency_graph_unittest.cc
+@@ -9,7 +9,11 @@
+ #include "components/keyed_service/core/dependency_graph.h"
+ #include "components/keyed_service/core/dependency_node.h"
+ #include "testing/gtest/include/gtest/gtest.h"
++#if defined(OS_BSD)
++#include <re2/re2.h>
++#else
+ #include "third_party/re2/src/re2/re2.h"
++#endif
+
+ namespace {
+
diff --git a/devel/electron6/files/patch-components_metrics_BUILD.gn b/devel/electron6/files/patch-components_metrics_BUILD.gn
new file mode 100644
index 000000000000..c10759e3cec3
--- /dev/null
+++ b/devel/electron6/files/patch-components_metrics_BUILD.gn
@@ -0,0 +1,14 @@
+--- components/metrics/BUILD.gn.orig 2019-09-10 11:13:53 UTC
++++ components/metrics/BUILD.gn
+@@ -146,6 +146,11 @@ jumbo_static_library("metrics") {
+ if (is_fuchsia) {
+ sources += [ "drive_metrics_provider_fuchsia.cc" ]
+ }
++
++ if (is_bsd) {
++ sources -= [ "system_memory_stats_recorder_linux.cc" ]
++ }
++
+ }
+
+ # The component metrics provider is a separate target because it depends upon
diff --git a/devel/electron6/files/patch-components_metrics_drive__metrics__provider__linux.cc b/devel/electron6/files/patch-components_metrics_drive__metrics__provider__linux.cc
new file mode 100644
index 000000000000..c2088a908602
--- /dev/null
+++ b/devel/electron6/files/patch-components_metrics_drive__metrics__provider__linux.cc
@@ -0,0 +1,16 @@
+--- components/metrics/drive_metrics_provider_linux.cc.orig 2019-09-10 10:42:35 UTC
++++ components/metrics/drive_metrics_provider_linux.cc
+@@ -4,7 +4,13 @@
+
+ #include "components/metrics/drive_metrics_provider.h"
+
++#if defined(OS_BSD)
++#include <sys/types.h>
++#define MAJOR(dev) major(dev)
++#define MINOR(dev) minor(dev)
++#else
+ #include <linux/kdev_t.h> // For MAJOR()/MINOR().
++#endif
+ #include <sys/stat.h>
+ #include <string>
+
diff --git a/devel/electron6/files/patch-components_metrics_metrics__log.cc b/devel/electron6/files/patch-components_metrics_metrics__log.cc
new file mode 100644
index 000000000000..b17cb8179e36
--- /dev/null
+++ b/devel/electron6/files/patch-components_metrics_metrics__log.cc
@@ -0,0 +1,11 @@
+--- components/metrics/metrics_log.cc.orig 2019-09-10 11:13:53 UTC
++++ components/metrics/metrics_log.cc
+@@ -210,7 +210,7 @@ void MetricsLog::RecordCoreSystemProfile(
+ // OperatingSystemVersion refers to the ChromeOS release version.
+ #if defined(OS_CHROMEOS)
+ os->set_kernel_version(base::SysInfo::KernelVersion());
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ // Linux operating system version is copied over into kernel version to be
+ // consistent.
+ os->set_kernel_version(base::SysInfo::OperatingSystemVersion());
diff --git a/devel/electron6/files/patch-components_metrics_system__memory__stats__recorder__linux.cc b/devel/electron6/files/patch-components_metrics_system__memory__stats__recorder__linux.cc
new file mode 100644
index 000000000000..61acf3813328
--- /dev/null
+++ b/devel/electron6/files/patch-components_metrics_system__memory__stats__recorder__linux.cc
@@ -0,0 +1,18 @@
+--- components/metrics/system_memory_stats_recorder_linux.cc.orig 2019-09-10 11:13:53 UTC
++++ components/metrics/system_memory_stats_recorder_linux.cc
+@@ -30,6 +30,7 @@ namespace metrics {
+ UMA_HISTOGRAM_LINEAR(name, sample, 2500, 50)
+
+ void RecordMemoryStats(RecordMemoryStatsType type) {
++#if !defined(OS_FREEBSD)
+ base::SystemMemoryInfoKB memory;
+ if (!base::GetSystemMemoryInfo(&memory))
+ return;
+@@ -93,6 +94,7 @@ void RecordMemoryStats(RecordMemoryStatsType type) {
+ break;
+ }
+ }
++#endif // !defined(OS_FREEBSD)
+ }
+
+ } // namespace metrics
diff --git a/devel/electron6/files/patch-components_neterror_resources_neterror.js b/devel/electron6/files/patch-components_neterror_resources_neterror.js
new file mode 100644
index 000000000000..f04c714a1ae2
--- /dev/null
+++ b/devel/electron6/files/patch-components_neterror_resources_neterror.js
@@ -0,0 +1,11 @@
+--- components/neterror/resources/neterror.js.orig 2019-09-10 11:13:53 UTC
++++ components/neterror/resources/neterror.js
+@@ -160,7 +160,7 @@ function setUpCachedButton(buttonStrings) {
+ }
+
+ var primaryControlOnLeft = true;
+-// <if expr="is_macosx or is_ios or is_linux or is_android">
++// <if expr="is_macosx or is_ios or is_linux or is_android or is_bsd">
+ primaryControlOnLeft = false;
+ // </if>
+
diff --git a/devel/electron6/files/patch-components_network__session__configurator_browser_network__session__configurator.cc b/devel/electron6/files/patch-components_network__session__configurator_browser_network__session__configurator.cc
new file mode 100644
index 000000000000..ece4d2c922ea
--- /dev/null
+++ b/devel/electron6/files/patch-components_network__session__configurator_browser_network__session__configurator.cc
@@ -0,0 +1,11 @@
+--- components/network_session_configurator/browser/network_session_configurator.cc.orig 2019-09-10 11:13:53 UTC
++++ components/network_session_configurator/browser/network_session_configurator.cc
+@@ -716,7 +716,7 @@ net::URLRequestContextBuilder::HttpCacheParams::Type C
+ }
+ #endif // #if !defined(OS_ANDROID)
+
+-#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ return net::URLRequestContextBuilder::HttpCacheParams::DISK_SIMPLE;
+ #else
+ return net::URLRequestContextBuilder::HttpCacheParams::DISK_BLOCKFILE;
diff --git a/devel/electron6/files/patch-components_new__or__sad__tab__strings.grdp b/devel/electron6/files/patch-components_new__or__sad__tab__strings.grdp
new file mode 100644
index 000000000000..7a50f367a8fb
--- /dev/null
+++ b/devel/electron6/files/patch-components_new__or__sad__tab__strings.grdp
@@ -0,0 +1,38 @@
+--- components/new_or_sad_tab_strings.grdp.orig 2019-09-10 11:13:53 UTC
++++ components/new_or_sad_tab_strings.grdp
+@@ -51,7 +51,7 @@
+ Open page in a new Incognito window (⇧⌘N)
+ </message>
+ </if>
+- <if expr="is_win or is_linux or chromeos">
++ <if expr="is_win or is_posix or chromeos">
+ <message name="IDS_SAD_TAB_RELOAD_INCOGNITO" desc="One of the bullet points displayed on the web page if a reload failed to fix the issue, advising the user to open the web page in Chrome's Incognito mode.">
+ Open page in a new Incognito window (Ctrl-Shift-N)
+ </message>
+@@ -69,7 +69,7 @@
+ Close other tabs or apps
+ </message>
+ </if>
+- <if expr="is_linux and not chromeos">
++ <if expr="is_posix and not chromeos">
+ <message name="IDS_SAD_TAB_RELOAD_CLOSE_TABS" desc="One of the bullet points displayed on the web page if a reload failed to fix the issue, advising the user to close other Chrome tabs or programs running on their computer.">
+ Close other tabs or programs
+ </message>
+@@ -79,7 +79,7 @@
+ Close other apps
+ </message>
+ </if>
+- <if expr="is_linux and not chromeos">
++ <if expr="is_posix and not chromeos">
+ <message name="IDS_SAD_TAB_RELOAD_CLOSE_NOTABS" desc="One of the bullet points displayed on the web page if a reload failed to fix the issue, advising the user to close other programs running on their computer (Linux).">
+ Close other programs
+ </message>
+@@ -94,7 +94,7 @@
+ Restart Chromium
+ </message>
+ </if>
+- <if expr="is_win or is_linux or is_macosx or chromeos">
++ <if expr="is_win or is_posix or is_macosx or chromeos">
+ <message name="IDS_SAD_TAB_RELOAD_RESTART_DEVICE" desc="One of the bullet points displayed on the web page if a reload failed to fix the issue, advising the user to restart their computer.">
+ Restart your computer
+ </message>
diff --git a/devel/electron6/files/patch-components_os__crypt_os__crypt.h b/devel/electron6/files/patch-components_os__crypt_os__crypt.h
new file mode 100644
index 000000000000..5943afa1aa2e
--- /dev/null
+++ b/devel/electron6/files/patch-components_os__crypt_os__crypt.h
@@ -0,0 +1,48 @@
+--- components/os_crypt/os_crypt.h.orig 2019-09-10 10:42:35 UTC
++++ components/os_crypt/os_crypt.h
+@@ -15,9 +15,9 @@
+ #include "base/strings/string16.h"
+ #include "build/build_config.h"
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ class KeyStorageLinux;
+-#endif // defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#endif // (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+
+ #if defined(OS_MACOSX) && !defined(OS_IOS)
+ class PrefRegistrySimple;
+@@ -34,13 +34,13 @@ struct Config;
+ // true for Linux, if a password management tool is available.
+ class OSCrypt {
+ public:
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ // Set the configuration of OSCrypt.
+ static COMPONENT_EXPORT(OS_CRYPT) void SetConfig(
+ std::unique_ptr<os_crypt::Config> config);
+-#endif // defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#endif // (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+
+-#if defined(OS_MACOSX) || (defined(OS_LINUX) && !defined(OS_CHROMEOS))
++#if defined(OS_MACOSX) || (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ // On Linux returns true iff the real secret key (not hardcoded one) is
+ // available. On MacOS returns true if Keychain is available (for mock
+ // Keychain it returns true if not using locked Keychain, false if using
+@@ -112,7 +112,7 @@ class OSCrypt {
+ DISALLOW_IMPLICIT_CONSTRUCTORS(OSCrypt);
+ };
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ // For unit testing purposes, inject methods to be used.
+ // |get_key_storage_mock| provides the desired |KeyStorage| implementation.
+ // If the provider returns |nullptr|, a hardcoded password will be used.
+@@ -127,6 +127,6 @@ void UseMockKeyStorageForTesting(
+ // Clears any caching and most lazy initialisations performed by the production
+ // code. Should be used after any test which required a password.
+ COMPONENT_EXPORT(OS_CRYPT) void ClearCacheForTesting();
+-#endif // defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#endif // (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+
+ #endif // COMPONENTS_OS_CRYPT_OS_CRYPT_H_
diff --git a/devel/electron6/files/patch-components_os__crypt_os__crypt__unittest.cc b/devel/electron6/files/patch-components_os__crypt_os__crypt__unittest.cc
new file mode 100644
index 000000000000..32727982e130
--- /dev/null
+++ b/devel/electron6/files/patch-components_os__crypt_os__crypt__unittest.cc
@@ -0,0 +1,11 @@
+--- components/os_crypt/os_crypt_unittest.cc.orig 2019-09-10 10:42:35 UTC
++++ components/os_crypt/os_crypt_unittest.cc
+@@ -18,7 +18,7 @@
+ #include "components/os_crypt/os_crypt_mocker.h"
+ #include "testing/gtest/include/gtest/gtest.h"
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ #include "components/os_crypt/os_crypt_mocker_linux.h"
+ #endif
+
diff --git a/devel/electron6/files/patch-components_plugins_renderer_plugin__placeholder.cc b/devel/electron6/files/patch-components_plugins_renderer_plugin__placeholder.cc
new file mode 100644
index 000000000000..c1993bfe7acf
--- /dev/null
+++ b/devel/electron6/files/patch-components_plugins_renderer_plugin__placeholder.cc
@@ -0,0 +1,14 @@
+--- components/plugins/renderer/plugin_placeholder.cc.orig 2019-09-10 10:42:35 UTC
++++ components/plugins/renderer/plugin_placeholder.cc
+@@ -17,7 +17,11 @@
+ #include "third_party/blink/public/web/web_plugin_container.h"
+ #include "third_party/blink/public/web/web_script_source.h"
+ #include "third_party/blink/public/web/web_serialized_script_value.h"
++#if defined(OS_BSD)
++#include <re2/re2.h>
++#else
+ #include "third_party/re2/src/re2/re2.h"
++#endif // defined(OS_BSD)
+
+ namespace plugins {
+
diff --git a/devel/electron6/files/patch-components_policy_core_common_cloud_cloud__policy__util.cc b/devel/electron6/files/patch-components_policy_core_common_cloud_cloud__policy__util.cc
new file mode 100644
index 000000000000..192efaa7aa3f
--- /dev/null
+++ b/devel/electron6/files/patch-components_policy_core_common_cloud_cloud__policy__util.cc
@@ -0,0 +1,73 @@
+--- components/policy/core/common/cloud/cloud_policy_util.cc.orig 2019-09-10 10:42:35 UTC
++++ components/policy/core/common/cloud/cloud_policy_util.cc
+@@ -16,7 +16,7 @@
+ #include <wincred.h>
+ #endif
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) || defined(OS_MACOSX)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_MACOSX) || defined(OS_BSD)
+ #include <pwd.h>
+ #include <sys/types.h>
+ #include <unistd.h>
+@@ -28,7 +28,7 @@
+ #include <sys/sysctl.h>
+ #endif
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ #include <limits.h> // For HOST_NAME_MAX
+ #endif
+
+@@ -52,7 +52,7 @@
+ #include "base/system/sys_info.h"
+ #endif
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ #include "base/system/sys_info.h"
+ #endif
+
+@@ -61,11 +61,24 @@ namespace policy {
+ namespace em = enterprise_management;
+
+ std::string GetMachineName() {
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS))
+ char hostname[HOST_NAME_MAX];
+ if (gethostname(hostname, HOST_NAME_MAX) == 0) // Success.
+ return hostname;
+ return std::string();
++#elif defined(OS_BSD)
++ long host_name_max = sysconf(_SC_HOST_NAME_MAX);
++ if (host_name_max != -1) {
++ char *hostname = new char[host_name_max + 1]();
++ std::string hostname_r;
++
++ if (gethostname(hostname, host_name_max) == 0)
++ hostname_r = hostname;
++
++ delete[] hostname;
++ return hostname_r;
++ }
++ return std::string();
+ #elif defined(OS_MACOSX)
+ // Do not use NSHost currentHost, as it's very slow. http://crbug.com/138570
+ SCDynamicStoreContext context = {0, NULL, NULL, NULL};
+@@ -111,7 +124,7 @@ std::string GetMachineName() {
+ }
+
+ std::string GetOSVersion() {
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) || defined(OS_MACOSX)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_MACOSX) || defined(OS_BSD)
+ return base::SysInfo::OperatingSystemVersion();
+ #elif defined(OS_WIN)
+ base::win::OSInfo::VersionNumber version_number =
+@@ -134,7 +147,7 @@ std::string GetOSArchitecture() {
+ }
+
+ std::string GetOSUsername() {
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) || defined(OS_MACOSX)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_MACOSX) || defined(OS_BSD)
+ struct passwd* creds = getpwuid(getuid());
+ if (!creds || !creds->pw_name)
+ return std::string();
diff --git a/devel/electron6/files/patch-components_policy_core_common_schema.cc b/devel/electron6/files/patch-components_policy_core_common_schema.cc
new file mode 100644
index 000000000000..8fd3460a00da
--- /dev/null
+++ b/devel/electron6/files/patch-components_policy_core_common_schema.cc
@@ -0,0 +1,14 @@
+--- components/policy/core/common/schema.cc.orig 2019-09-10 11:13:54 UTC
++++ components/policy/core/common/schema.cc
+@@ -23,7 +23,11 @@
+ #include "base/strings/stringprintf.h"
+ #include "components/policy/core/common/json_schema_constants.h"
+ #include "components/policy/core/common/schema_internal.h"
++#if defined(OS_FREEBSD)
++#include <re2/re2.h>
++#else
+ #include "third_party/re2/src/re2/re2.h"
++#endif
+
+ namespace schema = json_schema_constants;
+
diff --git a/devel/electron6/files/patch-components_policy_resources_policy__templates.json b/devel/electron6/files/patch-components_policy_resources_policy__templates.json
new file mode 100644
index 000000000000..bf87e5b6586c
--- /dev/null
+++ b/devel/electron6/files/patch-components_policy_resources_policy__templates.json
@@ -0,0 +1,83 @@
+--- components/policy/resources/policy_templates.json.orig 2019-09-10 11:13:54 UTC
++++ components/policy/resources/policy_templates.json
+@@ -1019,7 +1019,7 @@
+ 'name': 'HomepageLocation',
+ 'type': 'string',
+ 'schema': { 'type': 'string' },
+- 'supported_on': ['chrome.*:8-', 'chrome_os:11-'],
++ 'supported_on': ['chrome.*:8-', 'chrome_os:11-', 'chrome.freebsd:9-'],
+ 'features': {
+ 'can_be_recommended': True,
+ 'dynamic_refresh': True,
+@@ -1048,7 +1048,7 @@
+ 'name': 'HomepageIsNewTabPage',
+ 'type': 'main',
+ 'schema': { 'type': 'boolean' },
+- 'supported_on': ['chrome.*:8-', 'chrome_os:11-'],
++ 'supported_on': ['chrome.*:8-', 'chrome_os:11-', 'chrome.freebsd:9-'],
+ 'features': {
+ 'can_be_recommended': True,
+ 'dynamic_refresh': True,
+@@ -1074,7 +1074,7 @@
+ 'name': 'NewTabPageLocation',
+ 'type': 'string',
+ 'schema': { 'type': 'string' },
+- 'supported_on': ['chrome.*:58-', 'chrome_os:58-'],
++ 'supported_on': ['chrome.*:58-', 'chrome_os:58-', 'chrome.freebsd:9-'],
+ 'features': {
+ 'can_be_recommended': True,
+ 'dynamic_refresh': True,
+@@ -1767,7 +1767,7 @@
+ 'name': 'RemoteAccessHostMatchUsername',
+ 'type': 'main',
+ 'schema': { 'type': 'boolean' },
+- 'supported_on': ['chrome.linux:25-', 'chrome.mac:25-', 'chrome_os:42-'],
++ 'supported_on': ['chrome.linux:25-', 'chrome.mac:25-', 'chrome_os:42-', 'chrome.freebsd:25-'],
+ 'features': {
+ 'dynamic_refresh': True,
+ 'per_profile': False,
+@@ -3399,7 +3399,7 @@
+ 'name': 'GSSAPILibraryName',
+ 'type': 'string',
+ 'schema': { 'type': 'string' },
+- 'supported_on': ['chrome.linux:9-'],
++ 'supported_on': ['chrome.linux:9-', 'chrome.freebsd:9-'],
+ 'features': {
+ 'dynamic_refresh': False,
+ 'per_profile': False,
+@@ -3450,7 +3450,7 @@
+ 'name': 'NtlmV2Enabled',
+ 'type': 'main',
+ 'schema': { 'type': 'boolean' },
+- 'supported_on': ['chrome.linux:63-','chrome.mac:63-','chrome_os:63-','android:63-','webview_android:63-'],
++ 'supported_on': ['chrome.linux:63-','chrome.mac:63-','chrome_os:63-','android:63-','webview_android:63-', 'chrome.freebsd:63-'],
+ 'features': {
+ 'dynamic_refresh': True,
+ 'per_profile': False,
+@@ -6637,7 +6637,7 @@
+ 'name': 'RequireOnlineRevocationChecksForLocalAnchors',
+ 'type': 'main',
+ 'schema': { 'type': 'boolean' },
+- 'supported_on': ['chrome_os:30-', 'chrome.linux:30-', 'chrome.win:30-'],
++ 'supported_on': ['chrome_os:30-', 'chrome.linux:30-', 'chrome.win:30-', 'chrome.freebsd:30-'],
+ 'features': {
+ 'dynamic_refresh': True,
+ 'per_profile': False,
+@@ -7761,7 +7761,7 @@
+ 'name': 'BackgroundModeEnabled',
+ 'type': 'main',
+ 'schema': { 'type': 'boolean' },
+- 'supported_on': ['chrome.win:19-', 'chrome.linux:19-'],
++ 'supported_on': ['chrome.win:19-', 'chrome.linux:19-', 'chrome.freebsd:19-'],
+ 'features': {
+ 'can_be_recommended': True,
+ 'dynamic_refresh': True,
+@@ -8277,7 +8277,7 @@
+ 'name': 'FullscreenAllowed',
+ 'type': 'main',
+ 'schema': { 'type': 'boolean' },
+- 'supported_on': ['chrome.win:31-', 'chrome.linux:31-', 'chrome_os:31-'],
++ 'supported_on': ['chrome.win:31-', 'chrome.linux:31-', 'chrome_os:31-', 'chrome.freebsd:31-'],
+ 'features': {
+ 'dynamic_refresh': True,
+ 'per_profile': True,
diff --git a/devel/electron6/files/patch-components_policy_tools_generate__policy__source.py b/devel/electron6/files/patch-components_policy_tools_generate__policy__source.py
new file mode 100644
index 000000000000..a403f5414fac
--- /dev/null
+++ b/devel/electron6/files/patch-components_policy_tools_generate__policy__source.py
@@ -0,0 +1,20 @@
+--- components/policy/tools/generate_policy_source.py.orig 2019-09-10 11:13:57 UTC
++++ components/policy/tools/generate_policy_source.py
+@@ -86,7 +86,7 @@ class PolicyDetails:
+ if platform not in [
+ 'chrome_frame', 'chrome_os', 'android', 'webview_android',
+ 'chrome.win', 'chrome.linux', 'chrome.mac', 'chrome.fuchsia',
+- 'chrome.*'
++ 'chrome.freebsd', 'chrome.*'
+ ]:
+ raise RuntimeError('Platform "%s" is not supported' % platform)
+
+@@ -105,7 +105,7 @@ class PolicyDetails:
+ if platform.startswith('chrome.'):
+ platform_sub = platform[7:]
+ if platform_sub == '*':
+- self.platforms.extend(['win', 'mac', 'linux', 'fuchsia'])
++ self.platforms.extend(['win', 'mac', 'linux', 'fuchsia', 'freebsd'])
+ else:
+ self.platforms.append(platform_sub)
+ else:
diff --git a/devel/electron6/files/patch-components_previews_core_previews__features.cc b/devel/electron6/files/patch-components_previews_core_previews__features.cc
new file mode 100644
index 000000000000..04d099c9483b
--- /dev/null
+++ b/devel/electron6/files/patch-components_previews_core_previews__features.cc
@@ -0,0 +1,18 @@
+--- components/previews/core/previews_features.cc.orig 2019-09-10 11:13:57 UTC
++++ components/previews/core/previews_features.cc
+@@ -14,12 +14,12 @@ namespace features {
+ // are enabled are controlled by other features.
+ const base::Feature kPreviews {
+ "Previews",
+-#if defined(OS_ANDROID) || defined(OS_LINUX)
++#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_BSD)
+ // Previews allowed for Android (but also allow on Linux for dev/debug).
+ base::FEATURE_ENABLED_BY_DEFAULT
+-#else // !defined(OS_ANDROID) || defined(OS_LINUX)
++#else // !defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_BSD)
+ base::FEATURE_DISABLED_BY_DEFAULT
+-#endif // defined(OS_ANDROID) || defined(OS_LINUX)
++#endif // defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_BSD)
+ };
+
+ // Enables the Offline previews on android slow connections.
diff --git a/devel/electron6/files/patch-components_services_filesystem_file__system__app.cc b/devel/electron6/files/patch-components_services_filesystem_file__system__app.cc
new file mode 100644
index 000000000000..917b4203e281
--- /dev/null
+++ b/devel/electron6/files/patch-components_services_filesystem_file__system__app.cc
@@ -0,0 +1,20 @@
+--- components/services/filesystem/file_system_app.cc.orig 2019-09-10 11:13:58 UTC
++++ components/services/filesystem/file_system_app.cc
+@@ -19,7 +19,7 @@
+ #elif defined(OS_ANDROID)
+ #include "base/base_paths_android.h"
+ #include "base/path_service.h"
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ #include "base/environment.h"
+ #include "base/nix/xdg_util.h"
+ #elif defined(OS_MACOSX)
+@@ -68,7 +68,7 @@ base::FilePath FileSystemApp::GetUserDataDir() {
+ CHECK(base::PathService::Get(base::DIR_APP_DATA, &path));
+ #elif defined(OS_ANDROID)
+ CHECK(base::PathService::Get(base::DIR_ANDROID_APP_DATA, &path));
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ std::unique_ptr<base::Environment> env(base::Environment::Create());
+ path = base::nix::GetXDGDirectory(
+ env.get(), base::nix::kXdgConfigHomeEnvVar, base::nix::kDotConfigDir);
diff --git a/devel/electron6/files/patch-components_startup__metric__utils_browser_startup__metric__utils.cc b/devel/electron6/files/patch-components_startup__metric__utils_browser_startup__metric__utils.cc
new file mode 100644
index 000000000000..ffa1cfaac029
--- /dev/null
+++ b/devel/electron6/files/patch-components_startup__metric__utils_browser_startup__metric__utils.cc
@@ -0,0 +1,20 @@
+--- components/startup_metric_utils/browser/startup_metric_utils.cc.orig 2019-09-10 11:13:58 UTC
++++ components/startup_metric_utils/browser/startup_metric_utils.cc
+@@ -456,7 +456,7 @@ void AddStartupEventsForTelemetry()
+ // RecordBrowserMainMessageLoopStart, the time since last startup is also logged
+ // to a histogram suffixed with the startup temperature.
+ void RecordTimeSinceLastStartup(PrefService* pref_service) {
+-#if defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_LINUX)
++#if defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD)
+ DCHECK(pref_service);
+
+ // Get the timestamp of the current startup.
+@@ -485,7 +485,7 @@ void RecordTimeSinceLastStartup(PrefService* pref_serv
+ // Write the timestamp of the current startup in |pref_service|.
+ pref_service->SetInt64(prefs::kLastStartupTimestamp,
+ process_start_time.ToInternalValue());
+-#endif // defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_LINUX)
++#endif // defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD)
+ }
+
+ // Logs the Startup.SameVersionStartupCount histogram. Relies on |pref_service|
diff --git a/devel/electron6/files/patch-components_storage__monitor_BUILD.gn b/devel/electron6/files/patch-components_storage__monitor_BUILD.gn
new file mode 100644
index 000000000000..6116b1e39b93
--- /dev/null
+++ b/devel/electron6/files/patch-components_storage__monitor_BUILD.gn
@@ -0,0 +1,20 @@
+--- components/storage_monitor/BUILD.gn.orig 2019-09-10 11:13:58 UTC
++++ components/storage_monitor/BUILD.gn
+@@ -65,6 +65,17 @@ static_library("storage_monitor") {
+ ]
+ }
+
++ if (is_bsd) {
++ sources -= [
++ "mtab_watcher_linux.cc",
++ "mtab_watcher_linux.h",
++ ]
++ sources += [
++ "storage_monitor_freebsd.cc",
++ "storage_monitor_freebsd.h",
++ ]
++ }
++
+ if (use_udev) {
+ deps += [ "//device/udev_linux" ]
+ } else if (is_linux) {
diff --git a/devel/electron6/files/patch-components_storage__monitor_removable__device__constants.cc b/devel/electron6/files/patch-components_storage__monitor_removable__device__constants.cc
new file mode 100644
index 000000000000..936c2438ee2a
--- /dev/null
+++ b/devel/electron6/files/patch-components_storage__monitor_removable__device__constants.cc
@@ -0,0 +1,11 @@
+--- components/storage_monitor/removable_device_constants.cc.orig 2019-09-10 10:42:35 UTC
++++ components/storage_monitor/removable_device_constants.cc
+@@ -10,7 +10,7 @@ namespace storage_monitor {
+ const char kFSUniqueIdPrefix[] = "UUID:";
+ const char kVendorModelSerialPrefix[] = "VendorModelSerial:";
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ const char kVendorModelVolumeStoragePrefix[] = "VendorModelVolumeStorage:";
+ #endif
+
diff --git a/devel/electron6/files/patch-components_storage__monitor_removable__device__constants.h b/devel/electron6/files/patch-components_storage__monitor_removable__device__constants.h
new file mode 100644
index 000000000000..443b37cce6c4
--- /dev/null
+++ b/devel/electron6/files/patch-components_storage__monitor_removable__device__constants.h
@@ -0,0 +1,11 @@
+--- components/storage_monitor/removable_device_constants.h.orig 2019-09-10 10:42:35 UTC
++++ components/storage_monitor/removable_device_constants.h
+@@ -15,7 +15,7 @@ namespace storage_monitor {
+ extern const char kFSUniqueIdPrefix[];
+ extern const char kVendorModelSerialPrefix[];
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ extern const char kVendorModelVolumeStoragePrefix[];
+ #endif
+
diff --git a/devel/electron6/files/patch-components_storage__monitor_storage__monitor__freebsd.cc b/devel/electron6/files/patch-components_storage__monitor_storage__monitor__freebsd.cc
new file mode 100644
index 000000000000..eb27a2b1ea57
--- /dev/null
+++ b/devel/electron6/files/patch-components_storage__monitor_storage__monitor__freebsd.cc
@@ -0,0 +1,57 @@
+--- components/storage_monitor/storage_monitor_freebsd.cc.orig 2019-09-16 09:25:13 UTC
++++ components/storage_monitor/storage_monitor_freebsd.cc
+@@ -0,0 +1,54 @@
++// Copyright 2014 The Chromium Authors. All rights reserved.
++// Use of this source code is governed by a BSD-style license that can be
++// found in the LICENSE file.
++
++// StorageMonitorFreeBSD implementation.
++
++#include "components/storage_monitor/storage_monitor_freebsd.h"
++
++#include <stdio.h>
++
++#include <list>
++
++#include "base/bind.h"
++#include "base/metrics/histogram.h"
++#include "base/process/kill.h"
++#include "base/process/launch.h"
++#include "base/stl_util.h"
++#include "base/strings/string_number_conversions.h"
++#include "base/strings/string_util.h"
++#include "base/strings/utf_string_conversions.h"
++#include "components/storage_monitor/media_storage_util.h"
++#include "components/storage_monitor/removable_device_constants.h"
++#include "components/storage_monitor/storage_info.h"
++
++using content::BrowserThread;
++
++namespace storage_monitor {
++
++namespace {
++
++} // namespace
++
++StorageMonitorFreeBSD::StorageMonitorFreeBSD() {
++ DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
++}
++
++StorageMonitorFreeBSD::~StorageMonitorFreeBSD() {
++ DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
++}
++
++void StorageMonitorFreeBSD::Init() {
++}
++
++bool StorageMonitorFreeBSD::GetStorageInfoForPath(
++ const base::FilePath& path,
++ StorageInfo* device_info) const {
++ return false; // TODO
++}
++
++StorageMonitor* StorageMonitor::CreateInternal() {
++ return new StorageMonitorFreeBSD();
++}
++
++} // namespace storage_monitor
diff --git a/devel/electron6/files/patch-components_storage__monitor_storage__monitor__freebsd.h b/devel/electron6/files/patch-components_storage__monitor_storage__monitor__freebsd.h
new file mode 100644
index 000000000000..48695cbf80c8
--- /dev/null
+++ b/devel/electron6/files/patch-components_storage__monitor_storage__monitor__freebsd.h
@@ -0,0 +1,48 @@
+--- components/storage_monitor/storage_monitor_freebsd.h.orig 2019-09-16 09:25:13 UTC
++++ components/storage_monitor/storage_monitor_freebsd.h
+@@ -0,0 +1,45 @@
++// Copyright 2014 The Chromium Authors. All rights reserved.
++// Use of this source code is governed by a BSD-style license that can be
++// found in the LICENSE file.
++
++// StorageMonitorFreeBSD processes mount point change events, notifies listeners
++// about the addition and deletion of media devices, and answers queries about
++// mounted devices.
++// StorageMonitorFreeBSD lives on the UI thread, and uses ???
++// the FILE thread to get mount point change events.
++
++#ifndef COMPONENTS_STORAGE_MONITOR_STORAGE_MONITOR_FREEBSD_H_
++#define COMPONENTS_STORAGE_MONITOR_STORAGE_MONITOR_FREEBSD_H_
++
++#include <map>
++#include <string>
++
++#include "base/compiler_specific.h"
++#include "base/files/file_path.h"
++#include "base/files/file_path_watcher.h"
++#include "base/memory/weak_ptr.h"
++#include "components/storage_monitor/storage_monitor.h"
++#include "content/public/browser/browser_thread.h"
++
++namespace storage_monitor {
++
++class StorageMonitorFreeBSD : public StorageMonitor {
++ public:
++ // Should only be called by browser start up code.
++ // Use StorageMonitor::GetInstance() instead.
++ explicit StorageMonitorFreeBSD();
++ virtual ~StorageMonitorFreeBSD();
++
++ // Must be called for StorageMonitorFreeBSD to work.
++ virtual void Init() override;
++ private:
++ // StorageMonitor implementation.
++ virtual bool GetStorageInfoForPath(const base::FilePath& path,
++ StorageInfo* device_info) const override;
++
++ DISALLOW_COPY_AND_ASSIGN(StorageMonitorFreeBSD);
++};
++
++} // namespace storage_monitor
++
++#endif // COMPONENTS_STORAGE_MONITOR_STORAGE_MONITOR_FREEBSD_H_
diff --git a/devel/electron6/files/patch-components_sync__device__info_local__device__info__util__linux.cc b/devel/electron6/files/patch-components_sync__device__info_local__device__info__util__linux.cc
new file mode 100644
index 000000000000..b6464c2b46c3
--- /dev/null
+++ b/devel/electron6/files/patch-components_sync__device__info_local__device__info__util__linux.cc
@@ -0,0 +1,26 @@
+--- components/sync_device_info/local_device_info_util_linux.cc.orig 2019-09-10 10:42:36 UTC
++++ components/sync_device_info/local_device_info_util_linux.cc
+@@ -30,6 +30,23 @@ std::string GetSessionNameInternal() {
+ break;
+ }
+ return "Chromebook";
++#elif defined(OS_BSD)
++ long len = sysconf(_SC_HOST_NAME_MAX);
++
++ if (len == -1)
++ return "FreeBSD";
++
++ char *hostname = new (std::nothrow) char[len]();
++
++ if ((hostname == nullptr) || (gethostname(hostname, len) == -1)) {
++ delete[](hostname);
++ return "FreeBSD";
++ }
++
++ std::string res{hostname};
++
++ delete[](hostname);
++ return res;
+ #else
+ char hostname[HOST_NAME_MAX];
+ if (gethostname(hostname, HOST_NAME_MAX) == 0) // Success.
diff --git a/devel/electron6/files/patch-components_update__client_update__query__params.cc b/devel/electron6/files/patch-components_update__client_update__query__params.cc
new file mode 100644
index 000000000000..65c957a2c660
--- /dev/null
+++ b/devel/electron6/files/patch-components_update__client_update__query__params.cc
@@ -0,0 +1,11 @@
+--- components/update_client/update_query_params.cc.orig 2019-09-10 11:14:00 UTC
++++ components/update_client/update_query_params.cc
+@@ -38,6 +38,8 @@ const char kOs[] =
+ "fuchsia";
+ #elif defined(OS_OPENBSD)
+ "openbsd";
++#elif defined(OS_FREEBSD)
++ "freebsd";
+ #else
+ #error "unknown os"
+ #endif
diff --git a/devel/electron6/files/patch-components_url__matcher_regex__set__matcher.cc b/devel/electron6/files/patch-components_url__matcher_regex__set__matcher.cc
new file mode 100644
index 000000000000..c579a6b2dce6
--- /dev/null
+++ b/devel/electron6/files/patch-components_url__matcher_regex__set__matcher.cc
@@ -0,0 +1,16 @@
+--- components/url_matcher/regex_set_matcher.cc.orig 2019-09-10 10:42:36 UTC
++++ components/url_matcher/regex_set_matcher.cc
+@@ -11,8 +11,13 @@
+ #include "base/logging.h"
+ #include "base/strings/string_util.h"
+ #include "components/url_matcher/substring_set_matcher.h"
++#if defined(OS_BSD)
++#include <re2/filtered_re2.h>
++#include <re2/re2.h>
++#else
+ #include "third_party/re2/src/re2/filtered_re2.h"
+ #include "third_party/re2/src/re2/re2.h"
++#endif
+
+ namespace url_matcher {
+
diff --git a/devel/electron6/files/patch-components_url__matcher_url__matcher__factory.cc b/devel/electron6/files/patch-components_url__matcher_url__matcher__factory.cc
new file mode 100644
index 000000000000..6750e9c91e60
--- /dev/null
+++ b/devel/electron6/files/patch-components_url__matcher_url__matcher__factory.cc
@@ -0,0 +1,14 @@
+--- components/url_matcher/url_matcher_factory.cc.orig 2019-09-10 10:42:36 UTC
++++ components/url_matcher/url_matcher_factory.cc
+@@ -16,7 +16,11 @@
+ #include "base/values.h"
+ #include "components/url_matcher/url_matcher_constants.h"
+ #include "components/url_matcher/url_matcher_helpers.h"
++#if defined(OS_BSD)
++#include <re2/re2.h>
++#else
+ #include "third_party/re2/src/re2/re2.h"
++#endif
+
+ namespace url_matcher {
+
diff --git a/devel/electron6/files/patch-components_webcrypto_algorithms_test__helpers.cc b/devel/electron6/files/patch-components_webcrypto_algorithms_test__helpers.cc
new file mode 100644
index 000000000000..611dba399766
--- /dev/null
+++ b/devel/electron6/files/patch-components_webcrypto_algorithms_test__helpers.cc
@@ -0,0 +1,14 @@
+--- components/webcrypto/algorithms/test_helpers.cc.orig 2019-09-10 10:42:36 UTC
++++ components/webcrypto/algorithms/test_helpers.cc
+@@ -25,7 +25,11 @@
+ #include "components/webcrypto/status.h"
+ #include "third_party/blink/public/platform/web_crypto_algorithm_params.h"
+ #include "third_party/blink/public/platform/web_crypto_key_algorithm.h"
++#if defined(OS_BSD)
++#include <re2/re2.h>
++#else
+ #include "third_party/re2/src/re2/re2.h"
++#endif
+
+ namespace webcrypto {
+
diff --git a/devel/electron6/files/patch-content_app_content__main__runner__impl.cc b/devel/electron6/files/patch-content_app_content__main__runner__impl.cc
new file mode 100644
index 000000000000..c698fb2ca1c9
--- /dev/null
+++ b/devel/electron6/files/patch-content_app_content__main__runner__impl.cc
@@ -0,0 +1,73 @@
+--- content/app/content_main_runner_impl.cc.orig 2019-09-16 09:24:25 UTC
++++ content/app/content_main_runner_impl.cc
+@@ -99,17 +99,17 @@
+ #include "base/posix/global_descriptors.h"
+ #include "content/public/common/content_descriptors.h"
+
+-#if !defined(OS_MACOSX)
++#if !defined(OS_MACOSX) && !defined(OS_BSD)
+ #include "services/service_manager/zygote/common/zygote_fork_delegate_linux.h"
+ #endif
+-#if !defined(OS_MACOSX) && !defined(OS_ANDROID)
++#if !defined(OS_MACOSX) && !defined(OS_ANDROID) && !defined(OS_BSD)
+ #include "sandbox/linux/services/libc_interceptor.h"
+ #include "services/service_manager/zygote/zygote_main.h"
+ #endif
+
+ #endif // OS_POSIX || OS_FUCHSIA
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include "base/native_library.h"
+ #include "base/rand_util.h"
+ #include "services/service_manager/zygote/common/common_sandbox_support_linux.h"
+@@ -130,7 +130,7 @@
+ #include "content/public/common/content_client.h"
+ #endif
+
+-#endif // OS_LINUX
++#endif // OS_LINUX || defined(OS_BSD)
+
+ #if !defined(CHROME_MULTIPLE_DLL_BROWSER)
+ #include "content/child/field_trial.h"
+@@ -322,7 +322,7 @@ void InitializeZygoteSandboxForBrowserProcess(
+ }
+ #endif // BUILDFLAG(USE_ZYGOTE_HANDLE)
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+
+ #if BUILDFLAG(ENABLE_PLUGINS)
+ // Loads the (native) libraries but does not initialize them (i.e., does not
+@@ -419,7 +419,7 @@ void PreSandboxInit() {
+ }
+ #endif // BUILDFLAG(USE_ZYGOTE_HANDLE)
+
+-#endif // OS_LINUX
++#endif // OS_LINUX || OS_BSD
+
+ } // namespace
+
+@@ -477,7 +477,7 @@ int RunZygote(ContentMainDelegate* delegate) {
+ delegate->ZygoteStarting(&zygote_fork_delegates);
+ media::InitializeMediaLibrary();
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ PreSandboxInit();
+ #endif
+
+@@ -642,11 +642,11 @@ int ContentMainRunnerImpl::Initialize(const ContentMai
+ base::GlobalDescriptors::kBaseDescriptor);
+ #endif // !OS_ANDROID
+
+-#if defined(OS_LINUX) || defined(OS_OPENBSD)
++#if defined(OS_LINUX)
+ g_fds->Set(service_manager::kCrashDumpSignal,
+ service_manager::kCrashDumpSignal +
+ base::GlobalDescriptors::kBaseDescriptor);
+-#endif // OS_LINUX || OS_OPENBSD
++#endif // OS_LINUX
+
+ #endif // !OS_WIN
+
diff --git a/devel/electron6/files/patch-content_browser_BUILD.gn b/devel/electron6/files/patch-content_browser_BUILD.gn
new file mode 100644
index 000000000000..45b023cbf458
--- /dev/null
+++ b/devel/electron6/files/patch-content_browser_BUILD.gn
@@ -0,0 +1,11 @@
+--- content/browser/BUILD.gn.orig 2019-09-10 11:14:00 UTC
++++ content/browser/BUILD.gn
+@@ -2058,7 +2058,7 @@ jumbo_source_set("browser") {
+ "//chromeos/resources",
+ "//components/chromeos_camera:mojo_mjpeg_decode_accelerator",
+ ]
+- } else {
++ } else if (!is_bsd) {
+ sources += [
+ "memory/memory_monitor_linux.cc",
+ "memory/memory_monitor_linux.h",
diff --git a/devel/electron6/files/patch-content_browser_browser__main__loop.cc b/devel/electron6/files/patch-content_browser_browser__main__loop.cc
new file mode 100644
index 000000000000..67f1c88327c0
--- /dev/null
+++ b/devel/electron6/files/patch-content_browser_browser__main__loop.cc
@@ -0,0 +1,46 @@
+--- content/browser/browser_main_loop.cc.orig 2019-09-16 09:24:25 UTC
++++ content/browser/browser_main_loop.cc
+@@ -251,6 +251,13 @@
+ #include "mojo/public/cpp/bindings/lib/test_random_mojo_delays.h"
+ #endif
+
++#if defined(OS_BSD)
++#include "content/browser/sandbox_host_linux.h"
++#include "services/service_manager/zygote/common/common_sandbox_support_linux.h"
++#include "content/public/common/common_sandbox_support_linux.h"
++#include "services/service_manager/sandbox/sandbox.h"
++#endif
++
+ // One of the linux specific headers defines this as a macro.
+ #ifdef DestroyAll
+ #undef DestroyAll
+@@ -576,6 +583,11 @@ int BrowserMainLoop::EarlyInitialization() {
+ // by now since a thread to start the ServiceManager has been created
+ // before the browser main loop starts.
+ DCHECK(SandboxHostLinux::GetInstance()->IsInitialized());
++#elif defined(OS_BSD)
++ SandboxHostLinux::GetInstance()->Init();
++ base::FileHandleMappingVector fds_to_map;
++ const int sfd = SandboxHostLinux::GetInstance()->GetChildSocket();
++ fds_to_map.push_back(std::make_pair(sfd, service_manager::GetSandboxFD()));
+ #endif
+
+ #if defined(USE_X11)
+@@ -619,7 +631,7 @@ int BrowserMainLoop::EarlyInitialization() {
+ }
+ #endif // defined(OS_ANDROID) || defined(OS_CHROMEOS)
+
+-#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_CHROMEOS) || \
++#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD) || \
+ defined(OS_ANDROID)
+ // We use quite a few file descriptors for our IPC as well as disk the disk
+ // cache,and the default limit on the Mac is low (256), so bump it up.
+@@ -629,7 +641,7 @@ int BrowserMainLoop::EarlyInitialization() {
+ // users can easily hit this limit with many open tabs. Bump up the limit to
+ // an arbitrarily high number. See https://crbug.com/539567
+ base::IncreaseFdLimitTo(8192);
+-#endif // defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_CHROMEOS) ||
++#endif // defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD) ||
+ // defined(OS_ANDROID)
+
+ #if defined(OS_WIN)
diff --git a/devel/electron6/files/patch-content_browser_builtin__service__manifests.cc b/devel/electron6/files/patch-content_browser_builtin__service__manifests.cc
new file mode 100644
index 000000000000..3f653b2b55be
--- /dev/null
+++ b/devel/electron6/files/patch-content_browser_builtin__service__manifests.cc
@@ -0,0 +1,20 @@
+--- content/browser/builtin_service_manifests.cc.orig 2019-09-10 11:14:00 UTC
++++ content/browser/builtin_service_manifests.cc
+@@ -33,7 +33,7 @@
+ #include "services/video_capture/public/cpp/manifest.h"
+ #include "services/viz/public/cpp/manifest.h"
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include "components/services/font/public/cpp/manifest.h" // nogncheck
+ #endif
+
+@@ -99,7 +99,7 @@ const std::vector<service_manager::Manifest>& GetBuilt
+ : service_manager::Manifest::ExecutionMode::
+ kInProcessBuiltin),
+ viz::GetManifest(),
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ font_service::GetManifest(),
+ #endif
+ #if defined(OS_CHROMEOS)
diff --git a/devel/electron6/files/patch-content_browser_child__process__launcher__helper__linux.cc b/devel/electron6/files/patch-content_browser_child__process__launcher__helper__linux.cc
new file mode 100644
index 000000000000..e29d44d41d26
--- /dev/null
+++ b/devel/electron6/files/patch-content_browser_child__process__launcher__helper__linux.cc
@@ -0,0 +1,92 @@
+--- content/browser/child_process_launcher_helper_linux.cc.orig 2019-11-13 10:42:36 UTC
++++ content/browser/child_process_launcher_helper_linux.cc
+@@ -17,7 +17,9 @@
+ #include "content/public/common/sandboxed_process_launcher_delegate.h"
+ #include "services/service_manager/sandbox/linux/sandbox_linux.h"
+ #include "services/service_manager/zygote/common/common_sandbox_support_linux.h"
++#if !defined(OS_BSD)
+ #include "services/service_manager/zygote/common/zygote_handle.h"
++#endif
+ #include "services/service_manager/zygote/host/zygote_communication_linux.h"
+ #include "services/service_manager/zygote/host/zygote_host_impl_linux.h"
+
+@@ -55,6 +57,7 @@ bool ChildProcessLauncherHelper::BeforeLaunchOnLaunche
+ options->fds_to_remap.push_back(
+ std::make_pair(sandbox_fd, service_manager::GetSandboxFD()));
+
++#if !defined(OS_BSD)
+ // (For Electron), if we're launching without zygote, that means we're
+ // launching an unsandboxed process (since all sandboxed processes are
+ // forked from the zygote). Relax the allow_new_privs option to permit
+@@ -66,6 +69,7 @@ bool ChildProcessLauncherHelper::BeforeLaunchOnLaunche
+ if (!zygote_handle) {
+ options->allow_new_privs = true;
+ }
++#endif
+ }
+
+ options->environment = delegate_->GetEnvironment();
+@@ -81,6 +85,7 @@ ChildProcessLauncherHelper::LaunchProcessOnLauncherThr
+ int* launch_result) {
+ *is_synchronous_launch = true;
+
++#if !defined(OS_BSD)
+ service_manager::ZygoteHandle zygote_handle =
+ base::CommandLine::ForCurrentProcess()->HasSwitch(switches::kNoZygote)
+ ? nullptr
+@@ -94,7 +99,6 @@ ChildProcessLauncherHelper::LaunchProcessOnLauncherThr
+ GetProcessType());
+ *launch_result = LAUNCH_RESULT_SUCCESS;
+
+-#if !defined(OS_OPENBSD)
+ if (handle) {
+ // This is just a starting score for a renderer or extension (the
+ // only types of processes that will be started this way). It will
+@@ -105,13 +109,13 @@ ChildProcessLauncherHelper::LaunchProcessOnLauncherThr
+ service_manager::ZygoteHostImpl::GetInstance()->AdjustRendererOOMScore(
+ handle, kLowestRendererOomScore);
+ }
+-#endif
+
+ Process process;
+ process.process = base::Process(handle);
+ process.zygote = zygote_handle;
+ return process;
+ }
++#endif
+
+ Process process;
+ process.process = base::LaunchProcess(*command_line(), options);
+@@ -129,10 +133,14 @@ ChildProcessTerminationInfo ChildProcessLauncherHelper
+ const ChildProcessLauncherHelper::Process& process,
+ bool known_dead) {
+ ChildProcessTerminationInfo info;
++#if !defined(OS_BSD)
+ if (process.zygote) {
+ info.status = process.zygote->GetTerminationStatus(
+ process.process.Handle(), known_dead, &info.exit_code);
+ } else if (known_dead) {
++#else
++ if (known_dead) {
++#endif
+ info.status = base::GetKnownDeadTerminationStatus(process.process.Handle(),
+ &info.exit_code);
+ } else {
+@@ -156,13 +164,17 @@ void ChildProcessLauncherHelper::ForceNormalProcessTer
+ DCHECK(CurrentlyOnProcessLauncherTaskRunner());
+ process.process.Terminate(service_manager::RESULT_CODE_NORMAL_EXIT, false);
+ // On POSIX, we must additionally reap the child.
++#if !defined(OS_BSD)
+ if (process.zygote) {
+ // If the renderer was created via a zygote, we have to proxy the reaping
+ // through the zygote process.
+ process.zygote->EnsureProcessTerminated(process.process.Handle());
+ } else {
++#endif
+ base::EnsureProcessTerminated(std::move(process.process));
++#if !defined(OS_BSD)
+ }
++#endif
+ }
+
+ void ChildProcessLauncherHelper::SetProcessPriorityOnLauncherThread(
diff --git a/devel/electron6/files/patch-content_browser_devtools_protocol_system__info__handler.cc b/devel/electron6/files/patch-content_browser_devtools_protocol_system__info__handler.cc
new file mode 100644
index 000000000000..1a9127567830
--- /dev/null
+++ b/devel/electron6/files/patch-content_browser_devtools_protocol_system__info__handler.cc
@@ -0,0 +1,11 @@
+--- content/browser/devtools/protocol/system_info_handler.cc.orig 2019-09-10 11:14:00 UTC
++++ content/browser/devtools/protocol/system_info_handler.cc
+@@ -40,7 +40,7 @@ using GetInfoCallback = SystemInfo::Backend::GetInfoCa
+ // Give the GPU process a few seconds to provide GPU info.
+ // Linux Debug builds need more time -- see Issue 796437.
+ // Windows builds need more time -- see Issue 873112.
+-#if (defined(OS_LINUX) && !defined(NDEBUG)) || defined(OS_WIN)
++#if ((defined(OS_LINUX) || defined(OS_BSD)) && !defined(NDEBUG)) || defined(OS_WIN)
+ const int kGPUInfoWatchdogTimeoutMs = 20000;
+ #else
+ const int kGPUInfoWatchdogTimeoutMs = 5000;
diff --git a/devel/electron6/files/patch-content_browser_gpu_gpu__process__host.cc b/devel/electron6/files/patch-content_browser_gpu_gpu__process__host.cc
new file mode 100644
index 000000000000..3ff05a3d82a0
--- /dev/null
+++ b/devel/electron6/files/patch-content_browser_gpu_gpu__process__host.cc
@@ -0,0 +1,11 @@
+--- content/browser/gpu/gpu_process_host.cc.orig 2019-09-16 09:24:25 UTC
++++ content/browser/gpu/gpu_process_host.cc
+@@ -1063,7 +1063,7 @@ bool GpuProcessHost::LaunchGpuProcess() {
+ std::unique_ptr<base::CommandLine> cmd_line =
+ std::make_unique<base::CommandLine>(base::CommandLine::NO_PROGRAM);
+ #else
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ int child_flags = gpu_launcher.empty() ? ChildProcessHost::CHILD_ALLOW_SELF
+ : ChildProcessHost::CHILD_NORMAL;
+ #elif defined(OS_MACOSX)
diff --git a/devel/electron6/files/patch-content_browser_media_media__internals.cc b/devel/electron6/files/patch-content_browser_media_media__internals.cc
new file mode 100644
index 000000000000..58180dfe6dbb
--- /dev/null
+++ b/devel/electron6/files/patch-content_browser_media_media__internals.cc
@@ -0,0 +1,11 @@
+--- content/browser/media/media_internals.cc.orig 2019-09-10 11:14:02 UTC
++++ content/browser/media/media_internals.cc
+@@ -785,7 +785,7 @@ void MediaInternals::UpdateVideoCaptureDeviceCapabilit
+ device_dict->SetString("id", descriptor.device_id);
+ device_dict->SetString("name", descriptor.GetNameAndModel());
+ device_dict->Set("formats", std::move(format_list));
+-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || \
++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD) || \
+ defined(OS_ANDROID)
+ device_dict->SetString("captureApi", descriptor.GetCaptureApiTypeString());
+ #endif
diff --git a/devel/electron6/files/patch-content_browser_memory_memory__monitor.cc b/devel/electron6/files/patch-content_browser_memory_memory__monitor.cc
new file mode 100644
index 000000000000..75e460e6df82
--- /dev/null
+++ b/devel/electron6/files/patch-content_browser_memory_memory__monitor.cc
@@ -0,0 +1,11 @@
+--- content/browser/memory/memory_monitor.cc.orig 2019-09-10 11:14:02 UTC
++++ content/browser/memory/memory_monitor.cc
+@@ -22,7 +22,7 @@ void MemoryMonitorDelegate::GetSystemMemoryInfo(
+ base::GetSystemMemoryInfo(mem_info);
+ }
+
+-#if defined(OS_MACOSX)
++#if defined(OS_MACOSX) || defined(OS_BSD)
+ // TODO(bashi,bcwhite): Remove when memory monitor for mac is available.
+ std::unique_ptr<MemoryMonitor> CreateMemoryMonitor() {
+ NOTREACHED();
diff --git a/devel/electron6/files/patch-content_browser_memory_swap__metrics__driver__impl__linux.cc b/devel/electron6/files/patch-content_browser_memory_swap__metrics__driver__impl__linux.cc
new file mode 100644
index 000000000000..629490440f40
--- /dev/null
+++ b/devel/electron6/files/patch-content_browser_memory_swap__metrics__driver__impl__linux.cc
@@ -0,0 +1,27 @@
+--- content/browser/memory/swap_metrics_driver_impl_linux.cc.orig 2019-09-10 10:42:36 UTC
++++ content/browser/memory/swap_metrics_driver_impl_linux.cc
+@@ -43,6 +43,7 @@ SwapMetricsDriverImplLinux::~SwapMetricsDriverImplLinu
+
+ SwapMetricsDriver::SwapMetricsUpdateResult
+ SwapMetricsDriverImplLinux::UpdateMetricsInternal(base::TimeDelta interval) {
++#if !defined(OS_BSD)
+ base::VmStatInfo vmstat;
+ if (!base::GetVmStatInfo(&vmstat)) {
+ return SwapMetricsDriver::SwapMetricsUpdateResult::kSwapMetricsUpdateFailed;
+@@ -55,12 +56,15 @@ SwapMetricsDriverImplLinux::UpdateMetricsInternal(base
+
+ if (interval.is_zero())
+ return SwapMetricsDriver::SwapMetricsUpdateResult::
+- kSwapMetricsUpdateSuccess;
++ kSwapMetricsUpdateSuccess;
+
+ delegate_->OnSwapInCount(in_counts, interval);
+ delegate_->OnSwapOutCount(out_counts, interval);
+
+ return SwapMetricsDriver::SwapMetricsUpdateResult::kSwapMetricsUpdateSuccess;
++#else
++ return SwapMetricsDriver::SwapMetricsUpdateResult::kSwapMetricsUpdateFailed;
++#endif
+ }
+
+ } // namespace content
diff --git a/devel/electron6/files/patch-content_browser_ppapi__plugin__process__host.cc b/devel/electron6/files/patch-content_browser_ppapi__plugin__process__host.cc
new file mode 100644
index 000000000000..99e6fd7f2fe5
--- /dev/null
+++ b/devel/electron6/files/patch-content_browser_ppapi__plugin__process__host.cc
@@ -0,0 +1,11 @@
+--- content/browser/ppapi_plugin_process_host.cc.orig 2019-09-16 09:24:25 UTC
++++ content/browser/ppapi_plugin_process_host.cc
+@@ -364,7 +364,7 @@ bool PpapiPluginProcessHost::Init(const PepperPluginIn
+ base::CommandLine::StringType plugin_launcher =
+ browser_command_line.GetSwitchValueNative(switches::kPpapiPluginLauncher);
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ int flags = plugin_launcher.empty() ? ChildProcessHost::CHILD_ALLOW_SELF :
+ ChildProcessHost::CHILD_NORMAL;
+ #elif defined(OS_MACOSX)
diff --git a/devel/electron6/files/patch-content_browser_renderer__host_input_input__device__change__observer.cc b/devel/electron6/files/patch-content_browser_renderer__host_input_input__device__change__observer.cc
new file mode 100644
index 000000000000..03cb506da0ef
--- /dev/null
+++ b/devel/electron6/files/patch-content_browser_renderer__host_input_input__device__change__observer.cc
@@ -0,0 +1,29 @@
+--- content/browser/renderer_host/input/input_device_change_observer.cc.orig 2019-09-10 11:14:02 UTC
++++ content/browser/renderer_host/input/input_device_change_observer.cc
+@@ -10,7 +10,7 @@
+
+ #if defined(OS_WIN)
+ #include "ui/events/devices/input_device_observer_win.h"
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ #include "ui/events/devices/input_device_manager.h"
+ #elif defined(OS_ANDROID)
+ #include "ui/events/devices/input_device_observer_android.h"
+@@ -22,7 +22,7 @@ InputDeviceChangeObserver::InputDeviceChangeObserver(R
+ render_view_host_impl_ = rvhi;
+ #if defined(OS_WIN)
+ ui::InputDeviceObserverWin::GetInstance()->AddObserver(this);
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ ui::InputDeviceManager::GetInstance()->AddObserver(this);
+ #elif defined(OS_ANDROID)
+ ui::InputDeviceObserverAndroid::GetInstance()->AddObserver(this);
+@@ -32,7 +32,7 @@ InputDeviceChangeObserver::InputDeviceChangeObserver(R
+ InputDeviceChangeObserver::~InputDeviceChangeObserver() {
+ #if defined(OS_WIN)
+ ui::InputDeviceObserverWin::GetInstance()->RemoveObserver(this);
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ ui::InputDeviceManager::GetInstance()->RemoveObserver(this);
+ #elif defined(OS_ANDROID)
+ ui::InputDeviceObserverAndroid::GetInstance()->RemoveObserver(this);
diff --git a/devel/electron6/files/patch-content_browser_renderer__host_pepper_pepper__file__io__host.cc b/devel/electron6/files/patch-content_browser_renderer__host_pepper_pepper__file__io__host.cc
new file mode 100644
index 000000000000..4bfcd19e4682
--- /dev/null
+++ b/devel/electron6/files/patch-content_browser_renderer__host_pepper_pepper__file__io__host.cc
@@ -0,0 +1,20 @@
+--- content/browser/renderer_host/pepper/pepper_file_io_host.cc.orig 2019-09-10 11:14:02 UTC
++++ content/browser/renderer_host/pepper/pepper_file_io_host.cc
+@@ -432,7 +432,7 @@ void PepperFileIOHost::OnLocalFileOpened(
+ ppapi::host::ReplyMessageContext reply_context,
+ const base::FilePath& path,
+ base::File::Error error_code) {
+-#if defined(OS_WIN) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD)
+ // Quarantining a file before its contents are available is only supported on
+ // Windows and Linux.
+ if (!FileOpenForWrite(open_flags_) || error_code != base::File::FILE_OK) {
+@@ -452,7 +452,7 @@ void PepperFileIOHost::OnLocalFileOpened(
+ #endif
+ }
+
+-#if defined(OS_WIN) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD)
+ void PepperFileIOHost::OnLocalFileQuarantined(
+ ppapi::host::ReplyMessageContext reply_context,
+ const base::FilePath& path,
diff --git a/devel/electron6/files/patch-content_browser_renderer__host_render__message__filter.cc b/devel/electron6/files/patch-content_browser_renderer__host_render__message__filter.cc
new file mode 100644
index 000000000000..eb21458f13d7
--- /dev/null
+++ b/devel/electron6/files/patch-content_browser_renderer__host_render__message__filter.cc
@@ -0,0 +1,29 @@
+--- content/browser/renderer_host/render_message_filter.cc.orig 2019-09-10 11:14:02 UTC
++++ content/browser/renderer_host/render_message_filter.cc
+@@ -71,7 +71,7 @@
+ #if defined(OS_MACOSX)
+ #include "ui/accelerated_widget_mac/window_resize_helper_mac.h"
+ #endif
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include "base/linux_util.h"
+ #include "base/threading/platform_thread.h"
+ #endif
+@@ -151,7 +151,7 @@ void RenderMessageFilter::CreateFullscreenWidget(
+ std::move(callback).Run(route_id);
+ }
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ void RenderMessageFilter::SetThreadPriorityOnFileThread(
+ base::PlatformThreadId ns_tid,
+ base::ThreadPriority priority) {
+@@ -172,7 +172,7 @@ void RenderMessageFilter::SetThreadPriorityOnFileThrea
+ }
+ #endif
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ void RenderMessageFilter::SetThreadPriority(int32_t ns_tid,
+ base::ThreadPriority priority) {
+ constexpr base::TaskTraits kTraits = {
diff --git a/devel/electron6/files/patch-content_browser_renderer__host_render__message__filter.h b/devel/electron6/files/patch-content_browser_renderer__host_render__message__filter.h
new file mode 100644
index 000000000000..8110f9d8ac25
--- /dev/null
+++ b/devel/electron6/files/patch-content_browser_renderer__host_render__message__filter.h
@@ -0,0 +1,19 @@
+--- content/browser/renderer_host/render_message_filter.h.orig 2019-09-10 11:14:02 UTC
++++ content/browser/renderer_host/render_message_filter.h
+@@ -87,14 +87,14 @@ class CONTENT_EXPORT RenderMessageFilter
+ mojom::WidgetPtr widget,
+ CreateFullscreenWidgetCallback callback) override;
+ void HasGpuProcess(HasGpuProcessCallback callback) override;
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ void SetThreadPriority(int32_t ns_tid,
+ base::ThreadPriority priority) override;
+ #endif
+
+ void OnResolveProxy(const GURL& url, IPC::Message* reply_msg);
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ void SetThreadPriorityOnFileThread(base::PlatformThreadId ns_tid,
+ base::ThreadPriority priority);
+ #endif
diff --git a/devel/electron6/files/patch-content_browser_renderer__host_render__process__host__impl.cc b/devel/electron6/files/patch-content_browser_renderer__host_render__process__host__impl.cc
new file mode 100644
index 000000000000..21636af7644a
--- /dev/null
+++ b/devel/electron6/files/patch-content_browser_renderer__host_render__process__host__impl.cc
@@ -0,0 +1,38 @@
+--- content/browser/renderer_host/render_process_host_impl.cc.orig 2019-09-16 09:24:25 UTC
++++ content/browser/renderer_host/render_process_host_impl.cc
+@@ -230,7 +230,7 @@
+ #include "content/browser/compositor/image_transport_factory.h"
+ #endif
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include <sys/resource.h>
+ #include <sys/time.h>
+ #endif
+@@ -1244,7 +1244,7 @@ static constexpr size_t kUnknownPlatformProcessLimit =
+ // to indicate failure and std::numeric_limits<size_t>::max() to indicate
+ // unlimited.
+ size_t GetPlatformProcessLimit() {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ struct rlimit limit;
+ if (getrlimit(RLIMIT_NPROC, &limit) != 0)
+ return kUnknownPlatformProcessLimit;
+@@ -1255,7 +1255,7 @@ size_t GetPlatformProcessLimit() {
+ #else
+ // TODO(https://crbug.com/104689): Implement on other platforms.
+ return kUnknownPlatformProcessLimit;
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+ }
+ #endif // !defined(OS_ANDROID) && !defined(OS_CHROMEOS)
+
+@@ -1667,7 +1667,7 @@ bool RenderProcessHostImpl::Init() {
+ renderer_prefix =
+ browser_command_line.GetSwitchValueNative(switches::kRendererCmdPrefix);
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ int flags = renderer_prefix.empty() ? ChildProcessHost::CHILD_ALLOW_SELF
+ : ChildProcessHost::CHILD_NORMAL;
+ #elif defined(OS_MACOSX)
diff --git a/devel/electron6/files/patch-content_browser_renderer__host_render__process__host__impl.h b/devel/electron6/files/patch-content_browser_renderer__host_render__process__host__impl.h
new file mode 100644
index 000000000000..c29b191fa106
--- /dev/null
+++ b/devel/electron6/files/patch-content_browser_renderer__host_render__process__host__impl.h
@@ -0,0 +1,15 @@
+--- content/browser/renderer_host/render_process_host_impl.h.orig 2019-09-10 11:14:02 UTC
++++ content/browser/renderer_host/render_process_host_impl.h
+@@ -400,10 +400,10 @@ class CONTENT_EXPORT RenderProcessHostImpl
+ is_for_guests_only_ = is_for_guests_only;
+ }
+
+-#if defined(OS_POSIX) && !defined(OS_ANDROID) && !defined(OS_MACOSX)
++#if defined(OS_POSIX) && !defined(OS_ANDROID) && !defined(OS_MACOSX) && !defined(OS_BSD)
+ // Launch the zygote early in the browser startup.
+ static void EarlyZygoteLaunch();
+-#endif // defined(OS_POSIX) && !defined(OS_ANDROID) && !defined(OS_MACOSX)
++#endif // defined(OS_POSIX) && !defined(OS_ANDROID) && !defined(OS_MACOSX) && !defined(OS_BSD)
+
+ RendererAudioOutputStreamFactoryContext*
+ GetRendererAudioOutputStreamFactoryContext() override;
diff --git a/devel/electron6/files/patch-content_browser_renderer__host_render__view__host__impl.cc b/devel/electron6/files/patch-content_browser_renderer__host_render__view__host__impl.cc
new file mode 100644
index 000000000000..195ee10b67ed
--- /dev/null
+++ b/devel/electron6/files/patch-content_browser_renderer__host_render__view__host__impl.cc
@@ -0,0 +1,11 @@
+--- content/browser/renderer_host/render_view_host_impl.cc.orig 2019-09-10 11:14:02 UTC
++++ content/browser/renderer_host/render_view_host_impl.cc
+@@ -163,7 +163,7 @@ void GetPlatformSpecificPrefs(blink::mojom::RendererPr
+ display::win::ScreenWin::GetSystemMetricsInDIP(SM_CYVSCROLL);
+ prefs->arrow_bitmap_width_horizontal_scroll_bar_in_dips =
+ display::win::ScreenWin::GetSystemMetricsInDIP(SM_CXHSCROLL);
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ prefs->system_font_family_name = gfx::Font().GetFontName();
+ #endif
+ }
diff --git a/devel/electron6/files/patch-content_browser_renderer__host_render__widget__host__view__aura.cc b/devel/electron6/files/patch-content_browser_renderer__host_render__widget__host__view__aura.cc
new file mode 100644
index 000000000000..08aff83170ac
--- /dev/null
+++ b/devel/electron6/files/patch-content_browser_renderer__host_render__widget__host__view__aura.cc
@@ -0,0 +1,29 @@
+--- content/browser/renderer_host/render_widget_host_view_aura.cc.orig 2019-09-10 11:14:02 UTC
++++ content/browser/renderer_host/render_widget_host_view_aura.cc
+@@ -117,7 +117,7 @@
+ #include "content/browser/accessibility/browser_accessibility_auralinux.h"
+ #endif
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS)
+ #include "ui/base/ime/linux/text_edit_command_auralinux.h"
+ #include "ui/base/ime/linux/text_edit_key_bindings_delegate_auralinux.h"
+ #endif
+@@ -2200,7 +2200,7 @@ bool RenderWidgetHostViewAura::NeedsInputGrab() {
+ }
+
+ bool RenderWidgetHostViewAura::NeedsMouseCapture() {
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS)
+ return NeedsInputGrab();
+ #endif
+ return false;
+@@ -2397,7 +2397,7 @@ void RenderWidgetHostViewAura::ForwardKeyboardEventWit
+ if (!target_host)
+ return;
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS)
+ ui::TextEditKeyBindingsDelegateAuraLinux* keybinding_delegate =
+ ui::GetTextEditKeyBindingsDelegate();
+ std::vector<ui::TextEditCommandAuraLinux> commands;
diff --git a/devel/electron6/files/patch-content_browser_renderer__host_render__widget__host__view__event__handler.cc b/devel/electron6/files/patch-content_browser_renderer__host_render__widget__host__view__event__handler.cc
new file mode 100644
index 000000000000..6bc1b3e108d7
--- /dev/null
+++ b/devel/electron6/files/patch-content_browser_renderer__host_render__widget__host__view__event__handler.cc
@@ -0,0 +1,11 @@
+--- content/browser/renderer_host/render_widget_host_view_event_handler.cc.orig 2019-09-10 11:14:02 UTC
++++ content/browser/renderer_host/render_widget_host_view_event_handler.cc
+@@ -609,7 +609,7 @@ bool RenderWidgetHostViewEventHandler::CanRendererHand
+ if (event->type() == ui::ET_MOUSE_EXITED) {
+ if (mouse_locked || selection_popup)
+ return false;
+-#if defined(OS_WIN) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD)
+ // Don't forward the mouse leave message which is received when the context
+ // menu is displayed by the page. This confuses the page and causes state
+ // changes.
diff --git a/devel/electron6/files/patch-content_browser_scheduler_responsiveness_native__event__observer.cc b/devel/electron6/files/patch-content_browser_scheduler_responsiveness_native__event__observer.cc
new file mode 100644
index 000000000000..70c43b3f6a63
--- /dev/null
+++ b/devel/electron6/files/patch-content_browser_scheduler_responsiveness_native__event__observer.cc
@@ -0,0 +1,29 @@
+--- content/browser/scheduler/responsiveness/native_event_observer.cc.orig 2019-09-10 10:42:36 UTC
++++ content/browser/scheduler/responsiveness/native_event_observer.cc
+@@ -15,7 +15,7 @@
+
+ #include "ui/events/platform/platform_event_source.h"
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include "ui/aura/env.h"
+ #include "ui/events/event.h"
+ #endif
+@@ -39,7 +39,7 @@ NativeEventObserver::~NativeEventObserver() {
+ DeregisterObserver();
+ }
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ void NativeEventObserver::RegisterObserver() {
+ aura::Env::GetInstance()->AddWindowEventDispatcherObserver(this);
+ }
+@@ -61,7 +61,7 @@ void NativeEventObserver::OnWindowEventDispatcherFinis
+ did_run_event_callback_.Run(info.unique_id);
+ events_being_processed_.pop_back();
+ }
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+
+ #if defined(OS_WIN)
+ void NativeEventObserver::RegisterObserver() {
diff --git a/devel/electron6/files/patch-content_browser_scheduler_responsiveness_native__event__observer.h b/devel/electron6/files/patch-content_browser_scheduler_responsiveness_native__event__observer.h
new file mode 100644
index 000000000000..0c136526733d
--- /dev/null
+++ b/devel/electron6/files/patch-content_browser_scheduler_responsiveness_native__event__observer.h
@@ -0,0 +1,47 @@
+--- content/browser/scheduler/responsiveness/native_event_observer.h.orig 2019-09-10 10:42:36 UTC
++++ content/browser/scheduler/responsiveness/native_event_observer.h
+@@ -14,7 +14,7 @@
+ #include "content/public/browser/native_event_processor_observer_mac.h"
+ #endif
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include "ui/aura/window_event_dispatcher_observer.h"
+ #endif
+
+@@ -39,7 +39,7 @@ namespace responsiveness {
+ class CONTENT_EXPORT NativeEventObserver
+ #if defined(OS_MACOSX)
+ : public NativeEventProcessorObserver
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ : public aura::WindowEventDispatcherObserver
+ #elif defined(OS_WIN)
+ : public base::MessagePumpForUI::Observer
+@@ -56,7 +56,7 @@ class CONTENT_EXPORT NativeEventObserver
+ NativeEventObserver(WillRunEventCallback will_run_event_callback,
+ DidRunEventCallback did_run_event_callback);
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ ~NativeEventObserver() override;
+ #else
+ virtual ~NativeEventObserver();
+@@ -68,7 +68,7 @@ class CONTENT_EXPORT NativeEventObserver
+ // Exposed for tests.
+ void WillRunNativeEvent(const void* opaque_identifier) override;
+ void DidRunNativeEvent(const void* opaque_identifier) override;
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ // aura::WindowEventDispatcherObserver overrides:
+ void OnWindowEventDispatcherStartedProcessing(
+ aura::WindowEventDispatcher* dispatcher,
+@@ -85,7 +85,7 @@ class CONTENT_EXPORT NativeEventObserver
+ void RegisterObserver();
+ void DeregisterObserver();
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ struct EventInfo {
+ const void* unique_id;
+ };
diff --git a/devel/electron6/files/patch-content_browser_service__manager_service__manager__context.cc b/devel/electron6/files/patch-content_browser_service__manager_service__manager__context.cc
new file mode 100644
index 000000000000..582d4aed8497
--- /dev/null
+++ b/devel/electron6/files/patch-content_browser_service__manager_service__manager__context.cc
@@ -0,0 +1,35 @@
+--- content/browser/service_manager/service_manager_context.cc.orig 2019-09-10 11:14:02 UTC
++++ content/browser/service_manager/service_manager_context.cc
+@@ -98,7 +98,7 @@
+ #include "jni/ContentNfcDelegate_jni.h"
+ #endif
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include "components/services/font/font_service_app.h"
+ #include "components/services/font/public/interfaces/constants.mojom.h" // nogncheck
+ #endif
+@@ -342,12 +342,12 @@ void CreateInProcessAudioService(
+ BrowserMainLoop::GetAudioManager(), std::move(request)));
+ }
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ std::unique_ptr<service_manager::Service> CreateFontService(
+ service_manager::mojom::ServiceRequest request) {
+ return std::make_unique<font_service::FontServiceApp>(std::move(request));
+ }
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+
+ std::unique_ptr<service_manager::Service> CreateResourceCoordinatorService(
+ service_manager::mojom::ServiceRequest request) {
+@@ -665,7 +665,7 @@ ServiceManagerContext::ServiceManagerContext(
+ base::BindRepeating(&CreateVideoCaptureService));
+ }
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ RegisterInProcessService(
+ font_service::mojom::kServiceName,
+ base::CreateSequencedTaskRunnerWithTraits(
diff --git a/devel/electron6/files/patch-content_browser_utility__process__host.cc b/devel/electron6/files/patch-content_browser_utility__process__host.cc
new file mode 100644
index 000000000000..845b84926054
--- /dev/null
+++ b/devel/electron6/files/patch-content_browser_utility__process__host.cc
@@ -0,0 +1,11 @@
+--- content/browser/utility_process_host.cc.orig 2019-09-10 11:14:02 UTC
++++ content/browser/utility_process_host.cc
+@@ -213,7 +213,7 @@ UtilityProcessHost::UtilityProcessHost(
+ : client_(client),
+ client_task_runner_(client_task_runner),
+ sandbox_type_(service_manager::SANDBOX_TYPE_UTILITY),
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ child_flags_(ChildProcessHost::CHILD_ALLOW_SELF),
+ #else
+ child_flags_(ChildProcessHost::CHILD_NORMAL),
diff --git a/devel/electron6/files/patch-content_browser_webui_shared__resources__data__source.cc b/devel/electron6/files/patch-content_browser_webui_shared__resources__data__source.cc
new file mode 100644
index 000000000000..ef5e37d8ba5c
--- /dev/null
+++ b/devel/electron6/files/patch-content_browser_webui_shared__resources__data__source.cc
@@ -0,0 +1,17 @@
+--- content/browser/webui/shared_resources_data_source.cc.orig 2019-09-10 11:14:02 UTC
++++ content/browser/webui/shared_resources_data_source.cc
+@@ -119,12 +119,12 @@ const std::map<int, std::string> CreateMojoResourceIdT
+ "mojo/mojo/public/mojom/base/string16.mojom.html"},
+ {IDR_MOJO_STRING16_MOJOM_LITE_JS,
+ "mojo/mojo/public/mojom/base/string16.mojom-lite.js"},
+-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+ {IDR_MOJO_TIME_MOJOM_HTML,
+ "mojo/mojo/public/mojom/base/time.mojom.html"},
+ {IDR_MOJO_TIME_MOJOM_LITE_JS,
+ "mojo/mojo/public/mojom/base/time.mojom-lite.js"},
+-#endif // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
++#endif // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+ };
+ }
+
diff --git a/devel/electron6/files/patch-content_common_BUILD.gn b/devel/electron6/files/patch-content_common_BUILD.gn
new file mode 100644
index 000000000000..40fe9c147aa8
--- /dev/null
+++ b/devel/electron6/files/patch-content_common_BUILD.gn
@@ -0,0 +1,15 @@
+--- content/common/BUILD.gn.orig 2019-09-10 11:14:02 UTC
++++ content/common/BUILD.gn
+@@ -381,6 +381,12 @@ source_set("common") {
+ libs += [ "android" ]
+ }
+
++ if (is_bsd) {
++ sources -= [
++ "sandbox_init_linux.cc",
++ ]
++ }
++
+ if (is_debug && !is_component_build && enable_plugins) {
+ # Content depends on the PPAPI message logging stuff; if this isn't here,
+ # some unit test binaries won't compile. This only worked in release mode
diff --git a/devel/electron6/files/patch-content_common_common__sandbox__support__linux.cc b/devel/electron6/files/patch-content_common_common__sandbox__support__linux.cc
new file mode 100644
index 000000000000..4dc909737019
--- /dev/null
+++ b/devel/electron6/files/patch-content_common_common__sandbox__support__linux.cc
@@ -0,0 +1,10 @@
+--- content/common/common_sandbox_support_linux.cc.orig 2019-09-10 10:42:37 UTC
++++ content/common/common_sandbox_support_linux.cc
+@@ -5,6 +5,7 @@
+ #include "content/public/common/common_sandbox_support_linux.h"
+
+ #include <sys/stat.h>
++#include <unistd.h>
+
+ #include <limits>
+ #include <memory>
diff --git a/devel/electron6/files/patch-content_common_user__agent.cc b/devel/electron6/files/patch-content_common_user__agent.cc
new file mode 100644
index 000000000000..ab6ed6986369
--- /dev/null
+++ b/devel/electron6/files/patch-content_common_user__agent.cc
@@ -0,0 +1,17 @@
+--- content/common/user_agent.cc.orig 2019-09-10 11:14:02 UTC
++++ content/common/user_agent.cc
+@@ -131,6 +131,14 @@ std::string BuildOSCpuInfo(bool include_android_build_
+ #endif
+ ); // NOLINT
+
++#if defined(OS_BSD)
++#if defined(__x86_64__)
++ base::StringAppendF(&os_cpu, "; Linux x86_64");
++#else
++ base::StringAppendF(&os_cpu, "; Linux i686");
++#endif
++#endif
++
+ return os_cpu;
+ }
+
diff --git a/devel/electron6/files/patch-content_gpu_BUILD.gn b/devel/electron6/files/patch-content_gpu_BUILD.gn
new file mode 100644
index 000000000000..c2b2607165ae
--- /dev/null
+++ b/devel/electron6/files/patch-content_gpu_BUILD.gn
@@ -0,0 +1,11 @@
+--- content/gpu/BUILD.gn.orig 2019-09-10 11:14:02 UTC
++++ content/gpu/BUILD.gn
+@@ -124,7 +124,7 @@ target(link_target_type, "gpu_sources") {
+
+ # Use DRI on desktop Linux builds.
+ if (current_cpu != "s390x" && current_cpu != "ppc64" && is_desktop_linux &&
+- (!is_chromecast || is_cast_desktop_build)) {
++ (!is_chromecast || is_cast_desktop_build) && !is_bsd) {
+ configs += [ "//build/config/linux/dri" ]
+ }
+ }
diff --git a/devel/electron6/files/patch-content_gpu_gpu__main.cc b/devel/electron6/files/patch-content_gpu_gpu__main.cc
new file mode 100644
index 000000000000..db081e0ad9e9
--- /dev/null
+++ b/devel/electron6/files/patch-content_gpu_gpu__main.cc
@@ -0,0 +1,47 @@
+--- content/gpu/gpu_main.cc.orig 2019-09-16 09:24:25 UTC
++++ content/gpu/gpu_main.cc
+@@ -79,7 +79,7 @@
+ #include "ui/gfx/x/x11_switches.h" // nogncheck
+ #endif
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include "content/gpu/gpu_sandbox_hook_linux.h"
+ #include "content/public/common/sandbox_init.h"
+ #include "services/service_manager/sandbox/linux/sandbox_linux.h"
+@@ -112,7 +112,7 @@ namespace content {
+
+ namespace {
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) && !defined(OS_BSD)
+ bool StartSandboxLinux(gpu::GpuWatchdogThread*,
+ const gpu::GPUInfo*,
+ const gpu::GpuPreferences&);
+@@ -173,7 +173,7 @@ class ContentSandboxHelper : public gpu::GpuSandboxHel
+ bool EnsureSandboxInitialized(gpu::GpuWatchdogThread* watchdog_thread,
+ const gpu::GPUInfo* gpu_info,
+ const gpu::GpuPreferences& gpu_prefs) override {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) && !defined(OS_BSD)
+ return StartSandboxLinux(watchdog_thread, gpu_info, gpu_prefs);
+ #elif defined(OS_WIN)
+ return StartSandboxWindows(sandbox_info_);
+@@ -374,7 +374,7 @@ int GpuMain(const MainFunctionParams& parameters) {
+
+ namespace {
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) && !defined(OS_BSD)
+ bool StartSandboxLinux(gpu::GpuWatchdogThread* watchdog_thread,
+ const gpu::GPUInfo* gpu_info,
+ const gpu::GpuPreferences& gpu_prefs) {
+@@ -409,7 +409,7 @@ bool StartSandboxLinux(gpu::GpuWatchdogThread* watchdo
+
+ return res;
+ }
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) && !defined(OS_BSD)
+
+ #if defined(OS_WIN)
+ bool StartSandboxWindows(const sandbox::SandboxInterfaceInfo* sandbox_info) {
diff --git a/devel/electron6/files/patch-content_gpu_gpu__sandbox__hook__linux.cc b/devel/electron6/files/patch-content_gpu_gpu__sandbox__hook__linux.cc
new file mode 100644
index 000000000000..598ad0c43a17
--- /dev/null
+++ b/devel/electron6/files/patch-content_gpu_gpu__sandbox__hook__linux.cc
@@ -0,0 +1,58 @@
+--- content/gpu/gpu_sandbox_hook_linux.cc.orig 2019-09-10 11:14:02 UTC
++++ content/gpu/gpu_sandbox_hook_linux.cc
+@@ -95,8 +95,9 @@ static const char kLibV4lEncPluginPath[] =
+ "/usr/lib/libv4l/plugins/libv4l-encplugin.so";
+ #endif
+
+-constexpr int dlopen_flag = RTLD_NOW | RTLD_GLOBAL | RTLD_NODELETE;
++constexpr int dlopen_flag = RTLD_NOW | RTLD_GLOBAL;
+
++#if !defined(OS_BSD)
+ void AddV4L2GpuWhitelist(
+ std::vector<BrokerFilePermission>* permissions,
+ const service_manager::SandboxSeccompBPF::Options& options) {
+@@ -287,8 +288,10 @@ std::vector<BrokerFilePermission> FilePermissionsForGp
+ AddStandardGpuWhiteList(&permissions);
+ return permissions;
+ }
++#endif
+
+ void LoadArmGpuLibraries() {
++#if !defined(OS_BSD)
+ // Preload the Mali library.
+ if (UseChromecastSandboxWhitelist()) {
+ for (const char* path : kWhitelistedChromecastPaths) {
+@@ -303,6 +306,7 @@ void LoadArmGpuLibraries() {
+ // Preload the Tegra V4L2 (video decode acceleration) library.
+ dlopen(kLibTegraPath, dlopen_flag);
+ }
++#endif
+ }
+
+ bool LoadAmdGpuLibraries() {
+@@ -358,6 +362,7 @@ bool LoadLibrariesForGpu(
+ return true;
+ }
+
++#if !defined(OS_BSD)
+ sandbox::syscall_broker::BrokerCommandSet CommandSetForGPU(
+ const service_manager::SandboxLinux::Options& options) {
+ sandbox::syscall_broker::BrokerCommandSet command_set;
+@@ -378,13 +383,17 @@ bool BrokerProcessPreSandboxHook(
+ service_manager::SetProcessTitleFromCommandLine(nullptr);
+ return true;
+ }
++#endif
+
+ } // namespace
+
+ bool GpuProcessPreSandboxHook(service_manager::SandboxLinux::Options options) {
++ NOTIMPLEMENTED();
++#if !defined(OS_BSD)
+ service_manager::SandboxLinux::GetInstance()->StartBrokerProcess(
+ CommandSetForGPU(options), FilePermissionsForGpu(options),
+ base::BindOnce(BrokerProcessPreSandboxHook), options);
++#endif
+
+ if (!LoadLibrariesForGpu(options))
+ return false;
diff --git a/devel/electron6/files/patch-content_ppapi__plugin_ppapi__blink__platform__impl.cc b/devel/electron6/files/patch-content_ppapi__plugin_ppapi__blink__platform__impl.cc
new file mode 100644
index 000000000000..81db41535b00
--- /dev/null
+++ b/devel/electron6/files/patch-content_ppapi__plugin_ppapi__blink__platform__impl.cc
@@ -0,0 +1,38 @@
+--- content/ppapi_plugin/ppapi_blink_platform_impl.cc.orig 2019-09-10 11:14:02 UTC
++++ content/ppapi_plugin/ppapi_blink_platform_impl.cc
+@@ -20,7 +20,7 @@
+
+ #if defined(OS_MACOSX)
+ #include "content/child/child_process_sandbox_support_impl_mac.h"
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ #include "content/child/child_process_sandbox_support_impl_linux.h"
+ #endif
+
+@@ -34,7 +34,7 @@ typedef struct CGFont* CGFontRef;
+ namespace content {
+
+ PpapiBlinkPlatformImpl::PpapiBlinkPlatformImpl() {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ font_loader_ =
+ sk_make_sp<font_service::FontLoader>(ChildThread::Get()->GetConnector());
+ SkFontConfigInterface::SetGlobal(font_loader_);
+@@ -49,7 +49,7 @@ PpapiBlinkPlatformImpl::~PpapiBlinkPlatformImpl() {
+ }
+
+ void PpapiBlinkPlatformImpl::Shutdown() {
+-#if defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ // SandboxSupport contains a map of OutOfProcessFont objects, which hold
+ // WebStrings and WebVectors, which become invalidated when blink is shut
+ // down. Hence, we need to clear that map now, just before blink::shutdown()
+@@ -59,7 +59,7 @@ void PpapiBlinkPlatformImpl::Shutdown() {
+ }
+
+ blink::WebSandboxSupport* PpapiBlinkPlatformImpl::GetSandboxSupport() {
+-#if defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ return sandbox_support_.get();
+ #else
+ return nullptr;
diff --git a/devel/electron6/files/patch-content_ppapi__plugin_ppapi__blink__platform__impl.h b/devel/electron6/files/patch-content_ppapi__plugin_ppapi__blink__platform__impl.h
new file mode 100644
index 000000000000..a23b18276861
--- /dev/null
+++ b/devel/electron6/files/patch-content_ppapi__plugin_ppapi__blink__platform__impl.h
@@ -0,0 +1,25 @@
+--- content/ppapi_plugin/ppapi_blink_platform_impl.h.orig 2019-09-10 11:14:02 UTC
++++ content/ppapi_plugin/ppapi_blink_platform_impl.h
+@@ -13,7 +13,7 @@
+ #include "build/build_config.h"
+ #include "content/child/blink_platform_impl.h"
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include "components/services/font/public/cpp/font_loader.h"
+ #include "third_party/skia/include/core/SkRefCnt.h"
+ #endif
+@@ -41,11 +41,11 @@ class PpapiBlinkPlatformImpl : public BlinkPlatformImp
+ bool sync_dir) override;
+
+ private:
+-#if defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ std::unique_ptr<blink::WebSandboxSupport> sandbox_support_;
+ #endif
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ sk_sp<font_service::FontLoader> font_loader_;
+ #endif
+
diff --git a/devel/electron6/files/patch-content_public_app_v8__snapshot__overlay__manifest.cc b/devel/electron6/files/patch-content_public_app_v8__snapshot__overlay__manifest.cc
new file mode 100644
index 000000000000..efcbdbbaeb83
--- /dev/null
+++ b/devel/electron6/files/patch-content_public_app_v8__snapshot__overlay__manifest.cc
@@ -0,0 +1,11 @@
+--- content/public/app/v8_snapshot_overlay_manifest.cc.orig 2019-09-10 11:14:02 UTC
++++ content/public/app/v8_snapshot_overlay_manifest.cc
+@@ -15,7 +15,7 @@ namespace content {
+ const service_manager::Manifest& GetV8SnapshotOverlayManifest() {
+ static base::NoDestructor<service_manager::Manifest> manifest {
+ service_manager::ManifestBuilder()
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ .PreloadFile(kV8NativesDataDescriptor,
+ base::FilePath(FILE_PATH_LITERAL("natives_blob.bin")))
+ #if defined(USE_V8_CONTEXT_SNAPSHOT)
diff --git a/devel/electron6/files/patch-content_public_common_child__process__host.h b/devel/electron6/files/patch-content_public_common_child__process__host.h
new file mode 100644
index 000000000000..9d280913ec74
--- /dev/null
+++ b/devel/electron6/files/patch-content_public_common_child__process__host.h
@@ -0,0 +1,11 @@
+--- content/public/common/child_process_host.h.orig 2019-09-10 11:14:02 UTC
++++ content/public/common/child_process_host.h
+@@ -51,7 +51,7 @@ class CONTENT_EXPORT ChildProcessHost : public IPC::Se
+ // No special behavior requested.
+ CHILD_NORMAL = 0,
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Indicates that the child execed after forking may be execced from
+ // /proc/self/exe rather than using the "real" app path. This prevents
+ // autoupdate from confusing us if it changes the file out from under us.
diff --git a/devel/electron6/files/patch-content_public_common_common__param__traits__macros.h b/devel/electron6/files/patch-content_public_common_common__param__traits__macros.h
new file mode 100644
index 000000000000..5c231d8344f1
--- /dev/null
+++ b/devel/electron6/files/patch-content_public_common_common__param__traits__macros.h
@@ -0,0 +1,11 @@
+--- content/public/common/common_param_traits_macros.h.orig 2019-09-10 11:14:02 UTC
++++ content/public/common/common_param_traits_macros.h
+@@ -329,7 +329,7 @@ IPC_STRUCT_TRAITS_BEGIN(blink::mojom::RendererPreferen
+ IPC_STRUCT_TRAITS_MEMBER(disable_client_blocked_error_page)
+ IPC_STRUCT_TRAITS_MEMBER(plugin_fullscreen_allowed)
+ IPC_STRUCT_TRAITS_MEMBER(network_contry_iso)
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ IPC_STRUCT_TRAITS_MEMBER(system_font_family_name)
+ #endif
+ #if defined(OS_WIN)
diff --git a/devel/electron6/files/patch-content_public_common_content__features.cc b/devel/electron6/files/patch-content_public_common_content__features.cc
new file mode 100644
index 000000000000..ee5c8285b479
--- /dev/null
+++ b/devel/electron6/files/patch-content_public_common_content__features.cc
@@ -0,0 +1,20 @@
+--- content/public/common/content_features.cc.orig 2019-09-10 11:14:02 UTC
++++ content/public/common/content_features.cc
+@@ -577,7 +577,7 @@ const base::Feature kWebAssemblyThreads {
+ };
+
+ // Enable WebAssembly trap handler.
+-#if (defined(OS_LINUX) || defined(OS_WIN) || defined(OS_MACOSX)) && \
++#if (defined(OS_BSD) || defined(OS_LINUX) || defined(OS_WIN) || defined(OS_MACOSX)) && \
+ defined(ARCH_CPU_X86_64)
+ const base::Feature kWebAssemblyTrapHandler{"WebAssemblyTrapHandler",
+ base::FEATURE_ENABLED_BY_DEFAULT};
+@@ -612,7 +612,7 @@ const base::Feature kWebAuthBle{"WebAuthenticationBle"
+ // https://w3c.github.io/webauthn
+ const base::Feature kWebAuthCable {
+ "WebAuthenticationCable",
+-#if !defined(OS_CHROMEOS) && defined(OS_LINUX)
++#if (!defined(OS_CHROMEOS) && defined(OS_LINUX)) || defined(OS_BSD)
+ base::FEATURE_DISABLED_BY_DEFAULT
+ #else
+ base::FEATURE_ENABLED_BY_DEFAULT
diff --git a/devel/electron6/files/patch-content_public_common_content__switches.cc b/devel/electron6/files/patch-content_public_common_content__switches.cc
new file mode 100644
index 000000000000..ab4fbfb6ce59
--- /dev/null
+++ b/devel/electron6/files/patch-content_public_common_content__switches.cc
@@ -0,0 +1,11 @@
+--- content/public/common/content_switches.cc.orig 2019-09-10 11:14:02 UTC
++++ content/public/common/content_switches.cc
+@@ -949,7 +949,7 @@ const char kEnableAutomation[] = "enable-automation";
+ const char kDisablePanelFitting[] = "disable-panel-fitting";
+ #endif
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_FREEBSD)
+ // Allows sending text-to-speech requests to speech-dispatcher, a common
+ // Linux speech service. Because it's buggy, the user must explicitly
+ // enable it so that visiting a random webpage can't cause instability.
diff --git a/devel/electron6/files/patch-content_public_common_content__switches.h b/devel/electron6/files/patch-content_public_common_content__switches.h
new file mode 100644
index 000000000000..48badac3cf24
--- /dev/null
+++ b/devel/electron6/files/patch-content_public_common_content__switches.h
@@ -0,0 +1,11 @@
+--- content/public/common/content_switches.h.orig 2019-09-10 11:14:02 UTC
++++ content/public/common/content_switches.h
+@@ -268,7 +268,7 @@ CONTENT_EXPORT extern const char kRendererWaitForJavaD
+ CONTENT_EXPORT extern const char kDisablePanelFitting[];
+ #endif
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_FREEBSD)
+ CONTENT_EXPORT extern const char kEnableSpeechDispatcher[];
+ #endif
+
diff --git a/devel/electron6/files/patch-content_public_common_use__zoom__for__dsf__policy.cc b/devel/electron6/files/patch-content_public_common_use__zoom__for__dsf__policy.cc
new file mode 100644
index 000000000000..d04357175d12
--- /dev/null
+++ b/devel/electron6/files/patch-content_public_common_use__zoom__for__dsf__policy.cc
@@ -0,0 +1,11 @@
+--- content/public/common/use_zoom_for_dsf_policy.cc.orig 2019-09-10 10:42:37 UTC
++++ content/public/common/use_zoom_for_dsf_policy.cc
+@@ -25,7 +25,7 @@ const base::Feature kUseZoomForDsfEnabledByDefault{
+ #endif
+
+ bool IsUseZoomForDSFEnabledByDefault() {
+-#if defined(OS_LINUX) || defined(OS_FUCHSIA)
++#if defined(OS_LINUX) || defined(OS_FUCHSIA) || defined(OS_BSD)
+ return true;
+ #elif defined(OS_WIN) || defined(OS_ANDROID)
+ return base::FeatureList::IsEnabled(kUseZoomForDsfEnabledByDefault);
diff --git a/devel/electron6/files/patch-content_public_test_browser__test__base.cc b/devel/electron6/files/patch-content_public_test_browser__test__base.cc
new file mode 100644
index 000000000000..9da10c001714
--- /dev/null
+++ b/devel/electron6/files/patch-content_public_test_browser__test__base.cc
@@ -0,0 +1,13 @@
+--- content/public/test/browser_test_base.cc.orig 2019-09-10 11:14:02 UTC
++++ content/public/test/browser_test_base.cc
+@@ -75,6 +75,10 @@
+ #include "ui/views/test/event_generator_delegate_mac.h"
+ #endif
+
++#if defined(OS_FREEBSD)
++#include <sys/signal.h>
++#endif
++
+ #if defined(OS_POSIX)
+ #include "base/process/process_handle.h"
+ #endif
diff --git a/devel/electron6/files/patch-content_public_test_mock__render__thread.cc b/devel/electron6/files/patch-content_public_test_mock__render__thread.cc
new file mode 100644
index 000000000000..38b23cfb5045
--- /dev/null
+++ b/devel/electron6/files/patch-content_public_test_mock__render__thread.cc
@@ -0,0 +1,11 @@
+--- content/public/test/mock_render_thread.cc.orig 2019-09-10 11:14:02 UTC
++++ content/public/test/mock_render_thread.cc
+@@ -74,7 +74,7 @@ class MockRenderMessageFilterImpl : public mojom::Rend
+ std::move(callback).Run(false);
+ }
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ void SetThreadPriority(int32_t platform_thread_id,
+ base::ThreadPriority thread_priority) override {}
+ #endif
diff --git a/devel/electron6/files/patch-content_renderer_media_audio_audio__device__factory.cc b/devel/electron6/files/patch-content_renderer_media_audio_audio__device__factory.cc
new file mode 100644
index 000000000000..5f0dbdc83610
--- /dev/null
+++ b/devel/electron6/files/patch-content_renderer_media_audio_audio__device__factory.cc
@@ -0,0 +1,11 @@
+--- content/renderer/media/audio/audio_device_factory.cc.orig 2019-09-10 11:14:02 UTC
++++ content/renderer/media/audio/audio_device_factory.cc
+@@ -35,7 +35,7 @@ AudioDeviceFactory* AudioDeviceFactory::factory_ = nul
+ namespace {
+
+ #if defined(OS_WIN) || defined(OS_MACOSX) || \
+- (defined(OS_LINUX) && !defined(OS_CHROMEOS))
++ (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ // Due to driver deadlock issues on Windows (http://crbug/422522) there is a
+ // chance device authorization response is never received from the browser side.
+ // In this case we will time out, to avoid renderer hang forever waiting for
diff --git a/devel/electron6/files/patch-content_renderer_media_stream_processed__local__audio__source.cc b/devel/electron6/files/patch-content_renderer_media_stream_processed__local__audio__source.cc
new file mode 100644
index 000000000000..29bd870cdfd2
--- /dev/null
+++ b/devel/electron6/files/patch-content_renderer_media_stream_processed__local__audio__source.cc
@@ -0,0 +1,20 @@
+--- content/renderer/media/stream/processed_local_audio_source.cc.orig 2019-09-10 11:14:03 UTC
++++ content/renderer/media/stream/processed_local_audio_source.cc
+@@ -80,7 +80,7 @@ void LogAudioProcesingProperties(
+ } // namespace
+
+ bool IsApmInAudioServiceEnabled() {
+-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+ return base::FeatureList::IsEnabled(features::kWebRtcApmInAudioService);
+ #else
+ return false;
+@@ -406,7 +406,7 @@ void ProcessedLocalAudioSource::CaptureUsingProcessor(
+ bool key_pressed) {
+ #if defined(OS_WIN) || defined(OS_MACOSX)
+ DCHECK_LE(volume, 1.0);
+-#elif (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_OPENBSD)
++#elif (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ // We have a special situation on Linux where the microphone volume can be
+ // "higher than maximum". The input volume slider in the sound preference
+ // allows the user to set a scaling that is higher than 100%. It means that
diff --git a/devel/electron6/files/patch-content_renderer_media_webrtc_webrtc__audio__renderer__unittest.cc b/devel/electron6/files/patch-content_renderer_media_webrtc_webrtc__audio__renderer__unittest.cc
new file mode 100644
index 000000000000..24d24a010049
--- /dev/null
+++ b/devel/electron6/files/patch-content_renderer_media_webrtc_webrtc__audio__renderer__unittest.cc
@@ -0,0 +1,11 @@
+--- content/renderer/media/webrtc/webrtc_audio_renderer_unittest.cc.orig 2019-09-10 11:14:03 UTC
++++ content/renderer/media/webrtc/webrtc_audio_renderer_unittest.cc
+@@ -204,7 +204,7 @@ TEST_F(WebRtcAudioRendererTest, MultipleRenderers) {
+ TEST_F(WebRtcAudioRendererTest, VerifySinkParameters) {
+ SetupRenderer(kDefaultOutputDeviceId);
+ renderer_proxy_->Start();
+-#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_FUCHSIA)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_FUCHSIA) || defined(OS_BSD)
+ static const int kExpectedBufferSize = kHardwareSampleRate / 100;
+ #elif defined(OS_ANDROID)
+ static const int kExpectedBufferSize = 2 * kHardwareSampleRate / 100;
diff --git a/devel/electron6/files/patch-content_renderer_render__process__impl.cc b/devel/electron6/files/patch-content_renderer_render__process__impl.cc
new file mode 100644
index 000000000000..15abfa6a8793
--- /dev/null
+++ b/devel/electron6/files/patch-content_renderer_render__process__impl.cc
@@ -0,0 +1,11 @@
+--- content/renderer/render_process_impl.cc.orig 2019-09-10 11:14:03 UTC
++++ content/renderer/render_process_impl.cc
+@@ -157,7 +157,7 @@ RenderProcessImpl::RenderProcessImpl()
+
+ SetV8FlagIfNotFeature(features::kWebAssemblyTrapHandler,
+ "--no-wasm-trap-handler");
+-#if defined(OS_LINUX) && defined(ARCH_CPU_X86_64)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && defined(ARCH_CPU_X86_64)
+ if (base::FeatureList::IsEnabled(features::kWebAssemblyTrapHandler)) {
+ base::CommandLine* command_line = base::CommandLine::ForCurrentProcess();
+ if (!command_line->HasSwitch(
diff --git a/devel/electron6/files/patch-content_renderer_render__thread__impl.cc b/devel/electron6/files/patch-content_renderer_render__thread__impl.cc
new file mode 100644
index 000000000000..8db6c3daf4bd
--- /dev/null
+++ b/devel/electron6/files/patch-content_renderer_render__thread__impl.cc
@@ -0,0 +1,51 @@
+--- content/renderer/render_thread_impl.cc.orig 2019-09-16 09:24:24 UTC
++++ content/renderer/render_thread_impl.cc
+@@ -187,12 +187,21 @@
+ #include "mojo/public/cpp/bindings/message_dumper.h"
+ #endif
+
++#if !defined(OS_BSD)
+ #if defined(OS_MACOSX)
+ #include <malloc/malloc.h>
+ #else
+ #include <malloc.h>
+ #endif
++#endif
+
++#if defined(OS_BSD)
++#include <stddef.h>
++#include <stdint.h>
++#include <sys/param.h>
++#include <sys/sysctl.h>
++#endif
++
+ using base::ThreadRestrictions;
+ using blink::WebDocument;
+ using blink::WebFrame;
+@@ -907,7 +916,7 @@ void RenderThreadImpl::Init() {
+ DCHECK(parsed_num_raster_threads) << string_value;
+ DCHECK_GT(num_raster_threads, 0);
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ categorized_worker_pool_->SetBackgroundingCallback(
+ main_thread_scheduler_->DefaultTaskRunner(),
+ base::BindOnce(
+@@ -939,7 +948,7 @@ void RenderThreadImpl::Init() {
+ GetConnector()->BindInterface(mojom::kBrowserServiceName,
+ mojo::MakeRequest(&storage_partition_service_));
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ render_message_filter()->SetThreadPriority(
+ ChildProcess::current()->io_thread_id(), base::ThreadPriority::DISPLAY);
+ #endif
+@@ -1321,7 +1330,7 @@ media::GpuVideoAcceleratorFactories* RenderThreadImpl:
+ !cmd_line->HasSwitch(switches::kDisableGpuMemoryBufferVideoFrames);
+ #else
+ cmd_line->HasSwitch(switches::kEnableGpuMemoryBufferVideoFrames);
+-#endif // defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_WIN)
++#endif // defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD)
+ const bool enable_media_stream_gpu_memory_buffers =
+ enable_gpu_memory_buffers &&
+ base::FeatureList::IsEnabled(
diff --git a/devel/electron6/files/patch-content_renderer_renderer__blink__platform__impl.cc b/devel/electron6/files/patch-content_renderer_renderer__blink__platform__impl.cc
new file mode 100644
index 000000000000..4c6b9b805a20
--- /dev/null
+++ b/devel/electron6/files/patch-content_renderer_renderer__blink__platform__impl.cc
@@ -0,0 +1,56 @@
+--- content/renderer/renderer_blink_platform_impl.cc.orig 2019-09-16 09:24:24 UTC
++++ content/renderer/renderer_blink_platform_impl.cc
+@@ -108,7 +108,7 @@
+
+ #if defined(OS_MACOSX)
+ #include "content/child/child_process_sandbox_support_impl_mac.h"
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ #include "content/child/child_process_sandbox_support_impl_linux.h"
+ #endif
+
+@@ -199,7 +199,7 @@ RendererBlinkPlatformImpl::RendererBlinkPlatformImpl(
+ ->Clone();
+ thread_safe_sender_ = RenderThreadImpl::current()->thread_safe_sender();
+ blob_registry_.reset(new WebBlobRegistryImpl(thread_safe_sender_.get()));
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ font_loader_ = sk_make_sp<font_service::FontLoader>(connector_.get());
+ SkFontConfigInterface::SetGlobal(font_loader_);
+ #endif
+@@ -208,7 +208,7 @@ RendererBlinkPlatformImpl::RendererBlinkPlatformImpl(
+ connector_ = service_manager::Connector::Create(&request);
+ }
+
+-#if defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ if (g_sandbox_enabled && sandboxEnabled()) {
+ #if defined(OS_MACOSX)
+ sandbox_support_.reset(new WebSandboxSupportMac(connector_.get()));
+@@ -236,7 +236,7 @@ RendererBlinkPlatformImpl::~RendererBlinkPlatformImpl(
+ }
+
+ void RendererBlinkPlatformImpl::Shutdown() {
+-#if defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ // SandboxSupport contains a map of OutOfProcessFont objects, which hold
+ // WebStrings and WebVectors, which become invalidated when blink is shut
+ // down. Hence, we need to clear that map now, just before blink::shutdown()
+@@ -311,7 +311,7 @@ RendererBlinkPlatformImpl::CreateNetworkURLLoaderFacto
+
+ void RendererBlinkPlatformImpl::SetDisplayThreadPriority(
+ base::PlatformThreadId thread_id) {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ if (RenderThreadImpl* render_thread = RenderThreadImpl::current()) {
+ render_thread->render_message_filter()->SetThreadPriority(
+ thread_id, base::ThreadPriority::DISPLAY);
+@@ -324,7 +324,7 @@ blink::BlameContext* RendererBlinkPlatformImpl::GetTop
+ }
+
+ blink::WebSandboxSupport* RendererBlinkPlatformImpl::GetSandboxSupport() {
+-#if defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ return sandbox_support_.get();
+ #else
+ // These platforms do not require sandbox support.
diff --git a/devel/electron6/files/patch-content_renderer_renderer__blink__platform__impl.h b/devel/electron6/files/patch-content_renderer_renderer__blink__platform__impl.h
new file mode 100644
index 000000000000..cbd8752fe67f
--- /dev/null
+++ b/devel/electron6/files/patch-content_renderer_renderer__blink__platform__impl.h
@@ -0,0 +1,29 @@
+--- content/renderer/renderer_blink_platform_impl.h.orig 2019-09-16 09:24:24 UTC
++++ content/renderer/renderer_blink_platform_impl.h
+@@ -30,7 +30,7 @@
+ #include "third_party/blink/public/mojom/loader/code_cache.mojom.h"
+ #include "third_party/blink/public/mojom/webdatabase/web_database.mojom.h"
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include "components/services/font/public/cpp/font_loader.h" // nogncheck
+ #include "third_party/skia/include/core/SkRefCnt.h" // nogncheck
+ #endif
+@@ -259,7 +259,7 @@ class CONTENT_EXPORT RendererBlinkPlatformImpl : publi
+ std::unique_ptr<service_manager::Connector> connector_;
+ scoped_refptr<base::SingleThreadTaskRunner> io_runner_;
+
+-#if defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ std::unique_ptr<blink::WebSandboxSupport> sandbox_support_;
+ #endif
+
+@@ -297,7 +297,7 @@ class CONTENT_EXPORT RendererBlinkPlatformImpl : publi
+ std::unique_ptr<blink::WebTransmissionEncodingInfoHandler>
+ web_transmission_encoding_info_handler_;
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ sk_sp<font_service::FontLoader> font_loader_;
+ #endif
+
diff --git a/devel/electron6/files/patch-content_renderer_renderer__main__platform__delegate__linux.cc b/devel/electron6/files/patch-content_renderer_renderer__main__platform__delegate__linux.cc
new file mode 100644
index 000000000000..63558a880f4d
--- /dev/null
+++ b/devel/electron6/files/patch-content_renderer_renderer__main__platform__delegate__linux.cc
@@ -0,0 +1,19 @@
+--- content/renderer/renderer_main_platform_delegate_linux.cc.orig 2019-09-10 10:42:37 UTC
++++ content/renderer/renderer_main_platform_delegate_linux.cc
+@@ -30,6 +30,7 @@ void RendererMainPlatformDelegate::PlatformUninitializ
+ }
+
+ bool RendererMainPlatformDelegate::EnableSandbox() {
++#if !defined(OS_BSD)
+ // The setuid sandbox is started in the zygote process: zygote_main_linux.cc
+ // https://chromium.googlesource.com/chromium/src/+/master/docs/linux_suid_sandbox.md
+ //
+@@ -65,7 +66,7 @@ bool RendererMainPlatformDelegate::EnableSandbox() {
+ CHECK_EQ(errno, EPERM);
+ }
+ #endif // __x86_64__
+-
++#endif // ! OS_BSD
+ return true;
+ }
+
diff --git a/devel/electron6/files/patch-content_shell_BUILD.gn b/devel/electron6/files/patch-content_shell_BUILD.gn
new file mode 100644
index 000000000000..f1c4fb629328
--- /dev/null
+++ b/devel/electron6/files/patch-content_shell_BUILD.gn
@@ -0,0 +1,11 @@
+--- content/shell/BUILD.gn.orig 2019-09-10 11:14:03 UTC
++++ content/shell/BUILD.gn
+@@ -961,7 +961,7 @@ group("content_shell_crash_test") {
+ if (is_win) {
+ data_deps += [ "//build/win:copy_cdb_to_output" ]
+ }
+- if (is_posix) {
++ if (is_posix && !is_bsd) {
+ data_deps += [
+ "//third_party/breakpad:dump_syms",
+ "//third_party/breakpad:minidump_stackwalk",
diff --git a/devel/electron6/files/patch-content_shell_app_shell__main__delegate.cc b/devel/electron6/files/patch-content_shell_app_shell__main__delegate.cc
new file mode 100644
index 000000000000..c25ca57b4a98
--- /dev/null
+++ b/devel/electron6/files/patch-content_shell_app_shell__main__delegate.cc
@@ -0,0 +1,20 @@
+--- content/shell/app/shell_main_delegate.cc.orig 2019-09-10 11:14:03 UTC
++++ content/shell/app/shell_main_delegate.cc
+@@ -170,7 +170,7 @@ bool ShellMainDelegate::BasicStartupComplete(int* exit
+
+ v8_crashpad_support::SetUp();
+ #endif
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ breakpad::SetFirstChanceExceptionHandler(v8::TryHandleWebAssemblyTrapPosix);
+ #endif
+ #if defined(OS_MACOSX)
+@@ -314,7 +314,7 @@ bool ShellMainDelegate::BasicStartupComplete(int* exit
+ }
+
+ void ShellMainDelegate::PreSandboxStartup() {
+-#if defined(ARCH_CPU_ARM_FAMILY) && (defined(OS_ANDROID) || defined(OS_LINUX))
++#if defined(ARCH_CPU_ARM_FAMILY) && (defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_BSD))
+ // Create an instance of the CPU class to parse /proc/cpuinfo and cache
+ // cpu_brand info.
+ base::CPU cpu_info;
diff --git a/devel/electron6/files/patch-content_shell_browser_shell__browser__context.cc b/devel/electron6/files/patch-content_shell_browser_shell__browser__context.cc
new file mode 100644
index 000000000000..0672c8cd4988
--- /dev/null
+++ b/devel/electron6/files/patch-content_shell_browser_shell__browser__context.cc
@@ -0,0 +1,20 @@
+--- content/shell/browser/shell_browser_context.cc.orig 2019-09-10 11:14:03 UTC
++++ content/shell/browser/shell_browser_context.cc
+@@ -32,7 +32,7 @@
+
+ #if defined(OS_WIN)
+ #include "base/base_paths_win.h"
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ #include "base/nix/xdg_util.h"
+ #elif defined(OS_MACOSX)
+ #include "base/base_paths_mac.h"
+@@ -115,7 +115,7 @@ void ShellBrowserContext::InitWhileIOAllowed() {
+ #if defined(OS_WIN)
+ CHECK(base::PathService::Get(base::DIR_LOCAL_APP_DATA, &path_));
+ path_ = path_.Append(std::wstring(L"content_shell"));
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ std::unique_ptr<base::Environment> env(base::Environment::Create());
+ base::FilePath config_dir(
+ base::nix::GetXDGDirectory(env.get(),
diff --git a/devel/electron6/files/patch-content_shell_browser_shell__browser__main__parts.cc b/devel/electron6/files/patch-content_shell_browser_shell__browser__main__parts.cc
new file mode 100644
index 000000000000..b1eee7379aba
--- /dev/null
+++ b/devel/electron6/files/patch-content_shell_browser_shell__browser__main__parts.cc
@@ -0,0 +1,20 @@
+--- content/shell/browser/shell_browser_main_parts.cc.orig 2019-09-10 11:14:03 UTC
++++ content/shell/browser/shell_browser_main_parts.cc
+@@ -48,7 +48,7 @@
+ #if defined(USE_AURA) && defined(USE_X11)
+ #include "ui/events/devices/x11/touch_factory_x11.h" // nogncheck
+ #endif
+-#if !defined(OS_CHROMEOS) && defined(USE_AURA) && defined(OS_LINUX)
++#if !defined(OS_CHROMEOS) && defined(USE_AURA) && (defined(OS_LINUX) || defined(OS_BSD))
+ #include "ui/base/ime/init/input_method_initializer.h"
+ #endif
+ #if defined(OS_CHROMEOS)
+@@ -126,7 +126,7 @@ int ShellBrowserMainParts::PreEarlyInitialization() {
+ #if defined(USE_X11)
+ ui::SetDefaultX11ErrorHandlers();
+ #endif
+-#if !defined(OS_CHROMEOS) && defined(USE_AURA) && defined(OS_LINUX)
++#if !defined(OS_CHROMEOS) && defined(USE_AURA) && (defined(OS_BSD) || defined(OS_LINUX))
+ ui::InitializeInputMethodForTesting();
+ #endif
+ #if defined(OS_ANDROID)
diff --git a/devel/electron6/files/patch-content_shell_browser_web__test_web__test__browser__context.cc b/devel/electron6/files/patch-content_shell_browser_web__test_web__test__browser__context.cc
new file mode 100644
index 000000000000..f988a15f7aee
--- /dev/null
+++ b/devel/electron6/files/patch-content_shell_browser_web__test_web__test__browser__context.cc
@@ -0,0 +1,11 @@
+--- content/shell/browser/web_test/web_test_browser_context.cc.orig 2019-09-10 11:14:03 UTC
++++ content/shell/browser/web_test/web_test_browser_context.cc
+@@ -27,7 +27,7 @@
+
+ #if defined(OS_WIN)
+ #include "base/base_paths_win.h"
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ #include "base/nix/xdg_util.h"
+ #elif defined(OS_MACOSX)
+ #include "base/base_paths_mac.h"
diff --git a/devel/electron6/files/patch-content_shell_browser_web__test_web__test__browser__main__parts.cc b/devel/electron6/files/patch-content_shell_browser_web__test_web__test__browser__main__parts.cc
new file mode 100644
index 000000000000..773a827ec24f
--- /dev/null
+++ b/devel/electron6/files/patch-content_shell_browser_web__test_web__test__browser__main__parts.cc
@@ -0,0 +1,11 @@
+--- content/shell/browser/web_test/web_test_browser_main_parts.cc.orig 2019-09-10 11:14:03 UTC
++++ content/shell/browser/web_test/web_test_browser_main_parts.cc
+@@ -37,7 +37,7 @@
+ #if defined(USE_AURA) && defined(USE_X11)
+ #include "ui/events/devices/x11/touch_factory_x11.h" // nogncheck
+ #endif
+-#if !defined(OS_CHROMEOS) && defined(USE_AURA) && defined(OS_LINUX)
++#if !defined(OS_CHROMEOS) && defined(USE_AURA) && (defined(OS_LINUX) || defined(OS_BSD))
+ #include "ui/base/ime/init/input_method_initializer.h"
+ #endif
+
diff --git a/devel/electron6/files/patch-content_shell_test__runner_test__runner.cc b/devel/electron6/files/patch-content_shell_test__runner_test__runner.cc
new file mode 100644
index 000000000000..097c838a63eb
--- /dev/null
+++ b/devel/electron6/files/patch-content_shell_test__runner_test__runner.cc
@@ -0,0 +1,29 @@
+--- content/shell/test_runner/test_runner.cc.orig 2019-09-10 11:14:03 UTC
++++ content/shell/test_runner/test_runner.cc
+@@ -66,7 +66,7 @@
+ #include "ui/gfx/geometry/size.h"
+ #include "ui/gfx/skia_util.h"
+
+-#if defined(OS_LINUX) || defined(OS_FUCHSIA)
++#if defined(OS_LINUX) || defined(OS_FUCHSIA) || defined(OS_BSD)
+ #include "third_party/blink/public/platform/web_font_render_style.h"
+ #endif
+
+@@ -1538,7 +1538,7 @@ void TestRunner::Reset() {
+ drag_image_.reset();
+
+ blink::WebSecurityPolicy::ClearOriginAccessList();
+-#if defined(OS_LINUX) || defined(OS_FUCHSIA)
++#if defined(OS_LINUX) || defined(OS_FUCHSIA) || defined(OS_BSD)
+ blink::WebFontRenderStyle::SetSubpixelPositioning(false);
+ #endif
+
+@@ -2065,7 +2065,7 @@ void TestRunner::AddOriginAccessAllowListEntry(
+ }
+
+ void TestRunner::SetTextSubpixelPositioning(bool value) {
+-#if defined(OS_LINUX) || defined(OS_FUCHSIA)
++#if defined(OS_LINUX) || defined(OS_FUCHSIA) || defined(OS_BSD)
+ // Since FontConfig doesn't provide a variable to control subpixel
+ // positioning, we'll fall back to setting it globally for all fonts.
+ blink::WebFontRenderStyle::SetSubpixelPositioning(value);
diff --git a/devel/electron6/files/patch-content_test_content__test__suite.cc b/devel/electron6/files/patch-content_test_content__test__suite.cc
new file mode 100644
index 000000000000..c964c5f83822
--- /dev/null
+++ b/devel/electron6/files/patch-content_test_content__test__suite.cc
@@ -0,0 +1,18 @@
+--- content/test/content_test_suite.cc.orig 2019-09-10 10:42:37 UTC
++++ content/test/content_test_suite.cc
+@@ -81,6 +81,7 @@ void ContentTestSuite::Initialize() {
+ // to initialize GL, so don't do it here.
+ base::CommandLine* command_line = base::CommandLine::ForCurrentProcess();
+ bool is_child_process = command_line->HasSwitch(switches::kTestChildProcess);
++#if !defined(OS_BSD)
+ if (!is_child_process) {
+ gl::GLSurfaceTestSupport::InitializeNoExtensionsOneOff();
+ auto* gpu_feature_info = gpu::GetTestGpuThreadHolder()->GetGpuFeatureInfo();
+@@ -88,6 +89,7 @@ void ContentTestSuite::Initialize() {
+ gpu_feature_info->disabled_extensions);
+ gl::init::InitializeExtensionSettingsOneOffPlatform();
+ }
++#endif
+ testing::TestEventListeners& listeners =
+ testing::UnitTest::GetInstance()->listeners();
+ listeners.Append(new TestInitializationListener);
diff --git a/devel/electron6/files/patch-content_utility_utility__blink__platform__with__sandbox__support__impl.cc b/devel/electron6/files/patch-content_utility_utility__blink__platform__with__sandbox__support__impl.cc
new file mode 100644
index 000000000000..58d2bd64c284
--- /dev/null
+++ b/devel/electron6/files/patch-content_utility_utility__blink__platform__with__sandbox__support__impl.cc
@@ -0,0 +1,29 @@
+--- content/utility/utility_blink_platform_with_sandbox_support_impl.cc.orig 2019-09-10 11:14:03 UTC
++++ content/utility/utility_blink_platform_with_sandbox_support_impl.cc
+@@ -8,7 +8,7 @@
+
+ #if defined(OS_MACOSX)
+ #include "content/child/child_process_sandbox_support_impl_mac.h"
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ #include "content/child/child_process_sandbox_support_impl_linux.h"
+ #endif
+
+@@ -17,7 +17,7 @@ namespace content {
+ UtilityBlinkPlatformWithSandboxSupportImpl::
+ UtilityBlinkPlatformWithSandboxSupportImpl(
+ service_manager::Connector* connector) {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ font_loader_ = sk_make_sp<font_service::FontLoader>(connector);
+ SkFontConfigInterface::SetGlobal(font_loader_);
+ sandbox_support_ = std::make_unique<WebSandboxSupportLinux>(font_loader_);
+@@ -31,7 +31,7 @@ UtilityBlinkPlatformWithSandboxSupportImpl::
+
+ blink::WebSandboxSupport*
+ UtilityBlinkPlatformWithSandboxSupportImpl::GetSandboxSupport() {
+-#if defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ return sandbox_support_.get();
+ #else
+ return nullptr;
diff --git a/devel/electron6/files/patch-content_utility_utility__blink__platform__with__sandbox__support__impl.h b/devel/electron6/files/patch-content_utility_utility__blink__platform__with__sandbox__support__impl.h
new file mode 100644
index 000000000000..9c80a85b3294
--- /dev/null
+++ b/devel/electron6/files/patch-content_utility_utility__blink__platform__with__sandbox__support__impl.h
@@ -0,0 +1,24 @@
+--- content/utility/utility_blink_platform_with_sandbox_support_impl.h.orig 2019-09-10 10:42:37 UTC
++++ content/utility/utility_blink_platform_with_sandbox_support_impl.h
+@@ -11,7 +11,7 @@
+ #include "build/build_config.h"
+ #include "third_party/blink/public/platform/platform.h"
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include "components/services/font/public/cpp/font_loader.h" // nogncheck
+ #include "third_party/skia/include/core/SkRefCnt.h" // nogncheck
+ #endif
+@@ -39,10 +39,10 @@ class UtilityBlinkPlatformWithSandboxSupportImpl : pub
+ blink::WebSandboxSupport* GetSandboxSupport() override;
+
+ private:
+-#if defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ std::unique_ptr<blink::WebSandboxSupport> sandbox_support_;
+ #endif
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ sk_sp<font_service::FontLoader> font_loader_;
+ #endif
+
diff --git a/devel/electron6/files/patch-device_bluetooth_BUILD.gn b/devel/electron6/files/patch-device_bluetooth_BUILD.gn
new file mode 100644
index 000000000000..0f528e130c23
--- /dev/null
+++ b/devel/electron6/files/patch-device_bluetooth_BUILD.gn
@@ -0,0 +1,11 @@
+--- device/bluetooth/BUILD.gn.orig 2019-09-10 11:14:03 UTC
++++ device/bluetooth/BUILD.gn
+@@ -274,7 +274,7 @@ component("bluetooth") {
+ ]
+ }
+
+- if (is_chromeos || is_linux) {
++ if (is_chromeos || (is_linux && !is_bsd)) {
+ if (use_dbus) {
+ sources += [
+ "bluez/bluetooth_adapter_bluez.cc",
diff --git a/devel/electron6/files/patch-device_gamepad_gamepad__provider.cc b/devel/electron6/files/patch-device_gamepad_gamepad__provider.cc
new file mode 100644
index 000000000000..afcce8fa7c36
--- /dev/null
+++ b/devel/electron6/files/patch-device_gamepad_gamepad__provider.cc
@@ -0,0 +1,11 @@
+--- device/gamepad/gamepad_provider.cc.orig 2019-09-10 11:14:04 UTC
++++ device/gamepad/gamepad_provider.cc
+@@ -167,7 +167,7 @@ void GamepadProvider::Initialize(std::unique_ptr<Gamep
+
+ if (!polling_thread_)
+ polling_thread_.reset(new base::Thread("Gamepad polling thread"));
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // On Linux, the data fetcher needs to watch file descriptors, so the message
+ // loop needs to be a libevent loop.
+ const base::MessageLoop::Type kMessageLoopType = base::MessageLoop::TYPE_IO;
diff --git a/devel/electron6/files/patch-electron_BUILD.gn b/devel/electron6/files/patch-electron_BUILD.gn
new file mode 100644
index 000000000000..b128040b6ab8
--- /dev/null
+++ b/devel/electron6/files/patch-electron_BUILD.gn
@@ -0,0 +1,53 @@
+--- electron/BUILD.gn.orig 2019-11-05 00:13:02 UTC
++++ electron/BUILD.gn
+@@ -535,6 +535,15 @@ static_library("electron_lib") {
+ sources = filenames.lib_sources
+ set_sources_assignment_filter(sources_assignment_filter)
+
++ if (is_bsd) {
++ sources -= [
++ "atom/common/crash_reporter/crash_reporter_linux.cc",
++ "atom/common/crash_reporter/crash_reporter_linux.h",
++ "atom/common/crash_reporter/linux/crash_dump_handler.cc",
++ "atom/common/crash_reporter/linux/crash_dump_handler.h",
++ ]
++ }
++
+ if (is_component_build) {
+ defines += [ "NODE_SHARED_MODE" ]
+ }
+@@ -601,6 +610,12 @@ static_library("electron_lib") {
+
+ sources += filenames.lib_sources_nss
+ }
++ if (is_bsd) {
++ deps -= [
++ "//third_party/breakpad:client",
++ ]
++ include_dirs -= [ "//third_party/breakpad" ]
++ }
+ if (is_win) {
+ libs += [ "dwmapi.lib" ]
+ deps += [
+@@ -622,6 +637,12 @@ static_library("electron_lib") {
+ ]
+ deps += [ "//third_party/crashpad/crashpad/client" ]
+ }
++ if (is_bsd) {
++ deps += [
++ "//ui/views/controls/webview",
++ "//ui/wm",
++ ]
++ }
+
+ if (enable_pdf) {
+ deps += [ "//pdf" ]
+@@ -1320,7 +1341,7 @@ dist_zip("electron_dist_zip") {
+ ":licenses",
+ ":electron_version",
+ ]
+- if (is_linux) {
++ if (is_linux && !is_bsd) {
+ data_deps += [ "//sandbox/linux:chrome_sandbox" ]
+ }
+ outputs = [
diff --git a/devel/electron6/files/patch-electron_atom_app_atom__main.cc b/devel/electron6/files/patch-electron_atom_app_atom__main.cc
new file mode 100644
index 000000000000..b14434d20224
--- /dev/null
+++ b/devel/electron6/files/patch-electron_atom_app_atom__main.cc
@@ -0,0 +1,35 @@
+--- electron/atom/app/atom_main.cc.orig 2019-09-11 17:30:11 UTC
++++ electron/atom/app/atom_main.cc
+@@ -26,12 +26,12 @@
+ #include "base/win/windows_version.h"
+ #include "content/public/app/sandbox_helper_win.h"
+ #include "sandbox/win/src/sandbox_types.h"
+-#elif defined(OS_LINUX) // defined(OS_WIN)
++#elif defined(OS_LINUX) || defined(OS_BSD) // defined(OS_WIN)
+ #include <unistd.h>
+ #include <cstdio>
+ #include "atom/app/atom_main_delegate.h" // NOLINT
+ #include "content/public/app/content_main.h"
+-#else // defined(OS_LINUX)
++#else // defined(OS_LINUX) || defined(OS_BSD)
+ #include <mach-o/dyld.h>
+ #include <unistd.h>
+ #include <cstdio>
+@@ -168,7 +168,7 @@ int APIENTRY wWinMain(HINSTANCE instance, HINSTANCE, w
+ return content::ContentMain(params);
+ }
+
+-#elif defined(OS_LINUX) // defined(OS_WIN)
++#elif defined(OS_LINUX) || defined(OS_BSD) // defined(OS_WIN)
+
+ int main(int argc, char* argv[]) {
+ FixStdioStreams();
+@@ -189,7 +189,7 @@ int main(int argc, char* argv[]) {
+ return content::ContentMain(params);
+ }
+
+-#else // defined(OS_LINUX)
++#else // defined(OS_LINUX) || defined(OS_BSD)
+
+ int main(int argc, char* argv[]) {
+ FixStdioStreams();
diff --git a/devel/electron6/files/patch-electron_atom_app_atom__main__delegate.cc b/devel/electron6/files/patch-electron_atom_app_atom__main__delegate.cc
new file mode 100644
index 000000000000..d4785efedf83
--- /dev/null
+++ b/devel/electron6/files/patch-electron_atom_app_atom__main__delegate.cc
@@ -0,0 +1,29 @@
+--- electron/atom/app/atom_main_delegate.cc.orig 2019-12-17 00:40:10 UTC
++++ electron/atom/app/atom_main_delegate.cc
+@@ -8,7 +8,7 @@
+ #include <memory>
+ #include <string>
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include <glib.h> // for g_setenv()
+ #endif
+
+@@ -204,7 +204,7 @@ bool AtomMainDelegate::BasicStartupComplete(int* exit_
+ base::win::PinUser32();
+ #endif
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Check for --no-sandbox parameter when running as root.
+ if (getuid() == 0 && IsSandboxEnabled(command_line))
+ LOG(FATAL) << "Running as root without --"
+@@ -229,7 +229,7 @@ void AtomMainDelegate::PostEarlyInitialization(bool is
+ ui::ResourceBundle::GetSharedInstance().GetLocaleFilePath(locale, true);
+ if (!locale_file_path.empty()) {
+ custom_locale = locale;
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ /* When built with USE_GLIB, libcc's GetApplicationLocaleInternal() uses
+ * glib's g_get_language_names(), which keys off of getenv("LC_ALL") */
+ g_setenv("LC_ALL", custom_locale.c_str(), TRUE);
diff --git a/devel/electron6/files/patch-electron_atom_browser_api_atom__api__app.cc b/devel/electron6/files/patch-electron_atom_browser_api_atom__api__app.cc
new file mode 100644
index 000000000000..6a3c8be1cf43
--- /dev/null
+++ b/devel/electron6/files/patch-electron_atom_browser_api_atom__api__app.cc
@@ -0,0 +1,38 @@
+--- electron/atom/browser/api/atom_api_app.cc.orig 2019-09-11 17:30:11 UTC
++++ electron/atom/browser/api/atom_api_app.cc
+@@ -608,7 +608,7 @@ void App::OnWillFinishLaunching() {
+ }
+
+ void App::OnFinishLaunching(const base::DictionaryValue& launch_info) {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Set the application name for audio streams shown in external
+ // applications. Only affects pulseaudio currently.
+ media::AudioManager::SetGlobalAppName(Browser::Get()->GetName());
+@@ -890,7 +890,7 @@ void App::SetPath(mate::Arguments* args,
+ }
+
+ void App::SetDesktopName(const std::string& desktop_name) {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ std::unique_ptr<base::Environment> env(base::Environment::Create());
+ env->SetVar("CHROME_DESKTOP", desktop_name);
+ #endif
+@@ -1400,7 +1400,7 @@ void App::BuildPrototype(v8::Isolate* isolate,
+ .SetMethod("moveToApplicationsFolder", &App::MoveToApplicationsFolder)
+ .SetMethod("isInApplicationsFolder", &App::IsInApplicationsFolder)
+ #endif
+-#if defined(OS_MACOSX) || defined(OS_LINUX)
++#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+ .SetMethod("setAboutPanelOptions",
+ base::Bind(&Browser::SetAboutPanelOptions, browser))
+ .SetMethod("showAboutPanel",
+@@ -1418,7 +1418,7 @@ void App::BuildPrototype(v8::Isolate* isolate,
+ .SetMethod("getJumpListSettings", &App::GetJumpListSettings)
+ .SetMethod("setJumpList", &App::SetJumpList)
+ #endif
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ .SetMethod("isUnityRunning",
+ base::Bind(&Browser::IsUnityRunning, browser))
+ #endif
diff --git a/devel/electron6/files/patch-electron_atom_browser_api_atom__api__web__contents.cc b/devel/electron6/files/patch-electron_atom_browser_api_atom__api__web__contents.cc
new file mode 100644
index 000000000000..47d0a7cb3777
--- /dev/null
+++ b/devel/electron6/files/patch-electron_atom_browser_api_atom__api__web__contents.cc
@@ -0,0 +1,34 @@
+--- electron/atom/browser/api/atom_api_web_contents.cc.orig 2019-12-17 00:40:10 UTC
++++ electron/atom/browser/api/atom_api_web_contents.cc
+@@ -104,11 +104,11 @@
+ #include "ui/base/cocoa/defaults_utils.h"
+ #endif
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include "ui/views/linux_ui/linux_ui.h"
+ #endif
+
+-#if defined(OS_LINUX) || defined(OS_WIN)
++#if defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD)
+ #include "third_party/blink/public/mojom/renderer_preferences.mojom.h"
+ #include "ui/gfx/font_render_params.h"
+ #endif
+@@ -421,7 +421,7 @@ void WebContents::InitWithSessionAndOptions(
+ auto* prefs = web_contents()->GetMutableRendererPrefs();
+ prefs->accept_languages = g_browser_process->GetApplicationLocale();
+
+-#if defined(OS_LINUX) || defined(OS_WIN)
++#if defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD)
+ // Update font settings.
+ static const base::NoDestructor<gfx::FontRenderParams> params(
+ gfx::GetFontRenderParams(gfx::FontRenderParamsQuery(), nullptr));
+@@ -438,7 +438,7 @@ void WebContents::InitWithSessionAndOptions(
+ base::TimeDelta interval;
+ if (ui::TextInsertionCaretBlinkPeriod(&interval))
+ prefs->caret_blink_interval = interval;
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ views::LinuxUI* linux_ui = views::LinuxUI::instance();
+ if (linux_ui)
+ prefs->caret_blink_interval = linux_ui->GetCursorBlinkInterval();
diff --git a/devel/electron6/files/patch-electron_atom_browser_atom__browser__main__parts.cc b/devel/electron6/files/patch-electron_atom_browser_atom__browser__main__parts.cc
new file mode 100644
index 000000000000..e1e251c38488
--- /dev/null
+++ b/devel/electron6/files/patch-electron_atom_browser_atom__browser__main__parts.cc
@@ -0,0 +1,11 @@
+--- electron/atom/browser/atom_browser_main_parts.cc.orig 2019-12-20 06:04:31 UTC
++++ electron/atom/browser/atom_browser_main_parts.cc
+@@ -6,7 +6,7 @@
+
+ #include <utility>
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include <glib.h> // for g_setenv()
+ #endif
+
diff --git a/devel/electron6/files/patch-electron_atom_browser_atom__browser__main__parts__posix.cc b/devel/electron6/files/patch-electron_atom_browser_atom__browser__main__parts__posix.cc
new file mode 100644
index 000000000000..c9129161ffa1
--- /dev/null
+++ b/devel/electron6/files/patch-electron_atom_browser_atom__browser__main__parts__posix.cc
@@ -0,0 +1,20 @@
+--- electron/atom/browser/atom_browser_main_parts_posix.cc.orig 2019-09-11 17:30:11 UTC
++++ electron/atom/browser/atom_browser_main_parts_posix.cc
+@@ -182,6 +182,9 @@ void AtomBrowserMainParts::HandleShutdownSignals() {
+ g_pipe_pid = getpid();
+ g_shutdown_pipe_read_fd = pipefd[0];
+ g_shutdown_pipe_write_fd = pipefd[1];
++#if defined(OS_BSD)
++ const size_t kShutdownDetectorThreadStackSize = 0;
++#else
+ #if !defined(ADDRESS_SANITIZER) && !defined(KEEP_SHADOW_STACKS)
+ const size_t kShutdownDetectorThreadStackSize = PTHREAD_STACK_MIN * 2;
+ #else
+@@ -189,6 +192,7 @@ void AtomBrowserMainParts::HandleShutdownSignals() {
+ // shadow stacks) bloat the stack frames, so we need to increase the stack
+ // size to avoid hitting the guard page.
+ const size_t kShutdownDetectorThreadStackSize = PTHREAD_STACK_MIN * 4;
++#endif
+ #endif
+ // TODO(viettrungluu,willchan): crbug.com/29675 - This currently leaks, so
+ // if you change this, you'll probably need to change the suppression.
diff --git a/devel/electron6/files/patch-electron_atom_browser_atom__paths.h b/devel/electron6/files/patch-electron_atom_browser_atom__paths.h
new file mode 100644
index 000000000000..33d2b2bd68ef
--- /dev/null
+++ b/devel/electron6/files/patch-electron_atom_browser_atom__paths.h
@@ -0,0 +1,11 @@
+--- electron/atom/browser/atom_paths.h.orig 2019-09-11 17:30:11 UTC
++++ electron/atom/browser/atom_paths.h
+@@ -26,7 +26,7 @@ enum {
+ DIR_USER_CACHE, // Directory where user cache can be written.
+ DIR_APP_LOGS, // Directory where app logs live
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ DIR_APP_DATA, // Application Data directory under the user profile.
+ #else
+ DIR_APP_DATA = base::DIR_APP_DATA,
diff --git a/devel/electron6/files/patch-electron_atom_browser_browser.h b/devel/electron6/files/patch-electron_atom_browser_browser.h
new file mode 100644
index 000000000000..9ac8e78ded88
--- /dev/null
+++ b/devel/electron6/files/patch-electron_atom_browser_browser.h
@@ -0,0 +1,33 @@
+--- electron/atom/browser/browser.h.orig 2019-09-11 17:30:11 UTC
++++ electron/atom/browser/browser.h
+@@ -182,7 +182,7 @@ class Browser : public WindowListObserver {
+
+ #endif // defined(OS_MACOSX)
+
+-#if defined(OS_MACOSX) || defined(OS_LINUX)
++#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+ void ShowAboutPanel();
+ void SetAboutPanelOptions(const base::DictionaryValue& options);
+ #endif
+@@ -215,10 +215,10 @@ class Browser : public WindowListObserver {
+ PCWSTR GetAppUserModelID();
+ #endif // defined(OS_WIN)
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Whether Unity launcher is running.
+ bool IsUnityRunning();
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+
+ // Tell the application to open a file.
+ bool OpenFile(const std::string& file_path);
+@@ -301,7 +301,7 @@ class Browser : public WindowListObserver {
+
+ std::unique_ptr<util::Promise> ready_promise_;
+
+-#if defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ base::DictionaryValue about_panel_options_;
+ #endif
+
diff --git a/devel/electron6/files/patch-electron_atom_browser_native__window__views.cc b/devel/electron6/files/patch-electron_atom_browser_native__window__views.cc
new file mode 100644
index 000000000000..e705447b18d6
--- /dev/null
+++ b/devel/electron6/files/patch-electron_atom_browser_native__window__views.cc
@@ -0,0 +1,47 @@
+--- electron/atom/browser/native_window_views.cc.orig 2020-02-21 13:27:02 UTC
++++ electron/atom/browser/native_window_views.cc
+@@ -304,7 +304,7 @@ NativeWindowViews::NativeWindowViews(const mate::Dicti
+ last_window_state_ = ui::SHOW_STATE_NORMAL;
+ #endif
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Listen to move events.
+ aura::Window* window = GetNativeWindow();
+ if (window)
+@@ -320,7 +320,7 @@ NativeWindowViews::~NativeWindowViews() {
+ SetForwardMouseMessages(false);
+ #endif
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ aura::Window* window = GetNativeWindow();
+ if (window)
+ window->RemovePreTargetHandler(this);
+@@ -1229,7 +1229,7 @@ void NativeWindowViews::OnWidgetBoundsChanged(views::W
+ }
+
+ void NativeWindowViews::OnWidgetDestroying(views::Widget* widget) {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ aura::Window* window = GetNativeWindow();
+ if (window)
+ window->RemovePreTargetHandler(this);
+@@ -1322,7 +1322,7 @@ void NativeWindowViews::OnWidgetMove() {
+ void NativeWindowViews::HandleKeyboardEvent(
+ content::WebContents*,
+ const content::NativeWebKeyboardEvent& event) {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ if (event.windows_key_code == ui::VKEY_BROWSER_BACK)
+ NotifyWindowExecuteAppCommand(kBrowserBackward);
+ else if (event.windows_key_code == ui::VKEY_BROWSER_FORWARD)
+@@ -1334,7 +1334,7 @@ void NativeWindowViews::HandleKeyboardEvent(
+ root_view_->HandleKeyEvent(event);
+ }
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ void NativeWindowViews::OnMouseEvent(ui::MouseEvent* event) {
+ if (event->type() != ui::ET_MOUSE_PRESSED)
+ return;
diff --git a/devel/electron6/files/patch-electron_atom_browser_native__window__views.h b/devel/electron6/files/patch-electron_atom_browser_native__window__views.h
new file mode 100644
index 000000000000..c9ca3e4f597b
--- /dev/null
+++ b/devel/electron6/files/patch-electron_atom_browser_native__window__views.h
@@ -0,0 +1,11 @@
+--- electron/atom/browser/native_window_views.h.orig 2019-09-11 17:30:11 UTC
++++ electron/atom/browser/native_window_views.h
+@@ -206,7 +206,7 @@ class NativeWindowViews : public NativeWindow,
+ content::WebContents*,
+ const content::NativeWebKeyboardEvent& event) override;
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // ui::EventHandler:
+ void OnMouseEvent(ui::MouseEvent* event) override;
+ #endif
diff --git a/devel/electron6/files/patch-electron_atom_browser_relauncher__linux.cc b/devel/electron6/files/patch-electron_atom_browser_relauncher__linux.cc
new file mode 100644
index 000000000000..6827f38083dd
--- /dev/null
+++ b/devel/electron6/files/patch-electron_atom_browser_relauncher__linux.cc
@@ -0,0 +1,32 @@
+--- electron/atom/browser/relauncher_linux.cc.orig 2019-09-11 17:30:11 UTC
++++ electron/atom/browser/relauncher_linux.cc
+@@ -6,8 +6,10 @@
+
+ #include <fcntl.h>
+ #include <signal.h>
++#if !defined(__FreeBSD__)
+ #include <sys/prctl.h>
+ #include <sys/signalfd.h>
++#endif
+
+ #include "base/files/file_util.h"
+ #include "base/files/scoped_file.h"
+@@ -26,6 +28,10 @@ void RelauncherSynchronizeWithParent() {
+ base::ScopedFD relauncher_sync_fd(kRelauncherSyncFD);
+ static const auto signum = SIGUSR2;
+
++#if defined(__FreeBSD__)
++ PLOG(ERROR) << "signalfd & prctl";
++ fprintf(stderr, "Not Implemented signalfd & prctl in atom/browser/relauncher_linux.cc");
++#else
+ // send signum to current process when parent process ends.
+ if (HANDLE_EINTR(prctl(PR_SET_PDEATHSIG, signum)) != 0) {
+ PLOG(ERROR) << "prctl";
+@@ -50,6 +56,7 @@ void RelauncherSynchronizeWithParent() {
+
+ // Wait for the parent to exit
+ parentWaiter.Wait();
++#endif
+ }
+
+ int LaunchProgram(const StringVector& relauncher_args,
diff --git a/devel/electron6/files/patch-electron_atom_browser_ui_views_atom__views__delegate.cc b/devel/electron6/files/patch-electron_atom_browser_ui_views_atom__views__delegate.cc
new file mode 100644
index 000000000000..c8d29a85b3cc
--- /dev/null
+++ b/devel/electron6/files/patch-electron_atom_browser_ui_views_atom__views__delegate.cc
@@ -0,0 +1,38 @@
+--- electron/atom/browser/ui/views/atom_views_delegate.cc.orig 2019-11-20 23:42:47 UTC
++++ electron/atom/browser/ui/views/atom_views_delegate.cc
+@@ -9,7 +9,7 @@
+ #include "ui/views/widget/desktop_aura/desktop_native_widget_aura.h"
+ #include "ui/views/widget/native_widget_aura.h"
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include "base/environment.h"
+ #include "base/nix/xdg_util.h"
+ #include "ui/views/linux_ui/linux_ui.h"
+@@ -17,7 +17,7 @@
+
+ namespace {
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ bool IsDesktopEnvironmentUnity() {
+ std::unique_ptr<base::Environment> env(base::Environment::Create());
+ base::nix::DesktopEnvironment desktop_env =
+@@ -53,7 +53,7 @@ void ViewsDelegate::NotifyMenuItemFocused(const base::
+ int item_count,
+ bool has_submenu) {}
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ gfx::ImageSkia* ViewsDelegate::GetDefaultWindowIcon() const {
+ return NULL;
+ }
+@@ -85,7 +85,7 @@ void ViewsDelegate::OnBeforeWidgetInit(
+ }
+
+ bool ViewsDelegate::WindowManagerProvidesTitleBar(bool maximized) {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // On Ubuntu Unity, the system always provides a title bar for maximized
+ // windows.
+ if (!maximized)
diff --git a/devel/electron6/files/patch-electron_atom_browser_ui_views_atom__views__delegate.h b/devel/electron6/files/patch-electron_atom_browser_ui_views_atom__views__delegate.h
new file mode 100644
index 000000000000..b5015d12de1e
--- /dev/null
+++ b/devel/electron6/files/patch-electron_atom_browser_ui_views_atom__views__delegate.h
@@ -0,0 +1,11 @@
+--- electron/atom/browser/ui/views/atom_views_delegate.h.orig 2019-11-20 23:42:47 UTC
++++ electron/atom/browser/ui/views/atom_views_delegate.h
+@@ -40,7 +40,7 @@ class ViewsDelegate : public views::ViewsDelegate {
+ bool IsWindowInMetro(gfx::NativeWindow window) const override;
+ int GetAppbarAutohideEdges(HMONITOR monitor,
+ base::OnceClosure callback) override;
+-#elif defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#elif (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ gfx::ImageSkia* GetDefaultWindowIcon() const override;
+ #endif
+ views::NonClientFrameView* CreateDefaultNonClientFrameView(
diff --git a/devel/electron6/files/patch-electron_atom_browser_ui_views_submenu__button.cc b/devel/electron6/files/patch-electron_atom_browser_ui_views_submenu__button.cc
new file mode 100644
index 000000000000..47a74cfd3b84
--- /dev/null
+++ b/devel/electron6/files/patch-electron_atom_browser_ui_views_submenu__button.cc
@@ -0,0 +1,11 @@
+--- electron/atom/browser/ui/views/submenu_button.cc.orig 2019-09-11 17:30:11 UTC
++++ electron/atom/browser/ui/views/submenu_button.cc
+@@ -25,7 +25,7 @@ SubmenuButton::SubmenuButton(const base::string16& tit
+ : views::MenuButton(gfx::RemoveAcceleratorChar(title, '&', NULL, NULL),
+ menu_button_listener),
+ background_color_(background_color) {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Dont' use native style border.
+ SetBorder(CreateDefaultBorder());
+ #endif
diff --git a/devel/electron6/files/patch-electron_atom_common_api_atom__api__crash__reporter.cc b/devel/electron6/files/patch-electron_atom_common_api_atom__api__crash__reporter.cc
new file mode 100644
index 000000000000..a91984f2570a
--- /dev/null
+++ b/devel/electron6/files/patch-electron_atom_common_api_atom__api__crash__reporter.cc
@@ -0,0 +1,42 @@
+--- electron/atom/common/api/atom_api_crash_reporter.cc.orig 2019-09-11 17:30:11 UTC
++++ electron/atom/common/api/atom_api_crash_reporter.cc
+@@ -35,15 +35,23 @@ struct Converter<CrashReporter::UploadReportResult> {
+ namespace {
+
+ void AddExtraParameter(const std::string& key, const std::string& value) {
++#if !defined(OS_BSD)
+ CrashReporter::GetInstance()->AddExtraParameter(key, value);
++#endif
+ }
+
+ void RemoveExtraParameter(const std::string& key) {
++#if !defined(OS_BSD)
+ CrashReporter::GetInstance()->RemoveExtraParameter(key);
++#endif
+ }
+
+ std::map<std::string, std::string> GetParameters() {
++#if !defined(OS_BSD)
+ return CrashReporter::GetInstance()->GetParameters();
++#else
++ return std::map<std::string, std::string>();
++#endif
+ }
+
+ void Initialize(v8::Local<v8::Object> exports,
+@@ -51,6 +59,7 @@ void Initialize(v8::Local<v8::Object> exports,
+ v8::Local<v8::Context> context,
+ void* priv) {
+ mate::Dictionary dict(context->GetIsolate(), exports);
++#if !defined(OS_BSD)
+ auto reporter = base::Unretained(CrashReporter::GetInstance());
+ dict.SetMethod("start", base::Bind(&CrashReporter::Start, reporter));
+ dict.SetMethod("addExtraParameter", &AddExtraParameter);
+@@ -62,6 +71,7 @@ void Initialize(v8::Local<v8::Object> exports,
+ base::Bind(&CrashReporter::SetUploadToServer, reporter));
+ dict.SetMethod("getUploadToServer",
+ base::Bind(&CrashReporter::GetUploadToServer, reporter));
++#endif
+ }
+
+ } // namespace
diff --git a/devel/electron6/files/patch-electron_atom_common_api_electron__bindings.cc b/devel/electron6/files/patch-electron_atom_common_api_electron__bindings.cc
new file mode 100644
index 000000000000..aa63e211d446
--- /dev/null
+++ b/devel/electron6/files/patch-electron_atom_common_api_electron__bindings.cc
@@ -0,0 +1,11 @@
+--- electron/atom/common/api/electron_bindings.cc.orig 2019-09-11 17:30:11 UTC
++++ electron/atom/common/api/electron_bindings.cc
+@@ -275,7 +275,7 @@ void ElectronBindings::DidReceiveMemoryDump(
+ if (base::GetCurrentProcId() == dump.pid()) {
+ mate::Dictionary dict = mate::Dictionary::CreateEmpty(isolate);
+ const auto& osdump = dump.os_dump();
+-#if defined(OS_LINUX) || defined(OS_WIN)
++#if defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD)
+ dict.Set("residentSet", osdump.resident_set_kb);
+ #endif
+ dict.Set("private", osdump.private_footprint_kb);
diff --git a/devel/electron6/files/patch-electron_atom_common_atom__command__line.cc b/devel/electron6/files/patch-electron_atom_common_atom__command__line.cc
new file mode 100644
index 000000000000..0c8f5e2b86d3
--- /dev/null
+++ b/devel/electron6/files/patch-electron_atom_common_atom__command__line.cc
@@ -0,0 +1,11 @@
+--- electron/atom/common/atom_command_line.cc.orig 2019-09-11 17:30:11 UTC
++++ electron/atom/common/atom_command_line.cc
+@@ -26,7 +26,7 @@ void AtomCommandLine::Init(int argc, base::CommandLine
+ argv_.assign(argv, argv + argc);
+ }
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // static
+ void AtomCommandLine::InitializeFromCommandLine() {
+ argv_ = base::CommandLine::ForCurrentProcess()->argv();
diff --git a/devel/electron6/files/patch-electron_atom_common_atom__command__line.h b/devel/electron6/files/patch-electron_atom_common_atom__command__line.h
new file mode 100644
index 000000000000..94cd2e45806f
--- /dev/null
+++ b/devel/electron6/files/patch-electron_atom_common_atom__command__line.h
@@ -0,0 +1,11 @@
+--- electron/atom/common/atom_command_line.h.orig 2019-09-11 17:30:11 UTC
++++ electron/atom/common/atom_command_line.h
+@@ -21,7 +21,7 @@ class AtomCommandLine {
+
+ static void Init(int argc, base::CommandLine::CharType** argv);
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // On Linux the command line has to be read from base::CommandLine since
+ // it is using zygote.
+ static void InitializeFromCommandLine();
diff --git a/devel/electron6/files/patch-electron_atom_common_crash__reporter_crash__reporter.cc b/devel/electron6/files/patch-electron_atom_common_crash__reporter_crash__reporter.cc
new file mode 100644
index 000000000000..1978ae3dd69c
--- /dev/null
+++ b/devel/electron6/files/patch-electron_atom_common_crash__reporter_crash__reporter.cc
@@ -0,0 +1,14 @@
+--- electron/atom/common/crash_reporter/crash_reporter.cc.orig 2019-09-11 17:30:11 UTC
++++ electron/atom/common/crash_reporter/crash_reporter.cc
+@@ -127,7 +127,11 @@ CrashReporter* CrashReporter::GetInstance() {
+ #endif
+
+ void CrashReporter::StartInstance(const mate::Dictionary& options) {
++#if !defined(OS_BSD)
+ auto* reporter = GetInstance();
++#else
++ CrashReporter *reporter = NULL;
++#endif
+ if (!reporter)
+ return;
+
diff --git a/devel/electron6/files/patch-electron_atom_common_node__bindings.cc b/devel/electron6/files/patch-electron_atom_common_node__bindings.cc
new file mode 100644
index 000000000000..295b1acd6404
--- /dev/null
+++ b/devel/electron6/files/patch-electron_atom_common_node__bindings.cc
@@ -0,0 +1,11 @@
+--- electron/atom/common/node_bindings.cc.orig 2019-11-05 00:13:02 UTC
++++ electron/atom/common/node_bindings.cc
+@@ -210,7 +210,7 @@ void NodeBindings::Initialize() {
+ node::g_standalone_mode = browser_env_ == BROWSER;
+ node::g_upstream_node_mode = false;
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Get real command line in renderer process forked by zygote.
+ if (browser_env_ != BROWSER)
+ AtomCommandLine::InitializeFromCommandLine();
diff --git a/devel/electron6/files/patch-electron_atom_common_node__bindings__linux.cc b/devel/electron6/files/patch-electron_atom_common_node__bindings__linux.cc
new file mode 100644
index 000000000000..79e342e4521d
--- /dev/null
+++ b/devel/electron6/files/patch-electron_atom_common_node__bindings__linux.cc
@@ -0,0 +1,69 @@
+--- electron/atom/common/node_bindings_linux.cc.orig 2019-09-11 17:30:11 UTC
++++ electron/atom/common/node_bindings_linux.cc
+@@ -4,17 +4,31 @@
+
+ #include "atom/common/node_bindings_linux.h"
+
++#if !defined(OS_BSD)
+ #include <sys/epoll.h>
++#else
++#include <errno.h>
++#include <sys/select.h>
++#include <sys/sysctl.h>
++#include <sys/time.h>
++#include <sys/types.h>
++#endif
+
+ namespace atom {
+
+ NodeBindingsLinux::NodeBindingsLinux(BrowserEnvironment browser_env)
++#if !defined(OS_BSD)
+ : NodeBindings(browser_env), epoll_(epoll_create(1)) {
++#else
++ : NodeBindings(browser_env) {
++#endif
++#if !defined(OS_BSD)
+ int backend_fd = uv_backend_fd(uv_loop_);
+ struct epoll_event ev = {0};
+ ev.events = EPOLLIN;
+ ev.data.fd = backend_fd;
+ epoll_ctl(epoll_, EPOLL_CTL_ADD, backend_fd, &ev);
++#endif
+ }
+
+ NodeBindingsLinux::~NodeBindingsLinux() {}
+@@ -37,6 +51,7 @@ void NodeBindingsLinux::OnWatcherQueueChanged(uv_loop_
+ }
+
+ void NodeBindingsLinux::PollEvents() {
++#if !defined(OS_BSD)
+ int timeout = uv_backend_timeout(uv_loop_);
+
+ // Wait for new libuv events.
+@@ -45,6 +60,26 @@ void NodeBindingsLinux::PollEvents() {
+ struct epoll_event ev;
+ r = epoll_wait(epoll_, &ev, 1, timeout);
+ } while (r == -1 && errno == EINTR);
++#else
++ struct timeval tv;
++ int timeout = uv_backend_timeout(uv_loop_);
++ if (timeout != -1) {
++ tv.tv_sec = timeout / 1000;
++ tv.tv_usec = (timeout % 1000) * 1000;
++ }
++
++ fd_set readset;
++ int fd = uv_backend_fd(uv_loop_);
++ FD_ZERO(&readset);
++ FD_SET(fd, &readset);
++
++ // Wait for new libuv events.
++ int r;
++ do {
++ r = select(fd + 1, &readset, nullptr, nullptr,
++ timeout == -1 ? nullptr : &tv);
++ } while (r == -1 && errno == EINTR);
++#endif
+ }
+
+ // static
diff --git a/devel/electron6/files/patch-electron_atom_common_platform__util.h b/devel/electron6/files/patch-electron_atom_common_platform__util.h
new file mode 100644
index 000000000000..392d2155258c
--- /dev/null
+++ b/devel/electron6/files/patch-electron_atom_common_platform__util.h
@@ -0,0 +1,11 @@
+--- electron/atom/common/platform_util.h.orig 2019-09-11 17:30:11 UTC
++++ electron/atom/common/platform_util.h
+@@ -64,7 +64,7 @@ bool GetLoginItemEnabled();
+ bool SetLoginItemEnabled(bool enabled);
+ #endif
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Returns a success flag.
+ // Unlike libgtkui, does *not* use "chromium-browser.desktop" as a fallback.
+ bool GetDesktopName(std::string* setme);
diff --git a/devel/electron6/files/patch-electron_chromium__src_chrome_browser_process__singleton__posix.cc b/devel/electron6/files/patch-electron_chromium__src_chrome_browser_process__singleton__posix.cc
new file mode 100644
index 000000000000..47eb447edf27
--- /dev/null
+++ b/devel/electron6/files/patch-electron_chromium__src_chrome_browser_process__singleton__posix.cc
@@ -0,0 +1,20 @@
+--- electron/chromium_src/chrome/browser/process_singleton_posix.cc.orig 2019-12-17 00:40:10 UTC
++++ electron/chromium_src/chrome/browser/process_singleton_posix.cc
+@@ -95,7 +95,7 @@
+ #include "net/base/network_interfaces.h"
+ #include "ui/base/l10n/l10n_util.h"
+
+-#if defined(TOOLKIT_VIEWS) && defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if defined(TOOLKIT_VIEWS) && ((defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD))
+ #include "ui/views/linux_ui/linux_ui.h"
+ #endif
+
+@@ -862,7 +862,7 @@ ProcessSingleton::NotifyResult ProcessSingleton::Notif
+ // The other process is shutting down, it's safe to start a new process.
+ return PROCESS_NONE;
+ } else if (strncmp(buf, kACKToken, base::size(kACKToken) - 1) == 0) {
+-#if defined(TOOLKIT_VIEWS) && defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if defined(TOOLKIT_VIEWS) && ((defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD))
+ // Likely NULL in unit tests.
+ views::LinuxUI* linux_ui = views::LinuxUI::instance();
+ if (linux_ui)
diff --git a/devel/electron6/files/patch-electron_default__app_default__app.ts b/devel/electron6/files/patch-electron_default__app_default__app.ts
new file mode 100644
index 000000000000..60fd3019ab7e
--- /dev/null
+++ b/devel/electron6/files/patch-electron_default__app_default__app.ts
@@ -0,0 +1,11 @@
+--- electron/default_app/default_app.ts.orig 2019-09-11 17:30:11 UTC
++++ electron/default_app/default_app.ts
+@@ -63,7 +63,7 @@ async function createWindow () {
+ show: false
+ }
+
+- if (process.platform === 'linux') {
++ if (process.platform === 'linux' || process.platform === 'freebsd') {
+ options.icon = path.join(__dirname, 'icon.png')
+ }
+
diff --git a/devel/electron6/files/patch-electron_lib_browser_api_dialog.js b/devel/electron6/files/patch-electron_lib_browser_api_dialog.js
new file mode 100644
index 000000000000..c81502f3649e
--- /dev/null
+++ b/devel/electron6/files/patch-electron_lib_browser_api_dialog.js
@@ -0,0 +1,11 @@
+--- electron/lib/browser/api/dialog.js.orig 2019-09-11 17:30:11 UTC
++++ electron/lib/browser/api/dialog.js
+@@ -28,7 +28,7 @@ const normalizeAccessKey = (text) => {
+ // existing single underscores with a second underscore, replace double
+ // ampersands with a single ampersand, and replace a single ampersand with
+ // a single underscore
+- if (process.platform === 'linux') {
++ if (process.platform === 'linux' || process.platform === 'freebsd') {
+ return text.replace(/_/g, '__').replace(/&(.?)/g, (match, after) => {
+ if (after === '&') return after
+ return `_${after}`
diff --git a/devel/electron6/files/patch-electron_lib_browser_api_menu-item-roles.js b/devel/electron6/files/patch-electron_lib_browser_api_menu-item-roles.js
new file mode 100644
index 000000000000..d35ba80b5fc2
--- /dev/null
+++ b/devel/electron6/files/patch-electron_lib_browser_api_menu-item-roles.js
@@ -0,0 +1,11 @@
+--- electron/lib/browser/api/menu-item-roles.js.orig 2019-09-11 17:30:11 UTC
++++ electron/lib/browser/api/menu-item-roles.js
+@@ -4,7 +4,7 @@ const { app } = require('electron')
+
+ const isMac = process.platform === 'darwin'
+ const isWindows = process.platform === 'win32'
+-const isLinux = process.platform === 'linux'
++const isLinux = (process.platform === 'linux' || process.platform === 'freebsd')
+
+ const roles = {
+ about: {
diff --git a/devel/electron6/files/patch-electron_lib_browser_api_power-monitor.js b/devel/electron6/files/patch-electron_lib_browser_api_power-monitor.js
new file mode 100644
index 000000000000..abb42a25d426
--- /dev/null
+++ b/devel/electron6/files/patch-electron_lib_browser_api_power-monitor.js
@@ -0,0 +1,11 @@
+--- electron/lib/browser/api/power-monitor.js.orig 2019-09-11 17:30:11 UTC
++++ electron/lib/browser/api/power-monitor.js
+@@ -9,7 +9,7 @@ Object.setPrototypeOf(PowerMonitor.prototype, EventEmi
+ EventEmitter.call(powerMonitor)
+
+ // On Linux we need to call blockShutdown() to subscribe to shutdown event.
+-if (process.platform === 'linux') {
++if (process.platform === 'linux' || process.platform === 'freebsd') {
+ powerMonitor.on('newListener', (event) => {
+ if (event === 'shutdown' && powerMonitor.listenerCount('shutdown') === 0) {
+ powerMonitor.blockShutdown()
diff --git a/devel/electron6/files/patch-electron_lib_browser_init.ts b/devel/electron6/files/patch-electron_lib_browser_init.ts
new file mode 100644
index 000000000000..df480c5941f0
--- /dev/null
+++ b/devel/electron6/files/patch-electron_lib_browser_init.ts
@@ -0,0 +1,11 @@
+--- electron/lib/browser/init.ts.orig 2019-09-11 17:30:11 UTC
++++ electron/lib/browser/init.ts
+@@ -174,7 +174,7 @@ const mainStartupScript = packageJson.main || 'index.j
+ const KNOWN_XDG_DESKTOP_VALUES = ['Pantheon', 'Unity:Unity7', 'pop:GNOME']
+
+ function currentPlatformSupportsAppIndicator () {
+- if (process.platform !== 'linux') return false
++ if (process.platform !== 'linux' && process.platform !== 'freebsd') return false
+ const currentDesktop = process.env.XDG_CURRENT_DESKTOP
+
+ if (!currentDesktop) return false
diff --git a/devel/electron6/files/patch-electron_lib_browser_rpc-server.js b/devel/electron6/files/patch-electron_lib_browser_rpc-server.js
new file mode 100644
index 000000000000..9156a71c1539
--- /dev/null
+++ b/devel/electron6/files/patch-electron_lib_browser_rpc-server.js
@@ -0,0 +1,11 @@
+--- electron/lib/browser/rpc-server.js.orig 2019-12-17 00:40:10 UTC
++++ electron/lib/browser/rpc-server.js
+@@ -481,7 +481,7 @@ const allowedClipboardMethods = (() => {
+ switch (process.platform) {
+ case 'darwin':
+ return new Set(['readFindText', 'writeFindText'])
+- case 'linux':
++ case 'linux': case 'freebsd':
+ return new Set(Object.keys(clipboard))
+ default:
+ return new Set()
diff --git a/devel/electron6/files/patch-electron_lib_common_api_clipboard.js b/devel/electron6/files/patch-electron_lib_common_api_clipboard.js
new file mode 100644
index 000000000000..6cb8dda7ee40
--- /dev/null
+++ b/devel/electron6/files/patch-electron_lib_common_api_clipboard.js
@@ -0,0 +1,11 @@
+--- electron/lib/common/api/clipboard.js.orig 2019-09-11 17:30:11 UTC
++++ electron/lib/common/api/clipboard.js
+@@ -14,7 +14,7 @@ if (process.type === 'renderer') {
+ }
+ }
+
+- if (process.platform === 'linux') {
++ if (process.platform === 'linux' || process.platform === 'freebsd') {
+ // On Linux we could not access clipboard in renderer process.
+ for (const method of Object.keys(clipboard)) {
+ clipboard[method] = makeRemoteMethod(method)
diff --git a/devel/electron6/files/patch-electron_script_lib_config.py b/devel/electron6/files/patch-electron_script_lib_config.py
new file mode 100644
index 000000000000..09e1291e98a2
--- /dev/null
+++ b/devel/electron6/files/patch-electron_script_lib_config.py
@@ -0,0 +1,12 @@
+--- electron/script/lib/config.py.orig 2019-12-20 06:16:27 UTC
++++ electron/script/lib/config.py
+@@ -21,6 +21,9 @@ PLATFORM = {
+ 'cygwin': 'win32',
+ 'darwin': 'darwin',
+ 'linux2': 'linux',
++ 'freebsd11': 'freebsd',
++ 'freebsd12': 'freebsd',
++ 'freebsd13': 'freebsd',
+ 'win32': 'win32',
+ }[sys.platform]
+
diff --git a/devel/electron6/files/patch-electron_script_lib_utils.js b/devel/electron6/files/patch-electron_script_lib_utils.js
new file mode 100644
index 000000000000..ac35e2230d58
--- /dev/null
+++ b/devel/electron6/files/patch-electron_script_lib_utils.js
@@ -0,0 +1,11 @@
+--- electron/script/lib/utils.js.orig 2019-12-17 00:40:10 UTC
++++ electron/script/lib/utils.js
+@@ -14,7 +14,7 @@ function getElectronExec () {
+ return `out/${OUT_DIR}/Electron.app/Contents/MacOS/Electron`
+ case 'win32':
+ return `out/${OUT_DIR}/electron.exe`
+- case 'linux':
++ case 'linux': case 'freebsd':
+ return `out/${OUT_DIR}/electron`
+ default:
+ throw new Error('Unknown platform')
diff --git a/devel/electron6/files/patch-electron_script_spec-runner.js b/devel/electron6/files/patch-electron_script_spec-runner.js
new file mode 100644
index 000000000000..56662219674a
--- /dev/null
+++ b/devel/electron6/files/patch-electron_script_spec-runner.js
@@ -0,0 +1,11 @@
+--- electron/script/spec-runner.js.orig 2019-12-20 06:08:27 UTC
++++ electron/script/spec-runner.js
+@@ -114,7 +114,7 @@ async function runElectronTests () {
+ async function runRemoteBasedElectronTests () {
+ let exe = path.resolve(BASE, utils.getElectronExec())
+ const runnerArgs = ['electron/spec', ...unknownArgs.slice(2)]
+- if (process.platform === 'linux') {
++ if (process.platform === 'linux' || process.platform === 'freebsd') {
+ runnerArgs.unshift(path.resolve(__dirname, 'dbus_mock.py'), exe)
+ exe = 'python'
+ }
diff --git a/devel/electron6/files/patch-electron_spec-main_api-app-spec.ts b/devel/electron6/files/patch-electron_spec-main_api-app-spec.ts
new file mode 100644
index 000000000000..f2fe356b3ac3
--- /dev/null
+++ b/devel/electron6/files/patch-electron_spec-main_api-app-spec.ts
@@ -0,0 +1,83 @@
+--- electron/spec-main/api-app-spec.ts.orig 2019-12-17 00:40:10 UTC
++++ electron/spec-main/api-app-spec.ts
+@@ -112,7 +112,7 @@ describe('app module', () => {
+ describe('app.getLocaleCountryCode()', () => {
+ it('should be empty or have length of two', () => {
+ let expectedLength = 2
+- if (isCI && process.platform === 'linux') {
++ if (isCI && (process.platform === 'linux' || process.platform === 'freebsd')) {
+ // Linux CI machines have no locale.
+ expectedLength = 0
+ }
+@@ -172,7 +172,7 @@ describe('app module', () => {
+ })
+
+ it('exits gracefully', async function () {
+- if (!['darwin', 'linux'].includes(process.platform)) {
++ if (!['darwin', 'linux', 'freebsd'].includes(process.platform)) {
+ this.skip()
+ return
+ }
+@@ -515,7 +515,7 @@ describe('app module', () => {
+ describe('app.setBadgeCount', () => {
+ const platformIsNotSupported =
+ (process.platform === 'win32') ||
+- (process.platform === 'linux' && !app.isUnityRunning())
++ ((process.platform === 'linux' || process.platform === 'freebsd') && !app.isUnityRunning())
+ const platformIsSupported = !platformIsNotSupported
+
+ const expectedBadgeCount = 42
+@@ -569,7 +569,7 @@ describe('app module', () => {
+ ]
+
+ before(function () {
+- if (process.platform === 'linux' || process.mas) this.skip()
++ if (process.platform === 'linux' || process.platform === 'freebsd' || process.mas) this.skip()
+ })
+
+ beforeEach(() => {
+@@ -645,7 +645,7 @@ describe('app module', () => {
+ })
+
+ describe('accessibilitySupportEnabled property', () => {
+- if (process.platform === 'linux') return
++ if (process.platform === 'linux' || process.platform === 'freebsd') return
+
+ it('returns whether the Chrome has accessibility APIs enabled', () => {
+ expect(app.accessibilitySupportEnabled).to.be.a('boolean')
+@@ -716,7 +716,7 @@ describe('app module', () => {
+ let w: BrowserWindow
+
+ before(function () {
+- if (process.platform === 'linux') {
++ if (process.platform === 'linux' || process.platform === 'freebsd') {
+ this.skip()
+ }
+ })
+@@ -910,7 +910,7 @@ describe('app module', () => {
+ // doesn't affect nested `describe`s.
+ beforeEach(function () {
+ // FIXME Get these specs running on Linux CI
+- if (process.platform === 'linux' && isCI) {
++ if ((process.platform === 'linux' || process.platform === 'freebsd') && isCI) {
+ this.skip()
+ }
+ })
+@@ -1067,7 +1067,7 @@ describe('app module', () => {
+
+ it('succeeds with complete GPUInfo', async () => {
+ const completeInfo = await getGPUInfo('complete')
+- if (process.platform === 'linux') {
++ if (process.platform === 'linux' || process.platform === 'freebsd') {
+ // For linux and macOS complete info is same as basic info
+ await verifyBasicGPUInfo(completeInfo)
+ const basicInfo = await getGPUInfo('basic')
+@@ -1095,7 +1095,7 @@ describe('app module', () => {
+ const socketPath = process.platform === 'win32' ? '\\\\.\\pipe\\electron-mixed-sandbox' : '/tmp/electron-mixed-sandbox'
+
+ beforeEach(function (done) {
+- if (process.platform === 'linux' && (process.arch === 'arm64' || process.arch === 'arm')) {
++ if ((process.platform === 'linux' || process.platform === 'freebsd') && (process.arch === 'arm64' || process.arch === 'arm')) {
+ // Our ARM tests are run on VSTS rather than CircleCI, and the Docker
+ // setup on VSTS disallows syscalls that Chrome requires for setting up
+ // sandboxing.
diff --git a/devel/electron6/files/patch-electron_spec_api-auto-updater-spec.js b/devel/electron6/files/patch-electron_spec_api-auto-updater-spec.js
new file mode 100644
index 000000000000..f6c3e595b65e
--- /dev/null
+++ b/devel/electron6/files/patch-electron_spec_api-auto-updater-spec.js
@@ -0,0 +1,11 @@
+--- electron/spec/api-auto-updater-spec.js.orig 2019-09-11 17:30:11 UTC
++++ electron/spec/api-auto-updater-spec.js
+@@ -140,7 +140,7 @@ describe('autoUpdater module', function () {
+
+ describe('error event', () => {
+ it('serializes correctly over the remote module', function (done) {
+- if (process.platform === 'linux') {
++ if (process.platform === 'linux' || process.platform === 'freebsd') {
+ // FIXME(alexeykuzmin): Skip the test.
+ // this.skip()
+ return done()
diff --git a/devel/electron6/files/patch-electron_spec_api-browser-window-spec.js b/devel/electron6/files/patch-electron_spec_api-browser-window-spec.js
new file mode 100644
index 000000000000..8e9e369723e2
--- /dev/null
+++ b/devel/electron6/files/patch-electron_spec_api-browser-window-spec.js
@@ -0,0 +1,56 @@
+--- electron/spec/api-browser-window-spec.js.orig 2019-09-11 17:30:11 UTC
++++ electron/spec/api-browser-window-spec.js
+@@ -1219,7 +1219,7 @@ describe('BrowserWindow module', () => {
+ describe('BrowserWindow.setOpacity(opacity)', () => {
+ describe('Windows and Mac', () => {
+ before(function () {
+- if (process.platform === 'linux') {
++ if (process.platform === 'linux' || process.platform === 'freebsd') {
+ this.skip()
+ }
+ })
+@@ -1251,7 +1251,7 @@ describe('BrowserWindow module', () => {
+
+ describe('Linux', () => {
+ before(function () {
+- if (process.platform !== 'linux') {
++ if (process.platform !== 'linux' && process.platform !== 'freebsd') {
+ this.skip()
+ }
+ })
+@@ -1351,7 +1351,7 @@ describe('BrowserWindow module', () => {
+
+ describe('enableLargerThanScreen" option', () => {
+ before(function () {
+- if (process.platform === 'linux') {
++ if (process.platform === 'linux' || process.platform === 'freebsd') {
+ this.skip()
+ }
+ })
+@@ -2028,7 +2028,7 @@ describe('BrowserWindow module', () => {
+ expect(test.version).to.equal(remote.process.version)
+ expect(test.versions).to.deep.equal(remote.process.versions)
+
+- if (process.platform === 'linux' && test.osSandbox) {
++ if ((process.platform === 'linux' || process.platform === 'freebsd') && test.osSandbox) {
+ expect(test.creationTime).to.be.null()
+ expect(test.systemMemoryInfo).to.be.null()
+ } else {
+@@ -2486,7 +2486,7 @@ describe('BrowserWindow module', () => {
+ w.loadFile(path.join(fixtures, 'pages', 'visibilitychange.html'))
+ })
+ it('visibilityState changes when window is minimized', function (done) {
+- if (isCI && process.platform === 'linux') {
++ if (isCI && (process.platform === 'linux' || process.platform === 'freebsd')) {
+ // FIXME(alexeykuzmin): Skip the test instead of marking it as passed.
+ // afterEach hook won't be run if a test is skipped dynamically.
+ // If afterEach isn't run current window won't be destroyed
+@@ -2915,7 +2915,7 @@ describe('BrowserWindow module', () => {
+ // - `.skip()` called in the 'beforeEach' hook prevents 'afterEach'
+ // hook from being called.
+ // Not implemented on Linux.
+- if (process.platform === 'linux') {
++ if (process.platform === 'linux' || process.platform === 'freebsd') {
+ return
+ }
+
diff --git a/devel/electron6/files/patch-electron_spec_api-clipboard-spec.js b/devel/electron6/files/patch-electron_spec_api-clipboard-spec.js
new file mode 100644
index 000000000000..f747b3d14c16
--- /dev/null
+++ b/devel/electron6/files/patch-electron_spec_api-clipboard-spec.js
@@ -0,0 +1,38 @@
+--- electron/spec/api-clipboard-spec.js.orig 2019-09-11 17:30:11 UTC
++++ electron/spec/api-clipboard-spec.js
+@@ -27,7 +27,7 @@ describe('clipboard module', () => {
+ describe('clipboard.readHTML()', () => {
+ it('returns markup correctly', () => {
+ const text = '<string>Hi</string>'
+- const markup = process.platform === 'darwin' ? "<meta charset='utf-8'><string>Hi</string>" : process.platform === 'linux' ? '<meta http-equiv="content-type" ' + 'content="text/html; charset=utf-8"><string>Hi</string>' : '<string>Hi</string>'
++ const markup = process.platform === 'darwin' ? "<meta charset='utf-8'><string>Hi</string>" : (process.platform === 'linux' || process.platform === 'freebsd') ? '<meta http-equiv="content-type" ' + 'content="text/html; charset=utf-8"><string>Hi</string>' : '<string>Hi</string>'
+ clipboard.writeHTML(text)
+ expect(clipboard.readHTML()).to.equal(markup)
+ })
+@@ -43,7 +43,7 @@ describe('clipboard module', () => {
+
+ describe('clipboard.readBookmark', () => {
+ before(function () {
+- if (process.platform === 'linux') {
++ if (process.platform === 'linux' || process.platform === 'freebsd') {
+ this.skip()
+ }
+ })
+@@ -69,7 +69,7 @@ describe('clipboard module', () => {
+ const rtf = '{\\rtf1\\utf8 text}'
+ const p = path.join(fixtures, 'assets', 'logo.png')
+ const i = nativeImage.createFromPath(p)
+- const markup = process.platform === 'darwin' ? "<meta charset='utf-8'><b>Hi</b>" : process.platform === 'linux' ? '<meta http-equiv="content-type" ' + 'content="text/html; charset=utf-8"><b>Hi</b>' : '<b>Hi</b>'
++ const markup = process.platform === 'darwin' ? "<meta charset='utf-8'><b>Hi</b>" : (process.platform === 'linux' || process.platform === 'freebsd') ? '<meta http-equiv="content-type" ' + 'content="text/html; charset=utf-8"><b>Hi</b>' : '<b>Hi</b>'
+ const bookmark = { title: 'a title', url: 'test' }
+ clipboard.write({
+ text: 'test',
+@@ -84,7 +84,7 @@ describe('clipboard module', () => {
+ expect(clipboard.readRTF()).to.equal(rtf)
+ expect(clipboard.readImage().toDataURL()).to.equal(i.toDataURL())
+
+- if (process.platform !== 'linux') {
++ if (process.platform !== 'linux' && process.platform !== 'freebsd') {
+ expect(clipboard.readBookmark()).to.deep.equal(bookmark)
+ }
+ })
diff --git a/devel/electron6/files/patch-electron_spec_api-content-tracing-spec.js b/devel/electron6/files/patch-electron_spec_api-content-tracing-spec.js
new file mode 100644
index 000000000000..821628dbdd35
--- /dev/null
+++ b/devel/electron6/files/patch-electron_spec_api-content-tracing-spec.js
@@ -0,0 +1,11 @@
+--- electron/spec/api-content-tracing-spec.js.orig 2019-09-11 17:30:11 UTC
++++ electron/spec/api-content-tracing-spec.js
+@@ -22,7 +22,7 @@ const getPathInATempFolder = (filename) => {
+ describe('contentTracing', () => {
+ beforeEach(function () {
+ // FIXME: The tests are skipped on arm/arm64.
+- if (process.platform === 'linux' &&
++ if ((process.platform === 'linux' || process.platform === 'freebsd') &&
+ ['arm', 'arm64'].includes(process.arch)) {
+ this.skip()
+ }
diff --git a/devel/electron6/files/patch-electron_spec_api-crash-reporter-spec.js b/devel/electron6/files/patch-electron_spec_api-crash-reporter-spec.js
new file mode 100644
index 000000000000..869cbd03ed16
--- /dev/null
+++ b/devel/electron6/files/patch-electron_spec_api-crash-reporter-spec.js
@@ -0,0 +1,92 @@
+--- electron/spec/api-crash-reporter-spec.js.orig 2019-11-05 00:13:02 UTC
++++ electron/spec/api-crash-reporter-spec.js
+@@ -16,7 +16,7 @@ describe('crashReporter module', () => {
+ if (process.mas || process.env.DISABLE_CRASH_REPORTER_TESTS) return
+
+ // TODO(alexeykuzmin): [Ch66] Fails. Fix it and enable back.
+- if (process.platform === 'linux') return
++ if (process.platform === 'linux' || process.platform === 'freebsd') return
+
+ let originalTempDirectory = null
+ let tempDirectory = null
+@@ -86,7 +86,7 @@ describe('crashReporter module', () => {
+ let dumpFile
+ let crashesDir = crashReporter.getCrashesDirectory()
+ const existingDumpFiles = new Set()
+- if (process.platform !== 'linux') {
++ if (process.platform !== 'linux' && process.platform !== 'freebsd') {
+ // crashpad puts the dump files in the "completed" subdirectory
+ if (process.platform === 'darwin') {
+ crashesDir = path.join(crashesDir, 'completed')
+@@ -97,7 +97,7 @@ describe('crashReporter module', () => {
+ }
+ const testDone = (uploaded) => {
+ if (uploaded) return done(new Error('Uploaded crash report'))
+- if (process.platform !== 'linux') crashReporter.setUploadToServer(true)
++ if (process.platform !== 'linux' && process.platform !== 'freebsd') crashReporter.setUploadToServer(true)
+ assert(fs.existsSync(dumpFile))
+ done()
+ }
+@@ -263,7 +263,7 @@ describe('crashReporter module', () => {
+ assert.throws(() => require('electron').crashReporter.getUploadToServer())
+ })
+ it('returns true when uploadToServer is set to true', function () {
+- if (process.platform === 'linux') {
++ if (process.platform === 'linux' || process.platform === 'freebsd') {
+ // FIXME(alexeykuzmin): Skip the test.
+ // this.skip()
+ return
+@@ -277,7 +277,7 @@ describe('crashReporter module', () => {
+ assert.strictEqual(crashReporter.getUploadToServer(), true)
+ })
+ it('returns false when uploadToServer is set to false', function () {
+- if (process.platform === 'linux') {
++ if (process.platform === 'linux' || process.platform === 'freebsd') {
+ // FIXME(alexeykuzmin): Skip the test.
+ // this.skip()
+ return
+@@ -298,7 +298,7 @@ describe('crashReporter module', () => {
+ assert.throws(() => require('electron').crashReporter.setUploadToServer('arg'))
+ })
+ it('sets uploadToServer false when called with false', function () {
+- if (process.platform === 'linux') {
++ if (process.platform === 'linux' || process.platform === 'freebsd') {
+ // FIXME(alexeykuzmin): Skip the test.
+ // this.skip()
+ return
+@@ -313,7 +313,7 @@ describe('crashReporter module', () => {
+ assert.strictEqual(crashReporter.getUploadToServer(), false)
+ })
+ it('sets uploadToServer true when called with true', function () {
+- if (process.platform === 'linux') {
++ if (process.platform === 'linux' || process.platform === 'freebsd') {
+ // FIXME(alexeykuzmin): Skip the test.
+ // this.skip()
+ return
+@@ -340,7 +340,7 @@ describe('crashReporter module', () => {
+ assert(typeof parameters === 'object')
+ })
+ it('adds a parameter to current parameters', function () {
+- if (process.platform === 'linux') {
++ if (process.platform === 'linux' || process.platform === 'freebsd') {
+ // FIXME(alexeykuzmin): Skip the test.
+ // this.skip()
+ return
+@@ -355,7 +355,7 @@ describe('crashReporter module', () => {
+ assert('hello' in crashReporter.getParameters())
+ })
+ it('removes a parameter from current parameters', function () {
+- if (process.platform === 'linux') {
++ if (process.platform === 'linux' || process.platform === 'freebsd') {
+ // FIXME(alexeykuzmin): Skip the test.
+ // this.skip()
+ return
+@@ -446,7 +446,7 @@ const startServer = ({ callback, processType, done })
+ server.listen(port, '127.0.0.1', () => {
+ port = server.address().port
+ remote.process.port = port
+- if (process.platform !== 'linux') {
++ if (process.platform !== 'linux' && process.platform !== 'freebsd') {
+ crashReporter.start({
+ companyName: 'Umbrella Corporation',
+ submitURL: 'http://127.0.0.1:' + port
diff --git a/devel/electron6/files/patch-electron_spec_api-net-log-spec.js b/devel/electron6/files/patch-electron_spec_api-net-log-spec.js
new file mode 100644
index 000000000000..ad2a9e69b88c
--- /dev/null
+++ b/devel/electron6/files/patch-electron_spec_api-net-log-spec.js
@@ -0,0 +1,29 @@
+--- electron/spec/api-net-log-spec.js.orig 2019-09-11 17:30:11 UTC
++++ electron/spec/api-net-log-spec.js
+@@ -127,7 +127,7 @@ describe('netLog module', () => {
+ })
+
+ it('should begin and end logging automatically when --log-net-log is passed', done => {
+- if (isCI && process.platform === 'linux') {
++ if (isCI && (process.platform === 'linux' || process.platform === 'freebsd')) {
+ done()
+ return
+ }
+@@ -148,7 +148,7 @@ describe('netLog module', () => {
+
+ // FIXME(deepak1556): Ch69 follow up.
+ it('should begin and end logging automtically when --log-net-log is passed, and behave correctly when .startLogging() and .stopLogging() is called', done => {
+- if (isCI && process.platform === 'linux') {
++ if (isCI && (process.platform === 'linux' || process.platform === 'freebsd')) {
+ done()
+ return
+ }
+@@ -171,7 +171,7 @@ describe('netLog module', () => {
+ })
+
+ it('should end logging automatically when only .startLogging() is called', done => {
+- if (isCI && process.platform === 'linux') {
++ if (isCI && (process.platform === 'linux' || process.platform === 'freebsd')) {
+ done()
+ return
+ }
diff --git a/devel/electron6/files/patch-electron_spec_api-notification-dbus-spec.js b/devel/electron6/files/patch-electron_spec_api-notification-dbus-spec.js
new file mode 100644
index 000000000000..b0ad9c1fbb79
--- /dev/null
+++ b/devel/electron6/files/patch-electron_spec_api-notification-dbus-spec.js
@@ -0,0 +1,11 @@
+--- electron/spec/api-notification-dbus-spec.js.orig 2019-12-17 00:40:10 UTC
++++ electron/spec/api-notification-dbus-spec.js
+@@ -13,7 +13,7 @@ const Promise = require('bluebird')
+ const { remote } = require('electron')
+ const { app } = remote
+
+-const skip = process.platform !== 'linux' ||
++const skip = process.platform !== 'linux' || process.platform !== 'freebsd' ||
+ process.arch === 'ia32' ||
+ process.arch.indexOf('arm') === 0 ||
+ !process.env.DBUS_SESSION_BUS_ADDRESS;
diff --git a/devel/electron6/files/patch-electron_spec_api-power-monitor-spec.js b/devel/electron6/files/patch-electron_spec_api-power-monitor-spec.js
new file mode 100644
index 000000000000..1a18a65aed3d
--- /dev/null
+++ b/devel/electron6/files/patch-electron_spec_api-power-monitor-spec.js
@@ -0,0 +1,11 @@
+--- electron/spec/api-power-monitor-spec.js.orig 2019-09-11 17:30:11 UTC
++++ electron/spec/api-power-monitor-spec.js
+@@ -14,7 +14,7 @@ const Promise = require('bluebird')
+ const { expect } = chai
+ chai.use(dirtyChai)
+
+-const skip = process.platform !== 'linux' || !process.env.DBUS_SYSTEM_BUS_ADDRESS
++const skip = (process.platform !== 'linux' && process.platform !== 'freebsd') || !process.env.DBUS_SYSTEM_BUS_ADDRESS
+
+ describe('powerMonitor', () => {
+ let logindMock, dbusMockPowerMonitor, getCalls, emitSignal, reset
diff --git a/devel/electron6/files/patch-electron_spec_api-process-spec.js b/devel/electron6/files/patch-electron_spec_api-process-spec.js
new file mode 100644
index 000000000000..79c6a2955e09
--- /dev/null
+++ b/devel/electron6/files/patch-electron_spec_api-process-spec.js
@@ -0,0 +1,11 @@
+--- electron/spec/api-process-spec.js.orig 2019-09-11 17:30:11 UTC
++++ electron/spec/api-process-spec.js
+@@ -42,7 +42,7 @@ describe('process module', () => {
+ it('resolves promise successfully with valid data', async () => {
+ const memoryInfo = await process.getProcessMemoryInfo()
+ expect(memoryInfo).to.be.an('object')
+- if (process.platform === 'linux' || process.platform === 'windows') {
++ if (process.platform === 'linux' || process.platform === 'freebsd' || process.platform === 'windows') {
+ expect(memoryInfo.residentSet).to.be.a('number').greaterThan(0)
+ }
+ expect(memoryInfo.private).to.be.a('number').greaterThan(0)
diff --git a/devel/electron6/files/patch-electron_spec_api-screen-spec.js b/devel/electron6/files/patch-electron_spec_api-screen-spec.js
new file mode 100644
index 000000000000..6c4979cb0fec
--- /dev/null
+++ b/devel/electron6/files/patch-electron_spec_api-screen-spec.js
@@ -0,0 +1,38 @@
+--- electron/spec/api-screen-spec.js.orig 2019-09-11 17:30:11 UTC
++++ electron/spec/api-screen-spec.js
+@@ -17,7 +17,7 @@ describe('screen module', () => {
+ })
+
+ it('has the correct non-object properties', function () {
+- if (process.platform === 'linux') this.skip()
++ if (process.platform === 'linux' || process.platform === 'freebsd') this.skip()
+ const display = screen.getPrimaryDisplay()
+
+ expect(display).to.have.a.property('scaleFactor').that.is.a('number')
+@@ -33,7 +33,7 @@ describe('screen module', () => {
+ })
+
+ it('has a size object property', function () {
+- if (process.platform === 'linux') this.skip()
++ if (process.platform === 'linux' || process.platform === 'freebsd') this.skip()
+ const display = screen.getPrimaryDisplay()
+
+ expect(display).to.have.a.property('size').that.is.an('object')
+@@ -43,7 +43,7 @@ describe('screen module', () => {
+ })
+
+ it('has a workAreaSize object property', function () {
+- if (process.platform === 'linux') this.skip()
++ if (process.platform === 'linux' || process.platform === 'freebsd') this.skip()
+ const display = screen.getPrimaryDisplay()
+
+ expect(display).to.have.a.property('workAreaSize').that.is.an('object')
+@@ -53,7 +53,7 @@ describe('screen module', () => {
+ })
+
+ it('has a bounds object property', function () {
+- if (process.platform === 'linux') this.skip()
++ if (process.platform === 'linux' || process.platform === 'freebsd') this.skip()
+ const display = screen.getPrimaryDisplay()
+
+ expect(display).to.have.a.property('bounds').that.is.an('object')
diff --git a/devel/electron6/files/patch-electron_spec_api-shell-spec.js b/devel/electron6/files/patch-electron_spec_api-shell-spec.js
new file mode 100644
index 000000000000..cb44d036b138
--- /dev/null
+++ b/devel/electron6/files/patch-electron_spec_api-shell-spec.js
@@ -0,0 +1,34 @@
+--- electron/spec/api-shell-spec.js.orig 2019-09-11 17:30:11 UTC
++++ electron/spec/api-shell-spec.js
+@@ -37,7 +37,7 @@ describe('shell module', () => {
+ await closeWindow(w)
+ w = null
+ // reset env vars to prevent side effects
+- if (process.platform === 'linux') {
++ if (process.platform === 'linux' || process.platform === 'freebsd') {
+ process.env.DE = envVars.de
+ process.env.BROWSER = envVars.browser
+ process.env.DISPLAY = envVars.display
+@@ -52,6 +52,11 @@ describe('shell module', () => {
+ process.env.DE = 'generic'
+ process.env.DISPLAY = ''
+ requestReceived = Promise.resolve()
++ } else if (process.platform === 'freebsd') {
++ process.env.BROWSER = '/usr/bin/true'
++ process.env.DE = 'generic'
++ process.env.DISPLAY = ''
++ requestReceived = Promise.resolve()
+ } else if (process.platform === 'darwin') {
+ // On the Mac CI machines, Safari tries to ask for a password to the
+ // code signing keychain we set up to test code signing (see
+@@ -79,6 +84,10 @@ describe('shell module', () => {
+ if (process.platform === 'linux') {
+ process.env.DE = 'generic'
+ process.env.DE = '/bin/true'
++ process.env.DISPLAY = ''
++ } else if (process.platform === 'freebsd') {
++ process.env.BROWSER = '/usr/bin/true'
++ process.env.DE = 'generic'
+ process.env.DISPLAY = ''
+ }
+
diff --git a/devel/electron6/files/patch-electron_spec_chromium-spec.js b/devel/electron6/files/patch-electron_spec_chromium-spec.js
new file mode 100644
index 000000000000..4fad0d2a9c44
--- /dev/null
+++ b/devel/electron6/files/patch-electron_spec_chromium-spec.js
@@ -0,0 +1,27 @@
+--- electron/spec/chromium-spec.js.orig 2019-11-20 23:42:47 UTC
++++ electron/spec/chromium-spec.js
+@@ -866,7 +866,7 @@ describe('chromium feature', () => {
+ })
+
+ it('can be get as context in canvas', () => {
+- if (process.platform === 'linux') {
++ if (process.platform === 'linux' || process.platform === 'freebsd') {
+ // FIXME(alexeykuzmin): Skip the test.
+ // this.skip()
+ return
+@@ -1550,12 +1550,13 @@ describe('font fallback', () => {
+ expect(fonts[0].familyName).to.equal({
+ 'win32': 'Arial',
+ 'darwin': 'Helvetica',
+- 'linux': 'DejaVu Sans' // I think this depends on the distro? We don't specify a default.
++ 'linux': 'DejaVu Sans', // I think this depends on the distro? We don't specify a default.
++ 'freebsd': 'DejaVu Sans'
+ }[process.platform])
+ })
+
+ it('should fall back to Japanese font for sans-serif Japanese script', async function () {
+- if (process.platform === 'linux') {
++ if (process.platform === 'linux' || process.platform === 'freebsd') {
+ return this.skip()
+ }
+ const html = `
diff --git a/devel/electron6/files/patch-electron_spec_fixtures_api_crash-restart.html b/devel/electron6/files/patch-electron_spec_fixtures_api_crash-restart.html
new file mode 100644
index 000000000000..f5fa58fca19f
--- /dev/null
+++ b/devel/electron6/files/patch-electron_spec_fixtures_api_crash-restart.html
@@ -0,0 +1,11 @@
+--- electron/spec/fixtures/api/crash-restart.html.orig 2019-12-20 06:13:48 UTC
++++ electron/spec/fixtures/api/crash-restart.html
+@@ -19,7 +19,7 @@ crashReporter.start({
+ })
+
+ setImmediate(() => {
+- if (process.platform !== 'linux') {
++ if (process.platform !== 'linux' && process.platform !== 'freebsd') {
+ crashReporter.addExtraParameter('extra2', 'extra2')
+ crashReporter.removeExtraParameter('extra3')
+ } else {
diff --git a/devel/electron6/files/patch-electron_spec_node-spec.js b/devel/electron6/files/patch-electron_spec_node-spec.js
new file mode 100644
index 000000000000..d2dba41064db
--- /dev/null
+++ b/devel/electron6/files/patch-electron_spec_node-spec.js
@@ -0,0 +1,11 @@
+--- electron/spec/node-spec.js.orig 2019-09-16 09:55:33 UTC
++++ electron/spec/node-spec.js
+@@ -157,7 +157,7 @@ describe('node feature', () => {
+ })
+
+ describe('child_process.exec', () => {
+- (process.platform === 'linux' ? it : it.skip)('allows executing a setuid binary from non-sandboxed renderer', () => {
++ (process.platform === 'linux' || process.platform === 'freebsd' ? it : it.skip)('allows executing a setuid binary from non-sandboxed renderer', () => {
+ // Chrome uses prctl(2) to set the NO_NEW_PRIVILEGES flag on Linux (see
+ // https://github.com/torvalds/linux/blob/40fde647cc/Documentation/userspace-api/no_new_privs.rst).
+ // We disable this for unsandboxed processes, which the remote tests
diff --git a/devel/electron6/files/patch-electron_spec_version-bump-spec.js b/devel/electron6/files/patch-electron_spec_version-bump-spec.js
new file mode 100644
index 000000000000..85c9e268fc5f
--- /dev/null
+++ b/devel/electron6/files/patch-electron_spec_version-bump-spec.js
@@ -0,0 +1,11 @@
+--- electron/spec/version-bump-spec.js.orig 2019-09-11 17:30:11 UTC
++++ electron/spec/version-bump-spec.js
+@@ -51,7 +51,7 @@ describeFn('bump-version script', () => {
+ const betaPattern = /[0-9.]*(-beta[0-9.]*)/g
+
+ before(function () {
+- if (process.platform === 'linux' && process.arch === 'arm') {
++ if ((process.platform === 'linux' || process.platform === 'freebsd') && process.arch === 'arm') {
+ this.skip()
+ }
+ })
diff --git a/devel/electron6/files/patch-extensions_browser_api_declarative__webrequest_webrequest__action.cc b/devel/electron6/files/patch-extensions_browser_api_declarative__webrequest_webrequest__action.cc
new file mode 100644
index 000000000000..d74f371a9e87
--- /dev/null
+++ b/devel/electron6/files/patch-extensions_browser_api_declarative__webrequest_webrequest__action.cc
@@ -0,0 +1,14 @@
+--- extensions/browser/api/declarative_webrequest/webrequest_action.cc.orig 2019-09-10 11:14:04 UTC
++++ extensions/browser/api/declarative_webrequest/webrequest_action.cc
+@@ -29,7 +29,11 @@
+ #include "extensions/common/extension.h"
+ #include "net/base/registry_controlled_domains/registry_controlled_domain.h"
+ #include "net/http/http_util.h"
++#if defined(OS_BSD)
++#include <re2/re2.h>
++#else
+ #include "third_party/re2/src/re2/re2.h"
++#endif
+
+ using content::ResourceRequestInfo;
+ using extension_web_request_api_helpers::EventResponseDelta;
diff --git a/devel/electron6/files/patch-extensions_browser_api_messaging_message__service.cc b/devel/electron6/files/patch-extensions_browser_api_messaging_message__service.cc
new file mode 100644
index 000000000000..059b8a7f9074
--- /dev/null
+++ b/devel/electron6/files/patch-extensions_browser_api_messaging_message__service.cc
@@ -0,0 +1,34 @@
+--- extensions/browser/api/messaging/message_service.cc.orig 2019-09-10 11:14:04 UTC
++++ extensions/browser/api/messaging/message_service.cc
+@@ -61,7 +61,7 @@ namespace {
+
+ const char kReceivingEndDoesntExistError[] =
+ "Could not establish connection. Receiving end does not exist.";
+-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+ const char kMissingPermissionError[] =
+ "Access to native messaging requires nativeMessaging permission.";
+ const char kProhibitedByPoliciesError[] =
+@@ -383,7 +383,7 @@ void MessageService::OpenChannelToNativeApp(
+ if (!opener_port->IsValidPort())
+ return;
+
+-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+ bool has_permission = extension->permissions_data()->HasAPIPermission(
+ APIPermission::kNativeMessaging);
+ if (!has_permission) {
+@@ -433,11 +433,11 @@ void MessageService::OpenChannelToNativeApp(
+ channel->opener->IncrementLazyKeepaliveCount();
+
+ AddChannel(std::move(channel), receiver_port_id);
+-#else // !(defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX))
++#else // !(defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD))
+ const char kNativeMessagingNotSupportedError[] =
+ "Native Messaging is not supported on this platform.";
+ opener_port->DispatchOnDisconnect(kNativeMessagingNotSupportedError);
+-#endif // !(defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX))
++#endif // !(defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD))
+ }
+
+ void MessageService::OpenChannelToTab(const ChannelEndpoint& source,
diff --git a/devel/electron6/files/patch-extensions_browser_api_networking__private_networking__private__delegate__factory.cc b/devel/electron6/files/patch-extensions_browser_api_networking__private_networking__private__delegate__factory.cc
new file mode 100644
index 000000000000..9533cc1a277e
--- /dev/null
+++ b/devel/electron6/files/patch-extensions_browser_api_networking__private_networking__private__delegate__factory.cc
@@ -0,0 +1,20 @@
+--- extensions/browser/api/networking_private/networking_private_delegate_factory.cc.orig 2019-09-10 10:42:38 UTC
++++ extensions/browser/api/networking_private/networking_private_delegate_factory.cc
+@@ -11,7 +11,7 @@
+
+ #if defined(OS_CHROMEOS)
+ #include "extensions/browser/api/networking_private/networking_private_chromeos.h"
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ #include "extensions/browser/api/networking_private/networking_private_linux.h"
+ #elif defined(OS_WIN) || defined(OS_MACOSX)
+ #include "components/wifi/wifi_service.h"
+@@ -61,7 +61,7 @@ KeyedService* NetworkingPrivateDelegateFactory::BuildS
+ NetworkingPrivateDelegate* delegate;
+ #if defined(OS_CHROMEOS)
+ delegate = new NetworkingPrivateChromeOS(browser_context);
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ delegate = new NetworkingPrivateLinux();
+ #elif defined(OS_WIN) || defined(OS_MACOSX)
+ std::unique_ptr<wifi::WiFiService> wifi_service(wifi::WiFiService::Create());
diff --git a/devel/electron6/files/patch-extensions_browser_api_web__request_form__data__parser.cc b/devel/electron6/files/patch-extensions_browser_api_web__request_form__data__parser.cc
new file mode 100644
index 000000000000..cf2c5fdd52f8
--- /dev/null
+++ b/devel/electron6/files/patch-extensions_browser_api_web__request_form__data__parser.cc
@@ -0,0 +1,14 @@
+--- extensions/browser/api/web_request/form_data_parser.cc.orig 2019-09-10 11:14:04 UTC
++++ extensions/browser/api/web_request/form_data_parser.cc
+@@ -15,7 +15,11 @@
+ #include "base/values.h"
+ #include "net/base/escape.h"
+ #include "net/http/http_request_headers.h"
++#if defined(OS_BSD)
++#include <re2/re2.h>
++#else
+ #include "third_party/re2/src/re2/re2.h"
++#endif
+
+ using base::DictionaryValue;
+ using base::ListValue;
diff --git a/devel/electron6/files/patch-extensions_browser_browser__context__keyed__service__factories.cc b/devel/electron6/files/patch-extensions_browser_browser__context__keyed__service__factories.cc
new file mode 100644
index 000000000000..b7f950a21f60
--- /dev/null
+++ b/devel/electron6/files/patch-extensions_browser_browser__context__keyed__service__factories.cc
@@ -0,0 +1,11 @@
+--- extensions/browser/browser_context_keyed_service_factories.cc.orig 2019-09-10 10:42:38 UTC
++++ extensions/browser/browser_context_keyed_service_factories.cc
+@@ -84,7 +84,7 @@ void EnsureBrowserContextKeyedServiceFactoriesBuilt()
+ #if defined(OS_CHROMEOS)
+ NetworkingConfigServiceFactory::GetInstance();
+ #endif
+-#if defined(OS_LINUX) || defined(OS_WIN) || defined(OS_MACOSX)
++#if defined(OS_LINUX) || defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_BSD)
+ NetworkingPrivateEventRouterFactory::GetInstance();
+ #endif
+ PowerAPI::GetFactoryInstance();
diff --git a/devel/electron6/files/patch-extensions_common_api___permission__features.json b/devel/electron6/files/patch-extensions_common_api___permission__features.json
new file mode 100644
index 000000000000..c5f0c7eaf0be
--- /dev/null
+++ b/devel/electron6/files/patch-extensions_common_api___permission__features.json
@@ -0,0 +1,29 @@
+--- extensions/common/api/_permission_features.json.orig 2019-09-10 11:14:04 UTC
++++ extensions/common/api/_permission_features.json
+@@ -135,7 +135,7 @@
+ {
+ "channel": "stable",
+ "extension_types": ["platform_app"],
+- "platforms": ["chromeos", "win", "mac", "linux"],
++ "platforms": ["chromeos", "win", "mac", "linux", "bsd"],
+ "whitelist": [
+ "1C93BD3CF875F4A73C0B2A163BB8FBDA8B8B3D80", // http://crbug.com/387169
+ "A3BC37E2148AC4E99BE4B16AF9D42DD1E592BBBE", // http://crbug.com/387169
+@@ -469,7 +469,7 @@
+ }, {
+ "channel": "stable",
+ "extension_types": ["extension", "legacy_packaged_app", "platform_app"],
+- "platforms": ["chromeos", "mac", "win", "linux"],
++ "platforms": ["chromeos", "mac", "win", "linux", "bsd"],
+ "whitelist": [
+ "0DE0F05680A4A056BCEC864ED8DDA84296F82B40", // http://crbug.com/434651
+ "1C93BD3CF875F4A73C0B2A163BB8FBDA8B8B3D80", // http://crbug.com/293683
+@@ -500,7 +500,7 @@
+ "networkingPrivate": {
+ "channel": "stable",
+ "extension_types": ["extension", "legacy_packaged_app", "platform_app"],
+- "platforms": ["chromeos", "mac", "win", "linux"],
++ "platforms": ["chromeos", "mac", "win", "linux", "bsd"],
+ "whitelist": [
+ // DO NOT ADD ANY MORE ENTRIES HERE.
+ // networkingPrivate is being migrated to networking.onc.
diff --git a/devel/electron6/files/patch-extensions_common_api_runtime.json b/devel/electron6/files/patch-extensions_common_api_runtime.json
new file mode 100644
index 000000000000..06144fcc2350
--- /dev/null
+++ b/devel/electron6/files/patch-extensions_common_api_runtime.json
@@ -0,0 +1,11 @@
+--- extensions/common/api/runtime.json.orig 2019-09-10 10:42:38 UTC
++++ extensions/common/api/runtime.json
+@@ -67,7 +67,7 @@
+ "id": "PlatformOs",
+ "type": "string",
+ "description": "The operating system chrome is running on.",
+- "enum": ["mac", "win", "android", "cros", "linux", "openbsd"]
++ "enum": ["mac", "win", "android", "cros", "linux", "freebsd", "openbsd"]
+ },
+ {
+ "id": "PlatformArch",
diff --git a/devel/electron6/files/patch-extensions_common_feature__switch.cc b/devel/electron6/files/patch-extensions_common_feature__switch.cc
new file mode 100644
index 000000000000..c7ac2f0611d4
--- /dev/null
+++ b/devel/electron6/files/patch-extensions_common_feature__switch.cc
@@ -0,0 +1,14 @@
+--- extensions/common/feature_switch.cc.orig 2019-09-10 11:14:04 UTC
++++ extensions/common/feature_switch.cc
+@@ -44,11 +44,7 @@ class CommonSwitches {
+ FeatureSwitch::DEFAULT_ENABLED),
+ load_media_router_component_extension(
+ kLoadMediaRouterComponentExtensionFlag,
+-#if defined(GOOGLE_CHROME_BUILD)
+ FeatureSwitch::DEFAULT_ENABLED)
+-#else
+- FeatureSwitch::DEFAULT_DISABLED)
+-#endif // defined(GOOGLE_CHROME_BUILD)
+ {
+ }
+
diff --git a/devel/electron6/files/patch-extensions_common_features_feature.cc b/devel/electron6/files/patch-extensions_common_features_feature.cc
new file mode 100644
index 000000000000..1ad77162cc2e
--- /dev/null
+++ b/devel/electron6/files/patch-extensions_common_features_feature.cc
@@ -0,0 +1,11 @@
+--- extensions/common/features/feature.cc.orig 2019-09-10 10:42:38 UTC
++++ extensions/common/features/feature.cc
+@@ -20,7 +20,7 @@ namespace extensions {
+ Feature::Platform Feature::GetCurrentPlatform() {
+ #if defined(OS_CHROMEOS)
+ return CHROMEOS_PLATFORM;
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ return LINUX_PLATFORM;
+ #elif defined(OS_MACOSX)
+ return MACOSX_PLATFORM;
diff --git a/devel/electron6/files/patch-extensions_common_image__util.cc b/devel/electron6/files/patch-extensions_common_image__util.cc
new file mode 100644
index 000000000000..e6cf91786183
--- /dev/null
+++ b/devel/electron6/files/patch-extensions_common_image__util.cc
@@ -0,0 +1,14 @@
+--- extensions/common/image_util.cc.orig 2019-09-10 11:14:04 UTC
++++ extensions/common/image_util.cc
+@@ -18,7 +18,11 @@
+ #include "base/strings/stringprintf.h"
+ #include "base/time/time.h"
+ #include "base/timer/elapsed_timer.h"
++#if defined(OS_BSD)
++#include <re2/re2.h>
++#else
+ #include "third_party/re2/src/re2/re2.h"
++#endif // defined(OS_BSD)
+ #include "third_party/skia/include/core/SkBitmap.h"
+ #include "third_party/skia/include/core/SkCanvas.h"
+ #include "third_party/skia/include/core/SkColor.h"
diff --git a/devel/electron6/files/patch-extensions_common_stack__frame.cc b/devel/electron6/files/patch-extensions_common_stack__frame.cc
new file mode 100644
index 000000000000..3244ed918012
--- /dev/null
+++ b/devel/electron6/files/patch-extensions_common_stack__frame.cc
@@ -0,0 +1,14 @@
+--- extensions/common/stack_frame.cc.orig 2019-09-10 10:42:38 UTC
++++ extensions/common/stack_frame.cc
+@@ -7,7 +7,11 @@
+ #include <string>
+
+ #include "base/strings/utf_string_conversions.h"
++#if defined(OS_BSD)
++#include <re2/re2.h>
++#else
+ #include "third_party/re2/src/re2/re2.h"
++#endif
+
+ namespace extensions {
+
diff --git a/devel/electron6/files/patch-extensions_renderer_bindings_api__binding__util.cc b/devel/electron6/files/patch-extensions_renderer_bindings_api__binding__util.cc
new file mode 100644
index 000000000000..3166c6ab2d77
--- /dev/null
+++ b/devel/electron6/files/patch-extensions_renderer_bindings_api__binding__util.cc
@@ -0,0 +1,11 @@
+--- extensions/renderer/bindings/api_binding_util.cc.orig 2019-09-10 10:42:38 UTC
++++ extensions/renderer/bindings/api_binding_util.cc
+@@ -129,6 +129,8 @@ std::string GetPlatformString() {
+ return "mac";
+ #elif defined(OS_WIN)
+ return "win";
++#elif defined(OS_BSD)
++ return "bsd";
+ #else
+ NOTREACHED();
+ return std::string();
diff --git a/devel/electron6/files/patch-extensions_shell_app_shell__main__delegate.cc b/devel/electron6/files/patch-extensions_shell_app_shell__main__delegate.cc
new file mode 100644
index 000000000000..127e04ef20b8
--- /dev/null
+++ b/devel/electron6/files/patch-extensions_shell_app_shell__main__delegate.cc
@@ -0,0 +1,29 @@
+--- extensions/shell/app/shell_main_delegate.cc.orig 2019-09-10 11:14:04 UTC
++++ extensions/shell/app/shell_main_delegate.cc
+@@ -38,7 +38,7 @@
+
+ #if defined(OS_WIN)
+ #include "base/base_paths_win.h"
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ #include "base/nix/xdg_util.h"
+ #elif defined(OS_MACOSX)
+ #include "base/base_paths_mac.h"
+@@ -52,7 +52,7 @@
+
+ namespace {
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS)
+ extensions::ShellCrashReporterClient* GetCrashReporterClient() {
+ static base::NoDestructor<extensions::ShellCrashReporterClient> instance;
+ return instance.get();
+@@ -70,7 +70,7 @@ base::FilePath GetDataPath() {
+ return cmd_line->GetSwitchValuePath(switches::kContentShellDataPath);
+
+ base::FilePath data_dir;
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ std::unique_ptr<base::Environment> env(base::Environment::Create());
+ data_dir = base::nix::GetXDGDirectory(
+ env.get(), base::nix::kXdgConfigHomeEnvVar, base::nix::kDotConfigDir);
diff --git a/devel/electron6/files/patch-extensions_shell_browser_shell__extensions__api__client.cc b/devel/electron6/files/patch-extensions_shell_browser_shell__extensions__api__client.cc
new file mode 100644
index 000000000000..5422e85a429d
--- /dev/null
+++ b/devel/electron6/files/patch-extensions_shell_browser_shell__extensions__api__client.cc
@@ -0,0 +1,20 @@
+--- extensions/shell/browser/shell_extensions_api_client.cc.orig 2019-09-10 11:14:04 UTC
++++ extensions/shell/browser/shell_extensions_api_client.cc
+@@ -15,7 +15,7 @@
+ #include "extensions/shell/browser/shell_virtual_keyboard_delegate.h"
+ #include "extensions/shell/browser/shell_web_view_guest_delegate.h"
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ #include "extensions/shell/browser/api/file_system/shell_file_system_delegate.h"
+ #endif
+
+@@ -46,7 +46,7 @@ ShellExtensionsAPIClient::CreateVirtualKeyboardDelegat
+ return std::make_unique<ShellVirtualKeyboardDelegate>();
+ }
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ FileSystemDelegate* ShellExtensionsAPIClient::GetFileSystemDelegate() {
+ if (!file_system_delegate_)
+ file_system_delegate_ = std::make_unique<ShellFileSystemDelegate>();
diff --git a/devel/electron6/files/patch-extensions_shell_browser_shell__extensions__api__client.h b/devel/electron6/files/patch-extensions_shell_browser_shell__extensions__api__client.h
new file mode 100644
index 000000000000..897bf1b3eb84
--- /dev/null
+++ b/devel/electron6/files/patch-extensions_shell_browser_shell__extensions__api__client.h
@@ -0,0 +1,19 @@
+--- extensions/shell/browser/shell_extensions_api_client.h.orig 2019-09-10 11:14:04 UTC
++++ extensions/shell/browser/shell_extensions_api_client.h
+@@ -30,14 +30,14 @@ class ShellExtensionsAPIClient : public ExtensionsAPIC
+ WebViewGuest* web_view_guest) const override;
+ std::unique_ptr<VirtualKeyboardDelegate> CreateVirtualKeyboardDelegate(
+ content::BrowserContext* browser_context) const override;
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ FileSystemDelegate* GetFileSystemDelegate() override;
+ #endif
+ MessagingDelegate* GetMessagingDelegate() override;
+ FeedbackPrivateDelegate* GetFeedbackPrivateDelegate() override;
+
+ private:
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ std::unique_ptr<FileSystemDelegate> file_system_delegate_;
+ #endif
+ std::unique_ptr<MessagingDelegate> messaging_delegate_;
diff --git a/devel/electron6/files/patch-google__apis_gcm_engine_heartbeat__manager.cc b/devel/electron6/files/patch-google__apis_gcm_engine_heartbeat__manager.cc
new file mode 100644
index 000000000000..944a07f48960
--- /dev/null
+++ b/devel/electron6/files/patch-google__apis_gcm_engine_heartbeat__manager.cc
@@ -0,0 +1,53 @@
+--- google_apis/gcm/engine/heartbeat_manager.cc.orig 2019-09-10 11:14:04 UTC
++++ google_apis/gcm/engine/heartbeat_manager.cc
+@@ -32,13 +32,13 @@ const int kMinClientHeartbeatIntervalMs = 1000 * 30;
+ // Minimum time spent sleeping before we force a new heartbeat.
+ const int kMinSuspendTimeMs = 1000 * 10; // 10 seconds.
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ // The period at which to check if the heartbeat time has passed. Used to
+ // protect against platforms where the timer is delayed by the system being
+ // suspended. Only needed on linux because the other OSes provide a standard
+ // way to be notified of system suspend and resume events.
+ const int kHeartbeatMissedCheckMs = 1000 * 60 * 5; // 5 minutes.
+-#endif // defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#endif // (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+
+ } // namespace
+
+@@ -188,7 +188,7 @@ void HeartbeatManager::RestartTimer() {
+ base::Bind(&HeartbeatManager::OnHeartbeatTriggered,
+ weak_ptr_factory_.GetWeakPtr()));
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ // Windows, Mac, Android, iOS, and Chrome OS all provide a way to be notified
+ // when the system is suspending or resuming. The only one that does not is
+ // Linux so we need to poll to check for missed heartbeats.
+@@ -197,7 +197,7 @@ void HeartbeatManager::RestartTimer() {
+ base::BindOnce(&HeartbeatManager::CheckForMissedHeartbeat,
+ weak_ptr_factory_.GetWeakPtr()),
+ base::TimeDelta::FromMilliseconds(kHeartbeatMissedCheckMs));
+-#endif // defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#endif // (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ }
+
+ void HeartbeatManager::CheckForMissedHeartbeat() {
+@@ -213,14 +213,14 @@ void HeartbeatManager::CheckForMissedHeartbeat() {
+ return;
+ }
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ // Otherwise check again later.
+ base::ThreadTaskRunnerHandle::Get()->PostDelayedTask(
+ FROM_HERE,
+ base::BindOnce(&HeartbeatManager::CheckForMissedHeartbeat,
+ weak_ptr_factory_.GetWeakPtr()),
+ base::TimeDelta::FromMilliseconds(kHeartbeatMissedCheckMs));
+-#endif // defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#endif // (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ }
+
+ void HeartbeatManager::UpdateHeartbeatInterval() {
diff --git a/devel/electron6/files/patch-gpu_command__buffer_common_gpu__memory__buffer__support.cc b/devel/electron6/files/patch-gpu_command__buffer_common_gpu__memory__buffer__support.cc
new file mode 100644
index 000000000000..d74a59fe236f
--- /dev/null
+++ b/devel/electron6/files/patch-gpu_command__buffer_common_gpu__memory__buffer__support.cc
@@ -0,0 +1,11 @@
+--- gpu/command_buffer/common/gpu_memory_buffer_support.cc.orig 2019-09-10 11:14:05 UTC
++++ gpu/command_buffer/common/gpu_memory_buffer_support.cc
+@@ -89,7 +89,7 @@ bool IsImageSizeValidForGpuMemoryBufferFormat(const gf
+ uint32_t GetPlatformSpecificTextureTarget() {
+ #if defined(OS_MACOSX)
+ return GL_TEXTURE_RECTANGLE_ARB;
+-#elif defined(OS_ANDROID) || defined(OS_LINUX)
++#elif defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_BSD)
+ return GL_TEXTURE_EXTERNAL_OES;
+ #elif defined(OS_WIN) || defined(OS_FUCHSIA)
+ return GL_TEXTURE_2D;
diff --git a/devel/electron6/files/patch-gpu_command__buffer_service_external__vk__image__backing.cc b/devel/electron6/files/patch-gpu_command__buffer_service_external__vk__image__backing.cc
new file mode 100644
index 000000000000..c1f8bf94da92
--- /dev/null
+++ b/devel/electron6/files/patch-gpu_command__buffer_service_external__vk__image__backing.cc
@@ -0,0 +1,29 @@
+--- gpu/command_buffer/service/external_vk_image_backing.cc.orig 2019-09-10 11:14:05 UTC
++++ gpu/command_buffer/service/external_vk_image_backing.cc
+@@ -26,7 +26,7 @@
+ #include "gpu/vulkan/fuchsia/vulkan_fuchsia_ext.h"
+ #endif
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #define GL_HANDLE_TYPE_OPAQUE_FD_EXT 0x9586
+ #endif
+
+@@ -439,7 +439,7 @@ ExternalVkImageBacking::ProduceGLTexture(SharedImageMa
+ #if defined(OS_FUCHSIA)
+ NOTIMPLEMENTED_LOG_ONCE();
+ return nullptr;
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ if (!texture_) {
+ VkMemoryGetFdInfoKHR get_fd_info;
+ get_fd_info.sType = VK_STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR;
+@@ -502,7 +502,7 @@ ExternalVkImageBacking::ProduceGLTexture(SharedImageMa
+ }
+ return std::make_unique<ExternalVkImageGlRepresentation>(
+ manager, this, tracker, texture_, texture_->service_id());
+-#else // !defined(OS_LINUX) && !defined(OS_FUCHSIA)
++#else // !defined(OS_LINUX) && !defined(OS_FUCHSIA) && !defined(OS_BSD)
+ #error Unsupported OS
+ #endif
+ }
diff --git a/devel/electron6/files/patch-gpu_command__buffer_service_external__vk__image__gl__representation.cc b/devel/electron6/files/patch-gpu_command__buffer_service_external__vk__image__gl__representation.cc
new file mode 100644
index 000000000000..a14388b3e6d7
--- /dev/null
+++ b/devel/electron6/files/patch-gpu_command__buffer_service_external__vk__image__gl__representation.cc
@@ -0,0 +1,20 @@
+--- gpu/command_buffer/service/external_vk_image_gl_representation.cc.orig 2019-09-10 11:14:05 UTC
++++ gpu/command_buffer/service/external_vk_image_gl_representation.cc
+@@ -128,7 +128,7 @@ GLuint ExternalVkImageGlRepresentation::ImportVkSemaph
+ #if defined(OS_FUCHSIA)
+ NOTIMPLEMENTED_LOG_ONCE();
+ return 0;
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ if (handle.vk_handle_type() !=
+ VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT) {
+ DLOG(ERROR) << "Importing semaphore handle of unexpected type:"
+@@ -143,7 +143,7 @@ GLuint ExternalVkImageGlRepresentation::ImportVkSemaph
+ fd.release());
+
+ return gl_semaphore;
+-#else // !defined(OS_FUCHSIA) && !defined(OS_LINUX)
++#else // !defined(OS_FUCHSIA) && !defined(OS_LINUX) && !defined(OS_BSD)
+ #error Unsupported OS
+ #endif
+ }
diff --git a/devel/electron6/files/patch-gpu_command__buffer_service_program__manager.cc b/devel/electron6/files/patch-gpu_command__buffer_service_program__manager.cc
new file mode 100644
index 000000000000..e1cfa61ce0de
--- /dev/null
+++ b/devel/electron6/files/patch-gpu_command__buffer_service_program__manager.cc
@@ -0,0 +1,14 @@
+--- gpu/command_buffer/service/program_manager.cc.orig 2019-09-10 11:14:06 UTC
++++ gpu/command_buffer/service/program_manager.cc
+@@ -30,7 +30,11 @@
+ #include "gpu/command_buffer/service/program_cache.h"
+ #include "gpu/command_buffer/service/shader_manager.h"
+ #include "gpu/config/gpu_preferences.h"
++#if defined(OS_BSD)
++#include <re2/re2.h>
++#else
+ #include "third_party/re2/src/re2/re2.h"
++#endif
+ #include "ui/gl/gl_version_info.h"
+ #include "ui/gl/progress_reporter.h"
+
diff --git a/devel/electron6/files/patch-gpu_command__buffer_tests_gl__copy__texture__CHROMIUM__unittest.cc b/devel/electron6/files/patch-gpu_command__buffer_tests_gl__copy__texture__CHROMIUM__unittest.cc
new file mode 100644
index 000000000000..747f9b9e4809
--- /dev/null
+++ b/devel/electron6/files/patch-gpu_command__buffer_tests_gl__copy__texture__CHROMIUM__unittest.cc
@@ -0,0 +1,11 @@
+--- gpu/command_buffer/tests/gl_copy_texture_CHROMIUM_unittest.cc.orig 2019-09-10 11:14:06 UTC
++++ gpu/command_buffer/tests/gl_copy_texture_CHROMIUM_unittest.cc
+@@ -593,7 +593,7 @@ class GLCopyTextureCHROMIUMES3Test : public GLCopyText
+
+ bool ShouldSkipNorm16() const {
+ DCHECK(!ShouldSkipTest());
+-#if (defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_LINUX)) && \
++#if (defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD)) && \
+ (defined(ARCH_CPU_X86) || defined(ARCH_CPU_X86_64))
+ // Make sure it's tested; it is safe to assume that the flag is always true
+ // on desktop.
diff --git a/devel/electron6/files/patch-gpu_command__buffer_tests_gl__test__utils.cc b/devel/electron6/files/patch-gpu_command__buffer_tests_gl__test__utils.cc
new file mode 100644
index 000000000000..1cd40b28af18
--- /dev/null
+++ b/devel/electron6/files/patch-gpu_command__buffer_tests_gl__test__utils.cc
@@ -0,0 +1,20 @@
+--- gpu/command_buffer/tests/gl_test_utils.cc.orig 2019-09-10 11:14:06 UTC
++++ gpu/command_buffer/tests/gl_test_utils.cc
+@@ -23,7 +23,7 @@
+ #include "ui/gl/gl_version_info.h"
+ #include "ui/gl/init/gl_factory.h"
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include "ui/gl/gl_image_native_pixmap.h"
+ #endif
+
+@@ -429,7 +429,7 @@ void GpuCommandBufferTestEGL::RestoreGLDefault() {
+ window_system_binding_info_ = gl::GLWindowSystemBindingInfo();
+ }
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ scoped_refptr<gl::GLImageNativePixmap>
+ GpuCommandBufferTestEGL::CreateGLImageNativePixmap(gfx::BufferFormat format,
+ gfx::Size size,
diff --git a/devel/electron6/files/patch-gpu_command__buffer_tests_gl__test__utils.h b/devel/electron6/files/patch-gpu_command__buffer_tests_gl__test__utils.h
new file mode 100644
index 000000000000..c17548bb6f55
--- /dev/null
+++ b/devel/electron6/files/patch-gpu_command__buffer_tests_gl__test__utils.h
@@ -0,0 +1,11 @@
+--- gpu/command_buffer/tests/gl_test_utils.h.orig 2019-09-10 11:14:06 UTC
++++ gpu/command_buffer/tests/gl_test_utils.h
+@@ -112,7 +112,7 @@ class GpuCommandBufferTestEGL {
+ return gfx::HasExtension(gl_extensions_, extension);
+ }
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Create GLImageNativePixmap filled in with the given pixels.
+ scoped_refptr<gl::GLImageNativePixmap> CreateGLImageNativePixmap(
+ gfx::BufferFormat format,
diff --git a/devel/electron6/files/patch-gpu_config_gpu__control__list.cc b/devel/electron6/files/patch-gpu_config_gpu__control__list.cc
new file mode 100644
index 000000000000..2a7e59392644
--- /dev/null
+++ b/devel/electron6/files/patch-gpu_config_gpu__control__list.cc
@@ -0,0 +1,32 @@
+--- gpu/config/gpu_control_list.cc.orig 2019-09-10 11:14:06 UTC
++++ gpu/config/gpu_control_list.cc
+@@ -16,7 +16,11 @@
+ #include "base/values.h"
+ #include "build/build_config.h"
+ #include "gpu/config/gpu_util.h"
++#if defined(OS_BSD)
++#include <re2/re2.h>
++#else
+ #include "third_party/re2/src/re2/re2.h"
++#endif // defined(OS_BSD)
+
+ namespace gpu {
+ namespace {
+@@ -213,7 +217,7 @@ bool GpuControlList::More::GLVersionInfoMismatch(
+ GpuControlList::GLType GpuControlList::More::GetDefaultGLType() {
+ #if defined(OS_CHROMEOS)
+ return kGLTypeGL;
+-#elif defined(OS_LINUX) || defined(OS_OPENBSD)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ return kGLTypeGL;
+ #elif defined(OS_MACOSX)
+ return kGLTypeGL;
+@@ -700,7 +704,7 @@ GpuControlList::OsType GpuControlList::GetOsType() {
+ return kOsAndroid;
+ #elif defined(OS_FUCHSIA)
+ return kOsFuchsia;
+-#elif defined(OS_LINUX) || defined(OS_OPENBSD)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ return kOsLinux;
+ #elif defined(OS_MACOSX)
+ return kOsMacosx;
diff --git a/devel/electron6/files/patch-gpu_config_gpu__test__config.cc b/devel/electron6/files/patch-gpu_config_gpu__test__config.cc
new file mode 100644
index 000000000000..65d20d33d0ef
--- /dev/null
+++ b/devel/electron6/files/patch-gpu_config_gpu__test__config.cc
@@ -0,0 +1,11 @@
+--- gpu/config/gpu_test_config.cc.orig 2019-09-10 11:14:06 UTC
++++ gpu/config/gpu_test_config.cc
+@@ -25,7 +25,7 @@ namespace {
+ GPUTestConfig::OS GetCurrentOS() {
+ #if defined(OS_CHROMEOS)
+ return GPUTestConfig::kOsChromeOS;
+-#elif defined(OS_LINUX) || defined(OS_OPENBSD)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ return GPUTestConfig::kOsLinux;
+ #elif defined(OS_WIN)
+ int32_t major_version = 0;
diff --git a/devel/electron6/files/patch-gpu_ipc_common_gpu__memory__buffer__support.cc b/devel/electron6/files/patch-gpu_ipc_common_gpu__memory__buffer__support.cc
new file mode 100644
index 000000000000..2287551c0ebf
--- /dev/null
+++ b/devel/electron6/files/patch-gpu_ipc_common_gpu__memory__buffer__support.cc
@@ -0,0 +1,56 @@
+--- gpu/ipc/common/gpu_memory_buffer_support.cc.orig 2019-09-10 11:14:06 UTC
++++ gpu/ipc/common/gpu_memory_buffer_support.cc
+@@ -12,7 +12,7 @@
+ #include "gpu/ipc/common/gpu_memory_buffer_impl_io_surface.h"
+ #endif
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include "ui/gfx/client_native_pixmap_factory.h"
+ #include "ui/gfx/linux/client_native_pixmap_factory_dmabuf.h"
+ #endif
+@@ -22,7 +22,7 @@
+ #include "ui/ozone/public/ozone_platform.h"
+ #endif
+
+-#if defined(USE_OZONE) || defined(OS_LINUX)
++#if defined(USE_OZONE) || defined(OS_LINUX) || defined(OS_BSD)
+ #include "gpu/ipc/common/gpu_memory_buffer_impl_native_pixmap.h"
+ #endif
+
+@@ -40,7 +40,7 @@ namespace gpu {
+ GpuMemoryBufferSupport::GpuMemoryBufferSupport() {
+ #if defined(USE_OZONE)
+ client_native_pixmap_factory_ = ui::CreateClientNativePixmapFactoryOzone();
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ client_native_pixmap_factory_.reset(
+ gfx::CreateClientNativePixmapFactoryDmabuf());
+ #endif
+@@ -54,7 +54,7 @@ GpuMemoryBufferSupport::GetNativeGpuMemoryBufferType()
+ return gfx::IO_SURFACE_BUFFER;
+ #elif defined(OS_ANDROID)
+ return gfx::ANDROID_HARDWARE_BUFFER;
+-#elif defined(OS_LINUX) || defined(USE_OZONE)
++#elif defined(OS_LINUX) || defined(USE_OZONE) || defined(OS_BSD)
+ return gfx::NATIVE_PIXMAP;
+ #elif defined(OS_WIN)
+ return gfx::DXGI_SHARED_HANDLE;
+@@ -111,7 +111,7 @@ bool GpuMemoryBufferSupport::IsNativeGpuMemoryBufferCo
+ #elif defined(USE_OZONE)
+ return ui::OzonePlatform::EnsureInstance()->IsNativePixmapConfigSupported(
+ format, usage);
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ return false; // TODO(julian.isorce): Add linux support.
+ #elif defined(OS_WIN)
+ switch (usage) {
+@@ -167,7 +167,7 @@ GpuMemoryBufferSupport::CreateGpuMemoryBufferImplFromH
+ return GpuMemoryBufferImplIOSurface::CreateFromHandle(
+ std::move(handle), size, format, usage, std::move(callback));
+ #endif
+-#if defined(OS_LINUX) || defined(USE_OZONE)
++#if defined(OS_LINUX) || defined(USE_OZONE) || defined(OS_BSD)
+ case gfx::NATIVE_PIXMAP:
+ return GpuMemoryBufferImplNativePixmap::CreateFromHandle(
+ client_native_pixmap_factory(), std::move(handle), size, format,
diff --git a/devel/electron6/files/patch-gpu_ipc_common_gpu__memory__buffer__support.h b/devel/electron6/files/patch-gpu_ipc_common_gpu__memory__buffer__support.h
new file mode 100644
index 000000000000..982311c2fb3b
--- /dev/null
+++ b/devel/electron6/files/patch-gpu_ipc_common_gpu__memory__buffer__support.h
@@ -0,0 +1,29 @@
+--- gpu/ipc/common/gpu_memory_buffer_support.h.orig 2019-09-10 10:42:38 UTC
++++ gpu/ipc/common/gpu_memory_buffer_support.h
+@@ -16,7 +16,7 @@
+ #include "ui/gfx/geometry/size.h"
+ #include "ui/gfx/gpu_memory_buffer.h"
+
+-#if defined(OS_LINUX) || defined(USE_OZONE)
++#if defined(OS_LINUX) || defined(OS_BSD) || defined(USE_OZONE)
+ namespace gfx {
+ class ClientNativePixmapFactory;
+ }
+@@ -38,7 +38,7 @@ class GPU_EXPORT GpuMemoryBufferSupport {
+ bool IsNativeGpuMemoryBufferConfigurationSupported(gfx::BufferFormat format,
+ gfx::BufferUsage usage);
+
+-#if defined(OS_LINUX) || defined(USE_OZONE)
++#if defined(OS_LINUX) || defined(OS_BSD) || defined(USE_OZONE)
+ gfx::ClientNativePixmapFactory* client_native_pixmap_factory() {
+ return client_native_pixmap_factory_.get();
+ }
+@@ -61,7 +61,7 @@ class GPU_EXPORT GpuMemoryBufferSupport {
+ GpuMemoryBufferImpl::DestructionCallback callback);
+
+ private:
+-#if defined(OS_LINUX) || defined(USE_OZONE)
++#if defined(OS_LINUX) || defined(OS_BSD) || defined(USE_OZONE)
+ std::unique_ptr<gfx::ClientNativePixmapFactory> client_native_pixmap_factory_;
+ #endif
+
diff --git a/devel/electron6/files/patch-gpu_ipc_service_gpu__init.cc b/devel/electron6/files/patch-gpu_ipc_service_gpu__init.cc
new file mode 100644
index 000000000000..954597a24d22
--- /dev/null
+++ b/devel/electron6/files/patch-gpu_ipc_service_gpu__init.cc
@@ -0,0 +1,83 @@
+--- gpu/ipc/service/gpu_init.cc.orig 2019-09-10 11:14:06 UTC
++++ gpu/ipc/service/gpu_init.cc
+@@ -107,7 +107,7 @@ void InitializePlatformOverlaySettings(GPUInfo* gpu_in
+ #endif
+ }
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) && !defined(IS_CHROMECAST)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS) && !defined(IS_CHROMECAST)) || defined(OS_BSD)
+ bool CanAccessNvidiaDeviceFile() {
+ bool res = true;
+ base::ScopedBlockingCall scoped_blocking_call(FROM_HERE,
+@@ -118,7 +118,7 @@ bool CanAccessNvidiaDeviceFile() {
+ }
+ return res;
+ }
+-#endif // OS_LINUX && !OS_CHROMEOS && !IS_CHROMECAST
++#endif // (OS_LINUX && !OS_CHROMEOS && !IS_CHROMECAST) || OS_BSD
+
+ } // namespace
+
+@@ -150,7 +150,7 @@ bool GpuInit::InitializeAndStartSandbox(base::CommandL
+ // crash during feature collection.
+ gpu::SetKeysForCrashLogging(gpu_info_);
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ if (gpu_info_.gpu.vendor_id == 0x10de && // NVIDIA
+ gpu_info_.gpu.driver_vendor == "NVIDIA" && !CanAccessNvidiaDeviceFile())
+ return false;
+@@ -220,7 +220,7 @@ bool GpuInit::InitializeAndStartSandbox(base::CommandL
+ sandbox_helper_->PreSandboxStartup();
+
+ bool attempted_startsandbox = false;
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) && !defined(OS_BSD)
+ // On Chrome OS ARM Mali, GPU driver userspace creates threads when
+ // initializing a GL context, so start the sandbox early.
+ // TODO(zmo): Need to collect OS version before this.
+@@ -229,7 +229,7 @@ bool GpuInit::InitializeAndStartSandbox(base::CommandL
+ watchdog_thread_.get(), &gpu_info_, gpu_preferences_);
+ attempted_startsandbox = true;
+ }
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) && !defined(OS_BSD)
+
+ base::TimeTicks before_initialize_one_off = base::TimeTicks::Now();
+
+@@ -328,7 +328,7 @@ bool GpuInit::InitializeAndStartSandbox(base::CommandL
+
+ InitializePlatformOverlaySettings(&gpu_info_);
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Driver may create a compatibility profile context when collect graphics
+ // information on Linux platform. Try to collect graphics information
+ // based on core profile context after disabling platform extensions.
+@@ -350,7 +350,7 @@ bool GpuInit::InitializeAndStartSandbox(base::CommandL
+ }
+ }
+ }
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+
+ if (use_swiftshader) {
+ AdjustInfoToSwiftShader();
+@@ -516,7 +516,7 @@ void GpuInit::InitializeInProcess(base::CommandLine* c
+
+ InitializePlatformOverlaySettings(&gpu_info_);
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Driver may create a compatibility profile context when collect graphics
+ // information on Linux platform. Try to collect graphics information
+ // based on core profile context after disabling platform extensions.
+@@ -536,7 +536,7 @@ void GpuInit::InitializeInProcess(base::CommandLine* c
+ }
+ }
+ }
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+
+ if (use_swiftshader) {
+ AdjustInfoToSwiftShader();
diff --git a/devel/electron6/files/patch-gpu_ipc_service_gpu__memory__buffer__factory.cc b/devel/electron6/files/patch-gpu_ipc_service_gpu__memory__buffer__factory.cc
new file mode 100644
index 000000000000..574aed1b1bab
--- /dev/null
+++ b/devel/electron6/files/patch-gpu_ipc_service_gpu__memory__buffer__factory.cc
@@ -0,0 +1,20 @@
+--- gpu/ipc/service/gpu_memory_buffer_factory.cc.orig 2019-09-10 11:14:06 UTC
++++ gpu/ipc/service/gpu_memory_buffer_factory.cc
+@@ -12,7 +12,7 @@
+ #include "gpu/ipc/service/gpu_memory_buffer_factory_io_surface.h"
+ #endif
+
+-#if defined(OS_LINUX) || defined(OS_FUCHSIA)
++#if defined(OS_LINUX) || defined(OS_FUCHSIA) || defined(OS_BSD)
+ #include "gpu/ipc/service/gpu_memory_buffer_factory_native_pixmap.h"
+ #endif
+
+@@ -34,7 +34,7 @@ GpuMemoryBufferFactory::CreateNativeType(
+ return std::make_unique<GpuMemoryBufferFactoryIOSurface>();
+ #elif defined(OS_ANDROID)
+ return std::make_unique<GpuMemoryBufferFactoryAndroidHardwareBuffer>();
+-#elif defined(OS_LINUX) || defined(OS_FUCHSIA)
++#elif defined(OS_LINUX) || defined(OS_FUCHSIA) || defined(OS_BSD)
+ return std::make_unique<GpuMemoryBufferFactoryNativePixmap>(
+ vulkan_context_provider);
+ #elif defined(OS_WIN)
diff --git a/devel/electron6/files/patch-gpu_ipc_service_gpu__watchdog__thread.cc b/devel/electron6/files/patch-gpu_ipc_service_gpu__watchdog__thread.cc
new file mode 100644
index 000000000000..c6fb5c866db4
--- /dev/null
+++ b/devel/electron6/files/patch-gpu_ipc_service_gpu__watchdog__thread.cc
@@ -0,0 +1,73 @@
+--- gpu/ipc/service/gpu_watchdog_thread.cc.orig 2019-09-10 11:14:06 UTC
++++ gpu/ipc/service/gpu_watchdog_thread.cc
+@@ -55,8 +55,10 @@ const int kGpuTimeout = 10000;
+ #endif
+
+ #if defined(USE_X11)
++#if !defined(OS_BSD)
+ const base::FilePath::CharType kTtyFilePath[] =
+ FILE_PATH_LITERAL("/sys/class/tty/tty0/active");
++#endif
+ const unsigned char text[20] = "check";
+ #endif
+
+@@ -79,8 +81,10 @@ GpuWatchdogThread::GpuWatchdogThread()
+ display_(nullptr),
+ window_(0),
+ atom_(x11::None),
++#if !defined(OS_BSD)
+ host_tty_(-1),
+ #endif
++#endif
+ weak_factory_(this) {
+ base::subtle::NoBarrier_Store(&awaiting_acknowledge_, false);
+
+@@ -95,7 +99,9 @@ GpuWatchdogThread::GpuWatchdogThread()
+ #endif
+
+ #if defined(USE_X11)
++#if !defined(OS_BSD)
+ tty_file_ = base::OpenFile(base::FilePath(kTtyFilePath), "r");
++#endif
+ SetupXServer();
+ #endif
+ base::MessageLoopCurrent::Get()->AddTaskObserver(&task_observer_);
+@@ -231,8 +237,10 @@ GpuWatchdogThread::~GpuWatchdogThread() {
+ power_monitor->RemoveObserver(this);
+
+ #if defined(USE_X11)
++#if !defined(OS_BSD)
+ if (tty_file_)
+ fclose(tty_file_);
++#endif
+ if (display_) {
+ DCHECK(window_);
+ XDestroyWindow(display_, window_);
+@@ -436,7 +444,7 @@ void GpuWatchdogThread::DeliberatelyTerminateToRecover
+ return;
+ #endif
+
+-#if defined(USE_X11)
++#if defined(USE_X11) && !defined(OS_BSD)
+ // Don't crash if we're not on the TTY of our host X11 server.
+ int active_tty = GetActiveTTY();
+ if (host_tty_ != -1 && active_tty != -1 && host_tty_ != active_tty) {
+@@ -510,7 +518,9 @@ void GpuWatchdogThread::SetupXServer() {
+ CopyFromParent, InputOutput, CopyFromParent, 0, nullptr);
+ atom_ = XInternAtom(display_, "CHECK", x11::False);
+ }
++#if !defined(OS_BSD)
+ host_tty_ = GetActiveTTY();
++#endif
+ }
+
+ void GpuWatchdogThread::SetupXChangeProp() {
+@@ -611,7 +621,7 @@ base::ThreadTicks GpuWatchdogThread::GetWatchedThreadT
+ }
+ #endif
+
+-#if defined(USE_X11)
++#if defined(USE_X11) && !defined(OS_BSD)
+ int GpuWatchdogThread::GetActiveTTY() const {
+ char tty_string[8] = {0};
+ if (tty_file_ && !fseek(tty_file_, 0, SEEK_SET) &&
diff --git a/devel/electron6/files/patch-gpu_ipc_service_gpu__watchdog__thread.h b/devel/electron6/files/patch-gpu_ipc_service_gpu__watchdog__thread.h
new file mode 100644
index 000000000000..8416d81bacdb
--- /dev/null
+++ b/devel/electron6/files/patch-gpu_ipc_service_gpu__watchdog__thread.h
@@ -0,0 +1,13 @@
+--- gpu/ipc/service/gpu_watchdog_thread.h.orig 2019-09-10 11:14:06 UTC
++++ gpu/ipc/service/gpu_watchdog_thread.h
+@@ -191,8 +191,10 @@ class GPU_IPC_SERVICE_EXPORT GpuWatchdogThread : publi
+ XDisplay* display_;
+ gfx::AcceleratedWidget window_;
+ XAtom atom_;
++#if !defined(OS_BSD)
+ FILE* tty_file_;
+ int host_tty_;
++#endif
+ #endif
+
+ base::RepeatingClosure alternative_terminate_for_testing_;
diff --git a/devel/electron6/files/patch-gpu_vulkan_vulkan__function__pointers.cc b/devel/electron6/files/patch-gpu_vulkan_vulkan__function__pointers.cc
new file mode 100644
index 000000000000..ee830954c843
--- /dev/null
+++ b/devel/electron6/files/patch-gpu_vulkan_vulkan__function__pointers.cc
@@ -0,0 +1,20 @@
+--- gpu/vulkan/vulkan_function_pointers.cc.orig 2019-09-10 11:14:06 UTC
++++ gpu/vulkan/vulkan_function_pointers.cc
+@@ -352,7 +352,7 @@ bool VulkanFunctionPointers::BindDeviceFunctionPointer
+
+ #endif
+
+-#if defined(OS_LINUX) || defined(OS_ANDROID)
++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
+
+ vkGetSemaphoreFdKHRFn = reinterpret_cast<PFN_vkGetSemaphoreFdKHR>(
+ vkGetDeviceProcAddrFn(vk_device, "vkGetSemaphoreFdKHR"));
+@@ -366,7 +366,7 @@ bool VulkanFunctionPointers::BindDeviceFunctionPointer
+
+ #endif
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+
+ vkGetMemoryFdKHRFn = reinterpret_cast<PFN_vkGetMemoryFdKHR>(
+ vkGetDeviceProcAddrFn(vk_device, "vkGetMemoryFdKHR"));
diff --git a/devel/electron6/files/patch-gpu_vulkan_vulkan__function__pointers.h b/devel/electron6/files/patch-gpu_vulkan_vulkan__function__pointers.h
new file mode 100644
index 000000000000..2b5084028891
--- /dev/null
+++ b/devel/electron6/files/patch-gpu_vulkan_vulkan__function__pointers.h
@@ -0,0 +1,35 @@
+--- gpu/vulkan/vulkan_function_pointers.h.orig 2019-09-10 11:14:06 UTC
++++ gpu/vulkan/vulkan_function_pointers.h
+@@ -145,13 +145,13 @@ struct VulkanFunctionPointers {
+ #endif
+
+ // Device functions shared between Linux and Android.
+-#if defined(OS_LINUX) || defined(OS_ANDROID)
++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
+ PFN_vkGetSemaphoreFdKHR vkGetSemaphoreFdKHRFn = nullptr;
+ PFN_vkImportSemaphoreFdKHR vkImportSemaphoreFdKHRFn = nullptr;
+ #endif
+
+ // Linux-only device functions.
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ PFN_vkGetMemoryFdKHR vkGetMemoryFdKHRFn = nullptr;
+ #endif
+
+@@ -313,14 +313,14 @@ struct VulkanFunctionPointers {
+ ->vkGetAndroidHardwareBufferPropertiesANDROIDFn
+ #endif
+
+-#if defined(OS_LINUX) || defined(OS_ANDROID)
++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
+ #define vkGetSemaphoreFdKHR \
+ gpu::GetVulkanFunctionPointers()->vkGetSemaphoreFdKHRFn
+ #define vkImportSemaphoreFdKHR \
+ gpu::GetVulkanFunctionPointers()->vkImportSemaphoreFdKHRFn
+ #endif
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #define vkGetMemoryFdKHR gpu::GetVulkanFunctionPointers()->vkGetMemoryFdKHRFn
+ #endif
+
diff --git a/devel/electron6/files/patch-headless_lib_browser_headless__content__browser__client.cc b/devel/electron6/files/patch-headless_lib_browser_headless__content__browser__client.cc
new file mode 100644
index 000000000000..1b94a3d60c54
--- /dev/null
+++ b/devel/electron6/files/patch-headless_lib_browser_headless__content__browser__client.cc
@@ -0,0 +1,20 @@
+--- headless/lib/browser/headless_content_browser_client.cc.orig 2019-09-10 11:14:06 UTC
++++ headless/lib/browser/headless_content_browser_client.cc
+@@ -178,7 +178,7 @@ HeadlessContentBrowserClient::GetGeneratedCodeCacheSet
+ return content::GeneratedCodeCacheSettings(true, 0, context->GetPath());
+ }
+
+-#if defined(OS_POSIX) && !defined(OS_MACOSX)
++#if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_BSD)
+ void HeadlessContentBrowserClient::GetAdditionalMappedFilesForChildProcess(
+ const base::CommandLine& command_line,
+ int child_process_id,
+@@ -189,7 +189,7 @@ void HeadlessContentBrowserClient::GetAdditionalMapped
+ mappings->Share(service_manager::kCrashDumpSignal, crash_signal_fd);
+ #endif // defined(HEADLESS_USE_BREAKPAD)
+ }
+-#endif // defined(OS_POSIX) && !defined(OS_MACOSX)
++#endif // defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_BSD)
+
+ void HeadlessContentBrowserClient::AppendExtraCommandLineSwitches(
+ base::CommandLine* command_line,
diff --git a/devel/electron6/files/patch-headless_lib_browser_headless__content__browser__client.h b/devel/electron6/files/patch-headless_lib_browser_headless__content__browser__client.h
new file mode 100644
index 000000000000..8237c3303ae2
--- /dev/null
+++ b/devel/electron6/files/patch-headless_lib_browser_headless__content__browser__client.h
@@ -0,0 +1,11 @@
+--- headless/lib/browser/headless_content_browser_client.h.orig 2019-09-10 11:14:06 UTC
++++ headless/lib/browser/headless_content_browser_client.h
+@@ -36,7 +36,7 @@ class HeadlessContentBrowserClient : public content::C
+ ::storage::OptionalQuotaSettingsCallback callback) override;
+ content::GeneratedCodeCacheSettings GetGeneratedCodeCacheSettings(
+ content::BrowserContext* context) override;
+-#if defined(OS_POSIX) && !defined(OS_MACOSX)
++#if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_BSD)
+ void GetAdditionalMappedFilesForChildProcess(
+ const base::CommandLine& command_line,
+ int child_process_id,
diff --git a/devel/electron6/files/patch-headless_lib_browser_headless__request__context__manager.cc b/devel/electron6/files/patch-headless_lib_browser_headless__request__context__manager.cc
new file mode 100644
index 000000000000..6c3c63d6b4db
--- /dev/null
+++ b/devel/electron6/files/patch-headless_lib_browser_headless__request__context__manager.cc
@@ -0,0 +1,38 @@
+--- headless/lib/browser/headless_request_context_manager.cc.orig 2019-09-10 11:14:06 UTC
++++ headless/lib/browser/headless_request_context_manager.cc
+@@ -34,7 +34,7 @@ namespace headless {
+
+ namespace {
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ static char kProductName[] = "HeadlessChrome";
+ #endif
+
+@@ -80,7 +80,7 @@ net::NetworkTrafficAnnotationTag GetProxyConfigTraffic
+ return traffic_annotation;
+ }
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ ::network::mojom::CryptConfigPtr BuildCryptConfigOnce(
+ const base::FilePath& user_data_path) {
+ static bool done_once = false;
+@@ -289,7 +289,7 @@ HeadlessRequestContextManager::HeadlessRequestContextM
+ proxy_config_monitor_ =
+ std::make_unique<HeadlessProxyConfigMonitor>(proxy_monitor_task_runner);
+ }
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ crypt_config_ = BuildCryptConfigOnce(user_data_path_);
+ if (network_service_enabled_ && crypt_config_)
+ content::GetNetworkService()->SetCryptConfig(std::move(crypt_config_));
+@@ -365,7 +365,7 @@ void HeadlessRequestContextManager::InitializeOnIO() {
+ std::move(protocol_handler.second));
+ }
+ protocol_handlers_.clear();
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ if (crypt_config_) {
+ content::GetNetworkServiceImpl()->SetCryptConfig(
+ std::move(crypt_config_));
diff --git a/devel/electron6/files/patch-headless_lib_browser_headless__request__context__manager.h b/devel/electron6/files/patch-headless_lib_browser_headless__request__context__manager.h
new file mode 100644
index 000000000000..e4985826afcc
--- /dev/null
+++ b/devel/electron6/files/patch-headless_lib_browser_headless__request__context__manager.h
@@ -0,0 +1,11 @@
+--- headless/lib/browser/headless_request_context_manager.h.orig 2019-09-10 11:14:06 UTC
++++ headless/lib/browser/headless_request_context_manager.h
+@@ -69,7 +69,7 @@ class HeadlessRequestContextManager {
+ std::unique_ptr<HeadlessProxyConfigMonitor> proxy_config_monitor_;
+ bool is_system_context_;
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ ::network::mojom::CryptConfigPtr crypt_config_;
+ #endif
+
diff --git a/devel/electron6/files/patch-headless_lib_headless__macros.h b/devel/electron6/files/patch-headless_lib_headless__macros.h
new file mode 100644
index 000000000000..09f0e4ab692a
--- /dev/null
+++ b/devel/electron6/files/patch-headless_lib_headless__macros.h
@@ -0,0 +1,13 @@
+--- headless/lib/headless_macros.h.orig 2019-09-10 10:42:38 UTC
++++ headless/lib/headless_macros.h
+@@ -7,8 +7,8 @@
+
+ #include "build/build_config.h"
+
+-#if defined(OS_POSIX) && !defined(OS_MACOSX)
++#if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_BSD)
+ #define HEADLESS_USE_BREAKPAD
+-#endif // defined(OS_POSIX) && !defined(OS_MACOSX)
++#endif // defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_BSD)
+
+ #endif // HEADLESS_LIB_HEADLESS_MACROS_H_
diff --git a/devel/electron6/files/patch-ipc_ipc__channel.h b/devel/electron6/files/patch-ipc_ipc__channel.h
new file mode 100644
index 000000000000..17587139f79f
--- /dev/null
+++ b/devel/electron6/files/patch-ipc_ipc__channel.h
@@ -0,0 +1,11 @@
+--- ipc/ipc_channel.h.orig 2019-09-10 11:14:07 UTC
++++ ipc/ipc_channel.h
+@@ -245,7 +245,7 @@ class COMPONENT_EXPORT(IPC) Channel : public Sender {
+ static std::string GenerateUniqueRandomChannelID();
+ #endif
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Sandboxed processes live in a PID namespace, so when sending the IPC hello
+ // message from client to server we need to send the PID from the global
+ // PID namespace.
diff --git a/devel/electron6/files/patch-ipc_ipc__channel__common.cc b/devel/electron6/files/patch-ipc_ipc__channel__common.cc
new file mode 100644
index 000000000000..88b5ae47bcd7
--- /dev/null
+++ b/devel/electron6/files/patch-ipc_ipc__channel__common.cc
@@ -0,0 +1,20 @@
+--- ipc/ipc_channel_common.cc.orig 2019-09-10 10:42:39 UTC
++++ ipc/ipc_channel_common.cc
+@@ -9,7 +9,7 @@
+
+ namespace IPC {
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+
+ namespace {
+ int g_global_pid = 0;
+@@ -25,7 +25,7 @@ int Channel::GetGlobalPid() {
+ return g_global_pid;
+ }
+
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+
+ // static
+ std::unique_ptr<Channel> Channel::CreateClient(
diff --git a/devel/electron6/files/patch-ipc_ipc__channel__mojo.cc b/devel/electron6/files/patch-ipc_ipc__channel__mojo.cc
new file mode 100644
index 000000000000..5047f69f2c01
--- /dev/null
+++ b/devel/electron6/files/patch-ipc_ipc__channel__mojo.cc
@@ -0,0 +1,15 @@
+--- ipc/ipc_channel_mojo.cc.orig 2019-09-10 11:14:07 UTC
++++ ipc/ipc_channel_mojo.cc
+@@ -64,10 +64,10 @@ class MojoChannelFactory : public ChannelFactory {
+ };
+
+ base::ProcessId GetSelfPID() {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ if (int global_pid = Channel::GetGlobalPid())
+ return global_pid;
+-#endif // OS_LINUX
++#endif // OS_LINUX || OS_BSD
+ #if defined(OS_NACL)
+ return -1;
+ #else
diff --git a/devel/electron6/files/patch-ipc_ipc__message__utils.cc b/devel/electron6/files/patch-ipc_ipc__message__utils.cc
new file mode 100644
index 000000000000..dccda04e2203
--- /dev/null
+++ b/devel/electron6/files/patch-ipc_ipc__message__utils.cc
@@ -0,0 +1,11 @@
+--- ipc/ipc_message_utils.cc.orig 2019-09-10 11:14:07 UTC
++++ ipc/ipc_message_utils.cc
+@@ -355,7 +355,7 @@ void ParamTraits<unsigned int>::Log(const param_type&
+ l->append(base::NumberToString(p));
+ }
+
+-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_FUCHSIA) || \
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_FUCHSIA) || defined(OS_BSD) || \
+ (defined(OS_ANDROID) && defined(ARCH_CPU_64_BITS))
+ void ParamTraits<long>::Log(const param_type& p, std::string* l) {
+ l->append(base::NumberToString(p));
diff --git a/devel/electron6/files/patch-ipc_ipc__message__utils.h b/devel/electron6/files/patch-ipc_ipc__message__utils.h
new file mode 100644
index 000000000000..91ba29968db0
--- /dev/null
+++ b/devel/electron6/files/patch-ipc_ipc__message__utils.h
@@ -0,0 +1,11 @@
+--- ipc/ipc_message_utils.h.orig 2019-09-10 11:14:07 UTC
++++ ipc/ipc_message_utils.h
+@@ -205,7 +205,7 @@ struct ParamTraits<unsigned int> {
+ // 3) Android 64 bit and Fuchsia also have int64_t typedef'd to long.
+ // Since we want to support Android 32<>64 bit IPC, as long as we don't have
+ // these traits for 32 bit ARM then that'll catch any errors.
+-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_FUCHSIA) || \
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_FUCHSIA) || defined(OS_BSD) || \
+ (defined(OS_ANDROID) && defined(ARCH_CPU_64_BITS))
+ template <>
+ struct ParamTraits<long> {
diff --git a/devel/electron6/files/patch-media_BUILD.gn b/devel/electron6/files/patch-media_BUILD.gn
new file mode 100644
index 000000000000..bffbc2de216b
--- /dev/null
+++ b/devel/electron6/files/patch-media_BUILD.gn
@@ -0,0 +1,12 @@
+--- media/BUILD.gn.orig 2019-09-10 11:14:07 UTC
++++ media/BUILD.gn
+@@ -60,6 +60,9 @@ config("media_config") {
+ defines += [ "DLOPEN_PULSEAUDIO" ]
+ }
+ }
++ if (use_sndio) {
++ defines += [ "USE_SNDIO" ]
++ }
+ if (use_cras) {
+ defines += [ "USE_CRAS" ]
+ }
diff --git a/devel/electron6/files/patch-media_audio_BUILD.gn b/devel/electron6/files/patch-media_audio_BUILD.gn
new file mode 100644
index 000000000000..eadbab1ea2ba
--- /dev/null
+++ b/devel/electron6/files/patch-media_audio_BUILD.gn
@@ -0,0 +1,22 @@
+--- media/audio/BUILD.gn.orig 2019-09-16 09:24:24 UTC
++++ media/audio/BUILD.gn
+@@ -242,8 +242,18 @@ source_set("audio") {
+ deps += [ "//media/base/android:media_jni_headers" ]
+ }
+
+- if (is_linux) {
++ if (is_linux && !use_sndio) {
+ sources += [ "linux/audio_manager_linux.cc" ]
++ }
++ if (use_sndio) {
++ libs += [ "sndio" ]
++ sources += [
++ "openbsd/audio_manager_openbsd.cc",
++ "sndio/sndio_input.cc",
++ "sndio/sndio_input.h",
++ "sndio/sndio_output.cc",
++ "sndio/sndio_output.h"
++ ]
+ }
+
+ if (use_alsa) {
diff --git a/devel/electron6/files/patch-media_audio_alsa_audio__manager__alsa.cc b/devel/electron6/files/patch-media_audio_alsa_audio__manager__alsa.cc
new file mode 100644
index 000000000000..ca54de3a7a91
--- /dev/null
+++ b/devel/electron6/files/patch-media_audio_alsa_audio__manager__alsa.cc
@@ -0,0 +1,54 @@
+--- media/audio/alsa/audio_manager_alsa.cc.orig 2019-09-10 10:42:39 UTC
++++ media/audio/alsa/audio_manager_alsa.cc
+@@ -92,7 +92,9 @@ void AudioManagerAlsa::GetAlsaAudioDevices(StreamType
+ int card = -1;
+
+ // Loop through the sound cards to get ALSA device hints.
++#if defined(OS_LINUX)
+ while (!wrapper_->CardNext(&card) && card >= 0) {
++#endif
+ void** hints = NULL;
+ int error = wrapper_->DeviceNameHint(card, kPcmInterfaceName, &hints);
+ if (!error) {
+@@ -104,7 +106,9 @@ void AudioManagerAlsa::GetAlsaAudioDevices(StreamType
+ DLOG(WARNING) << "GetAlsaAudioDevices: unable to get device hints: "
+ << wrapper_->StrError(error);
+ }
++#if defined(OS_LINUX)
+ }
++#endif
+ }
+
+ void AudioManagerAlsa::GetAlsaDevicesInfo(AudioManagerAlsa::StreamType type,
+@@ -187,7 +191,11 @@ bool AudioManagerAlsa::IsAlsaDeviceAvailable(
+ // goes through software conversion if needed (e.g. incompatible
+ // sample rate).
+ // TODO(joi): Should we prefer "hw" instead?
++#ifdef OS_LINUX
+ static const char kDeviceTypeDesired[] = "plughw";
++#else
++ static const char kDeviceTypeDesired[] = "plug";
++#endif
+ return strncmp(kDeviceTypeDesired, device_name,
+ base::size(kDeviceTypeDesired) - 1) == 0;
+ }
+@@ -209,7 +217,9 @@ bool AudioManagerAlsa::HasAnyAlsaAudioDevice(
+ // Loop through the sound cards.
+ // Don't use snd_device_name_hint(-1,..) since there is a access violation
+ // inside this ALSA API with libasound.so.2.0.0.
++#if defined(OS_LINUX)
+ while (!wrapper_->CardNext(&card) && (card >= 0) && !has_device) {
++#endif
+ int error = wrapper_->DeviceNameHint(card, kPcmInterfaceName, &hints);
+ if (!error) {
+ for (void** hint_iter = hints; *hint_iter != NULL; hint_iter++) {
+@@ -233,7 +243,9 @@ bool AudioManagerAlsa::HasAnyAlsaAudioDevice(
+ DLOG(WARNING) << "HasAnyAudioDevice: unable to get device hints: "
+ << wrapper_->StrError(error);
+ }
++#if defined(OS_LINUX)
+ }
++#endif
+
+ return has_device;
+ }
diff --git a/devel/electron6/files/patch-media_audio_audio__input__device.cc b/devel/electron6/files/patch-media_audio_audio__input__device.cc
new file mode 100644
index 000000000000..09ea602535aa
--- /dev/null
+++ b/devel/electron6/files/patch-media_audio_audio__input__device.cc
@@ -0,0 +1,11 @@
+--- media/audio/audio_input_device.cc.orig 2019-09-10 11:14:07 UTC
++++ media/audio/audio_input_device.cc
+@@ -248,7 +248,7 @@ void AudioInputDevice::OnStreamCreated(
+ // also a risk of false positives if we are suspending when starting the stream
+ // here. See comments in AliveChecker and PowerObserverHelper for details and
+ // todos.
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ const bool stop_at_first_alive_notification = true;
+ const bool pause_check_during_suspend = false;
+ #else
diff --git a/devel/electron6/files/patch-media_audio_audio__manager.cc b/devel/electron6/files/patch-media_audio_audio__manager.cc
new file mode 100644
index 000000000000..a1c3ff9abd7b
--- /dev/null
+++ b/devel/electron6/files/patch-media_audio_audio__manager.cc
@@ -0,0 +1,29 @@
+--- media/audio/audio_manager.cc.orig 2019-09-10 10:42:39 UTC
++++ media/audio/audio_manager.cc
+@@ -48,7 +48,7 @@ class AudioManagerHelper {
+ }
+ #endif
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ void set_app_name(const std::string& app_name) { app_name_ = app_name; }
+ const std::string& app_name() const { return app_name_; }
+ #endif
+@@ -59,7 +59,7 @@ class AudioManagerHelper {
+ std::unique_ptr<base::win::ScopedCOMInitializer> com_initializer_for_testing_;
+ #endif
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ std::string app_name_;
+ #endif
+
+@@ -128,7 +128,7 @@ std::unique_ptr<AudioManager> AudioManager::CreateForT
+ return Create(std::move(audio_thread), GetHelper()->fake_log_factory());
+ }
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // static
+ void AudioManager::SetGlobalAppName(const std::string& app_name) {
+ GetHelper()->set_app_name(app_name);
diff --git a/devel/electron6/files/patch-media_audio_audio__manager.h b/devel/electron6/files/patch-media_audio_audio__manager.h
new file mode 100644
index 000000000000..39ae6502deaf
--- /dev/null
+++ b/devel/electron6/files/patch-media_audio_audio__manager.h
@@ -0,0 +1,11 @@
+--- media/audio/audio_manager.h.orig 2019-09-10 10:42:39 UTC
++++ media/audio/audio_manager.h
+@@ -60,7 +60,7 @@ class MEDIA_EXPORT AudioManager {
+ static std::unique_ptr<AudioManager> CreateForTesting(
+ std::unique_ptr<AudioThread> audio_thread);
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Sets the name of the audio source as seen by external apps. Only actually
+ // used with PulseAudio as of this writing.
+ static void SetGlobalAppName(const std::string& app_name);
diff --git a/devel/electron6/files/patch-media_audio_audio__output__proxy__unittest.cc b/devel/electron6/files/patch-media_audio_audio__output__proxy__unittest.cc
new file mode 100644
index 000000000000..68cf84e93d15
--- /dev/null
+++ b/devel/electron6/files/patch-media_audio_audio__output__proxy__unittest.cc
@@ -0,0 +1,11 @@
+--- media/audio/audio_output_proxy_unittest.cc.orig 2019-09-10 11:14:07 UTC
++++ media/audio/audio_output_proxy_unittest.cc
+@@ -412,7 +412,7 @@ class AudioOutputProxyTest : public testing::Test {
+ // |stream| is closed at this point. Start() should reopen it again.
+ EXPECT_CALL(manager(), MakeAudioOutputStream(_, _, _))
+ .Times(2)
+- .WillRepeatedly(Return(reinterpret_cast<AudioOutputStream*>(NULL)));
++ .WillRepeatedly(Return(static_cast<AudioOutputStream*>(NULL)));
+
+ EXPECT_CALL(callback_, OnError()).Times(2);
+
diff --git a/devel/electron6/files/patch-media_audio_pulse_pulse.sigs b/devel/electron6/files/patch-media_audio_pulse_pulse.sigs
new file mode 100644
index 000000000000..11c6213d55fc
--- /dev/null
+++ b/devel/electron6/files/patch-media_audio_pulse_pulse.sigs
@@ -0,0 +1,46 @@
+--- media/audio/pulse/pulse.sigs.orig 2019-09-10 10:42:39 UTC
++++ media/audio/pulse/pulse.sigs
+@@ -24,11 +24,11 @@ pa_operation* pa_context_get_source_info_by_index(pa_c
+ pa_operation* pa_context_get_source_info_by_name(pa_context* c, const char* name, pa_source_info_cb_t cb, void *userdata);
+ pa_operation* pa_context_get_source_info_list(pa_context* c, pa_source_info_cb_t cb, void* userdata);
+ pa_operation* pa_context_get_sink_info_list(pa_context* c, pa_sink_info_cb_t cb, void* userdata);
+-pa_context_state_t pa_context_get_state(pa_context* c);
++pa_context_state_t pa_context_get_state(const pa_context *c);
+ pa_context* pa_context_new(pa_mainloop_api* mainloop, const char* name);
+ pa_operation* pa_context_set_source_volume_by_index(pa_context* c, uint32_t idx, const pa_cvolume* volume, pa_context_success_cb_t cb, void* userdata);
+ void pa_context_set_state_callback(pa_context* c, pa_context_notify_cb_t cb, void* userdata);
+-pa_operation_state_t pa_operation_get_state(pa_operation* o);
++pa_operation_state_t pa_operation_get_state(const pa_operation* o);
+ void pa_context_unref(pa_context* c);
+ void pa_operation_unref(pa_operation* o);
+ int pa_stream_begin_write(pa_stream* p, void** data, size_t* nbytes);
+@@ -38,23 +38,23 @@ pa_operation* pa_stream_cork(pa_stream* s, int b, pa_s
+ int pa_stream_disconnect(pa_stream* s);
+ int pa_stream_drop(pa_stream *p);
+ pa_operation* pa_stream_flush(pa_stream* s, pa_stream_success_cb_t cb, void* userdata);
+-uint32_t pa_stream_get_device_index(pa_stream* s);
++uint32_t pa_stream_get_device_index(const pa_stream* s);
+ int pa_stream_get_latency(pa_stream* s, pa_usec_t* r_usec, int* negative);
+-pa_stream_state_t pa_stream_get_state(pa_stream* p);
++pa_stream_state_t pa_stream_get_state(const pa_stream* p);
+ pa_stream* pa_stream_new(pa_context* c, const char* name, const pa_sample_spec* ss, const pa_channel_map * map);
+ pa_stream* pa_stream_new_with_proplist(pa_context* c, const char* name, const pa_sample_spec* ss, const pa_channel_map* map, pa_proplist* p);
+ pa_proplist* pa_proplist_new(void);
+-int pa_proplist_contains(pa_proplist* p, const char* key);
++int pa_proplist_contains(const pa_proplist* p, const char* key);
+ void pa_proplist_free(pa_proplist* p);
+-const char* pa_proplist_gets(pa_proplist* p, const char* key);
++const char* pa_proplist_gets(const pa_proplist* p, const char* key);
+ int pa_proplist_sets(pa_proplist* p, const char* key, const char* value);
+-size_t pa_stream_readable_size(pa_stream *p);
++size_t pa_stream_readable_size(const pa_stream *p);
+ int pa_stream_peek(pa_stream* p, const void** data, size_t* nbytes);
+ void pa_stream_set_read_callback(pa_stream* p, pa_stream_request_cb_t cb, void* userdata);
+ void pa_stream_set_state_callback(pa_stream* s, pa_stream_notify_cb_t cb, void* userdata);
+ int pa_stream_write(pa_stream* p, const void* data, size_t nbytes, pa_free_cb_t free_cb, int64_t offset, pa_seek_mode_t seek);
+ void pa_stream_set_write_callback(pa_stream *p, pa_stream_request_cb_t cb, void *userdata);
+ void pa_stream_unref(pa_stream* s);
+-int pa_context_errno(pa_context *c);
++int pa_context_errno(const pa_context *c);
+ const char* pa_strerror(int error);
+ pa_cvolume* pa_cvolume_set(pa_cvolume* a, unsigned channels, pa_volume_t v);
diff --git a/devel/electron6/files/patch-media_base_audio__latency.cc b/devel/electron6/files/patch-media_base_audio__latency.cc
new file mode 100644
index 000000000000..dd0ffda791c3
--- /dev/null
+++ b/devel/electron6/files/patch-media_base_audio__latency.cc
@@ -0,0 +1,11 @@
+--- media/base/audio_latency.cc.orig 2019-09-10 10:42:39 UTC
++++ media/base/audio_latency.cc
+@@ -106,7 +106,7 @@ int AudioLatency::GetRtcBufferSize(int sample_rate, in
+ return frames_per_buffer;
+ }
+
+-#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_FUCHSIA)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_FUCHSIA) || defined(OS_BSD)
+ // On Linux, MacOS and Fuchsia, the low level IO implementations on the
+ // browser side supports all buffer size the clients want. We use the native
+ // peer connection buffer size (10ms) to achieve best possible performance.
diff --git a/devel/electron6/files/patch-media_base_scopedfd__helper.h b/devel/electron6/files/patch-media_base_scopedfd__helper.h
new file mode 100644
index 000000000000..00afd606a053
--- /dev/null
+++ b/devel/electron6/files/patch-media_base_scopedfd__helper.h
@@ -0,0 +1,19 @@
+--- media/base/scopedfd_helper.h.orig 2019-09-10 11:14:07 UTC
++++ media/base/scopedfd_helper.h
+@@ -14,14 +14,14 @@ namespace media {
+ // since the only current user is V4L2 we are limiting the scope to OS_LINUX so
+ // the binary size does not inflate on non-using systems. Feel free to adapt
+ // this and BUILD.gn as our needs evolve.
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+
+ // Return a new vector containing duplicates of |fds|, or an empty vector in
+ // case of error.
+ MEDIA_EXPORT std::vector<base::ScopedFD> DuplicateFDs(
+ const std::vector<base::ScopedFD>& fds);
+
+-#endif // OS_LINUX
++#endif // OS_LINUX || OS_BSD
+
+ } // namespace media
+
diff --git a/devel/electron6/files/patch-media_base_video__frame.cc b/devel/electron6/files/patch-media_base_video__frame.cc
new file mode 100644
index 000000000000..939baf50ecc6
--- /dev/null
+++ b/devel/electron6/files/patch-media_base_video__frame.cc
@@ -0,0 +1,47 @@
+--- media/base/video_frame.cc.orig 2019-09-10 11:14:07 UTC
++++ media/base/video_frame.cc
+@@ -53,7 +53,7 @@ static std::string StorageTypeToString(
+ return "OWNED_MEMORY";
+ case VideoFrame::STORAGE_SHMEM:
+ return "SHMEM";
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ case VideoFrame::STORAGE_DMABUFS:
+ return "DMABUFS";
+ #endif
+@@ -68,7 +68,7 @@ static std::string StorageTypeToString(
+ // static
+ bool VideoFrame::IsStorageTypeMappable(VideoFrame::StorageType storage_type) {
+ return
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // This is not strictly needed but makes explicit that, at VideoFrame
+ // level, DmaBufs are not mappable from userspace.
+ storage_type != VideoFrame::STORAGE_DMABUFS &&
+@@ -495,7 +495,7 @@ scoped_refptr<VideoFrame> VideoFrame::WrapExternalYuva
+ return frame;
+ }
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // static
+ scoped_refptr<VideoFrame> VideoFrame::WrapExternalDmabufs(
+ const VideoFrameLayout& layout,
+@@ -626,7 +626,7 @@ scoped_refptr<VideoFrame> VideoFrame::WrapVideoFrame(
+ }
+ }
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // If there are any |dmabuf_fds_| plugged in, we should duplicate them.
+ if (frame.storage_type() == STORAGE_DMABUFS) {
+ wrapping_frame->dmabuf_fds_ = DuplicateFDs(frame.dmabuf_fds_);
+@@ -950,7 +950,7 @@ size_t VideoFrame::shared_memory_offset() const {
+ return shared_memory_offset_;
+ }
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ const std::vector<base::ScopedFD>& VideoFrame::DmabufFds() const {
+ DCHECK_EQ(storage_type_, STORAGE_DMABUFS);
+
diff --git a/devel/electron6/files/patch-media_base_video__frame.h b/devel/electron6/files/patch-media_base_video__frame.h
new file mode 100644
index 000000000000..7a5160bcc8eb
--- /dev/null
+++ b/devel/electron6/files/patch-media_base_video__frame.h
@@ -0,0 +1,38 @@
+--- media/base/video_frame.h.orig 2019-09-10 11:14:07 UTC
++++ media/base/video_frame.h
+@@ -74,7 +74,7 @@ class MEDIA_EXPORT VideoFrame : public base::RefCounte
+ STORAGE_UNOWNED_MEMORY = 2, // External, non owned data pointers.
+ STORAGE_OWNED_MEMORY = 3, // VideoFrame has allocated its own data buffer.
+ STORAGE_SHMEM = 4, // Pixels are backed by Shared Memory.
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // TODO(mcasas): Consider turning this type into STORAGE_NATIVE
+ // based on the idea of using this same enum value for both DMA
+ // buffers on Linux and CVPixelBuffers on Mac (which currently use
+@@ -268,7 +268,7 @@ class MEDIA_EXPORT VideoFrame : public base::RefCounte
+ uint8_t* a_data,
+ base::TimeDelta timestamp);
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Wraps provided dmabufs
+ // (https://www.kernel.org/doc/html/latest/driver-api/dma-buf.html) with a
+ // VideoFrame. The frame will take ownership of |dmabuf_fds|, and will
+@@ -464,7 +464,7 @@ class MEDIA_EXPORT VideoFrame : public base::RefCounte
+ // Returns the offset into the shared memory where the frame data begins.
+ size_t shared_memory_offset() const;
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Returns a vector containing the backing DmaBufs for this frame. The number
+ // of returned DmaBufs will be equal or less than the number of planes of
+ // the frame. If there are less, this means that the last FD contains the
+@@ -663,7 +663,7 @@ class MEDIA_EXPORT VideoFrame : public base::RefCounte
+ // memory.
+ size_t shared_memory_offset_;
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Dmabufs for the frame, used when storage is STORAGE_DMABUFS. Size is either
+ // equal or less than the number of planes of the frame. If it is less, then
+ // the memory area represented by the last FD contains the remaining planes.
diff --git a/devel/electron6/files/patch-media_capture_video_create__video__capture__device__factory.cc b/devel/electron6/files/patch-media_capture_video_create__video__capture__device__factory.cc
new file mode 100644
index 000000000000..f376c63293a8
--- /dev/null
+++ b/devel/electron6/files/patch-media_capture_video_create__video__capture__device__factory.cc
@@ -0,0 +1,20 @@
+--- media/capture/video/create_video_capture_device_factory.cc.orig 2019-09-10 11:14:08 UTC
++++ media/capture/video/create_video_capture_device_factory.cc
+@@ -10,7 +10,7 @@
+ #include "media/capture/video/fake_video_capture_device_factory.h"
+ #include "media/capture/video/file_video_capture_device_factory.h"
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ #include "media/capture/video/linux/video_capture_device_factory_linux.h"
+ #elif defined(OS_CHROMEOS)
+ #include "media/capture/video/chromeos/public/cros_features.h"
+@@ -33,7 +33,7 @@ namespace {
+ std::unique_ptr<VideoCaptureDeviceFactory>
+ CreatePlatformSpecificVideoCaptureDeviceFactory(
+ scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner) {
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ return std::make_unique<VideoCaptureDeviceFactoryLinux>(ui_task_runner);
+ #elif defined(OS_CHROMEOS)
+ // On Chrome OS we have to support two use cases:
diff --git a/devel/electron6/files/patch-media_capture_video_fake__video__capture__device__factory.cc b/devel/electron6/files/patch-media_capture_video_fake__video__capture__device__factory.cc
new file mode 100644
index 000000000000..401cc0a40f7b
--- /dev/null
+++ b/devel/electron6/files/patch-media_capture_video_fake__video__capture__device__factory.cc
@@ -0,0 +1,11 @@
+--- media/capture/video/fake_video_capture_device_factory.cc.orig 2019-09-10 11:14:08 UTC
++++ media/capture/video/fake_video_capture_device_factory.cc
+@@ -202,7 +202,7 @@ void FakeVideoCaptureDeviceFactory::GetDeviceDescripto
+ for (const auto& entry : devices_config_) {
+ device_descriptors->emplace_back(
+ base::StringPrintf("fake_device_%d", entry_index), entry.device_id,
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ VideoCaptureApi::LINUX_V4L2_SINGLE_PLANE
+ #elif defined(OS_MACOSX)
+ VideoCaptureApi::MACOSX_AVFOUNDATION
diff --git a/devel/electron6/files/patch-media_capture_video_file__video__capture__device__factory.cc b/devel/electron6/files/patch-media_capture_video_file__video__capture__device__factory.cc
new file mode 100644
index 000000000000..f945710bd63a
--- /dev/null
+++ b/devel/electron6/files/patch-media_capture_video_file__video__capture__device__factory.cc
@@ -0,0 +1,11 @@
+--- media/capture/video/file_video_capture_device_factory.cc.orig 2019-09-10 10:42:40 UTC
++++ media/capture/video/file_video_capture_device_factory.cc
+@@ -54,7 +54,7 @@ void FileVideoCaptureDeviceFactory::GetDeviceDescripto
+ #elif defined(OS_MACOSX)
+ command_line_file_path.value(), kFileVideoCaptureDeviceName,
+ VideoCaptureApi::MACOSX_AVFOUNDATION
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ command_line_file_path.value(), kFileVideoCaptureDeviceName,
+ VideoCaptureApi::LINUX_V4L2_SINGLE_PLANE
+ #else
diff --git a/devel/electron6/files/patch-media_capture_video_linux_v4l2__capture__delegate.cc b/devel/electron6/files/patch-media_capture_video_linux_v4l2__capture__delegate.cc
new file mode 100644
index 000000000000..10f10b7eda2c
--- /dev/null
+++ b/devel/electron6/files/patch-media_capture_video_linux_v4l2__capture__delegate.cc
@@ -0,0 +1,26 @@
+--- media/capture/video/linux/v4l2_capture_delegate.cc.orig 2019-09-10 11:14:08 UTC
++++ media/capture/video/linux/v4l2_capture_delegate.cc
+@@ -4,8 +4,10 @@
+
+ #include "media/capture/video/linux/v4l2_capture_delegate.h"
+
++#if !defined(OS_BSD)
+ #include <linux/version.h>
+ #include <linux/videodev2.h>
++#endif
+ #include <poll.h>
+ #include <sys/fcntl.h>
+ #include <sys/ioctl.h>
+@@ -24,10 +26,10 @@
+
+ using media::mojom::MeteringMode;
+
+-#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 6, 0)
++// #if LINUX_VERSION_CODE < KERNEL_VERSION(4, 6, 0)
+ // 16 bit depth, Realsense F200.
+ #define V4L2_PIX_FMT_Z16 v4l2_fourcc('Z', '1', '6', ' ')
+-#endif
++// #endif
+
+ // TODO(aleksandar.stojiljkovic): Wrap this with kernel version check once the
+ // format is introduced to kernel.
diff --git a/devel/electron6/files/patch-media_capture_video_linux_video__capture__device__factory__linux.cc b/devel/electron6/files/patch-media_capture_video_linux_video__capture__device__factory__linux.cc
new file mode 100644
index 000000000000..895a18d2d9e5
--- /dev/null
+++ b/devel/electron6/files/patch-media_capture_video_linux_video__capture__device__factory__linux.cc
@@ -0,0 +1,32 @@
+--- media/capture/video/linux/video_capture_device_factory_linux.cc.orig 2019-09-10 11:14:08 UTC
++++ media/capture/video/linux/video_capture_device_factory_linux.cc
+@@ -259,6 +259,7 @@ bool VideoCaptureDeviceFactoryLinux::HasUsableFormats(
+ if (!(capabilities & V4L2_CAP_VIDEO_CAPTURE))
+ return false;
+
++#if !defined(OS_FREEBSD)
+ const std::vector<uint32_t>& usable_fourccs =
+ VideoCaptureDeviceLinux::GetListOfUsableFourCCs(false);
+ v4l2_fmtdesc fmtdesc = {};
+@@ -267,6 +268,7 @@ bool VideoCaptureDeviceFactoryLinux::HasUsableFormats(
+ if (base::ContainsValue(usable_fourccs, fmtdesc.pixelformat))
+ return true;
+ }
++#endif
+
+ DVLOG(1) << "No usable formats found";
+ return false;
+@@ -312,9 +314,13 @@ void VideoCaptureDeviceFactoryLinux::GetSupportedForma
+ v4l2_format.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
+ for (; DoIoctl(fd, VIDIOC_ENUM_FMT, &v4l2_format) == 0; ++v4l2_format.index) {
+ VideoCaptureFormat supported_format;
++#if !defined(OS_FREEBSD)
+ supported_format.pixel_format =
+ VideoCaptureDeviceLinux::V4l2FourCcToChromiumPixelFormat(
+ v4l2_format.pixelformat);
++#else
++ supported_format.pixel_format = PIXEL_FORMAT_UNKNOWN;
++#endif
+
+ if (supported_format.pixel_format == PIXEL_FORMAT_UNKNOWN)
+ continue;
diff --git a/devel/electron6/files/patch-media_capture_video_linux_video__capture__device__linux.cc b/devel/electron6/files/patch-media_capture_video_linux_video__capture__device__linux.cc
new file mode 100644
index 000000000000..0009f51fe11b
--- /dev/null
+++ b/devel/electron6/files/patch-media_capture_video_linux_video__capture__device__linux.cc
@@ -0,0 +1,61 @@
+--- media/capture/video/linux/video_capture_device_linux.cc.orig 2019-09-10 10:42:40 UTC
++++ media/capture/video/linux/video_capture_device_linux.cc
+@@ -37,6 +37,7 @@ int TranslatePowerLineFrequencyToV4L2(PowerLineFrequen
+
+ } // namespace
+
++#if !defined(OS_FREEBSD)
+ // Translates Video4Linux pixel formats to Chromium pixel formats.
+ // static
+ VideoPixelFormat VideoCaptureDeviceLinux::V4l2FourCcToChromiumPixelFormat(
+@@ -50,6 +51,7 @@ std::vector<uint32_t> VideoCaptureDeviceLinux::GetList
+ bool favour_mjpeg) {
+ return V4L2CaptureDelegate::GetListOfUsableFourCcs(favour_mjpeg);
+ }
++#endif // !defined(OS_FREEBSD)
+
+ VideoCaptureDeviceLinux::VideoCaptureDeviceLinux(
+ scoped_refptr<V4L2CaptureDevice> v4l2,
+@@ -71,6 +73,7 @@ void VideoCaptureDeviceLinux::AllocateAndStart(
+ const VideoCaptureParams& params,
+ std::unique_ptr<VideoCaptureDevice::Client> client) {
+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
++#if !defined(OS_FREEBSD)
+ DCHECK(!capture_impl_);
+ if (v4l2_thread_.IsRunning())
+ return; // Wrong state.
+@@ -98,10 +101,12 @@ void VideoCaptureDeviceLinux::AllocateAndStart(
+ for (auto& request : photo_requests_queue_)
+ v4l2_thread_.task_runner()->PostTask(FROM_HERE, std::move(request));
+ photo_requests_queue_.clear();
++#endif // !defined(OS_FREEBSD)
+ }
+
+ void VideoCaptureDeviceLinux::StopAndDeAllocate() {
+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
++#if !defined(OS_FREEBSD)
+ if (!v4l2_thread_.IsRunning())
+ return; // Wrong state.
+ v4l2_thread_.task_runner()->PostTask(
+@@ -111,6 +116,7 @@ void VideoCaptureDeviceLinux::StopAndDeAllocate() {
+ v4l2_thread_.Stop();
+
+ capture_impl_ = nullptr;
++#endif // !defined(OS_FREEBSD)
+ }
+
+ void VideoCaptureDeviceLinux::TakePhoto(TakePhotoCallback callback) {
+@@ -158,11 +164,13 @@ void VideoCaptureDeviceLinux::SetPhotoOptions(
+ void VideoCaptureDeviceLinux::SetRotation(int rotation) {
+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+ rotation_ = rotation;
++#if !defined(OS_FREEBSD)
+ if (v4l2_thread_.IsRunning()) {
+ v4l2_thread_.task_runner()->PostTask(
+ FROM_HERE, base::BindOnce(&V4L2CaptureDelegate::SetRotation,
+ capture_impl_->GetWeakPtr(), rotation));
+ }
++#endif // !defined(OS_FREEBSD)
+ }
+
+ } // namespace media
diff --git a/devel/electron6/files/patch-media_capture_video_mock__gpu__memory__buffer__manager.cc b/devel/electron6/files/patch-media_capture_video_mock__gpu__memory__buffer__manager.cc
new file mode 100644
index 000000000000..b0cab44ec6e3
--- /dev/null
+++ b/devel/electron6/files/patch-media_capture_video_mock__gpu__memory__buffer__manager.cc
@@ -0,0 +1,11 @@
+--- media/capture/video/mock_gpu_memory_buffer_manager.cc.orig 2019-09-10 10:42:40 UTC
++++ media/capture/video/mock_gpu_memory_buffer_manager.cc
+@@ -115,7 +115,7 @@ class FakeGpuMemoryBuffer : public gfx::GpuMemoryBuffe
+ gfx::GpuMemoryBufferHandle handle;
+ handle.type = gfx::NATIVE_PIXMAP;
+ handle.id = handle_.id;
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ handle.native_pixmap_handle =
+ gfx::CloneHandleForIPC(handle_.native_pixmap_handle);
+ #endif
diff --git a/devel/electron6/files/patch-media_capture_video_shared__memory__handle__provider.cc b/devel/electron6/files/patch-media_capture_video_shared__memory__handle__provider.cc
new file mode 100644
index 000000000000..758c0bf1d1ea
--- /dev/null
+++ b/devel/electron6/files/patch-media_capture_video_shared__memory__handle__provider.cc
@@ -0,0 +1,20 @@
+--- media/capture/video/shared_memory_handle_provider.cc.orig 2019-09-10 11:14:08 UTC
++++ media/capture/video/shared_memory_handle_provider.cc
+@@ -63,7 +63,7 @@ bool SharedMemoryHandleProvider::InitFromMojoHandle(
+ return true;
+ }
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ bool SharedMemoryHandleProvider::InitAsReadOnlyFromRawFileDescriptor(
+ mojo::ScopedHandle fd_handle,
+ uint32_t memory_size_in_bytes) {
+@@ -80,7 +80,7 @@ bool SharedMemoryHandleProvider::InitAsReadOnlyFromRaw
+ shared_memory_.emplace(memory_handle, read_only_flag_);
+ return true;
+ }
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+
+ mojo::ScopedSharedBufferHandle
+ SharedMemoryHandleProvider::GetHandleForInterProcessTransit(bool read_only) {
diff --git a/devel/electron6/files/patch-media_capture_video_shared__memory__handle__provider.h b/devel/electron6/files/patch-media_capture_video_shared__memory__handle__provider.h
new file mode 100644
index 000000000000..6702558c99e4
--- /dev/null
+++ b/devel/electron6/files/patch-media_capture_video_shared__memory__handle__provider.h
@@ -0,0 +1,15 @@
+--- media/capture/video/shared_memory_handle_provider.h.orig 2019-09-10 11:14:08 UTC
++++ media/capture/video/shared_memory_handle_provider.h
+@@ -38,10 +38,10 @@ class CAPTURE_EXPORT SharedMemoryHandleProvider
+
+ // This requires platforms where base::SharedMemoryHandle is backed by a
+ // file descriptor.
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ bool InitAsReadOnlyFromRawFileDescriptor(mojo::ScopedHandle fd_handle,
+ uint32_t memory_size_in_bytes);
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+
+ uint32_t GetMemorySizeInBytes();
+
diff --git a/devel/electron6/files/patch-media_capture_video_video__capture__buffer__pool__impl.cc b/devel/electron6/files/patch-media_capture_video_video__capture__buffer__pool__impl.cc
new file mode 100644
index 000000000000..e53f32c42a67
--- /dev/null
+++ b/devel/electron6/files/patch-media_capture_video_video__capture__buffer__pool__impl.cc
@@ -0,0 +1,11 @@
+--- media/capture/video/video_capture_buffer_pool_impl.cc.orig 2019-09-10 11:14:08 UTC
++++ media/capture/video/video_capture_buffer_pool_impl.cc
+@@ -58,7 +58,7 @@ VideoCaptureBufferPoolImpl::CreateSharedMemoryViaRawFi
+ int buffer_id) {
+ // This requires platforms where base::SharedMemoryHandle is backed by a
+ // file descriptor.
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ base::AutoLock lock(lock_);
+
+ VideoCaptureBufferTracker* tracker = GetTracker(buffer_id);
diff --git a/devel/electron6/files/patch-media_capture_video_video__capture__device__client.cc b/devel/electron6/files/patch-media_capture_video_video__capture__device__client.cc
new file mode 100644
index 000000000000..5e09b5d2adae
--- /dev/null
+++ b/devel/electron6/files/patch-media_capture_video_video__capture__device__client.cc
@@ -0,0 +1,11 @@
+--- media/capture/video/video_capture_device_client.cc.orig 2019-09-10 11:14:08 UTC
++++ media/capture/video/video_capture_device_client.cc
+@@ -298,7 +298,7 @@ void VideoCaptureDeviceClient::OnIncomingCapturedData(
+ // see http://linuxtv.org/downloads/v4l-dvb-apis/packed-rgb.html.
+ // Windows RGB24 defines blue at lowest byte,
+ // see https://msdn.microsoft.com/en-us/library/windows/desktop/dd407253
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ fourcc_format = libyuv::FOURCC_RAW;
+ #elif defined(OS_WIN)
+ fourcc_format = libyuv::FOURCC_24BG;
diff --git a/devel/electron6/files/patch-media_filters_vp9__parser.h b/devel/electron6/files/patch-media_filters_vp9__parser.h
new file mode 100644
index 000000000000..137b79b0ed90
--- /dev/null
+++ b/devel/electron6/files/patch-media_filters_vp9__parser.h
@@ -0,0 +1,10 @@
+--- media/filters/vp9_parser.h.orig 2019-09-10 11:14:08 UTC
++++ media/filters/vp9_parser.h
+@@ -14,6 +14,7 @@
+
+ #include <stddef.h>
+ #include <stdint.h>
++#include <unistd.h>
+ #include <sys/types.h>
+
+ #include <memory>
diff --git a/devel/electron6/files/patch-media_formats_common_offset__byte__queue.cc b/devel/electron6/files/patch-media_formats_common_offset__byte__queue.cc
new file mode 100644
index 000000000000..2c56e226bae4
--- /dev/null
+++ b/devel/electron6/files/patch-media_formats_common_offset__byte__queue.cc
@@ -0,0 +1,20 @@
+--- media/formats/common/offset_byte_queue.cc.orig 2019-09-10 10:42:40 UTC
++++ media/formats/common/offset_byte_queue.cc
+@@ -46,13 +46,13 @@ void OffsetByteQueue::PeekAt(int64_t offset, const uin
+ *size = tail() - offset;
+ }
+
+-bool OffsetByteQueue::Trim(int64_t max_offset) {
+- if (max_offset < head_) return true;
+- if (max_offset > tail()) {
++bool OffsetByteQueue::Trim(int64_t _max_offset) {
++ if (_max_offset < head_) return true;
++ if (_max_offset > tail()) {
+ Pop(size_);
+ return false;
+ }
+- Pop(max_offset - head_);
++ Pop(_max_offset - head_);
+ return true;
+ }
+
diff --git a/devel/electron6/files/patch-media_formats_common_offset__byte__queue.h b/devel/electron6/files/patch-media_formats_common_offset__byte__queue.h
new file mode 100644
index 000000000000..331c1ce0e6b0
--- /dev/null
+++ b/devel/electron6/files/patch-media_formats_common_offset__byte__queue.h
@@ -0,0 +1,22 @@
+--- media/formats/common/offset_byte_queue.h.orig 2019-09-10 10:42:40 UTC
++++ media/formats/common/offset_byte_queue.h
+@@ -36,15 +36,15 @@ class MEDIA_EXPORT OffsetByteQueue {
+ // a null |buf| and a |size| of zero.
+ void PeekAt(int64_t offset, const uint8_t** buf, int* size);
+
+- // Marks the bytes up to (but not including) |max_offset| as ready for
++ // Marks the bytes up to (but not including) |_max_offset| as ready for
+ // deletion. This is relatively inexpensive, but will not necessarily reduce
+ // the resident buffer size right away (or ever).
+ //
+ // Returns true if the full range of bytes were successfully trimmed,
+- // including the case where |max_offset| is less than the current head.
+- // Returns false if |max_offset| > tail() (although all bytes currently
++ // including the case where |_max_offset| is less than the current head.
++ // Returns false if |_max_offset| > tail() (although all bytes currently
+ // buffered are still cleared).
+- bool Trim(int64_t max_offset);
++ bool Trim(int64_t _max_offset);
+
+ // The head and tail positions, in terms of the file's absolute offsets.
+ // tail() is an exclusive bound.
diff --git a/devel/electron6/files/patch-media_formats_mp2t_es__parser__adts.cc b/devel/electron6/files/patch-media_formats_mp2t_es__parser__adts.cc
new file mode 100644
index 000000000000..2a609551f072
--- /dev/null
+++ b/devel/electron6/files/patch-media_formats_mp2t_es__parser__adts.cc
@@ -0,0 +1,26 @@
+--- media/formats/mp2t/es_parser_adts.cc.orig 2019-09-10 10:42:40 UTC
++++ media/formats/mp2t/es_parser_adts.cc
+@@ -62,11 +62,11 @@ bool EsParserAdts::LookForAdtsFrame(AdtsFrame* adts_fr
+ const uint8_t* es;
+ es_queue_->Peek(&es, &es_size);
+
+- int max_offset = es_size - kADTSHeaderMinSize;
+- if (max_offset <= 0)
++ int _max_offset = es_size - kADTSHeaderMinSize;
++ if (_max_offset <= 0)
+ return false;
+
+- for (int offset = 0; offset < max_offset; offset++) {
++ for (int offset = 0; offset < _max_offset; offset++) {
+ const uint8_t* cur_buf = &es[offset];
+ if (!isAdtsSyncWord(cur_buf))
+ continue;
+@@ -106,7 +106,7 @@ bool EsParserAdts::LookForAdtsFrame(AdtsFrame* adts_fr
+ return true;
+ }
+
+- es_queue_->Pop(max_offset);
++ es_queue_->Pop(_max_offset);
+ return false;
+ }
+
diff --git a/devel/electron6/files/patch-media_formats_mp2t_es__parser__mpeg1audio.cc b/devel/electron6/files/patch-media_formats_mp2t_es__parser__mpeg1audio.cc
new file mode 100644
index 000000000000..204750388c06
--- /dev/null
+++ b/devel/electron6/files/patch-media_formats_mp2t_es__parser__mpeg1audio.cc
@@ -0,0 +1,26 @@
+--- media/formats/mp2t/es_parser_mpeg1audio.cc.orig 2019-09-10 10:42:40 UTC
++++ media/formats/mp2t/es_parser_mpeg1audio.cc
+@@ -108,11 +108,11 @@ bool EsParserMpeg1Audio::LookForMpeg1AudioFrame(
+ const uint8_t* es;
+ es_queue_->Peek(&es, &es_size);
+
+- int max_offset = es_size - MPEG1AudioStreamParser::kHeaderSize;
+- if (max_offset <= 0)
++ int _max_offset = es_size - MPEG1AudioStreamParser::kHeaderSize;
++ if (_max_offset <= 0)
+ return false;
+
+- for (int offset = 0; offset < max_offset; offset++) {
++ for (int offset = 0; offset < _max_offset; offset++) {
+ const uint8_t* cur_buf = &es[offset];
+ if (cur_buf[0] != 0xff)
+ continue;
+@@ -153,7 +153,7 @@ bool EsParserMpeg1Audio::LookForMpeg1AudioFrame(
+ return true;
+ }
+
+- es_queue_->Pop(max_offset);
++ es_queue_->Pop(_max_offset);
+ return false;
+ }
+
diff --git a/devel/electron6/files/patch-media_gpu_libyuv__image__processor.cc b/devel/electron6/files/patch-media_gpu_libyuv__image__processor.cc
new file mode 100644
index 000000000000..6a29a4e3ec19
--- /dev/null
+++ b/devel/electron6/files/patch-media_gpu_libyuv__image__processor.cc
@@ -0,0 +1,38 @@
+--- media/gpu/libyuv_image_processor.cc.orig 2019-09-10 11:14:08 UTC
++++ media/gpu/libyuv_image_processor.cc
+@@ -91,7 +91,7 @@ std::unique_ptr<LibYUVImageProcessor> LibYUVImageProce
+ // LibYUVImageProcessor supports only memory-based video frame for input.
+ VideoFrame::StorageType input_storage_type = VideoFrame::STORAGE_UNKNOWN;
+ for (auto input_type : input_config.preferred_storage_types) {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ if (input_type == VideoFrame::STORAGE_DMABUFS) {
+ video_frame_mapper = VideoFrameMapperFactory::CreateMapper(
+ input_config.layout.format(), true);
+@@ -100,7 +100,7 @@ std::unique_ptr<LibYUVImageProcessor> LibYUVImageProce
+ break;
+ }
+ }
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+
+ if (VideoFrame::IsStorageTypeMappable(input_type)) {
+ input_storage_type = input_type;
+@@ -203,7 +203,7 @@ void LibYUVImageProcessor::ProcessTask(scoped_refptr<V
+ FrameReadyCB cb) {
+ DCHECK(process_thread_.task_runner()->BelongsToCurrentThread());
+ DVLOGF(4);
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ if (input_frame->storage_type() == VideoFrame::STORAGE_DMABUFS) {
+ DCHECK_NE(video_frame_mapper_.get(), nullptr);
+ input_frame = video_frame_mapper_->Map(std::move(input_frame));
+@@ -213,7 +213,7 @@ void LibYUVImageProcessor::ProcessTask(scoped_refptr<V
+ return;
+ }
+ }
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+
+ int res = DoConversion(input_frame.get(), output_frame.get());
+ if (res != 0) {
diff --git a/devel/electron6/files/patch-media_gpu_linux_platform__video__frame__utils.cc b/devel/electron6/files/patch-media_gpu_linux_platform__video__frame__utils.cc
new file mode 100644
index 000000000000..439f3c046068
--- /dev/null
+++ b/devel/electron6/files/patch-media_gpu_linux_platform__video__frame__utils.cc
@@ -0,0 +1,20 @@
+--- media/gpu/linux/platform_video_frame_utils.cc.orig 2019-09-10 11:14:08 UTC
++++ media/gpu/linux/platform_video_frame_utils.cc
+@@ -107,7 +107,7 @@ gfx::GpuMemoryBufferHandle CreateGpuMemoryBufferHandle
+ DCHECK(video_frame);
+
+ gfx::GpuMemoryBufferHandle handle;
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ handle.type = gfx::NATIVE_PIXMAP;
+
+ std::vector<base::ScopedFD> duped_fds =
+@@ -126,7 +126,7 @@ gfx::GpuMemoryBufferHandle CreateGpuMemoryBufferHandle
+ }
+ #else
+ NOTREACHED();
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+ return handle;
+ }
+
diff --git a/devel/electron6/files/patch-media_gpu_vaapi_vaapi__dmabuf__video__frame__mapper.cc b/devel/electron6/files/patch-media_gpu_vaapi_vaapi__dmabuf__video__frame__mapper.cc
new file mode 100644
index 000000000000..cdbbdfe203e3
--- /dev/null
+++ b/devel/electron6/files/patch-media_gpu_vaapi_vaapi__dmabuf__video__frame__mapper.cc
@@ -0,0 +1,20 @@
+--- media/gpu/vaapi/vaapi_dmabuf_video_frame_mapper.cc.orig 2019-09-10 11:14:08 UTC
++++ media/gpu/vaapi/vaapi_dmabuf_video_frame_mapper.cc
+@@ -15,7 +15,7 @@
+ #include "media/gpu/vaapi/vaapi_wrapper.h"
+ #include "media/video/picture.h"
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include "media/gpu/linux/platform_video_frame_utils.h"
+ #endif
+
+@@ -137,7 +137,7 @@ scoped_refptr<VideoFrame> VaapiDmaBufVideoFrameMapper:
+ }
+
+ gfx::GpuMemoryBufferHandle gmb_handle;
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ gmb_handle = CreateGpuMemoryBufferHandle(video_frame.get());
+ #endif
+ if (gmb_handle.is_null()) {
diff --git a/devel/electron6/files/patch-media_gpu_vaapi_vaapi__video__encode__accelerator.cc b/devel/electron6/files/patch-media_gpu_vaapi_vaapi__video__encode__accelerator.cc
new file mode 100644
index 000000000000..2d4e3b41aa73
--- /dev/null
+++ b/devel/electron6/files/patch-media_gpu_vaapi_vaapi__video__encode__accelerator.cc
@@ -0,0 +1,20 @@
+--- media/gpu/vaapi/vaapi_video_encode_accelerator.cc.orig 2019-09-10 11:14:08 UTC
++++ media/gpu/vaapi/vaapi_video_encode_accelerator.cc
+@@ -41,7 +41,7 @@
+ #include "media/gpu/vp8_reference_frame_vector.h"
+ #include "media/gpu/vp9_reference_frame_vector.h"
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include "media/gpu/linux/platform_video_frame_utils.h"
+ #endif
+
+@@ -558,7 +558,7 @@ scoped_refptr<VaapiEncodeJob> VaapiVideoEncodeAccelera
+ vaapi_wrapper_, MakeGLContextCurrentCallback(), BindGLImageCallback(),
+ PictureBuffer(kDummyPictureBufferId, frame->coded_size()));
+ gfx::GpuMemoryBufferHandle gmb_handle;
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ gmb_handle = CreateGpuMemoryBufferHandle(frame.get());
+ #endif
+ if (gmb_handle.is_null()) {
diff --git a/devel/electron6/files/patch-media_gpu_video__frame__mapper__factory.cc b/devel/electron6/files/patch-media_gpu_video__frame__mapper__factory.cc
new file mode 100644
index 000000000000..31b7c2bd8fe3
--- /dev/null
+++ b/devel/electron6/files/patch-media_gpu_video__frame__mapper__factory.cc
@@ -0,0 +1,51 @@
+--- media/gpu/video_frame_mapper_factory.cc.orig 2019-09-10 11:14:08 UTC
++++ media/gpu/video_frame_mapper_factory.cc
+@@ -7,38 +7,38 @@
+ #include "build/build_config.h"
+ #include "media/gpu/buildflags.h"
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include "media/gpu/linux/generic_dmabuf_video_frame_mapper.h"
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+
+-#if BUILDFLAG(USE_VAAPI) && defined(OS_LINUX)
++#if BUILDFLAG(USE_VAAPI) && (defined(OS_LINUX) || defined(OS_BSD))
+ #include "media/gpu/vaapi/vaapi_dmabuf_video_frame_mapper.h"
+-#endif // BUILDFLAG(USE_VAAPI) && defined(OS_LINUX)
++#endif // BUILDFLAG(USE_VAAPI) && (defined(OS_LINUX) || defined(OS_BSD))
+
+ namespace media {
+
+ // static
+ std::unique_ptr<VideoFrameMapper> VideoFrameMapperFactory::CreateMapper(
+ VideoPixelFormat format) {
+-#if BUILDFLAG(USE_VAAPI) && defined(OS_LINUX)
++#if BUILDFLAG(USE_VAAPI) && (defined(OS_LINUX) || defined(OS_BSD))
+ return CreateMapper(format, false);
+ #else
+ return CreateMapper(format, true);
+-#endif // BUILDFLAG(USE_VAAPI) && defined(OS_LINUX)
++#endif // BUILDFLAG(USE_VAAPI) && (defined(OS_LINUX) || defined(OS_BSD))
+ }
+
+ // static
+ std::unique_ptr<VideoFrameMapper> VideoFrameMapperFactory::CreateMapper(
+ VideoPixelFormat format,
+ bool linear_buffer_mapper) {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ if (linear_buffer_mapper)
+ return GenericDmaBufVideoFrameMapper::Create(format);
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+
+-#if BUILDFLAG(USE_VAAPI) && defined(OS_LINUX)
++#if BUILDFLAG(USE_VAAPI) && (defined(OS_LINUX) || defined(OS_BSD))
+ return VaapiDmaBufVideoFrameMapper::Create(format);
+-#endif // BUILDFLAG(USE_VAAPI) && defined(OS_LINUX)
++#endif // BUILDFLAG(USE_VAAPI) && (defined(OS_LINUX) || defined(OS_BSD))
+
+ return nullptr;
+ }
diff --git a/devel/electron6/files/patch-media_media__options.gni b/devel/electron6/files/patch-media_media__options.gni
new file mode 100644
index 000000000000..ea9eff811fd0
--- /dev/null
+++ b/devel/electron6/files/patch-media_media__options.gni
@@ -0,0 +1,12 @@
+--- media/media_options.gni.orig 2019-09-10 11:14:08 UTC
++++ media/media_options.gni
+@@ -110,6 +110,9 @@ declare_args() {
+ # Enables runtime selection of ALSA library for audio.
+ use_alsa = false
+
++ # Enable runtime selection of sndio(7)
++ use_sndio = false
++
+ # Alsa should be used on non-Android, non-Mac POSIX systems.
+ # Alsa should be used on desktop Chromecast and audio-only Chromecast builds.
+ if (is_posix && !is_android && !is_mac &&
diff --git a/devel/electron6/files/patch-media_mojo_services_gpu__mojo__media__client.cc b/devel/electron6/files/patch-media_mojo_services_gpu__mojo__media__client.cc
new file mode 100644
index 000000000000..840c5fcef61e
--- /dev/null
+++ b/devel/electron6/files/patch-media_mojo_services_gpu__mojo__media__client.cc
@@ -0,0 +1,20 @@
+--- media/mojo/services/gpu_mojo_media_client.cc.orig 2019-09-10 11:14:08 UTC
++++ media/mojo/services/gpu_mojo_media_client.cc
+@@ -55,7 +55,7 @@ namespace media {
+ namespace {
+
+ #if defined(OS_ANDROID) || defined(OS_CHROMEOS) || defined(OS_MACOSX) || \
+- defined(OS_WIN) || defined(OS_LINUX)
++ defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD)
+ gpu::CommandBufferStub* GetCommandBufferStub(
+ base::WeakPtr<MediaGpuChannelManager> media_gpu_channel_manager,
+ base::UnguessableToken channel_token,
+@@ -199,7 +199,7 @@ std::unique_ptr<VideoDecoder> GpuMojoMediaClient::Crea
+ std::make_unique<VideoFrameFactoryImpl>(
+ gpu_task_runner_, std::move(get_stub_cb), gpu_preferences_));
+ #elif defined(OS_CHROMEOS) || defined(OS_MACOSX) || defined(OS_WIN) || \
+- defined(OS_LINUX)
++ defined(OS_LINUX) || defined(OS_BSD)
+ video_decoder = VdaVideoDecoder::Create(
+ task_runner, gpu_task_runner_, media_log->Clone(), target_color_space,
+ gpu_preferences_, gpu_workarounds_,
diff --git a/devel/electron6/files/patch-media_video_gpu__memory__buffer__video__frame__pool.cc b/devel/electron6/files/patch-media_video_gpu__memory__buffer__video__frame__pool.cc
new file mode 100644
index 000000000000..cd2df1daa0a5
--- /dev/null
+++ b/devel/electron6/files/patch-media_video_gpu__memory__buffer__video__frame__pool.cc
@@ -0,0 +1,11 @@
+--- media/video/gpu_memory_buffer_video_frame_pool.cc.orig 2019-09-10 11:14:08 UTC
++++ media/video/gpu_memory_buffer_video_frame_pool.cc
+@@ -597,7 +597,7 @@ void GpuMemoryBufferVideoFramePool::PoolImpl::CreateHa
+ }
+
+ bool is_software_backed_video_frame = !video_frame->HasTextures();
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ is_software_backed_video_frame &= !video_frame->HasDmaBufs();
+ #endif
+
diff --git a/devel/electron6/files/patch-mojo_public_c_system_thunks.cc b/devel/electron6/files/patch-mojo_public_c_system_thunks.cc
new file mode 100644
index 000000000000..e33929ae9b66
--- /dev/null
+++ b/devel/electron6/files/patch-mojo_public_c_system_thunks.cc
@@ -0,0 +1,58 @@
+--- mojo/public/c/system/thunks.cc.orig 2019-09-10 10:42:41 UTC
++++ mojo/public/c/system/thunks.cc
+@@ -16,7 +16,7 @@
+ #include "build/build_config.h"
+ #include "mojo/public/c/system/core.h"
+
+-#if defined(OS_CHROMEOS) || defined(OS_LINUX) || defined(OS_WIN)
++#if defined(OS_CHROMEOS) || defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD)
+ #include "base/environment.h"
+ #include "base/files/file_path.h"
+ #include "base/optional.h"
+@@ -28,7 +28,7 @@ namespace {
+
+ typedef void (*MojoGetSystemThunksFunction)(MojoSystemThunks* thunks);
+
+-#if defined(OS_CHROMEOS) || defined(OS_LINUX) || defined(OS_WIN)
++#if defined(OS_CHROMEOS) || defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD)
+ PROTECTED_MEMORY_SECTION
+ base::ProtectedMemory<MojoGetSystemThunksFunction> g_get_thunks;
+ #endif
+@@ -65,7 +65,7 @@ namespace mojo {
+ class CoreLibraryInitializer {
+ public:
+ CoreLibraryInitializer(const MojoInitializeOptions* options) {
+-#if defined(OS_CHROMEOS) || defined(OS_LINUX) || defined(OS_WIN)
++#if defined(OS_CHROMEOS) || defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD)
+ bool application_provided_path = false;
+ base::Optional<base::FilePath> library_path;
+ if (options && options->struct_size >= sizeof(*options) &&
+@@ -84,7 +84,7 @@ class CoreLibraryInitializer {
+
+ if (!library_path) {
+ // Default to looking for the library in the current working directory.
+-#if defined(OS_CHROMEOS) || defined(OS_LINUX)
++#if defined(OS_CHROMEOS) || defined(OS_LINUX) || defined(OS_BSD)
+ const base::FilePath::CharType kDefaultLibraryPathValue[] =
+ FILE_PATH_LITERAL("./libmojo_core.so");
+ #elif defined(OS_WIN)
+@@ -138,16 +138,16 @@ class CoreLibraryInitializer {
+
+ CHECK_GT(g_thunks->size, 0u)
+ << "Invalid mojo_core library: " << library_path->value();
+-#else // defined(OS_CHROMEOS) || defined(OS_LINUX)
++#else // defined(OS_CHROMEOS) || defined(OS_LINUX) || defined(OS_BSD)
+ NOTREACHED()
+ << "Dynamic mojo_core loading is not supported on this platform.";
+-#endif // defined(OS_CHROMEOS) || defined(OS_LINUX)
++#endif // defined(OS_CHROMEOS) || defined(OS_LINUX) || defined(OS_BSD)
+ }
+
+ ~CoreLibraryInitializer() = default;
+
+ private:
+-#if defined(OS_CHROMEOS) || defined(OS_LINUX) || defined(OS_WIN)
++#if defined(OS_CHROMEOS) || defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD)
+ base::Optional<base::ScopedNativeLibrary> library_;
+ #endif
+
diff --git a/devel/electron6/files/patch-mojo_public_js_mojo__bindings__resources.grd b/devel/electron6/files/patch-mojo_public_js_mojo__bindings__resources.grd
new file mode 100644
index 000000000000..142f0b1efb95
--- /dev/null
+++ b/devel/electron6/files/patch-mojo_public_js_mojo__bindings__resources.grd
@@ -0,0 +1,11 @@
+--- mojo/public/js/mojo_bindings_resources.grd.orig 2019-09-10 10:42:41 UTC
++++ mojo/public/js/mojo_bindings_resources.grd
+@@ -60,7 +60,7 @@
+ use_base_dir="false"
+ type="BINDATA"
+ compress="gzip" />
+- <if expr="is_win or is_macosx or is_linux">
++ <if expr="is_win or is_macosx or is_posix">
+ <include name="IDR_MOJO_TIME_MOJOM_HTML"
+ file="${root_gen_dir}/mojo/public/mojom/base/time.mojom.html"
+ use_base_dir="false"
diff --git a/devel/electron6/files/patch-net_BUILD.gn b/devel/electron6/files/patch-net_BUILD.gn
new file mode 100644
index 000000000000..7a78876da0c0
--- /dev/null
+++ b/devel/electron6/files/patch-net_BUILD.gn
@@ -0,0 +1,37 @@
+--- net/BUILD.gn.orig 2019-09-10 11:14:08 UTC
++++ net/BUILD.gn
+@@ -98,7 +98,7 @@ net_configs = [
+ "//build/config/compiler:wexit_time_destructors",
+ ]
+
+-if (is_linux) {
++if (is_linux && !is_bsd) {
+ net_configs += [ "//build/config/linux:libresolv" ]
+ }
+
+@@ -1919,7 +1919,7 @@ component("net") {
+ }
+
+ # Use getifaddrs() on POSIX platforms, except Linux and Android.
+- if (is_posix && !is_linux && !is_android) {
++ if (is_posix && ((!is_linux && !is_android) || (is_bsd))) {
+ sources += [
+ "base/network_interfaces_getifaddrs.cc",
+ "base/network_interfaces_getifaddrs.h",
+@@ -2012,6 +2012,16 @@ component("net") {
+ ]
+
+ sources -= [ "disk_cache/blockfile/file_posix.cc" ]
++ }
++
++ if (is_bsd) {
++ sources -= [
++ "base/address_tracker_linux.cc",
++ "base/address_tracker_linux.h",
++ "base/network_change_notifier_linux.cc",
++ "base/network_change_notifier_linux.h",
++ "base/network_interfaces_linux.cc",
++ ]
+ }
+
+ if (is_ios || is_mac) {
diff --git a/devel/electron6/files/patch-net_base_address__tracker__linux.cc b/devel/electron6/files/patch-net_base_address__tracker__linux.cc
new file mode 100644
index 000000000000..ab9cbdac1e21
--- /dev/null
+++ b/devel/electron6/files/patch-net_base_address__tracker__linux.cc
@@ -0,0 +1,177 @@
+--- net/base/address_tracker_linux.cc.orig 2019-09-10 10:42:42 UTC
++++ net/base/address_tracker_linux.cc
+@@ -21,96 +21,10 @@
+ namespace net {
+ namespace internal {
+
+-namespace {
+-
+-// Some kernel functions such as wireless_send_event and rtnetlink_ifinfo_prep
+-// may send spurious messages over rtnetlink. RTM_NEWLINK messages where
+-// ifi_change == 0 and rta_type == IFLA_WIRELESS should be ignored.
+-bool IgnoreWirelessChange(const struct nlmsghdr* header,
+- const struct ifinfomsg* msg) {
+- size_t length = IFLA_PAYLOAD(header);
+- for (const struct rtattr* attr = IFLA_RTA(msg); RTA_OK(attr, length);
+- attr = RTA_NEXT(attr, length)) {
+- if (attr->rta_type == IFLA_WIRELESS && msg->ifi_change == 0)
+- return true;
+- }
+- return false;
+-}
+-
+-// Retrieves address from NETLINK address message.
+-// Sets |really_deprecated| for IPv6 addresses with preferred lifetimes of 0.
+-bool GetAddress(const struct nlmsghdr* header,
+- IPAddress* out,
+- bool* really_deprecated) {
+- if (really_deprecated)
+- *really_deprecated = false;
+- const struct ifaddrmsg* msg =
+- reinterpret_cast<struct ifaddrmsg*>(NLMSG_DATA(header));
+- size_t address_length = 0;
+- switch (msg->ifa_family) {
+- case AF_INET:
+- address_length = IPAddress::kIPv4AddressSize;
+- break;
+- case AF_INET6:
+- address_length = IPAddress::kIPv6AddressSize;
+- break;
+- default:
+- // Unknown family.
+- return false;
+- }
+- // Use IFA_ADDRESS unless IFA_LOCAL is present. This behavior here is based on
+- // getaddrinfo in glibc (check_pf.c). Judging from kernel implementation of
+- // NETLINK, IPv4 addresses have only the IFA_ADDRESS attribute, while IPv6
+- // have the IFA_LOCAL attribute.
+- uint8_t* address = NULL;
+- uint8_t* local = NULL;
+- size_t length = IFA_PAYLOAD(header);
+- for (const struct rtattr* attr =
+- reinterpret_cast<const struct rtattr*>(IFA_RTA(msg));
+- RTA_OK(attr, length);
+- attr = RTA_NEXT(attr, length)) {
+- switch (attr->rta_type) {
+- case IFA_ADDRESS:
+- DCHECK_GE(RTA_PAYLOAD(attr), address_length);
+- address = reinterpret_cast<uint8_t*>(RTA_DATA(attr));
+- break;
+- case IFA_LOCAL:
+- DCHECK_GE(RTA_PAYLOAD(attr), address_length);
+- local = reinterpret_cast<uint8_t*>(RTA_DATA(attr));
+- break;
+- case IFA_CACHEINFO: {
+- const struct ifa_cacheinfo *cache_info =
+- reinterpret_cast<const struct ifa_cacheinfo*>(RTA_DATA(attr));
+- if (really_deprecated)
+- *really_deprecated = (cache_info->ifa_prefered == 0);
+- } break;
+- default:
+- break;
+- }
+- }
+- if (local)
+- address = local;
+- if (!address)
+- return false;
+- *out = IPAddress(address, address_length);
+- return true;
+-}
+-
+-} // namespace
+-
+ // static
+ char* AddressTrackerLinux::GetInterfaceName(int interface_index, char* buf) {
+- memset(buf, 0, IFNAMSIZ);
+- base::ScopedFD ioctl_socket = GetSocketForIoctl();
+- if (!ioctl_socket.is_valid())
+- return buf;
+-
+- struct ifreq ifr = {};
+- ifr.ifr_ifindex = interface_index;
+-
+- if (ioctl(ioctl_socket.get(), SIOCGIFNAME, &ifr) == 0)
+- strncpy(buf, ifr.ifr_name, IFNAMSIZ - 1);
+- return buf;
++ NOTIMPLEMENTED();
++ return NULL;
+ }
+
+ AddressTrackerLinux::AddressTrackerLinux()
+@@ -147,6 +61,7 @@ AddressTrackerLinux::AddressTrackerLinux(
+ AddressTrackerLinux::~AddressTrackerLinux() = default;
+
+ void AddressTrackerLinux::Init() {
++#if !defined(OS_FREEBSD)
+ netlink_fd_.reset(socket(AF_NETLINK, SOCK_RAW, NETLINK_ROUTE));
+ if (!netlink_fd_.is_valid()) {
+ PLOG(ERROR) << "Could not create NETLINK socket";
+@@ -242,6 +157,7 @@ void AddressTrackerLinux::AbortAndForceOnline() {
+ connection_type_initialized_cv_.Broadcast();
+ }
+
++#if !defined(OS_BSD)
+ AddressTrackerLinux::AddressMap AddressTrackerLinux::GetAddressMap() const {
+ AddressTrackerAutoLock lock(*this, address_map_lock_);
+ return address_map_;
+@@ -260,6 +176,7 @@ bool AddressTrackerLinux::IsInterfaceIgnored(int inter
+ const char* interface_name = get_interface_name_(interface_index, buf);
+ return ignored_interfaces_.find(interface_name) != ignored_interfaces_.end();
+ }
++#endif // !OS_BSD
+
+ NetworkChangeNotifier::ConnectionType
+ AddressTrackerLinux::GetCurrentConnectionType() {
+@@ -318,6 +235,7 @@ void AddressTrackerLinux::HandleMessage(char* buffer,
+ bool* address_changed,
+ bool* link_changed,
+ bool* tunnel_changed) {
++#if !defined(OS_FREEBSD)
+ DCHECK(buffer);
+ for (struct nlmsghdr* header = reinterpret_cast<struct nlmsghdr*>(buffer);
+ NLMSG_OK(header, length);
+@@ -414,6 +332,10 @@ void AddressTrackerLinux::HandleMessage(char* buffer,
+ break;
+ }
+ }
++#else // !OS_FREEBSD
++ NOTIMPLEMENTED();
++ AbortAndForceOnline();
++#endif // !OS_FREEBSD
+ }
+
+ void AddressTrackerLinux::OnFileCanReadWithoutBlocking() {
+@@ -441,31 +363,7 @@ bool AddressTrackerLinux::IsTunnelInterfaceName(const
+ }
+
+ void AddressTrackerLinux::UpdateCurrentConnectionType() {
+- AddressTrackerLinux::AddressMap address_map = GetAddressMap();
+- std::unordered_set<int> online_links = GetOnlineLinks();
+-
+- // Strip out tunnel interfaces from online_links
+- for (auto it = online_links.cbegin(); it != online_links.cend();) {
+- if (IsTunnelInterface(*it)) {
+- it = online_links.erase(it);
+- } else {
+- ++it;
+- }
+- }
+-
+- NetworkInterfaceList networks;
+- NetworkChangeNotifier::ConnectionType type =
+- NetworkChangeNotifier::CONNECTION_NONE;
+- if (GetNetworkListImpl(&networks, 0, online_links, address_map,
+- get_interface_name_)) {
+- type = NetworkChangeNotifier::ConnectionTypeFromInterfaceList(networks);
+- } else {
+- type = online_links.empty() ? NetworkChangeNotifier::CONNECTION_NONE
+- : NetworkChangeNotifier::CONNECTION_UNKNOWN;
+- }
+-
+- AddressTrackerAutoLock lock(*this, connection_type_lock_);
+- current_connection_type_ = type;
++ NOTIMPLEMENTED();
+ }
+
+ int AddressTrackerLinux::GetThreadsWaitingForConnectionTypeInitForTesting()
diff --git a/devel/electron6/files/patch-net_base_address__tracker__linux.h b/devel/electron6/files/patch-net_base_address__tracker__linux.h
new file mode 100644
index 000000000000..005254c601c1
--- /dev/null
+++ b/devel/electron6/files/patch-net_base_address__tracker__linux.h
@@ -0,0 +1,12 @@
+--- net/base/address_tracker_linux.h.orig 2019-09-10 10:42:42 UTC
++++ net/base/address_tracker_linux.h
+@@ -7,9 +7,6 @@
+
+ #include <sys/socket.h> // Needed to include netlink.
+ // Mask superfluous definition of |struct net|. This is fixed in Linux 2.6.38.
+-#define net net_kernel
+-#include <linux/rtnetlink.h>
+-#undef net
+ #include <stddef.h>
+
+ #include <map>
diff --git a/devel/electron6/files/patch-net_base_address__tracker__linux__unittest.cc b/devel/electron6/files/patch-net_base_address__tracker__linux__unittest.cc
new file mode 100644
index 000000000000..12103f80fd53
--- /dev/null
+++ b/devel/electron6/files/patch-net_base_address__tracker__linux__unittest.cc
@@ -0,0 +1,14 @@
+--- net/base/address_tracker_linux_unittest.cc.orig 2019-09-10 11:14:08 UTC
++++ net/base/address_tracker_linux_unittest.cc
+@@ -4,7 +4,11 @@
+
+ #include "net/base/address_tracker_linux.h"
+
++#if defined(__linux__)
+ #include <linux/if.h>
++#else
++#include <net/if.h>
++#endif
+
+ #include <memory>
+ #include <unordered_set>
diff --git a/devel/electron6/files/patch-net_base_network__change__notifier.cc b/devel/electron6/files/patch-net_base_network__change__notifier.cc
new file mode 100644
index 000000000000..6b36703b8ee1
--- /dev/null
+++ b/devel/electron6/files/patch-net_base_network__change__notifier.cc
@@ -0,0 +1,10 @@
+--- net/base/network_change_notifier.cc.orig 2019-09-10 11:14:08 UTC
++++ net/base/network_change_notifier.cc
+@@ -225,7 +225,6 @@ NetworkChangeNotifier* NetworkChangeNotifier::Create()
+ #elif defined(OS_FUCHSIA)
+ return new NetworkChangeNotifierFuchsia(0 /* required_features */);
+ #else
+- NOTIMPLEMENTED();
+ return NULL;
+ #endif
+ }
diff --git a/devel/electron6/files/patch-net_base_network__interfaces__posix.h b/devel/electron6/files/patch-net_base_network__interfaces__posix.h
new file mode 100644
index 000000000000..0fd751f8678b
--- /dev/null
+++ b/devel/electron6/files/patch-net_base_network__interfaces__posix.h
@@ -0,0 +1,11 @@
+--- net/base/network_interfaces_posix.h.orig 2019-09-10 10:42:42 UTC
++++ net/base/network_interfaces_posix.h
+@@ -8,6 +8,8 @@
+ // This file provides some basic functionality shared between
+ // network_interfaces_linux.cc and network_interfaces_getifaddrs.cc.
+
++#include <sys/socket.h>
++
+ #include <string>
+
+ struct sockaddr;
diff --git a/devel/electron6/files/patch-net_disk__cache_blockfile_disk__format.h b/devel/electron6/files/patch-net_disk__cache_blockfile_disk__format.h
new file mode 100644
index 000000000000..4ef2a09b96f8
--- /dev/null
+++ b/devel/electron6/files/patch-net_disk__cache_blockfile_disk__format.h
@@ -0,0 +1,12 @@
+--- net/disk_cache/blockfile/disk_format.h.orig 2019-09-10 10:42:43 UTC
++++ net/disk_cache/blockfile/disk_format.h
+@@ -149,7 +149,9 @@ struct RankingsNode {
+ };
+ #pragma pack(pop)
+
++#if !defined(OS_BSD)
+ static_assert(sizeof(RankingsNode) == 36, "bad RankingsNode");
++#endif
+
+ } // namespace disk_cache
+
diff --git a/devel/electron6/files/patch-net_dns_address__sorter__posix.cc b/devel/electron6/files/patch-net_dns_address__sorter__posix.cc
new file mode 100644
index 000000000000..db4671b0fd15
--- /dev/null
+++ b/devel/electron6/files/patch-net_dns_address__sorter__posix.cc
@@ -0,0 +1,12 @@
+--- net/dns/address_sorter_posix.cc.orig 2019-09-10 10:42:43 UTC
++++ net/dns/address_sorter_posix.cc
+@@ -13,7 +13,9 @@
+ #include <sys/socket.h> // Must be included before ifaddrs.h.
+ #include <ifaddrs.h>
+ #include <net/if.h>
++#include <net/if_var.h>
+ #include <netinet/in_var.h>
++#include <netinet6/in6_var.h>
+ #include <string.h>
+ #include <sys/ioctl.h>
+ #endif
diff --git a/devel/electron6/files/patch-net_dns_dns__config__service__posix__unittest.cc b/devel/electron6/files/patch-net_dns_dns__config__service__posix__unittest.cc
new file mode 100644
index 000000000000..b6c411ae6553
--- /dev/null
+++ b/devel/electron6/files/patch-net_dns_dns__config__service__posix__unittest.cc
@@ -0,0 +1,47 @@
+--- net/dns/dns_config_service_posix_unittest.cc.orig 2019-09-10 11:14:09 UTC
++++ net/dns/dns_config_service_posix_unittest.cc
+@@ -2,8 +2,6 @@
+ // Use of this source code is governed by a BSD-style license that can be
+ // found in the LICENSE file.
+
+-#include <resolv.h>
+-
+ #include <memory>
+
+ #include "base/cancelable_callback.h"
+@@ -50,7 +48,7 @@ const char* const kNameserversIPv4[] = {
+ "1.0.0.1",
+ };
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ const char* const kNameserversIPv6[] = {
+ NULL,
+ "2001:DB8:0::42",
+@@ -86,7 +84,7 @@ void InitializeResState(res_state res) {
+ ++res->nscount;
+ }
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Install IPv6 addresses, replacing the corresponding IPv4 addresses.
+ unsigned nscount6 = 0;
+ for (unsigned i = 0; i < base::size(kNameserversIPv6) && i < MAXNS; ++i) {
+@@ -107,7 +105,7 @@ void InitializeResState(res_state res) {
+ }
+
+ void CloseResState(res_state res) {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ for (int i = 0; i < res->nscount; ++i) {
+ if (res->_u._ext.nsaddrs[i] != NULL)
+ free(res->_u._ext.nsaddrs[i]);
+@@ -132,7 +130,7 @@ void InitializeExpectedConfig(DnsConfig* config) {
+ config->nameservers.push_back(IPEndPoint(ip, NS_DEFAULTPORT + i));
+ }
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ for (unsigned i = 0; i < base::size(kNameserversIPv6) && i < MAXNS; ++i) {
+ if (!kNameserversIPv6[i])
+ continue;
diff --git a/devel/electron6/files/patch-net_dns_dns__reloader.cc b/devel/electron6/files/patch-net_dns_dns__reloader.cc
new file mode 100644
index 000000000000..7c969e0eb0c0
--- /dev/null
+++ b/devel/electron6/files/patch-net_dns_dns__reloader.cc
@@ -0,0 +1,13 @@
+--- net/dns/dns_reloader.cc.orig 2019-09-10 11:14:09 UTC
++++ net/dns/dns_reloader.cc
+@@ -7,6 +7,10 @@
+ #if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_OPENBSD) && \
+ !defined(OS_ANDROID) && !defined(OS_FUCHSIA)
+
++#if defined(OS_FREEBSD)
++#include <netinet/in.h>
++#endif
++
+ #include <resolv.h>
+
+ #include "base/lazy_instance.h"
diff --git a/devel/electron6/files/patch-net_dns_dns__util.cc b/devel/electron6/files/patch-net_dns_dns__util.cc
new file mode 100644
index 000000000000..8db6ae0b2488
--- /dev/null
+++ b/devel/electron6/files/patch-net_dns_dns__util.cc
@@ -0,0 +1,11 @@
+--- net/dns/dns_util.cc.orig 2019-09-10 11:14:09 UTC
++++ net/dns/dns_util.cc
+@@ -36,6 +36,8 @@ const uint16_t kFlagNamePointer = 0xc000;
+
+ } // namespace
+
++#include <sys/socket.h>
++
+ #if defined(OS_POSIX)
+ #include <netinet/in.h>
+ #if !defined(OS_NACL)
diff --git a/devel/electron6/files/patch-net_dns_host__resolver__proc.cc b/devel/electron6/files/patch-net_dns_host__resolver__proc.cc
new file mode 100644
index 000000000000..f629903e61b1
--- /dev/null
+++ b/devel/electron6/files/patch-net_dns_host__resolver__proc.cc
@@ -0,0 +1,11 @@
+--- net/dns/host_resolver_proc.cc.orig 2019-09-10 11:14:09 UTC
++++ net/dns/host_resolver_proc.cc
+@@ -197,7 +197,7 @@ int SystemHostResolverCall(const std::string& host,
+ base::ScopedBlockingCall scoped_blocking_call(FROM_HERE,
+ base::BlockingType::WILL_BLOCK);
+
+-#if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_OPENBSD) && \
++#if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_BSD) && \
+ !defined(OS_ANDROID) && !defined(OS_FUCHSIA)
+ DnsReloaderMaybeReload();
+ #endif
diff --git a/devel/electron6/files/patch-net_features.gni b/devel/electron6/files/patch-net_features.gni
new file mode 100644
index 000000000000..db530f1d0ebf
--- /dev/null
+++ b/devel/electron6/files/patch-net_features.gni
@@ -0,0 +1,11 @@
+--- net/features.gni.orig 2019-09-10 11:14:09 UTC
++++ net/features.gni
+@@ -26,7 +26,7 @@ declare_args() {
+ disable_brotli_filter = false
+
+ # Multicast DNS.
+- enable_mdns = is_win || is_linux || is_fuchsia || is_mac || is_ios
++ enable_mdns = is_win || is_linux || is_fuchsia || is_mac || is_ios || is_bsd
+
+ # Reporting not used on iOS.
+ enable_reporting = !is_ios
diff --git a/devel/electron6/files/patch-net_http_http__auth__gssapi__posix.cc b/devel/electron6/files/patch-net_http_http__auth__gssapi__posix.cc
new file mode 100644
index 000000000000..8f480c78f3e1
--- /dev/null
+++ b/devel/electron6/files/patch-net_http_http__auth__gssapi__posix.cc
@@ -0,0 +1,14 @@
+--- net/http/http_auth_gssapi_posix.cc.orig 2019-09-10 11:14:09 UTC
++++ net/http/http_auth_gssapi_posix.cc
+@@ -443,8 +443,9 @@ base::NativeLibrary GSSAPISharedLibrary::LoadSharedLib
+ static const char* const kDefaultLibraryNames[] = {
+ #if defined(OS_MACOSX)
+ "/System/Library/Frameworks/GSS.framework/GSS"
+-#elif defined(OS_OPENBSD)
+- "libgssapi.so" // Heimdal - OpenBSD
++#elif defined(OS_BSD)
++ "libgssapi_krb5.so.2", // MIT Kerberos - FreeBSD
++ "libgssapi.so" // Heimdal - OpenBSD, FreeBSD
+ #else
+ "libgssapi_krb5.so.2", // MIT Kerberos - FC, Suse10, Debian
+ "libgssapi.so.4", // Heimdal - Suse10, MDK
diff --git a/devel/electron6/files/patch-net_http_http__auth__gssapi__posix.h b/devel/electron6/files/patch-net_http_http__auth__gssapi__posix.h
new file mode 100644
index 000000000000..32c314b27025
--- /dev/null
+++ b/devel/electron6/files/patch-net_http_http__auth__gssapi__posix.h
@@ -0,0 +1,12 @@
+--- net/http/http_auth_gssapi_posix.h.orig 2019-09-10 11:14:09 UTC
++++ net/http/http_auth_gssapi_posix.h
+@@ -19,6 +19,9 @@
+ #include <GSS/gssapi.h>
+ #elif defined(OS_FREEBSD)
+ #include <gssapi/gssapi.h>
++#ifndef GSS_C_DELEG_POLICY_FLAG
++#define GSS_C_DELEG_POLICY_FLAG 32768
++#endif
+ #else
+ #include <gssapi.h>
+ #endif
diff --git a/devel/electron6/files/patch-net_nqe_network__quality__estimator.cc b/devel/electron6/files/patch-net_nqe_network__quality__estimator.cc
new file mode 100644
index 000000000000..f1ef02aa9054
--- /dev/null
+++ b/devel/electron6/files/patch-net_nqe_network__quality__estimator.cc
@@ -0,0 +1,11 @@
+--- net/nqe/network_quality_estimator.cc.orig 2019-09-10 11:14:10 UTC
++++ net/nqe/network_quality_estimator.cc
+@@ -100,7 +100,7 @@ nqe::internal::NetworkID DoGetCurrentNetworkID() {
+ case NetworkChangeNotifier::ConnectionType::CONNECTION_ETHERNET:
+ break;
+ case NetworkChangeNotifier::ConnectionType::CONNECTION_WIFI:
+-#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_WIN)
++#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD)
+ network_id.id = GetWifiSSID();
+ #endif
+ break;
diff --git a/devel/electron6/files/patch-net_nqe_network__quality__estimator__unittest.cc b/devel/electron6/files/patch-net_nqe_network__quality__estimator__unittest.cc
new file mode 100644
index 000000000000..6bb886782ff0
--- /dev/null
+++ b/devel/electron6/files/patch-net_nqe_network__quality__estimator__unittest.cc
@@ -0,0 +1,11 @@
+--- net/nqe/network_quality_estimator_unittest.cc.orig 2019-09-10 11:14:10 UTC
++++ net/nqe/network_quality_estimator_unittest.cc
+@@ -2039,7 +2039,7 @@ TEST_F(NetworkQualityEstimatorTest, TestGlobalSocketWa
+
+ // TestTCPSocketRTT requires kernel support for tcp_info struct, and so it is
+ // enabled only on certain platforms.
+-#if defined(TCP_INFO) || defined(OS_LINUX) || defined(OS_ANDROID)
++#if defined(TCP_INFO) || defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
+ #define MAYBE_TestTCPSocketRTT TestTCPSocketRTT
+ #else
+ #define MAYBE_TestTCPSocketRTT DISABLED_TestTCPSocketRTT
diff --git a/devel/electron6/files/patch-net_proxy__resolution_proxy__config__service__linux.cc b/devel/electron6/files/patch-net_proxy__resolution_proxy__config__service__linux.cc
new file mode 100644
index 000000000000..4be453aa55d0
--- /dev/null
+++ b/devel/electron6/files/patch-net_proxy__resolution_proxy__config__service__linux.cc
@@ -0,0 +1,39 @@
+--- net/proxy_resolution/proxy_config_service_linux.cc.orig 2019-09-10 11:14:10 UTC
++++ net/proxy_resolution/proxy_config_service_linux.cc
+@@ -6,7 +6,9 @@
+
+ #include <errno.h>
+ #include <limits.h>
++#if !defined(OS_BSD)
+ #include <sys/inotify.h>
++#endif
+ #include <unistd.h>
+
+ #include <map>
+@@ -495,6 +497,7 @@ int StringToIntOrDefault(base::StringPiece value, int
+ return default_value;
+ }
+
++#if !defined(OS_BSD)
+ // This is the KDE version that reads kioslaverc and simulates gsettings.
+ // Doing this allows the main Delegate code, as well as the unit tests
+ // for it, to stay the same - and the settings map fairly well besides.
+@@ -986,6 +989,7 @@ class SettingGetterImplKDE : public ProxyConfigService
+
+ DISALLOW_COPY_AND_ASSIGN(SettingGetterImplKDE);
+ };
++#endif
+
+ } // namespace
+
+@@ -1197,8 +1201,10 @@ ProxyConfigServiceLinux::Delegate::Delegate(
+ case base::nix::DESKTOP_ENVIRONMENT_KDE3:
+ case base::nix::DESKTOP_ENVIRONMENT_KDE4:
+ case base::nix::DESKTOP_ENVIRONMENT_KDE5:
++#if !defined(OS_BSD)
+ setting_getter_.reset(new SettingGetterImplKDE(env_var_getter_.get()));
+ break;
++#endif
+ case base::nix::DESKTOP_ENVIRONMENT_XFCE:
+ case base::nix::DESKTOP_ENVIRONMENT_OTHER:
+ break;
diff --git a/devel/electron6/files/patch-net_proxy__resolution_proxy__resolution__service.cc b/devel/electron6/files/patch-net_proxy__resolution_proxy__resolution__service.cc
new file mode 100644
index 000000000000..f74171817a93
--- /dev/null
+++ b/devel/electron6/files/patch-net_proxy__resolution_proxy__resolution__service.cc
@@ -0,0 +1,29 @@
+--- net/proxy_resolution/proxy_resolution_service.cc.orig 2019-09-10 11:14:10 UTC
++++ net/proxy_resolution/proxy_resolution_service.cc
+@@ -48,7 +48,7 @@
+ #elif defined(OS_MACOSX)
+ #include "net/proxy_resolution/proxy_config_service_mac.h"
+ #include "net/proxy_resolution/proxy_resolver_mac.h"
+-#elif defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#elif (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS)
+ #include "net/proxy_resolution/proxy_config_service_linux.h"
+ #elif defined(OS_ANDROID)
+ #include "net/proxy_resolution/proxy_config_service_android.h"
+@@ -62,7 +62,7 @@ namespace net {
+ namespace {
+
+ #if defined(OS_WIN) || defined(OS_IOS) || defined(OS_MACOSX) || \
+- (defined(OS_LINUX) && !defined(OS_CHROMEOS))
++ ((defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS))
+ constexpr net::NetworkTrafficAnnotationTag kSystemProxyConfigTrafficAnnotation =
+ net::DefineNetworkTrafficAnnotation("proxy_config_system", R"(
+ semantics {
+@@ -1571,7 +1571,7 @@ ProxyResolutionService::CreateSystemProxyConfigService
+ << "profile_io_data.cc::CreateProxyConfigService and this should "
+ << "be used only for examples.";
+ return std::make_unique<UnsetProxyConfigService>();
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ std::unique_ptr<ProxyConfigServiceLinux> linux_config_service(
+ new ProxyConfigServiceLinux());
+
diff --git a/devel/electron6/files/patch-net_quic_platform_impl_quic__ip__address__impl.cc b/devel/electron6/files/patch-net_quic_platform_impl_quic__ip__address__impl.cc
new file mode 100644
index 000000000000..71a422e9b2ca
--- /dev/null
+++ b/devel/electron6/files/patch-net_quic_platform_impl_quic__ip__address__impl.cc
@@ -0,0 +1,10 @@
+--- net/quic/platform/impl/quic_ip_address_impl.cc.orig 2019-09-10 11:14:10 UTC
++++ net/quic/platform/impl/quic_ip_address_impl.cc
+@@ -13,6 +13,7 @@
+ #include <ws2bth.h>
+ #elif defined(OS_POSIX) || defined(OS_FUCHSIA)
+ #include <netinet/in.h>
++#include <sys/socket.h>
+ #endif
+
+ using std::string;
diff --git a/devel/electron6/files/patch-net_socket_socket__posix.cc b/devel/electron6/files/patch-net_socket_socket__posix.cc
new file mode 100644
index 000000000000..ea6fbf137ee9
--- /dev/null
+++ b/devel/electron6/files/patch-net_socket_socket__posix.cc
@@ -0,0 +1,11 @@
+--- net/socket/socket_posix.cc.orig 2019-09-10 11:14:10 UTC
++++ net/socket/socket_posix.cc
+@@ -569,7 +569,7 @@ void SocketPosix::ReadCompleted() {
+ }
+
+ int SocketPosix::DoWrite(IOBuffer* buf, int buf_len) {
+-#if defined(OS_LINUX) || defined(OS_ANDROID)
++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
+ // Disable SIGPIPE for this write. Although Chromium globally disables
+ // SIGPIPE, the net stack may be used in other consumers which do not do
+ // this. MSG_NOSIGNAL is a Linux-only API. On OS X, this is a setsockopt on
diff --git a/devel/electron6/files/patch-net_socket_socks5__client__socket.cc b/devel/electron6/files/patch-net_socket_socks5__client__socket.cc
new file mode 100644
index 000000000000..ef7673c870b7
--- /dev/null
+++ b/devel/electron6/files/patch-net_socket_socks5__client__socket.cc
@@ -0,0 +1,13 @@
+--- net/socket/socks5_client_socket.cc.orig 2019-09-10 11:14:10 UTC
++++ net/socket/socks5_client_socket.cc
+@@ -4,6 +4,10 @@
+
+ #include "net/socket/socks5_client_socket.h"
+
++#if defined(OS_BSD)
++#include <netinet/in.h>
++#endif
++
+ #include <utility>
+
+ #include "base/bind.h"
diff --git a/devel/electron6/files/patch-net_socket_tcp__socket__posix.cc b/devel/electron6/files/patch-net_socket_tcp__socket__posix.cc
new file mode 100644
index 000000000000..040ebe9609c1
--- /dev/null
+++ b/devel/electron6/files/patch-net_socket_tcp__socket__posix.cc
@@ -0,0 +1,20 @@
+--- net/socket/tcp_socket_posix.cc.orig 2019-09-10 11:14:10 UTC
++++ net/socket/tcp_socket_posix.cc
+@@ -88,6 +88,17 @@ bool SetTCPKeepAlive(int fd, bool enable, int delay) {
+ PLOG(ERROR) << "Failed to set TCP_KEEPALIVE on fd: " << fd;
+ return false;
+ }
++#elif defined(OS_BSD)
++ // Set seconds until first TCP keep alive.
++ if (setsockopt(fd, IPPROTO_TCP, TCP_KEEPIDLE, &delay, sizeof(delay))) {
++ PLOG(ERROR) << "Failed to set TCP_KEEPIDLE on fd: " << fd;
++ return false;
++ }
++ // Set seconds between TCP keep alives.
++ if (setsockopt(fd, IPPROTO_TCP, TCP_KEEPINTVL, &delay, sizeof(delay))) {
++ PLOG(ERROR) << "Failed to set TCP_KEEPINTVL on fd: " << fd;
++ return false;
++ }
+ #endif
+ return true;
+ }
diff --git a/devel/electron6/files/patch-net_socket_udp__socket__posix.cc b/devel/electron6/files/patch-net_socket_udp__socket__posix.cc
new file mode 100644
index 000000000000..814263c38c22
--- /dev/null
+++ b/devel/electron6/files/patch-net_socket_udp__socket__posix.cc
@@ -0,0 +1,108 @@
+--- net/socket/udp_socket_posix.cc.orig 2019-09-10 11:14:10 UTC
++++ net/socket/udp_socket_posix.cc
+@@ -69,7 +69,7 @@ const int kActivityMonitorMinimumSamplesForThroughputE
+ const base::TimeDelta kActivityMonitorMsThreshold =
+ base::TimeDelta::FromMilliseconds(100);
+
+-#if defined(OS_MACOSX)
++#if defined(OS_MACOSX) || defined(OS_BSD)
+ // When enabling multicast using setsockopt(IP_MULTICAST_IF) MacOS
+ // requires passing IPv4 address instead of interface index. This function
+ // resolves IPv4 address by interface index. The |address| is returned in
+@@ -98,7 +98,7 @@ int GetIPv4AddressFromIndex(int socket, uint32_t index
+ return OK;
+ }
+
+-#endif // OS_MACOSX
++#endif // OS_MACOSX || OS_BSD
+
+ #if defined(OS_MACOSX) && !defined(OS_IOS)
+
+@@ -645,13 +645,13 @@ int UDPSocketPosix::SetDoNotFragment() {
+ }
+
+ void UDPSocketPosix::SetMsgConfirm(bool confirm) {
+-#if !defined(OS_MACOSX) && !defined(OS_IOS)
++#if !defined(OS_MACOSX) && !defined(OS_IOS) && !defined(OS_BSD)
+ if (confirm) {
+ sendto_flags_ |= MSG_CONFIRM;
+ } else {
+ sendto_flags_ &= ~MSG_CONFIRM;
+ }
+-#endif // !defined(OS_MACOSX) && !defined(OS_IOS)
++#endif // !defined(OS_MACOSX) && !defined(OS_IOS) && !defined(OS_BSD)
+ }
+
+ int UDPSocketPosix::AllowAddressReuse() {
+@@ -666,17 +666,20 @@ int UDPSocketPosix::SetBroadcast(bool broadcast) {
+ DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
+ int value = broadcast ? 1 : 0;
+ int rv;
+-#if defined(OS_MACOSX)
++#if defined(OS_MACOSX) || defined(OS_BSD)
+ // SO_REUSEPORT on OSX permits multiple processes to each receive
+ // UDP multicast or broadcast datagrams destined for the bound
+ // port.
+ // This is only being set on OSX because its behavior is platform dependent
+ // and we are playing it safe by only setting it on platforms where things
+ // break.
++ rv = setsockopt(socket_, SOL_SOCKET, SO_REUSEADDR, &value, sizeof(value));
++ if (rv != 0)
++ return MapSystemError(errno);
+ rv = setsockopt(socket_, SOL_SOCKET, SO_REUSEPORT, &value, sizeof(value));
+ if (rv != 0)
+ return MapSystemError(errno);
+-#endif // defined(OS_MACOSX)
++#endif // defined(OS_MACOSX) || defined(OS_BSD)
+ rv = setsockopt(socket_, SOL_SOCKET, SO_BROADCAST, &value, sizeof(value));
+
+ return rv == 0 ? OK : MapSystemError(errno);
+@@ -938,7 +941,7 @@ int UDPSocketPosix::SetMulticastOptions() {
+ if (multicast_interface_ != 0) {
+ switch (addr_family_) {
+ case AF_INET: {
+-#if defined(OS_MACOSX)
++#if defined(OS_MACOSX) || defined(OS_BSD)
+ ip_mreq mreq = {};
+ int error = GetIPv4AddressFromIndex(socket_, multicast_interface_,
+ &mreq.imr_interface.s_addr);
+@@ -950,7 +953,11 @@ int UDPSocketPosix::SetMulticastOptions() {
+ mreq.imr_address.s_addr = htonl(INADDR_ANY);
+ #endif // !defined(OS_MACOSX)
+ int rv = setsockopt(socket_, IPPROTO_IP, IP_MULTICAST_IF,
++#if defined(OS_BSD)
++ reinterpret_cast<const char*>(&mreq.imr_interface.s_addr), sizeof(mreq.imr_interface.s_addr));
++#else
+ reinterpret_cast<const char*>(&mreq), sizeof(mreq));
++#endif
+ if (rv)
+ return MapSystemError(errno);
+ break;
+@@ -1012,7 +1019,7 @@ int UDPSocketPosix::JoinGroup(const IPAddress& group_a
+ if (addr_family_ != AF_INET)
+ return ERR_ADDRESS_INVALID;
+
+-#if defined(OS_MACOSX)
++#if defined(OS_MACOSX) || defined(OS_BSD)
+ ip_mreq mreq = {};
+ int error = GetIPv4AddressFromIndex(socket_, multicast_interface_,
+ &mreq.imr_interface.s_addr);
+@@ -1060,9 +1067,18 @@ int UDPSocketPosix::LeaveGroup(const IPAddress& group_
+ case IPAddress::kIPv4AddressSize: {
+ if (addr_family_ != AF_INET)
+ return ERR_ADDRESS_INVALID;
++#if defined(OS_BSD)
++ ip_mreq mreq = {};
++ int error = GetIPv4AddressFromIndex(socket_, multicast_interface_,
++ &mreq.imr_interface.s_addr);
++
++ if (error != OK)
++ return error;
++#else
+ ip_mreqn mreq = {};
+ mreq.imr_ifindex = multicast_interface_;
+ mreq.imr_address.s_addr = INADDR_ANY;
++#endif
+ memcpy(&mreq.imr_multiaddr, group_address.bytes().data(),
+ IPAddress::kIPv4AddressSize);
+ int rv = setsockopt(socket_, IPPROTO_IP, IP_DROP_MEMBERSHIP,
diff --git a/devel/electron6/files/patch-net_socket_udp__socket__posix.h b/devel/electron6/files/patch-net_socket_udp__socket__posix.h
new file mode 100644
index 000000000000..72bf892abcb0
--- /dev/null
+++ b/devel/electron6/files/patch-net_socket_udp__socket__posix.h
@@ -0,0 +1,11 @@
+--- net/socket/udp_socket_posix.h.orig 2019-09-10 11:14:10 UTC
++++ net/socket/udp_socket_posix.h
+@@ -33,7 +33,7 @@
+
+ #if defined(__ANDROID__) && defined(__aarch64__)
+ #define HAVE_SENDMMSG 1
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ #define HAVE_SENDMMSG 1
+ #else
+ #define HAVE_SENDMMSG 0
diff --git a/devel/electron6/files/patch-net_socket_unix__domain__client__socket__posix.cc b/devel/electron6/files/patch-net_socket_unix__domain__client__socket__posix.cc
new file mode 100644
index 000000000000..81685d32a765
--- /dev/null
+++ b/devel/electron6/files/patch-net_socket_unix__domain__client__socket__posix.cc
@@ -0,0 +1,11 @@
+--- net/socket/unix_domain_client_socket_posix.cc.orig 2019-09-10 10:42:43 UTC
++++ net/socket/unix_domain_client_socket_posix.cc
+@@ -56,7 +56,7 @@ bool UnixDomainClientSocket::FillAddress(const std::st
+ return true;
+ }
+
+-#if defined(OS_ANDROID) || defined(OS_LINUX)
++#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_BSD)
+ // Convert the path given into abstract socket name. It must start with
+ // the '\0' character, so we are adding it. |addr_len| must specify the
+ // length of the structure exactly, as potentially the socket name may
diff --git a/devel/electron6/files/patch-net_tools_cert__verify__tool_cert__verify__tool.cc b/devel/electron6/files/patch-net_tools_cert__verify__tool_cert__verify__tool.cc
new file mode 100644
index 000000000000..21ee836bf151
--- /dev/null
+++ b/devel/electron6/files/patch-net_tools_cert__verify__tool_cert__verify__tool.cc
@@ -0,0 +1,20 @@
+--- net/tools/cert_verify_tool/cert_verify_tool.cc.orig 2019-09-10 11:14:10 UTC
++++ net/tools/cert_verify_tool/cert_verify_tool.cc
+@@ -28,7 +28,7 @@
+ #include "net/url_request/url_request_context_builder.h"
+ #include "net/url_request/url_request_context_getter.h"
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include "net/proxy_resolution/proxy_config.h"
+ #include "net/proxy_resolution/proxy_config_service_fixed.h"
+ #endif
+@@ -49,7 +49,7 @@ void SetUpOnNetworkThread(
+ base::WaitableEvent* initialization_complete_event) {
+ net::URLRequestContextBuilder url_request_context_builder;
+ url_request_context_builder.set_user_agent(GetUserAgent());
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // On Linux, use a fixed ProxyConfigService, since the default one
+ // depends on glib.
+ //
diff --git a/devel/electron6/files/patch-net_tools_quic_quic__http__proxy__backend.cc b/devel/electron6/files/patch-net_tools_quic_quic__http__proxy__backend.cc
new file mode 100644
index 000000000000..62ad72465d61
--- /dev/null
+++ b/devel/electron6/files/patch-net_tools_quic_quic__http__proxy__backend.cc
@@ -0,0 +1,11 @@
+--- net/tools/quic/quic_http_proxy_backend.cc.orig 2019-09-10 11:14:11 UTC
++++ net/tools/quic/quic_http_proxy_backend.cc
+@@ -160,7 +160,7 @@ void QuicHttpProxyBackend::InitializeURLRequestContext
+ // Enable HTTP2, but disable QUIC on the backend
+ context_builder.SetSpdyAndQuicEnabled(true /* http2 */, false /* quic */);
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // On Linux, use a fixed ProxyConfigService, since the default one
+ // depends on glib.
+ context_builder.set_proxy_config_service(
diff --git a/devel/electron6/files/patch-net_url__request_url__request__context__builder.cc b/devel/electron6/files/patch-net_url__request_url__request__context__builder.cc
new file mode 100644
index 000000000000..0c1dd48a53a2
--- /dev/null
+++ b/devel/electron6/files/patch-net_url__request_url__request__context__builder.cc
@@ -0,0 +1,20 @@
+--- net/url_request/url_request_context_builder.cc.orig 2019-09-10 11:14:11 UTC
++++ net/url_request/url_request_context_builder.cc
+@@ -534,7 +534,7 @@ std::unique_ptr<URLRequestContext> URLRequestContextBu
+ }
+
+ if (!proxy_resolution_service_) {
+-#if !defined(OS_LINUX) && !defined(OS_ANDROID)
++#if !defined(OS_LINUX) && !defined(OS_ANDROID) && !defined(OS_BSD)
+ // TODO(willchan): Switch to using this code when
+ // ProxyResolutionService::CreateSystemProxyConfigService()'s signature
+ // doesn't suck.
+@@ -543,7 +543,7 @@ std::unique_ptr<URLRequestContext> URLRequestContextBu
+ ProxyResolutionService::CreateSystemProxyConfigService(
+ base::ThreadTaskRunnerHandle::Get().get());
+ }
+-#endif // !defined(OS_LINUX) && !defined(OS_ANDROID)
++#endif // !defined(OS_LINUX) && !defined(OS_ANDROID) && !defined(OS_BSD)
+ proxy_resolution_service_ = CreateProxyResolutionService(
+ std::move(proxy_config_service_), context.get(),
+ context->host_resolver(), context->network_delegate(),
diff --git a/devel/electron6/files/patch-pdf_pdfium_pdfium__engine.cc b/devel/electron6/files/patch-pdf_pdfium_pdfium__engine.cc
new file mode 100644
index 000000000000..ae6c92b2918c
--- /dev/null
+++ b/devel/electron6/files/patch-pdf_pdfium_pdfium__engine.cc
@@ -0,0 +1,74 @@
+--- pdf/pdfium/pdfium_engine.cc.orig 2019-09-10 11:14:11 UTC
++++ pdf/pdfium/pdfium_engine.cc
+@@ -134,7 +134,7 @@ constexpr base::TimeDelta kMaxInitialProgressivePaintT
+
+ PDFiumEngine* g_engine_for_fontmapper = nullptr;
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+
+ PP_Instance g_last_instance_id;
+
+@@ -414,7 +414,7 @@ void Release(FPDF_SYSFONTINFO* sysfontinfo) {
+ fontinfo_with_metrics->default_sysfontinfo->Release(
+ fontinfo_with_metrics->default_sysfontinfo);
+ }
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+
+ PDFiumEngine::CreateDocumentLoaderFunction
+ g_create_document_loader_for_testing = nullptr;
+@@ -664,7 +664,7 @@ bool InitializeSDK() {
+ config.m_v8EmbedderSlot = gin::kEmbedderPDFium;
+ FPDF_InitLibraryWithConfig(&config);
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Font loading doesn't work in the renderer sandbox in Linux.
+ FPDF_SetSystemFontInfo(&g_font_info);
+ #else
+@@ -689,7 +689,7 @@ bool InitializeSDK() {
+
+ void ShutdownSDK() {
+ FPDF_DestroyLibrary();
+-#if !defined(OS_LINUX)
++#if !defined(OS_LINUX) && !defined(OS_BSD)
+ delete g_font_info;
+ #endif
+ TearDownV8();
+@@ -713,7 +713,7 @@ PDFiumEngine::PDFiumEngine(PDFEngine::Client* client,
+ IFSDK_PAUSE::user = nullptr;
+ IFSDK_PAUSE::NeedToPauseNow = Pause_NeedToPauseNow;
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // PreviewModeClient does not know its pp::Instance.
+ pp::Instance* instance = client_->GetPluginInstance();
+ if (instance)
+@@ -1177,7 +1177,7 @@ pp::Buffer_Dev PDFiumEngine::PrintPagesAsRasterPdf(
+
+ KillFormFocus();
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ g_last_instance_id = client_->GetPluginInstance()->pp_instance();
+ #endif
+
+@@ -2978,7 +2978,7 @@ bool PDFiumEngine::ContinuePaint(int progressive_index
+ DCHECK(image_data);
+
+ last_progressive_start_time_ = base::Time::Now();
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ g_last_instance_id = client_->GetPluginInstance()->pp_instance();
+ #endif
+
+@@ -3453,7 +3453,7 @@ void PDFiumEngine::SetCurrentPage(int index) {
+ FORM_DoPageAAction(old_page, form(), FPDFPAGE_AACTION_CLOSE);
+ }
+ most_visible_page_ = index;
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ g_last_instance_id = client_->GetPluginInstance()->pp_instance();
+ #endif
+ if (most_visible_page_ != -1 && called_do_document_action_) {
diff --git a/devel/electron6/files/patch-ppapi_proxy_file__io__resource.cc b/devel/electron6/files/patch-ppapi_proxy_file__io__resource.cc
new file mode 100644
index 000000000000..9eef7c1cbd55
--- /dev/null
+++ b/devel/electron6/files/patch-ppapi_proxy_file__io__resource.cc
@@ -0,0 +1,48 @@
+--- ppapi/proxy/file_io_resource.cc.orig 2019-09-10 10:42:43 UTC
++++ ppapi/proxy/file_io_resource.cc
+@@ -285,17 +285,19 @@ int32_t FileIOResource::Write(int64_t offset,
+
+ if (check_quota_) {
+ int64_t increase = 0;
+- uint64_t max_offset = 0;
++ uint64_t _max_offset = 0;
++ // (rene) avoid name collission with /usr/include/vm/vm_map.h on FreeBSD
++ // which also defines max_offset
+ bool append = (open_flags_ & PP_FILEOPENFLAG_APPEND) != 0;
+ if (append) {
+ increase = bytes_to_write;
+ } else {
+- uint64_t max_offset = offset + bytes_to_write;
+- if (max_offset >
++ uint64_t _max_offset = offset + bytes_to_write;
++ if (_max_offset >
+ static_cast<uint64_t>(std::numeric_limits<int64_t>::max())) {
+ return PP_ERROR_FAILED; // amount calculation would overflow.
+ }
+- increase = static_cast<int64_t>(max_offset) - max_written_offset_;
++ increase = static_cast<int64_t>(_max_offset) - max_written_offset_;
+ }
+
+ if (increase > 0) {
+@@ -319,7 +321,7 @@ int32_t FileIOResource::Write(int64_t offset,
+ if (append)
+ append_mode_write_amount_ += bytes_to_write;
+ else
+- max_written_offset_ = max_offset;
++ max_written_offset_ = _max_offset;
+ }
+ }
+ return WriteValidated(offset, buffer, bytes_to_write, callback);
+@@ -597,9 +599,9 @@ void FileIOResource::OnRequestWriteQuotaComplete(
+ } else {
+ DCHECK_LE(offset + bytes_to_write - max_written_offset_, granted);
+
+- int64_t max_offset = offset + bytes_to_write;
+- if (max_written_offset_ < max_offset)
+- max_written_offset_ = max_offset;
++ int64_t _max_offset = offset + bytes_to_write;
++ if (max_written_offset_ < _max_offset)
++ max_written_offset_ = _max_offset;
+ }
+
+ if (callback->is_blocking()) {
diff --git a/devel/electron6/files/patch-printing_backend_print__backend__cups.h b/devel/electron6/files/patch-printing_backend_print__backend__cups.h
new file mode 100644
index 000000000000..535e9ca5ba04
--- /dev/null
+++ b/devel/electron6/files/patch-printing_backend_print__backend__cups.h
@@ -0,0 +1,11 @@
+--- printing/backend/print_backend_cups.h.orig 2019-09-10 11:14:11 UTC
++++ printing/backend/print_backend_cups.h
+@@ -5,6 +5,8 @@
+ #ifndef PRINTING_BACKEND_PRINT_BACKEND_CUPS_H_
+ #define PRINTING_BACKEND_PRINT_BACKEND_CUPS_H_
+
++#include <cups/ppd.h>
++
+ #include <string>
+
+ #include "base/files/file_util.h"
diff --git a/devel/electron6/files/patch-printing_cups__config__helper.py b/devel/electron6/files/patch-printing_cups__config__helper.py
new file mode 100644
index 000000000000..4a5df9ff1dd2
--- /dev/null
+++ b/devel/electron6/files/patch-printing_cups__config__helper.py
@@ -0,0 +1,11 @@
+--- printing/cups_config_helper.py.orig 2019-09-10 10:42:43 UTC
++++ printing/cups_config_helper.py
+@@ -65,7 +65,7 @@ def main():
+ mode = sys.argv[1]
+ if len(sys.argv) > 2 and sys.argv[2]:
+ sysroot = sys.argv[2]
+- cups_config = os.path.join(sysroot, 'usr', 'bin', 'cups-config')
++ cups_config = os.path.join(sysroot, 'bin', 'cups-config')
+ if not os.path.exists(cups_config):
+ print 'cups-config not found: %s' % cups_config
+ return 1
diff --git a/devel/electron6/files/patch-remoting_base_chromoting__event.cc b/devel/electron6/files/patch-remoting_base_chromoting__event.cc
new file mode 100644
index 000000000000..a95349dacede
--- /dev/null
+++ b/devel/electron6/files/patch-remoting_base_chromoting__event.cc
@@ -0,0 +1,11 @@
+--- remoting/base/chromoting_event.cc.orig 2019-09-10 11:14:11 UTC
++++ remoting/base/chromoting_event.cc
+@@ -189,7 +189,7 @@ void ChromotingEvent::AddSystemInfo() {
+ SetString(kCpuKey, base::SysInfo::OperatingSystemArchitecture());
+ SetString(kOsVersionKey, GetOperatingSystemVersionString());
+ SetString(kWebAppVersionKey, STRINGIZE(VERSION));
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ Os os = Os::CHROMOTING_LINUX;
+ #elif defined(OS_CHROMEOS)
+ Os os = Os::CHROMOTING_CHROMEOS;
diff --git a/devel/electron6/files/patch-remoting_client_display_sys__opengl.h b/devel/electron6/files/patch-remoting_client_display_sys__opengl.h
new file mode 100644
index 000000000000..48124c8a6bf1
--- /dev/null
+++ b/devel/electron6/files/patch-remoting_client_display_sys__opengl.h
@@ -0,0 +1,11 @@
+--- remoting/client/display/sys_opengl.h.orig 2019-09-10 10:42:43 UTC
++++ remoting/client/display/sys_opengl.h
+@@ -9,7 +9,7 @@
+
+ #if defined(OS_IOS)
+ #include <OpenGLES/ES3/gl.h>
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ #define GL_GLEXT_PROTOTYPES
+ #include <GL/gl.h>
+ #include <GL/glext.h>
diff --git a/devel/electron6/files/patch-remoting_host_evaluate__capability.cc b/devel/electron6/files/patch-remoting_host_evaluate__capability.cc
new file mode 100644
index 000000000000..879aef159f18
--- /dev/null
+++ b/devel/electron6/files/patch-remoting_host_evaluate__capability.cc
@@ -0,0 +1,11 @@
+--- remoting/host/evaluate_capability.cc.orig 2019-09-10 10:42:43 UTC
++++ remoting/host/evaluate_capability.cc
+@@ -50,7 +50,7 @@ base::FilePath BuildHostBinaryPath() {
+ }
+ #endif
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ if (path.BaseName().value() ==
+ FILE_PATH_LITERAL("chrome-remote-desktop-host")) {
+ return path;
diff --git a/devel/electron6/files/patch-remoting_host_host__attributes.cc b/devel/electron6/files/patch-remoting_host_host__attributes.cc
new file mode 100644
index 000000000000..3dbc10a512e8
--- /dev/null
+++ b/devel/electron6/files/patch-remoting_host_host__attributes.cc
@@ -0,0 +1,11 @@
+--- remoting/host/host_attributes.cc.orig 2019-09-10 11:14:11 UTC
++++ remoting/host/host_attributes.cc
+@@ -123,7 +123,7 @@ std::string GetHostAttributes() {
+ media::InitializeMediaFoundation()) {
+ result.push_back("HWEncoder");
+ }
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ result.push_back("HWEncoder");
+ #endif
+
diff --git a/devel/electron6/files/patch-remoting_host_host__details.cc b/devel/electron6/files/patch-remoting_host_host__details.cc
new file mode 100644
index 000000000000..e705321f08ce
--- /dev/null
+++ b/devel/electron6/files/patch-remoting_host_host__details.cc
@@ -0,0 +1,11 @@
+--- remoting/host/host_details.cc.orig 2019-09-10 11:14:11 UTC
++++ remoting/host/host_details.cc
+@@ -24,7 +24,7 @@ std::string GetHostOperatingSystemName() {
+ return "Mac";
+ #elif defined(OS_CHROMEOS)
+ return "ChromeOS";
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ return "Linux";
+ #elif defined(OS_ANDROID)
+ return "Android";
diff --git a/devel/electron6/files/patch-remoting_host_it2me_it2me__native__messaging__host__main.cc b/devel/electron6/files/patch-remoting_host_it2me_it2me__native__messaging__host__main.cc
new file mode 100644
index 000000000000..655c1a6f3c84
--- /dev/null
+++ b/devel/electron6/files/patch-remoting_host_it2me_it2me__native__messaging__host__main.cc
@@ -0,0 +1,35 @@
+--- remoting/host/it2me/it2me_native_messaging_host_main.cc.orig 2019-09-10 11:14:11 UTC
++++ remoting/host/it2me/it2me_native_messaging_host_main.cc
+@@ -27,12 +27,12 @@
+ #include "remoting/host/resources.h"
+ #include "remoting/host/usage_stats_consent.h"
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include <gtk/gtk.h>
+
+ #include "base/linux_util.h"
+ #include "ui/gfx/x/x11.h"
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+
+ #if defined(OS_MACOSX)
+ #include "base/mac/scoped_nsautorelease_pool.h"
+@@ -106,7 +106,7 @@ int It2MeNativeMessagingHostMain(int argc, char** argv
+
+ remoting::LoadResources("");
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Required in order for us to run multiple X11 threads.
+ XInitThreads();
+
+@@ -122,7 +122,7 @@ int It2MeNativeMessagingHostMain(int argc, char** argv
+ // Need to prime the host OS version value for linux to prevent IO on the
+ // network thread. base::GetLinuxDistro() caches the result.
+ base::GetLinuxDistro();
+-#endif // OS_LINUX
++#endif // OS_LINUX || OS_BSD
+
+ base::File read_file;
+ base::File write_file;
diff --git a/devel/electron6/files/patch-remoting_host_me2me__desktop__environment.cc b/devel/electron6/files/patch-remoting_host_me2me__desktop__environment.cc
new file mode 100644
index 000000000000..b83b156ff2f4
--- /dev/null
+++ b/devel/electron6/files/patch-remoting_host_me2me__desktop__environment.cc
@@ -0,0 +1,11 @@
+--- remoting/host/me2me_desktop_environment.cc.orig 2019-09-10 11:14:11 UTC
++++ remoting/host/me2me_desktop_environment.cc
+@@ -131,7 +131,7 @@ bool Me2MeDesktopEnvironment::InitializeSecurity(
+
+ // Otherwise, if the session is shared with the local user start monitoring
+ // the local input and create the in-session UI.
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ bool want_user_interface = false;
+ #elif defined(OS_MACOSX)
+ // Don't try to display any UI on top of the system's login screen as this
diff --git a/devel/electron6/files/patch-remoting_host_remoting__me2me__host.cc b/devel/electron6/files/patch-remoting_host_remoting__me2me__host.cc
new file mode 100644
index 000000000000..62e1fa64c857
--- /dev/null
+++ b/devel/electron6/files/patch-remoting_host_remoting__me2me__host.cc
@@ -0,0 +1,108 @@
+--- remoting/host/remoting_me2me_host.cc.orig 2019-09-10 11:14:11 UTC
++++ remoting/host/remoting_me2me_host.cc
+@@ -126,13 +126,13 @@
+ #include "remoting/host/mac/permission_utils.h"
+ #endif // defined(OS_MACOSX)
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include <gtk/gtk.h>
+ #include "base/linux_util.h"
+ #include "remoting/host/audio_capturer_linux.h"
+ #include "remoting/host/linux/certificate_watcher.h"
+ #include "ui/gfx/x/x11.h"
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+
+ #if defined(OS_WIN)
+ #include <commctrl.h>
+@@ -167,11 +167,11 @@ const char kApplicationName[] = "chromoting";
+ const char kStdinConfigPath[] = "-";
+ #endif // !defined(REMOTING_MULTI_PROCESS)
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // The command line switch used to pass name of the pipe to capture audio on
+ // linux.
+ const char kAudioPipeSwitchName[] = "audio-pipe-name";
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+
+ #if defined(OS_POSIX)
+ // The command line switch used to pass name of the unix domain socket used to
+@@ -369,7 +369,7 @@ class HostProcess : public ConfigWatcher::Delegate,
+
+ std::unique_ptr<ChromotingHostContext> context_;
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Watch for certificate changes and kill the host when changes occur
+ std::unique_ptr<CertificateWatcher> cert_watcher_;
+ #endif
+@@ -589,10 +589,10 @@ bool HostProcess::InitWithCommandLine(const base::Comm
+ enable_window_capture_ = cmd_line->HasSwitch(kWindowIdSwitchName);
+ if (enable_window_capture_) {
+
+-#if defined(OS_LINUX) || defined(OS_WIN)
++#if defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD)
+ LOG(WARNING) << "Window capturing is not fully supported on Linux or "
+ "Windows.";
+-#endif // defined(OS_LINUX) || defined(OS_WIN)
++#endif // defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD)
+
+ // uint32_t is large enough to hold window IDs on all platforms.
+ uint32_t window_id;
+@@ -788,7 +788,7 @@ void HostProcess::CreateAuthenticatorFactory() {
+ DCHECK(third_party_auth_config_.token_url.is_valid());
+ DCHECK(third_party_auth_config_.token_validation_url.is_valid());
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ if (!cert_watcher_) {
+ cert_watcher_.reset(new CertificateWatcher(
+ base::Bind(&HostProcess::ShutdownHost, this, kSuccessExitCode),
+@@ -874,7 +874,7 @@ void HostProcess::StartOnUiThread() {
+ base::Bind(&HostProcess::OnPolicyUpdate, base::Unretained(this)),
+ base::Bind(&HostProcess::OnPolicyError, base::Unretained(this)));
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // If an audio pipe is specific on the command-line then initialize
+ // AudioCapturerLinux to capture from it.
+ base::FilePath audio_pipe_name = base::CommandLine::ForCurrentProcess()->
+@@ -883,7 +883,7 @@ void HostProcess::StartOnUiThread() {
+ remoting::AudioCapturerLinux::InitializePipeReader(
+ context_->audio_task_runner(), audio_pipe_name);
+ }
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+
+ #if defined(OS_POSIX)
+ base::FilePath security_key_socket_name =
+@@ -940,7 +940,7 @@ void HostProcess::ShutdownOnUiThread() {
+ // It is now safe for the HostProcess to be deleted.
+ self_ = nullptr;
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Cause the global AudioPipeReader to be freed, otherwise the audio
+ // thread will remain in-use and prevent the process from exiting.
+ // TODO(wez): DesktopEnvironmentFactory should own the pipe reader.
+@@ -1634,7 +1634,7 @@ void HostProcess::StartHost() {
+ host_->AddExtension(std::make_unique<TestEchoExtension>());
+
+ // TODO(simonmorris): Get the maximum session duration from a policy.
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ host_->SetMaximumSessionDuration(base::TimeDelta::FromHours(20));
+ #endif
+
+@@ -1819,7 +1819,7 @@ void HostProcess::OnCrash(const std::string& function_
+ int HostProcessMain() {
+ HOST_LOG << "Starting host process: version " << STRINGIZE(VERSION);
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ if (!base::CommandLine::ForCurrentProcess()->HasSwitch(
+ kReportOfflineReasonSwitchName)) {
+ // Required in order for us to run multiple X11 threads.
diff --git a/devel/electron6/files/patch-remoting_webapp_base_js_platform.js b/devel/electron6/files/patch-remoting_webapp_base_js_platform.js
new file mode 100644
index 000000000000..000ff4201d25
--- /dev/null
+++ b/devel/electron6/files/patch-remoting_webapp_base_js_platform.js
@@ -0,0 +1,17 @@
+--- remoting/webapp/base/js/platform.js.orig 2019-09-10 10:42:43 UTC
++++ remoting/webapp/base/js/platform.js
+@@ -107,6 +107,14 @@ remoting.getSystemInfo = function() {
+ return result;
+ }
+
++ match = new RegExp('FreeBSD ([a-zA-Z0-9_]*)').exec(userAgent);
++ if (match && (match.length >= 2)) {
++ result.osName = remoting.Os.LINUX;
++ result.osVersion = '';
++ result.cpu = match[1];
++ return result;
++ }
++
+ match = new RegExp('([a-zA-Z]*) Mac OS X ([0-9_]*)').exec(userAgent);
+ if (match && (match.length >= 3)) {
+ result.osName = remoting.Os.MAC;
diff --git a/devel/electron6/files/patch-sandbox_features.gni b/devel/electron6/files/patch-sandbox_features.gni
new file mode 100644
index 000000000000..fb07624e9912
--- /dev/null
+++ b/devel/electron6/files/patch-sandbox_features.gni
@@ -0,0 +1,10 @@
+--- sandbox/features.gni.orig 2019-09-10 10:42:43 UTC
++++ sandbox/features.gni
+@@ -12,6 +12,6 @@ use_seccomp_bpf =
+ (is_linux || is_android) &&
+ (current_cpu == "x86" || current_cpu == "x64" || current_cpu == "arm" ||
+ current_cpu == "arm64" || current_cpu == "mipsel" ||
+- current_cpu == "mips64el")
++ current_cpu == "mips64el") && !is_bsd
+
+ use_seccomp_bpf = use_seccomp_bpf || is_nacl_nonsfi
diff --git a/devel/electron6/files/patch-sandbox_linux_BUILD.gn b/devel/electron6/files/patch-sandbox_linux_BUILD.gn
new file mode 100644
index 000000000000..71bc60b9f5f0
--- /dev/null
+++ b/devel/electron6/files/patch-sandbox_linux_BUILD.gn
@@ -0,0 +1,47 @@
+--- sandbox/linux/BUILD.gn.orig 2019-09-10 10:42:43 UTC
++++ sandbox/linux/BUILD.gn
+@@ -12,12 +12,12 @@ if (is_android) {
+ }
+
+ declare_args() {
+- compile_suid_client = is_linux
++ compile_suid_client = is_linux && !is_bsd
+
+- compile_credentials = is_linux
++ compile_credentials = is_linux && !is_bsd
+
+ # On Android, use plain GTest.
+- use_base_test_suite = is_linux
++ use_base_test_suite = is_linux && !is_bsd
+ }
+
+ if (is_nacl_nonsfi) {
+@@ -379,7 +379,7 @@ component("sandbox_services") {
+ public_deps += [ ":sandbox_services_headers" ]
+ }
+
+- if (is_nacl_nonsfi) {
++ if (is_nacl_nonsfi || is_bsd) {
+ cflags = [ "-fgnu-inline-asm" ]
+
+ sources -= [
+@@ -387,6 +387,8 @@ component("sandbox_services") {
+ "services/init_process_reaper.h",
+ "services/scoped_process.cc",
+ "services/scoped_process.h",
++ "services/syscall_wrappers.cc",
++ "services/syscall_wrappers.h",
+ "services/yama.cc",
+ "services/yama.h",
+ "syscall_broker/broker_channel.cc",
+@@ -405,6 +407,10 @@ component("sandbox_services") {
+ "syscall_broker/broker_process.h",
+ "syscall_broker/broker_simple_message.cc",
+ "syscall_broker/broker_simple_message.h",
++ ]
++ sources += [
++ "services/libc_interceptor.cc",
++ "services/libc_interceptor.h",
+ ]
+ } else if (!is_android) {
+ sources += [
diff --git a/devel/electron6/files/patch-sandbox_linux_services_init__process__reaper.cc b/devel/electron6/files/patch-sandbox_linux_services_init__process__reaper.cc
new file mode 100644
index 000000000000..3b9857101454
--- /dev/null
+++ b/devel/electron6/files/patch-sandbox_linux_services_init__process__reaper.cc
@@ -0,0 +1,15 @@
+--- sandbox/linux/services/init_process_reaper.cc.orig 2019-09-10 10:42:43 UTC
++++ sandbox/linux/services/init_process_reaper.cc
+@@ -1,6 +1,7 @@
+ // Copyright 2013 The Chromium Authors. All rights reserved.
+ // Use of this source code is governed by a BSD-style license that can be
+ // found in the LICENSE file.
++#if 0
+
+ #include "sandbox/linux/services/init_process_reaper.h"
+
+@@ -100,3 +101,4 @@ bool CreateInitProcessReaper(base::OnceClosure post_fo
+ }
+
+ } // namespace sandbox.
++#endif
diff --git a/devel/electron6/files/patch-sandbox_linux_services_libc__interceptor.cc b/devel/electron6/files/patch-sandbox_linux_services_libc__interceptor.cc
new file mode 100644
index 000000000000..7f22281afee7
--- /dev/null
+++ b/devel/electron6/files/patch-sandbox_linux_services_libc__interceptor.cc
@@ -0,0 +1,21 @@
+--- sandbox/linux/services/libc_interceptor.cc.orig 2019-09-10 10:42:43 UTC
++++ sandbox/linux/services/libc_interceptor.cc
+@@ -11,7 +11,9 @@
+ #include <stddef.h>
+ #include <stdint.h>
+ #include <string.h>
++#if !defined(OS_BSD)
+ #include <sys/prctl.h>
++#endif
+ #include <sys/socket.h>
+ #include <sys/types.h>
+ #include <time.h>
+@@ -94,7 +96,7 @@ bool ReadTimeStruct(base::PickleIterator* iter,
+ } else {
+ base::AutoLock lock(g_timezones_lock.Get());
+ auto ret_pair = g_timezones.Get().insert(timezone);
+- output->tm_zone = ret_pair.first->c_str();
++ output->tm_zone = (char *)ret_pair.first->c_str();
+ }
+
+ return true;
diff --git a/devel/electron6/files/patch-services_audio_BUILD.gn b/devel/electron6/files/patch-services_audio_BUILD.gn
new file mode 100644
index 000000000000..09ec5dce8424
--- /dev/null
+++ b/devel/electron6/files/patch-services_audio_BUILD.gn
@@ -0,0 +1,11 @@
+--- services/audio/BUILD.gn.orig 2019-09-10 10:42:43 UTC
++++ services/audio/BUILD.gn
+@@ -99,7 +99,7 @@ source_set("lib") {
+ "//services/service_manager/sandbox:sandbox",
+ ]
+
+- if (is_linux) {
++ if ((is_linux) && (!is_bsd)) {
+ sources += [
+ "audio_sandbox_hook_linux.cc",
+ "audio_sandbox_hook_linux.h",
diff --git a/devel/electron6/files/patch-services_content_simple__browser_simple__browser__service.cc b/devel/electron6/files/patch-services_content_simple__browser_simple__browser__service.cc
new file mode 100644
index 000000000000..6b5013bbc09c
--- /dev/null
+++ b/devel/electron6/files/patch-services_content_simple__browser_simple__browser__service.cc
@@ -0,0 +1,20 @@
+--- services/content/simple_browser/simple_browser_service.cc.orig 2019-09-10 11:14:11 UTC
++++ services/content/simple_browser/simple_browser_service.cc
+@@ -7,7 +7,7 @@
+ #include "build/build_config.h"
+ #include "services/content/simple_browser/window.h"
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include "third_party/skia/include/ports/SkFontConfigInterface.h" // nogncheck
+ #endif
+
+@@ -23,7 +23,7 @@ SimpleBrowserService::~SimpleBrowserService() = defaul
+
+ void SimpleBrowserService::OnStart() {
+ if (ui_initialization_mode_ == UIInitializationMode::kInitializeUI) {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ font_loader_ =
+ sk_make_sp<font_service::FontLoader>(service_binding_.GetConnector());
+ SkFontConfigInterface::SetGlobal(font_loader_);
diff --git a/devel/electron6/files/patch-services_content_simple__browser_simple__browser__service.h b/devel/electron6/files/patch-services_content_simple__browser_simple__browser__service.h
new file mode 100644
index 000000000000..23416edf2156
--- /dev/null
+++ b/devel/electron6/files/patch-services_content_simple__browser_simple__browser__service.h
@@ -0,0 +1,20 @@
+--- services/content/simple_browser/simple_browser_service.h.orig 2019-09-10 11:14:11 UTC
++++ services/content/simple_browser/simple_browser_service.h
+@@ -15,7 +15,7 @@
+ #include "services/service_manager/public/cpp/service_binding.h"
+ #include "services/service_manager/public/mojom/service.mojom.h"
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include "components/services/font/public/cpp/font_loader.h" // nogncheck
+ #endif
+
+@@ -45,7 +45,7 @@ class COMPONENT_EXPORT(SIMPLE_BROWSER) SimpleBrowserSe
+ // service_manager::Service:
+ void OnStart() override;
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ sk_sp<font_service::FontLoader> font_loader_;
+ #endif
+
diff --git a/devel/electron6/files/patch-services_device_geolocation_location__arbitrator.cc b/devel/electron6/files/patch-services_device_geolocation_location__arbitrator.cc
new file mode 100644
index 000000000000..51f3faafebdd
--- /dev/null
+++ b/devel/electron6/files/patch-services_device_geolocation_location__arbitrator.cc
@@ -0,0 +1,11 @@
+--- services/device/geolocation/location_arbitrator.cc.orig 2019-09-10 10:42:43 UTC
++++ services/device/geolocation/location_arbitrator.cc
+@@ -156,7 +156,7 @@ LocationArbitrator::NewNetworkLocationProvider(
+
+ std::unique_ptr<LocationProvider>
+ LocationArbitrator::NewSystemLocationProvider() {
+-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || \
++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD) || \
+ defined(OS_FUCHSIA)
+ return nullptr;
+ #else
diff --git a/devel/electron6/files/patch-services_device_hid_BUILD.gn b/devel/electron6/files/patch-services_device_hid_BUILD.gn
new file mode 100644
index 000000000000..9b85f5c60393
--- /dev/null
+++ b/devel/electron6/files/patch-services_device_hid_BUILD.gn
@@ -0,0 +1,22 @@
+--- services/device/hid/BUILD.gn.orig 2019-09-10 10:42:43 UTC
++++ services/device/hid/BUILD.gn
+@@ -51,6 +51,19 @@ source_set("hid") {
+ deps += [ "//device/udev_linux" ]
+ }
+
++ if (is_bsd) {
++ sources -= [
++ "hid_connection_linux.cc",
++ "hid_connection_linux.h",
++ ]
++ sources += [
++ "hid_connection_freebsd.cc",
++ "hid_connection_freebsd.h",
++ "hid_service_freebsd.cc",
++ "hid_service_freebsd.h",
++ ]
++ }
++
+ if (is_chromeos) {
+ deps += [ "//chromeos/dbus/permission_broker" ]
+ }
diff --git a/devel/electron6/files/patch-services_device_hid_hid__connection__freebsd.cc b/devel/electron6/files/patch-services_device_hid_hid__connection__freebsd.cc
new file mode 100644
index 000000000000..aa83dd50bcaf
--- /dev/null
+++ b/devel/electron6/files/patch-services_device_hid_hid__connection__freebsd.cc
@@ -0,0 +1,243 @@
+--- services/device/hid/hid_connection_freebsd.cc.orig 2019-09-16 09:25:15 UTC
++++ services/device/hid/hid_connection_freebsd.cc
+@@ -0,0 +1,240 @@
++// Copyright (c) 2014 The Chromium Authors. All rights reserved.
++// Use of this source code is governed by a BSD-style license that can be
++// found in the LICENSE file.
++
++#include "services/device/hid/hid_connection_freebsd.h"
++
++#include <dev/usb/usbhid.h>
++#include <dev/usb/usb_ioctl.h>
++
++#include "base/bind.h"
++#include "base/files/file_descriptor_watcher_posix.h"
++#include "base/location.h"
++#include "base/numerics/safe_math.h"
++#include "base/posix/eintr_wrapper.h"
++#include "base/single_thread_task_runner.h"
++#include "base/strings/stringprintf.h"
++#include "base/task/post_task.h"
++#include "base/threading/scoped_blocking_call.h"
++#include "base/threading/thread_restrictions.h"
++#include "base/threading/thread_task_runner_handle.h"
++#include "components/device_event_log/device_event_log.h"
++#include "services/device/hid/hid_service.h"
++
++namespace device {
++
++class HidConnectionFreeBSD::BlockingTaskHelper {
++ public:
++ BlockingTaskHelper(base::ScopedFD fd,
++ scoped_refptr<HidDeviceInfo> device_info,
++ base::WeakPtr<HidConnectionFreeBSD> connection)
++ : fd_(std::move(fd)),
++ connection_(connection),
++ origin_task_runner_(base::ThreadTaskRunnerHandle::Get()) {
++ DETACH_FROM_SEQUENCE(sequence_checker_);
++ // Report buffers must always have room for the report ID.
++ report_buffer_size_ = device_info->max_input_report_size() + 1;
++ has_report_id_ = device_info->has_report_id();
++ }
++
++ ~BlockingTaskHelper() { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); }
++
++ // Starts the FileDescriptorWatcher that reads input events from the device.
++ // Must be called on a thread that has a base::MessageLoopForIO.
++ void Start() {
++ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
++ base::internal::AssertBlockingAllowed();
++
++ file_watcher_ = base::FileDescriptorWatcher::WatchReadable(
++ fd_.get(), base::Bind(&BlockingTaskHelper::OnFileCanReadWithoutBlocking,
++ base::Unretained(this)));
++ }
++
++ void Write(scoped_refptr<base::RefCountedBytes> buffer,
++ WriteCallback callback) {
++ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
++ base::ScopedBlockingCall scoped_blocking_call(
++ FROM_HERE, base::BlockingType::MAY_BLOCK);
++
++ auto data = buffer->front();
++ size_t size = buffer->size();
++ // if report id is 0, it shouldn't be included
++ if (data[0] == 0) {
++ data++;
++ size--;
++ }
++
++ ssize_t result = HANDLE_EINTR(write(fd_.get(), data, size));
++ if (result < 0) {
++ HID_PLOG(EVENT) << "Write failed";
++ origin_task_runner_->PostTask(FROM_HERE, base::BindOnce(std::move(callback), false));
++ } else {
++ if (static_cast<size_t>(result) != size)
++ HID_LOG(EVENT) << "Incomplete HID write: " << result << " != " << size;
++ origin_task_runner_->PostTask(FROM_HERE, base::BindOnce(std::move(callback), true));
++ }
++ }
++
++ void GetFeatureReport(uint8_t report_id,
++ scoped_refptr<base::RefCountedBytes> buffer,
++ ReadCallback callback) {
++ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
++ base::ScopedBlockingCall scoped_blocking_call(
++ FROM_HERE, base::BlockingType::MAY_BLOCK);
++ struct usb_gen_descriptor ugd;
++ ugd.ugd_report_type = UHID_FEATURE_REPORT;
++ ugd.ugd_data = buffer->front();
++ ugd.ugd_maxlen = buffer->size();
++ int result = HANDLE_EINTR(
++ ioctl(fd_.get(), USB_GET_REPORT, &ugd));
++ if (result < 0) {
++ HID_PLOG(EVENT) << "Failed to get feature report";
++ origin_task_runner_->PostTask(FROM_HERE,
++ base::BindOnce(std::move(callback), false, nullptr, 0));
++ } else if (result == 0) {
++ HID_LOG(EVENT) << "Get feature result too short.";
++ origin_task_runner_->PostTask(FROM_HERE,
++ base::BindOnce(std::move(callback), false, nullptr, 0));
++ } else {
++ origin_task_runner_->PostTask(FROM_HERE,
++ base::BindOnce(std::move(callback), true, buffer, result));
++ }
++ }
++
++ void SendFeatureReport(scoped_refptr<base::RefCountedBytes> buffer,
++ WriteCallback callback) {
++ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
++ struct usb_gen_descriptor ugd;
++ ugd.ugd_report_type = UHID_FEATURE_REPORT;
++ ugd.ugd_data = buffer->front();
++ ugd.ugd_maxlen = buffer->size();
++ // FreeBSD does not require report id if it's not used
++ if (buffer->front()[0] == 0) {
++ ugd.ugd_data = buffer->front() + 1;
++ ugd.ugd_maxlen = buffer->size() - 1;
++ } else {
++ ugd.ugd_data = buffer->front();
++ ugd.ugd_maxlen = buffer->size();
++ }
++ int result = HANDLE_EINTR(
++ ioctl(fd_.get(), USB_SET_REPORT, &ugd));
++ if (result < 0) {
++ HID_PLOG(EVENT) << "Failed to send feature report";
++ origin_task_runner_->PostTask(FROM_HERE,
++ base::BindOnce(std::move(callback), false));
++ } else {
++ origin_task_runner_->PostTask(FROM_HERE,
++ base::BindOnce(std::move(callback), true));
++ }
++ }
++
++ private:
++ void OnFileCanReadWithoutBlocking() {
++ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
++
++ scoped_refptr<base::RefCountedBytes> buffer(new base::RefCountedBytes(report_buffer_size_));
++ unsigned char* data = buffer->front();
++ size_t length = report_buffer_size_;
++ if (!has_report_id_) {
++ // FreeBSD will not prefix the buffer with a report ID if report IDs are not
++ // used by the device. Prefix the buffer with 0.
++ *data++ = 0;
++ length--;
++ }
++
++ ssize_t bytes_read = HANDLE_EINTR(read(fd_.get(), data, length));
++ if (bytes_read < 0) {
++ if (errno != EAGAIN) {
++ HID_PLOG(EVENT) << "Read failed";
++ // This assumes that the error is unrecoverable and disables reading
++ // from the device until it has been re-opened.
++ // TODO(reillyg): Investigate starting and stopping the file descriptor
++ // watcher in response to pending read requests so that per-request
++ // errors can be returned to the client.
++ file_watcher_.reset();
++ }
++ return;
++ }
++ if (!has_report_id_) {
++ // Behave as if the byte prefixed above as the the report ID was read.
++ bytes_read++;
++ }
++
++ origin_task_runner_->PostTask(
++ FROM_HERE, base::BindOnce(&HidConnectionFreeBSD::ProcessInputReport,
++ connection_, buffer, bytes_read));
++ }
++
++ SEQUENCE_CHECKER(sequence_checker_);
++ base::ScopedFD fd_;
++ size_t report_buffer_size_;
++ bool has_report_id_;
++ base::WeakPtr<HidConnectionFreeBSD> connection_;
++ const scoped_refptr<base::SequencedTaskRunner> origin_task_runner_;
++ std::unique_ptr<base::FileDescriptorWatcher::Controller> file_watcher_;
++
++ DISALLOW_COPY_AND_ASSIGN(BlockingTaskHelper);
++};
++
++HidConnectionFreeBSD::HidConnectionFreeBSD(
++ scoped_refptr<HidDeviceInfo> device_info,
++ base::ScopedFD fd,
++ scoped_refptr<base::SequencedTaskRunner> blocking_task_runner)
++ : HidConnection(device_info),
++ blocking_task_runner_(std::move(blocking_task_runner)),
++ weak_factory_(this) {
++ helper_ = std::make_unique<BlockingTaskHelper>(std::move(fd), device_info,
++ weak_factory_.GetWeakPtr());
++ blocking_task_runner_->PostTask(
++ FROM_HERE, base::BindOnce(&BlockingTaskHelper::Start,
++ base::Unretained(helper_.get())));
++}
++
++HidConnectionFreeBSD::~HidConnectionFreeBSD() {}
++
++void HidConnectionFreeBSD::PlatformClose() {
++ // By closing the device on the blocking task runner 1) the requirement that
++ // base::ScopedFD is destroyed on a thread where I/O is allowed is satisfied
++ // and 2) any tasks posted to this task runner that refer to this file will
++ // complete before it is closed.
++ blocking_task_runner_->DeleteSoon(FROM_HERE, helper_.release());
++}
++
++void HidConnectionFreeBSD::PlatformWrite(scoped_refptr<base::RefCountedBytes> buffer,
++ WriteCallback callback) {
++
++ blocking_task_runner_->PostTask(
++ FROM_HERE,
++ base::BindOnce(&BlockingTaskHelper::Write, base::Unretained(helper_.get()),
++ buffer, std::move(callback)));
++}
++
++void HidConnectionFreeBSD::PlatformGetFeatureReport(uint8_t report_id,
++ ReadCallback callback) {
++ // The first byte of the destination buffer is the report ID being requested
++ // and is overwritten by the feature report.
++ DCHECK_GT(device_info()->max_feature_report_size(), 0u);
++ scoped_refptr<base::RefCountedBytes> buffer(
++ new base::RefCountedBytes(device_info()->max_feature_report_size() + 1));
++ if (report_id != 0)
++ buffer->data()[0] = report_id;
++
++ blocking_task_runner_->PostTask(
++ FROM_HERE,
++ base::BindOnce(&BlockingTaskHelper::GetFeatureReport,
++ base::Unretained(helper_.get()), report_id,
++ buffer, std::move(callback)));
++}
++
++void HidConnectionFreeBSD::PlatformSendFeatureReport(
++ scoped_refptr<base::RefCountedBytes> buffer,
++ WriteCallback callback) {
++ base::ScopedBlockingCall scoped_blocking_call(
++ FROM_HERE, base::BlockingType::MAY_BLOCK);
++ blocking_task_runner_->PostTask(
++ FROM_HERE,
++ base::BindOnce(&BlockingTaskHelper::SendFeatureReport,
++ base::Unretained(helper_.get()), buffer, std::move(callback)));
++}
++
++} // namespace device
diff --git a/devel/electron6/files/patch-services_device_hid_hid__connection__freebsd.h b/devel/electron6/files/patch-services_device_hid_hid__connection__freebsd.h
new file mode 100644
index 000000000000..0745f973a643
--- /dev/null
+++ b/devel/electron6/files/patch-services_device_hid_hid__connection__freebsd.h
@@ -0,0 +1,71 @@
+--- services/device/hid/hid_connection_freebsd.h.orig 2019-09-16 09:25:15 UTC
++++ services/device/hid/hid_connection_freebsd.h
+@@ -0,0 +1,68 @@
++// Copyright (c) 2014 The Chromium Authors. All rights reserved.
++// Use of this source code is governed by a BSD-style license that can be
++// found in the LICENSE file.
++
++#ifndef DEVICE_HID_HID_CONNECTION_FREEBSD_H_
++#define DEVICE_HID_HID_CONNECTION_FREEBSD_H_
++
++#include <stddef.h>
++#include <stdint.h>
++
++#include "base/files/scoped_file.h"
++#include "base/macros.h"
++#include "base/memory/ptr_util.h"
++#include "base/memory/ref_counted_memory.h"
++#include "base/memory/weak_ptr.h"
++#include "base/sequence_checker.h"
++#include "services/device/hid/hid_connection.h"
++
++namespace base {
++class SequencedTaskRunner;
++}
++
++namespace net {
++class IOBuffer;
++}
++
++namespace device {
++
++class HidConnectionFreeBSD : public HidConnection {
++ public:
++ HidConnectionFreeBSD(
++ scoped_refptr<HidDeviceInfo> device_info,
++ base::ScopedFD fd,
++ scoped_refptr<base::SequencedTaskRunner> blocking_task_runner);
++
++ private:
++ friend class base::RefCountedThreadSafe<HidConnectionFreeBSD>;
++ class BlockingTaskHelper;
++
++ ~HidConnectionFreeBSD() override;
++
++ // HidConnection implementation.
++ void PlatformClose() override;
++ void PlatformWrite(scoped_refptr<base::RefCountedBytes> buffer,
++ WriteCallback callback) override;
++ void PlatformGetFeatureReport(uint8_t report_id,
++ ReadCallback callback) override;
++ void PlatformSendFeatureReport(scoped_refptr<base::RefCountedBytes> buffer,
++ WriteCallback callback) override;
++
++ // |helper_| lives on the sequence to which |blocking_task_runner_| posts
++ // tasks so all calls must be posted there including this object's
++ // destruction.
++ std::unique_ptr<BlockingTaskHelper> helper_;
++
++ const scoped_refptr<base::SequencedTaskRunner> blocking_task_runner_;
++ const scoped_refptr<base::SequencedTaskRunner> task_runner_;
++
++ SEQUENCE_CHECKER(sequence_checker_);
++
++ base::WeakPtrFactory<HidConnectionFreeBSD> weak_factory_;
++
++ DISALLOW_COPY_AND_ASSIGN(HidConnectionFreeBSD);
++};
++
++} // namespace device
++
++#endif // DEVICE_HID_HID_CONNECTION_FREEBSD_H_
diff --git a/devel/electron6/files/patch-services_device_hid_hid__service.cc b/devel/electron6/files/patch-services_device_hid_hid__service.cc
new file mode 100644
index 000000000000..a4a2fa1b937e
--- /dev/null
+++ b/devel/electron6/files/patch-services_device_hid_hid__service.cc
@@ -0,0 +1,20 @@
+--- services/device/hid/hid_service.cc.orig 2019-09-10 11:14:11 UTC
++++ services/device/hid/hid_service.cc
+@@ -16,6 +16,8 @@
+
+ #if defined(OS_LINUX) && defined(USE_UDEV)
+ #include "services/device/hid/hid_service_linux.h"
++#elif defined(OS_BSD)
++#include "services/device/hid/hid_service_freebsd.h"
+ #elif defined(OS_MACOSX)
+ #include "services/device/hid/hid_service_mac.h"
+ #elif defined(OS_WIN)
+@@ -36,6 +38,8 @@ constexpr base::TaskTraits HidService::kBlockingTaskTr
+ std::unique_ptr<HidService> HidService::Create() {
+ #if defined(OS_LINUX) && defined(USE_UDEV)
+ return base::WrapUnique(new HidServiceLinux());
++#elif defined(OS_BSD)
++ return base::WrapUnique(new HidServiceFreeBSD());
+ #elif defined(OS_MACOSX)
+ return base::WrapUnique(new HidServiceMac());
+ #elif defined(OS_WIN)
diff --git a/devel/electron6/files/patch-services_device_hid_hid__service__freebsd.cc b/devel/electron6/files/patch-services_device_hid_hid__service__freebsd.cc
new file mode 100644
index 000000000000..94d1e44f30bf
--- /dev/null
+++ b/devel/electron6/files/patch-services_device_hid_hid__service__freebsd.cc
@@ -0,0 +1,377 @@
+--- services/device/hid/hid_service_freebsd.cc.orig 2019-09-16 09:25:15 UTC
++++ services/device/hid/hid_service_freebsd.cc
+@@ -0,0 +1,374 @@
++// Copyright 2014 The Chromium Authors. All rights reserved.
++// Use of this source code is governed by a BSD-style license that can be
++// found in the LICENSE file.
++
++#include "services/device/hid/hid_service_freebsd.h"
++
++#include <dev/usb/usb_ioctl.h>
++#include <stdint.h>
++#include <sys/socket.h>
++#include <sys/un.h>
++
++#include <set>
++#include <string>
++#include <vector>
++
++#include "base/bind.h"
++#include "base/files/file_descriptor_watcher_posix.h"
++#include "base/files/file_enumerator.h"
++#include "base/location.h"
++#include "base/logging.h"
++#include "base/posix/eintr_wrapper.h"
++#include "base/single_thread_task_runner.h"
++#include "base/stl_util.h"
++#include "base/strings/pattern.h"
++#include "base/strings/stringprintf.h"
++#include "base/strings/sys_string_conversions.h"
++#include "base/strings/string_util.h"
++#include "base/strings/string_split.h"
++#include "base/task/post_task.h"
++#include "base/threading/scoped_blocking_call.h"
++#include "base/threading/thread_task_runner_handle.h"
++#include "components/device_event_log/device_event_log.h"
++#include "services/device/hid/hid_connection_freebsd.h"
++
++const int kMaxPermissionChecks = 5;
++
++namespace device {
++
++struct HidServiceFreeBSD::ConnectParams {
++ ConnectParams(scoped_refptr<HidDeviceInfo> device_info,
++ const ConnectCallback& callback)
++ : device_info(std::move(device_info)),
++ callback(callback),
++ task_runner(base::ThreadTaskRunnerHandle::Get()),
++ blocking_task_runner(
++ base::CreateSequencedTaskRunnerWithTraits(kBlockingTaskTraits)) {}
++ ~ConnectParams() {}
++
++ scoped_refptr<HidDeviceInfo> device_info;
++ ConnectCallback callback;
++ scoped_refptr<base::SequencedTaskRunner> task_runner;
++ scoped_refptr<base::SequencedTaskRunner> blocking_task_runner;
++ base::ScopedFD fd;
++};
++
++class HidServiceFreeBSD::BlockingTaskHelper {
++ public:
++ BlockingTaskHelper(base::WeakPtr<HidServiceFreeBSD> service)
++ : service_(std::move(service)),
++ task_runner_(base::ThreadTaskRunnerHandle::Get()) {
++ DETACH_FROM_SEQUENCE(sequence_checker_);
++
++ timer_.reset(new base::RepeatingTimer());
++ devd_buffer_ = new net::IOBufferWithSize(1024);
++ }
++
++ ~BlockingTaskHelper() {
++ }
++
++ void Start() {
++ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
++
++ const base::FilePath kDevRoot("/dev");
++ const std::string kUHIDPattern("/dev/uhid*");
++
++ base::FileEnumerator enumerator(kDevRoot, false, base::FileEnumerator::FILES);
++ do {
++ const base::FilePath next_device_path(enumerator.Next());
++ const std::string next_device = next_device_path.value();
++ if (next_device.empty())
++ break;
++
++ if (base::MatchPattern(next_device, kUHIDPattern))
++ OnDeviceAdded(next_device.substr(5));
++ } while (true);
++
++ SetupDevdMonitor();
++
++ task_runner_->PostTask(
++ FROM_HERE,
++ base::Bind(&HidServiceFreeBSD::FirstEnumerationComplete, service_));
++ }
++
++ bool HaveReadWritePermissions(std::string device_id) {
++ std::string device_node = "/dev/" + device_id;
++ base::internal::AssertBlockingAllowed();
++
++ base::FilePath device_path(device_node);
++ base::File device_file;
++ int flags =
++ base::File::FLAG_OPEN | base::File::FLAG_READ | base::File::FLAG_WRITE;
++ device_file.Initialize(device_path, flags);
++ if (!device_file.IsValid())
++ return false;
++
++ return true;
++ }
++
++ void OnDeviceAdded(std::string device_id) {
++ base::ScopedBlockingCall scoped_blocking_call(
++ FROM_HERE, base::BlockingType::MAY_BLOCK);
++ std::string device_node = "/dev/" + device_id;
++ uint16_t vendor_id = 0xffff;
++ uint16_t product_id = 0xffff;
++ std::string product_name = "";
++ std::string serial_number = "";
++
++ std::vector<uint8_t> report_descriptor;
++
++ base::internal::AssertBlockingAllowed();
++
++ base::FilePath device_path(device_node);
++ base::File device_file;
++ int flags =
++ base::File::FLAG_OPEN | base::File::FLAG_READ | base::File::FLAG_WRITE;
++ device_file.Initialize(device_path, flags);
++ if (!device_file.IsValid()) {
++ HID_LOG(ERROR) << "Failed to open '" << device_node
++ << "': "
++ << base::File::ErrorToString(device_file.error_details());
++ return;
++ }
++
++ base::ScopedFD fd;
++ fd.reset(device_file.TakePlatformFile());
++
++ struct usb_gen_descriptor ugd;
++ ugd.ugd_data = NULL;
++ ugd.ugd_maxlen = 0xffff;
++ int result = HANDLE_EINTR(
++ ioctl(fd.get(), USB_GET_REPORT_DESC, &ugd));
++
++ if (result < 0) {
++ HID_LOG(ERROR) << "Failed to get report descriptor size";
++ return;
++ }
++
++ report_descriptor.resize(ugd.ugd_actlen);
++
++ ugd.ugd_data = report_descriptor.data();
++ ugd.ugd_maxlen = ugd.ugd_actlen;
++ result = HANDLE_EINTR(
++ ioctl(fd.get(), USB_GET_REPORT_DESC, &ugd));
++
++ if (result < 0) {
++ HID_LOG(ERROR) << "Failed to get report descriptor";
++ return;
++ }
++
++ scoped_refptr<HidDeviceInfo> device_info(new HidDeviceInfo(
++ device_id, vendor_id, product_id, product_name, serial_number,
++ device::mojom::HidBusType::kHIDBusTypeUSB,
++ report_descriptor, device_node));
++
++ task_runner_->PostTask(FROM_HERE, base::Bind(&HidServiceFreeBSD::AddDevice,
++ service_, device_info));
++ }
++
++ void OnDeviceRemoved(std::string device_id) {
++ base::ScopedBlockingCall scoped_blocking_call(
++ FROM_HERE, base::BlockingType::MAY_BLOCK);
++ task_runner_->PostTask(
++ FROM_HERE, base::Bind(&HidServiceFreeBSD::RemoveDevice, service_,
++ device_id));
++ }
++
++ private:
++
++ void CheckPendingPermissionChange() {
++ base::internal::AssertBlockingAllowed();
++ std::map<std::string, int>::iterator it;
++ for (it = permissions_checks_attempts_.begin(); it != permissions_checks_attempts_.end();) {
++ std::string device_name = it->first;
++ bool keep = true;
++ if (HaveReadWritePermissions(device_name)) {
++ OnDeviceAdded(device_name);
++ keep = false;
++ }
++ else if (it->second-- <= 0) {
++ HID_LOG(ERROR) << "Still don't have write permissions to '" << device_name
++ << "' after " << kMaxPermissionChecks << " attempts";
++ keep = false;
++ }
++
++ if (keep)
++ ++it;
++ else
++ permissions_checks_attempts_.erase(it++);
++ }
++
++ if (permissions_checks_attempts_.empty())
++ timer_->Stop();
++ }
++
++ void SetupDevdMonitor() {
++ base::internal::AssertBlockingAllowed();
++
++ int devd_fd = socket(AF_UNIX, SOCK_SEQPACKET, 0);
++ if (devd_fd < 0)
++ return;
++
++ struct sockaddr_un sa;
++
++ sa.sun_family = AF_UNIX;
++ strlcpy(sa.sun_path, "/var/run/devd.seqpacket.pipe", sizeof(sa.sun_path));
++ if (connect(devd_fd, (struct sockaddr *) &sa, sizeof(sa)) < 0) {
++ close(devd_fd);
++ return;
++ }
++
++ devd_fd_.reset(devd_fd);
++ file_watcher_ = base::FileDescriptorWatcher::WatchReadable(
++ devd_fd_.get(), base::Bind(&BlockingTaskHelper::OnDevdMessageCanBeRead,
++ base::Unretained(this)));
++ }
++
++ void OnDevdMessageCanBeRead() {
++ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
++ ssize_t bytes_read = HANDLE_EINTR(recv(devd_fd_.get(), devd_buffer_->data(),
++ devd_buffer_->size() - 1, MSG_WAITALL));
++ if (bytes_read < 0) {
++ if (errno != EAGAIN) {
++ HID_LOG(ERROR) << "Read failed";
++ file_watcher_.reset();
++ }
++ return;
++ }
++
++ devd_buffer_->data()[bytes_read] = 0;
++ char *data = devd_buffer_->data();
++ // It may take some time for devd to change permissions
++ // on /dev/uhidX node. So do not fail immediately if
++ // open fail. Retry each second for kMaxPermissionChecks
++ // times before giving up entirely
++ if (base::StartsWith(data, "+uhid", base::CompareCase::SENSITIVE)) {
++ std::vector<std::string> parts = base::SplitString(
++ data, " ", base::TRIM_WHITESPACE, base::SPLIT_WANT_ALL);
++ if (!parts.empty()) {
++ std::string device_name = parts[0].substr(1); // skip '+'
++ if (HaveReadWritePermissions(device_name))
++ OnDeviceAdded(parts[0].substr(1));
++ else {
++ // Do not re-add to checks
++ if (permissions_checks_attempts_.find(device_name) == permissions_checks_attempts_.end()) {
++ permissions_checks_attempts_.insert(std::pair<std::string, int>(device_name, kMaxPermissionChecks));
++ timer_->Start(FROM_HERE, base::TimeDelta::FromSeconds(1),
++ this, &BlockingTaskHelper::CheckPendingPermissionChange);
++ }
++ }
++ }
++ }
++
++ if (base::StartsWith(data, "-uhid", base::CompareCase::SENSITIVE)) {
++ std::vector<std::string> parts = base::SplitString(
++ data, " ", base::TRIM_WHITESPACE, base::SPLIT_WANT_ALL);
++ if (!parts.empty()) {
++ std::string device_name = parts[0].substr(1); // skip '-'
++ auto it = permissions_checks_attempts_.find(device_name);
++ if (it != permissions_checks_attempts_.end()) {
++ permissions_checks_attempts_.erase(it);
++ if (permissions_checks_attempts_.empty())
++ timer_->Stop();
++ }
++ OnDeviceRemoved(parts[0].substr(1));
++ }
++ }
++ }
++
++ SEQUENCE_CHECKER(sequence_checker_);
++
++ // This weak pointer is only valid when checked on this task runner.
++ base::WeakPtr<HidServiceFreeBSD> service_;
++ scoped_refptr<base::SequencedTaskRunner> task_runner_;
++ std::unique_ptr<base::FileDescriptorWatcher::Controller> file_watcher_;
++ std::unique_ptr<base::RepeatingTimer> timer_;
++ base::ScopedFD devd_fd_;
++ scoped_refptr<net::IOBufferWithSize> devd_buffer_;
++ std::map<std::string, int> permissions_checks_attempts_;
++
++ DISALLOW_COPY_AND_ASSIGN(BlockingTaskHelper);
++};
++
++HidServiceFreeBSD::HidServiceFreeBSD()
++ : task_runner_(base::ThreadTaskRunnerHandle::Get()),
++ blocking_task_runner_(
++ base::CreateSequencedTaskRunnerWithTraits(kBlockingTaskTraits)),
++ weak_factory_(this) {
++ helper_ = std::make_unique<BlockingTaskHelper>(weak_factory_.GetWeakPtr());
++ blocking_task_runner_->PostTask(
++ FROM_HERE,
++ base::Bind(&BlockingTaskHelper::Start, base::Unretained(helper_.get())));
++}
++
++HidServiceFreeBSD::~HidServiceFreeBSD() {
++ blocking_task_runner_->DeleteSoon(FROM_HERE, helper_.release());
++}
++
++base::WeakPtr<HidService> HidServiceFreeBSD::GetWeakPtr() {
++ return weak_factory_.GetWeakPtr();
++}
++
++// static
++void HidServiceFreeBSD::OpenOnBlockingThread(
++ std::unique_ptr<ConnectParams> params) {
++ base::ScopedBlockingCall scoped_blocking_call(
++ FROM_HERE, base::BlockingType::MAY_BLOCK);
++ scoped_refptr<base::SequencedTaskRunner> task_runner = params->task_runner;
++
++ base::FilePath device_path(params->device_info->device_node());
++ base::File device_file;
++ int flags =
++ base::File::FLAG_OPEN | base::File::FLAG_READ | base::File::FLAG_WRITE;
++ device_file.Initialize(device_path, flags);
++ if (!device_file.IsValid()) {
++ HID_LOG(EVENT) << "Failed to open '" << params->device_info->device_node()
++ << "': "
++ << base::File::ErrorToString(device_file.error_details());
++ task_runner->PostTask(FROM_HERE, base::Bind(params->callback, nullptr));
++ return;
++ }
++ params->fd.reset(device_file.TakePlatformFile());
++ FinishOpen(std::move(params));
++}
++
++void HidServiceFreeBSD::Connect(const std::string& device_guid,
++ const ConnectCallback& callback) {
++ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
++
++ const auto& map_entry = devices().find(device_guid);
++ if (map_entry == devices().end()) {
++ base::ThreadTaskRunnerHandle::Get()->PostTask(
++ FROM_HERE, base::Bind(callback, nullptr));
++ return;
++ }
++
++ scoped_refptr<HidDeviceInfo> device_info = map_entry->second;
++
++ auto params = std::make_unique<ConnectParams>(device_info, callback);
++
++ scoped_refptr<base::SequencedTaskRunner> blocking_task_runner =
++ params->blocking_task_runner;
++ blocking_task_runner->PostTask(
++ FROM_HERE, base::Bind(&HidServiceFreeBSD::OpenOnBlockingThread,
++ base::Passed(&params)));
++}
++
++// static
++void HidServiceFreeBSD::FinishOpen(std::unique_ptr<ConnectParams> params) {
++ scoped_refptr<base::SequencedTaskRunner> task_runner = params->task_runner;
++
++ task_runner->PostTask(
++ FROM_HERE,
++ base::Bind(&HidServiceFreeBSD::CreateConnection, base::Passed(&params)));
++}
++
++// static
++void HidServiceFreeBSD::CreateConnection(std::unique_ptr<ConnectParams> params) {
++ DCHECK(params->fd.is_valid());
++ params->callback.Run(base::MakeRefCounted<HidConnectionFreeBSD>(
++ std::move(params->device_info), std::move(params->fd),
++ std::move(params->blocking_task_runner)));
++}
++
++} // namespace device
diff --git a/devel/electron6/files/patch-services_device_hid_hid__service__freebsd.h b/devel/electron6/files/patch-services_device_hid_hid__service__freebsd.h
new file mode 100644
index 000000000000..5833cf580590
--- /dev/null
+++ b/devel/electron6/files/patch-services_device_hid_hid__service__freebsd.h
@@ -0,0 +1,51 @@
+--- services/device/hid/hid_service_freebsd.h.orig 2019-09-16 09:25:15 UTC
++++ services/device/hid/hid_service_freebsd.h
+@@ -0,0 +1,48 @@
++// Copyright 2014 The Chromium Authors. All rights reserved.
++// Use of this source code is governed by a BSD-style license that can be
++// found in the LICENSE file.
++
++#ifndef DEVICE_HID_HID_SERVICE_FREEBSD_H_
++#define DEVICE_HID_HID_SERVICE_FREEBSD_H_
++
++#include <string>
++
++#include "base/macros.h"
++#include "base/memory/ref_counted.h"
++#include "base/memory/weak_ptr.h"
++#include "base/timer/timer.h"
++#include "services/device/hid/hid_service.h"
++#include "net/base/io_buffer.h"
++
++namespace device {
++
++class HidServiceFreeBSD : public HidService {
++ public:
++ HidServiceFreeBSD();
++ ~HidServiceFreeBSD() override;
++
++ void Connect(const std::string& device_guid,
++ const ConnectCallback& connect) override;
++ base::WeakPtr<HidService> GetWeakPtr() override;
++
++ private:
++ struct ConnectParams;
++ class BlockingTaskHelper;
++
++ static void OpenOnBlockingThread(std::unique_ptr<ConnectParams> params);
++ static void FinishOpen(std::unique_ptr<ConnectParams> params);
++ static void CreateConnection(std::unique_ptr<ConnectParams> params);
++
++ const scoped_refptr<base::SequencedTaskRunner> task_runner_;
++ const scoped_refptr<base::SequencedTaskRunner> blocking_task_runner_;
++ // |helper_| lives on the sequence |blocking_task_runner_| posts to and holds
++ // a weak reference back to the service that owns it.
++ std::unique_ptr<BlockingTaskHelper> helper_;
++ base::WeakPtrFactory<HidServiceFreeBSD> weak_factory_;
++
++ DISALLOW_COPY_AND_ASSIGN(HidServiceFreeBSD);
++};
++
++} // namespace device
++
++#endif // DEVICE_HID_HID_SERVICE_FREEBSD_H_
diff --git a/devel/electron6/files/patch-services_device_serial_BUILD.gn b/devel/electron6/files/patch-services_device_serial_BUILD.gn
new file mode 100644
index 000000000000..6afca45e425a
--- /dev/null
+++ b/devel/electron6/files/patch-services_device_serial_BUILD.gn
@@ -0,0 +1,11 @@
+--- services/device/serial/BUILD.gn.orig 2019-09-10 10:42:43 UTC
++++ services/device/serial/BUILD.gn
+@@ -4,7 +4,7 @@
+
+ import("//build/config/features.gni")
+
+-if (is_win || (is_linux && use_udev) || is_mac) {
++if (is_win || (is_linux && use_udev) || is_mac || is_bsd) {
+ config("platform_support") {
+ visibility = [ ":serial" ]
+ if (is_win) {
diff --git a/devel/electron6/files/patch-services_device_serial_serial__io__handler__posix.cc b/devel/electron6/files/patch-services_device_serial_serial__io__handler__posix.cc
new file mode 100644
index 000000000000..975e34bb2d5c
--- /dev/null
+++ b/devel/electron6/files/patch-services_device_serial_serial__io__handler__posix.cc
@@ -0,0 +1,11 @@
+--- services/device/serial/serial_io_handler_posix.cc.orig 2019-09-10 11:14:11 UTC
++++ services/device/serial/serial_io_handler_posix.cc
+@@ -66,7 +66,7 @@ bool BitrateToSpeedConstant(int bitrate, speed_t* spee
+ BITRATE_TO_SPEED_CASE(9600)
+ BITRATE_TO_SPEED_CASE(19200)
+ BITRATE_TO_SPEED_CASE(38400)
+-#if !defined(OS_MACOSX)
++#if !defined(OS_MACOSX) && !defined(OS_BSD)
+ BITRATE_TO_SPEED_CASE(57600)
+ BITRATE_TO_SPEED_CASE(115200)
+ BITRATE_TO_SPEED_CASE(230400)
diff --git a/devel/electron6/files/patch-services_device_time__zone__monitor_time__zone__monitor.cc b/devel/electron6/files/patch-services_device_time__zone__monitor_time__zone__monitor.cc
new file mode 100644
index 000000000000..2f7a3a2e0313
--- /dev/null
+++ b/devel/electron6/files/patch-services_device_time__zone__monitor_time__zone__monitor.cc
@@ -0,0 +1,20 @@
+--- services/device/time_zone_monitor/time_zone_monitor.cc.orig 2019-09-10 11:14:11 UTC
++++ services/device/time_zone_monitor/time_zone_monitor.cc
+@@ -29,7 +29,7 @@ void TimeZoneMonitor::Bind(device::mojom::TimeZoneMoni
+
+ void TimeZoneMonitor::NotifyClients() {
+ DCHECK(thread_checker_.CalledOnValidThread());
+-#if defined(OS_CHROMEOS) || (defined(OS_LINUX) && defined(IS_CHROMECAST))
++#if defined(OS_CHROMEOS) || ((defined(OS_BSD) || defined(OS_LINUX)) && defined(IS_CHROMECAST))
+ // On CrOS (and Chromecast), ICU's default tz is already set to a new zone. No
+ // need to redetect it with detectHostTimeZone().
+ std::unique_ptr<icu::TimeZone> new_zone(icu::TimeZone::createDefault());
+@@ -41,7 +41,7 @@ void TimeZoneMonitor::NotifyClients() {
+ #else
+ std::unique_ptr<icu::TimeZone> new_zone(icu::TimeZone::detectHostTimeZone());
+ #endif
+-#if defined(OS_LINUX) && !defined(IS_CHROMECAST)
++#if (defined(OS_LINUX) && !defined(IS_CHROMECAST)) || defined(OS_BSD)
+ // We get here multiple times on Linux per a single tz change, but
+ // want to update the ICU default zone and notify renderer only once.
+ std::unique_ptr<icu::TimeZone> current_zone(icu::TimeZone::createDefault());
diff --git a/devel/electron6/files/patch-services_device_time__zone__monitor_time__zone__monitor__linux.cc b/devel/electron6/files/patch-services_device_time__zone__monitor_time__zone__monitor__linux.cc
new file mode 100644
index 000000000000..4259da68a162
--- /dev/null
+++ b/devel/electron6/files/patch-services_device_time__zone__monitor_time__zone__monitor__linux.cc
@@ -0,0 +1,14 @@
+--- services/device/time_zone_monitor/time_zone_monitor_linux.cc.orig 2019-09-10 10:42:43 UTC
++++ services/device/time_zone_monitor/time_zone_monitor_linux.cc
+@@ -104,7 +104,11 @@ class TimeZoneMonitorLinuxImpl
+ // false positives are harmless, assuming the false positive rate is
+ // reasonable.
+ const char* const kFilesToWatch[] = {
++#if defined(OS_BSD)
++ "/etc/localtime",
++#else
+ "/etc/localtime", "/etc/timezone", "/etc/TZ",
++#endif
+ };
+ for (size_t index = 0; index < base::size(kFilesToWatch); ++index) {
+ file_path_watchers_.push_back(std::make_unique<base::FilePathWatcher>());
diff --git a/devel/electron6/files/patch-services_device_usb_BUILD.gn b/devel/electron6/files/patch-services_device_usb_BUILD.gn
new file mode 100644
index 000000000000..b457e80670bb
--- /dev/null
+++ b/devel/electron6/files/patch-services_device_usb_BUILD.gn
@@ -0,0 +1,11 @@
+--- services/device/usb/BUILD.gn.orig 2019-09-10 11:14:11 UTC
++++ services/device/usb/BUILD.gn
+@@ -111,7 +111,7 @@ static_library("usb") {
+ ]
+ }
+
+- if (is_android || is_chromeos || is_linux) {
++ if ((is_android || is_chromeos || is_linux) && !is_bsd) {
+ sources += [
+ "usb_device_handle_usbfs.cc",
+ "usb_device_handle_usbfs.h",
diff --git a/devel/electron6/files/patch-services_network_BUILD.gn b/devel/electron6/files/patch-services_network_BUILD.gn
new file mode 100644
index 000000000000..2e2eb28eca54
--- /dev/null
+++ b/devel/electron6/files/patch-services_network_BUILD.gn
@@ -0,0 +1,10 @@
+--- services/network/BUILD.gn.orig 2019-09-10 11:14:11 UTC
++++ services/network/BUILD.gn
+@@ -253,7 +253,6 @@ jumbo_component("network_service") {
+
+ if (is_linux) {
+ deps += [
+- "//sandbox/linux:sandbox_services",
+ "//services/service_manager/sandbox:sandbox",
+ ]
+ }
diff --git a/devel/electron6/files/patch-services_network_network__context.cc b/devel/electron6/files/patch-services_network_network__context.cc
new file mode 100644
index 000000000000..c029f106fdaa
--- /dev/null
+++ b/devel/electron6/files/patch-services_network_network__context.cc
@@ -0,0 +1,11 @@
+--- services/network/network_context.cc.orig 2019-09-10 11:14:11 UTC
++++ services/network/network_context.cc
+@@ -1711,7 +1711,7 @@ URLRequestContextOwner NetworkContext::ApplyContextPar
+
+ net::CookieCryptoDelegate* crypto_delegate = nullptr;
+ if (params_->enable_encrypted_cookies) {
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) && !defined(IS_CHROMECAST)
++#if (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS) && !defined(IS_CHROMECAST)
+ DCHECK(network_service_->os_crypt_config_set())
+ << "NetworkService::SetCryptConfig must be called before creating a "
+ "NetworkContext with encrypted cookies.";
diff --git a/devel/electron6/files/patch-services_network_network__sandbox__hook__linux.cc b/devel/electron6/files/patch-services_network_network__sandbox__hook__linux.cc
new file mode 100644
index 000000000000..008f5b05108f
--- /dev/null
+++ b/devel/electron6/files/patch-services_network_network__sandbox__hook__linux.cc
@@ -0,0 +1,18 @@
+--- services/network/network_sandbox_hook_linux.cc.orig 2019-09-10 10:42:43 UTC
++++ services/network/network_sandbox_hook_linux.cc
+@@ -14,6 +14,7 @@ using sandbox::syscall_broker::MakeBrokerCommandSet;
+ namespace network {
+
+ bool NetworkPreSandboxHook(service_manager::SandboxLinux::Options options) {
++#if !defined(OS_BSD)
+ auto* instance = service_manager::SandboxLinux::GetInstance();
+
+ // TODO(tsepez): remove universal permission under filesytem root.
+@@ -32,6 +33,7 @@ bool NetworkPreSandboxHook(service_manager::SandboxLin
+ service_manager::SandboxLinux::PreSandboxHook(), options);
+
+ instance->EngageNamespaceSandboxIfPossible();
++#endif // defined(OS_BSD)
+ return true;
+ }
+
diff --git a/devel/electron6/files/patch-services_network_network__service.cc b/devel/electron6/files/patch-services_network_network__service.cc
new file mode 100644
index 000000000000..fc8bb4ca1b33
--- /dev/null
+++ b/devel/electron6/files/patch-services_network_network__service.cc
@@ -0,0 +1,20 @@
+--- services/network/network_service.cc.orig 2019-09-10 11:14:11 UTC
++++ services/network/network_service.cc
+@@ -60,7 +60,7 @@
+ #include "third_party/boringssl/src/include/openssl/cpu.h"
+ #endif
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) && !defined(IS_CHROMECAST)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS) && !defined(IS_CHROMECAST)) || defined(OS_BSD)
+ #include "components/os_crypt/key_storage_config_linux.h"
+ #endif
+
+@@ -625,7 +625,7 @@ void NetworkService::OnCertDBChanged() {
+ net::CertDatabase::GetInstance()->NotifyObserversCertDBChanged();
+ }
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ void NetworkService::SetCryptConfig(mojom::CryptConfigPtr crypt_config) {
+ #if !defined(IS_CHROMECAST)
+ DCHECK(!os_crypt_config_set_);
diff --git a/devel/electron6/files/patch-services_network_network__service.h b/devel/electron6/files/patch-services_network_network__service.h
new file mode 100644
index 000000000000..8b0617b25692
--- /dev/null
+++ b/devel/electron6/files/patch-services_network_network__service.h
@@ -0,0 +1,11 @@
+--- services/network/network_service.h.orig 2019-09-10 11:14:11 UTC
++++ services/network/network_service.h
+@@ -176,7 +176,7 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) NetworkService
+ mojom::NetworkService::GetNetworkListCallback callback) override;
+ void UpdateCRLSet(base::span<const uint8_t> crl_set) override;
+ void OnCertDBChanged() override;
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ void SetCryptConfig(mojom::CryptConfigPtr crypt_config) override;
+ #endif
+ #if defined(OS_MACOSX) && !defined(OS_IOS)
diff --git a/devel/electron6/files/patch-services_resource__coordinator_memory__instrumentation_queued__request__dispatcher.cc b/devel/electron6/files/patch-services_resource__coordinator_memory__instrumentation_queued__request__dispatcher.cc
new file mode 100644
index 000000000000..b0efb4bf3544
--- /dev/null
+++ b/devel/electron6/files/patch-services_resource__coordinator_memory__instrumentation_queued__request__dispatcher.cc
@@ -0,0 +1,20 @@
+--- services/resource_coordinator/memory_instrumentation/queued_request_dispatcher.cc.orig 2019-09-10 11:14:12 UTC
++++ services/resource_coordinator/memory_instrumentation/queued_request_dispatcher.cc
+@@ -42,7 +42,7 @@ namespace {
+ uint32_t CalculatePrivateFootprintKb(const mojom::RawOSMemDump& os_dump,
+ uint32_t shared_resident_kb) {
+ DCHECK(os_dump.platform_private_footprint);
+-#if defined(OS_LINUX) || defined(OS_ANDROID)
++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
+ uint64_t rss_anon_bytes = os_dump.platform_private_footprint->rss_anon_bytes;
+ uint64_t vm_swap_bytes = os_dump.platform_private_footprint->vm_swap_bytes;
+ return (rss_anon_bytes + vm_swap_bytes) / 1024;
+@@ -151,7 +151,7 @@ memory_instrumentation::mojom::OSMemDumpPtr CreatePubl
+ os_dump->is_peak_rss_resettable = internal_os_dump.is_peak_rss_resettable;
+ os_dump->private_footprint_kb =
+ CalculatePrivateFootprintKb(internal_os_dump, shared_resident_kb);
+-#if defined(OS_LINUX) || defined(OS_ANDROID)
++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
+ os_dump->private_footprint_swap_kb =
+ internal_os_dump.platform_private_footprint->vm_swap_bytes / 1024;
+ #endif
diff --git a/devel/electron6/files/patch-services_resource__coordinator_public_cpp_memory__instrumentation_os__metrics.h b/devel/electron6/files/patch-services_resource__coordinator_public_cpp_memory__instrumentation_os__metrics.h
new file mode 100644
index 000000000000..09840a4f3a30
--- /dev/null
+++ b/devel/electron6/files/patch-services_resource__coordinator_public_cpp_memory__instrumentation_os__metrics.h
@@ -0,0 +1,32 @@
+--- services/resource_coordinator/public/cpp/memory_instrumentation/os_metrics.h.orig 2019-09-10 10:42:44 UTC
++++ services/resource_coordinator/public/cpp/memory_instrumentation/os_metrics.h
+@@ -28,9 +28,9 @@ class COMPONENT_EXPORT(
+ mojom::RawOSMemDump*);
+ static std::vector<mojom::VmRegionPtr> GetProcessMemoryMaps(base::ProcessId);
+
+-#if defined(OS_LINUX) || defined(OS_ANDROID)
++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
+ static void SetProcSmapsForTesting(FILE*);
+-#endif // defined(OS_LINUX) || defined(OS_ANDROID)
++#endif // defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
+
+ private:
+ FRIEND_TEST_ALL_PREFIXES(OSMetricsTest, ParseProcSmaps);
+@@ -44,7 +44,7 @@ class COMPONENT_EXPORT(
+ static std::vector<mojom::VmRegionPtr> GetProcessModules(base::ProcessId);
+ #endif
+
+-#if defined(OS_LINUX) || defined(OS_ANDROID)
++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
+ // Provides information on the dump state of resident pages.
+ enum class MappedAndResidentPagesDumpState {
+ // Access to /proc/<pid>/pagemap can be denied for android devices running
+@@ -68,7 +68,7 @@ class COMPONENT_EXPORT(
+ // TODO(chiniforooshan): move to /base/process/process_metrics_linux.cc after
+ // making sure that peak RSS is useful.
+ static size_t GetPeakResidentSetSize(base::ProcessId pid);
+-#endif // defined(OS_LINUX) || defined(OS_ANDROID)
++#endif // defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
+ };
+
+ } // namespace memory_instrumentation
diff --git a/devel/electron6/files/patch-services_resource__coordinator_public_cpp_memory__instrumentation_os__metrics__linux.cc b/devel/electron6/files/patch-services_resource__coordinator_public_cpp_memory__instrumentation_os__metrics__linux.cc
new file mode 100644
index 000000000000..25b213ee5170
--- /dev/null
+++ b/devel/electron6/files/patch-services_resource__coordinator_public_cpp_memory__instrumentation_os__metrics__linux.cc
@@ -0,0 +1,103 @@
+--- services/resource_coordinator/public/cpp/memory_instrumentation/os_metrics_linux.cc.orig 2019-09-10 10:42:44 UTC
++++ services/resource_coordinator/public/cpp/memory_instrumentation/os_metrics_linux.cc
+@@ -22,8 +22,10 @@
+ #include "build/build_config.h"
+ #include "services/resource_coordinator/public/cpp/memory_instrumentation/os_metrics.h"
+
++#if !defined(OS_BSD)
+ // Symbol with virtual address of the start of ELF header of the current binary.
+ extern char __ehdr_start;
++#endif
+
+ namespace memory_instrumentation {
+
+@@ -86,6 +88,7 @@ struct ModuleData {
+
+ ModuleData GetMainModuleData() {
+ ModuleData module_data;
++#if !defined(OS_BSD)
+ Dl_info dl_info;
+ if (dladdr(&__ehdr_start, &dl_info)) {
+ base::debug::ElfBuildIdBuffer build_id;
+@@ -96,6 +99,7 @@ ModuleData GetMainModuleData() {
+ module_data.build_id = std::string(build_id, build_id_length);
+ }
+ }
++#endif
+ return module_data;
+ }
+
+@@ -143,14 +147,14 @@ bool ParseSmapsHeader(const char* header_line,
+ // Build ID is needed to symbolize heap profiles, and is generated only on
+ // official builds. Build ID is only added for the current library (chrome)
+ // since it is racy to read other libraries which can be unmapped any time.
+-#if defined(OFFICIAL_BUILD)
++#if defined(OFFICIAL_BUILD) && !defined(OS_BSD)
+ if (!region->mapped_file.empty() &&
+ base::StartsWith(main_module_data.path, region->mapped_file,
+ base::CompareCase::SENSITIVE) &&
+ !main_module_data.build_id.empty()) {
+ region->module_debugid = main_module_data.build_id;
+ }
+-#endif // defined(OFFICIAL_BUILD)
++#endif // defined(OFFICIAL_BUILD) && !defined(OS_BSD)
+
+ return res;
+ }
+@@ -239,6 +243,7 @@ bool OSMetrics::FillOSMemoryDump(base::ProcessId pid,
+ mojom::RawOSMemDump* dump) {
+ // TODO(chiniforooshan): There is no need to read both /statm and /status
+ // files. Refactor to get everything from /status using ProcessMetric.
++#if !defined(OS_BSD)
+ auto statm_file = GetProcPidDir(pid).Append("statm");
+ auto autoclose = base::ScopedFD(open(statm_file.value().c_str(), O_RDONLY));
+ int statm_fd = autoclose.get();
+@@ -253,6 +258,10 @@ bool OSMetrics::FillOSMemoryDump(base::ProcessId pid,
+
+ if (!success)
+ return false;
++#else
++ uint64_t resident_pages = 0;
++ uint64_t shared_pages = 0;
++#endif
+
+ auto process_metrics = CreateProcessMetrics(pid);
+
+@@ -293,6 +302,10 @@ bool OSMetrics::FillOSMemoryDump(base::ProcessId pid,
+
+ // static
+ std::vector<VmRegionPtr> OSMetrics::GetProcessMemoryMaps(base::ProcessId pid) {
++#if defined(OS_BSD)
++ NOTIMPLEMENTED();
++ return std::vector<VmRegionPtr>();
++#else
+ std::vector<VmRegionPtr> maps;
+ uint32_t res = 0;
+ if (g_proc_smaps_for_testing) {
+@@ -310,6 +323,7 @@ std::vector<VmRegionPtr> OSMetrics::GetProcessMemoryMa
+ return std::vector<VmRegionPtr>();
+
+ return maps;
++#endif
+ }
+
+ // static
+@@ -317,6 +331,10 @@ OSMetrics::MappedAndResidentPagesDumpState OSMetrics::
+ const size_t start_address,
+ const size_t end_address,
+ std::vector<uint8_t>* accessed_pages_bitmap) {
++#if defined(OS_BSD)
++ NOTIMPLEMENTED();
++ return OSMetrics::MappedAndResidentPagesDumpState::kFailure;
++#else
+ const char* kPagemap = "/proc/self/pagemap";
+
+ base::ScopedFILE pagemap_file(fopen(kPagemap, "r"));
+@@ -358,6 +376,7 @@ OSMetrics::MappedAndResidentPagesDumpState OSMetrics::
+ }
+ }
+ return OSMetrics::MappedAndResidentPagesDumpState::kSuccess;
++#endif
+ }
+
+ // static
diff --git a/devel/electron6/files/patch-services_service__manager_embedder_main.cc b/devel/electron6/files/patch-services_service__manager_embedder_main.cc
new file mode 100644
index 000000000000..a7f0ca6b549b
--- /dev/null
+++ b/devel/electron6/files/patch-services_service__manager_embedder_main.cc
@@ -0,0 +1,11 @@
+--- services/service_manager/embedder/main.cc.orig 2019-09-10 11:14:12 UTC
++++ services/service_manager/embedder/main.cc
+@@ -271,7 +271,7 @@ int Main(const MainParams& params) {
+ #endif
+ base::EnableTerminationOnOutOfMemory();
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // The various desktop environments set this environment variable that
+ // allows the dbus client library to connect directly to the bus. When this
+ // variable is not set (test environments like xvfb-run), the dbus client
diff --git a/devel/electron6/files/patch-services_service__manager_embedder_set__process__title__linux.cc b/devel/electron6/files/patch-services_service__manager_embedder_set__process__title__linux.cc
new file mode 100644
index 000000000000..3082baf1a0f1
--- /dev/null
+++ b/devel/electron6/files/patch-services_service__manager_embedder_set__process__title__linux.cc
@@ -0,0 +1,19 @@
+--- services/service_manager/embedder/set_process_title_linux.cc.orig 2019-09-10 10:42:44 UTC
++++ services/service_manager/embedder/set_process_title_linux.cc
+@@ -49,6 +49,8 @@
+ extern char** environ;
+
+ static char** g_main_argv = NULL;
++
++#if !defined(OS_FREEBSD)
+ static char* g_orig_argv0 = NULL;
+
+ void setproctitle(const char* fmt, ...) {
+@@ -101,6 +103,7 @@ void setproctitle(const char* fmt, ...) {
+ va_end(ap);
+ g_main_argv[1] = NULL;
+ }
++#endif
+
+ // A version of this built into glibc would not need this function, since
+ // it could stash the argv pointer in __libc_start_main(). But we need it.
diff --git a/devel/electron6/files/patch-services_service__manager_embedder_set__process__title__linux.h b/devel/electron6/files/patch-services_service__manager_embedder_set__process__title__linux.h
new file mode 100644
index 000000000000..84f7f55d3d85
--- /dev/null
+++ b/devel/electron6/files/patch-services_service__manager_embedder_set__process__title__linux.h
@@ -0,0 +1,20 @@
+--- services/service_manager/embedder/set_process_title_linux.h.orig 2019-09-10 10:42:44 UTC
++++ services/service_manager/embedder/set_process_title_linux.h
+@@ -5,6 +5,9 @@
+ #ifndef SERVICES_SERVICE_MANAGER_EMBEDDER_SET_PROCESS_TITLE_LINUX_H_
+ #define SERVICES_SERVICE_MANAGER_EMBEDDER_SET_PROCESS_TITLE_LINUX_H_
+
++#include "build/build_config.h"
++
++#if !defined(OS_FREEBSD)
+ // Set the process title that will show in "ps" and similar tools. Takes
+ // printf-style format string and arguments. After calling setproctitle()
+ // the original main() argv[] array should not be used. By default, the
+@@ -14,6 +17,7 @@
+ // This signature and naming is to be compatible with most other Unix
+ // implementations of setproctitle().
+ void setproctitle(const char* fmt, ...);
++#endif
+
+ // Initialize state needed for setproctitle() on Linux. Pass the argv pointer
+ // from main() to setproctitle_init() before calling setproctitle().
diff --git a/devel/electron6/files/patch-services_service__manager_public_cpp_service__executable_BUILD.gn b/devel/electron6/files/patch-services_service__manager_public_cpp_service__executable_BUILD.gn
new file mode 100644
index 000000000000..66965d4867a0
--- /dev/null
+++ b/devel/electron6/files/patch-services_service__manager_public_cpp_service__executable_BUILD.gn
@@ -0,0 +1,14 @@
+--- services/service_manager/public/cpp/service_executable/BUILD.gn.orig 2019-09-10 10:42:44 UTC
++++ services/service_manager/public/cpp/service_executable/BUILD.gn
+@@ -29,6 +29,11 @@ source_set("support") {
+ "//sandbox/linux:seccomp_bpf",
+ ]
+ }
++ if (is_bsd) {
++ deps -= [
++ "//sandbox/linux:seccomp_bpf"
++ ]
++ }
+ }
+
+ source_set("switches") {
diff --git a/devel/electron6/files/patch-services_service__manager_sandbox_BUILD.gn b/devel/electron6/files/patch-services_service__manager_sandbox_BUILD.gn
new file mode 100644
index 000000000000..1d3dd736922d
--- /dev/null
+++ b/devel/electron6/files/patch-services_service__manager_sandbox_BUILD.gn
@@ -0,0 +1,11 @@
+--- services/service_manager/sandbox/BUILD.gn.orig 2019-09-10 11:14:12 UTC
++++ services/service_manager/sandbox/BUILD.gn
+@@ -28,7 +28,7 @@ component("sandbox") {
+ "//base",
+ "//sandbox:common",
+ ]
+- if (is_linux) {
++ if (is_linux && !is_bsd) {
+ sources += [
+ "linux/bpf_audio_policy_linux.cc",
+ "linux/bpf_audio_policy_linux.h",
diff --git a/devel/electron6/files/patch-services_service__manager_sandbox_sandbox__type.cc b/devel/electron6/files/patch-services_service__manager_sandbox_sandbox__type.cc
new file mode 100644
index 000000000000..d921f9ea3277
--- /dev/null
+++ b/devel/electron6/files/patch-services_service__manager_sandbox_sandbox__type.cc
@@ -0,0 +1,11 @@
+--- services/service_manager/sandbox/sandbox_type.cc.orig 2019-09-10 10:42:44 UTC
++++ services/service_manager/sandbox/sandbox_type.cc
+@@ -25,7 +25,7 @@ bool IsUnsandboxedSandboxType(SandboxType sandbox_type
+ service_manager::features::kXRSandbox);
+ #endif
+ case SANDBOX_TYPE_AUDIO:
+-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+ return !base::FeatureList::IsEnabled(
+ service_manager::features::kAudioServiceSandbox);
+ #else
diff --git a/devel/electron6/files/patch-services_service__manager_zygote_common_zygote__features.gni b/devel/electron6/files/patch-services_service__manager_zygote_common_zygote__features.gni
new file mode 100644
index 000000000000..c17a86909abe
--- /dev/null
+++ b/devel/electron6/files/patch-services_service__manager_zygote_common_zygote__features.gni
@@ -0,0 +1,8 @@
+--- services/service_manager/zygote/common/zygote_features.gni.orig 2019-09-10 10:42:44 UTC
++++ services/service_manager/zygote/common/zygote_features.gni
+@@ -2,4 +2,4 @@
+ # Use of this source code is governed by a BSD-style license that can be
+ # found in the LICENSE file.
+
+-use_zygote_handle = is_posix && !is_android && !is_mac
++use_zygote_handle = is_posix && !is_android && !is_mac && !is_bsd
diff --git a/devel/electron6/files/patch-services_service__manager_zygote_host_zygote__host__impl__linux.cc b/devel/electron6/files/patch-services_service__manager_zygote_host_zygote__host__impl__linux.cc
new file mode 100644
index 000000000000..2bb512277af0
--- /dev/null
+++ b/devel/electron6/files/patch-services_service__manager_zygote_host_zygote__host__impl__linux.cc
@@ -0,0 +1,40 @@
+--- services/service_manager/zygote/host/zygote_host_impl_linux.cc.orig 2019-09-10 10:42:44 UTC
++++ services/service_manager/zygote/host/zygote_host_impl_linux.cc
+@@ -72,6 +72,7 @@ ZygoteHostImpl* ZygoteHostImpl::GetInstance() {
+ }
+
+ void ZygoteHostImpl::Init(const base::CommandLine& command_line) {
++#if !defined(OS_BSD)
+ if (command_line.HasSwitch(service_manager::switches::kNoSandbox)) {
+ return;
+ }
+@@ -122,6 +123,7 @@ void ZygoteHostImpl::Init(const base::CommandLine& com
+ "you can try using --"
+ << service_manager::switches::kNoSandbox << ".";
+ }
++#endif
+ }
+
+ void ZygoteHostImpl::AddZygotePid(pid_t pid) {
+@@ -146,6 +148,7 @@ pid_t ZygoteHostImpl::LaunchZygote(
+ base::CommandLine* cmd_line,
+ base::ScopedFD* control_fd,
+ base::FileHandleMappingVector additional_remapped_fds) {
++#if !defined(OS_BSD)
+ int fds[2];
+ CHECK_EQ(0, socketpair(AF_UNIX, SOCK_SEQPACKET, 0, fds));
+ CHECK(base::UnixDomainSocket::EnableReceiveProcessId(fds[0]));
+@@ -210,9 +213,12 @@ pid_t ZygoteHostImpl::LaunchZygote(
+
+ AddZygotePid(pid);
+ return pid;
++#else
++ return 0;
++#endif
+ }
+
+-#if !defined(OS_OPENBSD)
++#if !defined(OS_BSD)
+ void ZygoteHostImpl::AdjustRendererOOMScore(base::ProcessHandle pid,
+ int score) {
+ // 1) You can't change the oom_score_adj of a non-dumpable process
diff --git a/devel/electron6/files/patch-services_service__manager_zygote_host_zygote__host__impl__linux.h b/devel/electron6/files/patch-services_service__manager_zygote_host_zygote__host__impl__linux.h
new file mode 100644
index 000000000000..1b4fcd5460fc
--- /dev/null
+++ b/devel/electron6/files/patch-services_service__manager_zygote_host_zygote__host__impl__linux.h
@@ -0,0 +1,13 @@
+--- services/service_manager/zygote/host/zygote_host_impl_linux.h.orig 2019-09-10 10:42:44 UTC
++++ services/service_manager/zygote/host/zygote_host_impl_linux.h
+@@ -44,8 +44,10 @@ class COMPONENT_EXPORT(SERVICE_MANAGER_ZYGOTE) ZygoteH
+ base::ScopedFD* control_fd,
+ base::FileHandleMappingVector additional_remapped_fds);
+
++#if !defined(OS_BSD)
+ void AdjustRendererOOMScore(base::ProcessHandle process_handle,
+ int score) override;
++#endif
+ bool HasZygote() { return !zygote_pids_.empty(); }
+
+ private:
diff --git a/devel/electron6/files/patch-services_service__manager_zygote_zygote__host__linux.h b/devel/electron6/files/patch-services_service__manager_zygote_zygote__host__linux.h
new file mode 100644
index 000000000000..803c7da65aa6
--- /dev/null
+++ b/devel/electron6/files/patch-services_service__manager_zygote_zygote__host__linux.h
@@ -0,0 +1,16 @@
+--- services/service_manager/zygote/zygote_host_linux.h.orig 2019-09-10 10:42:44 UTC
++++ services/service_manager/zygote/zygote_host_linux.h
+@@ -30,11 +30,13 @@ class ZygoteHost {
+ // after the first render has been forked.
+ virtual int GetRendererSandboxStatus() const = 0;
+
++#if !defined(OS_BSD)
+ // Adjust the OOM score of the given renderer's PID. The allowed
+ // range for the score is [0, 1000], where higher values are more
+ // likely to be killed by the OOM killer.
+ virtual void AdjustRendererOOMScore(base::ProcessHandle process_handle,
+ int score) = 0;
++#endif
+ };
+
+ } // namespace service_manager
diff --git a/devel/electron6/files/patch-services_service__manager_zygote_zygote__linux.cc b/devel/electron6/files/patch-services_service__manager_zygote_zygote__linux.cc
new file mode 100644
index 000000000000..de1deed27873
--- /dev/null
+++ b/devel/electron6/files/patch-services_service__manager_zygote_zygote__linux.cc
@@ -0,0 +1,15 @@
+--- services/service_manager/zygote/zygote_linux.cc.orig 2019-09-10 10:42:44 UTC
++++ services/service_manager/zygote/zygote_linux.cc
+@@ -1,6 +1,7 @@
+ // Copyright (c) 2012 The Chromium Authors. All rights reserved.
+ // Use of this source code is governed by a BSD-style license that can be
+ // found in the LICENSE file.
++#if 0
+
+ #include "services/service_manager/zygote/zygote_linux.h"
+
+@@ -657,3 +658,4 @@ bool Zygote::HandleGetSandboxStatus(int fd, base::Pick
+ }
+
+ } // namespace service_manager
++#endif
diff --git a/devel/electron6/files/patch-services_service__manager_zygote_zygote__main__linux.cc b/devel/electron6/files/patch-services_service__manager_zygote_zygote__main__linux.cc
new file mode 100644
index 000000000000..e59d3b343be9
--- /dev/null
+++ b/devel/electron6/files/patch-services_service__manager_zygote_zygote__main__linux.cc
@@ -0,0 +1,48 @@
+--- services/service_manager/zygote/zygote_main_linux.cc.orig 2019-09-10 10:42:44 UTC
++++ services/service_manager/zygote/zygote_main_linux.cc
+@@ -11,7 +11,9 @@
+ #include <stddef.h>
+ #include <stdint.h>
+ #include <string.h>
++#if !defined(OS_BSD)
+ #include <sys/prctl.h>
++#endif
+ #include <sys/socket.h>
+ #include <sys/types.h>
+ #include <unistd.h>
+@@ -101,6 +103,7 @@ static bool CreateInitProcessReaper(
+ // created through the setuid sandbox.
+ static bool EnterSuidSandbox(sandbox::SetuidSandboxClient* setuid_sandbox,
+ base::OnceClosure post_fork_parent_callback) {
++#if !defined(OS_BSD)
+ DCHECK(setuid_sandbox);
+ DCHECK(setuid_sandbox->IsSuidSandboxChild());
+
+@@ -133,6 +136,9 @@ static bool EnterSuidSandbox(sandbox::SetuidSandboxCli
+
+ CHECK(service_manager::SandboxDebugHandling::SetDumpableStatusAndHandlers());
+ return true;
++#else
++ return false;
++#endif
+ }
+
+ static void DropAllCapabilities(int proc_fd) {
+@@ -178,6 +184,7 @@ static void EnterLayerOneSandbox(service_manager::Sand
+
+ bool ZygoteMain(
+ std::vector<std::unique_ptr<ZygoteForkDelegate>> fork_delegates) {
++#if !defined(OS_BSD)
+ sandbox::SetAmZygoteOrRenderer(true, GetSandboxFD());
+
+ auto* linux_sandbox = service_manager::SandboxLinux::GetInstance();
+@@ -240,6 +247,9 @@ bool ZygoteMain(
+
+ // This function call can return multiple times, once per fork().
+ return zygote.ProcessRequests();
++#else
++ return false;
++#endif
+ }
+
+ } // namespace service_manager
diff --git a/devel/electron6/files/patch-services_video__capture_broadcasting__receiver.cc b/devel/electron6/files/patch-services_video__capture_broadcasting__receiver.cc
new file mode 100644
index 000000000000..4bb8fcaded29
--- /dev/null
+++ b/devel/electron6/files/patch-services_video__capture_broadcasting__receiver.cc
@@ -0,0 +1,20 @@
+--- services/video_capture/broadcasting_receiver.cc.orig 2019-09-10 11:14:12 UTC
++++ services/video_capture/broadcasting_receiver.cc
+@@ -40,7 +40,7 @@ void CloneSharedBufferHandle(const mojo::ScopedSharedB
+ void CloneSharedBufferToRawFileDescriptorHandle(
+ const mojo::ScopedSharedBufferHandle& source,
+ media::mojom::VideoBufferHandlePtr* target) {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ media::SharedMemoryHandleProvider provider;
+ provider.InitFromMojoHandle(
+ source->Clone(mojo::SharedBufferHandle::AccessMode::READ_WRITE));
+@@ -174,7 +174,7 @@ void BroadcastingReceiver::BufferContext::
+ ConvertRawFileDescriptorToSharedBuffer() {
+ DCHECK(buffer_handle_->is_shared_memory_via_raw_file_descriptor());
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ media::SharedMemoryHandleProvider provider;
+ provider.InitAsReadOnlyFromRawFileDescriptor(
+ std::move(buffer_handle_->get_shared_memory_via_raw_file_descriptor()
diff --git a/devel/electron6/files/patch-skia_ext_SkMemory__new__handler.cpp b/devel/electron6/files/patch-skia_ext_SkMemory__new__handler.cpp
new file mode 100644
index 000000000000..eb122c63a178
--- /dev/null
+++ b/devel/electron6/files/patch-skia_ext_SkMemory__new__handler.cpp
@@ -0,0 +1,20 @@
+--- skia/ext/SkMemory_new_handler.cpp.orig 2019-09-10 10:42:44 UTC
++++ skia/ext/SkMemory_new_handler.cpp
+@@ -77,7 +77,7 @@ static void* malloc_nothrow(size_t size) {
+ // TODO(b.kelemen): we should always use UncheckedMalloc but currently it
+ // doesn't work as intended everywhere.
+ void* result;
+-#if defined(OS_IOS)
++#if defined(OS_IOS) || defined(OS_BSD)
+ result = malloc(size);
+ #else
+ // It's the responsibility of the caller to check the return value.
+@@ -97,7 +97,7 @@ static void* calloc_nothrow(size_t size) {
+ // TODO(b.kelemen): we should always use UncheckedCalloc but currently it
+ // doesn't work as intended everywhere.
+ void* result;
+-#if defined(OS_IOS)
++#if defined(OS_IOS) || defined(OS_BSD)
+ result = calloc(1, size);
+ #else
+ // It's the responsibility of the caller to check the return value.
diff --git a/devel/electron6/files/patch-third__party_angle_BUILD.gn b/devel/electron6/files/patch-third__party_angle_BUILD.gn
new file mode 100644
index 000000000000..954435e4c889
--- /dev/null
+++ b/devel/electron6/files/patch-third__party_angle_BUILD.gn
@@ -0,0 +1,21 @@
+--- third_party/angle/BUILD.gn.orig 2019-09-10 11:15:10 UTC
++++ third_party/angle/BUILD.gn
+@@ -322,6 +322,7 @@ angle_static_library("angle_gpu_info_util") {
+ "X11",
+ "Xi",
+ "Xext",
++ "GL",
+ ]
+ }
+ }
+@@ -929,10 +930,6 @@ foreach(is_shared_library,
+ libs = []
+ if (is_linux) {
+ sources += util_linux_sources
+- libs += [
+- "rt",
+- "dl",
+- ]
+ }
+
+ if (is_mac) {
diff --git a/devel/electron6/files/patch-third__party_angle_src_gpu__info__util_SystemInfo__internal.h b/devel/electron6/files/patch-third__party_angle_src_gpu__info__util_SystemInfo__internal.h
new file mode 100644
index 000000000000..67a5ed46dc17
--- /dev/null
+++ b/devel/electron6/files/patch-third__party_angle_src_gpu__info__util_SystemInfo__internal.h
@@ -0,0 +1,16 @@
+--- third_party/angle/src/gpu_info_util/SystemInfo_internal.h.orig 2019-09-10 11:15:11 UTC
++++ third_party/angle/src/gpu_info_util/SystemInfo_internal.h
+@@ -14,8 +14,13 @@
+ namespace angle
+ {
+
++bool CollectMesaCardInfo(std::vector<GPUDeviceInfo> *devices);
++
+ // Defined in SystemInfo_libpci when GPU_INFO_USE_LIBPCI is defined.
+ bool GetPCIDevicesWithLibPCI(std::vector<GPUDeviceInfo> *devices);
++#if defined(__FreeBSD__)
++bool GetPCIDevicesFreeBSD(std::vector<GPUDeviceInfo> *devices);
++#endif
+ // Defined in SystemInfo_x11 when GPU_INFO_USE_X11 is defined.
+ bool GetNvidiaDriverVersionWithXNVCtrl(std::string *version);
+
diff --git a/devel/electron6/files/patch-third__party_angle_src_gpu__info__util_SystemInfo__libpci.cpp b/devel/electron6/files/patch-third__party_angle_src_gpu__info__util_SystemInfo__libpci.cpp
new file mode 100644
index 000000000000..16812e3f628c
--- /dev/null
+++ b/devel/electron6/files/patch-third__party_angle_src_gpu__info__util_SystemInfo__libpci.cpp
@@ -0,0 +1,90 @@
+--- third_party/angle/src/gpu_info_util/SystemInfo_libpci.cpp.orig 2019-09-10 11:15:11 UTC
++++ third_party/angle/src/gpu_info_util/SystemInfo_libpci.cpp
+@@ -12,6 +12,11 @@
+ #include <pci/pci.h>
+ #include <unistd.h>
+
++#if defined(__FreeBSD__)
++#include <fcntl.h>
++#include <sys/pciio.h>
++#endif
++
+ #include "common/angleutils.h"
+ #include "common/debug.h"
+
+@@ -82,6 +87,75 @@ struct LibPCI : private angle::NonCopyable
+ };
+
+ } // anonymous namespace
++
++#if defined(__FreeBSD__)
++// Adds an entry per PCI GPU found and fills the device and vendor ID.
++bool GetPCIDevicesFreeBSD(std::vector<GPUDeviceInfo> *devices)
++{
++ int fd;
++ struct pci_conf_io conf;
++ struct pci_conf *matches;
++ uint32_t offset = 0;
++
++ fd = open("/dev/pci", O_RDONLY);
++ if (fd < 0)
++ return false;
++
++ matches = new struct pci_conf[32];
++ conf.generation = 0;
++ do {
++ conf.pat_buf_len = 0;
++ conf.num_patterns = 0;
++ conf.patterns = NULL;
++ conf.match_buf_len = 32 * sizeof(struct pci_conf);
++ conf.num_matches = 32;
++ conf.matches = matches;
++ conf.offset = offset;
++ conf.status = PCI_GETCONF_ERROR;
++ if (ioctl(fd, PCIOCGETCONF, &conf) < 0) {
++ if (errno == ENODEV)
++ break;
++ }
++ /* PCI_GETCONF_LIST_CHANGED would require us to start over. */
++ if (conf.status == PCI_GETCONF_ERROR || conf.status == PCI_GETCONF_LIST_CHANGED) {
++ break;
++ }
++
++ for (unsigned int i = 0; i < conf.num_matches; i++) {
++ uint16_t device_class = (matches[i].pc_class << 8) | matches[i].pc_subclass;
++
++ // Skip non-GPU devices
++ switch (device_class)
++ {
++ case PCI_CLASS_DISPLAY_VGA:
++ case PCI_CLASS_DISPLAY_XGA:
++ case PCI_CLASS_DISPLAY_3D:
++ break;
++ default:
++ continue;
++ }
++
++ // Skip unknown devices
++ if (matches[i].pc_vendor == 0 || matches[i].pc_device == 0) {
++ continue;
++ }
++
++ GPUDeviceInfo info;
++ info.vendorId = matches[i].pc_vendor;
++ info.deviceId = matches[i].pc_device;
++
++ devices->push_back(info);
++ }
++ offset += conf.num_matches;
++ } while (conf.status == PCI_GETCONF_MORE_DEVS);
++
++ delete[] matches;
++
++ close(fd);
++
++ return true;
++}
++#endif
+
+ // Adds an entry per PCI GPU found and fills the device and vendor ID.
+ bool GetPCIDevicesWithLibPCI(std::vector<GPUDeviceInfo> *devices)
diff --git a/devel/electron6/files/patch-third__party_angle_src_gpu__info__util_SystemInfo__linux.cpp b/devel/electron6/files/patch-third__party_angle_src_gpu__info__util_SystemInfo__linux.cpp
new file mode 100644
index 000000000000..f671b69d3c18
--- /dev/null
+++ b/devel/electron6/files/patch-third__party_angle_src_gpu__info__util_SystemInfo__linux.cpp
@@ -0,0 +1,21 @@
+--- third_party/angle/src/gpu_info_util/SystemInfo_linux.cpp.orig 2019-09-10 11:15:11 UTC
++++ third_party/angle/src/gpu_info_util/SystemInfo_linux.cpp
+@@ -71,10 +71,18 @@ bool GetPCIDevicesWithLibPCI(std::vector<GPUDeviceInfo
+
+ bool GetSystemInfo(SystemInfo *info)
+ {
++#if defined(__FreeBSD__)
++ if (!CollectMesaCardInfo(&(info->gpus)))
++ {
++ if (!GetPCIDevicesFreeBSD(&(info->gpus)))
++ return false;
++ }
++#else
+ if (!GetPCIDevicesWithLibPCI(&(info->gpus)))
+ {
+ return false;
+ }
++#endif
+
+ if (info->gpus.size() == 0)
+ {
diff --git a/devel/electron6/files/patch-third__party_angle_src_gpu__info__util_SystemInfo__x11.cpp b/devel/electron6/files/patch-third__party_angle_src_gpu__info__util_SystemInfo__x11.cpp
new file mode 100644
index 000000000000..e05666a44695
--- /dev/null
+++ b/devel/electron6/files/patch-third__party_angle_src_gpu__info__util_SystemInfo__x11.cpp
@@ -0,0 +1,55 @@
+--- third_party/angle/src/gpu_info_util/SystemInfo_x11.cpp.orig 2019-09-10 11:15:11 UTC
++++ third_party/angle/src/gpu_info_util/SystemInfo_x11.cpp
+@@ -8,6 +8,8 @@
+
+ #include "gpu_info_util/SystemInfo_internal.h"
+
++#include <GL/glx.h>
++#include <GL/glxext.h>
+ #include <X11/Xlib.h>
+
+ #include "common/debug.h"
+@@ -18,8 +20,43 @@
+ # error SystemInfo_x11.cpp compiled without GPU_INFO_USE_X11
+ #endif
+
++#define GLX_RENDERER_VENDOR_ID_MESA 0x8183
++#define GLX_RENDERER_DEVICE_ID_MESA 0x8184
++
+ namespace angle
+ {
++
++bool CollectMesaCardInfo(std::vector<GPUDeviceInfo> *devices)
++{
++
++ unsigned int vid[3], did[3];
++
++ Display *display = XOpenDisplay(NULL);
++ if (!display) {
++ return false;
++ }
++
++ PFNGLXQUERYRENDERERINTEGERMESAPROC queryInteger =
++ (PFNGLXQUERYRENDERERINTEGERMESAPROC) glXGetProcAddressARB((const GLubyte *)
++ "glXQueryRendererIntegerMESA");
++
++ if (!queryInteger)
++ return false;
++
++ bool vendor_ret =
++ queryInteger(display, 0, 0, GLX_RENDERER_VENDOR_ID_MESA, vid);
++ bool device_ret =
++ queryInteger(display, 0, 0, GLX_RENDERER_DEVICE_ID_MESA, did);
++
++ if (vendor_ret && device_ret) {
++ GPUDeviceInfo info;
++ info.vendorId = vid[0];
++ info.deviceId = did[0];
++ devices->push_back(info);
++ }
++
++ return true;
++}
+
+ bool GetNvidiaDriverVersionWithXNVCtrl(std::string *version)
+ {
diff --git a/devel/electron6/files/patch-third__party_angle_src_libANGLE_Display.cpp b/devel/electron6/files/patch-third__party_angle_src_libANGLE_Display.cpp
new file mode 100644
index 000000000000..7c6c41e420bc
--- /dev/null
+++ b/devel/electron6/files/patch-third__party_angle_src_libANGLE_Display.cpp
@@ -0,0 +1,20 @@
+--- third_party/angle/src/libANGLE/Display.cpp.orig 2019-09-10 11:15:11 UTC
++++ third_party/angle/src/libANGLE/Display.cpp
+@@ -66,7 +66,7 @@
+ #if defined(ANGLE_ENABLE_VULKAN)
+ # if defined(ANGLE_PLATFORM_WINDOWS)
+ # include "libANGLE/renderer/vulkan/win32/DisplayVkWin32.h"
+-# elif defined(ANGLE_PLATFORM_LINUX)
++# elif defined(ANGLE_PLATFORM_POSIX)
+ # include "libANGLE/renderer/vulkan/xcb/DisplayVkXcb.h"
+ # elif defined(ANGLE_PLATFORM_ANDROID)
+ # include "libANGLE/renderer/vulkan/android/DisplayVkAndroid.h"
+@@ -261,7 +261,7 @@ rx::DisplayImpl *CreateDisplayFromAttribs(const Attrib
+ #if defined(ANGLE_ENABLE_VULKAN)
+ # if defined(ANGLE_PLATFORM_WINDOWS)
+ impl = new rx::DisplayVkWin32(state);
+-# elif defined(ANGLE_PLATFORM_LINUX)
++# elif defined(ANGLE_PLATFORM_POSIX)
+ impl = new rx::DisplayVkXcb(state);
+ # elif defined(ANGLE_PLATFORM_ANDROID)
+ impl = new rx::DisplayVkAndroid(state);
diff --git a/devel/electron6/files/patch-third__party_angle_src_libANGLE_renderer_driver__utils.h b/devel/electron6/files/patch-third__party_angle_src_libANGLE_renderer_driver__utils.h
new file mode 100644
index 000000000000..4ada61211ff8
--- /dev/null
+++ b/devel/electron6/files/patch-third__party_angle_src_libANGLE_renderer_driver__utils.h
@@ -0,0 +1,11 @@
+--- third_party/angle/src/libANGLE/renderer/driver_utils.h.orig 2019-09-10 11:15:12 UTC
++++ third_party/angle/src/libANGLE/renderer/driver_utils.h
+@@ -107,7 +107,7 @@ inline bool IsWindows()
+
+ inline bool IsLinux()
+ {
+-#if defined(ANGLE_PLATFORM_LINUX)
++#if defined(ANGLE_PLATFORM_POSIX)
+ return true;
+ #else
+ return false;
diff --git a/devel/electron6/files/patch-third__party_angle_third__party_vulkan-loader_src_loader_loader.c b/devel/electron6/files/patch-third__party_angle_third__party_vulkan-loader_src_loader_loader.c
new file mode 100644
index 000000000000..fb4921833d4a
--- /dev/null
+++ b/devel/electron6/files/patch-third__party_angle_third__party_vulkan-loader_src_loader_loader.c
@@ -0,0 +1,11 @@
+--- third_party/angle/third_party/vulkan-loader/src/loader/loader.c.orig 2019-09-10 10:47:33 UTC
++++ third_party/angle/third_party/vulkan-loader/src/loader/loader.c
+@@ -229,7 +229,7 @@ void *loader_device_heap_realloc(const struct loader_d
+ }
+
+ // Environment variables
+-#if defined(__linux__) || defined(__APPLE__)
++#if defined(__linux__) || defined(__APPLE__) || defined(__FreeBSD__)
+
+ static inline char *loader_getenv(const char *name, const struct loader_instance *inst) {
+ // No allocation of memory necessary for Linux, but we should at least touch
diff --git a/devel/electron6/files/patch-third__party_angle_third__party_vulkan-loader_src_loader_vk__loader__platform.h b/devel/electron6/files/patch-third__party_angle_third__party_vulkan-loader_src_loader_vk__loader__platform.h
new file mode 100644
index 000000000000..a83eb5403249
--- /dev/null
+++ b/devel/electron6/files/patch-third__party_angle_third__party_vulkan-loader_src_loader_vk__loader__platform.h
@@ -0,0 +1,11 @@
+--- third_party/angle/third_party/vulkan-loader/src/loader/vk_loader_platform.h.orig 2019-09-10 10:47:33 UTC
++++ third_party/angle/third_party/vulkan-loader/src/loader/vk_loader_platform.h
+@@ -31,7 +31,7 @@
+ #include "vulkan/vk_platform.h"
+ #include "vulkan/vk_sdk_platform.h"
+
+-#if defined(__linux__) || defined(__APPLE__)
++#if defined(__linux__) || defined(__APPLE__) || defined(__FreeBSD__)
+ /* Linux-specific common code: */
+
+ // Headers:
diff --git a/devel/electron6/files/patch-third__party_angle_third__party_vulkan-validation-layers_src_layers_vk__loader__platform.h b/devel/electron6/files/patch-third__party_angle_third__party_vulkan-validation-layers_src_layers_vk__loader__platform.h
new file mode 100644
index 000000000000..299a498d82b0
--- /dev/null
+++ b/devel/electron6/files/patch-third__party_angle_third__party_vulkan-validation-layers_src_layers_vk__loader__platform.h
@@ -0,0 +1,11 @@
+--- third_party/angle/third_party/vulkan-validation-layers/src/layers/vk_loader_platform.h.orig 2019-09-10 10:48:22 UTC
++++ third_party/angle/third_party/vulkan-validation-layers/src/layers/vk_loader_platform.h
+@@ -31,7 +31,7 @@
+ #include "vulkan/vk_platform.h"
+ #include "vulkan/vk_sdk_platform.h"
+
+-#if defined(__linux__) || defined(__APPLE__)
++#if defined(__linux__) || defined(__APPLE__) || defined(__FreeBSD__)
+ /* Linux-specific common code: */
+
+ // Headers:
diff --git a/devel/electron6/files/patch-third__party_blink_renderer_BUILD.gn b/devel/electron6/files/patch-third__party_blink_renderer_BUILD.gn
new file mode 100644
index 000000000000..7591c034e872
--- /dev/null
+++ b/devel/electron6/files/patch-third__party_blink_renderer_BUILD.gn
@@ -0,0 +1,13 @@
+--- third_party/blink/renderer/BUILD.gn.orig 2019-09-10 10:42:46 UTC
++++ third_party/blink/renderer/BUILD.gn
+@@ -45,8 +45,8 @@ config("inside_blink") {
+ "-Wconversion",
+ "-Wno-float-conversion",
+ "-Wno-sign-conversion",
+- "-Wno-implicit-float-conversion",
+- "-Wno-implicit-int-conversion",
++# "-Wno-implicit-float-conversion",
++# "-Wno-implicit-int-conversion",
+ ]
+ }
+ }
diff --git a/devel/electron6/files/patch-third__party_blink_renderer_core_editing_editing__behavior.cc b/devel/electron6/files/patch-third__party_blink_renderer_core_editing_editing__behavior.cc
new file mode 100644
index 000000000000..1d51ccf95af5
--- /dev/null
+++ b/devel/electron6/files/patch-third__party_blink_renderer_core_editing_editing__behavior.cc
@@ -0,0 +1,11 @@
+--- third_party/blink/renderer/core/editing/editing_behavior.cc.orig 2019-09-10 10:42:47 UTC
++++ third_party/blink/renderer/core/editing/editing_behavior.cc
+@@ -270,7 +270,7 @@ bool EditingBehavior::ShouldInsertCharacter(const Keyb
+ // unexpected behaviour
+ if (ch < ' ')
+ return false;
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // According to XKB map no keyboard combinations with ctrl key are mapped to
+ // printable characters, however we need the filter as the DomKey/text could
+ // contain printable characters.
diff --git a/devel/electron6/files/patch-third__party_blink_renderer_core_html_canvas_canvas__async__blob__creator.cc b/devel/electron6/files/patch-third__party_blink_renderer_core_html_canvas_canvas__async__blob__creator.cc
new file mode 100644
index 000000000000..20fbc09c0af1
--- /dev/null
+++ b/devel/electron6/files/patch-third__party_blink_renderer_core_html_canvas_canvas__async__blob__creator.cc
@@ -0,0 +1,11 @@
+--- third_party/blink/renderer/core/html/canvas/canvas_async_blob_creator.cc.orig 2019-09-10 11:14:14 UTC
++++ third_party/blink/renderer/core/html/canvas/canvas_async_blob_creator.cc
+@@ -40,7 +40,7 @@ constexpr TimeDelta kEncodeRowSlackBeforeDeadline =
+ TimeDelta::FromMicroseconds(100);
+
+ /* The value is based on user statistics on Nov 2017. */
+-#if (defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN))
++#if (defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN)) || defined(OS_BSD)
+ const double kIdleTaskStartTimeoutDelayMs = 1000.0;
+ #else
+ const double kIdleTaskStartTimeoutDelayMs = 4000.0; // For ChromeOS, Mobile
diff --git a/devel/electron6/files/patch-third__party_blink_renderer_core_html_forms_internal__popup__menu.cc b/devel/electron6/files/patch-third__party_blink_renderer_core_html_forms_internal__popup__menu.cc
new file mode 100644
index 000000000000..98516f626b8e
--- /dev/null
+++ b/devel/electron6/files/patch-third__party_blink_renderer_core_html_forms_internal__popup__menu.cc
@@ -0,0 +1,11 @@
+--- third_party/blink/renderer/core/html/forms/internal_popup_menu.cc.orig 2019-09-10 11:14:15 UTC
++++ third_party/blink/renderer/core/html/forms/internal_popup_menu.cc
+@@ -120,7 +120,7 @@ class InternalPopupMenu::ItemIterationContext {
+ is_in_group_(false),
+ buffer_(buffer) {
+ DCHECK(buffer_);
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // On other platforms, the <option> background color is the same as the
+ // <select> background color. On Linux, that makes the <option>
+ // background color very dark, so by default, try to use a lighter
diff --git a/devel/electron6/files/patch-third__party_blink_renderer_core_inspector_inspector__memory__agent.cc b/devel/electron6/files/patch-third__party_blink_renderer_core_inspector_inspector__memory__agent.cc
new file mode 100644
index 000000000000..20f3ee32cef5
--- /dev/null
+++ b/devel/electron6/files/patch-third__party_blink_renderer_core_inspector_inspector__memory__agent.cc
@@ -0,0 +1,11 @@
+--- third_party/blink/renderer/core/inspector/inspector_memory_agent.cc.orig 2019-09-10 11:14:15 UTC
++++ third_party/blink/renderer/core/inspector/inspector_memory_agent.cc
+@@ -188,7 +188,7 @@ InspectorMemoryAgent::GetSamplingProfileById(uint32_t
+
+ std::vector<std::string> InspectorMemoryAgent::Symbolize(
+ const std::vector<void*>& addresses) {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // TODO(alph): Move symbolization to the client.
+ std::vector<void*> addresses_to_symbolize;
+ for (void* address : addresses) {
diff --git a/devel/electron6/files/patch-third__party_blink_renderer_core_layout_layout__view.cc b/devel/electron6/files/patch-third__party_blink_renderer_core_layout_layout__view.cc
new file mode 100644
index 000000000000..be79d23536a7
--- /dev/null
+++ b/devel/electron6/files/patch-third__party_blink_renderer_core_layout_layout__view.cc
@@ -0,0 +1,20 @@
+--- third_party/blink/renderer/core/layout/layout_view.cc.orig 2019-09-10 11:14:15 UTC
++++ third_party/blink/renderer/core/layout/layout_view.cc
+@@ -58,7 +58,7 @@
+ #include "third_party/blink/renderer/platform/instrumentation/tracing/traced_value.h"
+ #include "third_party/blink/renderer/platform/runtime_enabled_features.h"
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ #include "third_party/blink/renderer/platform/fonts/font_cache.h"
+ #endif
+
+@@ -321,7 +321,7 @@ void LayoutView::UpdateLayout() {
+ DCHECK(!layout_state_);
+ LayoutState root_layout_state(*this);
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ // The font code in FontPlatformData does not have a direct connection to the
+ // document, the frame or anything from which we could retrieve the device
+ // scale factor. After using zoom for DSF, the GraphicsContext does only ever
diff --git a/devel/electron6/files/patch-third__party_blink_renderer_core_paint_paint__layer.cc b/devel/electron6/files/patch-third__party_blink_renderer_core_paint_paint__layer.cc
new file mode 100644
index 000000000000..bf1e019b551b
--- /dev/null
+++ b/devel/electron6/files/patch-third__party_blink_renderer_core_paint_paint__layer.cc
@@ -0,0 +1,11 @@
+--- third_party/blink/renderer/core/paint/paint_layer.cc.orig 2019-09-10 11:14:15 UTC
++++ third_party/blink/renderer/core/paint/paint_layer.cc
+@@ -103,7 +103,7 @@ namespace {
+ static CompositingQueryMode g_compositing_query_mode =
+ kCompositingQueriesAreOnlyAllowedInCertainDocumentLifecyclePhases;
+
+-#ifdef OS_LINUX
++#if defined(OS_LINUX) || defined(OS_BSD)
+ struct SameSizeAsPaintLayer : DisplayItemClient {
+ // The bit fields may fit into the machine word of DisplayItemClient which
+ // has only 8-bit data.
diff --git a/devel/electron6/files/patch-third__party_blink_renderer_core_scroll_scrollbar__theme__aura.cc b/devel/electron6/files/patch-third__party_blink_renderer_core_scroll_scrollbar__theme__aura.cc
new file mode 100644
index 000000000000..b888ab86e008
--- /dev/null
+++ b/devel/electron6/files/patch-third__party_blink_renderer_core_scroll_scrollbar__theme__aura.cc
@@ -0,0 +1,20 @@
+--- third_party/blink/renderer/core/scroll/scrollbar_theme_aura.cc.orig 2019-09-10 11:14:15 UTC
++++ third_party/blink/renderer/core/scroll/scrollbar_theme_aura.cc
+@@ -332,7 +332,7 @@ ScrollbarPart ScrollbarThemeAura::InvalidateOnThumbPos
+
+ bool ScrollbarThemeAura::ShouldCenterOnThumb(const Scrollbar& scrollbar,
+ const WebMouseEvent& event) {
+-#if (defined(OS_LINUX) && !defined(OS_CHROMEOS))
++#if ((defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS))
+ if (event.button == WebPointerProperties::Button::kMiddle)
+ return true;
+ #endif
+@@ -347,7 +347,7 @@ bool ScrollbarThemeAura::ShouldSnapBackToDragOrigin(
+ // Disable snapback on desktop Linux to better integrate with the desktop
+ // behavior. Typically, Linux apps do not implement scrollbar snapback (this is
+ // true for at least GTK and QT apps).
+-#if (defined(OS_LINUX) && !defined(OS_CHROMEOS))
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ return false;
+ #endif
+
diff --git a/devel/electron6/files/patch-third__party_blink_renderer_platform_BUILD.gn b/devel/electron6/files/patch-third__party_blink_renderer_platform_BUILD.gn
new file mode 100644
index 000000000000..91edcd89de39
--- /dev/null
+++ b/devel/electron6/files/patch-third__party_blink_renderer_platform_BUILD.gn
@@ -0,0 +1,10 @@
+--- third_party/blink/renderer/platform/BUILD.gn.orig 2019-09-16 09:24:25 UTC
++++ third_party/blink/renderer/platform/BUILD.gn
+@@ -111,6 +111,7 @@ executable("character_data_generator") {
+ "//build/win:default_exe_manifest",
+ "//third_party/icu",
+ ]
++ libs = [ "cxxrt" ]
+ }
+
+ # This isn't strictly necessary since we can just add the deps to "platform",
diff --git a/devel/electron6/files/patch-third__party_blink_renderer_platform_fonts_font__cache.cc b/devel/electron6/files/patch-third__party_blink_renderer_platform_fonts_font__cache.cc
new file mode 100644
index 000000000000..22aff7adfd71
--- /dev/null
+++ b/devel/electron6/files/patch-third__party_blink_renderer_platform_fonts_font__cache.cc
@@ -0,0 +1,20 @@
+--- third_party/blink/renderer/platform/fonts/font_cache.cc.orig 2019-09-10 11:14:16 UTC
++++ third_party/blink/renderer/platform/fonts/font_cache.cc
+@@ -72,7 +72,7 @@ static const char kColorEmojiLocale[] = "und-Zsye";
+
+ SkFontMgr* FontCache::static_font_manager_ = nullptr;
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ float FontCache::device_scale_factor_ = 1.0;
+ #endif
+
+@@ -95,7 +95,7 @@ FontCache::FontCache()
+ FontPlatformData* FontCache::SystemFontPlatformData(
+ const FontDescription& font_description) {
+ const AtomicString& family = FontCache::SystemFontFamily();
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ if (family.IsEmpty() || family == font_family_names::kSystemUi)
+ return nullptr;
+ #else
diff --git a/devel/electron6/files/patch-third__party_blink_renderer_platform_fonts_font__cache.h b/devel/electron6/files/patch-third__party_blink_renderer_platform_fonts_font__cache.h
new file mode 100644
index 000000000000..ecbb6b5182e2
--- /dev/null
+++ b/devel/electron6/files/patch-third__party_blink_renderer_platform_fonts_font__cache.h
@@ -0,0 +1,53 @@
+--- third_party/blink/renderer/platform/fonts/font_cache.h.orig 2019-09-10 11:14:16 UTC
++++ third_party/blink/renderer/platform/fonts/font_cache.h
+@@ -155,7 +155,7 @@ class PLATFORM_EXPORT FontCache {
+ sk_sp<SkFontMgr> FontManager() { return font_manager_; }
+ static void SetFontManager(sk_sp<SkFontMgr>);
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ // These are needed for calling QueryRenderStyleForStrike, since
+ // gfx::GetFontRenderParams makes distinctions based on DSF.
+ static float DeviceScaleFactor() { return device_scale_factor_; }
+@@ -216,7 +216,7 @@ class PLATFORM_EXPORT FontCache {
+ const FontDescription&);
+ #endif // defined(OS_ANDROID)
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ struct PlatformFallbackFont {
+ String name;
+ CString filename;
+@@ -228,7 +228,7 @@ class PLATFORM_EXPORT FontCache {
+ static void GetFontForCharacter(UChar32,
+ const char* preferred_locale,
+ PlatformFallbackFont*);
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+
+ scoped_refptr<SimpleFontData> FontDataFromFontPlatformData(
+ const FontPlatformData*,
+@@ -301,12 +301,12 @@ class PLATFORM_EXPORT FontCache {
+ const FontFaceCreationParams&,
+ CString& name);
+
+-#if defined(OS_ANDROID) || defined(OS_LINUX)
++#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_BSD)
+ static AtomicString GetFamilyNameForCharacter(SkFontMgr*,
+ UChar32,
+ const FontDescription&,
+ FontFallbackPriority);
+-#endif // defined(OS_ANDROID) || defined(OS_LINUX)
++#endif // defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_BSD)
+
+ scoped_refptr<SimpleFontData> FallbackOnStandardFontStyle(
+ const FontDescription&,
+@@ -338,7 +338,7 @@ class PLATFORM_EXPORT FontCache {
+ bool is_test_font_mgr_ = false;
+ #endif // defined(OS_WIN)
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ static float device_scale_factor_;
+ #endif
+
diff --git a/devel/electron6/files/patch-third__party_blink_renderer_platform_fonts_font__description.cc b/devel/electron6/files/patch-third__party_blink_renderer_platform_fonts_font__description.cc
new file mode 100644
index 000000000000..a4097fa1cbdf
--- /dev/null
+++ b/devel/electron6/files/patch-third__party_blink_renderer_platform_fonts_font__description.cc
@@ -0,0 +1,20 @@
+--- third_party/blink/renderer/platform/fonts/font_description.cc.orig 2019-09-10 11:14:16 UTC
++++ third_party/blink/renderer/platform/fonts/font_description.cc
+@@ -38,7 +38,7 @@
+ #include "third_party/blink/renderer/platform/wtf/text/string_hash.h"
+ #include "third_party/blink/renderer/platform/wtf/text/string_hasher.h"
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ #include "third_party/blink/renderer/platform/fonts/font_cache.h"
+ #endif
+
+@@ -223,7 +223,7 @@ FontCacheKey FontDescription::CacheKey(
+ static_cast<unsigned>(fields_.orientation_) << 1 | // bit 2-3
+ static_cast<unsigned>(fields_.subpixel_text_position_); // bit 1
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ float device_scale_factor_for_key = FontCache::DeviceScaleFactor();
+ #else
+ float device_scale_factor_for_key = 1.0f;
diff --git a/devel/electron6/files/patch-third__party_blink_renderer_platform_fonts_font__metrics.cc b/devel/electron6/files/patch-third__party_blink_renderer_platform_fonts_font__metrics.cc
new file mode 100644
index 000000000000..184dfbb80663
--- /dev/null
+++ b/devel/electron6/files/patch-third__party_blink_renderer_platform_fonts_font__metrics.cc
@@ -0,0 +1,29 @@
+--- third_party/blink/renderer/platform/fonts/font_metrics.cc.orig 2019-09-10 10:42:49 UTC
++++ third_party/blink/renderer/platform/fonts/font_metrics.cc
+@@ -38,7 +38,7 @@
+
+ namespace blink {
+
+-#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_FUCHSIA)
++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_FUCHSIA) || defined(OS_BSD)
+ // This is the largest VDMX table which we'll try to load and parse.
+ static const size_t kMaxVDMXTableSize = 1024 * 1024; // 1 MB
+ #endif
+@@ -60,7 +60,7 @@ void FontMetrics::AscentDescentWithHacks(
+ int vdmx_ascent = 0, vdmx_descent = 0;
+ bool is_vdmx_valid = false;
+
+-#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_FUCHSIA)
++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_FUCHSIA) || defined(OS_BSD)
+ // Manually digging up VDMX metrics is only applicable when bytecode hinting
+ // using FreeType. With DirectWrite or CoreText, no bytecode hinting is ever
+ // done. This code should be pushed into FreeType (hinted font metrics).
+@@ -106,7 +106,7 @@ void FontMetrics::AscentDescentWithHacks(
+ visual_overflow_inflation_for_ascent = 1;
+ if (descent < metrics.fDescent) {
+ visual_overflow_inflation_for_descent = 1;
+-#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_FUCHSIA)
++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_FUCHSIA) || defined(OS_BSD)
+ // When subpixel positioning is enabled, if the descent is rounded down,
+ // the descent part of the glyph may be truncated when displayed in a
+ // 'overflow: hidden' container. To avoid that, borrow 1 unit from the
diff --git a/devel/electron6/files/patch-third__party_blink_renderer_platform_fonts_font__unique__name__lookup.cc b/devel/electron6/files/patch-third__party_blink_renderer_platform_fonts_font__unique__name__lookup.cc
new file mode 100644
index 000000000000..6f60dd6c314d
--- /dev/null
+++ b/devel/electron6/files/patch-third__party_blink_renderer_platform_fonts_font__unique__name__lookup.cc
@@ -0,0 +1,20 @@
+--- third_party/blink/renderer/platform/fonts/font_unique_name_lookup.cc.orig 2019-09-10 10:42:49 UTC
++++ third_party/blink/renderer/platform/fonts/font_unique_name_lookup.cc
+@@ -8,7 +8,7 @@
+ #if defined(OS_ANDROID)
+ #include "third_party/blink/public/mojom/font_unique_name_lookup/font_unique_name_lookup.mojom-blink.h"
+ #include "third_party/blink/renderer/platform/fonts/android/font_unique_name_lookup_android.h"
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ #include "third_party/blink/renderer/platform/fonts/linux/font_unique_name_lookup_linux.h"
+ #elif defined(OS_WIN)
+ #include "third_party/blink/renderer/platform/fonts/win/font_unique_name_lookup_win.h"
+@@ -23,7 +23,7 @@ std::unique_ptr<FontUniqueNameLookup>
+ FontUniqueNameLookup::GetPlatformUniqueNameLookup() {
+ #if defined(OS_ANDROID)
+ return std::make_unique<FontUniqueNameLookupAndroid>();
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ return std::make_unique<FontUniqueNameLookupLinux>();
+ #elif defined(OS_WIN)
+ return std::make_unique<FontUniqueNameLookupWin>();
diff --git a/devel/electron6/files/patch-third__party_blink_renderer_platform_fonts_shaping_shape__result__inline__headers.h b/devel/electron6/files/patch-third__party_blink_renderer_platform_fonts_shaping_shape__result__inline__headers.h
new file mode 100644
index 000000000000..dfc98cc644e5
--- /dev/null
+++ b/devel/electron6/files/patch-third__party_blink_renderer_platform_fonts_shaping_shape__result__inline__headers.h
@@ -0,0 +1,78 @@
+--- third_party/blink/renderer/platform/fonts/shaping/shape_result_inline_headers.h.orig 2019-09-10 11:14:16 UTC
++++ third_party/blink/renderer/platform/fonts/shaping/shape_result_inline_headers.h
+@@ -251,37 +251,6 @@ struct ShapeResult::RunInfo : public RefCounted<ShapeR
+ template <bool has_non_zero_glyph_offsets>
+ struct iterator final {};
+
+- // For non-zero glyph offset array
+- template <>
+- struct iterator<true> final {
+- // The constructor for ShapeResult
+- explicit iterator(const GlyphOffsetArray& array)
+- : pointer(array.storage_.get()) {
+- DCHECK(pointer);
+- }
+-
+- // The constructor for ShapeResultView
+- explicit iterator(const GlyphDataRange& range) : pointer(range.offsets) {
+- DCHECK(pointer);
+- }
+-
+- GlyphOffset operator*() const { return *pointer; }
+- void operator++() { ++pointer; }
+-
+- const GlyphOffset* pointer;
+- };
+-
+- // For zero glyph offset array
+- template <>
+- struct iterator<false> final {
+- explicit iterator(const GlyphOffsetArray& array) {
+- DCHECK(!array.HasStorage());
+- }
+- explicit iterator(const GlyphDataRange& range) { DCHECK(!range.offsets); }
+- GlyphOffset operator*() const { return GlyphOffset(); }
+- void operator++() {}
+- };
+-
+ template <bool has_non_zero_glyph_offsets>
+ iterator<has_non_zero_glyph_offsets> GetIterator() const {
+ return iterator<has_non_zero_glyph_offsets>(*this);
+@@ -493,6 +462,37 @@ struct ShapeResult::RunInfo : public RefCounted<ShapeR
+ unsigned start_index_;
+ unsigned num_characters_;
+ float width_;
++};
++
++// For non-zero glyph offset array
++template <>
++struct ShapeResult::RunInfo::GlyphOffsetArray::iterator<true> final {
++ // The constructor for ShapeResult
++ explicit iterator(const GlyphOffsetArray& array)
++ : pointer(array.storage_.get()) {
++ DCHECK(pointer);
++ }
++
++ // The constructor for ShapeResultView
++ explicit iterator(const GlyphDataRange& range) : pointer(range.offsets) {
++ DCHECK(pointer);
++ }
++
++ GlyphOffset operator*() const { return *pointer; }
++ void operator++() { ++pointer; }
++
++ const GlyphOffset* pointer;
++};
++
++// For zero glyph offset array
++template <>
++struct ShapeResult::RunInfo::GlyphOffsetArray::iterator<false> final {
++ explicit iterator(const GlyphOffsetArray& array) {
++ DCHECK(!array.HasStorage());
++ }
++ explicit iterator(const GlyphDataRange& range) { DCHECK(!range.offsets); }
++ GlyphOffset operator*() const { return GlyphOffset(); }
++ void operator++() {}
+ };
+
+ // Find the range of HarfBuzzRunGlyphData for the specified character index
diff --git a/devel/electron6/files/patch-third__party_blink_renderer_platform_fonts_skia_font__cache__skia.cc b/devel/electron6/files/patch-third__party_blink_renderer_platform_fonts_skia_font__cache__skia.cc
new file mode 100644
index 000000000000..d3cc393b797e
--- /dev/null
+++ b/devel/electron6/files/patch-third__party_blink_renderer_platform_fonts_skia_font__cache__skia.cc
@@ -0,0 +1,38 @@
+--- third_party/blink/renderer/platform/fonts/skia/font_cache_skia.cc.orig 2019-09-10 11:14:16 UTC
++++ third_party/blink/renderer/platform/fonts/skia/font_cache_skia.cc
+@@ -60,7 +60,7 @@ AtomicString ToAtomicString(const SkString& str) {
+ return AtomicString::FromUTF8(str.c_str(), str.size());
+ }
+
+-#if defined(OS_ANDROID) || defined(OS_LINUX)
++#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_BSD)
+ // This function is called on android or when we are emulating android fonts on
+ // linux and the embedder has overriden the default fontManager with
+ // WebFontRendering::setSkiaFontMgr.
+@@ -83,7 +83,7 @@ AtomicString FontCache::GetFamilyNameForCharacter(
+ typeface->getFamilyName(&skia_family_name);
+ return ToAtomicString(skia_family_name);
+ }
+-#endif // defined(OS_ANDROID) || defined(OS_LINUX)
++#endif // defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_BSD)
+
+ void FontCache::PlatformInit() {}
+
+@@ -228,7 +228,7 @@ sk_sp<SkTypeface> FontCache::CreateTypeface(
+ }
+ #endif
+
+-#if defined(OS_LINUX) || defined(OS_WIN)
++#if defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD)
+ // On linux if the fontManager has been overridden then we should be calling
+ // the embedder provided font Manager rather than calling
+ // SkTypeface::CreateFromName which may redirect the call to the default font
+@@ -255,7 +255,7 @@ std::unique_ptr<FontPlatformData> FontCache::CreateFon
+ CString name;
+
+ sk_sp<SkTypeface> typeface;
+-#if defined(OS_ANDROID) || defined(OS_LINUX)
++#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_BSD)
+ if (alternate_name == AlternateFontName::kLocalUniqueFace &&
+ RuntimeEnabledFeatures::FontSrcLocalMatchingEnabled()) {
+ typeface = CreateTypefaceFromUniqueName(creation_params, name);
diff --git a/devel/electron6/files/patch-third__party_blink_renderer_platform_wtf_container__annotations.h b/devel/electron6/files/patch-third__party_blink_renderer_platform_wtf_container__annotations.h
new file mode 100644
index 000000000000..102f017aa1bb
--- /dev/null
+++ b/devel/electron6/files/patch-third__party_blink_renderer_platform_wtf_container__annotations.h
@@ -0,0 +1,27 @@
+--- third_party/blink/renderer/platform/wtf/container_annotations.h.orig 2019-09-10 10:42:49 UTC
++++ third_party/blink/renderer/platform/wtf/container_annotations.h
+@@ -10,7 +10,7 @@
+
+ // TODO(ochang): Remove the ARCH_CPU_X86_64 condition to enable this for X86
+ // once the crashes there have been fixed: http://crbug.com/461406
+-#if defined(ADDRESS_SANITIZER) && defined(OS_LINUX) && defined(ARCH_CPU_X86_64)
++#if defined(ADDRESS_SANITIZER) && (defined(OS_LINUX) || defined(OS_BSD)) && defined(ARCH_CPU_X86_64)
+ #define ANNOTATE_CONTIGUOUS_CONTAINER
+ #define ANNOTATE_NEW_BUFFER(buffer, capacity, newSize) \
+ if (buffer) { \
+@@ -35,13 +35,13 @@
+ ANNOTATE_NEW_BUFFER(buffer, newCapacity, bufferSize);
+ // Annotations require buffers to begin on an 8-byte boundary.
+
+-#else // ADDRESS_SANITIZER && OS_LINUX && ARCH_CPU_X86_64
++#else // ADDRESS_SANITIZER && (OS_LINUX || OS_BSD) && ARCH_CPU_X86_64
+
+ #define ANNOTATE_NEW_BUFFER(buffer, capacity, newSize)
+ #define ANNOTATE_DELETE_BUFFER(buffer, capacity, oldSize)
+ #define ANNOTATE_CHANGE_SIZE(buffer, capacity, oldSize, newSize)
+ #define ANNOTATE_CHANGE_CAPACITY(buffer, oldCapacity, bufferSize, newCapacity)
+
+-#endif // ADDRESS_SANITIZER && OS_LINUX && ARCH_CPU_X86_64
++#endif // ADDRESS_SANITIZER && (OS_LINUX || OS_BSD) && ARCH_CPU_X86_64
+
+ #endif // THIRD_PARTY_BLINK_RENDERER_PLATFORM_WTF_CONTAINER_ANNOTATIONS_H_
diff --git a/devel/electron6/files/patch-third__party_blink_renderer_platform_wtf_stack__util.cc b/devel/electron6/files/patch-third__party_blink_renderer_platform_wtf_stack__util.cc
new file mode 100644
index 000000000000..ffd0fe162d98
--- /dev/null
+++ b/devel/electron6/files/patch-third__party_blink_renderer_platform_wtf_stack__util.cc
@@ -0,0 +1,14 @@
+--- third_party/blink/renderer/platform/wtf/stack_util.cc.orig 2019-09-10 10:42:49 UTC
++++ third_party/blink/renderer/platform/wtf/stack_util.cc
+@@ -17,6 +17,11 @@
+ extern "C" void* __libc_stack_end; // NOLINT
+ #endif
+
++#if defined(OS_FREEBSD)
++#include <sys/signal.h>
++#include <pthread_np.h>
++#endif
++
+ namespace WTF {
+
+ size_t GetUnderestimatedStackSize() {
diff --git a/devel/electron6/files/patch-third__party_blink_renderer_platform_wtf_threading__pthreads.cc b/devel/electron6/files/patch-third__party_blink_renderer_platform_wtf_threading__pthreads.cc
new file mode 100644
index 000000000000..62a4a6337f6f
--- /dev/null
+++ b/devel/electron6/files/patch-third__party_blink_renderer_platform_wtf_threading__pthreads.cc
@@ -0,0 +1,22 @@
+--- third_party/blink/renderer/platform/wtf/threading_pthreads.cc.orig 2019-09-10 11:14:17 UTC
++++ third_party/blink/renderer/platform/wtf/threading_pthreads.cc
+@@ -52,12 +52,17 @@
+ #include <objc/objc-auto.h>
+ #endif
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include <sys/syscall.h>
+ #endif
+
+-#if defined(OS_LINUX) || defined(OS_ANDROID)
++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
+ #include <unistd.h>
++#endif
++
++#if defined(OS_BSD)
++#include <sys/signal.h>
++#include <pthread_np.h>
+ #endif
+
+ namespace WTF {
diff --git a/devel/electron6/files/patch-third__party_boringssl_BUILD.gn b/devel/electron6/files/patch-third__party_boringssl_BUILD.gn
new file mode 100644
index 000000000000..9edcd278cef0
--- /dev/null
+++ b/devel/electron6/files/patch-third__party_boringssl_BUILD.gn
@@ -0,0 +1,36 @@
+--- third_party/boringssl/BUILD.gn.orig 2019-09-16 09:24:24 UTC
++++ third_party/boringssl/BUILD.gn
+@@ -87,7 +87,7 @@ if (is_win && !is_msan && current_cpu != "arm64") {
+ } else if (current_cpu == "x64") {
+ if (is_mac) {
+ sources += crypto_sources_mac_x86_64
+- } else if (is_linux || is_android) {
++ } else if (is_linux || is_bsd || is_android) {
+ sources += crypto_sources_linux_x86_64
+ } else {
+ public_configs = [ ":no_asm_config" ]
+@@ -95,13 +95,13 @@ if (is_win && !is_msan && current_cpu != "arm64") {
+ } else if (current_cpu == "x86") {
+ if (is_mac) {
+ sources += crypto_sources_mac_x86
+- } else if (is_linux || is_android) {
++ } else if (is_linux || is_bsd || is_android) {
+ sources += crypto_sources_linux_x86
+ } else {
+ public_configs = [ ":no_asm_config" ]
+ }
+ } else if (current_cpu == "arm") {
+- if (is_linux || is_android) {
++ if (is_linux || is_bsd || is_android) {
+ sources += crypto_sources_linux_arm
+ } else if (is_ios) {
+ sources += crypto_sources_ios_arm
+@@ -109,7 +109,7 @@ if (is_win && !is_msan && current_cpu != "arm64") {
+ public_configs = [ ":no_asm_config" ]
+ }
+ } else if (current_cpu == "arm64") {
+- if (is_linux || is_android) {
++ if (is_linux || is_bsd || is_android) {
+ sources += crypto_sources_linux_aarch64
+ } else if (is_ios) {
+ sources += crypto_sources_ios_aarch64
diff --git a/devel/electron6/files/patch-third__party_boringssl_src_crypto_cpu-aarch64-linux.c b/devel/electron6/files/patch-third__party_boringssl_src_crypto_cpu-aarch64-linux.c
new file mode 100644
index 000000000000..ed62f264c3ae
--- /dev/null
+++ b/devel/electron6/files/patch-third__party_boringssl_src_crypto_cpu-aarch64-linux.c
@@ -0,0 +1,63 @@
+--- third_party/boringssl/src/crypto/cpu-aarch64-linux.c.orig 2019-09-10 10:44:10 UTC
++++ third_party/boringssl/src/crypto/cpu-aarch64-linux.c
+@@ -14,49 +14,35 @@
+
+ #include <openssl/cpu.h>
+
+-#if defined(OPENSSL_AARCH64) && defined(OPENSSL_LINUX) && \
+- !defined(OPENSSL_STATIC_ARMCAP)
++#if defined(OPENSSL_AARCH64)
+
+-#include <sys/auxv.h>
+-
+ #include <openssl/arm_arch.h>
+
+ #include "internal.h"
+
+-
+ extern uint32_t OPENSSL_armcap_P;
+
++#include <sys/types.h>
++#include <machine/armreg.h>
++
+ void OPENSSL_cpuid_setup(void) {
+- unsigned long hwcap = getauxval(AT_HWCAP);
++ uint64_t id_aa64isar0;
+
+- // See /usr/include/asm/hwcap.h on an aarch64 installation for the source of
+- // these values.
+- static const unsigned long kNEON = 1 << 1;
+- static const unsigned long kAES = 1 << 3;
+- static const unsigned long kPMULL = 1 << 4;
+- static const unsigned long kSHA1 = 1 << 5;
+- static const unsigned long kSHA256 = 1 << 6;
++ id_aa64isar0 = READ_SPECIALREG(ID_AA64ISAR0_EL1);
+
+- if ((hwcap & kNEON) == 0) {
+- // Matching OpenSSL, if NEON is missing, don't report other features
+- // either.
+- return;
+- }
+-
+ OPENSSL_armcap_P |= ARMV7_NEON;
+
+- if (hwcap & kAES) {
++ if (ID_AA64ISAR0_AES(id_aa64isar0) >= ID_AA64ISAR0_AES_BASE) {
+ OPENSSL_armcap_P |= ARMV8_AES;
+ }
+- if (hwcap & kPMULL) {
++ if (ID_AA64ISAR0_AES(id_aa64isar0) == ID_AA64ISAR0_AES_PMULL) {
+ OPENSSL_armcap_P |= ARMV8_PMULL;
+ }
+- if (hwcap & kSHA1) {
++ if (ID_AA64ISAR0_SHA1(id_aa64isar0) == ID_AA64ISAR0_SHA1_BASE) {
+ OPENSSL_armcap_P |= ARMV8_SHA1;
+ }
+- if (hwcap & kSHA256) {
++ if(ID_AA64ISAR0_SHA2(id_aa64isar0) >= ID_AA64ISAR0_SHA2_BASE) {
+ OPENSSL_armcap_P |= ARMV8_SHA256;
+ }
+ }
+-
+-#endif // OPENSSL_AARCH64 && !OPENSSL_STATIC_ARMCAP
++#endif // OPENSSL_AARCH64
diff --git a/devel/electron6/files/patch-third__party_boringssl_src_crypto_ex__data.c b/devel/electron6/files/patch-third__party_boringssl_src_crypto_ex__data.c
new file mode 100644
index 000000000000..a9cfcc2451ab
--- /dev/null
+++ b/devel/electron6/files/patch-third__party_boringssl_src_crypto_ex__data.c
@@ -0,0 +1,13 @@
+--- third_party/boringssl/src/crypto/ex_data.c.orig 2019-09-10 10:44:10 UTC
++++ third_party/boringssl/src/crypto/ex_data.c
+@@ -186,7 +186,9 @@ int CRYPTO_set_ex_data(CRYPTO_EX_DATA *ad, int index,
+ }
+ }
+
+- sk_void_set(ad->sk, index, val);
++ // expression result unused; should this cast be to 'void'?
++ // seems it should, feel free to investigate those #def
++ (void) sk_void_set(ad->sk, index, val);
+ return 1;
+ }
+
diff --git a/devel/electron6/files/patch-third__party_breakpad_breakpad_src_common_simple__string__dictionary.h b/devel/electron6/files/patch-third__party_breakpad_breakpad_src_common_simple__string__dictionary.h
new file mode 100644
index 000000000000..da0e9b018047
--- /dev/null
+++ b/devel/electron6/files/patch-third__party_breakpad_breakpad_src_common_simple__string__dictionary.h
@@ -0,0 +1,11 @@
+--- third_party/breakpad/breakpad/src/common/simple_string_dictionary.h.orig 2019-09-10 10:43:55 UTC
++++ third_party/breakpad/breakpad/src/common/simple_string_dictionary.h
+@@ -33,7 +33,7 @@
+ #include <assert.h>
+ #include <string.h>
+
+-#include "common/basictypes.h"
++#include "third_party/breakpad/breakpad/src/common/basictypes.h"
+
+ namespace google_breakpad {
+
diff --git a/devel/electron6/files/patch-third__party_cacheinvalidation_src_google_cacheinvalidation_include_types.h b/devel/electron6/files/patch-third__party_cacheinvalidation_src_google_cacheinvalidation_include_types.h
new file mode 100644
index 000000000000..bba83f8bf1e1
--- /dev/null
+++ b/devel/electron6/files/patch-third__party_cacheinvalidation_src_google_cacheinvalidation_include_types.h
@@ -0,0 +1,11 @@
+--- third_party/cacheinvalidation/src/google/cacheinvalidation/include/types.h.orig 2019-09-10 10:43:16 UTC
++++ third_party/cacheinvalidation/src/google/cacheinvalidation/include/types.h
+@@ -334,6 +334,8 @@ class Status {
+ */
+ PERMANENT_FAILURE
+ };
++
++ Status() : code_(SUCCESS), message_() {}
+
+ /* Creates a new Status object given the code and message. */
+ Status(Code code, const string& message) : code_(code), message_(message) {}
diff --git a/devel/electron6/files/patch-third__party_crashpad_crashpad_build_crashpad__buildconfig.gni b/devel/electron6/files/patch-third__party_crashpad_crashpad_build_crashpad__buildconfig.gni
new file mode 100644
index 000000000000..fae3994cef37
--- /dev/null
+++ b/devel/electron6/files/patch-third__party_crashpad_crashpad_build_crashpad__buildconfig.gni
@@ -0,0 +1,11 @@
+--- third_party/crashpad/crashpad/build/crashpad_buildconfig.gni.orig 2019-09-10 10:43:16 UTC
++++ third_party/crashpad/crashpad/build/crashpad_buildconfig.gni
+@@ -38,7 +38,7 @@ crashpad_is_standalone = crashpad_dependencies == "sta
+ if (crashpad_is_in_chromium) {
+ crashpad_is_mac = is_mac
+ crashpad_is_win = is_win
+- crashpad_is_linux = is_linux
++ crashpad_is_linux = is_linux && !is_bsd
+ crashpad_is_android = is_android
+ crashpad_is_fuchsia = is_fuchsia
+
diff --git a/devel/electron6/files/patch-third__party_crashpad_crashpad_client_BUILD.gn b/devel/electron6/files/patch-third__party_crashpad_crashpad_client_BUILD.gn
new file mode 100644
index 000000000000..f7bbbae27af5
--- /dev/null
+++ b/devel/electron6/files/patch-third__party_crashpad_crashpad_client_BUILD.gn
@@ -0,0 +1,15 @@
+--- third_party/crashpad/crashpad/client/BUILD.gn.orig 2019-09-10 10:43:16 UTC
++++ third_party/crashpad/crashpad/client/BUILD.gn
+@@ -71,6 +71,12 @@ static_library("client") {
+ sources += [ "crashpad_client_fuchsia.cc" ]
+ }
+
++ if (crashpad_is_posix) {
++ sources += [
++ "crashpad_client_posix.cc",
++ ]
++ }
++
+ if (crashpad_is_linux || crashpad_is_android || crashpad_is_fuchsia) {
+ sources += [ "crash_report_database_generic.cc" ]
+ }
diff --git a/devel/electron6/files/patch-third__party_crashpad_crashpad_client_crashpad__client__posix.cc b/devel/electron6/files/patch-third__party_crashpad_crashpad_client_crashpad__client__posix.cc
new file mode 100644
index 000000000000..11bc66d28901
--- /dev/null
+++ b/devel/electron6/files/patch-third__party_crashpad_crashpad_client_crashpad__client__posix.cc
@@ -0,0 +1,41 @@
+--- third_party/crashpad/crashpad/client/crashpad_client_posix.cc.orig 2019-09-16 09:25:15 UTC
++++ third_party/crashpad/crashpad/client/crashpad_client_posix.cc
+@@ -0,0 +1,38 @@
++// Copyright 2017 The Crashpad Authors. All rights reserved.
++//
++// Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0
++//
++// 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.
++
++#include "client/crashpad_client.h"
++
++#include "base/logging.h"
++
++namespace crashpad {
++
++CrashpadClient::CrashpadClient() {}
++
++CrashpadClient::~CrashpadClient() {}
++
++bool CrashpadClient::StartHandler(
++ const base::FilePath& handler,
++ const base::FilePath& database,
++ const base::FilePath& metrics_dir,
++ const std::string& url,
++ const std::map<std::string, std::string>& annotations,
++ const std::vector<std::string>& arguments,
++ bool restartable,
++ bool asynchronous_start) {
++ NOTREACHED(); // TODO(scottmg): https://crashpad.chromium.org/bug/196
++ return false;
++}
++
++} // namespace crashpad
diff --git a/devel/electron6/files/patch-third__party_crashpad_crashpad_util_misc_address__types.h b/devel/electron6/files/patch-third__party_crashpad_crashpad_util_misc_address__types.h
new file mode 100644
index 000000000000..a5ad09945a78
--- /dev/null
+++ b/devel/electron6/files/patch-third__party_crashpad_crashpad_util_misc_address__types.h
@@ -0,0 +1,20 @@
+--- third_party/crashpad/crashpad/util/misc/address_types.h.orig 2019-09-10 10:43:16 UTC
++++ third_party/crashpad/crashpad/util/misc/address_types.h
+@@ -25,7 +25,7 @@
+ #include <mach/mach_types.h>
+ #elif defined(OS_WIN)
+ #include "util/win/address_types.h"
+-#elif defined(OS_LINUX) || defined(OS_ANDROID)
++#elif defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
+ #include "util/linux/address_types.h"
+ #elif defined(OS_FUCHSIA)
+ #include <zircon/types.h>
+@@ -55,7 +55,7 @@ using VMSize = mach_vm_size_t;
+ using VMAddress = WinVMAddress;
+ using VMSize = WinVMSize;
+
+-#elif defined(OS_LINUX) || defined(OS_ANDROID)
++#elif defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
+
+ using VMAddress = LinuxVMAddress;
+ using VMSize = LinuxVMSize;
diff --git a/devel/electron6/files/patch-third__party_crashpad_crashpad_util_misc_capture__context.h b/devel/electron6/files/patch-third__party_crashpad_crashpad_util_misc_capture__context.h
new file mode 100644
index 000000000000..bff565f5eeec
--- /dev/null
+++ b/devel/electron6/files/patch-third__party_crashpad_crashpad_util_misc_capture__context.h
@@ -0,0 +1,20 @@
+--- third_party/crashpad/crashpad/util/misc/capture_context.h.orig 2019-09-10 10:43:16 UTC
++++ third_party/crashpad/crashpad/util/misc/capture_context.h
+@@ -21,7 +21,7 @@
+ #include <mach/mach.h>
+ #elif defined(OS_WIN)
+ #include <windows.h>
+-#elif defined(OS_LINUX) || defined(OS_ANDROID)
++#elif defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
+ #include <ucontext.h>
+ #elif defined(OS_FUCHSIA)
+ #include <signal.h>
+@@ -35,7 +35,7 @@ using NativeCPUContext = x86_thread_state;
+ #endif
+ #elif defined(OS_WIN)
+ using NativeCPUContext = CONTEXT;
+-#elif defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_FUCHSIA)
++#elif defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_FUCHSIA) || defined(OS_BSD)
+ using NativeCPUContext = ucontext_t;
+ #endif // OS_MACOSX
+
diff --git a/devel/electron6/files/patch-third__party_crashpad_crashpad_util_misc_metrics.cc b/devel/electron6/files/patch-third__party_crashpad_crashpad_util_misc_metrics.cc
new file mode 100644
index 000000000000..f1020292d89c
--- /dev/null
+++ b/devel/electron6/files/patch-third__party_crashpad_crashpad_util_misc_metrics.cc
@@ -0,0 +1,11 @@
+--- third_party/crashpad/crashpad/util/misc/metrics.cc.orig 2019-09-10 10:43:16 UTC
++++ third_party/crashpad/crashpad/util/misc/metrics.cc
+@@ -25,7 +25,7 @@
+ #define METRICS_OS_NAME "Win"
+ #elif defined(OS_ANDROID)
+ #define METRICS_OS_NAME "Android"
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ #define METRICS_OS_NAME "Linux"
+ #elif defined(OS_FUCHSIA)
+ #define METRICS_OS_NAME "Fuchsia"
diff --git a/devel/electron6/files/patch-third__party_crashpad_crashpad_util_misc_uuid.cc b/devel/electron6/files/patch-third__party_crashpad_crashpad_util_misc_uuid.cc
new file mode 100644
index 000000000000..3101719e0299
--- /dev/null
+++ b/devel/electron6/files/patch-third__party_crashpad_crashpad_util_misc_uuid.cc
@@ -0,0 +1,11 @@
+--- third_party/crashpad/crashpad/util/misc/uuid.cc.orig 2019-09-10 10:43:16 UTC
++++ third_party/crashpad/crashpad/util/misc/uuid.cc
+@@ -95,7 +95,7 @@ bool UUID::InitializeWithNew() {
+ InitializeFromBytes(uuid);
+ return true;
+ #elif defined(OS_WIN) || defined(OS_LINUX) || defined(OS_ANDROID) || \
+- defined(OS_FUCHSIA)
++ defined(OS_FUCHSIA) || defined(OS_BSD)
+ // Linux, Android, and Fuchsia do not provide a UUID generator in a
+ // widely-available system library. On Linux and Android, uuid_generate()
+ // from libuuid is not available everywhere.
diff --git a/devel/electron6/files/patch-third__party_crashpad_crashpad_util_posix_close__multiple.cc b/devel/electron6/files/patch-third__party_crashpad_crashpad_util_posix_close__multiple.cc
new file mode 100644
index 000000000000..0f3a072f7f7a
--- /dev/null
+++ b/devel/electron6/files/patch-third__party_crashpad_crashpad_util_posix_close__multiple.cc
@@ -0,0 +1,29 @@
+--- third_party/crashpad/crashpad/util/posix/close_multiple.cc.orig 2019-09-10 10:43:16 UTC
++++ third_party/crashpad/crashpad/util/posix/close_multiple.cc
+@@ -31,7 +31,7 @@
+ #include "util/file/directory_reader.h"
+ #include "util/misc/implicit_cast.h"
+
+-#if defined(OS_MACOSX)
++#if defined(OS_MACOSX) || defined(OS_BSD)
+ #include <sys/sysctl.h>
+ #endif
+
+@@ -72,7 +72,7 @@ void CloseNowOrOnExec(int fd, bool ebadf_ok) {
+ // This is an advantage over looping over all possible file descriptors, because
+ // no attempt needs to be made to close file descriptors that are not open.
+ bool CloseMultipleNowOrOnExecUsingFDDir(int min_fd, int preserve_fd) {
+-#if defined(OS_MACOSX)
++#if defined(OS_MACOSX) || defined(OS_BSD)
+ static constexpr char kFDDir[] = "/dev/fd";
+ #elif defined(OS_LINUX) || defined(OS_ANDROID)
+ static constexpr char kFDDir[] = "/proc/self/fd";
+@@ -146,7 +146,7 @@ void CloseMultipleNowOrOnExec(int fd, int preserve_fd)
+ // while the system is running, but it’s still a better upper bound than the
+ // current RLIMIT_NOFILE value.
+
+-#if defined(OS_MACOSX)
++#if defined(OS_MACOSX) || defined(OS_BSD)
+ // See 10.11.6 xnu-3248.60.10/bsd/kern/kern_resource.c maxfilesperproc,
+ // referenced by dosetrlimit().
+ int oid[] = {CTL_KERN, KERN_MAXFILESPERPROC};
diff --git a/devel/electron6/files/patch-third__party_crashpad_crashpad_util_posix_drop__privileges.cc b/devel/electron6/files/patch-third__party_crashpad_crashpad_util_posix_drop__privileges.cc
new file mode 100644
index 000000000000..e234ad11aef9
--- /dev/null
+++ b/devel/electron6/files/patch-third__party_crashpad_crashpad_util_posix_drop__privileges.cc
@@ -0,0 +1,11 @@
+--- third_party/crashpad/crashpad/util/posix/drop_privileges.cc.orig 2019-09-10 10:43:16 UTC
++++ third_party/crashpad/crashpad/util/posix/drop_privileges.cc
+@@ -23,7 +23,7 @@ void DropPrivileges() {
+ gid_t gid = getgid();
+ uid_t uid = getuid();
+
+-#if defined(OS_MACOSX)
++#if defined(OS_MACOSX) || defined(OS_BSD)
+ // Based on the POSIX.1-2008 2013 edition documentation for setreuid() and
+ // setregid(), setreuid() and setregid() alone should be sufficient to drop
+ // privileges. The standard specifies that the saved ID should be set to the
diff --git a/devel/electron6/files/patch-third__party_crashpad_crashpad_util_posix_signals.cc b/devel/electron6/files/patch-third__party_crashpad_crashpad_util_posix_signals.cc
new file mode 100644
index 000000000000..e260ff61e59e
--- /dev/null
+++ b/devel/electron6/files/patch-third__party_crashpad_crashpad_util_posix_signals.cc
@@ -0,0 +1,40 @@
+--- third_party/crashpad/crashpad/util/posix/signals.cc.orig 2019-09-10 10:43:16 UTC
++++ third_party/crashpad/crashpad/util/posix/signals.cc
+@@ -45,10 +45,10 @@ constexpr int kCrashSignals[] = {
+ #if defined(SIGEMT)
+ SIGEMT,
+ #endif // defined(SIGEMT)
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ SIGXCPU,
+ SIGXFSZ,
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+ };
+
+ // These are the non-core-generating but terminating signals.
+@@ -85,9 +85,9 @@ constexpr int kTerminateSignals[] = {
+ SIGXCPU,
+ SIGXFSZ,
+ #endif // defined(OS_MACOSX)
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ SIGIO,
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+ };
+
+ bool InstallHandlers(const std::vector<int>& signals,
+@@ -216,8 +216,12 @@ bool Signals::WillSignalReraiseAutonomously(const sigi
+ // remains. See 10.12.3 xnu-3789.41.3/bsd/kern/kern_sig.c
+ // psignal_internal().
+ (code > 0 &&
++#if defined(SI_ASYNCIO)
+ code != SI_ASYNCIO &&
++#endif
++#if defined(SI_MESGQ)
+ code != SI_MESGQ &&
++#endif
+ code != SI_QUEUE &&
+ code != SI_TIMER &&
+ code != SI_USER &&
diff --git a/devel/electron6/files/patch-third__party_crashpad_crashpad_util_posix_symbolic__constants__posix.cc b/devel/electron6/files/patch-third__party_crashpad_crashpad_util_posix_symbolic__constants__posix.cc
new file mode 100644
index 000000000000..d213b3ab9758
--- /dev/null
+++ b/devel/electron6/files/patch-third__party_crashpad_crashpad_util_posix_symbolic__constants__posix.cc
@@ -0,0 +1,20 @@
+--- third_party/crashpad/crashpad/util/posix/symbolic_constants_posix.cc.orig 2019-09-10 10:43:16 UTC
++++ third_party/crashpad/crashpad/util/posix/symbolic_constants_posix.cc
+@@ -64,7 +64,7 @@ constexpr const char* kSignalNames[] = {
+ "INFO",
+ "USR1",
+ "USR2",
+-#elif defined(OS_LINUX) || defined(OS_ANDROID)
++#elif defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
+ #if defined(ARCH_CPU_MIPS_FAMILY)
+ "HUP",
+ "INT",
+@@ -135,7 +135,7 @@ constexpr const char* kSignalNames[] = {
+ #endif // defined(ARCH_CPU_MIPS_FAMILY)
+ #endif
+ };
+-#if defined(OS_LINUX) || defined(OS_ANDROID)
++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
+ // NSIG is 64 to account for real-time signals.
+ static_assert(base::size(kSignalNames) == 32, "kSignalNames length");
+ #else
diff --git a/devel/electron6/files/patch-third__party_crc32c_src_src_crc32c__arm64__linux__check.h b/devel/electron6/files/patch-third__party_crc32c_src_src_crc32c__arm64__linux__check.h
new file mode 100644
index 000000000000..fdccb9e9d47c
--- /dev/null
+++ b/devel/electron6/files/patch-third__party_crc32c_src_src_crc32c__arm64__linux__check.h
@@ -0,0 +1,53 @@
+--- third_party/crc32c/src/src/crc32c_arm64_linux_check.h.orig 2019-09-10 10:43:57 UTC
++++ third_party/crc32c/src/src/crc32c_arm64_linux_check.h
+@@ -7,8 +7,6 @@
+ #ifndef CRC32C_CRC32C_ARM_LINUX_CHECK_H_
+ #define CRC32C_CRC32C_ARM_LINUX_CHECK_H_
+
+-// X86-specific code checking for the availability of SSE4.2 instructions.
+-
+ #include <cstddef>
+ #include <cstdint>
+
+@@ -16,30 +14,19 @@
+
+ #if HAVE_ARM64_CRC32C
+
+-#if HAVE_STRONG_GETAUXVAL
+-#include <sys/auxv.h>
+-#elif HAVE_WEAK_GETAUXVAL
+-// getauxval() is not available on Android until API level 20. Link it as a weak
+-// symbol.
+-extern "C" unsigned long getauxval(unsigned long type) __attribute__((weak));
+-
+-#define AT_HWCAP 16
+-#endif // HAVE_STRONG_GETAUXVAL || HAVE_WEAK_GETAUXVAL
+-
++#include <machine/armreg.h>
++#include <sys/types.h>
+ namespace crc32c {
+
+-inline bool CanUseArm64Linux() {
+-#if HAVE_STRONG_GETAUXVAL || HAVE_WEAK_GETAUXVAL
+- // From 'arch/arm64/include/uapi/asm/hwcap.h' in Linux kernel source code.
+- constexpr unsigned long kHWCAP_PMULL = 1 << 4;
+- constexpr unsigned long kHWCAP_CRC32 = 1 << 7;
+- unsigned long hwcap = (&getauxval != nullptr) ? getauxval(AT_HWCAP) : 0;
+- return (hwcap & (kHWCAP_PMULL | kHWCAP_CRC32)) ==
+- (kHWCAP_PMULL | kHWCAP_CRC32);
+-#else
+- return false;
+-#endif // HAVE_STRONG_GETAUXVAL || HAVE_WEAK_GETAUXVAL
+-}
++ inline bool CanUseArm64Linux() {
++ uint64_t id_aa64isar0;
++
++ id_aa64isar0 = READ_SPECIALREG(ID_AA64ISAR0_EL1);
++ if ((ID_AA64ISAR0_AES(id_aa64isar0) == ID_AA64ISAR0_AES_PMULL) && \
++ (ID_AA64ISAR0_CRC32(id_aa64isar0) == ID_AA64ISAR0_CRC32_BASE))
++ return true;
++ return false;
++ }
+
+ } // namespace crc32c
+
diff --git a/devel/electron6/files/patch-third__party_electron__node_deps_uv_BUILD.gn b/devel/electron6/files/patch-third__party_electron__node_deps_uv_BUILD.gn
new file mode 100644
index 000000000000..7317f54c9438
--- /dev/null
+++ b/devel/electron6/files/patch-third__party_electron__node_deps_uv_BUILD.gn
@@ -0,0 +1,45 @@
+--- third_party/electron_node/deps/uv/BUILD.gn.orig 2019-09-16 09:24:26 UTC
++++ third_party/electron_node/deps/uv/BUILD.gn
+@@ -3,7 +3,7 @@ config("libuv_config") {
+
+ defines = []
+
+- if (is_linux) {
++ if (is_linux && !is_bsd) {
+ defines += [ "_POSIX_C_SOURCE=200112" ]
+ }
+ if (!is_win) {
+@@ -147,7 +147,7 @@ static_library("uv") {
+ libs += [ "m" ]
+ ldflags += [ "-pthread" ]
+ }
+- if (is_mac || is_linux) {
++ if (is_mac || (is_linux && !is_bsd)) {
+ sources += [ "src/unix/proctitle.c" ]
+ }
+ if (is_mac) {
+@@ -161,7 +161,7 @@ static_library("uv") {
+ "_DARWIN_UNLIMITED_SELECT=1",
+ ]
+ }
+- if (is_linux) {
++ if (is_linux && !is_bsd) {
+ defines += [ "_GNU_SOURCE" ]
+ sources += [
+ "src/unix/linux-core.c",
+@@ -180,6 +180,15 @@ static_library("uv") {
+ sources += [
+ "src/unix/bsd-ifaddrs.c",
+ "src/unix/kqueue.c",
++ ]
++ }
++ if (is_bsd) {
++ sources += [
++ "src/unix/bsd-ifaddrs.c",
++ "src/unix/bsd-proctitle.c",
++ "src/unix/freebsd.c",
++ "src/unix/kqueue.c",
++ "src/unix/posix-hrtime.c",
+ ]
+ }
+ }
diff --git a/devel/electron6/files/patch-third__party_ffmpeg_libavutil_mem.c b/devel/electron6/files/patch-third__party_ffmpeg_libavutil_mem.c
new file mode 100644
index 000000000000..2de3c146399c
--- /dev/null
+++ b/devel/electron6/files/patch-third__party_ffmpeg_libavutil_mem.c
@@ -0,0 +1,12 @@
+--- third_party/ffmpeg/libavutil/mem.c.orig 2019-09-10 10:46:29 UTC
++++ third_party/ffmpeg/libavutil/mem.c
+@@ -32,9 +32,6 @@
+ #include <stdint.h>
+ #include <stdlib.h>
+ #include <string.h>
+-#if HAVE_MALLOC_H
+-#include <malloc.h>
+-#endif
+
+ #include "avassert.h"
+ #include "avutil.h"
diff --git a/devel/electron6/files/patch-third__party_glslang_src_glslang_Include_PoolAlloc.h b/devel/electron6/files/patch-third__party_glslang_src_glslang_Include_PoolAlloc.h
new file mode 100644
index 000000000000..152585b2bca0
--- /dev/null
+++ b/devel/electron6/files/patch-third__party_glslang_src_glslang_Include_PoolAlloc.h
@@ -0,0 +1,10 @@
+--- third_party/glslang/src/glslang/Include/PoolAlloc.h.orig 2020-03-15 04:26:41 UTC
++++ third_party/glslang/src/glslang/Include/PoolAlloc.h
+@@ -304,7 +304,6 @@ class pool_allocator { (public)
+ size_type max_size() const { return static_cast<size_type>(-1) / sizeof(T); }
+ size_type max_size(int size) const { return static_cast<size_type>(-1) / size; }
+
+- void setAllocator(TPoolAllocator* a) { allocator = *a; }
+ TPoolAllocator& getAllocator() const { return allocator; }
+
+ protected:
diff --git a/devel/electron6/files/patch-third__party_googletest_src_googletest_src_gtest-port.cc b/devel/electron6/files/patch-third__party_googletest_src_googletest_src_gtest-port.cc
new file mode 100644
index 000000000000..4d6a56b669c9
--- /dev/null
+++ b/devel/electron6/files/patch-third__party_googletest_src_googletest_src_gtest-port.cc
@@ -0,0 +1,43 @@
+--- third_party/googletest/src/googletest/src/gtest-port.cc.orig 2019-09-10 11:15:40 UTC
++++ third_party/googletest/src/googletest/src/gtest-port.cc
+@@ -63,6 +63,11 @@
+ # endif
+ #endif
+
++#if GTEST_OS_FREEBSD
++#include <sys/sysctl.h>
++#include <sys/user.h>
++#endif
++
+ #if GTEST_OS_QNX
+ # include <devctl.h>
+ # include <fcntl.h>
+@@ -137,6 +142,28 @@ size_t GetThreadCount() {
+ } else {
+ return 0;
+ }
++}
++
++#elif GTEST_OS_FREEBSD
++
++#define KP_NLWP(kp) (kp.ki_numthreads)
++
++// Return the number of threads running in the process, or 0 to indicate that
++// we cannot detect it.
++size_t GetThreadCount() {
++ int mib[] = {
++ CTL_KERN,
++ KERN_PROC,
++ KERN_PROC_PID,
++ getpid(),
++ };
++ u_int miblen = sizeof(mib) / sizeof(mib[0]);
++ struct kinfo_proc(info);
++ size_t size = sizeof(info);
++ if (sysctl(mib, miblen, &info, &size, NULL, 0)) {
++ return 0;
++ }
++ return KP_NLWP(info);
+ }
+
+ #elif GTEST_OS_DRAGONFLY || GTEST_OS_FREEBSD || GTEST_OS_GNU_KFREEBSD || \
diff --git a/devel/electron6/files/patch-third__party_googletest_src_googletest_src_gtest.cc b/devel/electron6/files/patch-third__party_googletest_src_googletest_src_gtest.cc
new file mode 100644
index 000000000000..32836fc8cd9a
--- /dev/null
+++ b/devel/electron6/files/patch-third__party_googletest_src_googletest_src_gtest.cc
@@ -0,0 +1,10 @@
+--- third_party/googletest/src/googletest/src/gtest.cc.orig 2019-09-10 11:15:40 UTC
++++ third_party/googletest/src/googletest/src/gtest.cc
+@@ -114,6 +114,7 @@
+
+ #if GTEST_CAN_STREAM_RESULTS_
+ # include <arpa/inet.h> // NOLINT
++# include <sys/socket.h> // NOLINT
+ # include <netdb.h> // NOLINT
+ # include <sys/socket.h> // NOLINT
+ # include <sys/types.h> // NOLINT
diff --git a/devel/electron6/files/patch-third__party_harfbuzz-ng_harfbuzz.gni b/devel/electron6/files/patch-third__party_harfbuzz-ng_harfbuzz.gni
new file mode 100644
index 000000000000..2cd00a60022c
--- /dev/null
+++ b/devel/electron6/files/patch-third__party_harfbuzz-ng_harfbuzz.gni
@@ -0,0 +1,20 @@
+--- third_party/harfbuzz-ng/harfbuzz.gni.orig 2019-09-10 10:43:16 UTC
++++ third_party/harfbuzz-ng/harfbuzz.gni
+@@ -3,10 +3,11 @@
+ # found in the LICENSE file.
+
+ declare_args() {
+- # Blink uses a cutting-edge version of Harfbuzz; most Linux distros do not
+- # contain a new enough version of the code to work correctly. However,
+- # ChromeOS chroots (i.e, real ChromeOS builds for devices) do contain a
+- # new enough version of the library, and so this variable exists so that
+- # ChromeOS can build against the system lib and keep binary sizes smaller.
+- use_system_harfbuzz = false
++ # Blink uses a cutting-edge version of Harfbuzz (version listed in
++ # third_party/harfbuzz-ng/README.chromium); most Linux distros do not contain
++ # a new enough version of the code to work correctly. However, ChromeOS
++ # chroots (i.e. real ChromeOS builds for devices) do contain a new enough
++ # version of the library, and so this variable exists so that ChromeOS can
++ # build against the system lib and keep binary sizes smaller.
++ use_system_harfbuzz = true
+ }
diff --git a/devel/electron6/files/patch-third__party_leveldatabase_env__chromium.cc b/devel/electron6/files/patch-third__party_leveldatabase_env__chromium.cc
new file mode 100644
index 000000000000..5c362f8a6e13
--- /dev/null
+++ b/devel/electron6/files/patch-third__party_leveldatabase_env__chromium.cc
@@ -0,0 +1,14 @@
+--- third_party/leveldatabase/env_chromium.cc.orig 2019-09-10 11:14:32 UTC
++++ third_party/leveldatabase/env_chromium.cc
+@@ -40,7 +40,11 @@
+ #include "third_party/leveldatabase/leveldb_chrome.h"
+ #include "third_party/leveldatabase/leveldb_features.h"
+ #include "third_party/leveldatabase/src/include/leveldb/options.h"
++#if defined(OS_BSD)
++#include <re2/re2.h>
++#else
+ #include "third_party/re2/src/re2/re2.h"
++#endif
+
+ #if defined(OS_WIN)
+ #undef DeleteFile
diff --git a/devel/electron6/files/patch-third__party_libXNVCtrl_NVCtrl.c b/devel/electron6/files/patch-third__party_libXNVCtrl_NVCtrl.c
new file mode 100644
index 000000000000..bc8ef4ca4f83
--- /dev/null
+++ b/devel/electron6/files/patch-third__party_libXNVCtrl_NVCtrl.c
@@ -0,0 +1,25 @@
+--- third_party/libXNVCtrl/NVCtrl.c.orig 2019-09-10 10:43:17 UTC
++++ third_party/libXNVCtrl/NVCtrl.c
+@@ -27,10 +27,6 @@
+ * libXNVCtrl library properly protects the Display connection.
+ */
+
+-#if !defined(XTHREADS)
+-#define XTHREADS
+-#endif /* XTHREADS */
+-
+ #define NEED_EVENTS
+ #define NEED_REPLIES
+ #include <stdint.h>
+@@ -39,6 +35,11 @@
+ #include <X11/Xutil.h>
+ #include <X11/extensions/Xext.h>
+ #include <X11/extensions/extutil.h>
++
++#if !defined(XTHREADS)
++#define XTHREADS
++#endif /* XTHREADS */
++
+ #include "NVCtrlLib.h"
+ #include "nv_control.h"
+
diff --git a/devel/electron6/files/patch-third__party_libphonenumber_dist_cpp_src_phonenumbers_base_memory_singleton.h b/devel/electron6/files/patch-third__party_libphonenumber_dist_cpp_src_phonenumbers_base_memory_singleton.h
new file mode 100644
index 000000000000..4f3e6c310bed
--- /dev/null
+++ b/devel/electron6/files/patch-third__party_libphonenumber_dist_cpp_src_phonenumbers_base_memory_singleton.h
@@ -0,0 +1,11 @@
+--- third_party/libphonenumber/dist/cpp/src/phonenumbers/base/memory/singleton.h.orig 2019-09-10 10:45:51 UTC
++++ third_party/libphonenumber/dist/cpp/src/phonenumbers/base/memory/singleton.h
+@@ -56,7 +56,7 @@ template <class T> boost::once_flag Singleton<T>::flag
+ #include "phonenumbers/base/logging.h"
+ #include "phonenumbers/base/thread_checker.h"
+
+-#if !defined(__linux__) && !defined(__APPLE__)
++#if !defined(__linux__) && !defined(__APPLE__) && !defined(__FreeBSD__) && !defined(__OpenBSD__)
+
+ namespace i18n {
+ namespace phonenumbers {
diff --git a/devel/electron6/files/patch-third__party_libphonenumber_dist_cpp_src_phonenumbers_base_synchronization_lock.h b/devel/electron6/files/patch-third__party_libphonenumber_dist_cpp_src_phonenumbers_base_synchronization_lock.h
new file mode 100644
index 000000000000..53c9908660ef
--- /dev/null
+++ b/devel/electron6/files/patch-third__party_libphonenumber_dist_cpp_src_phonenumbers_base_synchronization_lock.h
@@ -0,0 +1,11 @@
+--- third_party/libphonenumber/dist/cpp/src/phonenumbers/base/synchronization/lock.h.orig 2019-09-10 11:16:34 UTC
++++ third_party/libphonenumber/dist/cpp/src/phonenumbers/base/synchronization/lock.h
+@@ -37,7 +37,7 @@ typedef boost::mutex::scoped_lock AutoLock;
+ // Dummy lock implementation on non-POSIX platforms. If you are running on a
+ // different platform and care about thread-safety, please compile with
+ // -DI18N_PHONENUMBERS_USE_BOOST.
+-#if !defined(__linux__) && !defined(__APPLE__)
++#if !defined(__linux__) && !defined(__APPLE__) && !defined(__FreeBSD__) && !defined(__OpenBSD__)
+
+ namespace i18n {
+ namespace phonenumbers {
diff --git a/devel/electron6/files/patch-third__party_libphonenumber_dist_cpp_src_phonenumbers_base_thread__checker.h b/devel/electron6/files/patch-third__party_libphonenumber_dist_cpp_src_phonenumbers_base_thread__checker.h
new file mode 100644
index 000000000000..995c70f8af89
--- /dev/null
+++ b/devel/electron6/files/patch-third__party_libphonenumber_dist_cpp_src_phonenumbers_base_thread__checker.h
@@ -0,0 +1,19 @@
+--- third_party/libphonenumber/dist/cpp/src/phonenumbers/base/thread_checker.h.orig 2019-09-10 10:45:51 UTC
++++ third_party/libphonenumber/dist/cpp/src/phonenumbers/base/thread_checker.h
+@@ -23,6 +23,7 @@
+ // user of the library know that it can't be used in a thread-safe manner when
+ // it is not depending on Boost.
+ #if !defined(__linux__) && !defined(__APPLE__) && \
++ !defined(__FreeBSD__) && !defined(__OpenBSD__) && \
+ !defined(I18N_PHONENUMBERS_NO_THREAD_SAFETY)
+ #error Building without Boost, please provide \
+ -DI18N_PHONENUMBERS_NO_THREAD_SAFETY
+@@ -31,7 +32,7 @@
+ #endif
+
+ #if !defined(NDEBUG) && !defined(I18N_PHONENUMBERS_USE_BOOST) && \
+- (defined(__linux__) || defined(__apple__))
++ (defined(__linux__) || defined(__apple__)) || defined(__FreeBSD__) || defined(__OpenBSD__)
+
+ #include <pthread.h>
+
diff --git a/devel/electron6/files/patch-third__party_libyuv_include_libyuv_row.h b/devel/electron6/files/patch-third__party_libyuv_include_libyuv_row.h
new file mode 100644
index 000000000000..2f844b0a4490
--- /dev/null
+++ b/devel/electron6/files/patch-third__party_libyuv_include_libyuv_row.h
@@ -0,0 +1,37 @@
+--- third_party/libyuv/include/libyuv/row.h.orig 2019-09-10 11:16:18 UTC
++++ third_party/libyuv/include/libyuv/row.h
+@@ -157,10 +157,14 @@ extern "C" {
+ #define HAS_ARGBSHADEROW_SSE2
+ #define HAS_ARGBSUBTRACTROW_SSE2
+ #define HAS_ARGBUNATTENUATEROW_SSE2
++#if !(defined(__i386__) && defined(__GNUC__))
+ #define HAS_BLENDPLANEROW_SSSE3
++#endif
+ #define HAS_COMPUTECUMULATIVESUMROW_SSE2
+ #define HAS_CUMULATIVESUMTOAVERAGEROW_SSE2
++#if !(defined(__i386__) && defined(__GNUC__))
+ #define HAS_INTERPOLATEROW_SSSE3
++#endif
+ #define HAS_RGBCOLORTABLEROW_X86
+ #define HAS_SOBELROW_SSE2
+ #define HAS_SOBELTOPLANEROW_SSE2
+@@ -206,7 +210,9 @@ extern "C" {
+ #define HAS_I422TORGB565ROW_AVX2
+ #define HAS_I422TORGBAROW_AVX2
+ #define HAS_I444TOARGBROW_AVX2
++#if !(defined(__i386__) && defined(__GNUC__))
+ #define HAS_INTERPOLATEROW_AVX2
++#endif
+ #define HAS_J422TOARGBROW_AVX2
+ #define HAS_MERGEUVROW_AVX2
+ #define HAS_MIRRORROW_AVX2
+@@ -231,7 +237,9 @@ extern "C" {
+ #define HAS_ARGBMULTIPLYROW_AVX2
+ #define HAS_ARGBSUBTRACTROW_AVX2
+ #define HAS_ARGBUNATTENUATEROW_AVX2
++#if !(defined(__i386__) && defined(__GNUC__))
+ #define HAS_BLENDPLANEROW_AVX2
++#endif
+
+ #if defined(__x86_64__) || !defined(__pic__) || defined(__clang__) || \
+ defined(_MSC_VER)
diff --git a/devel/electron6/files/patch-third__party_nasm_config_config-linux.h b/devel/electron6/files/patch-third__party_nasm_config_config-linux.h
new file mode 100644
index 000000000000..69a36677e8c1
--- /dev/null
+++ b/devel/electron6/files/patch-third__party_nasm_config_config-linux.h
@@ -0,0 +1,29 @@
+--- third_party/nasm/config/config-linux.h.orig 2019-09-10 10:45:53 UTC
++++ third_party/nasm/config/config-linux.h
+@@ -117,7 +117,7 @@
+ #define HAVE_ACCESS 1
+
+ /* Define to 1 if you have the `canonicalize_file_name' function. */
+-#define HAVE_CANONICALIZE_FILE_NAME 1
++/* #undef HAVE_CANONICALIZE_FILE_NAME */
+
+ /* Define to 1 if you have the `cpu_to_le16' intrinsic function. */
+ /* #undef HAVE_CPU_TO_LE16 */
+@@ -161,7 +161,7 @@
+ #define HAVE_DECL_STRSEP 1
+
+ /* Define to 1 if you have the <endian.h> header file. */
+-#define HAVE_ENDIAN_H 1
++/* #undef HAVE_ENDIAN_H */
+
+ /* Define to 1 if you have the `faccessat' function. */
+ #define HAVE_FACCESSAT 1
+@@ -322,7 +322,7 @@
+ #define HAVE_SYSCONF 1
+
+ /* Define to 1 if you have the <sys/endian.h> header file. */
+-/* #undef HAVE_SYS_ENDIAN_H */
++#define HAVE_SYS_ENDIAN_H 1
+
+ /* Define to 1 if you have the <sys/mman.h> header file. */
+ #define HAVE_SYS_MMAN_H 1
diff --git a/devel/electron6/files/patch-third__party_node_node.py b/devel/electron6/files/patch-third__party_node_node.py
new file mode 100644
index 000000000000..24d2dd419f55
--- /dev/null
+++ b/devel/electron6/files/patch-third__party_node_node.py
@@ -0,0 +1,10 @@
+--- third_party/node/node.py.orig 2019-09-10 10:43:18 UTC
++++ third_party/node/node.py
+@@ -12,6 +12,7 @@ import sys
+ def GetBinaryPath():
+ return os_path.join(os_path.dirname(__file__), *{
+ 'Darwin': ('mac', 'node-darwin-x64', 'bin', 'node'),
++ 'FreeBSD': ('freebsd', 'node-freebsd-x64', 'bin', 'node'),
+ 'Linux': ('linux', 'node-linux-x64', 'bin', 'node'),
+ 'Windows': ('win', 'node.exe'),
+ }[platform.system()])
diff --git a/devel/electron6/files/patch-third__party_pdfium_core_fxcrt_cfx__datetime.cpp b/devel/electron6/files/patch-third__party_pdfium_core_fxcrt_cfx__datetime.cpp
new file mode 100644
index 000000000000..3efcfdd04f15
--- /dev/null
+++ b/devel/electron6/files/patch-third__party_pdfium_core_fxcrt_cfx__datetime.cpp
@@ -0,0 +1,11 @@
+--- third_party/pdfium/core/fxcrt/cfx_datetime.cpp.orig 2019-09-10 10:46:46 UTC
++++ third_party/pdfium/core/fxcrt/cfx_datetime.cpp
+@@ -9,7 +9,7 @@
+ #include "build/build_config.h"
+ #include "core/fxcrt/fx_system.h"
+
+-#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_MACOSX) || \
++#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) || \
+ defined(OS_ASMJS) || defined(__wasm__)
+ #include <sys/time.h>
+ #include <time.h>
diff --git a/devel/electron6/files/patch-third__party_pdfium_core_fxcrt_fx__system.h b/devel/electron6/files/patch-third__party_pdfium_core_fxcrt_fx__system.h
new file mode 100644
index 000000000000..4bed08c294a7
--- /dev/null
+++ b/devel/electron6/files/patch-third__party_pdfium_core_fxcrt_fx__system.h
@@ -0,0 +1,11 @@
+--- third_party/pdfium/core/fxcrt/fx_system.h.orig 2019-09-10 11:17:33 UTC
++++ third_party/pdfium/core/fxcrt/fx_system.h
+@@ -26,7 +26,7 @@
+ #define _FX_PLATFORM_ _FX_PLATFORM_WINDOWS_
+ #elif defined(_WIN64)
+ #define _FX_PLATFORM_ _FX_PLATFORM_WINDOWS_
+-#elif defined(__linux__)
++#elif defined(__linux__) || defined(__FreeBSD__)
+ #define _FX_PLATFORM_ _FX_PLATFORM_LINUX_
+ #elif defined(__APPLE__)
+ #define _FX_PLATFORM_ _FX_PLATFORM_APPLE_
diff --git a/devel/electron6/files/patch-third__party_pdfium_core_fxge_fx__ge__linux.cpp b/devel/electron6/files/patch-third__party_pdfium_core_fxge_fx__ge__linux.cpp
new file mode 100644
index 000000000000..d70a8288ea9a
--- /dev/null
+++ b/devel/electron6/files/patch-third__party_pdfium_core_fxge_fx__ge__linux.cpp
@@ -0,0 +1,14 @@
+--- third_party/pdfium/core/fxge/fx_ge_linux.cpp.orig 2019-09-10 11:17:33 UTC
++++ third_party/pdfium/core/fxge/fx_ge_linux.cpp
+@@ -151,9 +151,8 @@ std::unique_ptr<SystemFontInfoIface> SystemFontInfoIfa
+ const char** pUserPaths) {
+ auto pInfo = pdfium::MakeUnique<CFX_LinuxFontInfo>();
+ if (!pInfo->ParseFontCfg(pUserPaths)) {
+- pInfo->AddPath("/usr/share/fonts");
+- pInfo->AddPath("/usr/share/X11/fonts/Type1");
+- pInfo->AddPath("/usr/share/X11/fonts/TTF");
++ pInfo->AddPath("/usr/local/share/fonts/Type1");
++ pInfo->AddPath("/usr/local/share/fonts/TTF");
+ pInfo->AddPath("/usr/local/share/fonts");
+ }
+ return std::move(pInfo);
diff --git a/devel/electron6/files/patch-third__party_pdfium_fxjs_cjs__publicmethods.cpp b/devel/electron6/files/patch-third__party_pdfium_fxjs_cjs__publicmethods.cpp
new file mode 100644
index 000000000000..414ecc06931a
--- /dev/null
+++ b/devel/electron6/files/patch-third__party_pdfium_fxjs_cjs__publicmethods.cpp
@@ -0,0 +1,106 @@
+--- third_party/pdfium/fxjs/cjs_publicmethods.cpp.orig 2019-09-10 11:17:33 UTC
++++ third_party/pdfium/fxjs/cjs_publicmethods.cpp
+@@ -86,6 +86,103 @@ constexpr const wchar_t* kDateFormats[] = {L"m/d",
+ constexpr const wchar_t* kTimeFormats[] = {L"HH:MM", L"h:MM tt", L"HH:MM:ss",
+ L"h:MM:ss tt"};
+
++#if defined(__FreeBSD__)
++/*
++ * cvt.c - IEEE floating point formatting routines for FreeBSD
++ * from GNU libc-4.6.27
++ */
++
++/*
++ * ap_ecvt converts to decimal
++ * the number of digits is specified by ndigit
++ * decpt is set to the position of the decimal point
++ * sign is set to 0 for positive, 1 for negative
++ */
++
++#define NDIG 80
++
++static char *
++ ap_cvt(double arg, int ndigits, int *decpt, int *sign, int eflag)
++{
++ register int r2;
++ double fi, fj;
++ register char *p, *p1;
++ static char buf[NDIG];
++
++ if (ndigits >= NDIG - 1)
++ ndigits = NDIG - 2;
++ r2 = 0;
++ *sign = 0;
++ p = &buf[0];
++ if (arg < 0) {
++ *sign = 1;
++ arg = -arg;
++ }
++ arg = modf(arg, &fi);
++ p1 = &buf[NDIG];
++ /*
++ * Do integer part
++ */
++ if (fi != 0) {
++ p1 = &buf[NDIG];
++ while (fi != 0) {
++ fj = modf(fi / 10, &fi);
++ *--p1 = (int) ((fj + .03) * 10) + '0';
++ r2++;
++ }
++ while (p1 < &buf[NDIG])
++ *p++ = *p1++;
++ }
++ else if (arg > 0) {
++ while ((fj = arg * 10) < 1) {
++ arg = fj;
++ r2--;
++ }
++ }
++ p1 = &buf[ndigits];
++ if (eflag == 0)
++ p1 += r2;
++ *decpt = r2;
++ if (p1 < &buf[0]) {
++ buf[0] = '\0';
++ return (buf);
++ }
++ while (p <= p1 && p < &buf[NDIG]) {
++ arg *= 10;
++ arg = modf(arg, &fj);
++ *p++ = (int) fj + '0';
++ }
++ if (p1 >= &buf[NDIG]) {
++ buf[NDIG - 1] = '\0';
++ return (buf);
++ }
++ p = p1;
++ *p1 += 5;
++ while (*p1 > '9') {
++ *p1 = '0';
++ if (p1 > buf)
++ ++ * --p1;
++ else {
++ *p1 = '1';
++ (*decpt)++;
++ if (eflag == 0) {
++ if (p > buf)
++ *p = '0';
++ p++;
++ }
++ }
++ }
++ *p = '\0';
++ return (buf);
++}
++
++static char *
++ fcvt(double arg, int ndigits, int *decpt, int *sign)
++{
++ return (ap_cvt(arg, ndigits, decpt, sign, 0));
++}
++#endif // defined(__FreeBSD__)
++
+ template <typename T>
+ T StrTrim(const T& str) {
+ T result = str;
diff --git a/devel/electron6/files/patch-third__party_pdfium_fxjs_fx__date__helpers.cpp b/devel/electron6/files/patch-third__party_pdfium_fxjs_fx__date__helpers.cpp
new file mode 100644
index 000000000000..21340f38054f
--- /dev/null
+++ b/devel/electron6/files/patch-third__party_pdfium_fxjs_fx__date__helpers.cpp
@@ -0,0 +1,22 @@
+--- third_party/pdfium/fxjs/fx_date_helpers.cpp.orig 2019-09-10 11:17:33 UTC
++++ third_party/pdfium/fxjs/fx_date_helpers.cpp
+@@ -35,6 +35,11 @@ double GetLocalTZA() {
+ return 0;
+ time_t t = 0;
+ FXSYS_time(&t);
++#ifdef __FreeBSD__
++ struct tm lt;
++ localtime_r(&t, &lt);
++ return (double)(-(lt.tm_gmtoff * 1000));
++#else
+ FXSYS_localtime(&t);
+ #if defined(OS_WIN)
+ // In gcc 'timezone' is a global variable declared in time.h. In VC++, that
+@@ -43,6 +48,7 @@ double GetLocalTZA() {
+ _get_timezone(&timezone);
+ #endif
+ return (double)(-(timezone * 1000));
++#endif // __FreeBSD__
+ }
+
+ int GetDaylightSavingTA(double d) {
diff --git a/devel/electron6/files/patch-third__party_pdfium_third__party_base_allocator_partition__allocator_page__allocator.cc b/devel/electron6/files/patch-third__party_pdfium_third__party_base_allocator_partition__allocator_page__allocator.cc
new file mode 100644
index 000000000000..d027e112f5ac
--- /dev/null
+++ b/devel/electron6/files/patch-third__party_pdfium_third__party_base_allocator_partition__allocator_page__allocator.cc
@@ -0,0 +1,11 @@
+--- third_party/pdfium/third_party/base/allocator/partition_allocator/page_allocator.cc.orig 2019-09-10 10:46:46 UTC
++++ third_party/pdfium/third_party/base/allocator/partition_allocator/page_allocator.cc
+@@ -117,7 +117,7 @@ void* AllocPages(void* address,
+ uintptr_t align_base_mask = ~align_offset_mask;
+ DCHECK(!(reinterpret_cast<uintptr_t>(address) & align_offset_mask));
+
+-#if defined(OS_LINUX) && defined(ARCH_CPU_64_BITS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && defined(ARCH_CPU_64_BITS)
+ // On 64 bit Linux, we may need to adjust the address space limit for
+ // guarded allocations.
+ if (length >= kMinimumGuardedMemorySize) {
diff --git a/devel/electron6/files/patch-third__party_pdfium_third__party_base_allocator_partition__allocator_page__allocator__internals__posix.h b/devel/electron6/files/patch-third__party_pdfium_third__party_base_allocator_partition__allocator_page__allocator__internals__posix.h
new file mode 100644
index 000000000000..97167ee1a80b
--- /dev/null
+++ b/devel/electron6/files/patch-third__party_pdfium_third__party_base_allocator_partition__allocator_page__allocator__internals__posix.h
@@ -0,0 +1,38 @@
+--- third_party/pdfium/third_party/base/allocator/partition_allocator/page_allocator_internals_posix.h.orig 2019-09-10 10:46:46 UTC
++++ third_party/pdfium/third_party/base/allocator/partition_allocator/page_allocator_internals_posix.h
+@@ -13,7 +13,7 @@
+ #if defined(OS_MACOSX)
+ #include <mach/mach.h>
+ #endif
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include <sys/resource.h>
+
+ #include <algorithm>
+@@ -48,7 +48,7 @@ int GetAccessFlags(PageAccessibilityConfiguration acce
+ }
+ }
+
+-#if defined(OS_LINUX) && defined(ARCH_CPU_64_BITS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && defined(ARCH_CPU_64_BITS)
+
+ // Multiple guarded memory regions may exceed the process address space limit.
+ // This function will raise or lower the limit by |amount|.
+@@ -68,7 +68,7 @@ bool AdjustAddressSpaceLimit(int64_t amount) {
+ // schemes that reduce that to 4 GiB.
+ constexpr size_t kMinimumGuardedMemorySize = 1ULL << 32; // 4 GiB
+
+-#endif // defined(OS_LINUX) && defined(ARCH_CPU_64_BITS)
++#endif // (defined(OS_LINUX) || defined(OS_BSD)) && defined(ARCH_CPU_64_BITS)
+
+ void* SystemAllocPagesInternal(void* hint,
+ size_t length,
+@@ -134,7 +134,7 @@ void SetSystemPagesAccessInternal(
+ void FreePagesInternal(void* address, size_t length) {
+ CHECK(!munmap(address, length));
+
+-#if defined(OS_LINUX) && defined(ARCH_CPU_64_BITS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && defined(ARCH_CPU_64_BITS)
+ // Restore the address space limit.
+ if (length >= kMinimumGuardedMemorySize) {
+ CHECK(AdjustAddressSpaceLimit(-base::checked_cast<int64_t>(length)));
diff --git a/devel/electron6/files/patch-third__party_pdfium_xfa_fgas_font_cfx__fontsourceenum__file.cpp b/devel/electron6/files/patch-third__party_pdfium_xfa_fgas_font_cfx__fontsourceenum__file.cpp
new file mode 100644
index 000000000000..7a2b2e050aa2
--- /dev/null
+++ b/devel/electron6/files/patch-third__party_pdfium_xfa_fgas_font_cfx__fontsourceenum__file.cpp
@@ -0,0 +1,14 @@
+--- third_party/pdfium/xfa/fgas/font/cfx_fontsourceenum_file.cpp.orig 2019-09-10 10:46:46 UTC
++++ third_party/pdfium/xfa/fgas/font/cfx_fontsourceenum_file.cpp
+@@ -16,9 +16,8 @@ constexpr char kFolderSeparator = '/';
+
+ constexpr const char* kFontFolders[] = {
+ #if _FX_PLATFORM_ == _FX_PLATFORM_LINUX_
+- "/usr/share/fonts",
+- "/usr/share/X11/fonts/Type1",
+- "/usr/share/X11/fonts/TTF",
++ "/usr/local/share/fonts/Type1",
++ "/usr/local/share/fonts/TTF",
+ "/usr/local/share/fonts",
+ #elif defined(OS_MACOSX)
+ "~/Library/Fonts",
diff --git a/devel/electron6/files/patch-third__party_pdfium_xfa_fwl_cfwl__notedriver.cpp b/devel/electron6/files/patch-third__party_pdfium_xfa_fwl_cfwl__notedriver.cpp
new file mode 100644
index 000000000000..e5bf3baf6e6e
--- /dev/null
+++ b/devel/electron6/files/patch-third__party_pdfium_xfa_fwl_cfwl__notedriver.cpp
@@ -0,0 +1,19 @@
+--- third_party/pdfium/xfa/fwl/cfwl_notedriver.cpp.orig 2019-09-10 11:17:34 UTC
++++ third_party/pdfium/xfa/fwl/cfwl_notedriver.cpp
+@@ -83,14 +83,14 @@ bool CFWL_NoteDriver::SetFocus(CFWL_Widget* pFocus) {
+ }
+
+ void CFWL_NoteDriver::Run() {
+-#if defined(OS_LINUX) || defined(OS_WIN)
++#if defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD)
+ for (;;) {
+ CFWL_NoteLoop* pTopLoop = GetTopLoop();
+ if (!pTopLoop || !pTopLoop->ContinueModal())
+ break;
+ UnqueueMessageAndProcess(pTopLoop);
+ }
+-#endif // defined(OS_LINUX) || defined(OS_WIN)
++#endif // defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD)
+ }
+
+ void CFWL_NoteDriver::NotifyTargetHide(CFWL_Widget* pNoteTarget) {
diff --git a/devel/electron6/files/patch-third__party_perfetto_include_perfetto_base_build__config.h b/devel/electron6/files/patch-third__party_perfetto_include_perfetto_base_build__config.h
new file mode 100644
index 000000000000..6332e89c7526
--- /dev/null
+++ b/devel/electron6/files/patch-third__party_perfetto_include_perfetto_base_build__config.h
@@ -0,0 +1,51 @@
+--- third_party/perfetto/include/perfetto/base/build_config.h.orig 2019-09-10 11:16:55 UTC
++++ third_party/perfetto/include/perfetto/base/build_config.h
+@@ -28,6 +28,7 @@
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_ANDROID() 1
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_MACOSX() 0
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_LINUX() 0
++#define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_FREEBSD() 0
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_WIN() 0
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_WASM() 0
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_FUCHSIA() 0
+@@ -35,13 +36,15 @@
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_ANDROID() 0
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_MACOSX() 1
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_LINUX() 0
++#define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_FREEBSD() 0
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_WIN() 0
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_WASM() 0
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_FUCHSIA() 0
+-#elif defined(__linux__)
++#elif defined(__linux__) || defined(__FreeBSD__)
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_ANDROID() 0
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_MACOSX() 0
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_LINUX() 1
++#define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_FREEBSD() 1
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_WIN() 0
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_WASM() 0
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_FUCHSIA() 0
+@@ -49,6 +52,7 @@
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_ANDROID() 0
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_MACOSX() 0
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_LINUX() 0
++#define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_FREEBSD() 0
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_WIN() 1
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_WASM() 0
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_FUCHSIA() 0
+@@ -56,6 +60,7 @@
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_ANDROID() 0
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_MACOSX() 0
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_LINUX() 0
++#define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_FREEBSD() 0
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_WIN() 0
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_WASM() 1
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_FUCHSIA() 0
+@@ -63,6 +68,7 @@
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_ANDROID() 0
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_MACOSX() 0
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_LINUX() 0
++#define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_FREEBSD() 0
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_WIN() 0
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_WASM() 0
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_FUCHSIA() 1
diff --git a/devel/electron6/files/patch-third__party_perfetto_include_perfetto_base_event.h b/devel/electron6/files/patch-third__party_perfetto_include_perfetto_base_event.h
new file mode 100644
index 000000000000..d605c136af25
--- /dev/null
+++ b/devel/electron6/files/patch-third__party_perfetto_include_perfetto_base_event.h
@@ -0,0 +1,14 @@
+--- third_party/perfetto/include/perfetto/base/event.h.orig 2019-09-10 11:16:55 UTC
++++ third_party/perfetto/include/perfetto/base/event.h
+@@ -20,8 +20,9 @@
+ #include "perfetto/base/build_config.h"
+ #include "perfetto/base/scoped_file.h"
+
+-#if PERFETTO_BUILDFLAG(PERFETTO_OS_LINUX) || \
+- PERFETTO_BUILDFLAG(PERFETTO_OS_ANDROID)
++#if (PERFETTO_BUILDFLAG(PERFETTO_OS_LINUX) || \
++ PERFETTO_BUILDFLAG(PERFETTO_OS_ANDROID)) && \
++ !PERFETTO_BUILDFLAG(PERFETTO_OS_FREEBSD)
+ #define PERFETTO_USE_EVENTFD() 1
+ #else
+ #define PERFETTO_USE_EVENTFD() 0
diff --git a/devel/electron6/files/patch-third__party_perfetto_include_perfetto_base_thread__utils.h b/devel/electron6/files/patch-third__party_perfetto_include_perfetto_base_thread__utils.h
new file mode 100644
index 000000000000..1bb9b855d31a
--- /dev/null
+++ b/devel/electron6/files/patch-third__party_perfetto_include_perfetto_base_thread__utils.h
@@ -0,0 +1,25 @@
+--- third_party/perfetto/include/perfetto/base/thread_utils.h.orig 2019-09-10 11:16:55 UTC
++++ third_party/perfetto/include/perfetto/base/thread_utils.h
+@@ -33,6 +33,10 @@
+ #include <unistd.h>
+ #endif
+
++#if PERFETTO_BUILDFLAG(PERFETTO_OS_FREEBSD)
++#include <pthread_np.h>
++#endif
++
+ namespace perfetto {
+ namespace base {
+
+@@ -40,6 +44,11 @@ namespace base {
+ using PlatformThreadID = pid_t;
+ inline PlatformThreadID GetThreadId() {
+ return gettid();
++}
++#elif PERFETTO_BUILDFLAG(PERFETTO_OS_FREEBSD)
++ using PlatformThreadID = int;
++inline PlatformThreadID GetThreadId() {
++ return pthread_getthreadid_np();
+ }
+ #elif PERFETTO_BUILDFLAG(PERFETTO_OS_LINUX)
+ using PlatformThreadID = pid_t;
diff --git a/devel/electron6/files/patch-third__party_perfetto_include_perfetto_base_time.h b/devel/electron6/files/patch-third__party_perfetto_include_perfetto_base_time.h
new file mode 100644
index 000000000000..793a710e015b
--- /dev/null
+++ b/devel/electron6/files/patch-third__party_perfetto_include_perfetto_base_time.h
@@ -0,0 +1,20 @@
+--- third_party/perfetto/include/perfetto/base/time.h.orig 2019-09-10 10:46:24 UTC
++++ third_party/perfetto/include/perfetto/base/time.h
+@@ -123,6 +123,9 @@ inline TimeNanos GetTimeInternalNs(clockid_t clk_id) {
+ // Return ns from boot. Conversely to GetWallTimeNs, this clock counts also time
+ // during suspend (when supported).
+ inline TimeNanos GetBootTimeNs() {
++#if PERFETTO_BUILDFLAG(PERFETTO_OS_FREEBSD)
++ return GetTimeInternalNs(kWallTimeClockSource);
++#else
+ // Determine if CLOCK_BOOTTIME is available on the first call.
+ static const clockid_t kBootTimeClockSource = [] {
+ struct timespec ts = {};
+@@ -130,6 +133,7 @@ inline TimeNanos GetBootTimeNs() {
+ return res == 0 ? CLOCK_BOOTTIME : kWallTimeClockSource;
+ }();
+ return GetTimeInternalNs(kBootTimeClockSource);
++#endif
+ }
+
+ inline TimeNanos GetWallTimeNs() {
diff --git a/devel/electron6/files/patch-third__party_perfetto_include_perfetto_base_watchdog__posix.h b/devel/electron6/files/patch-third__party_perfetto_include_perfetto_base_watchdog__posix.h
new file mode 100644
index 000000000000..69e855c968ee
--- /dev/null
+++ b/devel/electron6/files/patch-third__party_perfetto_include_perfetto_base_watchdog__posix.h
@@ -0,0 +1,11 @@
+--- third_party/perfetto/include/perfetto/base/watchdog_posix.h.orig 2019-09-10 11:16:55 UTC
++++ third_party/perfetto/include/perfetto/base/watchdog_posix.h
+@@ -46,7 +46,7 @@ class Watchdog {
+ Timer(const Timer&) = delete;
+ Timer& operator=(const Timer&) = delete;
+
+- timer_t timerid_ = nullptr;
++ timer_t timerid_ = 0;
+ };
+ virtual ~Watchdog();
+
diff --git a/devel/electron6/files/patch-third__party_perfetto_src_base_unix__socket.cc b/devel/electron6/files/patch-third__party_perfetto_src_base_unix__socket.cc
new file mode 100644
index 000000000000..171ad9721f72
--- /dev/null
+++ b/devel/electron6/files/patch-third__party_perfetto_src_base_unix__socket.cc
@@ -0,0 +1,12 @@
+--- third_party/perfetto/src/base/unix_socket.cc.orig 2019-09-10 11:16:55 UTC
++++ third_party/perfetto/src/base/unix_socket.cc
+@@ -523,7 +523,8 @@ void UnixSocket::DoConnect(const std::string& socket_n
+
+ void UnixSocket::ReadPeerCredentials() {
+ #if PERFETTO_BUILDFLAG(PERFETTO_OS_LINUX) || \
+- PERFETTO_BUILDFLAG(PERFETTO_OS_ANDROID)
++ PERFETTO_BUILDFLAG(PERFETTO_OS_ANDROID) || \
++ PERFETTO_BUILDFLAG(PERFETTO_OS_FREEBSD)
+ struct ucred user_cred;
+ socklen_t len = sizeof(user_cred);
+ int fd = sock_raw_.fd();
diff --git a/devel/electron6/files/patch-third__party_perfetto_src_tracing_core_tracing__service__impl.cc b/devel/electron6/files/patch-third__party_perfetto_src_tracing_core_tracing__service__impl.cc
new file mode 100644
index 000000000000..25c0f46829ac
--- /dev/null
+++ b/devel/electron6/files/patch-third__party_perfetto_src_tracing_core_tracing__service__impl.cc
@@ -0,0 +1,22 @@
+--- third_party/perfetto/src/tracing/core/tracing_service_impl.cc.orig 2019-09-10 11:16:55 UTC
++++ third_party/perfetto/src/tracing/core/tracing_service_impl.cc
+@@ -2053,7 +2053,8 @@ void TracingServiceImpl::OnStartTriggersTimeout(Tracin
+
+ void TracingServiceImpl::UpdateMemoryGuardrail() {
+ #if !PERFETTO_BUILDFLAG(PERFETTO_EMBEDDER_BUILD) && \
+- !PERFETTO_BUILDFLAG(PERFETTO_OS_MACOSX)
++ !PERFETTO_BUILDFLAG(PERFETTO_OS_MACOSX) && \
++ !PERFETTO_BUILDFLAG(PERFETTO_OS_FREEBSD)
+ uint64_t total_buffer_bytes = 0;
+
+ // Sum up all the shared memory buffers.
+@@ -2106,7 +2107,8 @@ void TracingServiceImpl::SnapshotClocks(std::vector<Tr
+ protos::ClockSnapshot* clock_snapshot = packet.mutable_clock_snapshot();
+
+ #if !PERFETTO_BUILDFLAG(PERFETTO_OS_MACOSX) && \
+- !PERFETTO_BUILDFLAG(PERFETTO_OS_WIN)
++ !PERFETTO_BUILDFLAG(PERFETTO_OS_WIN) && \
++ !PERFETTO_BUILDFLAG(PERFETTO_OS_FREEBSD)
+ struct {
+ clockid_t id;
+ protos::ClockSnapshot::Clock::Type type;
diff --git a/devel/electron6/files/patch-third__party_perfetto_src_tracing_core_virtual__destructors.cc b/devel/electron6/files/patch-third__party_perfetto_src_tracing_core_virtual__destructors.cc
new file mode 100644
index 000000000000..1285cc6324b9
--- /dev/null
+++ b/devel/electron6/files/patch-third__party_perfetto_src_tracing_core_virtual__destructors.cc
@@ -0,0 +1,28 @@
+Backport of:
+
+From 46f0abc66c1d78c60a0415c5cb46852ef3bfa9bb Mon Sep 17 00:00:00 2001
+From: Nico Weber <thakis@chromium.org>
+Date: Sat, 8 Feb 2020 21:26:53 -0500
+Subject: [PATCH] Fix compile error emitted by trunk clang
+
+../../third_party/perfetto/src/tracing/core/virtual_destructors.cc:33:35:
+error: destructor cannot be declared using a type alias
+ 'perfetto::TracingService::ConsumerEndpoint' (aka
+ 'perfetto::ConsumerEndpoint') of the class name
+TracingService::ConsumerEndpoint::~ConsumerEndpoint() = default;
+
+Bug: chromium:1050372
+
+--- third_party/perfetto/src/tracing/core/virtual_destructors.cc.orig 2020-08-24 19:11:33 UTC
++++ third_party/perfetto/src/tracing/core/virtual_destructors.cc
+@@ -30,8 +30,8 @@ namespace perfetto {
+ Consumer::~Consumer() = default;
+ Producer::~Producer() = default;
+ TracingService::~TracingService() = default;
+-TracingService::ConsumerEndpoint::~ConsumerEndpoint() = default;
+-TracingService::ProducerEndpoint::~ProducerEndpoint() = default;
++ConsumerEndpoint::~ConsumerEndpoint() = default;
++ProducerEndpoint::~ProducerEndpoint() = default;
+ SharedMemory::~SharedMemory() = default;
+ SharedMemory::Factory::~Factory() = default;
+ SharedMemoryArbiter::~SharedMemoryArbiter() = default;
diff --git a/devel/electron6/files/patch-third__party_protobuf_src_google_protobuf_stubs_platform__macros.h b/devel/electron6/files/patch-third__party_protobuf_src_google_protobuf_stubs_platform__macros.h
new file mode 100644
index 000000000000..285f9d939895
--- /dev/null
+++ b/devel/electron6/files/patch-third__party_protobuf_src_google_protobuf_stubs_platform__macros.h
@@ -0,0 +1,11 @@
+--- third_party/protobuf/src/google/protobuf/stubs/platform_macros.h.orig 2019-09-10 11:14:34 UTC
++++ third_party/protobuf/src/google/protobuf/stubs/platform_macros.h
+@@ -117,7 +117,7 @@ GOOGLE_PROTOBUF_PLATFORM_ERROR
+
+ #undef GOOGLE_PROTOBUF_PLATFORM_ERROR
+
+-#if defined(GOOGLE_PROTOBUF_OS_ANDROID) || defined(GOOGLE_PROTOBUF_OS_IPHONE) || defined(__OpenBSD__)
++#if defined(GOOGLE_PROTOBUF_OS_ANDROID) || defined(GOOGLE_PROTOBUF_OS_IPHONE) || defined(__FreeBSD__)
+ // Android ndk does not support the __thread keyword very well yet. Here
+ // we use pthread_key_create()/pthread_getspecific()/... methods for
+ // TLS support on android.
diff --git a/devel/electron6/files/patch-third__party_sfntly_src_cpp_src_sfntly_table_core_cmap__table.cc b/devel/electron6/files/patch-third__party_sfntly_src_cpp_src_sfntly_table_core_cmap__table.cc
new file mode 100644
index 000000000000..1ce88c7c1b5b
--- /dev/null
+++ b/devel/electron6/files/patch-third__party_sfntly_src_cpp_src_sfntly_table_core_cmap__table.cc
@@ -0,0 +1,47 @@
+--- third_party/sfntly/src/cpp/src/sfntly/table/core/cmap_table.cc.orig 2019-09-10 10:46:36 UTC
++++ third_party/sfntly/src/cpp/src/sfntly/table/core/cmap_table.cc
+@@ -439,7 +439,7 @@ CMapTable::CMapFormat0::Builder::Builder(
+ }
+
+ CMapTable::CMapFormat0::Builder::Builder(const CMapId& cmap_id)
+- : CMap::Builder(reinterpret_cast<ReadableFontData*>(NULL),
++ : CMap::Builder(static_cast<ReadableFontData*>(NULL),
+ CMapFormat::kFormat0,
+ cmap_id) {
+ }
+@@ -563,7 +563,7 @@ CMapTable::CMapFormat2::Builder::Builder(WritableFontD
+ : CMapTable::CMap::Builder(data ? down_cast<WritableFontData*>(
+ data->Slice(offset, data->ReadUShort(
+ offset + Offset::kFormat0Length)))
+- : reinterpret_cast<WritableFontData*>(NULL),
++ : static_cast<WritableFontData*>(NULL),
+ CMapFormat::kFormat2, cmap_id) {
+ // TODO(arthurhsu): FIXIT: heavy lifting and leak, need fix.
+ }
+@@ -574,7 +574,7 @@ CMapTable::CMapFormat2::Builder::Builder(ReadableFontD
+ : CMapTable::CMap::Builder(data ? down_cast<ReadableFontData*>(
+ data->Slice(offset, data->ReadUShort(
+ offset + Offset::kFormat0Length)))
+- : reinterpret_cast<ReadableFontData*>(NULL),
++ : static_cast<ReadableFontData*>(NULL),
+ CMapFormat::kFormat2, cmap_id) {
+ // TODO(arthurhsu): FIXIT: heavy lifting and leak, need fix.
+ }
+@@ -958,7 +958,7 @@ CMapTable::CMapFormat4::Builder::Builder(WritableFontD
+ CMapTable::CMapFormat4::Builder::Builder(SegmentList* segments,
+ std::vector<int32_t>* glyph_id_array,
+ const CMapId& cmap_id)
+- : CMap::Builder(reinterpret_cast<ReadableFontData*>(NULL),
++ : CMap::Builder(static_cast<ReadableFontData*>(NULL),
+ CMapFormat::kFormat4, cmap_id),
+ segments_(segments->begin(), segments->end()),
+ glyph_id_array_(glyph_id_array->begin(), glyph_id_array->end()) {
+@@ -966,7 +966,7 @@ CMapTable::CMapFormat4::Builder::Builder(SegmentList*
+ }
+
+ CMapTable::CMapFormat4::Builder::Builder(const CMapId& cmap_id)
+- : CMap::Builder(reinterpret_cast<ReadableFontData*>(NULL),
++ : CMap::Builder(static_cast<ReadableFontData*>(NULL),
+ CMapFormat::kFormat4, cmap_id) {
+ }
+
diff --git a/devel/electron6/files/patch-third__party_skia_src_core_SkCpu.cpp b/devel/electron6/files/patch-third__party_skia_src_core_SkCpu.cpp
new file mode 100644
index 000000000000..4fa4944c79d1
--- /dev/null
+++ b/devel/electron6/files/patch-third__party_skia_src_core_SkCpu.cpp
@@ -0,0 +1,19 @@
+--- third_party/skia/src/core/SkCpu.cpp.orig 2019-09-10 10:48:48 UTC
++++ third_party/skia/src/core/SkCpu.cpp
+@@ -76,6 +76,8 @@
+ #include <sys/auxv.h>
+
+ static uint32_t read_cpu_features() {
++return 0;
++#if 0
+ const uint32_t kHWCAP_CRC32 = (1<< 7),
+ kHWCAP_ASIMDHP = (1<<10);
+
+@@ -112,6 +114,7 @@
+ }
+ }
+ return features;
++#endif
+ }
+
+ #elif defined(SK_CPU_ARM32) && __has_include(<sys/auxv.h>) && \
diff --git a/devel/electron6/files/patch-third__party_skia_src_gpu_GrAutoLocaleSetter.h b/devel/electron6/files/patch-third__party_skia_src_gpu_GrAutoLocaleSetter.h
new file mode 100644
index 000000000000..59a502093d13
--- /dev/null
+++ b/devel/electron6/files/patch-third__party_skia_src_gpu_GrAutoLocaleSetter.h
@@ -0,0 +1,11 @@
+--- third_party/skia/src/gpu/GrAutoLocaleSetter.h.orig 2019-09-10 10:48:48 UTC
++++ third_party/skia/src/gpu/GrAutoLocaleSetter.h
+@@ -27,7 +27,7 @@
+ #define HAVE_XLOCALE 0
+ #endif
+
+-#if defined(SK_BUILD_FOR_ANDROID) || defined(__UCLIBC__) || defined(_NEWLIB_VERSION)
++#if defined(SK_BUILD_FOR_ANDROID) || defined(__UCLIBC__) || defined(_NEWLIB_VERSION) || defined(__FreeBSD__)
+ #define HAVE_LOCALE_T 0
+ #else
+ #define HAVE_LOCALE_T 1
diff --git a/devel/electron6/files/patch-third__party_skia_src_images_SkJpegEncoder.cpp b/devel/electron6/files/patch-third__party_skia_src_images_SkJpegEncoder.cpp
new file mode 100644
index 000000000000..553adfb3d8df
--- /dev/null
+++ b/devel/electron6/files/patch-third__party_skia_src_images_SkJpegEncoder.cpp
@@ -0,0 +1,41 @@
+--- third_party/skia/src/images/SkJpegEncoder.cpp.orig 2019-09-10 11:16:50 UTC
++++ third_party/skia/src/images/SkJpegEncoder.cpp
+@@ -75,9 +75,14 @@ bool SkJpegEncoderMgr::setParams(const SkImageInfo& sr
+ return (transform_scanline_proc) nullptr;
+ };
+
++#ifdef JCS_EXTENSIONS
+ J_COLOR_SPACE jpegColorType = JCS_EXT_RGBA;
++#else
++ J_COLOR_SPACE jpegColorType = JCS_RGB;
++#endif
+ int numComponents = 0;
+ switch (srcInfo.colorType()) {
++#ifdef JCS_EXTENSIONS
+ case kRGBA_8888_SkColorType:
+ fProc = chooseProc8888();
+ jpegColorType = JCS_EXT_RGBA;
+@@ -88,6 +93,7 @@ bool SkJpegEncoderMgr::setParams(const SkImageInfo& sr
+ jpegColorType = JCS_EXT_BGRA;
+ numComponents = 4;
+ break;
++#endif
+ case kRGB_565_SkColorType:
+ fProc = transform_scanline_565;
+ jpegColorType = JCS_RGB;
+@@ -107,6 +113,7 @@ bool SkJpegEncoderMgr::setParams(const SkImageInfo& sr
+ jpegColorType = JCS_GRAYSCALE;
+ numComponents = 1;
+ break;
++#ifdef JCS_EXTENSIONS
+ case kRGBA_F16_SkColorType:
+ if (kUnpremul_SkAlphaType == srcInfo.alphaType() &&
+ options.fAlphaOption == SkJpegEncoder::AlphaOption::kBlendOnBlack) {
+@@ -117,6 +124,7 @@ bool SkJpegEncoderMgr::setParams(const SkImageInfo& sr
+ jpegColorType = JCS_EXT_RGBA;
+ numComponents = 4;
+ break;
++#endif
+ default:
+ return false;
+ }
diff --git a/devel/electron6/files/patch-third__party_skia_src_opts_SkRasterPipeline__opts.h b/devel/electron6/files/patch-third__party_skia_src_opts_SkRasterPipeline__opts.h
new file mode 100644
index 000000000000..3d13d8e3ba98
--- /dev/null
+++ b/devel/electron6/files/patch-third__party_skia_src_opts_SkRasterPipeline__opts.h
@@ -0,0 +1,20 @@
+--- third_party/skia/src/opts/SkRasterPipeline_opts.h.orig 2019-09-10 11:16:50 UTC
++++ third_party/skia/src/opts/SkRasterPipeline_opts.h
+@@ -729,7 +729,7 @@ SI F approx_powf(F x, F y) {
+ }
+
+ SI F from_half(U16 h) {
+-#if defined(SK_CPU_ARM64) && !defined(SK_BUILD_FOR_GOOGLE3) // Temporary workaround for some Google3 builds.
++#if defined(JUMPER_IS_NEON) && defined(SK_CPU_ARM64) && !defined(SK_BUILD_FOR_GOOGLE3) // Temporary workaround for some Google3 builds.
+ return vcvt_f32_f16(h);
+
+ #elif defined(JUMPER_IS_HSW) || defined(JUMPER_IS_AVX512)
+@@ -749,7 +749,7 @@ SI F from_half(U16 h) {
+ }
+
+ SI U16 to_half(F f) {
+-#if defined(SK_CPU_ARM64) && !defined(SK_BUILD_FOR_GOOGLE3) // Temporary workaround for some Google3 builds.
++#if defined(JUMPER_IS_NEON) && defined(SK_CPU_ARM64) && !defined(SK_BUILD_FOR_GOOGLE3) // Temporary workaround for some Google3 builds.
+ return vcvt_f16_f32(f);
+
+ #elif defined(JUMPER_IS_HSW) || defined(JUMPER_IS_AVX512)
diff --git a/devel/electron6/files/patch-third__party_skia_src_ports_SkOSFile__stdio.cpp b/devel/electron6/files/patch-third__party_skia_src_ports_SkOSFile__stdio.cpp
new file mode 100644
index 000000000000..bc32a5299a44
--- /dev/null
+++ b/devel/electron6/files/patch-third__party_skia_src_ports_SkOSFile__stdio.cpp
@@ -0,0 +1,11 @@
+--- third_party/skia/src/ports/SkOSFile_stdio.cpp.orig 2019-09-10 10:48:48 UTC
++++ third_party/skia/src/ports/SkOSFile_stdio.cpp
+@@ -129,7 +129,7 @@ void sk_fflush(FILE* f) {
+
+ void sk_fsync(FILE* f) {
+ #if !defined(_WIN32) && !defined(SK_BUILD_FOR_ANDROID) && !defined(__UCLIBC__) \
+- && !defined(_NEWLIB_VERSION)
++ && !defined(_NEWLIB_VERSION) && !defined(__FreeBSD__)
+ int fd = fileno(f);
+ fsync(fd);
+ #endif
diff --git a/devel/electron6/files/patch-third__party_skia_src_sksl_SkSLString.h b/devel/electron6/files/patch-third__party_skia_src_sksl_SkSLString.h
new file mode 100644
index 000000000000..e8ebbfcad8ab
--- /dev/null
+++ b/devel/electron6/files/patch-third__party_skia_src_sksl_SkSLString.h
@@ -0,0 +1,11 @@
+--- third_party/skia/src/sksl/SkSLString.h.orig 2019-09-10 11:16:50 UTC
++++ third_party/skia/src/sksl/SkSLString.h
+@@ -22,6 +22,8 @@
+ #include "include/core/SkString.h"
+ #endif
+
++#include <stdarg.h>
++
+ namespace SkSL {
+
+ // Represents a (not necessarily null-terminated) slice of a string.
diff --git a/devel/electron6/files/patch-third__party_skia_third__party_vulkanmemoryallocator_include_vk__mem__alloc.h b/devel/electron6/files/patch-third__party_skia_third__party_vulkanmemoryallocator_include_vk__mem__alloc.h
new file mode 100644
index 000000000000..a4a39af71ac7
--- /dev/null
+++ b/devel/electron6/files/patch-third__party_skia_third__party_vulkanmemoryallocator_include_vk__mem__alloc.h
@@ -0,0 +1,11 @@
+--- third_party/skia/third_party/vulkanmemoryallocator/include/vk_mem_alloc.h.orig 2019-09-16 09:24:24 UTC
++++ third_party/skia/third_party/vulkanmemoryallocator/include/vk_mem_alloc.h
+@@ -2232,7 +2232,7 @@ remove them if not needed.
+ #include <mutex> // for std::mutex
+ #include <atomic> // for std::atomic
+
+-#if !defined(_WIN32) && !defined(__APPLE__)
++#if !defined(_WIN32) && !defined(__APPLE__) && !defined(__FreeBSD__)
+ #include <malloc.h> // for aligned_alloc()
+ #endif
+
diff --git a/devel/electron6/files/patch-third__party_snappy_src_snappy.h b/devel/electron6/files/patch-third__party_snappy_src_snappy.h
new file mode 100644
index 000000000000..9882e6de01a6
--- /dev/null
+++ b/devel/electron6/files/patch-third__party_snappy_src_snappy.h
@@ -0,0 +1,20 @@
+--- third_party/snappy/src/snappy.h.orig 2019-09-10 10:46:35 UTC
++++ third_party/snappy/src/snappy.h
+@@ -73,7 +73,7 @@ namespace snappy {
+ // Original contents of *output are lost.
+ //
+ // REQUIRES: "input[]" is not an alias of "*output".
+- size_t Compress(const char* input, size_t input_length, string* output);
++ size_t Compress(const char* input, size_t input_length, std::string* output);
+
+ // Decompresses "compressed[0,compressed_length-1]" to "*uncompressed".
+ // Original contents of "*uncompressed" are lost.
+@@ -82,7 +82,7 @@ namespace snappy {
+ //
+ // returns false if the message is corrupted and could not be decompressed
+ bool Uncompress(const char* compressed, size_t compressed_length,
+- string* uncompressed);
++ std::string* uncompressed);
+
+ // Decompresses "compressed" to "*uncompressed".
+ //
diff --git a/devel/electron6/files/patch-third__party_sqlite_BUILD.gn b/devel/electron6/files/patch-third__party_sqlite_BUILD.gn
new file mode 100644
index 000000000000..d6201dd113dc
--- /dev/null
+++ b/devel/electron6/files/patch-third__party_sqlite_BUILD.gn
@@ -0,0 +1,11 @@
+--- third_party/sqlite/BUILD.gn.orig 2019-09-10 11:14:34 UTC
++++ third_party/sqlite/BUILD.gn
+@@ -258,7 +258,7 @@ config("sqlite_warnings") {
+ ]
+ }
+ }
+- if (is_linux) {
++ if (is_linux && !is_bsd) {
+ cflags += [
+ # SQLite doesn't believe in compiler warnings, preferring testing.
+ # http://www.sqlite.org/faq.html#q17
diff --git a/devel/electron6/files/patch-third__party_swiftshader_BUILD.gn b/devel/electron6/files/patch-third__party_swiftshader_BUILD.gn
new file mode 100644
index 000000000000..4c96fb1337af
--- /dev/null
+++ b/devel/electron6/files/patch-third__party_swiftshader_BUILD.gn
@@ -0,0 +1,24 @@
+--- third_party/swiftshader/BUILD.gn.orig 2019-09-10 11:17:34 UTC
++++ third_party/swiftshader/BUILD.gn
+@@ -126,9 +126,6 @@ config("swiftshader_config") {
+ ldflags = [ "-Wl,--gc-sections" ]
+
+ if (target_cpu == "mipsel") {
+- ldflags += [
+- "-Wl,--hash-style=sysv",
+- ]
+ if (mips_arch_variant == "r1") {
+ ldflags += [
+ "-mips32",
+@@ -140,11 +137,8 @@ config("swiftshader_config") {
+ }
+ } else if (target_cpu == "mips64el") {
+ ldflags += [
+- "-Wl,--hash-style=sysv",
+ "-mips64r2",
+ ]
+- } else {
+- ldflags += [ "-Wl,--hash-style=both" ]
+ }
+
+ # A bug in the gold linker prevents using ICF on 32-bit (crbug.com/729532)
diff --git a/devel/electron6/files/patch-third__party_swiftshader_src_Common_Configurator.cpp b/devel/electron6/files/patch-third__party_swiftshader_src_Common_Configurator.cpp
new file mode 100644
index 000000000000..ac508a3161e4
--- /dev/null
+++ b/devel/electron6/files/patch-third__party_swiftshader_src_Common_Configurator.cpp
@@ -0,0 +1,12 @@
+--- third_party/swiftshader/src/Common/Configurator.cpp.orig 2019-09-10 10:47:39 UTC
++++ third_party/swiftshader/src/Common/Configurator.cpp
+@@ -42,6 +42,9 @@ namespace sw
+
+ bool Configurator::readFile()
+ {
++#if defined(__FreeBSD__)
++ return false;
++#endif
+ #if defined(__unix__)
+ if(access(path.c_str(), R_OK) != 0)
+ {
diff --git a/devel/electron6/files/patch-third__party_swiftshader_src_Common_MutexLock.hpp b/devel/electron6/files/patch-third__party_swiftshader_src_Common_MutexLock.hpp
new file mode 100644
index 000000000000..2a71f63e4666
--- /dev/null
+++ b/devel/electron6/files/patch-third__party_swiftshader_src_Common_MutexLock.hpp
@@ -0,0 +1,11 @@
+--- third_party/swiftshader/src/Common/MutexLock.hpp.orig 2019-09-10 10:47:39 UTC
++++ third_party/swiftshader/src/Common/MutexLock.hpp
+@@ -17,7 +17,7 @@
+
+ #include "Thread.hpp"
+
+-#if defined(__linux__)
++#if defined(__linux__) || defined(__FreeBSD__)
+ // Use a pthread mutex on Linux. Since many processes may use SwiftShader
+ // at the same time it's best to just have the scheduler overhead.
+ #include <pthread.h>
diff --git a/devel/electron6/files/patch-third__party_swiftshader_src_Common_SharedLibrary.hpp b/devel/electron6/files/patch-third__party_swiftshader_src_Common_SharedLibrary.hpp
new file mode 100644
index 000000000000..37742a6abea4
--- /dev/null
+++ b/devel/electron6/files/patch-third__party_swiftshader_src_Common_SharedLibrary.hpp
@@ -0,0 +1,11 @@
+--- third_party/swiftshader/src/Common/SharedLibrary.hpp.orig 2019-09-10 10:47:39 UTC
++++ third_party/swiftshader/src/Common/SharedLibrary.hpp
+@@ -97,7 +97,7 @@ void *loadLibrary(const std::string &libraryDirectory,
+
+ inline void *getLibraryHandle(const char *path)
+ {
+- #ifdef __ANDROID__
++ #if defined( __ANDROID__) || defined(__FreeBSD__)
+ // bionic doesn't support RTLD_NOLOAD before L
+ return dlopen(path, RTLD_NOW | RTLD_LOCAL);
+ #else
diff --git a/devel/electron6/files/patch-third__party_swiftshader_src_Main_SwiftConfig.cpp b/devel/electron6/files/patch-third__party_swiftshader_src_Main_SwiftConfig.cpp
new file mode 100644
index 000000000000..fc377b91713b
--- /dev/null
+++ b/devel/electron6/files/patch-third__party_swiftshader_src_Main_SwiftConfig.cpp
@@ -0,0 +1,14 @@
+--- third_party/swiftshader/src/Main/SwiftConfig.cpp.orig 2019-09-10 11:17:34 UTC
++++ third_party/swiftshader/src/Main/SwiftConfig.cpp
+@@ -762,7 +762,11 @@ namespace sw
+ struct stat status;
+ int lastModified = ini.getInteger("LastModified", "Time", 0);
+
++#if !defined(__FreeBSD__)
+ bool noConfig = stat("SwiftShader.ini", &status) != 0;
++#else
++ bool noConfig = false;
++#endif
+ newConfig = !noConfig && abs((int)status.st_mtime - lastModified) > 1;
+
+ if(disableServerOverride)
diff --git a/devel/electron6/files/patch-third__party_swiftshader_src_OpenGL_libEGL_Display.cpp b/devel/electron6/files/patch-third__party_swiftshader_src_OpenGL_libEGL_Display.cpp
new file mode 100644
index 000000000000..a39cf89c22ca
--- /dev/null
+++ b/devel/electron6/files/patch-third__party_swiftshader_src_OpenGL_libEGL_Display.cpp
@@ -0,0 +1,20 @@
+--- third_party/swiftshader/src/OpenGL/libEGL/Display.cpp.orig 2019-09-10 11:17:34 UTC
++++ third_party/swiftshader/src/OpenGL/libEGL/Display.cpp
+@@ -688,7 +688,7 @@ bool Display::isValidWindow(EGLNativeWindowType window
+ return status != 0;
+ }
+ return false;
+- #elif defined(__linux__)
++ #elif defined(__linux__) || defined(__FreeBSD__)
+ return false; // Non X11 linux is headless only
+ #elif defined(__APPLE__)
+ return sw::OSX::IsValidWindow(window);
+@@ -866,7 +866,7 @@ sw::Format Display::getDisplayFormat() const
+ {
+ return sw::FORMAT_X8R8G8B8;
+ }
+- #elif defined(__linux__) // Non X11 linux is headless only
++ #elif defined(__linux__) || defined(__FreeBSD__) // Non X11 linux is headless only
+ return sw::FORMAT_A8B8G8R8;
+ #elif defined(__APPLE__)
+ return sw::FORMAT_A8B8G8R8;
diff --git a/devel/electron6/files/patch-third__party_swiftshader_src_OpenGL_libEGL_Surface.cpp b/devel/electron6/files/patch-third__party_swiftshader_src_OpenGL_libEGL_Surface.cpp
new file mode 100644
index 000000000000..f9e89655fdfe
--- /dev/null
+++ b/devel/electron6/files/patch-third__party_swiftshader_src_OpenGL_libEGL_Surface.cpp
@@ -0,0 +1,11 @@
+--- third_party/swiftshader/src/OpenGL/libEGL/Surface.cpp.orig 2019-09-10 11:17:34 UTC
++++ third_party/swiftshader/src/OpenGL/libEGL/Surface.cpp
+@@ -360,7 +360,7 @@ bool WindowSurface::checkForResize()
+
+ int windowWidth = windowAttributes.width;
+ int windowHeight = windowAttributes.height;
+- #elif defined(__linux__)
++ #elif defined(__linux__) || defined(__FreeBSD__)
+ // Non X11 linux is headless only
+ int windowWidth = 100;
+ int windowHeight = 100;
diff --git a/devel/electron6/files/patch-third__party_swiftshader_src_OpenGL_libEGL_libEGL.cpp b/devel/electron6/files/patch-third__party_swiftshader_src_OpenGL_libEGL_libEGL.cpp
new file mode 100644
index 000000000000..8bf7c1768b1c
--- /dev/null
+++ b/devel/electron6/files/patch-third__party_swiftshader_src_OpenGL_libEGL_libEGL.cpp
@@ -0,0 +1,29 @@
+--- third_party/swiftshader/src/OpenGL/libEGL/libEGL.cpp.orig 2019-09-10 11:17:34 UTC
++++ third_party/swiftshader/src/OpenGL/libEGL/libEGL.cpp
+@@ -148,7 +148,7 @@ EGLDisplay GetDisplay(EGLNativeDisplayType display_id)
+ // FIXME: Check if display_id is the default display
+ }
+
+- #if defined(__linux__) && !defined(__ANDROID__)
++ #if (defined(__linux__) || defined(__FreeBSD)) && !defined(__ANDROID__)
+ #if defined(USE_X11)
+ if(!libX11)
+ #endif // Non X11 linux is headless only
+@@ -207,7 +207,7 @@ const char *QueryString(EGLDisplay dpy, EGLint name)
+ {
+ return success(
+ "EGL_KHR_client_get_all_proc_addresses "
+-#if defined(__linux__) && !defined(__ANDROID__)
++#if (defined(__linux__) || defined(__FreeBSD__)) && !defined(__ANDROID__)
+ "EGL_KHR_platform_gbm "
+ #endif
+ #if defined(USE_X11)
+@@ -1250,7 +1250,7 @@ EGLDisplay GetPlatformDisplay(EGLenum platform, void *
+ {
+ TRACE("(EGLenum platform = 0x%X, void *native_display = %p, const EGLAttrib *attrib_list = %p)", platform, native_display, attrib_list);
+
+- #if defined(__linux__) && !defined(__ANDROID__)
++ #if (defined(__linux__) || defined(__FreeBSD__)) && !defined(__ANDROID__)
+ switch(platform)
+ {
+ #if defined(USE_X11)
diff --git a/devel/electron6/files/patch-third__party_swiftshader_src_OpenGL_libEGL_libEGL.hpp b/devel/electron6/files/patch-third__party_swiftshader_src_OpenGL_libEGL_libEGL.hpp
new file mode 100644
index 000000000000..766971cf7706
--- /dev/null
+++ b/devel/electron6/files/patch-third__party_swiftshader_src_OpenGL_libEGL_libEGL.hpp
@@ -0,0 +1,11 @@
+--- third_party/swiftshader/src/OpenGL/libEGL/libEGL.hpp.orig 2019-09-10 11:17:34 UTC
++++ third_party/swiftshader/src/OpenGL/libEGL/libEGL.hpp
+@@ -100,7 +100,7 @@ class LibEGL (private)
+ #endif
+ #elif defined(__ANDROID__)
+ const char *libEGL_lib[] = {"libEGL_swiftshader.so", "libEGL_swiftshader.so"};
+- #elif defined(__linux__)
++ #elif defined(__linux__) || defined(__FreeBSD__)
+ #if defined(__LP64__)
+ const char *libEGL_lib[] = {"lib64EGL_translator.so", "libEGL.so.1", "libEGL.so"};
+ #else
diff --git a/devel/electron6/files/patch-third__party_swiftshader_src_OpenGL_libGLES__CM_libGLES__CM.hpp b/devel/electron6/files/patch-third__party_swiftshader_src_OpenGL_libGLES__CM_libGLES__CM.hpp
new file mode 100644
index 000000000000..5f3caea1813b
--- /dev/null
+++ b/devel/electron6/files/patch-third__party_swiftshader_src_OpenGL_libGLES__CM_libGLES__CM.hpp
@@ -0,0 +1,11 @@
+--- third_party/swiftshader/src/OpenGL/libGLES_CM/libGLES_CM.hpp.orig 2019-09-10 10:47:39 UTC
++++ third_party/swiftshader/src/OpenGL/libGLES_CM/libGLES_CM.hpp
+@@ -261,7 +261,7 @@ class LibGLES_CM (private)
+ #endif
+ #elif defined(__ANDROID__)
+ const char *libGLES_CM_lib[] = {"libGLESv1_CM_swiftshader.so", "libGLESv1_CM_swiftshader.so"};
+- #elif defined(__linux__)
++ #elif defined(__linux__) || defined(__FreeBSD__)
+ #if defined(__LP64__)
+ const char *libGLES_CM_lib[] = {"lib64GLES_CM_translator.so", "libGLES_CM.so.1", "libGLES_CM.so"};
+ #else
diff --git a/devel/electron6/files/patch-third__party_swiftshader_src_OpenGL_libGLESv2_libGLESv2.hpp b/devel/electron6/files/patch-third__party_swiftshader_src_OpenGL_libGLESv2_libGLESv2.hpp
new file mode 100644
index 000000000000..54a6c0b53e27
--- /dev/null
+++ b/devel/electron6/files/patch-third__party_swiftshader_src_OpenGL_libGLESv2_libGLESv2.hpp
@@ -0,0 +1,11 @@
+--- third_party/swiftshader/src/OpenGL/libGLESv2/libGLESv2.hpp.orig 2019-09-10 11:17:34 UTC
++++ third_party/swiftshader/src/OpenGL/libGLESv2/libGLESv2.hpp
+@@ -286,7 +286,7 @@ class LibGLESv2 (private)
+ #endif
+ #elif defined(__ANDROID__)
+ const char *libGLESv2_lib[] = {"libGLESv2_swiftshader.so", "libGLESv2_swiftshader.so"};
+- #elif defined(__linux__)
++ #elif defined(__linux__) || defined(__FreeBSD__)
+ #if defined(__LP64__)
+ const char *libGLESv2_lib[] = {"lib64GLES_V2_translator.so", "libGLESv2.so.2", "libGLESv2.so"};
+ #else
diff --git a/devel/electron6/files/patch-third__party_swiftshader_third__party_llvm-7.0_configs_linux_include_llvm_Config_config.h b/devel/electron6/files/patch-third__party_swiftshader_third__party_llvm-7.0_configs_linux_include_llvm_Config_config.h
new file mode 100644
index 000000000000..a5cde29bf8b9
--- /dev/null
+++ b/devel/electron6/files/patch-third__party_swiftshader_third__party_llvm-7.0_configs_linux_include_llvm_Config_config.h
@@ -0,0 +1,152 @@
+--- third_party/swiftshader/third_party/llvm-7.0/configs/linux/include/llvm/Config/config.h.orig 2019-09-10 11:17:37 UTC
++++ third_party/swiftshader/third_party/llvm-7.0/configs/linux/include/llvm/Config/config.h
+@@ -8,15 +8,15 @@
+ #define BUG_REPORT_URL "https://bugs.llvm.org/"
+
+ /* Define to 1 to enable backtraces, and to 0 otherwise. */
+-/* #undef ENABLE_BACKTRACES */
++#define ENABLE_BACKTRACES 1
+
+ /* Define to 1 to enable crash overrides, and to 0 otherwise. */
+-/* #undef ENABLE_CRASH_OVERRIDES */
++#define ENABLE_CRASH_OVERRIDES 1
+
+ /* Define to 1 if you have the `backtrace' function. */
+-/* #undef HAVE_BACKTRACE */
++#define HAVE_BACKTRACE TRUE
+
+-/* #undef BACKTRACE_HEADER */
++#define BACKTRACE_HEADER <execinfo.h>
+
+ /* Define to 1 if you have the <CrashReporterClient.h> header file. */
+ /* #undef HAVE_CRASHREPORTERCLIENT_H */
+@@ -26,7 +26,7 @@
+
+ /* Define to 1 if you have the declaration of `arc4random', and to 0 if you
+ don't. */
+-#define HAVE_DECL_ARC4RANDOM 0
++#define HAVE_DECL_ARC4RANDOM 1
+
+ /* Define to 1 if you have the declaration of `FE_ALL_EXCEPT', and to 0 if you
+ don't. */
+@@ -50,7 +50,7 @@
+ #define HAVE_DLOPEN 1
+
+ /* Define if dladdr() is available on this platform. */
+-/* #undef HAVE_DLADDR */
++#define HAVE_DLADDR 1
+
+ /* Define to 1 if you have the <errno.h> header file. */
+ #define HAVE_ERRNO_H 1
+@@ -89,7 +89,7 @@
+ #define HAVE_ISATTY 1
+
+ /* Define to 1 if you have the `edit' library (-ledit). */
+-/* #undef HAVE_LIBEDIT */
++#define HAVE_LIBEDIT 1
+
+ /* Define to 1 if you have the `pfm' library (-lpfm). */
+ /* #undef HAVE_LIBPFM */
+@@ -107,25 +107,25 @@
+ /* #undef HAVE_PTHREAD_SETNAME_NP */
+
+ /* Define to 1 if you have the `z' library (-lz). */
+-/* #undef HAVE_LIBZ */
++#define HAVE_LIBZ 1
+
+ /* Define to 1 if you have the <link.h> header file. */
+ #define HAVE_LINK_H 1
+
+ /* Define to 1 if you have the `lseek64' function. */
+-#define HAVE_LSEEK64 1
++/* #undef HAVE_LSEEK64 */
+
+ /* Define to 1 if you have the <mach/mach.h> header file. */
+ /* #undef HAVE_MACH_MACH_H */
+
+ /* Define to 1 if you have the `mallctl' function. */
+-/* #undef HAVE_MALLCTL */
++#define HAVE_MALLCTL 1
+
+ /* Define to 1 if you have the `mallinfo' function. */
+-#define HAVE_MALLINFO 1
++/* #undef HAVE_MALLINFO */
+
+ /* Define to 1 if you have the <malloc.h> header file. */
+-#define HAVE_MALLOC_H 1
++/* #undef HAVE_MALLOC_H */
+
+ /* Define to 1 if you have the <malloc/malloc.h> header file. */
+ /* #undef HAVE_MALLOC_MALLOC_H */
+@@ -137,7 +137,7 @@
+ #define HAVE_POSIX_FALLOCATE 1
+
+ /* Define to 1 if you have the `posix_spawn' function. */
+-/* #undef HAVE_POSIX_SPAWN */
++#define HAVE_POSIX_SPAWN 1
+
+ /* Define to 1 if you have the `pread' function. */
+ #define HAVE_PREAD 1
+@@ -158,16 +158,16 @@
+ #define HAVE_REALPATH 1
+
+ /* Define to 1 if you have the `sbrk' function. */
+-#define HAVE_SBRK 1
++/* #undef HAVE_SBRK */
+
+ /* Define to 1 if you have the `setenv' function. */
+ #define HAVE_SETENV 1
+
+ /* Define to 1 if you have the `sched_getaffinity' function. */
+-#define HAVE_SCHED_GETAFFINITY 1
++/* #undef HAVE_SCHED_GETAFFINITY */
+
+ /* Define to 1 if you have the `CPU_COUNT' macro. */
+-#define HAVE_CPU_COUNT 1
++/* #undef HAVE_CPU_COUNT */
+
+ /* Define to 1 if you have the `setrlimit' function. */
+ #define HAVE_SETRLIMIT 1
+@@ -209,13 +209,13 @@
+ #define HAVE_SYS_TYPES_H 1
+
+ /* Define if the setupterm() function is supported this platform. */
+-/* #undef HAVE_TERMINFO */
++#define HAVE_TERMINFO 1
+
+ /* Define if the xar_open() function is supported this platform. */
+ /* #undef HAVE_LIBXAR */
+
+ /* Define to 1 if you have the <termios.h> header file. */
+-/* #undef HAVE_TERMIOS_H */
++#define HAVE_TERMIOS_H 1
+
+ /* Define to 1 if you have the <unistd.h> header file. */
+ #define HAVE_UNISTD_H 1
+@@ -224,7 +224,7 @@
+ /* #undef HAVE_VALGRIND_VALGRIND_H */
+
+ /* Define to 1 if you have the <zlib.h> header file. */
+-/* #undef HAVE_ZLIB_H */
++#define HAVE_ZLIB_H 1
+
+ /* Have host's _alloca */
+ /* #undef HAVE__ALLOCA */
+@@ -298,7 +298,7 @@
+ #elif defined(__arm__)
+ #define LLVM_DEFAULT_TARGET_TRIPLE "armv7-linux-gnueabihf"
+ #elif defined(__aarch64__)
+-#define LLVM_DEFAULT_TARGET_TRIPLE "aarch64-linux-gnu"
++#define LLVM_DEFAULT_TARGET_TRIPLE "aarch64-portbld-freebsd"
+ #elif defined(__mips__)
+ #define LLVM_DEFAULT_TARGET_TRIPLE "mipsel-linux-gnu"
+ #elif defined(__mips64)
+@@ -308,7 +308,7 @@
+ #endif
+
+ /* Define if zlib compression is available */
+-#define LLVM_ENABLE_ZLIB 0
++#define LLVM_ENABLE_ZLIB 1
+
+ /* Define if overriding target triple is enabled */
+ /* #undef LLVM_TARGET_TRIPLE_ENV */
diff --git a/devel/electron6/files/patch-third__party_swiftshader_third__party_llvm-7.0_configs_linux_include_llvm_Config_llvm-config.h b/devel/electron6/files/patch-third__party_swiftshader_third__party_llvm-7.0_configs_linux_include_llvm_Config_llvm-config.h
new file mode 100644
index 000000000000..d02dbe87dbbb
--- /dev/null
+++ b/devel/electron6/files/patch-third__party_swiftshader_third__party_llvm-7.0_configs_linux_include_llvm_Config_llvm-config.h
@@ -0,0 +1,20 @@
+--- third_party/swiftshader/third_party/llvm-7.0/configs/linux/include/llvm/Config/llvm-config.h.orig 2019-09-10 11:17:37 UTC
++++ third_party/swiftshader/third_party/llvm-7.0/configs/linux/include/llvm/Config/llvm-config.h
+@@ -28,7 +28,7 @@
+ #elif defined(__arm__)
+ #define LLVM_DEFAULT_TARGET_TRIPLE "armv7-linux-gnueabihf"
+ #elif defined(__aarch64__)
+-#define LLVM_DEFAULT_TARGET_TRIPLE "aarch64-linux-gnu"
++#define LLVM_DEFAULT_TARGET_TRIPLE "aarch64-portbld-freebsd"
+ #elif defined(__mips__)
+ #define LLVM_DEFAULT_TARGET_TRIPLE "mipsel-linux-gnu"
+ #elif defined(__mips64)
+@@ -51,7 +51,7 @@
+ #elif defined(__arm__)
+ #define LLVM_HOST_TRIPLE "armv7-linux-gnueabihf"
+ #elif defined(__aarch64__)
+-#define LLVM_HOST_TRIPLE "aarch64-linux-gnu"
++#define LLVM_HOST_TRIPLE "aarch64-portbld-freebsd"
+ #elif defined(__mips__)
+ #define LLVM_HOST_TRIPLE "mipsel-linux-gnu"
+ #elif defined(__mips64)
diff --git a/devel/electron6/files/patch-third__party_swiftshader_third__party_llvm-subzero_build_Linux_include_llvm_Config_config.h b/devel/electron6/files/patch-third__party_swiftshader_third__party_llvm-subzero_build_Linux_include_llvm_Config_config.h
new file mode 100644
index 000000000000..e262bd37705a
--- /dev/null
+++ b/devel/electron6/files/patch-third__party_swiftshader_third__party_llvm-subzero_build_Linux_include_llvm_Config_config.h
@@ -0,0 +1,29 @@
+--- third_party/swiftshader/third_party/llvm-subzero/build/Linux/include/llvm/Config/config.h.orig 2019-09-10 10:47:52 UTC
++++ third_party/swiftshader/third_party/llvm-subzero/build/Linux/include/llvm/Config/config.h
+@@ -121,7 +121,7 @@
+ #define HAVE_LINK_H 1
+
+ /* Define to 1 if you have the `lseek64' function. */
+-#define HAVE_LSEEK64 1
++/* #undef HAVE_LSEEK64 */
+
+ /* Define to 1 if you have the <mach/mach.h> header file. */
+ /* #undef HAVE_MACH_MACH_H */
+@@ -130,7 +130,7 @@
+ /* #undef HAVE_MALLCTL */
+
+ /* Define to 1 if you have the `mallinfo' function. */
+-#define HAVE_MALLINFO 1
++/* #undef HAVE_MALLINFO */
+
+ /* Define to 1 if you have the <malloc.h> header file. */
+ #define HAVE_MALLOC_H 1
+@@ -154,7 +154,7 @@
+ /* #undef HAVE_NDIR_H */
+
+ /* Define to 1 if you have the `posix_fallocate' function. */
+-#define HAVE_POSIX_FALLOCATE 1
++/* #undef HAVE_POSIX_FALLOCATE */
+
+ /* Define to 1 if you have the `posix_spawn' function. */
+ #define HAVE_POSIX_SPAWN 1
diff --git a/devel/electron6/files/patch-third__party_swiftshader_third__party_llvm-subzero_lib_Support_Unix_Process.inc b/devel/electron6/files/patch-third__party_swiftshader_third__party_llvm-subzero_lib_Support_Unix_Process.inc
new file mode 100644
index 000000000000..21b5d0d88c75
--- /dev/null
+++ b/devel/electron6/files/patch-third__party_swiftshader_third__party_llvm-subzero_lib_Support_Unix_Process.inc
@@ -0,0 +1,11 @@
+--- third_party/swiftshader/third_party/llvm-subzero/lib/Support/Unix/Process.inc.orig 2019-09-10 10:47:53 UTC
++++ third_party/swiftshader/third_party/llvm-subzero/lib/Support/Unix/Process.inc
+@@ -35,7 +35,7 @@
+ // DragonFlyBSD, OpenBSD, and Bitrig have deprecated <malloc.h> for
+ // <stdlib.h> instead. Unix.h includes this for us already.
+ #if defined(HAVE_MALLOC_H) && !defined(__DragonFly__) && \
+- !defined(__OpenBSD__) && !defined(__Bitrig__)
++ !defined(__FreeBSD__) && !defined(__OpenBSD__) && !defined(__Bitrig__)
+ #include <malloc.h>
+ #endif
+ #if defined(HAVE_MALLCTL)
diff --git a/devel/electron6/files/patch-third__party_usrsctp_BUILD.gn b/devel/electron6/files/patch-third__party_usrsctp_BUILD.gn
new file mode 100644
index 000000000000..282f37d16a21
--- /dev/null
+++ b/devel/electron6/files/patch-third__party_usrsctp_BUILD.gn
@@ -0,0 +1,20 @@
+--- third_party/usrsctp/BUILD.gn.orig 2019-09-10 10:43:21 UTC
++++ third_party/usrsctp/BUILD.gn
+@@ -116,11 +116,16 @@ static_library("usrsctp") {
+ "-UINET6",
+ ]
+
+- if (is_linux || is_android) {
++ if ((is_linux && !is_bsd) || is_android ) {
+ defines += [
+ "__Userspace_os_Linux",
+ "_GNU_SOURCE",
+ ]
++ } else if (is_bsd) {
++ defines += [
++ "__Userspace_os_FreeBSD",
++ ]
++ cflags += [ "-U__FreeBSD__" ]
+ } else if (is_mac || is_ios) {
+ defines += [
+ "HAVE_SA_LEN",
diff --git a/devel/electron6/files/patch-third__party_webrtc_BUILD.gn b/devel/electron6/files/patch-third__party_webrtc_BUILD.gn
new file mode 100644
index 000000000000..597b53bd9077
--- /dev/null
+++ b/devel/electron6/files/patch-third__party_webrtc_BUILD.gn
@@ -0,0 +1,12 @@
+--- third_party/webrtc/BUILD.gn.orig 2019-09-10 11:17:42 UTC
++++ third_party/webrtc/BUILD.gn
+@@ -152,6 +152,9 @@ config("common_inherited_config") {
+ if (is_linux) {
+ defines += [ "WEBRTC_LINUX" ]
+ }
++ if (is_bsd) {
++ defines += [ "WEBRTC_BSD" ]
++ }
+ if (is_mac) {
+ defines += [ "WEBRTC_MAC" ]
+ }
diff --git a/devel/electron6/files/patch-third__party_webrtc_modules_audio__device_BUILD.gn b/devel/electron6/files/patch-third__party_webrtc_modules_audio__device_BUILD.gn
new file mode 100644
index 000000000000..77ad41e20b7e
--- /dev/null
+++ b/devel/electron6/files/patch-third__party_webrtc_modules_audio__device_BUILD.gn
@@ -0,0 +1,11 @@
+--- third_party/webrtc/modules/audio_device/BUILD.gn.orig 2019-09-10 11:17:42 UTC
++++ third_party/webrtc/modules/audio_device/BUILD.gn
+@@ -265,7 +265,7 @@ rtc_source_set("audio_device_impl") {
+ if (rtc_use_dummy_audio_file_devices) {
+ defines += [ "WEBRTC_DUMMY_FILE_DEVICES" ]
+ } else {
+- if (is_linux) {
++ if (is_linux && !is_bsd) {
+ sources += [
+ "linux/alsasymboltable_linux.cc",
+ "linux/alsasymboltable_linux.h",
diff --git a/devel/electron6/files/patch-third__party_webrtc_modules_rtp__rtcp_source_forward__error__correction.cc b/devel/electron6/files/patch-third__party_webrtc_modules_rtp__rtcp_source_forward__error__correction.cc
new file mode 100644
index 000000000000..481b5a52748c
--- /dev/null
+++ b/devel/electron6/files/patch-third__party_webrtc_modules_rtp__rtcp_source_forward__error__correction.cc
@@ -0,0 +1,10 @@
+--- third_party/webrtc/modules/rtp_rtcp/source/forward_error_correction.cc.orig 2019-09-10 11:17:43 UTC
++++ third_party/webrtc/modules/rtp_rtcp/source/forward_error_correction.cc
+@@ -12,6 +12,7 @@
+
+ #include <string.h>
+ #include <algorithm>
++#include <cstdlib>
+ #include <utility>
+
+ #include "absl/algorithm/container.h"
diff --git a/devel/electron6/files/patch-third__party_webrtc_rtc__base_BUILD.gn b/devel/electron6/files/patch-third__party_webrtc_rtc__base_BUILD.gn
new file mode 100644
index 000000000000..2ddda49cbf39
--- /dev/null
+++ b/devel/electron6/files/patch-third__party_webrtc_rtc__base_BUILD.gn
@@ -0,0 +1,20 @@
+--- third_party/webrtc/rtc_base/BUILD.gn.orig 2019-09-10 11:17:44 UTC
++++ third_party/webrtc/rtc_base/BUILD.gn
+@@ -952,8 +952,6 @@ rtc_static_library("rtc_base") {
+
+ if (rtc_use_x11) {
+ libs += [
+- "dl",
+- "rt",
+ "Xext",
+ "X11",
+ "Xcomposite",
+@@ -961,7 +959,7 @@ rtc_static_library("rtc_base") {
+ ]
+ }
+
+- if (is_linux) {
++ if (is_linux && !is_bsd) {
+ libs += [
+ "dl",
+ "rt",
diff --git a/devel/electron6/files/patch-third__party_webrtc_rtc__base_byte__order.h b/devel/electron6/files/patch-third__party_webrtc_rtc__base_byte__order.h
new file mode 100644
index 000000000000..1be5134f8bb5
--- /dev/null
+++ b/devel/electron6/files/patch-third__party_webrtc_rtc__base_byte__order.h
@@ -0,0 +1,11 @@
+--- third_party/webrtc/rtc_base/byte_order.h.orig 2019-09-10 10:48:09 UTC
++++ third_party/webrtc/rtc_base/byte_order.h
+@@ -89,7 +89,7 @@
+ #endif // defined(WEBRTC_ARCH_LITTLE_ENDIAN)
+
+ #elif defined(WEBRTC_POSIX)
+-#include <endian.h>
++#include <sys/endian.h>
+ #else
+ #error "Missing byte order functions for this arch."
+ #endif // defined(WEBRTC_MAC)
diff --git a/devel/electron6/files/patch-third__party_webrtc_rtc__base_ifaddrs__converter.h b/devel/electron6/files/patch-third__party_webrtc_rtc__base_ifaddrs__converter.h
new file mode 100644
index 000000000000..d2942a459a73
--- /dev/null
+++ b/devel/electron6/files/patch-third__party_webrtc_rtc__base_ifaddrs__converter.h
@@ -0,0 +1,11 @@
+--- third_party/webrtc/rtc_base/ifaddrs_converter.h.orig 2019-09-10 10:48:09 UTC
++++ third_party/webrtc/rtc_base/ifaddrs_converter.h
+@@ -14,6 +14,8 @@
+ #if defined(WEBRTC_ANDROID)
+ #include "rtc_base/ifaddrs_android.h"
+ #else
++#include <sys/types.h>
++#include <sys/socket.h>
+ #include <ifaddrs.h>
+ #endif // WEBRTC_ANDROID
+
diff --git a/devel/electron6/files/patch-third__party_webrtc_rtc__base_ip__address.cc b/devel/electron6/files/patch-third__party_webrtc_rtc__base_ip__address.cc
new file mode 100644
index 000000000000..cc2b083db032
--- /dev/null
+++ b/devel/electron6/files/patch-third__party_webrtc_rtc__base_ip__address.cc
@@ -0,0 +1,12 @@
+--- third_party/webrtc/rtc_base/ip_address.cc.orig 2019-09-10 10:48:09 UTC
++++ third_party/webrtc/rtc_base/ip_address.cc
+@@ -11,6 +11,9 @@
+ #if defined(WEBRTC_POSIX)
+ #include <netinet/in.h>
+ #include <sys/socket.h>
++#if defined(WEBRTC_BSD)
++#include <sys/types.h>
++#endif
+ #ifdef OPENBSD
+ #include <netinet/in_systm.h>
+ #endif
diff --git a/devel/electron6/files/patch-third__party_webrtc_rtc__base_ip__address.h b/devel/electron6/files/patch-third__party_webrtc_rtc__base_ip__address.h
new file mode 100644
index 000000000000..27e32df29df1
--- /dev/null
+++ b/devel/electron6/files/patch-third__party_webrtc_rtc__base_ip__address.h
@@ -0,0 +1,13 @@
+--- third_party/webrtc/rtc_base/ip_address.h.orig 2019-09-10 10:48:09 UTC
++++ third_party/webrtc/rtc_base/ip_address.h
+@@ -17,6 +17,10 @@
+ #include <netinet/in.h>
+ #include <sys/socket.h>
+ #endif
++#if defined(WEBRTC_BSD)
++#include <sys/types.h>
++#include <sys/socket.h>
++#endif
+ #if defined(WEBRTC_WIN)
+ #include <winsock2.h>
+ #include <ws2tcpip.h>
diff --git a/devel/electron6/files/patch-third__party_webrtc_rtc__base_network.cc b/devel/electron6/files/patch-third__party_webrtc_rtc__base_network.cc
new file mode 100644
index 000000000000..3077966366d2
--- /dev/null
+++ b/devel/electron6/files/patch-third__party_webrtc_rtc__base_network.cc
@@ -0,0 +1,29 @@
+--- third_party/webrtc/rtc_base/network.cc.orig 2019-09-10 11:17:44 UTC
++++ third_party/webrtc/rtc_base/network.cc
+@@ -14,7 +14,7 @@
+ // linux/if.h can't be included at the same time as the posix sys/if.h, and
+ // it's transitively required by linux/route.h, so include that version on
+ // linux instead of the standard posix one.
+-#if defined(WEBRTC_LINUX)
++#if defined(WEBRTC_LINUX) && !defined(WEBRTC_BSD)
+ #include <linux/if.h>
+ #include <linux/route.h>
+ #elif !defined(__native_client__)
+@@ -764,7 +764,7 @@ bool BasicNetworkManager::CreateNetworks(bool include_
+ }
+ #endif // WEBRTC_WIN
+
+-#if defined(WEBRTC_LINUX)
++#if defined(WEBRTC_LINUX) && !defined(WEBRTC_BSD)
+ bool IsDefaultRoute(const std::string& network_name) {
+ FILE* f = fopen("/proc/net/route", "r");
+ if (!f) {
+@@ -807,7 +807,7 @@ bool BasicNetworkManager::IsIgnoredNetwork(const Netwo
+ strncmp(network.name().c_str(), "vboxnet", 7) == 0) {
+ return true;
+ }
+-#if defined(WEBRTC_LINUX)
++#if defined(WEBRTC_LINUX) && !defined(WEBRTC_BSD)
+ // Make sure this is a default route, if we're ignoring non-defaults.
+ if (ignore_non_default_routes_ && !IsDefaultRoute(network.name())) {
+ return true;
diff --git a/devel/electron6/files/patch-third__party_webrtc_rtc__base_network.h b/devel/electron6/files/patch-third__party_webrtc_rtc__base_network.h
new file mode 100644
index 000000000000..384f30338e67
--- /dev/null
+++ b/devel/electron6/files/patch-third__party_webrtc_rtc__base_network.h
@@ -0,0 +1,13 @@
+--- third_party/webrtc/rtc_base/network.h.orig 2019-09-10 10:48:09 UTC
++++ third_party/webrtc/rtc_base/network.h
+@@ -25,6 +25,10 @@
+ #include "rtc_base/network_monitor.h"
+ #include "rtc_base/third_party/sigslot/sigslot.h"
+
++#if defined(WEBRTC_BSD)
++#include <sys/types.h>
++#endif
++
+ #if defined(WEBRTC_POSIX)
+ struct ifaddrs;
+ #endif // defined(WEBRTC_POSIX)
diff --git a/devel/electron6/files/patch-third__party_webrtc_rtc__base_physical__socket__server.cc b/devel/electron6/files/patch-third__party_webrtc_rtc__base_physical__socket__server.cc
new file mode 100644
index 000000000000..2425a7903c09
--- /dev/null
+++ b/devel/electron6/files/patch-third__party_webrtc_rtc__base_physical__socket__server.cc
@@ -0,0 +1,65 @@
+--- third_party/webrtc/rtc_base/physical_socket_server.cc.orig 2019-09-10 11:17:44 UTC
++++ third_party/webrtc/rtc_base/physical_socket_server.cc
+@@ -51,7 +51,7 @@
+ #include "rtc_base/null_socket_server.h"
+ #include "rtc_base/time_utils.h"
+
+-#if defined(WEBRTC_LINUX)
++#if defined(WEBRTC_LINUX) && !defined(WEBRTC_BSD)
+ #include <linux/sockios.h>
+ #endif
+
+@@ -70,7 +70,7 @@ typedef void* SockOptArg;
+
+ #endif // WEBRTC_POSIX
+
+-#if defined(WEBRTC_POSIX) && !defined(WEBRTC_MAC) && !defined(__native_client__)
++#if defined(WEBRTC_POSIX) && !defined(WEBRTC_MAC) && !defined(WEBRTC_BSD) && !defined(__native_client__)
+
+ int64_t GetSocketRecvTimestamp(int socket) {
+ struct timeval tv_ioctl;
+@@ -290,7 +290,7 @@ int PhysicalSocket::GetOption(Option opt, int* value)
+ socklen_t optlen = sizeof(*value);
+ int ret = ::getsockopt(s_, slevel, sopt, (SockOptArg)value, &optlen);
+ if (ret != -1 && opt == OPT_DONTFRAGMENT) {
+-#if defined(WEBRTC_LINUX) && !defined(WEBRTC_ANDROID)
++#if defined(WEBRTC_LINUX) && !defined(WEBRTC_ANDROID) && !defined(WEBRTC_BSD)
+ *value = (*value != IP_PMTUDISC_DONT) ? 1 : 0;
+ #endif
+ }
+@@ -303,7 +303,7 @@ int PhysicalSocket::SetOption(Option opt, int value) {
+ if (TranslateOption(opt, &slevel, &sopt) == -1)
+ return -1;
+ if (opt == OPT_DONTFRAGMENT) {
+-#if defined(WEBRTC_LINUX) && !defined(WEBRTC_ANDROID)
++#if defined(WEBRTC_LINUX) && !defined(WEBRTC_ANDROID) && !defined(WEBRTC_BSD)
+ value = (value) ? IP_PMTUDISC_DO : IP_PMTUDISC_DONT;
+ #endif
+ }
+@@ -313,7 +313,7 @@ int PhysicalSocket::SetOption(Option opt, int value) {
+ int PhysicalSocket::Send(const void* pv, size_t cb) {
+ int sent = DoSend(
+ s_, reinterpret_cast<const char*>(pv), static_cast<int>(cb),
+-#if defined(WEBRTC_LINUX) && !defined(WEBRTC_ANDROID)
++#if defined(WEBRTC_LINUX) && !defined(WEBRTC_ANDROID) && !defined(WEBRTC_BSD)
+ // Suppress SIGPIPE. Without this, attempting to send on a socket whose
+ // other end is closed will result in a SIGPIPE signal being raised to
+ // our process, which by default will terminate the process, which we
+@@ -342,7 +342,7 @@ int PhysicalSocket::SendTo(const void* buffer,
+ size_t len = addr.ToSockAddrStorage(&saddr);
+ int sent =
+ DoSendTo(s_, static_cast<const char*>(buffer), static_cast<int>(length),
+-#if defined(WEBRTC_LINUX) && !defined(WEBRTC_ANDROID)
++#if defined(WEBRTC_LINUX) && !defined(WEBRTC_ANDROID) && !defined(WEBRTC_BSD)
+ // Suppress SIGPIPE. See above for explanation.
+ MSG_NOSIGNAL,
+ #else
+@@ -533,7 +533,7 @@ int PhysicalSocket::TranslateOption(Option opt, int* s
+ *slevel = IPPROTO_IP;
+ *sopt = IP_DONTFRAGMENT;
+ break;
+-#elif defined(WEBRTC_MAC) || defined(BSD) || defined(__native_client__)
++#elif defined(WEBRTC_MAC) || defined(WEBRTC_BSD) || defined(__native_client__)
+ RTC_LOG(LS_WARNING) << "Socket::OPT_DONTFRAGMENT not supported.";
+ return -1;
+ #elif defined(WEBRTC_POSIX)
diff --git a/devel/electron6/files/patch-third__party_webrtc_rtc__base_physical__socket__server.h b/devel/electron6/files/patch-third__party_webrtc_rtc__base_physical__socket__server.h
new file mode 100644
index 000000000000..a942e0648aa1
--- /dev/null
+++ b/devel/electron6/files/patch-third__party_webrtc_rtc__base_physical__socket__server.h
@@ -0,0 +1,11 @@
+--- third_party/webrtc/rtc_base/physical_socket_server.h.orig 2019-09-10 10:48:10 UTC
++++ third_party/webrtc/rtc_base/physical_socket_server.h
+@@ -11,7 +11,7 @@
+ #ifndef RTC_BASE_PHYSICAL_SOCKET_SERVER_H_
+ #define RTC_BASE_PHYSICAL_SOCKET_SERVER_H_
+
+-#if defined(WEBRTC_POSIX) && defined(WEBRTC_LINUX)
++#if defined(WEBRTC_POSIX) && defined(WEBRTC_LINUX) && !defined(WEBRTC_BSD)
+ #include <sys/epoll.h>
+ #define WEBRTC_USE_EPOLL 1
+ #endif
diff --git a/devel/electron6/files/patch-third__party_webrtc_rtc__base_platform__thread__types.cc b/devel/electron6/files/patch-third__party_webrtc_rtc__base_platform__thread__types.cc
new file mode 100644
index 000000000000..c25501a86b6f
--- /dev/null
+++ b/devel/electron6/files/patch-third__party_webrtc_rtc__base_platform__thread__types.cc
@@ -0,0 +1,40 @@
+--- third_party/webrtc/rtc_base/platform_thread_types.cc.orig 2019-09-10 11:17:44 UTC
++++ third_party/webrtc/rtc_base/platform_thread_types.cc
+@@ -11,7 +11,9 @@
+ #include "rtc_base/platform_thread_types.h"
+
+ #if defined(WEBRTC_LINUX)
++#if !defined(__FreeBSD__)
+ #include <sys/prctl.h>
++#endif
+ #include <sys/syscall.h>
+ #endif
+
+@@ -27,8 +29,10 @@ PlatformThreadId CurrentThreadId() {
+ return gettid();
+ #elif defined(WEBRTC_FUCHSIA)
+ return zx_thread_self();
+-#elif defined(WEBRTC_LINUX)
++#elif defined(WEBRTC_LINUX) && !defined(__FreeBSD__)
+ return syscall(__NR_gettid);
++#elif defined(__FreeBSD__)
++ return reinterpret_cast<uint64_t>(pthread_self());
+ #else
+ // Default implementation for nacl and solaris.
+ return reinterpret_cast<pid_t>(pthread_self());
+@@ -55,6 +59,7 @@ bool IsThreadRefEqual(const PlatformThreadRef& a, cons
+ }
+
+ void SetCurrentThreadName(const char* name) {
++#if !defined(__FreeBSD__)
+ #if defined(WEBRTC_WIN)
+ struct {
+ DWORD dwType;
+@@ -72,6 +77,7 @@ void SetCurrentThreadName(const char* name) {
+ prctl(PR_SET_NAME, reinterpret_cast<unsigned long>(name)); // NOLINT
+ #elif defined(WEBRTC_MAC) || defined(WEBRTC_IOS)
+ pthread_setname_np(name);
++#endif
+ #endif
+ }
+
diff --git a/devel/electron6/files/patch-third__party_webrtc_system__wrappers_BUILD.gn b/devel/electron6/files/patch-third__party_webrtc_system__wrappers_BUILD.gn
new file mode 100644
index 000000000000..96afacf65759
--- /dev/null
+++ b/devel/electron6/files/patch-third__party_webrtc_system__wrappers_BUILD.gn
@@ -0,0 +1,11 @@
+--- third_party/webrtc/system_wrappers/BUILD.gn.orig 2019-09-10 11:17:44 UTC
++++ third_party/webrtc/system_wrappers/BUILD.gn
+@@ -57,8 +57,6 @@ rtc_static_library("system_wrappers") {
+ if (!build_with_chromium) {
+ deps += [ ":cpu_features_linux" ]
+ }
+-
+- libs += [ "rt" ]
+ }
+
+ if (is_win) {
diff --git a/devel/electron6/files/patch-third__party_yasm_yasm__assemble.gni b/devel/electron6/files/patch-third__party_yasm_yasm__assemble.gni
new file mode 100644
index 000000000000..2a3e3fd1ecc4
--- /dev/null
+++ b/devel/electron6/files/patch-third__party_yasm_yasm__assemble.gni
@@ -0,0 +1,159 @@
+--- third_party/yasm/yasm_assemble.gni.orig 2019-09-10 10:43:21 UTC
++++ third_party/yasm/yasm_assemble.gni
+@@ -1,105 +1,23 @@
+-# Copyright 2014 The Chromium Authors. All rights reserved.
++# Copyright 2016 The Chromium Authors. All rights reserved.
+ # Use of this source code is governed by a BSD-style license that can be
+ # found in the LICENSE file.
+
+-# This provides the yasm_assemble() template which uses YASM to assemble
+-# assembly files.
+-#
+-# Files to be assembled with YASM should have an extension of .asm.
+-#
+-# Parameters
+-#
+-# yasm_flags (optional)
+-# [list of strings] Pass additional flags into YASM. These are appended
+-# to the command line. Note that the target machine type and system is
+-# already set up based on the current toolchain so you don't need to
+-# specify these things (see below).
+-#
+-# Example: yasm_flags = [ "--force-strict" ]
+-#
+-# include_dirs (optional)
+-# [list of dir names] List of additional include dirs. Note that the
+-# source root and the root generated file dir is always added, just like
+-# our C++ build sets up.
+-#
+-# Example: include_dirs = [ "//some/other/path", target_gen_dir ]
+-#
+-# defines (optional)
+-# [list of strings] List of defines, as with the native code defines.
+-#
+-# Example: defines = [ "FOO", "BAR=1" ]
+-#
+-# inputs, deps, visibility (optional)
+-# These have the same meaning as in an action.
+-#
+-# Example
+-#
+-# yasm_assemble("my_yasm_target") {
+-# sources = [
+-# "ultra_optimized_awesome.asm",
+-# ]
+-# include_dirs = [ "assembly_include" ]
+-# }
+-
+-if (is_mac || is_ios) {
+- if (current_cpu == "x86") {
+- _yasm_flags = [
+- "-fmacho32",
+- "-m",
+- "x86",
+- ]
+- } else if (current_cpu == "x64") {
+- _yasm_flags = [
+- "-fmacho64",
+- "-m",
+- "amd64",
+- ]
+- }
+-} else if (is_posix || is_fuchsia) {
+- if (current_cpu == "x86") {
+- _yasm_flags = [
+- "-felf32",
+- "-m",
+- "x86",
+- ]
+- } else if (current_cpu == "x64") {
+- _yasm_flags = [
+- "-DPIC",
+- "-felf64",
+- "-m",
+- "amd64",
+- ]
+- }
+-} else if (is_win) {
+- if (current_cpu == "x86") {
+- _yasm_flags = [
+- "-DPREFIX",
+- "-fwin32",
+- "-m",
+- "x86",
+- ]
+- } else if (current_cpu == "x64") {
+- _yasm_flags = [
+- "-fwin64",
+- "-m",
+- "amd64",
+- ]
+- }
++if (current_cpu == "x86") {
++ _yasm_flags = [
++ "-felf32",
++ "-m",
++ "x86",
++ ]
++} else if (current_cpu == "x64") {
++ _yasm_flags = [
++ "-DPIC",
++ "-felf64",
++ "-m",
++ "amd64",
++ ]
+ }
+
+-if (is_win) {
+- asm_obj_extension = "obj"
+-} else {
+- asm_obj_extension = "o"
+-}
+-
+ template("yasm_assemble") {
+- assert(defined(invoker.sources), "Need sources defined for $target_name")
+-
+- # Only depend on YASM on x86 systems. Force compilation of .asm files for
+- # ARM to fail.
+- assert(current_cpu == "x86" || current_cpu == "x64")
+-
+ action_name = "${target_name}_action"
+ source_set_name = target_name
+
+@@ -114,24 +32,12 @@ template("yasm_assemble") {
+ inputs = invoker.inputs
+ }
+
+- # Executable (first in the args). The binary might be in the root build dir
+- # (no cross-compiling) or in a toolchain-specific subdirectory of that
+- # (when cross-compiling).
+- yasm_label = "//third_party/yasm($host_toolchain)"
+- args = [ "./" + # Force current dir.
+- rebase_path(get_label_info(yasm_label, "root_out_dir") + "/yasm",
+- root_build_dir) ]
+-
+- # Deps.
+- deps = [
+- yasm_label,
+- ]
++ deps = []
+ if (defined(invoker.deps)) {
+ deps += invoker.deps
+ }
+
+- # Flags.
+- args += _yasm_flags
++ args = [ "yasm" ] + _yasm_flags
+ if (defined(invoker.yasm_flags)) {
+ args += invoker.yasm_flags
+ }
+@@ -188,9 +94,6 @@ template("yasm_assemble") {
+ }
+
+ sources = get_target_outputs(":$action_name")
+-
+- # Do not publicize any header to remove build dependency.
+- public = []
+
+ deps = [
+ ":$action_name",
diff --git a/devel/electron6/files/patch-third__party_zlib_arm__features.c b/devel/electron6/files/patch-third__party_zlib_arm__features.c
new file mode 100644
index 000000000000..c7ff3cd5f2a0
--- /dev/null
+++ b/devel/electron6/files/patch-third__party_zlib_arm__features.c
@@ -0,0 +1,46 @@
+--- third_party/zlib/arm_features.c.orig 2019-09-10 10:43:21 UTC
++++ third_party/zlib/arm_features.c
+@@ -16,6 +16,10 @@ int ZLIB_INTERNAL arm_cpu_enable_pmull = 0;
+ #include <pthread.h>
+ #endif
+
++#if defined(__FreeBSD__)
++#include <machine/armreg.h>
++#include <sys/types.h>
++#else
+ #if defined(ARMV8_OS_ANDROID)
+ #include <cpu-features.h>
+ #elif defined(ARMV8_OS_LINUX)
+@@ -30,6 +34,7 @@ int ZLIB_INTERNAL arm_cpu_enable_pmull = 0;
+ #else
+ #error arm_features.c ARM feature detection in not defined for your platform
+ #endif
++#endif
+
+ static void _arm_check_features(void);
+
+@@ -68,14 +73,24 @@ static void _arm_check_features(void)
+ arm_cpu_enable_crc32 = !!(features & ANDROID_CPU_ARM_FEATURE_CRC32);
+ arm_cpu_enable_pmull = !!(features & ANDROID_CPU_ARM_FEATURE_PMULL);
+ #elif defined(ARMV8_OS_LINUX) && defined(__aarch64__)
++#if defined(__FreeBSD__)
++ uint64_t id_aa64isar0 = READ_SPECIALREG(ID_AA64ISAR0_EL1);
++ if (ID_AA64ISAR0_AES(id_aa64isar0) == ID_AA64ISAR0_AES_PMULL)
++ arm_cpu_enable_pmull = 1;
++ if (ID_AA64ISAR0_CRC32(id_aa64isar0) == ID_AA64ISAR0_CRC32_BASE)
++ arm_cpu_enable_crc32 = 1;
++#else
+ unsigned long features = getauxval(AT_HWCAP);
+ arm_cpu_enable_crc32 = !!(features & HWCAP_CRC32);
+ arm_cpu_enable_pmull = !!(features & HWCAP_PMULL);
++#endif
+ #elif defined(ARMV8_OS_LINUX) && (defined(__ARM_NEON) || defined(__ARM_NEON__))
++#if !defined(__FreeBSD__)
+ /* Query HWCAP2 for ARMV8-A SoCs running in aarch32 mode */
+ unsigned long features = getauxval(AT_HWCAP2);
+ arm_cpu_enable_crc32 = !!(features & HWCAP2_CRC32);
+ arm_cpu_enable_pmull = !!(features & HWCAP2_PMULL);
++#endif
+ #elif defined(ARMV8_OS_FUCHSIA)
+ uint32_t features;
+ zx_status_t rc = zx_system_get_features(ZX_FEATURE_KIND_CPU, &features);
diff --git a/devel/electron6/files/patch-tools_gn_base_files_file__posix.cc b/devel/electron6/files/patch-tools_gn_base_files_file__posix.cc
new file mode 100644
index 000000000000..cd67de1b31bf
--- /dev/null
+++ b/devel/electron6/files/patch-tools_gn_base_files_file__posix.cc
@@ -0,0 +1,11 @@
+--- tools/gn/base/files/file_posix.cc.orig 2019-08-26 19:07:16 UTC
++++ tools/gn/base/files/file_posix.cc
+@@ -414,7 +414,7 @@ void File::DoInitialize(const FilePath& path, uint32_t
+ bool File::Flush() {
+ DCHECK(IsValid());
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ return !HANDLE_EINTR(fdatasync(file_.get()));
+ #else
+ return !HANDLE_EINTR(fsync(file_.get()));
diff --git a/devel/electron6/files/patch-tools_gn_base_files_file__util.h b/devel/electron6/files/patch-tools_gn_base_files_file__util.h
new file mode 100644
index 000000000000..50e6f6d47d46
--- /dev/null
+++ b/devel/electron6/files/patch-tools_gn_base_files_file__util.h
@@ -0,0 +1,11 @@
+--- tools/gn/base/files/file_util.h.orig 2019-08-26 19:07:16 UTC
++++ tools/gn/base/files/file_util.h
+@@ -361,7 +361,7 @@ bool VerifyPathControlledByAdmin(const base::FilePath&
+ // the directory |path|, in the number of FilePath::CharType, or -1 on failure.
+ int GetMaximumPathComponentLength(const base::FilePath& path);
+
+-#if defined(OS_LINUX) || defined(OS_AIX)
++#if defined(OS_LINUX) || defined(OS_AIX) || defined(OS_BSD)
+ // Broad categories of file systems as returned by statfs() on Linux.
+ enum FileSystemType {
+ FILE_SYSTEM_UNKNOWN, // statfs failed.
diff --git a/devel/electron6/files/patch-tools_gn_base_files_file__util__posix.cc b/devel/electron6/files/patch-tools_gn_base_files_file__util__posix.cc
new file mode 100644
index 000000000000..9371e261d354
--- /dev/null
+++ b/devel/electron6/files/patch-tools_gn_base_files_file__util__posix.cc
@@ -0,0 +1,11 @@
+--- tools/gn/base/files/file_util_posix.cc.orig 2019-08-26 19:07:16 UTC
++++ tools/gn/base/files/file_util_posix.cc
+@@ -254,7 +254,7 @@ bool ReplaceFile(const FilePath& from_path,
+ #endif // !defined(OS_NACL_NONSFI)
+
+ bool CreateLocalNonBlockingPipe(int fds[2]) {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ return pipe2(fds, O_CLOEXEC | O_NONBLOCK) == 0;
+ #else
+ int raw_fds[2];
diff --git a/devel/electron6/files/patch-tools_gn_base_files_scoped__file.cc b/devel/electron6/files/patch-tools_gn_base_files_scoped__file.cc
new file mode 100644
index 000000000000..62938b8813c6
--- /dev/null
+++ b/devel/electron6/files/patch-tools_gn_base_files_scoped__file.cc
@@ -0,0 +1,11 @@
+--- tools/gn/base/files/scoped_file.cc.orig 2019-08-26 19:07:16 UTC
++++ tools/gn/base/files/scoped_file.cc
+@@ -30,7 +30,7 @@ void ScopedFDCloseTraits::Free(int fd) {
+ // a single open directory would bypass the entire security model.
+ int ret = IGNORE_EINTR(close(fd));
+
+-#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_FUCHSIA) || \
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_FUCHSIA) || defined(OS_BSD) || \
+ defined(OS_ANDROID)
+ // NB: Some file descriptors can return errors from close() e.g. network
+ // filesystems such as NFS and Linux input devices. On Linux, macOS, and
diff --git a/devel/electron6/files/patch-tools_gn_build_gen.py b/devel/electron6/files/patch-tools_gn_build_gen.py
new file mode 100644
index 000000000000..17c1d1dad583
--- /dev/null
+++ b/devel/electron6/files/patch-tools_gn_build_gen.py
@@ -0,0 +1,33 @@
+--- tools/gn/build/gen.py.orig 2019-08-26 19:07:16 UTC
++++ tools/gn/build/gen.py
+@@ -46,7 +46,7 @@ class Platform(object):
+
+ @staticmethod
+ def known_platforms():
+- return ['linux', 'darwin', 'msvc', 'aix', 'fuchsia', 'openbsd']
++ return ['linux', 'darwin', 'msvc', 'aix', 'fuchsia', 'openbsd', 'freebsd']
+
+ def platform(self):
+ return self._platform
+@@ -69,6 +69,9 @@ class Platform(object):
+ def is_aix(self):
+ return self._platform == 'aix'
+
++ def is_freebsd(self):
++ return self._platform == 'freebsd'
++
+ def is_posix(self):
+ return self._platform in ['linux', 'freebsd', 'darwin', 'aix', 'openbsd']
+
+@@ -335,6 +338,11 @@ def WriteGNNinja(path, platform, host, options):
+ elif platform.is_aix():
+ cflags_cc.append('-maix64')
+ ldflags.append('-maix64')
++ elif platform.is_freebsd():
++ cflags.extend(['-Wno-deprecated-register', '-Wno-parentheses-equality'])
++ ldflags.extend(['-pthread'])
++ libs.extend(['-lexecinfo', '-lkvm', '-lutil'])
++ include_dirs += ['/usr/local/include']
+
+ if platform.is_posix():
+ ldflags.append('-pthread')
diff --git a/devel/electron6/files/patch-tools_gn_tools_gn_exec__process.cc b/devel/electron6/files/patch-tools_gn_tools_gn_exec__process.cc
new file mode 100644
index 000000000000..db7042144c3f
--- /dev/null
+++ b/devel/electron6/files/patch-tools_gn_tools_gn_exec__process.cc
@@ -0,0 +1,13 @@
+--- tools/gn/tools/gn/exec_process.cc.orig 2019-08-26 19:07:16 UTC
++++ tools/gn/tools/gn/exec_process.cc
+@@ -29,6 +29,10 @@
+ #include "base/posix/file_descriptor_shuffle.h"
+ #endif
+
++#if defined(OS_BSD)
++#include <signal.h>
++#endif
++
+ namespace internal {
+
+ #if defined(OS_WIN)
diff --git a/devel/electron6/files/patch-tools_gn_util_sys__info.cc b/devel/electron6/files/patch-tools_gn_util_sys__info.cc
new file mode 100644
index 000000000000..408fd97444a1
--- /dev/null
+++ b/devel/electron6/files/patch-tools_gn_util_sys__info.cc
@@ -0,0 +1,11 @@
+--- tools/gn/util/sys_info.cc.orig 2019-08-26 19:07:16 UTC
++++ tools/gn/util/sys_info.cc
+@@ -28,6 +28,8 @@ std::string OperatingSystemArchitecture() {
+ arch = "x86";
+ } else if (arch == "amd64") {
+ arch = "x86_64";
++ } else if (arch == "arm64") {
++ arch = "aarch64";
+ } else if (std::string(info.sysname) == "AIX") {
+ arch = "ppc64";
+ }
diff --git a/devel/electron6/files/patch-tools_json__schema__compiler_feature__compiler.py b/devel/electron6/files/patch-tools_json__schema__compiler_feature__compiler.py
new file mode 100644
index 000000000000..b236a8307306
--- /dev/null
+++ b/devel/electron6/files/patch-tools_json__schema__compiler_feature__compiler.py
@@ -0,0 +1,10 @@
+--- tools/json_schema_compiler/feature_compiler.py.orig 2019-09-10 11:14:38 UTC
++++ tools/json_schema_compiler/feature_compiler.py
+@@ -213,6 +213,7 @@ FEATURE_GRAMMAR = (
+ 'enum_map': {
+ 'chromeos': 'Feature::CHROMEOS_PLATFORM',
+ 'linux': 'Feature::LINUX_PLATFORM',
++ 'bsd': 'Feature::LINUX_PLATFORM',
+ 'mac': 'Feature::MACOSX_PLATFORM',
+ 'win': 'Feature::WIN_PLATFORM',
+ }
diff --git a/devel/electron6/files/patch-tools_json__schema__compiler_model.py b/devel/electron6/files/patch-tools_json__schema__compiler_model.py
new file mode 100644
index 000000000000..968194f234fe
--- /dev/null
+++ b/devel/electron6/files/patch-tools_json__schema__compiler_model.py
@@ -0,0 +1,11 @@
+--- tools/json_schema_compiler/model.py.orig 2019-09-10 11:14:38 UTC
++++ tools/json_schema_compiler/model.py
+@@ -605,7 +605,7 @@ class Platforms(object):
+ """
+ CHROMEOS = _PlatformInfo("chromeos")
+ CHROMEOS_TOUCH = _PlatformInfo("chromeos_touch")
+- LINUX = _PlatformInfo("linux")
++ LINUX = _PlatformInfo("bsd")
+ MAC = _PlatformInfo("mac")
+ WIN = _PlatformInfo("win")
+
diff --git a/devel/electron6/files/patch-tools_perf_chrome__telemetry__build_BUILD.gn b/devel/electron6/files/patch-tools_perf_chrome__telemetry__build_BUILD.gn
new file mode 100644
index 000000000000..fb5992528e9e
--- /dev/null
+++ b/devel/electron6/files/patch-tools_perf_chrome__telemetry__build_BUILD.gn
@@ -0,0 +1,11 @@
+--- tools/perf/chrome_telemetry_build/BUILD.gn.orig 2019-09-10 11:14:38 UTC
++++ tools/perf/chrome_telemetry_build/BUILD.gn
+@@ -43,7 +43,7 @@ group("telemetry_chrome_test") {
+ data_deps += [ "//chrome:reorder_imports" ]
+ }
+
+- if (is_linux) {
++ if (is_linux && !is_bsd) {
+ data_deps += [ "//third_party/breakpad:dump_syms($host_toolchain)" ]
+ }
+
diff --git a/devel/electron6/files/patch-tools_variations_fieldtrial__to__struct.py b/devel/electron6/files/patch-tools_variations_fieldtrial__to__struct.py
new file mode 100644
index 000000000000..586b254a5223
--- /dev/null
+++ b/devel/electron6/files/patch-tools_variations_fieldtrial__to__struct.py
@@ -0,0 +1,10 @@
+--- tools/variations/fieldtrial_to_struct.py.orig 2019-09-10 10:43:22 UTC
++++ tools/variations/fieldtrial_to_struct.py
+@@ -33,6 +33,7 @@ finally:
+ _platforms = [
+ 'android',
+ 'android_webview',
++ 'freebsd',
+ 'chromeos',
+ 'fuchsia',
+ 'ios',
diff --git a/devel/electron6/files/patch-ui_base_dragdrop_os__exchange__data__provider__factory.cc b/devel/electron6/files/patch-ui_base_dragdrop_os__exchange__data__provider__factory.cc
new file mode 100644
index 000000000000..5ebd5c47cd43
--- /dev/null
+++ b/devel/electron6/files/patch-ui_base_dragdrop_os__exchange__data__provider__factory.cc
@@ -0,0 +1,20 @@
+--- ui/base/dragdrop/os_exchange_data_provider_factory.cc.orig 2019-09-10 11:14:39 UTC
++++ ui/base/dragdrop/os_exchange_data_provider_factory.cc
+@@ -8,7 +8,7 @@
+
+ #if defined(USE_X11)
+ #include "ui/base/dragdrop/os_exchange_data_provider_aurax11.h"
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ #include "ui/base/dragdrop/os_exchange_data_provider_aura.h"
+ #elif defined(OS_MACOSX)
+ #include "ui/base/dragdrop/os_exchange_data_provider_builder_mac.h"
+@@ -23,7 +23,7 @@ std::unique_ptr<OSExchangeData::Provider>
+ OSExchangeDataProviderFactory::CreateProvider() {
+ #if defined(USE_X11)
+ return std::make_unique<OSExchangeDataProviderAuraX11>();
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ return std::make_unique<OSExchangeDataProviderAura>();
+ #elif defined(OS_MACOSX)
+ return ui::BuildOSExchangeDataProviderMac();
diff --git a/devel/electron6/files/patch-ui_base_ime_init_input__method__initializer.cc b/devel/electron6/files/patch-ui_base_ime_init_input__method__initializer.cc
new file mode 100644
index 000000000000..245a232998a5
--- /dev/null
+++ b/devel/electron6/files/patch-ui_base_ime_init_input__method__initializer.cc
@@ -0,0 +1,38 @@
+--- ui/base/ime/init/input_method_initializer.cc.orig 2019-09-10 10:43:22 UTC
++++ ui/base/ime/init/input_method_initializer.cc
+@@ -8,7 +8,7 @@
+
+ #if defined(OS_CHROMEOS)
+ #include "ui/base/ime/ime_bridge.h"
+-#elif defined(USE_AURA) && defined(OS_LINUX)
++#elif defined(USE_AURA) && (defined(OS_LINUX) || defined(OS_BSD))
+ #include "base/logging.h"
+ #include "ui/base/ime/linux/fake_input_method_context_factory.h"
+ #elif defined(OS_WIN)
+@@ -18,7 +18,7 @@
+
+ namespace {
+
+-#if !defined(OS_CHROMEOS) && defined(USE_AURA) && defined(OS_LINUX)
++#if !defined(OS_CHROMEOS) && defined(USE_AURA) && (defined(OS_LINUX) || defined(OS_BSD))
+ const ui::LinuxInputMethodContextFactory*
+ g_linux_input_method_context_factory_for_testing;
+ #endif
+@@ -46,7 +46,7 @@ void ShutdownInputMethod() {
+ void InitializeInputMethodForTesting() {
+ #if defined(OS_CHROMEOS)
+ IMEBridge::Initialize();
+-#elif defined(USE_AURA) && defined(OS_LINUX)
++#elif defined(USE_AURA) && (defined(OS_LINUX) || defined(OS_BSD))
+ if (!g_linux_input_method_context_factory_for_testing)
+ g_linux_input_method_context_factory_for_testing =
+ new FakeInputMethodContextFactory();
+@@ -67,7 +67,7 @@ void InitializeInputMethodForTesting() {
+ void ShutdownInputMethodForTesting() {
+ #if defined(OS_CHROMEOS)
+ IMEBridge::Shutdown();
+-#elif defined(USE_AURA) && defined(OS_LINUX)
++#elif defined(USE_AURA) && (defined(OS_LINUX) || defined(OS_BSD))
+ const LinuxInputMethodContextFactory* factory =
+ LinuxInputMethodContextFactory::instance();
+ CHECK(!factory || factory == g_linux_input_method_context_factory_for_testing)
diff --git a/devel/electron6/files/patch-ui_base_resource_resource__bundle.cc b/devel/electron6/files/patch-ui_base_resource_resource__bundle.cc
new file mode 100644
index 000000000000..4ccbc9fd46df
--- /dev/null
+++ b/devel/electron6/files/patch-ui_base_resource_resource__bundle.cc
@@ -0,0 +1,20 @@
+--- ui/base/resource/resource_bundle.cc.orig 2019-09-10 11:14:39 UTC
++++ ui/base/resource/resource_bundle.cc
+@@ -701,7 +701,7 @@ void ResourceBundle::ReloadFonts() {
+ }
+
+ ScaleFactor ResourceBundle::GetMaxScaleFactor() const {
+-#if defined(OS_WIN) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD)
+ return max_scale_factor_;
+ #else
+ return GetSupportedScaleFactors().back();
+@@ -754,7 +754,7 @@ void ResourceBundle::InitSharedInstance(Delegate* dele
+ // On platforms other than iOS, 100P is always a supported scale factor.
+ // For Windows we have a separate case in this function.
+ supported_scale_factors.push_back(SCALE_FACTOR_100P);
+-#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_WIN)
++#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD)
+ supported_scale_factors.push_back(SCALE_FACTOR_200P);
+ #endif
+ #endif
diff --git a/devel/electron6/files/patch-ui_base_resource_resource__bundle__freebsd.cc b/devel/electron6/files/patch-ui_base_resource_resource__bundle__freebsd.cc
new file mode 100644
index 000000000000..be6d1ee45f7a
--- /dev/null
+++ b/devel/electron6/files/patch-ui_base_resource_resource__bundle__freebsd.cc
@@ -0,0 +1,24 @@
+--- ui/base/resource/resource_bundle_freebsd.cc.orig 2019-09-16 09:25:25 UTC
++++ ui/base/resource/resource_bundle_freebsd.cc
+@@ -0,0 +1,21 @@
++// Copyright 2017 The Chromium Authors. All rights reserved.
++// Use of this source code is governed by a BSD-style license that can be
++// found in the LICENSE file.
++
++#include "ui/base/resource/resource_bundle.h"
++
++#include "base/logging.h"
++#include "base/macros.h"
++#include "ui/gfx/image/image.h"
++
++namespace ui {
++
++void ResourceBundle::LoadCommonResources() {
++ LoadChromeResources();
++}
++
++gfx::Image& ResourceBundle::GetNativeImageNamed(int resource_id) {
++ return GetImageNamed(resource_id);
++}
++
++} // namespace ui
diff --git a/devel/electron6/files/patch-ui_base_ui__base__features.cc b/devel/electron6/files/patch-ui_base_ui__base__features.cc
new file mode 100644
index 000000000000..b577c3f28576
--- /dev/null
+++ b/devel/electron6/files/patch-ui_base_ui__base__features.cc
@@ -0,0 +1,20 @@
+--- ui/base/ui_base_features.cc.orig 2019-09-10 11:14:39 UTC
++++ ui/base/ui_base_features.cc
+@@ -108,7 +108,7 @@ const base::Feature kEnableAutomaticUiAdjustmentsForTo
+ "EnableAutomaticUiAdjustmentsForTouch", base::FEATURE_ENABLED_BY_DEFAULT};
+ #endif // defined(OS_WIN) || defined(OS_CHROMEOS)
+
+-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+ // Enables stylus appearing as touch when in contact with digitizer.
+ const base::Feature kDirectManipulationStylus = {
+ "DirectManipulationStylus",
+@@ -118,7 +118,7 @@ const base::Feature kDirectManipulationStylus = {
+ base::FEATURE_DISABLED_BY_DEFAULT
+ #endif
+ };
+-#endif // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
++#endif // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+
+ const base::Feature kMash = {"Mash", base::FEATURE_DISABLED_BY_DEFAULT};
+
diff --git a/devel/electron6/files/patch-ui_base_ui__base__features.h b/devel/electron6/files/patch-ui_base_ui__base__features.h
new file mode 100644
index 000000000000..b0ff90b22835
--- /dev/null
+++ b/devel/electron6/files/patch-ui_base_ui__base__features.h
@@ -0,0 +1,15 @@
+--- ui/base/ui_base_features.h.orig 2019-09-10 11:14:39 UTC
++++ ui/base/ui_base_features.h
+@@ -59,10 +59,10 @@ COMPONENT_EXPORT(UI_BASE_FEATURES)
+ extern const base::Feature kEnableAutomaticUiAdjustmentsForTouch;
+ #endif // defined(OS_WIN) || defined(OS_CHROMEOS)
+
+-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+ COMPONENT_EXPORT(UI_BASE_FEATURES)
+ extern const base::Feature kDirectManipulationStylus;
+-#endif // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
++#endif // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+
+ // Used to have ash (Chrome OS system UI) run in its own process.
+ // TODO(jamescook): Make flag only available in Chrome OS.
diff --git a/devel/electron6/files/patch-ui_base_webui_web__ui__util.cc b/devel/electron6/files/patch-ui_base_webui_web__ui__util.cc
new file mode 100644
index 000000000000..ef473e4ccc07
--- /dev/null
+++ b/devel/electron6/files/patch-ui_base_webui_web__ui__util.cc
@@ -0,0 +1,11 @@
+--- ui/base/webui/web_ui_util.cc.orig 2019-09-10 10:43:22 UTC
++++ ui/base/webui/web_ui_util.cc
+@@ -215,7 +215,7 @@ std::string GetFontFamily() {
+
+ // TODO(dnicoara) Remove Ozone check when PlatformFont support is introduced
+ // into Ozone: crbug.com/320050
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) && !defined(USE_OZONE)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS) && !defined(USE_OZONE)
+ font_family = ui::ResourceBundle::GetSharedInstance().GetFont(
+ ui::ResourceBundle::BaseFont).GetFontName() + ", " + font_family;
+ #endif
diff --git a/devel/electron6/files/patch-ui_events_devices_x11_device__data__manager__x11.cc b/devel/electron6/files/patch-ui_events_devices_x11_device__data__manager__x11.cc
new file mode 100644
index 000000000000..aa4ee819a444
--- /dev/null
+++ b/devel/electron6/files/patch-ui_events_devices_x11_device__data__manager__x11.cc
@@ -0,0 +1,19 @@
+--- ui/events/devices/x11/device_data_manager_x11.cc.orig 2019-09-10 11:14:39 UTC
++++ ui/events/devices/x11/device_data_manager_x11.cc
+@@ -828,6 +828,8 @@ void DeviceDataManagerX11::SetDisabledKeyboardAllowedK
+ }
+
+ void DeviceDataManagerX11::DisableDevice(int deviceid) {
++ NOTIMPLEMENTED();
++#if !defined(OS_BSD)
+ blocked_devices_.set(deviceid, true);
+ // TODO(rsadam@): Support blocking touchscreen devices.
+ std::vector<InputDevice> keyboards = GetKeyboardDevices();
+@@ -838,6 +840,7 @@ void DeviceDataManagerX11::DisableDevice(int deviceid)
+ keyboards.erase(it);
+ DeviceDataManager::OnKeyboardDevicesUpdated(keyboards);
+ }
++#endif
+ }
+
+ void DeviceDataManagerX11::EnableDevice(int deviceid) {
diff --git a/devel/electron6/files/patch-ui_events_event__switches.cc b/devel/electron6/files/patch-ui_events_event__switches.cc
new file mode 100644
index 000000000000..fae80f473451
--- /dev/null
+++ b/devel/electron6/files/patch-ui_events_event__switches.cc
@@ -0,0 +1,11 @@
+--- ui/events/event_switches.cc.orig 2019-09-10 10:43:23 UTC
++++ ui/events/event_switches.cc
+@@ -14,7 +14,7 @@ namespace switches {
+ const char kCompensateForUnstablePinchZoom[] =
+ "compensate-for-unstable-pinch-zoom";
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_FREEBSD)
+ // Tells chrome to interpret events from these devices as touch events. Only
+ // available with XInput 2 (i.e. X server 1.8 or above). The id's of the
+ // devices can be retrieved from 'xinput list'.
diff --git a/devel/electron6/files/patch-ui_events_event__switches.h b/devel/electron6/files/patch-ui_events_event__switches.h
new file mode 100644
index 000000000000..816e9406f754
--- /dev/null
+++ b/devel/electron6/files/patch-ui_events_event__switches.h
@@ -0,0 +1,11 @@
+--- ui/events/event_switches.h.orig 2019-09-10 10:43:23 UTC
++++ ui/events/event_switches.h
+@@ -13,7 +13,7 @@ namespace switches {
+
+ EVENTS_BASE_EXPORT extern const char kCompensateForUnstablePinchZoom[];
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_FREEBSD)
+ EVENTS_BASE_EXPORT extern const char kTouchDevices[];
+ EVENTS_BASE_EXPORT extern const char kPenDevices[];
+ #endif
diff --git a/devel/electron6/files/patch-ui_events_keycodes_dom_keycode__converter.cc b/devel/electron6/files/patch-ui_events_keycodes_dom_keycode__converter.cc
new file mode 100644
index 000000000000..d36eda41e9fd
--- /dev/null
+++ b/devel/electron6/files/patch-ui_events_keycodes_dom_keycode__converter.cc
@@ -0,0 +1,11 @@
+--- ui/events/keycodes/dom/keycode_converter.cc.orig 2019-09-10 10:43:23 UTC
++++ ui/events/keycodes/dom/keycode_converter.cc
+@@ -19,7 +19,7 @@ namespace {
+ // and DOM Level 3 |code| strings.
+ #if defined(OS_WIN)
+ #define USB_KEYMAP(usb, evdev, xkb, win, mac, code, id) {usb, win, code}
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ #define USB_KEYMAP(usb, evdev, xkb, win, mac, code, id) {usb, xkb, code}
+ #elif defined(OS_MACOSX)
+ #define USB_KEYMAP(usb, evdev, xkb, win, mac, code, id) {usb, mac, code}
diff --git a/devel/electron6/files/patch-ui_gfx_BUILD.gn b/devel/electron6/files/patch-ui_gfx_BUILD.gn
new file mode 100644
index 000000000000..3e207423f96b
--- /dev/null
+++ b/devel/electron6/files/patch-ui_gfx_BUILD.gn
@@ -0,0 +1,11 @@
+--- ui/gfx/BUILD.gn.orig 2019-09-10 11:14:39 UTC
++++ ui/gfx/BUILD.gn
+@@ -550,7 +550,7 @@ jumbo_source_set("memory_buffer_sources") {
+ deps += [ "//build/config/linux/libdrm" ]
+ }
+
+- if (is_linux || is_android) {
++ if ((is_linux || is_android) && !is_bsd) {
+ deps += [ "//third_party/libsync" ]
+ }
+
diff --git a/devel/electron6/files/patch-ui_gfx_canvas__skia.cc b/devel/electron6/files/patch-ui_gfx_canvas__skia.cc
new file mode 100644
index 000000000000..ab60d027901b
--- /dev/null
+++ b/devel/electron6/files/patch-ui_gfx_canvas__skia.cc
@@ -0,0 +1,11 @@
+--- ui/gfx/canvas_skia.cc.orig 2019-09-10 10:43:23 UTC
++++ ui/gfx/canvas_skia.cc
+@@ -209,7 +209,7 @@ void Canvas::DrawStringRectWithFlags(const base::strin
+ Range range = StripAcceleratorChars(flags, &adjusted_text);
+ bool elide_text = ((flags & NO_ELLIPSIS) == 0);
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // On Linux, eliding really means fading the end of the string. But only
+ // for LTR text. RTL text is still elided (on the left) with "...".
+ if (elide_text) {
diff --git a/devel/electron6/files/patch-ui_gfx_codec_jpeg__codec.cc b/devel/electron6/files/patch-ui_gfx_codec_jpeg__codec.cc
new file mode 100644
index 000000000000..99439931118b
--- /dev/null
+++ b/devel/electron6/files/patch-ui_gfx_codec_jpeg__codec.cc
@@ -0,0 +1,20 @@
+--- ui/gfx/codec/jpeg_codec.cc.orig 2019-09-10 10:43:23 UTC
++++ ui/gfx/codec/jpeg_codec.cc
+@@ -207,6 +207,7 @@ bool JPEGCodec::Decode(const unsigned char* input, siz
+ case JCS_GRAYSCALE:
+ case JCS_RGB:
+ case JCS_YCbCr:
++#ifdef JCS_EXTENSIONS
+ // Choose an output colorspace and return if it is an unsupported one.
+ // Same as JPEGCodec::Encode(), libjpeg-turbo supports all input formats
+ // used by Chromium (i.e. RGBA and BGRA) and we just map the input
+@@ -223,6 +224,9 @@ bool JPEGCodec::Decode(const unsigned char* input, siz
+ NOTREACHED() << "Invalid pixel format";
+ return false;
+ }
++#else
++ cinfo.out_color_space = JCS_RGB;
++#endif
+ break;
+ case JCS_CMYK:
+ case JCS_YCCK:
diff --git a/devel/electron6/files/patch-ui_gfx_font__fallback__linux.cc b/devel/electron6/files/patch-ui_gfx_font__fallback__linux.cc
new file mode 100644
index 000000000000..c80f6192a310
--- /dev/null
+++ b/devel/electron6/files/patch-ui_gfx_font__fallback__linux.cc
@@ -0,0 +1,13 @@
+--- ui/gfx/font_fallback_linux.cc.orig 2019-09-10 11:14:39 UTC
++++ ui/gfx/font_fallback_linux.cc
+@@ -16,6 +16,10 @@
+ #include "base/trace_event/trace_event.h"
+ #include "ui/gfx/font.h"
+
++#if defined(OS_BSD)
++#include <unistd.h>
++#endif
++
+ namespace gfx {
+
+ namespace {
diff --git a/devel/electron6/files/patch-ui_gfx_font__list.cc b/devel/electron6/files/patch-ui_gfx_font__list.cc
new file mode 100644
index 000000000000..36714e57b69e
--- /dev/null
+++ b/devel/electron6/files/patch-ui_gfx_font__list.cc
@@ -0,0 +1,11 @@
+--- ui/gfx/font_list.cc.orig 2019-09-10 10:43:23 UTC
++++ ui/gfx/font_list.cc
+@@ -24,7 +24,7 @@ base::LazyInstance<scoped_refptr<gfx::FontListImpl>>::
+ bool g_default_impl_initialized = false;
+
+ bool IsFontFamilyAvailable(const std::string& family, SkFontMgr* fontManager) {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ return !!fontManager->legacyMakeTypeface(family.c_str(), SkFontStyle());
+ #else
+ sk_sp<SkFontStyleSet> set(fontManager->matchFamily(family.c_str()));
diff --git a/devel/electron6/files/patch-ui_gfx_font__render__params.h b/devel/electron6/files/patch-ui_gfx_font__render__params.h
new file mode 100644
index 000000000000..1e58547bab1f
--- /dev/null
+++ b/devel/electron6/files/patch-ui_gfx_font__render__params.h
@@ -0,0 +1,18 @@
+--- ui/gfx/font_render_params.h.orig 2019-09-10 10:43:23 UTC
++++ ui/gfx/font_render_params.h
+@@ -111,13 +111,13 @@ GFX_EXPORT FontRenderParams GetFontRenderParams(
+ const FontRenderParamsQuery& query,
+ std::string* family_out);
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Clears GetFontRenderParams()'s cache. Intended to be called by tests that are
+ // changing Fontconfig's configuration.
+ GFX_EXPORT void ClearFontRenderParamsCacheForTest();
+ #endif
+
+-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_ANDROID) || \
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD) || \
+ defined(OS_FUCHSIA)
+ // Gets the device scale factor to query the FontRenderParams.
+ GFX_EXPORT float GetFontRenderParamsDeviceScaleFactor();
diff --git a/devel/electron6/files/patch-ui_gfx_gpu__memory__buffer.h b/devel/electron6/files/patch-ui_gfx_gpu__memory__buffer.h
new file mode 100644
index 000000000000..4603dbaa65b2
--- /dev/null
+++ b/devel/electron6/files/patch-ui_gfx_gpu__memory__buffer.h
@@ -0,0 +1,20 @@
+--- ui/gfx/gpu_memory_buffer.h.orig 2019-09-10 10:43:23 UTC
++++ ui/gfx/gpu_memory_buffer.h
+@@ -16,7 +16,7 @@
+ #include "ui/gfx/geometry/rect.h"
+ #include "ui/gfx/gfx_export.h"
+
+-#if defined(USE_OZONE) || defined(OS_LINUX)
++#if defined(USE_OZONE) || defined(OS_LINUX) || defined(OS_BSD)
+ #include "ui/gfx/native_pixmap_handle.h"
+ #elif defined(OS_MACOSX) && !defined(OS_IOS)
+ #include "ui/gfx/mac/io_surface.h"
+@@ -65,7 +65,7 @@ struct GFX_EXPORT GpuMemoryBufferHandle {
+ base::UnsafeSharedMemoryRegion region;
+ uint32_t offset;
+ int32_t stride;
+-#if defined(OS_LINUX) || defined(OS_FUCHSIA)
++#if defined(OS_LINUX) || defined(OS_FUCHSIA) || defined(OS_BSD)
+ NativePixmapHandle native_pixmap_handle;
+ #elif defined(OS_MACOSX) && !defined(OS_IOS)
+ ScopedRefCountedIOSurfaceMachPort mach_port;
diff --git a/devel/electron6/files/patch-ui_gfx_ipc_gfx__param__traits__macros.h b/devel/electron6/files/patch-ui_gfx_ipc_gfx__param__traits__macros.h
new file mode 100644
index 000000000000..fd179ec18f00
--- /dev/null
+++ b/devel/electron6/files/patch-ui_gfx_ipc_gfx__param__traits__macros.h
@@ -0,0 +1,35 @@
+--- ui/gfx/ipc/gfx_param_traits_macros.h.orig 2019-09-10 11:14:39 UTC
++++ ui/gfx/ipc/gfx_param_traits_macros.h
+@@ -18,7 +18,7 @@
+ #include "ui/gfx/selection_bound.h"
+ #include "ui/gfx/swap_result.h"
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include "ui/gfx/native_pixmap_handle.h"
+ #endif
+
+@@ -51,7 +51,7 @@ IPC_STRUCT_TRAITS_BEGIN(gfx::GpuMemoryBufferHandle)
+ IPC_STRUCT_TRAITS_MEMBER(region)
+ IPC_STRUCT_TRAITS_MEMBER(offset)
+ IPC_STRUCT_TRAITS_MEMBER(stride)
+-#if defined(OS_LINUX) || defined(OS_FUCHSIA)
++#if defined(OS_LINUX) || defined(OS_FUCHSIA) || defined(OS_BSD)
+ IPC_STRUCT_TRAITS_MEMBER(native_pixmap_handle)
+ #elif defined(OS_MACOSX)
+ IPC_STRUCT_TRAITS_MEMBER(mach_port)
+@@ -66,12 +66,12 @@ IPC_STRUCT_TRAITS_BEGIN(gfx::GpuMemoryBufferId)
+ IPC_STRUCT_TRAITS_MEMBER(id)
+ IPC_STRUCT_TRAITS_END()
+
+-#if defined(OS_LINUX) || defined(OS_FUCHSIA)
++#if defined(OS_LINUX) || defined(OS_FUCHSIA) || defined(OS_BSD)
+ IPC_STRUCT_TRAITS_BEGIN(gfx::NativePixmapPlane)
+ IPC_STRUCT_TRAITS_MEMBER(stride)
+ IPC_STRUCT_TRAITS_MEMBER(offset)
+ IPC_STRUCT_TRAITS_MEMBER(size)
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ IPC_STRUCT_TRAITS_MEMBER(fd)
+ #elif defined(OS_FUCHSIA)
+ IPC_STRUCT_TRAITS_MEMBER(vmo)
diff --git a/devel/electron6/files/patch-ui_gfx_linux_client__native__pixmap__dmabuf.cc b/devel/electron6/files/patch-ui_gfx_linux_client__native__pixmap__dmabuf.cc
new file mode 100644
index 000000000000..3cae7d9d9435
--- /dev/null
+++ b/devel/electron6/files/patch-ui_gfx_linux_client__native__pixmap__dmabuf.cc
@@ -0,0 +1,25 @@
+--- ui/gfx/linux/client_native_pixmap_dmabuf.cc.orig 2019-09-10 11:14:39 UTC
++++ ui/gfx/linux/client_native_pixmap_dmabuf.cc
+@@ -5,7 +5,9 @@
+ #include "ui/gfx/linux/client_native_pixmap_dmabuf.h"
+
+ #include <fcntl.h>
++#if !defined(__FreeBSD__)
+ #include <linux/version.h>
++#endif
+ #include <stddef.h>
+ #include <sys/ioctl.h>
+ #include <sys/mman.h>
+@@ -24,11 +26,7 @@
+ #include "build/build_config.h"
+ #include "ui/gfx/switches.h"
+
+-#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 11, 0)
+-#include <linux/dma-buf.h>
+-#else
+-#include <linux/types.h>
+-
++#if defined(__FreeBSD__)
+ struct dma_buf_sync {
+ __u64 flags;
+ };
diff --git a/devel/electron6/files/patch-ui_gfx_mojo_buffer__types__struct__traits.cc b/devel/electron6/files/patch-ui_gfx_mojo_buffer__types__struct__traits.cc
new file mode 100644
index 000000000000..881c9034fc75
--- /dev/null
+++ b/devel/electron6/files/patch-ui_gfx_mojo_buffer__types__struct__traits.cc
@@ -0,0 +1,66 @@
+--- ui/gfx/mojo/buffer_types_struct_traits.cc.orig 2019-09-10 11:14:39 UTC
++++ ui/gfx/mojo/buffer_types_struct_traits.cc
+@@ -24,15 +24,15 @@ bool StructTraits<gfx::mojom::BufferUsageAndFormatData
+ return data.ReadUsage(&out->usage) && data.ReadFormat(&out->format);
+ }
+
+-#if defined(OS_LINUX) || defined(USE_OZONE)
++#if defined(OS_LINUX) || defined(USE_OZONE) || defined(OS_BSD)
+ mojo::ScopedHandle StructTraits<
+ gfx::mojom::NativePixmapPlaneDataView,
+ gfx::NativePixmapPlane>::buffer_handle(gfx::NativePixmapPlane& plane) {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ return mojo::WrapPlatformFile(plane.fd.release());
+ #elif defined(OS_FUCHSIA)
+ return mojo::WrapPlatformHandle(mojo::PlatformHandle(std::move(plane.vmo)));
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+ }
+
+ bool StructTraits<
+@@ -45,7 +45,7 @@ bool StructTraits<
+
+ mojo::PlatformHandle handle =
+ mojo::UnwrapPlatformHandle(data.TakeBufferHandle());
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ if (!handle.is_fd())
+ return false;
+ out->fd = handle.TakeFD();
+@@ -53,7 +53,7 @@ bool StructTraits<
+ if (!handle.is_handle())
+ return false;
+ out->vmo = zx::vmo(handle.TakeHandle());
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+
+ return true;
+ }
+@@ -71,7 +71,7 @@ bool StructTraits<
+ out->modifier = data.modifier();
+ return data.ReadPlanes(&out->planes);
+ }
+-#endif // defined(OS_LINUX) || defined(USE_OZONE)
++#endif // defined(OS_LINUX) || defined(USE_OZONE) || defined(OS_BSD)
+
+ gfx::mojom::GpuMemoryBufferPlatformHandlePtr StructTraits<
+ gfx::mojom::GpuMemoryBufferHandleDataView,
+@@ -84,7 +84,7 @@ gfx::mojom::GpuMemoryBufferPlatformHandlePtr StructTra
+ return gfx::mojom::GpuMemoryBufferPlatformHandle::NewSharedMemoryHandle(
+ std::move(handle.region));
+ case gfx::NATIVE_PIXMAP:
+-#if defined(OS_LINUX) || defined(USE_OZONE)
++#if defined(OS_LINUX) || defined(USE_OZONE) || defined(OS_BSD)
+ return gfx::mojom::GpuMemoryBufferPlatformHandle::NewNativePixmapHandle(
+ std::move(handle.native_pixmap_handle));
+ #else
+@@ -160,7 +160,7 @@ bool StructTraits<gfx::mojom::GpuMemoryBufferHandleDat
+ out->type = gfx::SHARED_MEMORY_BUFFER;
+ out->region = std::move(platform_handle->get_shared_memory_handle());
+ return true;
+-#if defined(OS_LINUX) || defined(USE_OZONE)
++#if defined(OS_LINUX) || defined(USE_OZONE) || defined(OS_BSD)
+ case gfx::mojom::GpuMemoryBufferPlatformHandleDataView::Tag::
+ NATIVE_PIXMAP_HANDLE:
+ out->type = gfx::NATIVE_PIXMAP;
diff --git a/devel/electron6/files/patch-ui_gfx_mojo_buffer__types__struct__traits.h b/devel/electron6/files/patch-ui_gfx_mojo_buffer__types__struct__traits.h
new file mode 100644
index 000000000000..cd1776fe990c
--- /dev/null
+++ b/devel/electron6/files/patch-ui_gfx_mojo_buffer__types__struct__traits.h
@@ -0,0 +1,20 @@
+--- ui/gfx/mojo/buffer_types_struct_traits.h.orig 2019-09-10 11:14:39 UTC
++++ ui/gfx/mojo/buffer_types_struct_traits.h
+@@ -188,7 +188,7 @@ struct StructTraits<gfx::mojom::GpuMemoryBufferIdDataV
+ }
+ };
+
+-#if defined(OS_LINUX) || defined(USE_OZONE)
++#if defined(OS_LINUX) || defined(USE_OZONE) || defined(OS_BSD)
+ template <>
+ struct StructTraits<gfx::mojom::NativePixmapPlaneDataView,
+ gfx::NativePixmapPlane> {
+@@ -232,7 +232,7 @@ struct StructTraits<gfx::mojom::NativePixmapHandleData
+ static bool Read(gfx::mojom::NativePixmapHandleDataView data,
+ gfx::NativePixmapHandle* out);
+ };
+-#endif // defined(OS_LINUX) || defined(USE_OZONE)
++#endif // defined(OS_LINUX) || defined(USE_OZONE) || defined(OS_BSD)
+
+ template <>
+ struct StructTraits<gfx::mojom::GpuMemoryBufferHandleDataView,
diff --git a/devel/electron6/files/patch-ui_gfx_native__pixmap__handle.cc b/devel/electron6/files/patch-ui_gfx_native__pixmap__handle.cc
new file mode 100644
index 000000000000..66011b5a562e
--- /dev/null
+++ b/devel/electron6/files/patch-ui_gfx_native__pixmap__handle.cc
@@ -0,0 +1,47 @@
+--- ui/gfx/native_pixmap_handle.cc.orig 2019-09-10 11:14:39 UTC
++++ ui/gfx/native_pixmap_handle.cc
+@@ -8,7 +8,7 @@
+
+ #include "build/build_config.h"
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include <drm_fourcc.h>
+ #include "base/posix/eintr_wrapper.h"
+ #endif
+@@ -20,7 +20,7 @@
+
+ namespace gfx {
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ static_assert(NativePixmapHandle::kNoModifier == DRM_FORMAT_MOD_INVALID,
+ "gfx::NativePixmapHandle::kNoModifier should be an alias for"
+ "DRM_FORMAT_MOD_INVALID");
+@@ -31,7 +31,7 @@ NativePixmapPlane::NativePixmapPlane() : stride(0), of
+ NativePixmapPlane::NativePixmapPlane(int stride,
+ int offset,
+ uint64_t size
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ ,
+ base::ScopedFD fd
+ #elif defined(OS_FUCHSIA)
+@@ -42,7 +42,7 @@ NativePixmapPlane::NativePixmapPlane(int stride,
+ : stride(stride),
+ offset(offset),
+ size(size)
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ ,
+ fd(std::move(fd))
+ #elif defined(OS_FUCHSIA)
+@@ -70,7 +70,7 @@ NativePixmapHandle& NativePixmapHandle::operator=(Nati
+ NativePixmapHandle CloneHandleForIPC(const NativePixmapHandle& handle) {
+ NativePixmapHandle clone;
+ for (auto& plane : handle.planes) {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ DCHECK(plane.fd.is_valid());
+ base::ScopedFD fd_dup(HANDLE_EINTR(dup(plane.fd.get())));
+ if (!fd_dup.is_valid()) {
diff --git a/devel/electron6/files/patch-ui_gfx_native__pixmap__handle.h b/devel/electron6/files/patch-ui_gfx_native__pixmap__handle.h
new file mode 100644
index 000000000000..4925f0162352
--- /dev/null
+++ b/devel/electron6/files/patch-ui_gfx_native__pixmap__handle.h
@@ -0,0 +1,29 @@
+--- ui/gfx/native_pixmap_handle.h.orig 2019-09-10 11:14:39 UTC
++++ ui/gfx/native_pixmap_handle.h
+@@ -15,7 +15,7 @@
+ #include "build/build_config.h"
+ #include "ui/gfx/gfx_export.h"
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include "base/files/scoped_file.h"
+ #endif
+
+@@ -32,7 +32,7 @@ struct GFX_EXPORT NativePixmapPlane {
+ NativePixmapPlane(int stride,
+ int offset,
+ uint64_t size
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ ,
+ base::ScopedFD fd
+ #elif defined(OS_FUCHSIA)
+@@ -53,7 +53,7 @@ struct GFX_EXPORT NativePixmapPlane {
+ // This is necessary to map the buffers.
+ uint64_t size;
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // File descriptor for the underlying memory object (usually dmabuf).
+ base::ScopedFD fd;
+ #elif defined(OS_FUCHSIA)
diff --git a/devel/electron6/files/patch-ui_gfx_render__text.cc b/devel/electron6/files/patch-ui_gfx_render__text.cc
new file mode 100644
index 000000000000..6a7e766d6615
--- /dev/null
+++ b/devel/electron6/files/patch-ui_gfx_render__text.cc
@@ -0,0 +1,46 @@
+--- ui/gfx/render_text.cc.orig 2019-09-10 11:14:39 UTC
++++ ui/gfx/render_text.cc
+@@ -976,32 +976,33 @@ void RenderText::SetDisplayOffset(int horizontal_offse
+ const int extra_content = GetContentWidth() - display_rect_.width();
+ const int cursor_width = cursor_enabled_ ? 1 : 0;
+
+- int min_offset = 0;
+- int max_offset = 0;
++ // avoid collisions with vm_map.h on FreeBSD --cmt
++ int _min_offset = 0;
++ int _max_offset = 0;
+ if (extra_content > 0) {
+ switch (GetCurrentHorizontalAlignment()) {
+ case ALIGN_LEFT:
+- min_offset = -extra_content;
++ _min_offset = -extra_content;
+ break;
+ case ALIGN_RIGHT:
+- max_offset = extra_content;
++ _max_offset = extra_content;
+ break;
+ case ALIGN_CENTER:
+ // The extra space reserved for cursor at the end of the text is ignored
+ // when centering text. So, to calculate the valid range for offset, we
+ // exclude that extra space, calculate the range, and add it back to the
+ // range (if cursor is enabled).
+- min_offset = -(extra_content - cursor_width + 1) / 2 - cursor_width;
+- max_offset = (extra_content - cursor_width) / 2;
++ _min_offset = -(extra_content - cursor_width + 1) / 2 - cursor_width;
++ _max_offset = (extra_content - cursor_width) / 2;
+ break;
+ default:
+ break;
+ }
+ }
+- if (horizontal_offset < min_offset)
+- horizontal_offset = min_offset;
+- else if (horizontal_offset > max_offset)
+- horizontal_offset = max_offset;
++ if (horizontal_offset < _min_offset)
++ horizontal_offset = _min_offset;
++ else if (horizontal_offset > _max_offset)
++ horizontal_offset = _max_offset;
+
+ cached_bounds_and_offset_valid_ = true;
+ display_offset_.set_x(horizontal_offset);
diff --git a/devel/electron6/files/patch-ui_gl_BUILD.gn b/devel/electron6/files/patch-ui_gl_BUILD.gn
new file mode 100644
index 000000000000..8be8cd51531a
--- /dev/null
+++ b/devel/electron6/files/patch-ui_gl_BUILD.gn
@@ -0,0 +1,11 @@
+--- ui/gl/BUILD.gn.orig 2019-09-16 09:24:25 UTC
++++ ui/gl/BUILD.gn
+@@ -215,7 +215,7 @@ jumbo_component("gl") {
+ ]
+ }
+
+- if (is_posix && !is_fuchsia && !is_mac) {
++ if (is_posix && !is_fuchsia && !is_mac && !is_bsd) {
+ # Windows has USE_EGL but doesn't support base::FileDescriptor.
+ # libsync isn't supported or needed on MacOSX.
+ # Fuchsia is excluded due to a libsync dependency and because it's
diff --git a/devel/electron6/files/patch-ui_gl_generate__bindings.py b/devel/electron6/files/patch-ui_gl_generate__bindings.py
new file mode 100644
index 000000000000..f93036f8a4f6
--- /dev/null
+++ b/devel/electron6/files/patch-ui_gl_generate__bindings.py
@@ -0,0 +1,12 @@
+--- ui/gl/generate_bindings.py.orig 2019-09-10 11:14:39 UTC
++++ ui/gl/generate_bindings.py
+@@ -2684,6 +2684,9 @@ GLX_FUNCTIONS = [
+ 'arguments':
+ 'Display* dpy, GLXDrawable drawable, int32_t* numerator, '
+ 'int32_t* denominator' },
++{ 'return_type': '__GLXextFuncPtr',
++ 'names': ['glXGetProcAddressARB'],
++ 'arguments': 'const GLubyte* procName', },
+ { 'return_type': 'void',
+ 'names': ['glXGetSelectedEvent'],
+ 'arguments': 'Display* dpy, GLXDrawable drawable, unsigned long* mask', },
diff --git a/devel/electron6/files/patch-ui_gl_gl__bindings__api__autogen__glx.h b/devel/electron6/files/patch-ui_gl_gl__bindings__api__autogen__glx.h
new file mode 100644
index 000000000000..1efd39eb675d
--- /dev/null
+++ b/devel/electron6/files/patch-ui_gl_gl__bindings__api__autogen__glx.h
@@ -0,0 +1,10 @@
+--- ui/gl/gl_bindings_api_autogen_glx.h.orig 2019-09-10 10:43:23 UTC
++++ ui/gl/gl_bindings_api_autogen_glx.h
+@@ -88,6 +88,7 @@ bool glXGetMscRateOMLFn(Display* dpy,
+ GLXDrawable drawable,
+ int32_t* numerator,
+ int32_t* denominator) override;
++__GLXextFuncPtr glXGetProcAddressARBFn(const GLubyte* procName) override;
+ void glXGetSelectedEventFn(Display* dpy,
+ GLXDrawable drawable,
+ unsigned long* mask) override;
diff --git a/devel/electron6/files/patch-ui_gl_gl__bindings__autogen__glx.cc b/devel/electron6/files/patch-ui_gl_gl__bindings__autogen__glx.cc
new file mode 100644
index 000000000000..ed993fd7b654
--- /dev/null
+++ b/devel/electron6/files/patch-ui_gl_gl__bindings__autogen__glx.cc
@@ -0,0 +1,61 @@
+--- ui/gl/gl_bindings_autogen_glx.cc.orig 2019-09-10 10:43:23 UTC
++++ ui/gl/gl_bindings_autogen_glx.cc
+@@ -115,6 +115,8 @@ void DriverGLX::InitializeExtensionBindings() {
+
+ ext.b_GLX_ARB_create_context =
+ gfx::HasExtension(extensions, "GLX_ARB_create_context");
++ ext.b_GLX_ARB_get_proc_address =
++ gfx::HasExtension(extensions, "GLX_ARB_get_proc_address");
+ ext.b_GLX_EXT_swap_control =
+ gfx::HasExtension(extensions, "GLX_EXT_swap_control");
+ ext.b_GLX_EXT_texture_from_pixmap =
+@@ -145,6 +147,11 @@ void DriverGLX::InitializeExtensionBindings() {
+ GetGLProcAddress("glXCreateContextAttribsARB"));
+ }
+
++ if (ext.b_GLX_ARB_get_proc_address) {
++ fn.glXGetProcAddressARBFn = reinterpret_cast<glXGetProcAddressARBProc>(
++ GetGLProcAddress("glXGetProcAddressARB"));
++ }
++
+ if (ext.b_GLX_SGIX_fbconfig) {
+ fn.glXGetFBConfigFromVisualSGIXFn =
+ reinterpret_cast<glXGetFBConfigFromVisualSGIXProc>(
+@@ -346,6 +353,10 @@ bool GLXApiBase::glXGetMscRateOMLFn(Display* dpy,
+ return driver_->fn.glXGetMscRateOMLFn(dpy, drawable, numerator, denominator);
+ }
+
++__GLXextFuncPtr GLXApiBase::glXGetProcAddressARBFn(const GLubyte* procName) {
++ return driver_->fn.glXGetProcAddressARBFn(procName);
++}
++
+ void GLXApiBase::glXGetSelectedEventFn(Display* dpy,
+ GLXDrawable drawable,
+ unsigned long* mask) {
+@@ -646,6 +657,11 @@ bool TraceGLXApi::glXGetMscRateOMLFn(Display* dpy,
+ return glx_api_->glXGetMscRateOMLFn(dpy, drawable, numerator, denominator);
+ }
+
++__GLXextFuncPtr TraceGLXApi::glXGetProcAddressARBFn(const GLubyte* procName) {
++ TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glXGetProcAddressARB")
++ return glx_api_->glXGetProcAddressARBFn(procName);
++}
++
+ void TraceGLXApi::glXGetSelectedEventFn(Display* dpy,
+ GLXDrawable drawable,
+ unsigned long* mask) {
+@@ -1068,6 +1084,14 @@ bool DebugGLXApi::glXGetMscRateOMLFn(Display* dpy,
+ << static_cast<const void*>(denominator) << ")");
+ bool result =
+ glx_api_->glXGetMscRateOMLFn(dpy, drawable, numerator, denominator);
++ GL_SERVICE_LOG("GL_RESULT: " << result);
++ return result;
++}
++
++__GLXextFuncPtr DebugGLXApi::glXGetProcAddressARBFn(const GLubyte* procName) {
++ GL_SERVICE_LOG("glXGetProcAddressARB"
++ << "(" << static_cast<const void*>(procName) << ")");
++ __GLXextFuncPtr result = glx_api_->glXGetProcAddressARBFn(procName);
+ GL_SERVICE_LOG("GL_RESULT: " << result);
+ return result;
+ }
diff --git a/devel/electron6/files/patch-ui_gl_gl__bindings__autogen__glx.h b/devel/electron6/files/patch-ui_gl_gl__bindings__autogen__glx.h
new file mode 100644
index 000000000000..053c6420cd32
--- /dev/null
+++ b/devel/electron6/files/patch-ui_gl_gl__bindings__autogen__glx.h
@@ -0,0 +1,43 @@
+--- ui/gl/gl_bindings_autogen_glx.h.orig 2019-09-10 10:43:23 UTC
++++ ui/gl/gl_bindings_autogen_glx.h
+@@ -104,6 +104,8 @@ typedef bool(GL_BINDING_CALL* glXGetMscRateOMLProc)(Di
+ GLXDrawable drawable,
+ int32_t* numerator,
+ int32_t* denominator);
++typedef __GLXextFuncPtr(GL_BINDING_CALL* glXGetProcAddressARBProc)(
++ const GLubyte* procName);
+ typedef void(GL_BINDING_CALL* glXGetSelectedEventProc)(Display* dpy,
+ GLXDrawable drawable,
+ unsigned long* mask);
+@@ -166,6 +168,7 @@ typedef void(GL_BINDING_CALL* glXWaitXProc)(void);
+
+ struct ExtensionsGLX {
+ bool b_GLX_ARB_create_context;
++ bool b_GLX_ARB_get_proc_address;
+ bool b_GLX_EXT_swap_control;
+ bool b_GLX_EXT_texture_from_pixmap;
+ bool b_GLX_MESA_copy_sub_buffer;
+@@ -203,6 +206,7 @@ struct ProcsGLX {
+ glXGetFBConfigFromVisualSGIXProc glXGetFBConfigFromVisualSGIXFn;
+ glXGetFBConfigsProc glXGetFBConfigsFn;
+ glXGetMscRateOMLProc glXGetMscRateOMLFn;
++ glXGetProcAddressARBProc glXGetProcAddressARBFn;
+ glXGetSelectedEventProc glXGetSelectedEventFn;
+ glXGetSyncValuesOMLProc glXGetSyncValuesOMLFn;
+ glXGetVisualFromFBConfigProc glXGetVisualFromFBConfigFn;
+@@ -310,6 +314,7 @@ class GL_EXPORT GLXApi {
+ GLXDrawable drawable,
+ int32_t* numerator,
+ int32_t* denominator) = 0;
++ virtual __GLXextFuncPtr glXGetProcAddressARBFn(const GLubyte* procName) = 0;
+ virtual void glXGetSelectedEventFn(Display* dpy,
+ GLXDrawable drawable,
+ unsigned long* mask) = 0;
+@@ -394,6 +399,7 @@ class GL_EXPORT GLXApi {
+ ::gl::g_current_glx_context->glXGetFBConfigFromVisualSGIXFn
+ #define glXGetFBConfigs ::gl::g_current_glx_context->glXGetFBConfigsFn
+ #define glXGetMscRateOML ::gl::g_current_glx_context->glXGetMscRateOMLFn
++#define glXGetProcAddressARB ::gl::g_current_glx_context->glXGetProcAddressARBFn
+ #define glXGetSelectedEvent ::gl::g_current_glx_context->glXGetSelectedEventFn
+ #define glXGetSyncValuesOML ::gl::g_current_glx_context->glXGetSyncValuesOMLFn
+ #define glXGetVisualFromFBConfig \
diff --git a/devel/electron6/files/patch-ui_gl_gl__fence.cc b/devel/electron6/files/patch-ui_gl_gl__fence.cc
new file mode 100644
index 000000000000..e3d5c412fda8
--- /dev/null
+++ b/devel/electron6/files/patch-ui_gl_gl__fence.cc
@@ -0,0 +1,11 @@
+--- ui/gl/gl_fence.cc.orig 2019-09-10 11:14:39 UTC
++++ ui/gl/gl_fence.cc
+@@ -18,7 +18,7 @@
+ #include "ui/gl/gl_fence_apple.h"
+ #endif
+
+-#if defined(USE_EGL) && defined(OS_POSIX) && !defined(OS_MACOSX)
++#if defined(USE_EGL) && defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_FREEBSD)
+ #define USE_GL_FENCE_ANDROID_NATIVE_FENCE_SYNC
+ #include "ui/gl/gl_fence_android_native_fence_sync.h"
+ #include "ui/gl/gl_surface_egl.h"
diff --git a/devel/electron6/files/patch-ui_gl_gl__surface__glx.cc b/devel/electron6/files/patch-ui_gl_gl__surface__glx.cc
new file mode 100644
index 000000000000..1bebd46a50a6
--- /dev/null
+++ b/devel/electron6/files/patch-ui_gl_gl__surface__glx.cc
@@ -0,0 +1,14 @@
+--- ui/gl/gl_surface_glx.cc.orig 2019-09-10 11:14:39 UTC
++++ ui/gl/gl_surface_glx.cc
+@@ -431,7 +431,10 @@ bool GLSurfaceGLX::InitializeOneOff() {
+ return false;
+ }
+
+- const auto& visual_info = gl::GLVisualPickerGLX::GetInstance()->rgba_visual();
++ const auto& visual_info =
++ ui::IsCompositingManagerPresent()
++ ? gl::GLVisualPickerGLX::GetInstance()->rgba_visual()
++ : gl::GLVisualPickerGLX::GetInstance()->system_visual();
+ g_visual = visual_info.visual;
+ g_depth = visual_info.depth;
+ g_colormap =
diff --git a/devel/electron6/files/patch-ui_gl_sync__control__vsync__provider.cc b/devel/electron6/files/patch-ui_gl_sync__control__vsync__provider.cc
new file mode 100644
index 000000000000..b1edf23517ed
--- /dev/null
+++ b/devel/electron6/files/patch-ui_gl_sync__control__vsync__provider.cc
@@ -0,0 +1,43 @@
+--- ui/gl/sync_control_vsync_provider.cc.orig 2019-09-10 10:43:23 UTC
++++ ui/gl/sync_control_vsync_provider.cc
+@@ -11,7 +11,7 @@
+ #include "base/trace_event/trace_event.h"
+ #include "build/build_config.h"
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // These constants define a reasonable range for a calculated refresh interval.
+ // Calculating refreshes out of this range will be considered a fatal error.
+ const int64_t kMinVsyncIntervalUs = base::Time::kMicrosecondsPerSecond / 400;
+@@ -26,7 +26,7 @@ const double kRelativeIntervalDifferenceThreshold = 0.
+ namespace gl {
+
+ SyncControlVSyncProvider::SyncControlVSyncProvider() : gfx::VSyncProvider() {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // On platforms where we can't get an accurate reading on the refresh
+ // rate we fall back to the assumption that we're displaying 60 frames
+ // per second.
+@@ -48,7 +48,7 @@ bool SyncControlVSyncProvider::GetVSyncParametersIfAva
+ base::TimeTicks* timebase_out,
+ base::TimeDelta* interval_out) {
+ TRACE_EVENT0("gpu", "SyncControlVSyncProvider::GetVSyncParameters");
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // The actual clock used for the system time returned by glXGetSyncValuesOML
+ // is unspecified. In practice, the clock used is likely to be either
+ // CLOCK_REALTIME or CLOCK_MONOTONIC, so we compare the returned time to the
+@@ -156,11 +156,11 @@ bool SyncControlVSyncProvider::GetVSyncParametersIfAva
+ return true;
+ #else
+ return false;
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+ }
+
+ bool SyncControlVSyncProvider::SupportGetVSyncParametersIfAvailable() const {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ return true;
+ #else
+ return false;
diff --git a/devel/electron6/files/patch-ui_gl_sync__control__vsync__provider.h b/devel/electron6/files/patch-ui_gl_sync__control__vsync__provider.h
new file mode 100644
index 000000000000..7442bcaf6ca8
--- /dev/null
+++ b/devel/electron6/files/patch-ui_gl_sync__control__vsync__provider.h
@@ -0,0 +1,34 @@
+--- ui/gl/sync_control_vsync_provider.h.orig 2019-09-10 10:43:23 UTC
++++ ui/gl/sync_control_vsync_provider.h
+@@ -26,11 +26,11 @@ class SyncControlVSyncProvider : public gfx::VSyncProv
+ bool SupportGetVSyncParametersIfAvailable() const override;
+
+ static constexpr bool IsSupported() {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ return true;
+ #else
+ return false;
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+ }
+
+ protected:
+@@ -41,7 +41,7 @@ class SyncControlVSyncProvider : public gfx::VSyncProv
+ virtual bool GetMscRate(int32_t* numerator, int32_t* denominator) = 0;
+
+ private:
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ base::TimeTicks last_timebase_;
+ uint64_t last_media_stream_counter_ = 0;
+ base::TimeDelta last_good_interval_;
+@@ -52,7 +52,7 @@ class SyncControlVSyncProvider : public gfx::VSyncProv
+ // from configuration change (monitor reconfiguration, moving windows
+ // between monitors, suspend and resume, etc.).
+ base::queue<base::TimeDelta> last_computed_intervals_;
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+
+ DISALLOW_COPY_AND_ASSIGN(SyncControlVSyncProvider);
+ };
diff --git a/devel/electron6/files/patch-ui_message__center_public_cpp_message__center__constants.h b/devel/electron6/files/patch-ui_message__center_public_cpp_message__center__constants.h
new file mode 100644
index 000000000000..7b51854976da
--- /dev/null
+++ b/devel/electron6/files/patch-ui_message__center_public_cpp_message__center__constants.h
@@ -0,0 +1,11 @@
+--- ui/message_center/public/cpp/message_center_constants.h.orig 2019-09-10 10:43:23 UTC
++++ ui/message_center/public/cpp/message_center_constants.h
+@@ -105,7 +105,7 @@ const int kButtonHorizontalPadding = 16; // In DIPs.
+ const int kButtonIconTopPadding = 11; // In DIPs.
+ const int kButtonIconToTitlePadding = 16; // In DIPs.
+
+-#if !defined(OS_LINUX) || defined(USE_AURA)
++#if (!defined(OS_LINUX) && !defined(OS_BSD)) || defined(USE_AURA)
+ constexpr SkColor kButtonSeparatorColor = SkColorSetRGB(234, 234, 234);
+ constexpr SkColor kHoveredButtonBackgroundColor = SkColorSetRGB(243, 243, 243);
+ #endif
diff --git a/devel/electron6/files/patch-ui_message__center_views_message__popup__view.cc b/devel/electron6/files/patch-ui_message__center_views_message__popup__view.cc
new file mode 100644
index 000000000000..079de141b563
--- /dev/null
+++ b/devel/electron6/files/patch-ui_message__center_views_message__popup__view.cc
@@ -0,0 +1,11 @@
+--- ui/message_center/views/message_popup_view.cc.orig 2019-09-10 11:14:39 UTC
++++ ui/message_center/views/message_popup_view.cc
+@@ -103,7 +103,7 @@ void MessagePopupView::AutoCollapse() {
+ void MessagePopupView::Show() {
+ views::Widget::InitParams params(views::Widget::InitParams::TYPE_POPUP);
+ params.keep_on_top = true;
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ // Make the widget explicitly activatable as TYPE_POPUP is not activatable by
+ // default but we need focus for the inline reply textarea.
+ params.activatable = views::Widget::InitParams::ACTIVATABLE_YES;
diff --git a/devel/electron6/files/patch-ui_native__theme_native__theme.h b/devel/electron6/files/patch-ui_native__theme_native__theme.h
new file mode 100644
index 000000000000..4e89d3c0d190
--- /dev/null
+++ b/devel/electron6/files/patch-ui_native__theme_native__theme.h
@@ -0,0 +1,11 @@
+--- ui/native_theme/native_theme.h.orig 2019-09-10 11:14:39 UTC
++++ ui/native_theme/native_theme.h
+@@ -48,7 +48,7 @@ class NATIVE_THEME_EXPORT NativeTheme {
+ // The part to be painted / sized.
+ enum Part {
+ kCheckbox,
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ kFrameTopArea,
+ #endif
+ kInnerSpinButton,
diff --git a/devel/electron6/files/patch-ui_native__theme_native__theme__base.cc b/devel/electron6/files/patch-ui_native__theme_native__theme__base.cc
new file mode 100644
index 000000000000..21e53f527051
--- /dev/null
+++ b/devel/electron6/files/patch-ui_native__theme_native__theme__base.cc
@@ -0,0 +1,11 @@
+--- ui/native_theme/native_theme_base.cc.orig 2019-09-10 11:14:39 UTC
++++ ui/native_theme/native_theme_base.cc
+@@ -172,7 +172,7 @@ void NativeThemeBase::Paint(cc::PaintCanvas* canvas,
+ case kCheckbox:
+ PaintCheckbox(canvas, state, rect, extra.button);
+ break;
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ case kFrameTopArea:
+ PaintFrameTopArea(canvas, state, rect, extra.frame_top_area);
+ break;
diff --git a/devel/electron6/files/patch-ui_strings_app__locale__settings.grd b/devel/electron6/files/patch-ui_strings_app__locale__settings.grd
new file mode 100644
index 000000000000..c57ead4e5c06
--- /dev/null
+++ b/devel/electron6/files/patch-ui_strings_app__locale__settings.grd
@@ -0,0 +1,11 @@
+--- ui/strings/app_locale_settings.grd.orig 2019-09-10 10:43:23 UTC
++++ ui/strings/app_locale_settings.grd
+@@ -187,7 +187,7 @@
+ 75%
+ </message>
+ </if>
+- <if expr="(is_linux or is_android or is_bsd) and not chromeos">
++ <if expr="is_posix and not chromeos">
+ <!-- The font used in Web UI (e.g. History). Note that these are only
+ backups. We try to use the system font if possible. -->
+ <message name="IDS_WEB_FONT_FAMILY" use_name_for_id="true">
diff --git a/devel/electron6/files/patch-ui_views_bubble_bubble__dialog__delegate__view.cc b/devel/electron6/files/patch-ui_views_bubble_bubble__dialog__delegate__view.cc
new file mode 100644
index 000000000000..45643a5bc2c0
--- /dev/null
+++ b/devel/electron6/files/patch-ui_views_bubble_bubble__dialog__delegate__view.cc
@@ -0,0 +1,11 @@
+--- ui/views/bubble/bubble_dialog_delegate_view.cc.orig 2019-09-10 11:14:40 UTC
++++ ui/views/bubble/bubble_dialog_delegate_view.cc
+@@ -135,7 +135,7 @@ Widget* BubbleDialogDelegateView::CreateBubble(
+ bubble_delegate->SetAnchorView(bubble_delegate->GetAnchorView());
+ Widget* bubble_widget = CreateBubbleWidget(bubble_delegate);
+
+-#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_MACOSX)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_MACOSX) || defined(OS_BSD)
+ // Linux clips bubble windows that extend outside their parent window bounds.
+ // Mac never adjusts.
+ bubble_delegate->set_adjust_if_offscreen(false);
diff --git a/devel/electron6/files/patch-ui_views_controls_label.cc b/devel/electron6/files/patch-ui_views_controls_label.cc
new file mode 100644
index 000000000000..62fb063f7e96
--- /dev/null
+++ b/devel/electron6/files/patch-ui_views_controls_label.cc
@@ -0,0 +1,20 @@
+--- ui/views/controls/label.cc.orig 2019-09-10 11:14:40 UTC
++++ ui/views/controls/label.cc
+@@ -548,7 +548,7 @@ bool Label::OnMousePressed(const ui::MouseEvent& event
+ GetFocusManager()->SetFocusedView(this);
+ }
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ if (event.IsOnlyMiddleMouseButton() && GetFocusManager() && !had_focus)
+ GetFocusManager()->SetFocusedView(this);
+ #endif
+@@ -733,7 +733,7 @@ bool Label::PasteSelectionClipboard() {
+ }
+
+ void Label::UpdateSelectionClipboard() {
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ if (!obscured()) {
+ ui::ScopedClipboardWriter(ui::CLIPBOARD_TYPE_SELECTION)
+ .WriteText(GetSelectedText());
diff --git a/devel/electron6/files/patch-ui_views_controls_textfield_textfield.cc b/devel/electron6/files/patch-ui_views_controls_textfield_textfield.cc
new file mode 100644
index 000000000000..65eb1c0d1fad
--- /dev/null
+++ b/devel/electron6/files/patch-ui_views_controls_textfield_textfield.cc
@@ -0,0 +1,73 @@
+--- ui/views/controls/textfield/textfield.cc.orig 2019-09-10 11:14:40 UTC
++++ ui/views/controls/textfield/textfield.cc
+@@ -62,7 +62,7 @@
+ #include "base/win/win_util.h"
+ #endif
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ #include "base/strings/utf_string_conversions.h"
+ #include "ui/base/ime/linux/text_edit_command_auralinux.h"
+ #include "ui/base/ime/linux/text_edit_key_bindings_delegate_auralinux.h"
+@@ -165,14 +165,14 @@ ui::TextEditCommand GetCommandForKeyEvent(const ui::Ke
+ case ui::VKEY_BACK:
+ if (!control)
+ return ui::TextEditCommand::DELETE_BACKWARD;
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Only erase by line break on Linux and ChromeOS.
+ if (shift)
+ return ui::TextEditCommand::DELETE_TO_BEGINNING_OF_LINE;
+ #endif
+ return ui::TextEditCommand::DELETE_WORD_BACKWARD;
+ case ui::VKEY_DELETE:
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Only erase by line break on Linux and ChromeOS.
+ if (shift && control)
+ return ui::TextEditCommand::DELETE_TO_END_OF_LINE;
+@@ -240,7 +240,7 @@ bool IsControlKeyModifier(int flags) {
+ // Control-modified key combination, but we cannot extend it to other platforms
+ // as Control has different meanings and behaviors.
+ // https://crrev.com/2580483002/#msg46
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ return flags & ui::EF_CONTROL_DOWN;
+ #else
+ return false;
+@@ -675,7 +675,7 @@ bool Textfield::OnMousePressed(const ui::MouseEvent& e
+ #endif
+ }
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ if (!handled && !had_focus && event.IsOnlyMiddleMouseButton())
+ RequestFocusWithPointer(ui::EventPointerType::POINTER_TYPE_MOUSE);
+ #endif
+@@ -721,7 +721,7 @@ bool Textfield::OnKeyPressed(const ui::KeyEvent& event
+ if (!textfield)
+ return handled;
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ ui::TextEditKeyBindingsDelegateAuraLinux* delegate =
+ ui::GetTextEditKeyBindingsDelegate();
+ std::vector<ui::TextEditCommandAuraLinux> commands;
+@@ -890,7 +890,7 @@ void Textfield::AboutToRequestFocusFromTabTraversal(bo
+ }
+
+ bool Textfield::SkipDefaultKeyEventProcessing(const ui::KeyEvent& event) {
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ // Skip any accelerator handling that conflicts with custom keybindings.
+ ui::TextEditKeyBindingsDelegateAuraLinux* delegate =
+ ui::GetTextEditKeyBindingsDelegate();
+@@ -2109,7 +2109,7 @@ bool Textfield::PasteSelectionClipboard() {
+ }
+
+ void Textfield::UpdateSelectionClipboard() {
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ if (text_input_type_ != ui::TEXT_INPUT_TYPE_PASSWORD) {
+ ui::ScopedClipboardWriter(ui::CLIPBOARD_TYPE_SELECTION)
+ .WriteText(GetSelectedText());
diff --git a/devel/electron6/files/patch-ui_views_corewm_tooltip__aura.cc b/devel/electron6/files/patch-ui_views_corewm_tooltip__aura.cc
new file mode 100644
index 000000000000..63a1b2a4defd
--- /dev/null
+++ b/devel/electron6/files/patch-ui_views_corewm_tooltip__aura.cc
@@ -0,0 +1,11 @@
+--- ui/views/corewm/tooltip_aura.cc.orig 2019-09-10 11:14:40 UTC
++++ ui/views/corewm/tooltip_aura.cc
+@@ -35,7 +35,7 @@ constexpr int kCursorOffsetY = 15;
+
+ // TODO(varkha): Update if native widget can be transparent on Linux.
+ bool CanUseTranslucentTooltipWidget() {
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ return false;
+ #else
+ return true;
diff --git a/devel/electron6/files/patch-ui_views_examples_widget__example.cc b/devel/electron6/files/patch-ui_views_examples_widget__example.cc
new file mode 100644
index 000000000000..26ab8af44e5b
--- /dev/null
+++ b/devel/electron6/files/patch-ui_views_examples_widget__example.cc
@@ -0,0 +1,11 @@
+--- ui/views/examples/widget_example.cc.orig 2019-09-10 11:14:40 UTC
++++ ui/views/examples/widget_example.cc
+@@ -80,7 +80,7 @@ void WidgetExample::CreateExampleView(View* container)
+ BuildButton(container, "Popup widget", POPUP);
+ BuildButton(container, "Dialog widget", DIALOG);
+ BuildButton(container, "Modal Dialog", MODAL_DIALOG);
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Windows does not support TYPE_CONTROL top-level widgets.
+ BuildButton(container, "Child widget", CHILD);
+ #endif
diff --git a/devel/electron6/files/patch-ui_views_selection__controller.cc b/devel/electron6/files/patch-ui_views_selection__controller.cc
new file mode 100644
index 000000000000..7924962bedf8
--- /dev/null
+++ b/devel/electron6/files/patch-ui_views_selection__controller.cc
@@ -0,0 +1,11 @@
+--- ui/views/selection_controller.cc.orig 2019-09-10 10:43:23 UTC
++++ ui/views/selection_controller.cc
+@@ -21,7 +21,7 @@ SelectionController::SelectionController(SelectionCont
+ delegate_(delegate),
+ handles_selection_clipboard_(false) {
+ // On Linux, update the selection clipboard on a text selection.
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ set_handles_selection_clipboard(true);
+ #endif
+
diff --git a/devel/electron6/files/patch-ui_views_style_platform__style.cc b/devel/electron6/files/patch-ui_views_style_platform__style.cc
new file mode 100644
index 000000000000..b0ef3640e7b9
--- /dev/null
+++ b/devel/electron6/files/patch-ui_views_style_platform__style.cc
@@ -0,0 +1,11 @@
+--- ui/views/style/platform_style.cc.orig 2019-09-10 11:14:40 UTC
++++ ui/views/style/platform_style.cc
+@@ -17,7 +17,7 @@
+
+ #if defined(OS_CHROMEOS)
+ #include "ui/views/controls/scrollbar/overlay_scroll_bar.h"
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ #define DESKTOP_LINUX
+ #endif
+
diff --git a/devel/electron6/files/patch-ui_views_views__delegate.cc b/devel/electron6/files/patch-ui_views_views__delegate.cc
new file mode 100644
index 000000000000..6b8ccfa91db4
--- /dev/null
+++ b/devel/electron6/files/patch-ui_views_views__delegate.cc
@@ -0,0 +1,11 @@
+--- ui/views/views_delegate.cc.orig 2019-09-10 10:43:23 UTC
++++ ui/views/views_delegate.cc
+@@ -85,7 +85,7 @@ HICON ViewsDelegate::GetSmallWindowIcon() const {
+ bool ViewsDelegate::IsWindowInMetro(gfx::NativeWindow window) const {
+ return false;
+ }
+-#elif defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#elif (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_FREEBSD)
+ gfx::ImageSkia* ViewsDelegate::GetDefaultWindowIcon() const {
+ return nullptr;
+ }
diff --git a/devel/electron6/files/patch-ui_views_views__delegate.h b/devel/electron6/files/patch-ui_views_views__delegate.h
new file mode 100644
index 000000000000..afd71b19812c
--- /dev/null
+++ b/devel/electron6/files/patch-ui_views_views__delegate.h
@@ -0,0 +1,11 @@
+--- ui/views/views_delegate.h.orig 2019-09-10 11:14:40 UTC
++++ ui/views/views_delegate.h
+@@ -130,7 +130,7 @@ class VIEWS_EXPORT ViewsDelegate {
+ // Returns true if the window passed in is in the Windows 8 metro
+ // environment.
+ virtual bool IsWindowInMetro(gfx::NativeWindow window) const;
+-#elif defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#elif defined(OS_LINUX) && !defined(OS_CHROMEOS) || defined(OS_FREEBSD)
+ virtual gfx::ImageSkia* GetDefaultWindowIcon() const;
+ #endif
+
diff --git a/devel/electron6/files/patch-ui_views_widget_desktop__aura_desktop__window__tree__host__platform.cc b/devel/electron6/files/patch-ui_views_widget_desktop__aura_desktop__window__tree__host__platform.cc
new file mode 100644
index 000000000000..1a1a3b83ef48
--- /dev/null
+++ b/devel/electron6/files/patch-ui_views_widget_desktop__aura_desktop__window__tree__host__platform.cc
@@ -0,0 +1,20 @@
+--- ui/views/widget/desktop_aura/desktop_window_tree_host_platform.cc.orig 2019-09-10 11:14:40 UTC
++++ ui/views/widget/desktop_aura/desktop_window_tree_host_platform.cc
+@@ -102,7 +102,7 @@ void DesktopWindowTreeHostPlatform::OnNativeWidgetCrea
+ const Widget::InitParams& params) {
+ native_widget_delegate_->OnNativeWidgetCreated();
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Setup a non_client_window_event_filter, which handles resize/move, double
+ // click and other events.
+ DCHECK(!non_client_window_event_filter_);
+@@ -552,7 +552,7 @@ void DesktopWindowTreeHostPlatform::Relayout() {
+ }
+
+ void DesktopWindowTreeHostPlatform::RemoveNonClientEventFilter() {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ if (!non_client_window_event_filter_)
+ return;
+
diff --git a/devel/electron6/files/patch-ui_views_widget_desktop__aura_desktop__window__tree__host__platform.h b/devel/electron6/files/patch-ui_views_widget_desktop__aura_desktop__window__tree__host__platform.h
new file mode 100644
index 000000000000..66cc17c1800a
--- /dev/null
+++ b/devel/electron6/files/patch-ui_views_widget_desktop__aura_desktop__window__tree__host__platform.h
@@ -0,0 +1,11 @@
+--- ui/views/widget/desktop_aura/desktop_window_tree_host_platform.h.orig 2019-09-10 11:14:40 UTC
++++ ui/views/widget/desktop_aura/desktop_window_tree_host_platform.h
+@@ -119,7 +119,7 @@ class VIEWS_EXPORT DesktopWindowTreeHostPlatform
+
+ bool is_active_ = false;
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // A handler for events intended for non client area.
+ std::unique_ptr<WindowEventFilter> non_client_window_event_filter_;
+ #endif
diff --git a/devel/electron6/files/patch-ui_views_widget_desktop__aura_desktop__window__tree__host__x11.cc b/devel/electron6/files/patch-ui_views_widget_desktop__aura_desktop__window__tree__host__x11.cc
new file mode 100644
index 000000000000..69b064ab141b
--- /dev/null
+++ b/devel/electron6/files/patch-ui_views_widget_desktop__aura_desktop__window__tree__host__x11.cc
@@ -0,0 +1,32 @@
+--- ui/views/widget/desktop_aura/desktop_window_tree_host_x11.cc.orig 2019-09-10 11:14:40 UTC
++++ ui/views/widget/desktop_aura/desktop_window_tree_host_x11.cc
+@@ -1463,24 +1463,15 @@ void DesktopWindowTreeHostX11::InitX11Window(
+ if (override_redirect_)
+ attribute_mask |= CWOverrideRedirect;
+
+- bool enable_transparent_visuals;
+- switch (params.opacity) {
+- case Widget::InitParams::OPAQUE_WINDOW:
+- enable_transparent_visuals = false;
+- break;
+- case Widget::InitParams::TRANSLUCENT_WINDOW:
+- enable_transparent_visuals = true;
+- break;
+- case Widget::InitParams::INFER_OPACITY:
+- default:
+- enable_transparent_visuals = params.type == Widget::InitParams::TYPE_DRAG;
+- }
+-
+ Visual* visual = CopyFromParent;
+ int depth = CopyFromParent;
+ Colormap colormap = CopyFromParent;
++
++ // GLSurfaceGLX always create child window with alpha channel. If the parent
++ // window doesn't have alpha channel, it causes flash, so always request argb
++ // visual.
+ ui::XVisualManager::GetInstance()->ChooseVisualForWindow(
+- enable_transparent_visuals, &visual, &depth, &colormap,
++ true /* want_argb_visual */, &visual, &depth, &colormap,
+ &use_argb_visual_);
+
+ if (colormap != CopyFromParent) {
diff --git a/devel/electron6/files/patch-ui_views_window_custom__frame__view.cc b/devel/electron6/files/patch-ui_views_window_custom__frame__view.cc
new file mode 100644
index 000000000000..8b8dd6c5ca7a
--- /dev/null
+++ b/devel/electron6/files/patch-ui_views_window_custom__frame__view.cc
@@ -0,0 +1,11 @@
+--- ui/views/window/custom_frame_view.cc.orig 2019-09-10 11:14:40 UTC
++++ ui/views/window/custom_frame_view.cc
+@@ -291,7 +291,7 @@ int CustomFrameView::NonClientTopBorderHeight() const
+ int CustomFrameView::CaptionButtonY() const {
+ // Maximized buttons start at window top so that even if their images aren't
+ // drawn flush with the screen edge, they still obey Fitts' Law.
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if defined(OS_LINUX) && !defined(OS_CHROMEOS) || defined(OS_BSD)
+ return FrameBorderThickness();
+ #else
+ return frame_->IsMaximized() ? FrameBorderThickness() : kFrameShadowThickness;
diff --git a/devel/electron6/files/patch-ui_views_window_dialog__delegate.cc b/devel/electron6/files/patch-ui_views_window_dialog__delegate.cc
new file mode 100644
index 000000000000..b7da6f031a24
--- /dev/null
+++ b/devel/electron6/files/patch-ui_views_window_dialog__delegate.cc
@@ -0,0 +1,11 @@
+--- ui/views/window/dialog_delegate.cc.orig 2019-09-10 11:14:40 UTC
++++ ui/views/window/dialog_delegate.cc
+@@ -61,7 +61,7 @@ Widget::InitParams DialogDelegate::GetDialogWidgetInit
+ params.bounds = bounds;
+ DialogDelegate* dialog = delegate->AsDialogDelegate();
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ // The new style doesn't support unparented dialogs on Linux desktop.
+ if (dialog)
+ dialog->supports_custom_frame_ &= parent != nullptr;
diff --git a/devel/electron6/files/patch-ui_views_window_frame__background.cc b/devel/electron6/files/patch-ui_views_window_frame__background.cc
new file mode 100644
index 000000000000..0772e18b200a
--- /dev/null
+++ b/devel/electron6/files/patch-ui_views_window_frame__background.cc
@@ -0,0 +1,11 @@
+--- ui/views/window/frame_background.cc.orig 2019-09-10 10:43:23 UTC
++++ ui/views/window/frame_background.cc
+@@ -106,7 +106,7 @@ void FrameBackground::PaintMaximized(gfx::Canvas* canv
+ const View* view) const {
+ // Fill the top with the frame color first so we have a constant background
+ // for areas not covered by the theme image.
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ auto* native_theme = view->GetNativeTheme();
+ ui::NativeTheme::ExtraParams params;
+ params.frame_top_area.use_custom_frame = use_custom_frame_;
diff --git a/devel/electron6/files/patch-ui_webui_resources_js_cr.js b/devel/electron6/files/patch-ui_webui_resources_js_cr.js
new file mode 100644
index 000000000000..bdf12fb5c43b
--- /dev/null
+++ b/devel/electron6/files/patch-ui_webui_resources_js_cr.js
@@ -0,0 +1,14 @@
+--- ui/webui/resources/js/cr.js.orig 2019-09-10 11:14:40 UTC
++++ ui/webui/resources/js/cr.js
+@@ -425,6 +425,11 @@ var cr = cr || function(global) {
+ get doc() {
+ return document;
+ },
++
++ /** Whether this is on *BSD. */
++ get isBSD() {
++ return /BSD/.test(navigator.userAgent);
++ },
+
+ /** Whether we are using a Mac or not. */
+ get isMac() {
diff --git a/devel/electron6/files/patch-ui_webui_resources_js_icon.js b/devel/electron6/files/patch-ui_webui_resources_js_icon.js
new file mode 100644
index 000000000000..67a7df90fb63
--- /dev/null
+++ b/devel/electron6/files/patch-ui_webui_resources_js_icon.js
@@ -0,0 +1,11 @@
+--- ui/webui/resources/js/icon.js.orig 2019-09-10 11:14:40 UTC
++++ ui/webui/resources/js/icon.js
+@@ -14,7 +14,7 @@ cr.define('cr.icon', function() {
+ // supports SCALE_FACTOR_100P on all non-iOS platforms.
+ supportedScaleFactors.push(1);
+ }
+- if (cr.isMac || cr.isChromeOS || cr.isWindows || cr.isLinux) {
++ if (cr.isMac || cr.isChromeOS || cr.isWindows || cr.isLinux || cr.isBSD) {
+ // All desktop platforms support zooming which also updates the renderer's
+ // device scale factors (a.k.a devicePixelRatio), and these platforms have
+ // high DPI assets for 2x. Let the renderer pick the closest image for
diff --git a/devel/electron6/files/patch-v8_BUILD.gn b/devel/electron6/files/patch-v8_BUILD.gn
new file mode 100644
index 000000000000..3174c396bf0a
--- /dev/null
+++ b/devel/electron6/files/patch-v8_BUILD.gn
@@ -0,0 +1,32 @@
+--- v8/BUILD.gn.orig 2019-09-16 09:24:25 UTC
++++ v8/BUILD.gn
+@@ -3545,7 +3545,7 @@ v8_component("v8_libbase") {
+ }
+ }
+
+- if (is_linux) {
++ if (is_linux && !is_bsd) {
+ sources += [
+ "src/base/debug/stack_trace_posix.cc",
+ "src/base/platform/platform-linux.cc",
+@@ -3565,6 +3565,12 @@ v8_component("v8_libbase") {
+ "dl",
+ "rt",
+ ]
++ } else if (is_bsd) {
++ sources += [
++ "src/base/debug/stack_trace_posix.cc",
++ "src/base/platform/platform-freebsd.cc",
++ ]
++ libs = [ "rt", "execinfo" ]
+ } else if (is_android) {
+ if (current_toolchain == host_toolchain) {
+ libs = [
+@@ -3820,6 +3826,7 @@ if (v8_use_snapshot && current_toolchain == v8_snapsho
+ "src/snapshot/embedded/platform-embedded-file-writer-win.h",
+ "src/snapshot/mksnapshot.cc",
+ ]
++ libs = ["execinfo"]
+
+ configs = [ ":internal_config" ]
+
diff --git a/devel/electron6/files/patch-v8_src_api_api.cc b/devel/electron6/files/patch-v8_src_api_api.cc
new file mode 100644
index 000000000000..19569e953796
--- /dev/null
+++ b/devel/electron6/files/patch-v8_src_api_api.cc
@@ -0,0 +1,20 @@
+--- v8/src/api/api.cc.orig 2019-09-16 09:24:25 UTC
++++ v8/src/api/api.cc
+@@ -110,7 +110,7 @@
+ #include "src/wasm/wasm-result.h"
+ #include "src/wasm/wasm-serialization.h"
+
+-#if V8_OS_LINUX || V8_OS_MACOSX
++#if V8_OS_LINUX || V8_OS_MACOSX || V8_OS_OPENBSD || V8_OS_FREEBSD
+ #include <signal.h>
+ #include "include/v8-wasm-trap-handler-posix.h"
+ #include "src/trap-handler/handler-inside-posix.h"
+@@ -5577,7 +5577,7 @@ bool v8::V8::Initialize() {
+ return true;
+ }
+
+-#if V8_OS_LINUX || V8_OS_MACOSX
++#if V8_OS_LINUX || V8_OS_MACOSX || V8_OS_OPENBSD || V8_OS_FREEBSD
+ bool TryHandleWebAssemblyTrapPosix(int sig_code, siginfo_t* info,
+ void* context) {
+ #if V8_TARGET_ARCH_X64 && !V8_OS_ANDROID
diff --git a/devel/electron6/files/patch-v8_src_base_cpu.cc b/devel/electron6/files/patch-v8_src_base_cpu.cc
new file mode 100644
index 000000000000..3b1bef3c222d
--- /dev/null
+++ b/devel/electron6/files/patch-v8_src_base_cpu.cc
@@ -0,0 +1,18 @@
+--- v8/src/base/cpu.cc.orig 2019-09-10 10:51:03 UTC
++++ v8/src/base/cpu.cc
+@@ -424,6 +424,7 @@ CPU::CPU()
+
+ #if V8_OS_LINUX
+
++#if V8_OS_LINUX
+ CPUInfo cpu_info;
+
+ // Extract implementor from the "CPU implementer" field.
+@@ -457,6 +458,7 @@ CPU::CPU()
+ }
+ delete[] part;
+ }
++#endif
+
+ // Extract architecture from the "CPU Architecture" field.
+ // The list is well-known, unlike the the output of
diff --git a/devel/electron6/files/patch-v8_src_base_platform_platform-posix.cc b/devel/electron6/files/patch-v8_src_base_platform_platform-posix.cc
new file mode 100644
index 000000000000..e8a22626aa12
--- /dev/null
+++ b/devel/electron6/files/patch-v8_src_base_platform_platform-posix.cc
@@ -0,0 +1,24 @@
+--- v8/src/base/platform/platform-posix.cc.orig 2019-09-10 11:17:48 UTC
++++ v8/src/base/platform/platform-posix.cc
+@@ -376,7 +376,7 @@ bool OS::DiscardSystemPages(void* address, size_t size
+
+ // static
+ bool OS::HasLazyCommits() {
+-#if V8_OS_AIX || V8_OS_LINUX || V8_OS_MACOSX
++#if V8_OS_AIX || V8_OS_LINUX || V8_OS_MACOSX || V8_OS_FREEBSD
+ return true;
+ #else
+ // TODO(bbudge) Return true for all POSIX platforms.
+@@ -507,6 +507,12 @@ int OS::GetCurrentThreadId() {
+ return static_cast<int>(syscall(__NR_gettid));
+ #elif V8_OS_ANDROID
+ return static_cast<int>(gettid());
++#elif V8_OS_DRAGONFLYBSD || defined(__DragonFly__)
++ return static_cast<int>(lwp_gettid());
++#elif V8_OS_FREEBSD
++ return static_cast<int>(pthread_getthreadid_np());
++#elif V8_OS_NETBSD
++ return static_cast<int>(_lwp_self());
+ #elif V8_OS_AIX
+ return static_cast<int>(thread_self());
+ #elif V8_OS_FUCHSIA
diff --git a/devel/electron6/files/patch-v8_src_trap-handler_handler-inside-posix.cc b/devel/electron6/files/patch-v8_src_trap-handler_handler-inside-posix.cc
new file mode 100644
index 000000000000..b0402acc8511
--- /dev/null
+++ b/devel/electron6/files/patch-v8_src_trap-handler_handler-inside-posix.cc
@@ -0,0 +1,20 @@
+--- v8/src/trap-handler/handler-inside-posix.cc.orig 2019-09-10 10:51:04 UTC
++++ v8/src/trap-handler/handler-inside-posix.cc
+@@ -27,7 +27,7 @@
+
+ #include <signal.h>
+
+-#ifdef V8_OS_LINUX
++#if defined(V8_OS_LINUX) || defined(V8_OS_FREEBSD)
+ #include <ucontext.h>
+ #elif V8_OS_MACOSX
+ #include <sys/ucontext.h>
+@@ -112,6 +112,8 @@ bool TryHandleSignal(int signum, siginfo_t* info, void
+ auto* context_rip = &uc->uc_mcontext.gregs[REG_RIP];
+ #elif V8_OS_MACOSX
+ auto* context_rip = &uc->uc_mcontext->__ss.__rip;
++#elif V8_OS_FREEBSD
++ auto* context_rip = &uc->uc_mcontext.mc_rip;
+ #else
+ #error Unsupported platform
+ #endif
diff --git a/devel/electron6/files/patch-v8_src_trap-handler_handler-inside-posix.h b/devel/electron6/files/patch-v8_src_trap-handler_handler-inside-posix.h
new file mode 100644
index 000000000000..f6bf9d12fa84
--- /dev/null
+++ b/devel/electron6/files/patch-v8_src_trap-handler_handler-inside-posix.h
@@ -0,0 +1,11 @@
+--- v8/src/trap-handler/handler-inside-posix.h.orig 2019-09-10 10:51:04 UTC
++++ v8/src/trap-handler/handler-inside-posix.h
+@@ -12,7 +12,7 @@ namespace v8 {
+ namespace internal {
+ namespace trap_handler {
+
+-#if V8_OS_LINUX
++#if defined(V8_OS_LINUX) || defined(V8_OS_FREEBSD)
+ constexpr int kOobSignal = SIGSEGV;
+ #elif V8_OS_MACOSX
+ constexpr int kOobSignal = SIGBUS;
diff --git a/devel/electron6/files/patch-v8_src_trap-handler_trap-handler.h b/devel/electron6/files/patch-v8_src_trap-handler_trap-handler.h
new file mode 100644
index 000000000000..b545bbb721e8
--- /dev/null
+++ b/devel/electron6/files/patch-v8_src_trap-handler_trap-handler.h
@@ -0,0 +1,11 @@
+--- v8/src/trap-handler/trap-handler.h.orig 2019-09-10 10:51:04 UTC
++++ v8/src/trap-handler/trap-handler.h
+@@ -23,6 +23,8 @@ namespace trap_handler {
+ #define V8_TRAP_HANDLER_SUPPORTED true
+ #elif V8_TARGET_ARCH_X64 && V8_OS_MACOSX
+ #define V8_TRAP_HANDLER_SUPPORTED true
++#elif V8_TARGET_ARCH_X64 && V8_OS_FREEBSD
++#define V8_TRAP_HANDLER_SUPPORTED true
+ #else
+ #define V8_TRAP_HANDLER_SUPPORTED false
+ #endif
diff --git a/devel/electron6/files/yarn.lock b/devel/electron6/files/yarn.lock
new file mode 100644
index 000000000000..b1ec75e3d541
--- /dev/null
+++ b/devel/electron6/files/yarn.lock
@@ -0,0 +1,8581 @@
+# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
+# yarn lockfile v1
+
+
+"@babel/code-frame@^7.0.0":
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0.tgz#06e2ab19bdb535385559aabb5ba59729482800f8"
+ integrity sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA==
+ dependencies:
+ "@babel/highlight" "^7.0.0"
+
+"@babel/highlight@^7.0.0":
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.0.0.tgz#f710c38c8d458e6dd9a201afb637fcb781ce99e4"
+ integrity sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw==
+ dependencies:
+ chalk "^2.0.0"
+ esutils "^2.0.2"
+ js-tokens "^4.0.0"
+
+"@babel/runtime@7.0.0":
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.0.0.tgz#adeb78fedfc855aa05bc041640f3f6f98e85424c"
+ integrity sha512-7hGhzlcmg01CvH1EHdSPVXYX1aJ8KCEyz6I9xYIi/asDtzBPMyMhVibhM/K6g/5qnKBwjZtp10bNZIEFTRW1MA==
+ dependencies:
+ regenerator-runtime "^0.12.0"
+
+"@mrmlnc/readdir-enhanced@^2.2.1":
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz#524af240d1a360527b730475ecfa1344aa540dde"
+ integrity sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==
+ dependencies:
+ call-me-maybe "^1.0.1"
+ glob-to-regexp "^0.3.0"
+
+"@nodelib/fs.stat@^1.1.2":
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz#2b5a3ab3f918cca48a8c754c08168e3f03eba61b"
+ integrity sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==
+
+"@octokit/endpoint@^4.0.0":
+ version "4.2.0"
+ resolved "https://registry.yarnpkg.com/@octokit/endpoint/-/endpoint-4.2.0.tgz#9e36aa6471a7b4a9f2e521549cd2b1d63090187b"
+ integrity sha512-0GUrn0Lr4k8EQpbKLiNzY4gWkx98UuiEFggvk6IqJCHJawUicg2z8XiKvbCZXJbC26T9XJBZ+xURaYhNc5n3dw==
+ dependencies:
+ deepmerge "3.2.0"
+ is-plain-object "^2.0.4"
+ universal-user-agent "^2.0.1"
+ url-template "^2.0.8"
+
+"@octokit/request@3.0.0":
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/@octokit/request/-/request-3.0.0.tgz#304a279036b2dc89e7fba7cb30c9e6a9b1f4d2df"
+ integrity sha512-DZqmbm66tq+a9FtcKrn0sjrUpi0UaZ9QPUCxxyk/4CJ2rseTMpAWRf6gCwOSUCzZcx/4XVIsDk+kz5BVdaeenA==
+ dependencies:
+ "@octokit/endpoint" "^4.0.0"
+ deprecation "^1.0.1"
+ is-plain-object "^2.0.4"
+ node-fetch "^2.3.0"
+ once "^1.4.0"
+ universal-user-agent "^2.0.1"
+
+"@octokit/rest@^16.3.2":
+ version "16.25.0"
+ resolved "https://registry.yarnpkg.com/@octokit/rest/-/rest-16.25.0.tgz#1111dc2b2058bc77442fd7fbd295dab3991b62bf"
+ integrity sha512-QKIzP0gNYjyIGmY3Gpm3beof0WFwxFR+HhRZ+Wi0fYYhkEUvkJiXqKF56Pf5glzzfhEwOrggfluEld5F/ZxsKw==
+ dependencies:
+ "@octokit/request" "3.0.0"
+ atob-lite "^2.0.0"
+ before-after-hook "^1.4.0"
+ btoa-lite "^1.0.0"
+ deprecation "^1.0.1"
+ lodash.get "^4.4.2"
+ lodash.set "^4.3.2"
+ lodash.uniq "^4.5.0"
+ octokit-pagination-methods "^1.1.0"
+ once "^1.4.0"
+ universal-user-agent "^2.0.0"
+ url-template "^2.0.8"
+
+"@samverschueren/stream-to-observable@^0.3.0":
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/@samverschueren/stream-to-observable/-/stream-to-observable-0.3.0.tgz#ecdf48d532c58ea477acfcab80348424f8d0662f"
+ integrity sha512-MI4Xx6LHs4Webyvi6EbspgyAb4D2Q2VtnCQ1blOJcoLS6mVa8lNN2rkIy1CVxfTUpoyIbCTkXES1rLXztFD1lg==
+ dependencies:
+ any-observable "^0.3.0"
+
+"@types/body-parser@*":
+ version "1.17.0"
+ resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.17.0.tgz#9f5c9d9bd04bb54be32d5eb9fc0d8c974e6cf58c"
+ integrity sha512-a2+YeUjPkztKJu5aIF2yArYFQQp8d51wZ7DavSHjFuY1mqVgidGyzEQ41JIVNy82fXj8yPgy2vJmfIywgESW6w==
+ dependencies:
+ "@types/connect" "*"
+ "@types/node" "*"
+
+"@types/chai-as-promised@^7.1.0":
+ version "7.1.0"
+ resolved "https://registry.yarnpkg.com/@types/chai-as-promised/-/chai-as-promised-7.1.0.tgz#010b04cde78eacfb6e72bfddb3e58fe23c2e78b9"
+ integrity sha512-MFiW54UOSt+f2bRw8J7LgQeIvE/9b4oGvwU7XW30S9QGAiHGnU/fmiOprsyMkdmH2rl8xSPc0/yrQw8juXU6bQ==
+ dependencies:
+ "@types/chai" "*"
+
+"@types/chai@*", "@types/chai@^4.1.7":
+ version "4.1.7"
+ resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.1.7.tgz#1b8e33b61a8c09cbe1f85133071baa0dbf9fa71a"
+ integrity sha512-2Y8uPt0/jwjhQ6EiluT0XCri1Dbplr0ZxfFXUz+ye13gaqE8u5gL5ppao1JrUYr9cIip5S6MvQzBS7Kke7U9VA==
+
+"@types/connect@*":
+ version "3.4.32"
+ resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.32.tgz#aa0e9616b9435ccad02bc52b5b454ffc2c70ba28"
+ integrity sha512-4r8qa0quOvh7lGD0pre62CAb1oni1OO6ecJLGCezTmhQ8Fz50Arx9RUszryR8KlgK6avuSXvviL6yWyViQABOg==
+ dependencies:
+ "@types/node" "*"
+
+"@types/express-serve-static-core@*":
+ version "4.16.4"
+ resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.16.4.tgz#56bb8be4559401d68af4a3624ae9dd3166103e60"
+ integrity sha512-x/8h6FHm14rPWnW2HP5likD/rsqJ3t/77OWx2PLxym0hXbeBWQmcPyHmwX+CtCQpjIfgrUdEoDFcLPwPZWiqzQ==
+ dependencies:
+ "@types/node" "*"
+ "@types/range-parser" "*"
+
+"@types/express@^4.16.1":
+ version "4.16.1"
+ resolved "https://registry.yarnpkg.com/@types/express/-/express-4.16.1.tgz#d756bd1a85c34d87eaf44c888bad27ba8a4b7cf0"
+ integrity sha512-V0clmJow23WeyblmACoxbHBu2JKlE5TiIme6Lem14FnPW9gsttyHtk6wq7njcdIWH1njAaFgR8gW09lgY98gQg==
+ dependencies:
+ "@types/body-parser" "*"
+ "@types/express-serve-static-core" "*"
+ "@types/serve-static" "*"
+
+"@types/fs-extra@^5.0.5":
+ version "5.0.5"
+ resolved "https://registry.yarnpkg.com/@types/fs-extra/-/fs-extra-5.0.5.tgz#080d90a792f3fa2c5559eb44bd8ef840aae9104b"
+ integrity sha512-w7iqhDH9mN8eLClQOYTkhdYUOSpp25eXxfc6VbFOGtzxW34JcvctH2bKjj4jD4++z4R5iO5D+pg48W2e03I65A==
+ dependencies:
+ "@types/node" "*"
+
+"@types/mime@*":
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/@types/mime/-/mime-2.0.1.tgz#dc488842312a7f075149312905b5e3c0b054c79d"
+ integrity sha512-FwI9gX75FgVBJ7ywgnq/P7tw+/o1GUbtP0KzbtusLigAOgIgNISRK0ZPl4qertvXSIE8YbsVJueQ90cDt9YYyw==
+
+"@types/mocha@^5.2.6":
+ version "5.2.6"
+ resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-5.2.6.tgz#b8622d50557dd155e9f2f634b7d68fd38de5e94b"
+ integrity sha512-1axi39YdtBI7z957vdqXI4Ac25e7YihYQtJa+Clnxg1zTJEaIRbndt71O3sP4GAMgiAm0pY26/b9BrY4MR/PMw==
+
+"@types/node@*":
+ version "11.13.8"
+ resolved "https://registry.yarnpkg.com/@types/node/-/node-11.13.8.tgz#e5d71173c95533be9842b2c798978f095f912aab"
+ integrity sha512-szA3x/3miL90ZJxUCzx9haNbK5/zmPieGraZEe4WI+3srN0eGLiT22NXeMHmyhNEopn+IrxqMc7wdVwvPl8meg==
+
+"@types/node@^10.12.21":
+ version "10.14.6"
+ resolved "https://registry.yarnpkg.com/@types/node/-/node-10.14.6.tgz#9cbfcb62c50947217f4d88d4d274cc40c22625a9"
+ integrity sha512-Fvm24+u85lGmV4hT5G++aht2C5I4Z4dYlWZIh62FAfFO/TfzXtPpoLI6I7AuBWkIFqZCnhFOoTT7RjjaIL5Fjg==
+
+"@types/node@^7.0.18":
+ version "7.10.5"
+ resolved "https://registry.yarnpkg.com/@types/node/-/node-7.10.5.tgz#6831006b2c87441d69e79b37ae9bc03246dfb379"
+ integrity sha512-RYkagUUbxQBss46ElbEa+j4q4X3GR12QwB7a/PM5hmVuVkYoW1jENT1+taspKUv8ibwW8cw+kRFbOaTc/Key3w==
+
+"@types/range-parser@*":
+ version "1.2.3"
+ resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.3.tgz#7ee330ba7caafb98090bece86a5ee44115904c2c"
+ integrity sha512-ewFXqrQHlFsgc09MK5jP5iR7vumV/BYayNC6PgJO2LPe8vrnNFyjQjSppfEngITi0qvfKtzFvgKymGheFM9UOA==
+
+"@types/serve-static@*":
+ version "1.13.2"
+ resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.13.2.tgz#f5ac4d7a6420a99a6a45af4719f4dcd8cd907a48"
+ integrity sha512-/BZ4QRLpH/bNYgZgwhKEh+5AsboDBcUdlBYgzoLX0fpj3Y2gp6EApyOlM3bK53wQS/OE1SrdSYBAbux2D1528Q==
+ dependencies:
+ "@types/express-serve-static-core" "*"
+ "@types/mime" "*"
+
+"@types/split@^1.0.0":
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/@types/split/-/split-1.0.0.tgz#24f7c35707450b002f203383228f5a2bc1e6c228"
+ integrity sha512-pm9S1mkr+av0j7D6pFyqhBxXDbnbO9gqj4nb8DtGtCewvj0XhIv089SSwXrjrIizT1UquO8/h83hCut0pa3u8A==
+ dependencies:
+ "@types/node" "*"
+ "@types/through" "*"
+
+"@types/through@*":
+ version "0.0.29"
+ resolved "https://registry.yarnpkg.com/@types/through/-/through-0.0.29.tgz#72943aac922e179339c651fa34a4428a4d722f93"
+ integrity sha512-9a7C5VHh+1BKblaYiq+7Tfc+EOmjMdZaD1MYtkQjSoxgB69tBjW98ry6SKsi4zEIWztLOMRuL87A3bdT/Fc/4w==
+ dependencies:
+ "@types/node" "*"
+
+"@typescript-eslint/eslint-plugin@^1.4.2":
+ version "1.7.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-1.7.0.tgz#570e45dc84fb97852e363f1e00f47e604a0b8bcc"
+ integrity sha512-NUSz1aTlIzzTjFFVFyzrbo8oFjHg3K/M9MzYByqbMCxeFdErhLAcGITVfXzSz+Yvp5OOpMu3HkIttB0NyKl54Q==
+ dependencies:
+ "@typescript-eslint/parser" "1.7.0"
+ "@typescript-eslint/typescript-estree" "1.7.0"
+ eslint-utils "^1.3.1"
+ regexpp "^2.0.1"
+ requireindex "^1.2.0"
+ tsutils "^3.7.0"
+
+"@typescript-eslint/parser@1.7.0", "@typescript-eslint/parser@^1.4.2":
+ version "1.7.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-1.7.0.tgz#c3ea0d158349ceefbb6da95b5b09924b75357851"
+ integrity sha512-1QFKxs2V940372srm12ovSE683afqc1jB6zF/f8iKhgLz1yoSjYeGHipasao33VXKI+0a/ob9okeogGdKGvvlg==
+ dependencies:
+ "@typescript-eslint/typescript-estree" "1.7.0"
+ eslint-scope "^4.0.0"
+ eslint-visitor-keys "^1.0.0"
+
+"@typescript-eslint/typescript-estree@1.7.0":
+ version "1.7.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-1.7.0.tgz#59ec02f5371964da1cc679dba7b878a417bc8c60"
+ integrity sha512-K5uedUxVmlYrVkFbyV3htDipvLqTE3QMOUQEHYJaKtgzxj6r7c5Ca/DG1tGgFxX+fsbi9nDIrf4arq7Ib7H/Yw==
+ dependencies:
+ lodash.unescape "4.0.1"
+ semver "5.5.0"
+
+JSONStream@^1.0.3, JSONStream@^1.0.4:
+ version "1.3.5"
+ resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.5.tgz#3208c1f08d3a4d99261ab64f92302bc15e111ca0"
+ integrity sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==
+ dependencies:
+ jsonparse "^1.2.0"
+ through ">=2.2.7 <3"
+
+abab@^1.0.0:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/abab/-/abab-1.0.4.tgz#5faad9c2c07f60dd76770f71cf025b62a63cfd4e"
+ integrity sha1-X6rZwsB/YN12dw9xzwJbYqY8/U4=
+
+abbrev@1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8"
+ integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==
+
+accepts@~1.3.5:
+ version "1.3.6"
+ resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.6.tgz#27de8682f0833e966dde5c5d7a63ec8523106e4b"
+ integrity sha512-QsaoUD2dpVpjENy8JFpQnXP9vyzoZPmAoKrE3S6HtSB7qzSebkJNnmdY4p004FQUSSiHXPueENpoeuUW/7a8Ig==
+ dependencies:
+ mime-types "~2.1.24"
+ negotiator "0.6.1"
+
+acorn-dynamic-import@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/acorn-dynamic-import/-/acorn-dynamic-import-4.0.0.tgz#482210140582a36b83c3e342e1cfebcaa9240948"
+ integrity sha512-d3OEjQV4ROpoflsnUA8HozoIR504TFxNivYEUi6uwz0IYhBkTDXGuWlNdMtybRt3nqVx/L6XqMt0FxkXuWKZhw==
+
+acorn-globals@^1.0.4:
+ version "1.0.9"
+ resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-1.0.9.tgz#55bb5e98691507b74579d0513413217c380c54cf"
+ integrity sha1-VbtemGkVB7dFedBRNBMhfDgMVM8=
+ dependencies:
+ acorn "^2.1.0"
+
+acorn-jsx@^5.0.0:
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.0.1.tgz#32a064fd925429216a09b141102bfdd185fae40e"
+ integrity sha512-HJ7CfNHrfJLlNTzIEUTj43LNWGkqpRLxm3YjAlcD0ACydk9XynzYsCBHxut+iqt+1aBXkx9UP/w/ZqMr13XIzg==
+
+acorn-node@^1.2.0, acorn-node@^1.3.0, acorn-node@^1.5.2, acorn-node@^1.6.1:
+ version "1.6.2"
+ resolved "https://registry.yarnpkg.com/acorn-node/-/acorn-node-1.6.2.tgz#b7d7ceca6f22e6417af933a62cad4de01048d5d2"
+ integrity sha512-rIhNEZuNI8ibQcL7ANm/mGyPukIaZsRNX9psFNQURyJW0nu6k8wjSDld20z6v2mDBWqX13pIEnk9gGZJHIlEXg==
+ dependencies:
+ acorn "^6.0.2"
+ acorn-dynamic-import "^4.0.0"
+ acorn-walk "^6.1.0"
+ xtend "^4.0.1"
+
+acorn-walk@^6.1.0:
+ version "6.1.1"
+ resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-6.1.1.tgz#d363b66f5fac5f018ff9c3a1e7b6f8e310cc3913"
+ integrity sha512-OtUw6JUTgxA2QoqqmrmQ7F2NYqiBPi/L2jqHyFtllhOUvXYQXf0Z1CYUinIfyT4bTCGmrA7gX9FvHA81uzCoVw==
+
+acorn@^2.1.0, acorn@^2.4.0:
+ version "2.7.0"
+ resolved "https://registry.yarnpkg.com/acorn/-/acorn-2.7.0.tgz#ab6e7d9d886aaca8b085bc3312b79a198433f0e7"
+ integrity sha1-q259nYhqrKiwhbwzEreaGYQz8Oc=
+
+acorn@^5.0.0:
+ version "5.7.3"
+ resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.3.tgz#67aa231bf8812974b85235a96771eb6bd07ea279"
+ integrity sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==
+
+acorn@^6.0.2, acorn@^6.0.7:
+ version "6.1.1"
+ resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.1.1.tgz#7d25ae05bb8ad1f9b699108e1094ecd7884adc1f"
+ integrity sha512-jPTiwtOxaHNaAPg/dmrJ/beuzLRnXtB0kQPQ8JpotKJgTB6rX6c8mlf315941pyjBSaPg8NHXS9fhP4u17DpGA==
+
+add-stream@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/add-stream/-/add-stream-1.0.0.tgz#6a7990437ca736d5e1288db92bd3266d5f5cb2aa"
+ integrity sha1-anmQQ3ynNtXhKI25K9MmbV9csqo=
+
+address@^1.0.1:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/address/-/address-1.1.0.tgz#ef8e047847fcd2c5b6f50c16965f924fd99fe709"
+ integrity sha512-4diPfzWbLEIElVG4AnqP+00SULlPzNuyJFNnmMrLgyaxG6tZXJ1sn7mjBu4fHrJE+Yp/jgylOweJn2xsLMFggQ==
+
+ajv-keywords@^3.0.0:
+ version "3.4.0"
+ resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.4.0.tgz#4b831e7b531415a7cc518cd404e73f6193c6349d"
+ integrity sha512-aUjdRFISbuFOl0EIZc+9e4FfZp0bDZgAdOOf30bJmw8VM9v84SHyVyxDfbWxpGYbdZD/9XoKxfHVNmxPkhwyGw==
+
+ajv@^6.0.1, ajv@^6.5.0, ajv@^6.5.5, ajv@^6.9.1:
+ version "6.10.0"
+ resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.10.0.tgz#90d0d54439da587cd7e843bfb7045f50bd22bdf1"
+ integrity sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg==
+ dependencies:
+ fast-deep-equal "^2.0.1"
+ fast-json-stable-stringify "^2.0.0"
+ json-schema-traverse "^0.4.1"
+ uri-js "^4.2.2"
+
+aliasify@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/aliasify/-/aliasify-2.1.0.tgz#7c30825b9450b9e6185ba27533eaf6e2067d4b42"
+ integrity sha1-fDCCW5RQueYYW6J1M+r24gZ9S0I=
+ dependencies:
+ browserify-transform-tools "~1.7.0"
+
+align-text@^0.1.1, align-text@^0.1.3:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/align-text/-/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117"
+ integrity sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=
+ dependencies:
+ kind-of "^3.0.2"
+ longest "^1.0.1"
+ repeat-string "^1.5.2"
+
+amdefine@>=0.0.4:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5"
+ integrity sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=
+
+ansi-align@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-2.0.0.tgz#c36aeccba563b89ceb556f3690f0b1d9e3547f7f"
+ integrity sha1-w2rsy6VjuJzrVW82kPCx2eNUf38=
+ dependencies:
+ string-width "^2.0.0"
+
+ansi-escapes@^3.0.0, ansi-escapes@^3.2.0:
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b"
+ integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==
+
+ansi-regex@^2.0.0:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df"
+ integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8=
+
+ansi-regex@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998"
+ integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=
+
+ansi-regex@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997"
+ integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==
+
+ansi-styles@^2.2.1:
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe"
+ integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=
+
+ansi-styles@^3.2.0, ansi-styles@^3.2.1:
+ version "3.2.1"
+ resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d"
+ integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==
+ dependencies:
+ color-convert "^1.9.0"
+
+any-observable@^0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/any-observable/-/any-observable-0.3.0.tgz#af933475e5806a67d0d7df090dd5e8bef65d119b"
+ integrity sha512-/FQM1EDkTsf63Ub2C6O7GuYFDsSXUwsaZDurV0np41ocwq0jthUAYCmhBX9f+KwlaCgIuWyr/4WlUQUBfKfZog==
+
+any-promise@^1.3.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f"
+ integrity sha1-q8av7tzqUugJzcA3au0845Y10X8=
+
+anymatch@^1.3.0:
+ version "1.3.2"
+ resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-1.3.2.tgz#553dcb8f91e3c889845dfdba34c77721b90b9d7a"
+ integrity sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==
+ dependencies:
+ micromatch "^2.1.5"
+ normalize-path "^2.0.0"
+
+aproba@^1.0.3:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a"
+ integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==
+
+arch@^2.1.0:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/arch/-/arch-2.1.1.tgz#8f5c2731aa35a30929221bb0640eed65175ec84e"
+ integrity sha512-BLM56aPo9vLLFVa8+/+pJLnrZ7QGGTVHWsCwieAWT9o9K8UeGaQbzZbGoabWLOo2ksBCztoXdqBZBplqLDDCSg==
+
+are-we-there-yet@~1.1.2:
+ version "1.1.5"
+ resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21"
+ integrity sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==
+ dependencies:
+ delegates "^1.0.0"
+ readable-stream "^2.0.6"
+
+arg@2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/arg/-/arg-2.0.0.tgz#c06e7ff69ab05b3a4a03ebe0407fac4cba657545"
+ integrity sha512-XxNTUzKnz1ctK3ZIcI2XUPlD96wbHP2nGqkPKpvk/HNRlPveYrXIVSTk9m3LcqOgDPg3B1nMvdV/K8wZd7PG4w==
+
+argparse@^1.0.7:
+ version "1.0.10"
+ resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911"
+ integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==
+ dependencies:
+ sprintf-js "~1.0.2"
+
+args@4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/args/-/args-4.0.0.tgz#5ca24cdba43d4b17111c56616f5f2e9d91933954"
+ integrity sha512-4b7lVF58nlo7sNtq8s2OueroOY/UHn0Nt/NVjsx9zn28u6yDVb9bQ/uy/5jKtHCbUDil4MlMyDLF5+OHEgnTug==
+ dependencies:
+ camelcase "5.0.0"
+ chalk "2.3.2"
+ leven "2.1.0"
+ mri "1.1.0"
+
+arr-diff@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf"
+ integrity sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=
+ dependencies:
+ arr-flatten "^1.0.1"
+
+arr-diff@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520"
+ integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=
+
+arr-flatten@^1.0.1, arr-flatten@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1"
+ integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==
+
+arr-union@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4"
+ integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=
+
+array-filter@~0.0.0:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/array-filter/-/array-filter-0.0.1.tgz#7da8cf2e26628ed732803581fd21f67cacd2eeec"
+ integrity sha1-fajPLiZijtcygDWB/SH2fKzS7uw=
+
+array-find-index@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1"
+ integrity sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=
+
+array-flatten@1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2"
+ integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=
+
+array-ify@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/array-ify/-/array-ify-1.0.0.tgz#9e528762b4a9066ad163a6962a364418e9626ece"
+ integrity sha1-nlKHYrSpBmrRY6aWKjZEGOlibs4=
+
+array-includes@^3.0.3:
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.0.3.tgz#184b48f62d92d7452bb31b323165c7f8bd02266d"
+ integrity sha1-GEtI9i2S10UrsxsyMWXH+L0CJm0=
+ dependencies:
+ define-properties "^1.1.2"
+ es-abstract "^1.7.0"
+
+array-map@~0.0.0:
+ version "0.0.0"
+ resolved "https://registry.yarnpkg.com/array-map/-/array-map-0.0.0.tgz#88a2bab73d1cf7bcd5c1b118a003f66f665fa662"
+ integrity sha1-iKK6tz0c97zVwbEYoAP2b2ZfpmI=
+
+array-reduce@~0.0.0:
+ version "0.0.0"
+ resolved "https://registry.yarnpkg.com/array-reduce/-/array-reduce-0.0.0.tgz#173899d3ffd1c7d9383e4479525dbe278cab5f2b"
+ integrity sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys=
+
+array-union@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39"
+ integrity sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=
+ dependencies:
+ array-uniq "^1.0.1"
+
+array-uniq@^1.0.1:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6"
+ integrity sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=
+
+array-unique@^0.2.1:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53"
+ integrity sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=
+
+array-unique@^0.3.2:
+ version "0.3.2"
+ resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428"
+ integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=
+
+arrify@^1.0.0, arrify@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d"
+ integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=
+
+asar@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/asar/-/asar-1.0.0.tgz#5624ffa1369aa929871dfc036de02c20871bdc2e"
+ integrity sha512-MBiDU5cDr9UWuY2F0zq2fZlnyRq1aOPmJGMas22Qa14K1odpRXL3xkMHPN3uw2hAK5mD89Q+/KidOUtpi4V0Cg==
+ dependencies:
+ chromium-pickle-js "^0.2.0"
+ commander "^2.19.0"
+ cuint "^0.2.2"
+ glob "^7.1.3"
+ minimatch "^3.0.4"
+ mkdirp "^0.5.1"
+ pify "^4.0.1"
+ tmp-promise "^1.0.5"
+
+asn1.js@^4.0.0:
+ version "4.10.1"
+ resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.10.1.tgz#b9c2bf5805f1e64aadeed6df3a2bfafb5a73f5a0"
+ integrity sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==
+ dependencies:
+ bn.js "^4.0.0"
+ inherits "^2.0.1"
+ minimalistic-assert "^1.0.0"
+
+asn1@~0.2.3:
+ version "0.2.4"
+ resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136"
+ integrity sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==
+ dependencies:
+ safer-buffer "~2.1.0"
+
+assert-plus@1.0.0, assert-plus@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525"
+ integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=
+
+assert@^1.4.0:
+ version "1.4.1"
+ resolved "https://registry.yarnpkg.com/assert/-/assert-1.4.1.tgz#99912d591836b5a6f5b345c0f07eefc08fc65d91"
+ integrity sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=
+ dependencies:
+ util "0.10.3"
+
+assign-symbols@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367"
+ integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=
+
+astral-regex@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9"
+ integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==
+
+async-each@^1.0.0:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf"
+ integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==
+
+async@^1.4.0, async@^1.5.2:
+ version "1.5.2"
+ resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a"
+ integrity sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=
+
+asynckit@^0.4.0:
+ version "0.4.0"
+ resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
+ integrity sha1-x57Zf380y48robyXkLzDZkdLS3k=
+
+atob-lite@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/atob-lite/-/atob-lite-2.0.0.tgz#0fef5ad46f1bd7a8502c65727f0367d5ee43d696"
+ integrity sha1-D+9a1G8b16hQLGVyfwNn1e5D1pY=
+
+atob@^2.1.1:
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9"
+ integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==
+
+aws-sign2@~0.7.0:
+ version "0.7.0"
+ resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8"
+ integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=
+
+aws4@^1.8.0:
+ version "1.8.0"
+ resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.8.0.tgz#f0e003d9ca9e7f59c7a508945d7b2ef9a04a542f"
+ integrity sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==
+
+babel-code-frame@^6.20.0, babel-code-frame@^6.26.0:
+ version "6.26.0"
+ resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b"
+ integrity sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=
+ dependencies:
+ chalk "^1.1.3"
+ esutils "^2.0.2"
+ js-tokens "^3.0.2"
+
+bail@^1.0.0:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/bail/-/bail-1.0.3.tgz#63cfb9ddbac829b02a3128cd53224be78e6c21a3"
+ integrity sha512-1X8CnjFVQ+a+KW36uBNMTU5s8+v5FzeqrP7hTG5aTb4aPreSbZJlhwPon9VKMuEVgV++JM+SQrALY3kr7eswdg==
+
+balanced-match@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767"
+ integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c=
+
+base64-js@^1.0.2, base64-js@^1.2.3:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.0.tgz#cab1e6118f051095e58b5281aea8c1cd22bfc0e3"
+ integrity sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw==
+
+base@^0.11.1:
+ version "0.11.2"
+ resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f"
+ integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==
+ dependencies:
+ cache-base "^1.0.1"
+ class-utils "^0.3.5"
+ component-emitter "^1.2.1"
+ define-property "^1.0.0"
+ isobject "^3.0.1"
+ mixin-deep "^1.2.0"
+ pascalcase "^0.1.1"
+
+basic-auth@2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/basic-auth/-/basic-auth-2.0.0.tgz#015db3f353e02e56377755f962742e8981e7bbba"
+ integrity sha1-AV2z81PgLlY3d1X5YnQuiYHnu7o=
+ dependencies:
+ safe-buffer "5.1.1"
+
+bcrypt-pbkdf@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e"
+ integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=
+ dependencies:
+ tweetnacl "^0.14.3"
+
+before-after-hook@^1.4.0:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/before-after-hook/-/before-after-hook-1.4.0.tgz#2b6bf23dca4f32e628fd2747c10a37c74a4b484d"
+ integrity sha512-l5r9ir56nda3qu14nAXIlyq1MmUSs0meCIaFAh8HwkFwP1F8eToOuS3ah2VAHHcY04jaYD7FpJC5JTXHYRbkzg==
+
+binary-extensions@^1.0.0:
+ version "1.13.1"
+ resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65"
+ integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==
+
+bl@^1.0.0:
+ version "1.2.2"
+ resolved "https://registry.yarnpkg.com/bl/-/bl-1.2.2.tgz#a160911717103c07410cef63ef51b397c025af9c"
+ integrity sha512-e8tQYnZodmebYDWGH7KMRvtzKXaJHx3BbilrgZCfvyLUYdKpK1t5PSPmpkny/SgiTSCnjfLW7v5rlONXVFkQEA==
+ dependencies:
+ readable-stream "^2.3.5"
+ safe-buffer "^5.1.1"
+
+bluebird@3.5.1:
+ version "3.5.1"
+ resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.1.tgz#d9551f9de98f1fcda1e683d17ee91a0602ee2eb9"
+ integrity sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA==
+
+bluebird@^3.5.0:
+ version "3.5.4"
+ resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.4.tgz#d6cc661595de30d5b3af5fcedd3c0b3ef6ec5714"
+ integrity sha512-FG+nFEZChJrbQ9tIccIfZJBz3J7mLrAhxakAbnrJWn8d7aKOC+LWifa0G+p4ZqKp4y13T7juYvdhq9NzKdsrjw==
+
+bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0:
+ version "4.11.8"
+ resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f"
+ integrity sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==
+
+body-parser@1.18.3:
+ version "1.18.3"
+ resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.18.3.tgz#5b292198ffdd553b3a0f20ded0592b956955c8b4"
+ integrity sha1-WykhmP/dVTs6DyDe0FkrlWlVyLQ=
+ dependencies:
+ bytes "3.0.0"
+ content-type "~1.0.4"
+ debug "2.6.9"
+ depd "~1.1.2"
+ http-errors "~1.6.3"
+ iconv-lite "0.4.23"
+ on-finished "~2.3.0"
+ qs "6.5.2"
+ raw-body "2.3.3"
+ type-is "~1.6.16"
+
+boolbase@~1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e"
+ integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24=
+
+boxen@1.3.0, boxen@^1.2.1:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/boxen/-/boxen-1.3.0.tgz#55c6c39a8ba58d9c61ad22cd877532deb665a20b"
+ integrity sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw==
+ dependencies:
+ ansi-align "^2.0.0"
+ camelcase "^4.0.0"
+ chalk "^2.0.1"
+ cli-boxes "^1.0.0"
+ string-width "^2.0.0"
+ term-size "^1.2.0"
+ widest-line "^2.0.0"
+
+brace-expansion@^1.1.7:
+ version "1.1.11"
+ resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
+ integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==
+ dependencies:
+ balanced-match "^1.0.0"
+ concat-map "0.0.1"
+
+braces@^1.8.2:
+ version "1.8.5"
+ resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7"
+ integrity sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=
+ dependencies:
+ expand-range "^1.8.1"
+ preserve "^0.2.0"
+ repeat-element "^1.1.2"
+
+braces@^2.3.1:
+ version "2.3.2"
+ resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729"
+ integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==
+ dependencies:
+ arr-flatten "^1.1.0"
+ array-unique "^0.3.2"
+ extend-shallow "^2.0.1"
+ fill-range "^4.0.0"
+ isobject "^3.0.1"
+ repeat-element "^1.1.2"
+ snapdragon "^0.8.1"
+ snapdragon-node "^2.0.1"
+ split-string "^3.0.2"
+ to-regex "^3.0.1"
+
+brorand@^1.0.1:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f"
+ integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=
+
+browser-pack@^6.0.1:
+ version "6.1.0"
+ resolved "https://registry.yarnpkg.com/browser-pack/-/browser-pack-6.1.0.tgz#c34ba10d0b9ce162b5af227c7131c92c2ecd5774"
+ integrity sha512-erYug8XoqzU3IfcU8fUgyHqyOXqIE4tUTTQ+7mqUjQlvnXkOO6OlT9c/ZoJVHYoAaqGxr09CN53G7XIsO4KtWA==
+ dependencies:
+ JSONStream "^1.0.3"
+ combine-source-map "~0.8.0"
+ defined "^1.0.0"
+ safe-buffer "^5.1.1"
+ through2 "^2.0.0"
+ umd "^3.0.0"
+
+browser-resolve@^1.11.0, browser-resolve@^1.7.0:
+ version "1.11.3"
+ resolved "https://registry.yarnpkg.com/browser-resolve/-/browser-resolve-1.11.3.tgz#9b7cbb3d0f510e4cb86bdbd796124d28b5890af6"
+ integrity sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ==
+ dependencies:
+ resolve "1.1.7"
+
+browserify-aes@^1.0.0, browserify-aes@^1.0.4:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48"
+ integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==
+ dependencies:
+ buffer-xor "^1.0.3"
+ cipher-base "^1.0.0"
+ create-hash "^1.1.0"
+ evp_bytestokey "^1.0.3"
+ inherits "^2.0.1"
+ safe-buffer "^5.0.1"
+
+browserify-cipher@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0"
+ integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==
+ dependencies:
+ browserify-aes "^1.0.4"
+ browserify-des "^1.0.0"
+ evp_bytestokey "^1.0.0"
+
+browserify-des@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c"
+ integrity sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==
+ dependencies:
+ cipher-base "^1.0.1"
+ des.js "^1.0.0"
+ inherits "^2.0.1"
+ safe-buffer "^5.1.2"
+
+browserify-rsa@^4.0.0:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.0.1.tgz#21e0abfaf6f2029cf2fafb133567a701d4135524"
+ integrity sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=
+ dependencies:
+ bn.js "^4.1.0"
+ randombytes "^2.0.1"
+
+browserify-sign@^4.0.0:
+ version "4.0.4"
+ resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.0.4.tgz#aa4eb68e5d7b658baa6bf6a57e630cbd7a93d298"
+ integrity sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=
+ dependencies:
+ bn.js "^4.1.1"
+ browserify-rsa "^4.0.0"
+ create-hash "^1.1.0"
+ create-hmac "^1.1.2"
+ elliptic "^6.0.0"
+ inherits "^2.0.1"
+ parse-asn1 "^5.0.0"
+
+browserify-transform-tools@~1.7.0:
+ version "1.7.0"
+ resolved "https://registry.yarnpkg.com/browserify-transform-tools/-/browserify-transform-tools-1.7.0.tgz#83e277221f63259bed2e7eb2a283a970a501f4c4"
+ integrity sha1-g+J3Ih9jJZvtLn6yooOpcKUB9MQ=
+ dependencies:
+ falafel "^2.0.0"
+ through "^2.3.7"
+
+browserify-zlib@^0.1.4:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.1.4.tgz#bb35f8a519f600e0fa6b8485241c979d0141fb2d"
+ integrity sha1-uzX4pRn2AOD6a4SFJByXnQFB+y0=
+ dependencies:
+ pako "~0.2.0"
+
+browserify-zlib@~0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f"
+ integrity sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==
+ dependencies:
+ pako "~1.0.5"
+
+browserify@^16.2.3:
+ version "16.2.3"
+ resolved "https://registry.yarnpkg.com/browserify/-/browserify-16.2.3.tgz#7ee6e654ba4f92bce6ab3599c3485b1cc7a0ad0b"
+ integrity sha512-zQt/Gd1+W+IY+h/xX2NYMW4orQWhqSwyV+xsblycTtpOuB27h1fZhhNQuipJ4t79ohw4P4mMem0jp/ZkISQtjQ==
+ dependencies:
+ JSONStream "^1.0.3"
+ assert "^1.4.0"
+ browser-pack "^6.0.1"
+ browser-resolve "^1.11.0"
+ browserify-zlib "~0.2.0"
+ buffer "^5.0.2"
+ cached-path-relative "^1.0.0"
+ concat-stream "^1.6.0"
+ console-browserify "^1.1.0"
+ constants-browserify "~1.0.0"
+ crypto-browserify "^3.0.0"
+ defined "^1.0.0"
+ deps-sort "^2.0.0"
+ domain-browser "^1.2.0"
+ duplexer2 "~0.1.2"
+ events "^2.0.0"
+ glob "^7.1.0"
+ has "^1.0.0"
+ htmlescape "^1.1.0"
+ https-browserify "^1.0.0"
+ inherits "~2.0.1"
+ insert-module-globals "^7.0.0"
+ labeled-stream-splicer "^2.0.0"
+ mkdirp "^0.5.0"
+ module-deps "^6.0.0"
+ os-browserify "~0.3.0"
+ parents "^1.0.1"
+ path-browserify "~0.0.0"
+ process "~0.11.0"
+ punycode "^1.3.2"
+ querystring-es3 "~0.2.0"
+ read-only-stream "^2.0.0"
+ readable-stream "^2.0.2"
+ resolve "^1.1.4"
+ shasum "^1.0.0"
+ shell-quote "^1.6.1"
+ stream-browserify "^2.0.0"
+ stream-http "^2.0.0"
+ string_decoder "^1.1.1"
+ subarg "^1.0.0"
+ syntax-error "^1.1.1"
+ through2 "^2.0.0"
+ timers-browserify "^1.0.1"
+ tty-browserify "0.0.1"
+ url "~0.11.0"
+ util "~0.10.1"
+ vm-browserify "^1.0.0"
+ xtend "^4.0.0"
+
+btoa-lite@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/btoa-lite/-/btoa-lite-1.0.0.tgz#337766da15801210fdd956c22e9c6891ab9d0337"
+ integrity sha1-M3dm2hWAEhD92VbCLpxokaudAzc=
+
+buffer-alloc-unsafe@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz#bd7dc26ae2972d0eda253be061dba992349c19f0"
+ integrity sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==
+
+buffer-alloc@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/buffer-alloc/-/buffer-alloc-1.2.0.tgz#890dd90d923a873e08e10e5fd51a57e5b7cce0ec"
+ integrity sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==
+ dependencies:
+ buffer-alloc-unsafe "^1.1.0"
+ buffer-fill "^1.0.0"
+
+buffer-fill@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/buffer-fill/-/buffer-fill-1.0.0.tgz#f8f78b76789888ef39f205cd637f68e702122b2c"
+ integrity sha1-+PeLdniYiO858gXNY39o5wISKyw=
+
+buffer-from@^1.0.0, buffer-from@^1.1.0:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef"
+ integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==
+
+buffer-xor@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9"
+ integrity sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=
+
+buffer@^5.0.2:
+ version "5.2.1"
+ resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.2.1.tgz#dd57fa0f109ac59c602479044dca7b8b3d0b71d6"
+ integrity sha512-c+Ko0loDaFfuPWiL02ls9Xd3GO3cPVmUobQ6t3rXNUk304u6hGq+8N/kFi+QEIKhzK3uwolVhLzszmfLmMLnqg==
+ dependencies:
+ base64-js "^1.0.2"
+ ieee754 "^1.1.4"
+
+builtin-status-codes@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8"
+ integrity sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=
+
+bytes@3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048"
+ integrity sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=
+
+cache-base@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2"
+ integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==
+ dependencies:
+ collection-visit "^1.0.0"
+ component-emitter "^1.2.1"
+ get-value "^2.0.6"
+ has-value "^1.0.0"
+ isobject "^3.0.1"
+ set-value "^2.0.0"
+ to-object-path "^0.3.0"
+ union-value "^1.0.0"
+ unset-value "^1.0.0"
+
+cached-path-relative@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/cached-path-relative/-/cached-path-relative-1.0.2.tgz#a13df4196d26776220cc3356eb147a52dba2c6db"
+ integrity sha512-5r2GqsoEb4qMTTN9J+WzXfjov+hjxT+j3u5K+kIVNIwAd99DLCJE9pBIMP1qVeybV6JiijL385Oz0DcYxfbOIg==
+
+call-me-maybe@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.1.tgz#26d208ea89e37b5cbde60250a15f031c16a4d66b"
+ integrity sha1-JtII6onje1y95gJQoV8DHBak1ms=
+
+caller-callsite@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/caller-callsite/-/caller-callsite-2.0.0.tgz#847e0fce0a223750a9a027c54b33731ad3154134"
+ integrity sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=
+ dependencies:
+ callsites "^2.0.0"
+
+caller-path@^0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-0.1.0.tgz#94085ef63581ecd3daa92444a8fe94e82577751f"
+ integrity sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=
+ dependencies:
+ callsites "^0.2.0"
+
+caller-path@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-2.0.0.tgz#468f83044e369ab2010fac5f06ceee15bb2cb1f4"
+ integrity sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=
+ dependencies:
+ caller-callsite "^2.0.0"
+
+callsites@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/callsites/-/callsites-0.2.0.tgz#afab96262910a7f33c19a5775825c69f34e350ca"
+ integrity sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=
+
+callsites@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50"
+ integrity sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=
+
+callsites@^3.0.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73"
+ integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==
+
+camelcase-keys@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7"
+ integrity sha1-MIvur/3ygRkFHvodkyITyRuPkuc=
+ dependencies:
+ camelcase "^2.0.0"
+ map-obj "^1.0.0"
+
+camelcase-keys@^4.0.0:
+ version "4.2.0"
+ resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-4.2.0.tgz#a2aa5fb1af688758259c32c141426d78923b9b77"
+ integrity sha1-oqpfsa9oh1glnDLBQUJteJI7m3c=
+ dependencies:
+ camelcase "^4.1.0"
+ map-obj "^2.0.0"
+ quick-lru "^1.0.0"
+
+camelcase@5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.0.0.tgz#03295527d58bd3cd4aa75363f35b2e8d97be2f42"
+ integrity sha512-faqwZqnWxbxn+F1d399ygeamQNy3lPp/H9H6rNrqYh4FSVCtcY+3cub1MxA8o9mDd55mM8Aghuu/kuyYA6VTsA==
+
+camelcase@^1.0.2:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39"
+ integrity sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=
+
+camelcase@^2.0.0:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f"
+ integrity sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=
+
+camelcase@^4.0.0, camelcase@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd"
+ integrity sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=
+
+capture-stack-trace@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/capture-stack-trace/-/capture-stack-trace-1.0.1.tgz#a6c0bbe1f38f3aa0b92238ecb6ff42c344d4135d"
+ integrity sha512-mYQLZnx5Qt1JgB1WEiMCf2647plpGeQ2NMR/5L0HNZzGQo4fuSPnK+wjfPnKZV0aiJDgzmWqqkV/g7JD+DW0qw==
+
+caseless@~0.12.0:
+ version "0.12.0"
+ resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc"
+ integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=
+
+ccount@^1.0.0:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/ccount/-/ccount-1.0.3.tgz#f1cec43f332e2ea5a569fd46f9f5bde4e6102aff"
+ integrity sha512-Jt9tIBkRc9POUof7QA/VwWd+58fKkEEfI+/t1/eOlxKM7ZhrczNzMFefge7Ai+39y1pR/pP6cI19guHy3FSLmw==
+
+center-align@^0.1.1:
+ version "0.1.3"
+ resolved "https://registry.yarnpkg.com/center-align/-/center-align-0.1.3.tgz#aa0d32629b6ee972200411cbd4461c907bc2b7ad"
+ integrity sha1-qg0yYptu6XIgBBHL1EYckHvCt60=
+ dependencies:
+ align-text "^0.1.3"
+ lazy-cache "^1.0.3"
+
+chalk@2.3.2:
+ version "2.3.2"
+ resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.3.2.tgz#250dc96b07491bfd601e648d66ddf5f60c7a5c65"
+ integrity sha512-ZM4j2/ld/YZDc3Ma8PgN7gyAk+kHMMMyzLNryCPGhWrsfAuDVeuid5bpRFTDgMH9JBK2lA4dyyAkkZYF/WcqDQ==
+ dependencies:
+ ansi-styles "^3.2.1"
+ escape-string-regexp "^1.0.5"
+ supports-color "^5.3.0"
+
+chalk@2.4.0:
+ version "2.4.0"
+ resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.0.tgz#a060a297a6b57e15b61ca63ce84995daa0fe6e52"
+ integrity sha512-Wr/w0f4o9LuE7K53cD0qmbAMM+2XNLzR29vFn5hqko4sxGlUsyy363NvmyGIyk5tpe9cjTr9SJYbysEyPkRnFw==
+ dependencies:
+ ansi-styles "^3.2.1"
+ escape-string-regexp "^1.0.5"
+ supports-color "^5.3.0"
+
+chalk@2.4.1:
+ version "2.4.1"
+ resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.1.tgz#18c49ab16a037b6eb0152cc83e3471338215b66e"
+ integrity sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==
+ dependencies:
+ ansi-styles "^3.2.1"
+ escape-string-regexp "^1.0.5"
+ supports-color "^5.3.0"
+
+chalk@^1.0.0, chalk@^1.1.1, chalk@^1.1.3:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98"
+ integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=
+ dependencies:
+ ansi-styles "^2.2.1"
+ escape-string-regexp "^1.0.2"
+ has-ansi "^2.0.0"
+ strip-ansi "^3.0.0"
+ supports-color "^2.0.0"
+
+chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.1, chalk@^2.4.1, chalk@^2.4.2:
+ version "2.4.2"
+ resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424"
+ integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==
+ dependencies:
+ ansi-styles "^3.2.1"
+ escape-string-regexp "^1.0.5"
+ supports-color "^5.3.0"
+
+character-entities-html4@^1.0.0:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/character-entities-html4/-/character-entities-html4-1.1.2.tgz#c44fdde3ce66b52e8d321d6c1bf46101f0150610"
+ integrity sha512-sIrXwyna2+5b0eB9W149izTPJk/KkJTg6mEzDGibwBUkyH1SbDa+nf515Ppdi3MaH35lW0JFJDWeq9Luzes1Iw==
+
+character-entities-legacy@^1.0.0:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/character-entities-legacy/-/character-entities-legacy-1.1.2.tgz#7c6defb81648498222c9855309953d05f4d63a9c"
+ integrity sha512-9NB2VbXtXYWdXzqrvAHykE/f0QJxzaKIpZ5QzNZrrgQ7Iyxr2vnfS8fCBNVW9nUEZE0lo57nxKRqnzY/dKrwlA==
+
+character-entities@^1.0.0:
+ version "1.2.2"
+ resolved "https://registry.yarnpkg.com/character-entities/-/character-entities-1.2.2.tgz#58c8f371c0774ef0ba9b2aca5f00d8f100e6e363"
+ integrity sha512-sMoHX6/nBiy3KKfC78dnEalnpn0Az0oSNvqUWYTtYrhRI5iUIYsROU48G+E+kMFQzqXaJ8kHJZ85n7y6/PHgwQ==
+
+character-reference-invalid@^1.0.0:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/character-reference-invalid/-/character-reference-invalid-1.1.2.tgz#21e421ad3d84055952dab4a43a04e73cd425d3ed"
+ integrity sha512-7I/xceXfKyUJmSAn/jw8ve/9DyOP7XxufNYLI9Px7CmsKgEUaZLUTax6nZxGQtaoiZCjpu6cHPj20xC/vqRReQ==
+
+chardet@^0.4.0:
+ version "0.4.2"
+ resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.4.2.tgz#b5473b33dc97c424e5d98dc87d55d4d8a29c8bf2"
+ integrity sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I=
+
+chardet@^0.7.0:
+ version "0.7.0"
+ resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e"
+ integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==
+
+check-for-leaks@^1.0.2:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/check-for-leaks/-/check-for-leaks-1.2.0.tgz#ea3b50164e975779332c62813195ff8c6af826cc"
+ integrity sha512-bJ2Bzo6RtsYqamMnsjtVzowGvBNVrR5IPK8Bd+lx5W1TNgOKMsF+AyNHVkqFqO7cpDZNfny5SaqH6gEovpV5Gw==
+ dependencies:
+ anymatch "^1.3.0"
+ minimist "^1.2.0"
+ parse-gitignore "^0.4.0"
+ walk-sync "^0.3.2"
+
+checksum@^0.1.1:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/checksum/-/checksum-0.1.1.tgz#dc6527d4c90be8560dbd1ed4cecf3297d528e9e9"
+ integrity sha1-3GUn1MkL6FYNvR7Uzs8yl9Uo6ek=
+ dependencies:
+ optimist "~0.3.5"
+
+cheerio@^0.20.0:
+ version "0.20.0"
+ resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-0.20.0.tgz#5c710f2bab95653272842ba01c6ea61b3545ec35"
+ integrity sha1-XHEPK6uVZTJyhCugHG6mGzVF7DU=
+ dependencies:
+ css-select "~1.2.0"
+ dom-serializer "~0.1.0"
+ entities "~1.1.1"
+ htmlparser2 "~3.8.1"
+ lodash "^4.1.0"
+ optionalDependencies:
+ jsdom "^7.0.2"
+
+cheerio@^1.0.0-rc.2:
+ version "1.0.0-rc.3"
+ resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-1.0.0-rc.3.tgz#094636d425b2e9c0f4eb91a46c05630c9a1a8bf6"
+ integrity sha512-0td5ijfUPuubwLUu0OBoe98gZj8C/AA+RW3v67GPlGOrvxWjZmBXiBCRU+I8VEiNyJzjth40POfHiz2RB3gImA==
+ dependencies:
+ css-select "~1.2.0"
+ dom-serializer "~0.1.1"
+ entities "~1.1.1"
+ htmlparser2 "^3.9.1"
+ lodash "^4.15.0"
+ parse5 "^3.0.1"
+
+chokidar@^1.5.1:
+ version "1.7.0"
+ resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.7.0.tgz#798e689778151c8076b4b360e5edd28cda2bb468"
+ integrity sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=
+ dependencies:
+ anymatch "^1.3.0"
+ async-each "^1.0.0"
+ glob-parent "^2.0.0"
+ inherits "^2.0.1"
+ is-binary-path "^1.0.0"
+ is-glob "^2.0.0"
+ path-is-absolute "^1.0.0"
+ readdirp "^2.0.0"
+ optionalDependencies:
+ fsevents "^1.0.0"
+
+chownr@^1.0.1, chownr@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.1.tgz#54726b8b8fff4df053c42187e801fb4412df1494"
+ integrity sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g==
+
+chromium-pickle-js@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/chromium-pickle-js/-/chromium-pickle-js-0.2.0.tgz#04a106672c18b085ab774d983dfa3ea138f22205"
+ integrity sha1-BKEGZywYsIWrd02YPfo+oTjyIgU=
+
+ci-info@^1.5.0:
+ version "1.6.0"
+ resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-1.6.0.tgz#2ca20dbb9ceb32d4524a683303313f0304b1e497"
+ integrity sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A==
+
+cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de"
+ integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==
+ dependencies:
+ inherits "^2.0.1"
+ safe-buffer "^5.0.1"
+
+circular-json@^0.3.1:
+ version "0.3.3"
+ resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.3.3.tgz#815c99ea84f6809529d2f45791bdf82711352d66"
+ integrity sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==
+
+clang-format@^1.2.3:
+ version "1.2.4"
+ resolved "https://registry.yarnpkg.com/clang-format/-/clang-format-1.2.4.tgz#4bb4b0a98180428deb093cf20982e9fc1af20b6c"
+ integrity sha512-sw+nrGUp3hvmANd1qF8vZPuezSYQAiXgGBiEtkXTtJnnu6b00fCqkkDIsnRKrNgg4nv6NYZE92ejvOMIXZoejw==
+ dependencies:
+ async "^1.5.2"
+ glob "^7.0.0"
+ resolve "^1.1.6"
+
+class-utils@^0.3.5:
+ version "0.3.6"
+ resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463"
+ integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==
+ dependencies:
+ arr-union "^3.1.0"
+ define-property "^0.2.5"
+ isobject "^3.0.0"
+ static-extend "^0.1.1"
+
+clean-deep@^2.0.1:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/clean-deep/-/clean-deep-2.0.2.tgz#77cdd94e6b266644f0f790b2f576cbef038e27c1"
+ integrity sha1-d83ZTmsmZkTw95Cy9XbL7wOOJ8E=
+ dependencies:
+ lodash.isempty "^4.4.0"
+ lodash.isplainobject "^4.0.6"
+ lodash.transform "^4.6.0"
+
+cli-boxes@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-1.0.0.tgz#4fa917c3e59c94a004cd61f8ee509da651687143"
+ integrity sha1-T6kXw+WclKAEzWH47lCdplFocUM=
+
+cli-cursor@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-1.0.2.tgz#64da3f7d56a54412e59794bd62dc35295e8f2987"
+ integrity sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=
+ dependencies:
+ restore-cursor "^1.0.1"
+
+cli-cursor@^2.0.0, cli-cursor@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5"
+ integrity sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=
+ dependencies:
+ restore-cursor "^2.0.0"
+
+cli-spinners@^0.1.2:
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-0.1.2.tgz#bb764d88e185fb9e1e6a2a1f19772318f605e31c"
+ integrity sha1-u3ZNiOGF+54eaiofGXcjGPYF4xw=
+
+cli-spinners@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.1.0.tgz#22c34b4d51f573240885b201efda4e4ec9fff3c7"
+ integrity sha512-8B00fJOEh1HPrx4fo5eW16XmE1PcL1tGpGrxy63CXGP9nHdPBN63X75hA1zhvQuhVztJWLqV58Roj2qlNM7cAA==
+
+cli-truncate@^0.2.1:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-0.2.1.tgz#9f15cfbb0705005369216c626ac7d05ab90dd574"
+ integrity sha1-nxXPuwcFAFNpIWxiasfQWrkN1XQ=
+ dependencies:
+ slice-ansi "0.0.4"
+ string-width "^1.0.1"
+
+cli-width@^2.0.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639"
+ integrity sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=
+
+clipboardy@1.2.3:
+ version "1.2.3"
+ resolved "https://registry.yarnpkg.com/clipboardy/-/clipboardy-1.2.3.tgz#0526361bf78724c1f20be248d428e365433c07ef"
+ integrity sha512-2WNImOvCRe6r63Gk9pShfkwXsVtKCroMAevIbiae021mS850UkWPbevxsBz3tnvjZIEGvlwaqCPsw+4ulzNgJA==
+ dependencies:
+ arch "^2.1.0"
+ execa "^0.8.0"
+
+cliui@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/cliui/-/cliui-2.1.0.tgz#4b475760ff80264c762c3a1719032e91c7fea0d1"
+ integrity sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=
+ dependencies:
+ center-align "^0.1.1"
+ right-align "^0.1.1"
+ wordwrap "0.0.2"
+
+clone@^1.0.2:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e"
+ integrity sha1-2jCcwmPfFZlMaIypAheco8fNfH4=
+
+co@3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/co/-/co-3.1.0.tgz#4ea54ea5a08938153185e15210c68d9092bc1b78"
+ integrity sha1-TqVOpaCJOBUxheFSEMaNkJK8G3g=
+
+code-point-at@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77"
+ integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=
+
+collapse-white-space@^1.0.2:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/collapse-white-space/-/collapse-white-space-1.0.4.tgz#ce05cf49e54c3277ae573036a26851ba430a0091"
+ integrity sha512-YfQ1tAUZm561vpYD+5eyWN8+UsceQbSrqqlc/6zDY2gtAE+uZLSdkkovhnGpmCThsvKBFakq4EdY/FF93E8XIw==
+
+collection-visit@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0"
+ integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=
+ dependencies:
+ map-visit "^1.0.0"
+ object-visit "^1.0.0"
+
+color-convert@^1.9.0:
+ version "1.9.3"
+ resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8"
+ integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==
+ dependencies:
+ color-name "1.1.3"
+
+color-name@1.1.3:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25"
+ integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=
+
+colors@^1.1.2:
+ version "1.3.3"
+ resolved "https://registry.yarnpkg.com/colors/-/colors-1.3.3.tgz#39e005d546afe01e01f9c4ca8fa50f686a01205d"
+ integrity sha512-mmGt/1pZqYRjMxB1axhTo16/snVZ5krrKkcmMeVKxzECMMXoCgnvTPp10QgHfcbQZw8Dq2jMNG6je4JlWU0gWg==
+
+combine-source-map@^0.8.0, combine-source-map@~0.8.0:
+ version "0.8.0"
+ resolved "https://registry.yarnpkg.com/combine-source-map/-/combine-source-map-0.8.0.tgz#a58d0df042c186fcf822a8e8015f5450d2d79a8b"
+ integrity sha1-pY0N8ELBhvz4IqjoAV9UUNLXmos=
+ dependencies:
+ convert-source-map "~1.1.0"
+ inline-source-map "~0.6.0"
+ lodash.memoize "~3.0.3"
+ source-map "~0.5.3"
+
+combined-stream@^1.0.6, combined-stream@~1.0.6:
+ version "1.0.7"
+ resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.7.tgz#2d1d24317afb8abe95d6d2c0b07b57813539d828"
+ integrity sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w==
+ dependencies:
+ delayed-stream "~1.0.0"
+
+commander@^2.14.1, commander@^2.18.0, commander@^2.19.0, commander@^2.9.0, commander@~2.20.0:
+ version "2.20.0"
+ resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.0.tgz#d58bb2b5c1ee8f87b0d340027e9e94e222c5a422"
+ integrity sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==
+
+compare-func@^1.3.1:
+ version "1.3.2"
+ resolved "https://registry.yarnpkg.com/compare-func/-/compare-func-1.3.2.tgz#99dd0ba457e1f9bc722b12c08ec33eeab31fa648"
+ integrity sha1-md0LpFfh+bxyKxLAjsM+6rMfpkg=
+ dependencies:
+ array-ify "^1.0.0"
+ dot-prop "^3.0.0"
+
+component-emitter@^1.2.1:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0"
+ integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==
+
+compressible@~2.0.16:
+ version "2.0.17"
+ resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.17.tgz#6e8c108a16ad58384a977f3a482ca20bff2f38c1"
+ integrity sha512-BGHeLCK1GV7j1bSmQQAi26X+GgWcTjLr/0tzSvMCl3LH1w1IJ4PFSPoV5316b30cneTziC+B1a+3OjoSUcQYmw==
+ dependencies:
+ mime-db ">= 1.40.0 < 2"
+
+compression@^1.6.2:
+ version "1.7.4"
+ resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.4.tgz#95523eff170ca57c29a0ca41e6fe131f41e5bb8f"
+ integrity sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==
+ dependencies:
+ accepts "~1.3.5"
+ bytes "3.0.0"
+ compressible "~2.0.16"
+ debug "2.6.9"
+ on-headers "~1.0.2"
+ safe-buffer "5.1.2"
+ vary "~1.1.2"
+
+concat-map@0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
+ integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=
+
+concat-stream@^1.5.1, concat-stream@^1.6.0, concat-stream@^1.6.1, concat-stream@~1.6.0:
+ version "1.6.2"
+ resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34"
+ integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==
+ dependencies:
+ buffer-from "^1.0.0"
+ inherits "^2.0.3"
+ readable-stream "^2.2.2"
+ typedarray "^0.0.6"
+
+configstore@^3.0.0:
+ version "3.1.2"
+ resolved "https://registry.yarnpkg.com/configstore/-/configstore-3.1.2.tgz#c6f25defaeef26df12dd33414b001fe81a543f8f"
+ integrity sha512-vtv5HtGjcYUgFrXc6Kx747B83MRRVS5R1VTEQoXvuP+kMI+if6uywV0nDGoiydJRy4yk7h9od5Og0kxx4zUXmw==
+ dependencies:
+ dot-prop "^4.1.0"
+ graceful-fs "^4.1.2"
+ make-dir "^1.0.0"
+ unique-string "^1.0.0"
+ write-file-atomic "^2.0.0"
+ xdg-basedir "^3.0.0"
+
+console-browserify@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.1.0.tgz#f0241c45730a9fc6323b206dbf38edc741d0bb10"
+ integrity sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=
+ dependencies:
+ date-now "^0.1.4"
+
+console-control-strings@^1.0.0, console-control-strings@~1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e"
+ integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=
+
+constants-browserify@~1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75"
+ integrity sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=
+
+contains-path@^0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/contains-path/-/contains-path-0.1.0.tgz#fe8cf184ff6670b6baef01a9d4861a5cbec4120a"
+ integrity sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=
+
+content-disposition@0.5.2:
+ version "0.5.2"
+ resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.2.tgz#0cf68bb9ddf5f2be7961c3a85178cb85dba78cb4"
+ integrity sha1-DPaLud318r55YcOoUXjLhdunjLQ=
+
+content-type@1.0.4, content-type@~1.0.4:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b"
+ integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==
+
+conventional-changelog-angular@^1.6.6:
+ version "1.6.6"
+ resolved "https://registry.yarnpkg.com/conventional-changelog-angular/-/conventional-changelog-angular-1.6.6.tgz#b27f2b315c16d0a1f23eb181309d0e6a4698ea0f"
+ integrity sha512-suQnFSqCxRwyBxY68pYTsFkG0taIdinHLNEAX5ivtw8bCRnIgnpvcHmlR/yjUyZIrNPYAoXlY1WiEKWgSE4BNg==
+ dependencies:
+ compare-func "^1.3.1"
+ q "^1.5.1"
+
+conventional-changelog-atom@^0.2.8:
+ version "0.2.8"
+ resolved "https://registry.yarnpkg.com/conventional-changelog-atom/-/conventional-changelog-atom-0.2.8.tgz#8037693455990e3256f297320a45fa47ee553a14"
+ integrity sha512-8pPZqhMbrnltNBizjoDCb/Sz85KyUXNDQxuAEYAU5V/eHn0okMBVjqc8aHWYpHrytyZWvMGbayOlDv7i8kEf6g==
+ dependencies:
+ q "^1.5.1"
+
+conventional-changelog-cli@^1.2.0:
+ version "1.3.22"
+ resolved "https://registry.yarnpkg.com/conventional-changelog-cli/-/conventional-changelog-cli-1.3.22.tgz#13570fe1728f56f013ff7a88878ff49d5162a405"
+ integrity sha512-pnjdIJbxjkZ5VdAX/H1wndr1G10CY8MuZgnXuJhIHglOXfIrXygb7KZC836GW9uo1u8PjEIvIw/bKX0lOmOzZg==
+ dependencies:
+ add-stream "^1.0.0"
+ conventional-changelog "^1.1.24"
+ lodash "^4.2.1"
+ meow "^4.0.0"
+ tempfile "^1.1.1"
+
+conventional-changelog-codemirror@^0.3.8:
+ version "0.3.8"
+ resolved "https://registry.yarnpkg.com/conventional-changelog-codemirror/-/conventional-changelog-codemirror-0.3.8.tgz#a1982c8291f4ee4d6f2f62817c6b2ecd2c4b7b47"
+ integrity sha512-3HFZKtBXTaUCHvz7ai6nk2+psRIkldDoNzCsom0egDtVmPsvvHZkzjynhdQyULfacRSsBTaiQ0ol6nBOL4dDiQ==
+ dependencies:
+ q "^1.5.1"
+
+conventional-changelog-core@^2.0.11:
+ version "2.0.11"
+ resolved "https://registry.yarnpkg.com/conventional-changelog-core/-/conventional-changelog-core-2.0.11.tgz#19b5fbd55a9697773ed6661f4e32030ed7e30287"
+ integrity sha512-HvTE6RlqeEZ/NFPtQeFLsIDOLrGP3bXYr7lFLMhCVsbduF1MXIe8OODkwMFyo1i9ku9NWBwVnVn0jDmIFXjDRg==
+ dependencies:
+ conventional-changelog-writer "^3.0.9"
+ conventional-commits-parser "^2.1.7"
+ dateformat "^3.0.0"
+ get-pkg-repo "^1.0.0"
+ git-raw-commits "^1.3.6"
+ git-remote-origin-url "^2.0.0"
+ git-semver-tags "^1.3.6"
+ lodash "^4.2.1"
+ normalize-package-data "^2.3.5"
+ q "^1.5.1"
+ read-pkg "^1.1.0"
+ read-pkg-up "^1.0.1"
+ through2 "^2.0.0"
+
+conventional-changelog-ember@^0.3.12:
+ version "0.3.12"
+ resolved "https://registry.yarnpkg.com/conventional-changelog-ember/-/conventional-changelog-ember-0.3.12.tgz#b7d31851756d0fcb49b031dffeb6afa93b202400"
+ integrity sha512-mmJzA7uzbrOqeF89dMMi6z17O07ORTXlTMArnLG9ZTX4oLaKNolUlxFUFlFm9JUoVWajVpaHQWjxH1EOQ+ARoQ==
+ dependencies:
+ q "^1.5.1"
+
+conventional-changelog-eslint@^1.0.9:
+ version "1.0.9"
+ resolved "https://registry.yarnpkg.com/conventional-changelog-eslint/-/conventional-changelog-eslint-1.0.9.tgz#b13cc7e4b472c819450ede031ff1a75c0e3d07d3"
+ integrity sha512-h87nfVh2fdk9fJIvz26wCBsbDC/KxqCc5wSlNMZbXcARtbgNbNDIF7Y7ctokFdnxkzVdaHsbINkh548T9eBA7Q==
+ dependencies:
+ q "^1.5.1"
+
+conventional-changelog-express@^0.3.6:
+ version "0.3.6"
+ resolved "https://registry.yarnpkg.com/conventional-changelog-express/-/conventional-changelog-express-0.3.6.tgz#4a6295cb11785059fb09202180d0e59c358b9c2c"
+ integrity sha512-3iWVtBJZ9RnRnZveNDzOD8QRn6g6vUif0qVTWWyi5nUIAbuN1FfPVyKdAlJJfp5Im+dE8Kiy/d2SpaX/0X678Q==
+ dependencies:
+ q "^1.5.1"
+
+conventional-changelog-jquery@^0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/conventional-changelog-jquery/-/conventional-changelog-jquery-0.1.0.tgz#0208397162e3846986e71273b6c79c5b5f80f510"
+ integrity sha1-Agg5cWLjhGmG5xJztsecW1+A9RA=
+ dependencies:
+ q "^1.4.1"
+
+conventional-changelog-jscs@^0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/conventional-changelog-jscs/-/conventional-changelog-jscs-0.1.0.tgz#0479eb443cc7d72c58bf0bcf0ef1d444a92f0e5c"
+ integrity sha1-BHnrRDzH1yxYvwvPDvHURKkvDlw=
+ dependencies:
+ q "^1.4.1"
+
+conventional-changelog-jshint@^0.3.8:
+ version "0.3.8"
+ resolved "https://registry.yarnpkg.com/conventional-changelog-jshint/-/conventional-changelog-jshint-0.3.8.tgz#9051c1ac0767abaf62a31f74d2fe8790e8acc6c8"
+ integrity sha512-hn9QU4ZI/5V50wKPJNPGT4gEWgiBFpV6adieILW4MaUFynuDYOvQ71EMSj3EznJyKi/KzuXpc9dGmX8njZMjig==
+ dependencies:
+ compare-func "^1.3.1"
+ q "^1.5.1"
+
+conventional-changelog-preset-loader@^1.1.8:
+ version "1.1.8"
+ resolved "https://registry.yarnpkg.com/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-1.1.8.tgz#40bb0f142cd27d16839ec6c74ee8db418099b373"
+ integrity sha512-MkksM4G4YdrMlT2MbTsV2F6LXu/hZR0Tc/yenRrDIKRwBl/SP7ER4ZDlglqJsCzLJi4UonBc52Bkm5hzrOVCcw==
+
+conventional-changelog-writer@^3.0.9:
+ version "3.0.9"
+ resolved "https://registry.yarnpkg.com/conventional-changelog-writer/-/conventional-changelog-writer-3.0.9.tgz#4aecdfef33ff2a53bb0cf3b8071ce21f0e994634"
+ integrity sha512-n9KbsxlJxRQsUnK6wIBRnARacvNnN4C/nxnxCkH+B/R1JS2Fa+DiP1dU4I59mEDEjgnFaN2+9wr1P1s7GYB5/Q==
+ dependencies:
+ compare-func "^1.3.1"
+ conventional-commits-filter "^1.1.6"
+ dateformat "^3.0.0"
+ handlebars "^4.0.2"
+ json-stringify-safe "^5.0.1"
+ lodash "^4.2.1"
+ meow "^4.0.0"
+ semver "^5.5.0"
+ split "^1.0.0"
+ through2 "^2.0.0"
+
+conventional-changelog@^1.1.24:
+ version "1.1.24"
+ resolved "https://registry.yarnpkg.com/conventional-changelog/-/conventional-changelog-1.1.24.tgz#3d94c29c960f5261c002678315b756cdd3d7d1f0"
+ integrity sha512-2WcSUst4Y3Z4hHvoMTWXMJr/DmgVdLiMOVY1Kak2LfFz+GIz2KDp5naqbFesYbfXPmaZ5p491dO0FWZIJoJw1Q==
+ dependencies:
+ conventional-changelog-angular "^1.6.6"
+ conventional-changelog-atom "^0.2.8"
+ conventional-changelog-codemirror "^0.3.8"
+ conventional-changelog-core "^2.0.11"
+ conventional-changelog-ember "^0.3.12"
+ conventional-changelog-eslint "^1.0.9"
+ conventional-changelog-express "^0.3.6"
+ conventional-changelog-jquery "^0.1.0"
+ conventional-changelog-jscs "^0.1.0"
+ conventional-changelog-jshint "^0.3.8"
+ conventional-changelog-preset-loader "^1.1.8"
+
+conventional-commits-filter@^1.1.6:
+ version "1.1.6"
+ resolved "https://registry.yarnpkg.com/conventional-commits-filter/-/conventional-commits-filter-1.1.6.tgz#4389cd8e58fe89750c0b5fb58f1d7f0cc8ad3831"
+ integrity sha512-KcDgtCRKJCQhyk6VLT7zR+ZOyCnerfemE/CsR3iQpzRRFbLEs0Y6rwk3mpDvtOh04X223z+1xyJ582Stfct/0Q==
+ dependencies:
+ is-subset "^0.1.1"
+ modify-values "^1.0.0"
+
+conventional-commits-parser@^2.1.7:
+ version "2.1.7"
+ resolved "https://registry.yarnpkg.com/conventional-commits-parser/-/conventional-commits-parser-2.1.7.tgz#eca45ed6140d72ba9722ee4132674d639e644e8e"
+ integrity sha512-BoMaddIEJ6B4QVMSDu9IkVImlGOSGA1I2BQyOZHeLQ6qVOJLcLKn97+fL6dGbzWEiqDzfH4OkcveULmeq2MHFQ==
+ dependencies:
+ JSONStream "^1.0.4"
+ is-text-path "^1.0.0"
+ lodash "^4.2.1"
+ meow "^4.0.0"
+ split2 "^2.0.0"
+ through2 "^2.0.0"
+ trim-off-newlines "^1.0.0"
+
+convert-source-map@^1.1.0:
+ version "1.6.0"
+ resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.6.0.tgz#51b537a8c43e0f04dec1993bffcdd504e758ac20"
+ integrity sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A==
+ dependencies:
+ safe-buffer "~5.1.1"
+
+convert-source-map@~1.1.0:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.1.3.tgz#4829c877e9fe49b3161f3bf3673888e204699860"
+ integrity sha1-SCnId+n+SbMWHzvzZziI4gRpmGA=
+
+cookie-signature@1.0.6:
+ version "1.0.6"
+ resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c"
+ integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw=
+
+cookie@0.3.1:
+ version "0.3.1"
+ resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb"
+ integrity sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=
+
+copy-descriptor@^0.1.0:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d"
+ integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=
+
+core-util-is@1.0.2, core-util-is@~1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
+ integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=
+
+cosmiconfig@^5.0.2:
+ version "5.2.0"
+ resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.2.0.tgz#45038e4d28a7fe787203aede9c25bca4a08b12c8"
+ integrity sha512-nxt+Nfc3JAqf4WIWd0jXLjTJZmsPLrA9DDc4nRw2KFJQJK7DNooqSXrNI7tzLG50CF8axczly5UV929tBmh/7g==
+ dependencies:
+ import-fresh "^2.0.0"
+ is-directory "^0.3.1"
+ js-yaml "^3.13.0"
+ parse-json "^4.0.0"
+
+create-ecdh@^4.0.0:
+ version "4.0.3"
+ resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.3.tgz#c9111b6f33045c4697f144787f9254cdc77c45ff"
+ integrity sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==
+ dependencies:
+ bn.js "^4.1.0"
+ elliptic "^6.0.0"
+
+create-error-class@^3.0.0:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/create-error-class/-/create-error-class-3.0.2.tgz#06be7abef947a3f14a30fd610671d401bca8b7b6"
+ integrity sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=
+ dependencies:
+ capture-stack-trace "^1.0.0"
+
+create-hash@^1.1.0, create-hash@^1.1.2:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196"
+ integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==
+ dependencies:
+ cipher-base "^1.0.1"
+ inherits "^2.0.1"
+ md5.js "^1.3.4"
+ ripemd160 "^2.0.1"
+ sha.js "^2.4.0"
+
+create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4:
+ version "1.1.7"
+ resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff"
+ integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==
+ dependencies:
+ cipher-base "^1.0.3"
+ create-hash "^1.1.0"
+ inherits "^2.0.1"
+ ripemd160 "^2.0.0"
+ safe-buffer "^5.0.1"
+ sha.js "^2.4.8"
+
+cross-spawn@^5.0.1:
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449"
+ integrity sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=
+ dependencies:
+ lru-cache "^4.0.1"
+ shebang-command "^1.2.0"
+ which "^1.2.9"
+
+cross-spawn@^6.0.0, cross-spawn@^6.0.5:
+ version "6.0.5"
+ resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4"
+ integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==
+ dependencies:
+ nice-try "^1.0.4"
+ path-key "^2.0.1"
+ semver "^5.5.0"
+ shebang-command "^1.2.0"
+ which "^1.2.9"
+
+crypto-browserify@^3.0.0:
+ version "3.12.0"
+ resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec"
+ integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==
+ dependencies:
+ browserify-cipher "^1.0.0"
+ browserify-sign "^4.0.0"
+ create-ecdh "^4.0.0"
+ create-hash "^1.1.0"
+ create-hmac "^1.1.0"
+ diffie-hellman "^5.0.0"
+ inherits "^2.0.1"
+ pbkdf2 "^3.0.3"
+ public-encrypt "^4.0.0"
+ randombytes "^2.0.0"
+ randomfill "^1.0.3"
+
+crypto-random-string@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-1.0.0.tgz#a230f64f568310e1498009940790ec99545bca7e"
+ integrity sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4=
+
+css-select@~1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/css-select/-/css-select-1.2.0.tgz#2b3a110539c5355f1cd8d314623e870b121ec858"
+ integrity sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=
+ dependencies:
+ boolbase "~1.0.0"
+ css-what "2.1"
+ domutils "1.5.1"
+ nth-check "~1.0.1"
+
+css-what@2.1:
+ version "2.1.3"
+ resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.3.tgz#a6d7604573365fe74686c3f311c56513d88285f2"
+ integrity sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg==
+
+cssom@0.3.x, "cssom@>= 0.3.0 < 0.4.0":
+ version "0.3.6"
+ resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.6.tgz#f85206cee04efa841f3c5982a74ba96ab20d65ad"
+ integrity sha512-DtUeseGk9/GBW0hl0vVPpU22iHL6YB5BUX7ml1hB+GMpo0NX5G4voX3kdWiMSEguFtcW3Vh3djqNF4aIe6ne0A==
+
+"cssstyle@>= 0.2.29 < 0.3.0":
+ version "0.2.37"
+ resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-0.2.37.tgz#541097234cb2513c83ceed3acddc27ff27987d54"
+ integrity sha1-VBCXI0yyUTyDzu06zdwn/yeYfVQ=
+ dependencies:
+ cssom "0.3.x"
+
+cuint@^0.2.2:
+ version "0.2.2"
+ resolved "https://registry.yarnpkg.com/cuint/-/cuint-0.2.2.tgz#408086d409550c2631155619e9fa7bcadc3b991b"
+ integrity sha1-QICG1AlVDCYxFVYZ6fp7ytw7mRs=
+
+currently-unhandled@^0.4.1:
+ version "0.4.1"
+ resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea"
+ integrity sha1-mI3zP+qxke95mmE2nddsF635V+o=
+ dependencies:
+ array-find-index "^1.0.1"
+
+dargs@5.1.0:
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/dargs/-/dargs-5.1.0.tgz#ec7ea50c78564cd36c9d5ec18f66329fade27829"
+ integrity sha1-7H6lDHhWTNNsnV7Bj2Yyn63ieCk=
+
+dargs@^4.0.1:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/dargs/-/dargs-4.1.0.tgz#03a9dbb4b5c2f139bf14ae53f0b8a2a6a86f4e17"
+ integrity sha1-A6nbtLXC8Tm/FK5T8LiipqhvThc=
+ dependencies:
+ number-is-nan "^1.0.0"
+
+dash-ast@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/dash-ast/-/dash-ast-1.0.0.tgz#12029ba5fb2f8aa6f0a861795b23c1b4b6c27d37"
+ integrity sha512-Vy4dx7gquTeMcQR/hDkYLGUnwVil6vk4FOOct+djUnHOUWt+zJPJAaRIXaAFkPXtJjvlY7o3rfRu0/3hpnwoUA==
+
+dashdash@^1.12.0:
+ version "1.14.1"
+ resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0"
+ integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=
+ dependencies:
+ assert-plus "^1.0.0"
+
+date-fns@^1.27.2:
+ version "1.30.1"
+ resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-1.30.1.tgz#2e71bf0b119153dbb4cc4e88d9ea5acfb50dc05c"
+ integrity sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw==
+
+date-now@^0.1.4:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b"
+ integrity sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=
+
+dateformat@^3.0.0:
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-3.0.3.tgz#a6e37499a4d9a9cf85ef5872044d62901c9889ae"
+ integrity sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==
+
+debug-log@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/debug-log/-/debug-log-1.0.1.tgz#2307632d4c04382b8df8a32f70b895046d52745f"
+ integrity sha1-IwdjLUwEOCuN+KMvcLiVBG1SdF8=
+
+debug@2.6.9, debug@^2.1.3, debug@^2.2.0, debug@^2.3.3, debug@^2.6.0, debug@^2.6.3, debug@^2.6.8, debug@^2.6.9:
+ version "2.6.9"
+ resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
+ integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==
+ dependencies:
+ ms "2.0.0"
+
+debug@^3.1.0:
+ version "3.2.6"
+ resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b"
+ integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==
+ dependencies:
+ ms "^2.1.1"
+
+debug@^4.0.1, debug@^4.1.0:
+ version "4.1.1"
+ resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791"
+ integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==
+ dependencies:
+ ms "^2.1.1"
+
+decamelize-keys@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/decamelize-keys/-/decamelize-keys-1.1.0.tgz#d171a87933252807eb3cb61dc1c1445d078df2d9"
+ integrity sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk=
+ dependencies:
+ decamelize "^1.1.0"
+ map-obj "^1.0.0"
+
+decamelize@^1.0.0, decamelize@^1.1.0, decamelize@^1.1.2:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290"
+ integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=
+
+decamelize@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-2.0.0.tgz#656d7bbc8094c4c788ea53c5840908c9c7d063c7"
+ integrity sha512-Ikpp5scV3MSYxY39ymh45ZLEecsTdv/Xj2CaQfI8RLMuwi7XvjX9H/fhraiSuU+C5w5NTDu4ZU72xNiZnurBPg==
+ dependencies:
+ xregexp "4.0.0"
+
+decode-uri-component@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545"
+ integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=
+
+dedent@^0.7.0:
+ version "0.7.0"
+ resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c"
+ integrity sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=
+
+deep-extend@^0.6.0:
+ version "0.6.0"
+ resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac"
+ integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==
+
+deep-is@~0.1.3:
+ version "0.1.3"
+ resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34"
+ integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=
+
+deepmerge@3.2.0:
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-3.2.0.tgz#58ef463a57c08d376547f8869fdc5bcee957f44e"
+ integrity sha512-6+LuZGU7QCNUnAJyX8cIrlzoEgggTM6B7mm+znKOX4t5ltluT9KLjN6g61ECMS0LTsLW7yDpNoxhix5FZcrIow==
+
+defaults@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d"
+ integrity sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=
+ dependencies:
+ clone "^1.0.2"
+
+define-properties@^1.1.2:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1"
+ integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==
+ dependencies:
+ object-keys "^1.0.12"
+
+define-property@^0.2.5:
+ version "0.2.5"
+ resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116"
+ integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=
+ dependencies:
+ is-descriptor "^0.1.0"
+
+define-property@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6"
+ integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY=
+ dependencies:
+ is-descriptor "^1.0.0"
+
+define-property@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d"
+ integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==
+ dependencies:
+ is-descriptor "^1.0.2"
+ isobject "^3.0.1"
+
+defined@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693"
+ integrity sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=
+
+deglob@^2.1.0:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/deglob/-/deglob-2.1.1.tgz#d268e168727799862e8eac07042e165957c1f3be"
+ integrity sha512-2kjwuGGonL7gWE1XU4Fv79+vVzpoQCl0V+boMwWtOQJV2AGDabCwez++nB1Nli/8BabAfZQ/UuHPlp6AymKdWw==
+ dependencies:
+ find-root "^1.0.0"
+ glob "^7.0.5"
+ ignore "^3.0.9"
+ pkg-config "^1.1.0"
+ run-parallel "^1.1.2"
+ uniq "^1.0.1"
+
+del@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/del/-/del-3.0.0.tgz#53ecf699ffcbcb39637691ab13baf160819766e5"
+ integrity sha1-U+z2mf/LyzljdpGrE7rxYIGXZuU=
+ dependencies:
+ globby "^6.1.0"
+ is-path-cwd "^1.0.0"
+ is-path-in-cwd "^1.0.0"
+ p-map "^1.1.1"
+ pify "^3.0.0"
+ rimraf "^2.2.8"
+
+delayed-stream@~1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
+ integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk=
+
+delegates@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a"
+ integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=
+
+depd@1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.1.tgz#5783b4e1c459f06fa5ca27f991f3d06e7a310359"
+ integrity sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k=
+
+depd@~1.1.2:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9"
+ integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=
+
+deprecation@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/deprecation/-/deprecation-1.0.1.tgz#2df79b79005752180816b7b6e079cbd80490d711"
+ integrity sha512-ccVHpE72+tcIKaGMql33x5MAjKQIZrk+3x2GbJ7TeraUCZWHoT+KSZpoC+JQFsUBlSTXUrBaGiF0j6zVTepPLg==
+
+deps-sort@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/deps-sort/-/deps-sort-2.0.0.tgz#091724902e84658260eb910748cccd1af6e21fb5"
+ integrity sha1-CRckkC6EZYJg65EHSMzNGvbiH7U=
+ dependencies:
+ JSONStream "^1.0.3"
+ shasum "^1.0.0"
+ subarg "^1.0.0"
+ through2 "^2.0.0"
+
+des.js@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.0.tgz#c074d2e2aa6a8a9a07dbd61f9a15c2cd83ec8ecc"
+ integrity sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=
+ dependencies:
+ inherits "^2.0.1"
+ minimalistic-assert "^1.0.0"
+
+destroy@~1.0.4:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80"
+ integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=
+
+detect-libc@^1.0.2:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b"
+ integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=
+
+detect-port@1.2.3:
+ version "1.2.3"
+ resolved "https://registry.yarnpkg.com/detect-port/-/detect-port-1.2.3.tgz#15bf49820d02deb84bfee0a74876b32d791bf610"
+ integrity sha512-IDbrX6PxqnYy8jV4wSHBaJlErYKTJvW8OQb9F7xivl1iQLqiUYHGa+nZ61Do6+N5uuOn/pReXKNqI9rUn04vug==
+ dependencies:
+ address "^1.0.1"
+ debug "^2.6.0"
+
+detective@^5.0.2:
+ version "5.2.0"
+ resolved "https://registry.yarnpkg.com/detective/-/detective-5.2.0.tgz#feb2a77e85b904ecdea459ad897cc90a99bd2a7b"
+ integrity sha512-6SsIx+nUUbuK0EthKjv0zrdnajCCXVYGmbYYiYjFVpzcjwEs/JMDZ8tPRG29J/HhN56t3GJp2cGSWDRjjot8Pg==
+ dependencies:
+ acorn-node "^1.6.1"
+ defined "^1.0.0"
+ minimist "^1.1.1"
+
+diff@^3.0.1, diff@^3.1.0:
+ version "3.5.0"
+ resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12"
+ integrity sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==
+
+diffie-hellman@^5.0.0:
+ version "5.0.3"
+ resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875"
+ integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==
+ dependencies:
+ bn.js "^4.1.0"
+ miller-rabin "^4.0.0"
+ randombytes "^2.0.0"
+
+dir-glob@2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-2.0.0.tgz#0b205d2b6aef98238ca286598a8204d29d0a0034"
+ integrity sha512-37qirFDz8cA5fimp9feo43fSuRo2gHwaIn6dXL8Ber1dGwUosDrGZeCCXq57WnIqE4aQ+u3eQZzsk1yOzhdwag==
+ dependencies:
+ arrify "^1.0.1"
+ path-type "^3.0.0"
+
+doctrine@1.5.0:
+ version "1.5.0"
+ resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa"
+ integrity sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=
+ dependencies:
+ esutils "^2.0.2"
+ isarray "^1.0.0"
+
+doctrine@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d"
+ integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==
+ dependencies:
+ esutils "^2.0.2"
+
+doctrine@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961"
+ integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==
+ dependencies:
+ esutils "^2.0.2"
+
+dom-serializer@0, dom-serializer@~0.1.0, dom-serializer@~0.1.1:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.1.1.tgz#1ec4059e284babed36eec2941d4a970a189ce7c0"
+ integrity sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA==
+ dependencies:
+ domelementtype "^1.3.0"
+ entities "^1.1.1"
+
+domain-browser@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda"
+ integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==
+
+domelementtype@1, domelementtype@^1.3.0, domelementtype@^1.3.1:
+ version "1.3.1"
+ resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f"
+ integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==
+
+domhandler@2.3:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.3.0.tgz#2de59a0822d5027fabff6f032c2b25a2a8abe738"
+ integrity sha1-LeWaCCLVAn+r/28DLCsloqir5zg=
+ dependencies:
+ domelementtype "1"
+
+domhandler@^2.3.0:
+ version "2.4.2"
+ resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.4.2.tgz#8805097e933d65e85546f726d60f5eb88b44f803"
+ integrity sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==
+ dependencies:
+ domelementtype "1"
+
+domutils@1.5, domutils@1.5.1:
+ version "1.5.1"
+ resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.5.1.tgz#dcd8488a26f563d61079e48c9f7b7e32373682cf"
+ integrity sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=
+ dependencies:
+ dom-serializer "0"
+ domelementtype "1"
+
+domutils@^1.5.1:
+ version "1.7.0"
+ resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a"
+ integrity sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==
+ dependencies:
+ dom-serializer "0"
+ domelementtype "1"
+
+dot-prop@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-3.0.0.tgz#1b708af094a49c9a0e7dbcad790aba539dac1177"
+ integrity sha1-G3CK8JSknJoOfbyteQq6U52sEXc=
+ dependencies:
+ is-obj "^1.0.0"
+
+dot-prop@^4.1.0:
+ version "4.2.0"
+ resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-4.2.0.tgz#1f19e0c2e1aa0e32797c49799f2837ac6af69c57"
+ integrity sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ==
+ dependencies:
+ is-obj "^1.0.0"
+
+dotenv-safe@^4.0.4:
+ version "4.0.4"
+ resolved "https://registry.yarnpkg.com/dotenv-safe/-/dotenv-safe-4.0.4.tgz#8b0e7ced8e70b1d3c5d874ef9420e406f39425b3"
+ integrity sha1-iw587Y5wsdPF2HTvlCDkBvOUJbM=
+ dependencies:
+ dotenv "^4.0.0"
+
+dotenv@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-4.0.0.tgz#864ef1379aced55ce6f95debecdce179f7a0cd1d"
+ integrity sha1-hk7xN5rO1Vzm+V3r7NzhefegzR0=
+
+dugite@^1.45.0:
+ version "1.87.0"
+ resolved "https://registry.yarnpkg.com/dugite/-/dugite-1.87.0.tgz#ba42c25401420a92c6c8f0c71823ac54124b4b65"
+ integrity sha512-+aW2Ql3yw1AEO8Z8nVbjOAEzsinMJMmAg4uf5lzTewFUAHd0danuMPXMP9uMuGuUYN/LQtt4kR2XLuWoD8wRSQ==
+ dependencies:
+ checksum "^0.1.1"
+ mkdirp "^0.5.1"
+ progress "^2.0.3"
+ request "^2.88.0"
+ rimraf "^2.5.4"
+ tar "^4.4.7"
+
+duplexer2@^0.1.2, duplexer2@~0.1.0, duplexer2@~0.1.2:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.1.4.tgz#8b12dab878c0d69e3e7891051662a32fc6bddcc1"
+ integrity sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=
+ dependencies:
+ readable-stream "^2.0.2"
+
+duplexer3@^0.1.4:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2"
+ integrity sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=
+
+duplexify@^3.5.0, duplexify@^3.6.0:
+ version "3.7.1"
+ resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309"
+ integrity sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==
+ dependencies:
+ end-of-stream "^1.0.0"
+ inherits "^2.0.1"
+ readable-stream "^2.0.0"
+ stream-shift "^1.0.0"
+
+ecc-jsbn@~0.1.1:
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9"
+ integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=
+ dependencies:
+ jsbn "~0.1.0"
+ safer-buffer "^2.1.0"
+
+ee-first@1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
+ integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=
+
+electron-docs-linter@^3.0.0, electron-docs-linter@^3.0.1:
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/electron-docs-linter/-/electron-docs-linter-3.0.3.tgz#7da49f9b94e113f9ee8321818d9205220bc19975"
+ integrity sha512-65HmaIH/i/jyxK6a+TPz1IBlUunnNtEb2juYNXrnP0bPusQyWvkkiyExwn5D5mukfkbobwqfIzTxu78xEGHSbQ==
+ dependencies:
+ cheerio "^1.0.0-rc.2"
+ clean-deep "^2.0.1"
+ decamelize "^2.0.0"
+ dedent "^0.7.0"
+ electron-docs "^3.0.2"
+ entities "^1.1.2"
+ keyed-array "^2.1.2"
+ lodash.merge "^4.6.0"
+ lodash.pick "^4.2.1"
+ marky-markdown-lite "^1.2.0"
+ minimist "^1.2.0"
+ ora "^3.0.0"
+ path-exists "^3.0.0"
+ pify "^4.0.1"
+ revalidator "^0.3.1"
+ semver "^5.6.0"
+
+electron-docs@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/electron-docs/-/electron-docs-2.0.1.tgz#01123a4fccb6be27acc1280027bfcb240c54b1d2"
+ integrity sha1-ARI6T8y2vieswSgAJ7/LJAxUsdI=
+ dependencies:
+ got "^6.3.0"
+ gunzip-maybe "^1.3.1"
+ node-dir "^0.1.12"
+ ora "^0.2.3"
+ path-exists "^3.0.0"
+ pify "^2.3.0"
+ semver "^5.1.0"
+ tar-fs "^1.13.0"
+
+electron-docs@^3.0.2:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/electron-docs/-/electron-docs-3.0.2.tgz#340d57e6c0dbf86a97249fd451dff6221021754a"
+ integrity sha1-NA1X5sDb+GqXJJ/UUd/2IhAhdUo=
+ dependencies:
+ got "^6.3.0"
+ gunzip-maybe "^1.3.1"
+ node-dir "^0.1.12"
+ ora "^0.2.3"
+ path-exists "^3.0.0"
+ pify "^2.3.0"
+ semver "^5.1.0"
+ tar-fs "^1.13.0"
+
+electron-typescript-definitions@^8.2.2:
+ version "8.3.0"
+ resolved "https://registry.yarnpkg.com/electron-typescript-definitions/-/electron-typescript-definitions-8.3.0.tgz#6f429aa7ddaeddfc6ffb1d178220070da4bf609c"
+ integrity sha512-ihLjmUZQZPeYtb9qsiTvCX2oxETxfEorkb6cUlZrOKqxluaYFVDF8DCZiiaF9u44zuuVIj6yX3rgn9mfgjBF9A==
+ dependencies:
+ "@types/node" "^7.0.18"
+ colors "^1.1.2"
+ debug "^2.6.3"
+ electron-docs "^2.0.0"
+ electron-docs-linter "^3.0.0"
+ lodash "^4.17.11"
+ mkdirp "^0.5.1"
+ rimraf "^2.5.4"
+ tslint "^4.5.1"
+ typescript "^2.2.1"
+
+elegant-spinner@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/elegant-spinner/-/elegant-spinner-1.0.1.tgz#db043521c95d7e303fd8f345bedc3349cfb0729e"
+ integrity sha1-2wQ1IcldfjA/2PNFvtwzSc+wcp4=
+
+elliptic@^6.0.0:
+ version "6.4.1"
+ resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.4.1.tgz#c2d0b7776911b86722c632c3c06c60f2f819939a"
+ integrity sha512-BsXLz5sqX8OHcsh7CqBMztyXARmGQ3LWPtGjJi6DiJHq5C/qvi9P3OqgswKSDftbu8+IoI/QDTAm2fFnQ9SZSQ==
+ dependencies:
+ bn.js "^4.4.0"
+ brorand "^1.0.1"
+ hash.js "^1.0.0"
+ hmac-drbg "^1.0.0"
+ inherits "^2.0.1"
+ minimalistic-assert "^1.0.0"
+ minimalistic-crypto-utils "^1.0.0"
+
+emoji-regex@^7.0.1:
+ version "7.0.3"
+ resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156"
+ integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==
+
+encodeurl@~1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59"
+ integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=
+
+end-of-stream@^1.0.0, end-of-stream@^1.1.0:
+ version "1.4.1"
+ resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.1.tgz#ed29634d19baba463b6ce6b80a37213eab71ec43"
+ integrity sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==
+ dependencies:
+ once "^1.4.0"
+
+ensure-posix-path@^1.0.0:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/ensure-posix-path/-/ensure-posix-path-1.1.1.tgz#3c62bdb19fa4681544289edb2b382adc029179ce"
+ integrity sha512-VWU0/zXzVbeJNXvME/5EmLuEj2TauvoaTz6aFYK1Z92JCBlDlZ3Gu0tuGR42kpW1754ywTs+QB0g5TP0oj9Zaw==
+
+entities@1.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/entities/-/entities-1.0.0.tgz#b2987aa3821347fcde642b24fdfc9e4fb712bf26"
+ integrity sha1-sph6o4ITR/zeZCsk/fyeT7cSvyY=
+
+entities@^1.1.1, entities@^1.1.2, entities@~1.1.1:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.2.tgz#bdfa735299664dfafd34529ed4f8522a275fea56"
+ integrity sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==
+
+error-ex@^1.2.0, error-ex@^1.3.1:
+ version "1.3.2"
+ resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf"
+ integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==
+ dependencies:
+ is-arrayish "^0.2.1"
+
+es-abstract@^1.7.0:
+ version "1.13.0"
+ resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.13.0.tgz#ac86145fdd5099d8dd49558ccba2eaf9b88e24e9"
+ integrity sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg==
+ dependencies:
+ es-to-primitive "^1.2.0"
+ function-bind "^1.1.1"
+ has "^1.0.3"
+ is-callable "^1.1.4"
+ is-regex "^1.0.4"
+ object-keys "^1.0.12"
+
+es-to-primitive@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.0.tgz#edf72478033456e8dda8ef09e00ad9650707f377"
+ integrity sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==
+ dependencies:
+ is-callable "^1.1.4"
+ is-date-object "^1.0.1"
+ is-symbol "^1.0.2"
+
+es6-object-assign@^1.0.3:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/es6-object-assign/-/es6-object-assign-1.1.0.tgz#c2c3582656247c39ea107cb1e6652b6f9f24523c"
+ integrity sha1-wsNYJlYkfDnqEHyx5mUrb58kUjw=
+
+escape-html@~1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988"
+ integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=
+
+escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.4, escape-string-regexp@^1.0.5:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
+ integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=
+
+escodegen@^1.6.1:
+ version "1.11.1"
+ resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.11.1.tgz#c485ff8d6b4cdb89e27f4a856e91f118401ca510"
+ integrity sha512-JwiqFD9KdGVVpeuRa68yU3zZnBEOcPs0nKW7wZzXky8Z7tffdYUHbe11bPCV5jYlK6DVdKLWLm0f5I/QlL0Kmw==
+ dependencies:
+ esprima "^3.1.3"
+ estraverse "^4.2.0"
+ esutils "^2.0.2"
+ optionator "^0.8.1"
+ optionalDependencies:
+ source-map "~0.6.1"
+
+eslint-config-standard-jsx@6.0.2:
+ version "6.0.2"
+ resolved "https://registry.yarnpkg.com/eslint-config-standard-jsx/-/eslint-config-standard-jsx-6.0.2.tgz#90c9aa16ac2c4f8970c13fc7efc608bacd02da70"
+ integrity sha512-D+YWAoXw+2GIdbMBRAzWwr1ZtvnSf4n4yL0gKGg7ShUOGXkSOLerI17K4F6LdQMJPNMoWYqepzQD/fKY+tXNSg==
+
+eslint-config-standard@12.0.0, eslint-config-standard@^12.0.0:
+ version "12.0.0"
+ resolved "https://registry.yarnpkg.com/eslint-config-standard/-/eslint-config-standard-12.0.0.tgz#638b4c65db0bd5a41319f96bba1f15ddad2107d9"
+ integrity sha512-COUz8FnXhqFitYj4DTqHzidjIL/t4mumGZto5c7DrBpvWoie+Sn3P4sLEzUGeYhRElWuFEf8K1S1EfvD1vixCQ==
+
+eslint-import-resolver-node@^0.3.1, eslint-import-resolver-node@^0.3.2:
+ version "0.3.2"
+ resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.2.tgz#58f15fb839b8d0576ca980413476aab2472db66a"
+ integrity sha512-sfmTqJfPSizWu4aymbPr4Iidp5yKm8yDkHp+Ir3YiTHiiDfxh69mOUsmiqW6RZ9zRXFaF64GtYmN7e+8GHBv6Q==
+ dependencies:
+ debug "^2.6.9"
+ resolve "^1.5.0"
+
+eslint-module-utils@^2.2.0, eslint-module-utils@^2.4.0:
+ version "2.4.0"
+ resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.4.0.tgz#8b93499e9b00eab80ccb6614e69f03678e84e09a"
+ integrity sha512-14tltLm38Eu3zS+mt0KvILC3q8jyIAH518MlG+HO0p+yK885Lb1UHTY/UgR91eOyGdmxAPb+OLoW4znqIT6Ndw==
+ dependencies:
+ debug "^2.6.8"
+ pkg-dir "^2.0.0"
+
+eslint-plugin-es@^1.3.1:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-es/-/eslint-plugin-es-1.4.0.tgz#475f65bb20c993fc10e8c8fe77d1d60068072da6"
+ integrity sha512-XfFmgFdIUDgvaRAlaXUkxrRg5JSADoRC8IkKLc/cISeR3yHVMefFHQZpcyXXEUUPHfy5DwviBcrfqlyqEwlQVw==
+ dependencies:
+ eslint-utils "^1.3.0"
+ regexpp "^2.0.1"
+
+eslint-plugin-import@^2.17.2:
+ version "2.17.2"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.17.2.tgz#d227d5c6dc67eca71eb590d2bb62fb38d86e9fcb"
+ integrity sha512-m+cSVxM7oLsIpmwNn2WXTJoReOF9f/CtLMo7qOVmKd1KntBy0hEcuNZ3erTmWjx+DxRO0Zcrm5KwAvI9wHcV5g==
+ dependencies:
+ array-includes "^3.0.3"
+ contains-path "^0.1.0"
+ debug "^2.6.9"
+ doctrine "1.5.0"
+ eslint-import-resolver-node "^0.3.2"
+ eslint-module-utils "^2.4.0"
+ has "^1.0.3"
+ lodash "^4.17.11"
+ minimatch "^3.0.4"
+ read-pkg-up "^2.0.0"
+ resolve "^1.10.0"
+
+eslint-plugin-import@~2.14.0:
+ version "2.14.0"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.14.0.tgz#6b17626d2e3e6ad52cfce8807a845d15e22111a8"
+ integrity sha512-FpuRtniD/AY6sXByma2Wr0TXvXJ4nA/2/04VPlfpmUDPOpOY264x+ILiwnrk/k4RINgDAyFZByxqPUbSQ5YE7g==
+ dependencies:
+ contains-path "^0.1.0"
+ debug "^2.6.8"
+ doctrine "1.5.0"
+ eslint-import-resolver-node "^0.3.1"
+ eslint-module-utils "^2.2.0"
+ has "^1.0.1"
+ lodash "^4.17.4"
+ minimatch "^3.0.3"
+ read-pkg-up "^2.0.0"
+ resolve "^1.6.0"
+
+eslint-plugin-mocha@^5.2.0:
+ version "5.3.0"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-mocha/-/eslint-plugin-mocha-5.3.0.tgz#cf3eb18ae0e44e433aef7159637095a7cb19b15b"
+ integrity sha512-3uwlJVLijjEmBeNyH60nzqgA1gacUWLUmcKV8PIGNvj1kwP/CTgAWQHn2ayyJVwziX+KETkr9opNwT1qD/RZ5A==
+ dependencies:
+ ramda "^0.26.1"
+
+eslint-plugin-node@^8.0.1:
+ version "8.0.1"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-node/-/eslint-plugin-node-8.0.1.tgz#55ae3560022863d141fa7a11799532340a685964"
+ integrity sha512-ZjOjbjEi6jd82rIpFSgagv4CHWzG9xsQAVp1ZPlhRnnYxcTgENUVBvhYmkQ7GvT1QFijUSo69RaiOJKhMu6i8w==
+ dependencies:
+ eslint-plugin-es "^1.3.1"
+ eslint-utils "^1.3.1"
+ ignore "^5.0.2"
+ minimatch "^3.0.4"
+ resolve "^1.8.1"
+ semver "^5.5.0"
+
+eslint-plugin-node@~7.0.1:
+ version "7.0.1"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-node/-/eslint-plugin-node-7.0.1.tgz#a6e054e50199b2edd85518b89b4e7b323c9f36db"
+ integrity sha512-lfVw3TEqThwq0j2Ba/Ckn2ABdwmL5dkOgAux1rvOk6CO7A6yGyPI2+zIxN6FyNkp1X1X/BSvKOceD6mBWSj4Yw==
+ dependencies:
+ eslint-plugin-es "^1.3.1"
+ eslint-utils "^1.3.1"
+ ignore "^4.0.2"
+ minimatch "^3.0.4"
+ resolve "^1.8.1"
+ semver "^5.5.0"
+
+eslint-plugin-promise@~4.0.0:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-4.0.1.tgz#2d074b653f35a23d1ba89d8e976a985117d1c6a2"
+ integrity sha512-Si16O0+Hqz1gDHsys6RtFRrW7cCTB6P7p3OJmKp3Y3dxpQE2qwOA7d3xnV+0mBmrPoi0RBnxlCKvqu70te6wjg==
+
+eslint-plugin-react@~7.11.1:
+ version "7.11.1"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.11.1.tgz#c01a7af6f17519457d6116aa94fc6d2ccad5443c"
+ integrity sha512-cVVyMadRyW7qsIUh3FHp3u6QHNhOgVrLQYdQEB1bPWBsgbNCHdFAeNMquBMCcZJu59eNthX053L70l7gRt4SCw==
+ dependencies:
+ array-includes "^3.0.3"
+ doctrine "^2.1.0"
+ has "^1.0.3"
+ jsx-ast-utils "^2.0.1"
+ prop-types "^15.6.2"
+
+eslint-plugin-standard@^4.0.0, eslint-plugin-standard@~4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-standard/-/eslint-plugin-standard-4.0.0.tgz#f845b45109c99cd90e77796940a344546c8f6b5c"
+ integrity sha512-OwxJkR6TQiYMmt1EsNRMe5qG3GsbjlcOhbGUBY4LtavF9DsLaTcoR+j2Tdjqi23oUwKNUqX7qcn5fPStafMdlA==
+
+eslint-plugin-typescript@^0.14.0:
+ version "0.14.0"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-typescript/-/eslint-plugin-typescript-0.14.0.tgz#068549c3f4c7f3f85d88d398c29fa96bf500884c"
+ integrity sha512-2u1WnnDF2mkWWgU1lFQ2RjypUlmRoBEvQN02y9u+IL12mjWlkKFGEBnVsjs9Y8190bfPQCvWly1c2rYYUSOxWw==
+ dependencies:
+ requireindex "~1.1.0"
+
+eslint-scope@^4.0.0, eslint-scope@^4.0.3:
+ version "4.0.3"
+ resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848"
+ integrity sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==
+ dependencies:
+ esrecurse "^4.1.0"
+ estraverse "^4.1.1"
+
+eslint-utils@^1.3.0, eslint-utils@^1.3.1:
+ version "1.3.1"
+ resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-1.3.1.tgz#9a851ba89ee7c460346f97cf8939c7298827e512"
+ integrity sha512-Z7YjnIldX+2XMcjr7ZkgEsOj/bREONV60qYeB/bjMAqqqZ4zxKyWX+BOUkdmRmA9riiIPVvo5x86m5elviOk0Q==
+
+eslint-visitor-keys@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#3f3180fb2e291017716acb4c9d6d5b5c34a6a81d"
+ integrity sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ==
+
+eslint@^5.13.0:
+ version "5.16.0"
+ resolved "https://registry.yarnpkg.com/eslint/-/eslint-5.16.0.tgz#a1e3ac1aae4a3fbd8296fcf8f7ab7314cbb6abea"
+ integrity sha512-S3Rz11i7c8AA5JPv7xAH+dOyq/Cu/VXHiHXBPOU1k/JAM5dXqQPt3qcrhpHSorXmrpu2g0gkIBVXAqCpzfoZIg==
+ dependencies:
+ "@babel/code-frame" "^7.0.0"
+ ajv "^6.9.1"
+ chalk "^2.1.0"
+ cross-spawn "^6.0.5"
+ debug "^4.0.1"
+ doctrine "^3.0.0"
+ eslint-scope "^4.0.3"
+ eslint-utils "^1.3.1"
+ eslint-visitor-keys "^1.0.0"
+ espree "^5.0.1"
+ esquery "^1.0.1"
+ esutils "^2.0.2"
+ file-entry-cache "^5.0.1"
+ functional-red-black-tree "^1.0.1"
+ glob "^7.1.2"
+ globals "^11.7.0"
+ ignore "^4.0.6"
+ import-fresh "^3.0.0"
+ imurmurhash "^0.1.4"
+ inquirer "^6.2.2"
+ js-yaml "^3.13.0"
+ json-stable-stringify-without-jsonify "^1.0.1"
+ levn "^0.3.0"
+ lodash "^4.17.11"
+ minimatch "^3.0.4"
+ mkdirp "^0.5.1"
+ natural-compare "^1.4.0"
+ optionator "^0.8.2"
+ path-is-inside "^1.0.2"
+ progress "^2.0.0"
+ regexpp "^2.0.1"
+ semver "^5.5.1"
+ strip-ansi "^4.0.0"
+ strip-json-comments "^2.0.1"
+ table "^5.2.3"
+ text-table "^0.2.0"
+
+eslint@~5.4.0:
+ version "5.4.0"
+ resolved "https://registry.yarnpkg.com/eslint/-/eslint-5.4.0.tgz#d068ec03006bb9e06b429dc85f7e46c1b69fac62"
+ integrity sha512-UIpL91XGex3qtL6qwyCQJar2j3osKxK9e3ano3OcGEIRM4oWIpCkDg9x95AXEC2wMs7PnxzOkPZ2gq+tsMS9yg==
+ dependencies:
+ ajv "^6.5.0"
+ babel-code-frame "^6.26.0"
+ chalk "^2.1.0"
+ cross-spawn "^6.0.5"
+ debug "^3.1.0"
+ doctrine "^2.1.0"
+ eslint-scope "^4.0.0"
+ eslint-utils "^1.3.1"
+ eslint-visitor-keys "^1.0.0"
+ espree "^4.0.0"
+ esquery "^1.0.1"
+ esutils "^2.0.2"
+ file-entry-cache "^2.0.0"
+ functional-red-black-tree "^1.0.1"
+ glob "^7.1.2"
+ globals "^11.7.0"
+ ignore "^4.0.2"
+ imurmurhash "^0.1.4"
+ inquirer "^5.2.0"
+ is-resolvable "^1.1.0"
+ js-yaml "^3.11.0"
+ json-stable-stringify-without-jsonify "^1.0.1"
+ levn "^0.3.0"
+ lodash "^4.17.5"
+ minimatch "^3.0.4"
+ mkdirp "^0.5.1"
+ natural-compare "^1.4.0"
+ optionator "^0.8.2"
+ path-is-inside "^1.0.2"
+ pluralize "^7.0.0"
+ progress "^2.0.0"
+ regexpp "^2.0.0"
+ require-uncached "^1.0.3"
+ semver "^5.5.0"
+ strip-ansi "^4.0.0"
+ strip-json-comments "^2.0.1"
+ table "^4.0.3"
+ text-table "^0.2.0"
+
+espree@^4.0.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/espree/-/espree-4.1.0.tgz#728d5451e0fd156c04384a7ad89ed51ff54eb25f"
+ integrity sha512-I5BycZW6FCVIub93TeVY1s7vjhP9CY6cXCznIRfiig7nRviKZYdRnj/sHEWC6A7WE9RDWOFq9+7OsWSYz8qv2w==
+ dependencies:
+ acorn "^6.0.2"
+ acorn-jsx "^5.0.0"
+ eslint-visitor-keys "^1.0.0"
+
+espree@^5.0.1:
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/espree/-/espree-5.0.1.tgz#5d6526fa4fc7f0788a5cf75b15f30323e2f81f7a"
+ integrity sha512-qWAZcWh4XE/RwzLJejfcofscgMc9CamR6Tn1+XRXNzrvUSSbiAjGOI/fggztjIi7y9VLPqnICMIPiGyr8JaZ0A==
+ dependencies:
+ acorn "^6.0.7"
+ acorn-jsx "^5.0.0"
+ eslint-visitor-keys "^1.0.0"
+
+esprima@^3.1.3:
+ version "3.1.3"
+ resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633"
+ integrity sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=
+
+esprima@^4.0.0:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71"
+ integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==
+
+esquery@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.0.1.tgz#406c51658b1f5991a5f9b62b1dc25b00e3e5c708"
+ integrity sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==
+ dependencies:
+ estraverse "^4.0.0"
+
+esrecurse@^4.1.0:
+ version "4.2.1"
+ resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.1.tgz#007a3b9fdbc2b3bb87e4879ea19c92fdbd3942cf"
+ integrity sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==
+ dependencies:
+ estraverse "^4.1.0"
+
+estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1, estraverse@^4.2.0:
+ version "4.2.0"
+ resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13"
+ integrity sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=
+
+esutils@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b"
+ integrity sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=
+
+etag@~1.8.1:
+ version "1.8.1"
+ resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887"
+ integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=
+
+events@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/events/-/events-2.1.0.tgz#2a9a1e18e6106e0e812aa9ebd4a819b3c29c0ba5"
+ integrity sha512-3Zmiobend8P9DjmKAty0Era4jV8oJ0yGYe2nJJAxgymF9+N8F2m0hhZiMoWtcfepExzNKZumFU3ksdQbInGWCg==
+
+evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02"
+ integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==
+ dependencies:
+ md5.js "^1.3.4"
+ safe-buffer "^5.1.1"
+
+execa@^0.7.0:
+ version "0.7.0"
+ resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777"
+ integrity sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=
+ dependencies:
+ cross-spawn "^5.0.1"
+ get-stream "^3.0.0"
+ is-stream "^1.1.0"
+ npm-run-path "^2.0.0"
+ p-finally "^1.0.0"
+ signal-exit "^3.0.0"
+ strip-eof "^1.0.0"
+
+execa@^0.8.0:
+ version "0.8.0"
+ resolved "https://registry.yarnpkg.com/execa/-/execa-0.8.0.tgz#d8d76bbc1b55217ed190fd6dd49d3c774ecfc8da"
+ integrity sha1-2NdrvBtVIX7RkP1t1J08d07PyNo=
+ dependencies:
+ cross-spawn "^5.0.1"
+ get-stream "^3.0.0"
+ is-stream "^1.1.0"
+ npm-run-path "^2.0.0"
+ p-finally "^1.0.0"
+ signal-exit "^3.0.0"
+ strip-eof "^1.0.0"
+
+execa@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8"
+ integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==
+ dependencies:
+ cross-spawn "^6.0.0"
+ get-stream "^4.0.0"
+ is-stream "^1.1.0"
+ npm-run-path "^2.0.0"
+ p-finally "^1.0.0"
+ signal-exit "^3.0.0"
+ strip-eof "^1.0.0"
+
+exit-hook@^1.0.0:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/exit-hook/-/exit-hook-1.1.1.tgz#f05ca233b48c05d54fff07765df8507e95c02ff8"
+ integrity sha1-8FyiM7SMBdVP/wd2XfhQfpXAL/g=
+
+expand-brackets@^0.1.4:
+ version "0.1.5"
+ resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b"
+ integrity sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=
+ dependencies:
+ is-posix-bracket "^0.1.0"
+
+expand-brackets@^2.1.4:
+ version "2.1.4"
+ resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622"
+ integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI=
+ dependencies:
+ debug "^2.3.3"
+ define-property "^0.2.5"
+ extend-shallow "^2.0.1"
+ posix-character-classes "^0.1.0"
+ regex-not "^1.0.0"
+ snapdragon "^0.8.1"
+ to-regex "^3.0.1"
+
+expand-range@^1.8.1:
+ version "1.8.2"
+ resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337"
+ integrity sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=
+ dependencies:
+ fill-range "^2.1.0"
+
+express@^4.16.4:
+ version "4.16.4"
+ resolved "https://registry.yarnpkg.com/express/-/express-4.16.4.tgz#fddef61926109e24c515ea97fd2f1bdbf62df12e"
+ integrity sha512-j12Uuyb4FMrd/qQAm6uCHAkPtO8FDTRJZBDd5D2KOL2eLaz1yUNdUB/NOIyq0iU4q4cFarsUCrnFDPBcnksuOg==
+ dependencies:
+ accepts "~1.3.5"
+ array-flatten "1.1.1"
+ body-parser "1.18.3"
+ content-disposition "0.5.2"
+ content-type "~1.0.4"
+ cookie "0.3.1"
+ cookie-signature "1.0.6"
+ debug "2.6.9"
+ depd "~1.1.2"
+ encodeurl "~1.0.2"
+ escape-html "~1.0.3"
+ etag "~1.8.1"
+ finalhandler "1.1.1"
+ fresh "0.5.2"
+ merge-descriptors "1.0.1"
+ methods "~1.1.2"
+ on-finished "~2.3.0"
+ parseurl "~1.3.2"
+ path-to-regexp "0.1.7"
+ proxy-addr "~2.0.4"
+ qs "6.5.2"
+ range-parser "~1.2.0"
+ safe-buffer "5.1.2"
+ send "0.16.2"
+ serve-static "1.13.2"
+ setprototypeof "1.1.0"
+ statuses "~1.4.0"
+ type-is "~1.6.16"
+ utils-merge "1.0.1"
+ vary "~1.1.2"
+
+extend-shallow@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f"
+ integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=
+ dependencies:
+ is-extendable "^0.1.0"
+
+extend-shallow@^3.0.0, extend-shallow@^3.0.2:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8"
+ integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=
+ dependencies:
+ assign-symbols "^1.0.0"
+ is-extendable "^1.0.1"
+
+extend@^3.0.0, extend@~3.0.2:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa"
+ integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==
+
+external-editor@^2.1.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-2.2.0.tgz#045511cfd8d133f3846673d1047c154e214ad3d5"
+ integrity sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A==
+ dependencies:
+ chardet "^0.4.0"
+ iconv-lite "^0.4.17"
+ tmp "^0.0.33"
+
+external-editor@^3.0.3:
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.0.3.tgz#5866db29a97826dbe4bf3afd24070ead9ea43a27"
+ integrity sha512-bn71H9+qWoOQKyZDo25mOMVpSmXROAsTJVVVYzrrtol3d4y+AsKjf4Iwl2Q+IuT0kFSQ1qo166UuIwqYq7mGnA==
+ dependencies:
+ chardet "^0.7.0"
+ iconv-lite "^0.4.24"
+ tmp "^0.0.33"
+
+extglob@^0.3.1:
+ version "0.3.2"
+ resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1"
+ integrity sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=
+ dependencies:
+ is-extglob "^1.0.0"
+
+extglob@^2.0.4:
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543"
+ integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==
+ dependencies:
+ array-unique "^0.3.2"
+ define-property "^1.0.0"
+ expand-brackets "^2.1.4"
+ extend-shallow "^2.0.1"
+ fragment-cache "^0.2.1"
+ regex-not "^1.0.0"
+ snapdragon "^0.8.1"
+ to-regex "^3.0.1"
+
+extsprintf@1.3.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05"
+ integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=
+
+extsprintf@^1.2.0:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f"
+ integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8=
+
+falafel@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/falafel/-/falafel-2.1.0.tgz#96bb17761daba94f46d001738b3cedf3a67fe06c"
+ integrity sha1-lrsXdh2rqU9G0AFzizzt86Z/4Gw=
+ dependencies:
+ acorn "^5.0.0"
+ foreach "^2.0.5"
+ isarray "0.0.1"
+ object-keys "^1.0.6"
+
+fast-deep-equal@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49"
+ integrity sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=
+
+fast-glob@^2.0.2:
+ version "2.2.6"
+ resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-2.2.6.tgz#a5d5b697ec8deda468d85a74035290a025a95295"
+ integrity sha512-0BvMaZc1k9F+MeWWMe8pL6YltFzZYcJsYU7D4JyDA6PAczaXvxqQQ/z+mDF7/4Mw01DeUc+i3CTKajnkANkV4w==
+ dependencies:
+ "@mrmlnc/readdir-enhanced" "^2.2.1"
+ "@nodelib/fs.stat" "^1.1.2"
+ glob-parent "^3.1.0"
+ is-glob "^4.0.0"
+ merge2 "^1.2.3"
+ micromatch "^3.1.10"
+
+fast-json-stable-stringify@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2"
+ integrity sha1-1RQsDK7msRifh9OnYREGT4bIu/I=
+
+fast-levenshtein@~2.0.4:
+ version "2.0.6"
+ resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917"
+ integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=
+
+fault@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/fault/-/fault-1.0.2.tgz#c3d0fec202f172a3a4d414042ad2bb5e2a3ffbaa"
+ integrity sha512-o2eo/X2syzzERAtN5LcGbiVQ0WwZSlN3qLtadwAz3X8Bu+XWD16dja/KMsjZLiQr+BLGPDnHGkc4yUJf1Xpkpw==
+ dependencies:
+ format "^0.2.2"
+
+figures@^1.7.0:
+ version "1.7.0"
+ resolved "https://registry.yarnpkg.com/figures/-/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e"
+ integrity sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=
+ dependencies:
+ escape-string-regexp "^1.0.5"
+ object-assign "^4.1.0"
+
+figures@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962"
+ integrity sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=
+ dependencies:
+ escape-string-regexp "^1.0.5"
+
+file-entry-cache@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-2.0.0.tgz#c392990c3e684783d838b8c84a45d8a048458361"
+ integrity sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=
+ dependencies:
+ flat-cache "^1.2.1"
+ object-assign "^4.0.1"
+
+file-entry-cache@^5.0.1:
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-5.0.1.tgz#ca0f6efa6dd3d561333fb14515065c2fafdf439c"
+ integrity sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==
+ dependencies:
+ flat-cache "^2.0.1"
+
+filename-regex@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26"
+ integrity sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=
+
+filesize@3.6.1:
+ version "3.6.1"
+ resolved "https://registry.yarnpkg.com/filesize/-/filesize-3.6.1.tgz#090bb3ee01b6f801a8a8be99d31710b3422bb317"
+ integrity sha512-7KjR1vv6qnicaPMi1iiTcI85CyYwRO/PSFCu6SvqL8jN2Wjt/NIYQTFtFs7fSDCYOstUkEWIQGFUg5YZQfjlcg==
+
+fill-range@^2.1.0:
+ version "2.2.4"
+ resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.4.tgz#eb1e773abb056dcd8df2bfdf6af59b8b3a936565"
+ integrity sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==
+ dependencies:
+ is-number "^2.1.0"
+ isobject "^2.0.0"
+ randomatic "^3.0.0"
+ repeat-element "^1.1.2"
+ repeat-string "^1.5.2"
+
+fill-range@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7"
+ integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=
+ dependencies:
+ extend-shallow "^2.0.1"
+ is-number "^3.0.0"
+ repeat-string "^1.6.1"
+ to-regex-range "^2.1.0"
+
+finalhandler@1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.1.tgz#eebf4ed840079c83f4249038c9d703008301b105"
+ integrity sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg==
+ dependencies:
+ debug "2.6.9"
+ encodeurl "~1.0.2"
+ escape-html "~1.0.3"
+ on-finished "~2.3.0"
+ parseurl "~1.3.2"
+ statuses "~1.4.0"
+ unpipe "~1.0.0"
+
+find-parent-dir@^0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/find-parent-dir/-/find-parent-dir-0.3.0.tgz#33c44b429ab2b2f0646299c5f9f718f376ff8d54"
+ integrity sha1-M8RLQpqysvBkYpnF+fcY83b/jVQ=
+
+find-root@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/find-root/-/find-root-1.1.0.tgz#abcfc8ba76f708c42a97b3d685b7e9450bfb9ce4"
+ integrity sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==
+
+find-up@^1.0.0:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f"
+ integrity sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=
+ dependencies:
+ path-exists "^2.0.0"
+ pinkie-promise "^2.0.0"
+
+find-up@^2.0.0, find-up@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7"
+ integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c=
+ dependencies:
+ locate-path "^2.0.0"
+
+findup-sync@~0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-0.3.0.tgz#37930aa5d816b777c03445e1966cc6790a4c0b16"
+ integrity sha1-N5MKpdgWt3fANEXhlmzGeQpMCxY=
+ dependencies:
+ glob "~5.0.0"
+
+flat-cache@^1.2.1:
+ version "1.3.4"
+ resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-1.3.4.tgz#2c2ef77525cc2929007dfffa1dd314aa9c9dee6f"
+ integrity sha512-VwyB3Lkgacfik2vhqR4uv2rvebqmDvFu4jlN/C1RzWoJEo8I7z4Q404oiqYCkq41mni8EzQnm95emU9seckwtg==
+ dependencies:
+ circular-json "^0.3.1"
+ graceful-fs "^4.1.2"
+ rimraf "~2.6.2"
+ write "^0.2.1"
+
+flat-cache@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-2.0.1.tgz#5d296d6f04bda44a4630a301413bdbc2ec085ec0"
+ integrity sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==
+ dependencies:
+ flatted "^2.0.0"
+ rimraf "2.6.3"
+ write "1.0.3"
+
+flatted@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.0.tgz#55122b6536ea496b4b44893ee2608141d10d9916"
+ integrity sha512-R+H8IZclI8AAkSBRQJLVOsxwAoHd6WC40b4QTNWIjzAa6BXOBfQcM587MXDTVPeYaopFNWHUFLx7eNmHDSxMWg==
+
+fn-name@^2.0.1, fn-name@~2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/fn-name/-/fn-name-2.0.1.tgz#5214d7537a4d06a4a301c0cc262feb84188002e7"
+ integrity sha1-UhTXU3pNBqSjAcDMJi/rhBiAAuc=
+
+folder-hash@^2.1.1:
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/folder-hash/-/folder-hash-2.1.2.tgz#7109f9cd0cbca271936d1b5544b156d6571e6cfd"
+ integrity sha512-PmMwEZyNN96EMshf7sek4OIB7ADNsHOJ7VIw7pO0PBI0BNfEsi7U8U56TBjjqqwQ0WuBv8se0HEfmbw5b/Rk+w==
+ dependencies:
+ debug "^3.1.0"
+ graceful-fs "~4.1.11"
+ minimatch "~3.0.4"
+
+for-in@^1.0.1, for-in@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80"
+ integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=
+
+for-own@^0.1.4:
+ version "0.1.5"
+ resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce"
+ integrity sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=
+ dependencies:
+ for-in "^1.0.1"
+
+foreach@^2.0.5:
+ version "2.0.5"
+ resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99"
+ integrity sha1-C+4AUBiusmDQo6865ljdATbsG5k=
+
+forever-agent@~0.6.1:
+ version "0.6.1"
+ resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91"
+ integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=
+
+form-data@~2.3.2:
+ version "2.3.3"
+ resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6"
+ integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==
+ dependencies:
+ asynckit "^0.4.0"
+ combined-stream "^1.0.6"
+ mime-types "^2.1.12"
+
+format@^0.2.2:
+ version "0.2.2"
+ resolved "https://registry.yarnpkg.com/format/-/format-0.2.2.tgz#d6170107e9efdc4ed30c9dc39016df942b5cb58b"
+ integrity sha1-1hcBB+nv3E7TDJ3DkBbflCtctYs=
+
+forwarded@~0.1.2:
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84"
+ integrity sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=
+
+fragment-cache@^0.2.1:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19"
+ integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=
+ dependencies:
+ map-cache "^0.2.2"
+
+fresh@0.5.2:
+ version "0.5.2"
+ resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7"
+ integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=
+
+fs-constants@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad"
+ integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==
+
+fs-extra@6.0.1:
+ version "6.0.1"
+ resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-6.0.1.tgz#8abc128f7946e310135ddc93b98bddb410e7a34b"
+ integrity sha512-GnyIkKhhzXZUWFCaJzvyDLEEgDkPfb4/TPvJCJVuS8MWZgoSsErf++QpiAlDnKFcqhRlm+tIOcencCjyJE6ZCA==
+ dependencies:
+ graceful-fs "^4.1.2"
+ jsonfile "^4.0.0"
+ universalify "^0.1.0"
+
+fs-extra@^7.0.1:
+ version "7.0.1"
+ resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9"
+ integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==
+ dependencies:
+ graceful-fs "^4.1.2"
+ jsonfile "^4.0.0"
+ universalify "^0.1.0"
+
+fs-minipass@^1.2.5:
+ version "1.2.5"
+ resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.5.tgz#06c277218454ec288df77ada54a03b8702aacb9d"
+ integrity sha512-JhBl0skXjUPCFH7x6x61gQxrKyXsxB5gcgePLZCwfyCGGsTISMoIeObbrvVeP6Xmyaudw4TT43qV2Gz+iyd2oQ==
+ dependencies:
+ minipass "^2.2.1"
+
+fs.realpath@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
+ integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8=
+
+fsevents@^1.0.0:
+ version "1.2.9"
+ resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.9.tgz#3f5ed66583ccd6f400b5a00db6f7e861363e388f"
+ integrity sha512-oeyj2H3EjjonWcFjD5NvZNE9Rqe4UW+nQBU2HNeKw0koVLEFIhtyETyAakeAM3de7Z/SW5kcA+fZUait9EApnw==
+ dependencies:
+ nan "^2.12.1"
+ node-pre-gyp "^0.12.0"
+
+function-bind@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
+ integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==
+
+functional-red-black-tree@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327"
+ integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=
+
+g-status@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/g-status/-/g-status-2.0.2.tgz#270fd32119e8fc9496f066fe5fe88e0a6bc78b97"
+ integrity sha512-kQoE9qH+T1AHKgSSD0Hkv98bobE90ILQcXAF4wvGgsr7uFqNvwmh8j+Lq3l0RVt3E3HjSbv2B9biEGcEtpHLCA==
+ dependencies:
+ arrify "^1.0.1"
+ matcher "^1.0.0"
+ simple-git "^1.85.0"
+
+gauge@~2.7.3:
+ version "2.7.4"
+ resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7"
+ integrity sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=
+ dependencies:
+ aproba "^1.0.3"
+ console-control-strings "^1.0.0"
+ has-unicode "^2.0.0"
+ object-assign "^4.1.0"
+ signal-exit "^3.0.0"
+ string-width "^1.0.1"
+ strip-ansi "^3.0.1"
+ wide-align "^1.1.0"
+
+get-assigned-identifiers@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/get-assigned-identifiers/-/get-assigned-identifiers-1.2.0.tgz#6dbf411de648cbaf8d9169ebb0d2d576191e2ff1"
+ integrity sha512-mBBwmeGTrxEMO4pMaaf/uUEFHnYtwr8FTe8Y/mer4rcV/bye0qGm6pw1bGZFGStxC5O76c5ZAVBGnqHmOaJpdQ==
+
+get-own-enumerable-property-symbols@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.0.tgz#b877b49a5c16aefac3655f2ed2ea5b684df8d203"
+ integrity sha512-CIJYJC4GGF06TakLg8z4GQKvDsx9EMspVxOYih7LerEL/WosUnFIww45CGfxfeKHqlg3twgUrYRT1O3WQqjGCg==
+
+get-pkg-repo@^1.0.0:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/get-pkg-repo/-/get-pkg-repo-1.4.0.tgz#c73b489c06d80cc5536c2c853f9e05232056972d"
+ integrity sha1-xztInAbYDMVTbCyFP54FIyBWly0=
+ dependencies:
+ hosted-git-info "^2.1.4"
+ meow "^3.3.0"
+ normalize-package-data "^2.3.0"
+ parse-github-repo-url "^1.3.0"
+ through2 "^2.0.0"
+
+get-stdin@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe"
+ integrity sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=
+
+get-stdin@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-6.0.0.tgz#9e09bf712b360ab9225e812048f71fde9c89657b"
+ integrity sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==
+
+get-stream@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14"
+ integrity sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=
+
+get-stream@^4.0.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5"
+ integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==
+ dependencies:
+ pump "^3.0.0"
+
+get-value@^2.0.3, get-value@^2.0.6:
+ version "2.0.6"
+ resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28"
+ integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=
+
+getpass@^0.1.1:
+ version "0.1.7"
+ resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa"
+ integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=
+ dependencies:
+ assert-plus "^1.0.0"
+
+git-raw-commits@^1.3.6:
+ version "1.3.6"
+ resolved "https://registry.yarnpkg.com/git-raw-commits/-/git-raw-commits-1.3.6.tgz#27c35a32a67777c1ecd412a239a6c19d71b95aff"
+ integrity sha512-svsK26tQ8vEKnMshTDatSIQSMDdz8CxIIqKsvPqbtV23Etmw6VNaFAitu8zwZ0VrOne7FztwPyRLxK7/DIUTQg==
+ dependencies:
+ dargs "^4.0.1"
+ lodash.template "^4.0.2"
+ meow "^4.0.0"
+ split2 "^2.0.0"
+ through2 "^2.0.0"
+
+git-remote-origin-url@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/git-remote-origin-url/-/git-remote-origin-url-2.0.0.tgz#5282659dae2107145a11126112ad3216ec5fa65f"
+ integrity sha1-UoJlna4hBxRaERJhEq0yFuxfpl8=
+ dependencies:
+ gitconfiglocal "^1.0.0"
+ pify "^2.3.0"
+
+git-semver-tags@^1.3.6:
+ version "1.3.6"
+ resolved "https://registry.yarnpkg.com/git-semver-tags/-/git-semver-tags-1.3.6.tgz#357ea01f7280794fe0927f2806bee6414d2caba5"
+ integrity sha512-2jHlJnln4D/ECk9FxGEBh3k44wgYdWjWDtMmJPaecjoRmxKo3Y1Lh8GMYuOPu04CHw86NTAODchYjC5pnpMQig==
+ dependencies:
+ meow "^4.0.0"
+ semver "^5.5.0"
+
+gitconfiglocal@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/gitconfiglocal/-/gitconfiglocal-1.0.0.tgz#41d045f3851a5ea88f03f24ca1c6178114464b9b"
+ integrity sha1-QdBF84UaXqiPA/JMocYXgRRGS5s=
+ dependencies:
+ ini "^1.3.2"
+
+glob-base@^0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4"
+ integrity sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=
+ dependencies:
+ glob-parent "^2.0.0"
+ is-glob "^2.0.0"
+
+glob-parent@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28"
+ integrity sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=
+ dependencies:
+ is-glob "^2.0.0"
+
+glob-parent@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae"
+ integrity sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=
+ dependencies:
+ is-glob "^3.1.0"
+ path-dirname "^1.0.0"
+
+glob-to-regexp@^0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz#8c5a1494d2066c570cc3bfe4496175acc4d502ab"
+ integrity sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=
+
+glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.1.0, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3:
+ version "7.1.3"
+ resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1"
+ integrity sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==
+ dependencies:
+ fs.realpath "^1.0.0"
+ inflight "^1.0.4"
+ inherits "2"
+ minimatch "^3.0.4"
+ once "^1.3.0"
+ path-is-absolute "^1.0.0"
+
+glob@~5.0.0:
+ version "5.0.15"
+ resolved "https://registry.yarnpkg.com/glob/-/glob-5.0.15.tgz#1bc936b9e02f4a603fcc222ecf7633d30b8b93b1"
+ integrity sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=
+ dependencies:
+ inflight "^1.0.4"
+ inherits "2"
+ minimatch "2 || 3"
+ once "^1.3.0"
+ path-is-absolute "^1.0.0"
+
+global-dirs@^0.1.0:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-0.1.1.tgz#b319c0dd4607f353f3be9cca4c72fc148c49f445"
+ integrity sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU=
+ dependencies:
+ ini "^1.3.4"
+
+globals@^11.7.0:
+ version "11.11.0"
+ resolved "https://registry.yarnpkg.com/globals/-/globals-11.11.0.tgz#dcf93757fa2de5486fbeed7118538adf789e9c2e"
+ integrity sha512-WHq43gS+6ufNOEqlrDBxVEbb8ntfXrfAUU2ZOpCxrBdGKW3gyv8mCxAfIBD0DroPKGrJ2eSsXsLtY9MPntsyTw==
+
+globby@^6.1.0:
+ version "6.1.0"
+ resolved "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c"
+ integrity sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=
+ dependencies:
+ array-union "^1.0.1"
+ glob "^7.0.3"
+ object-assign "^4.0.1"
+ pify "^2.0.0"
+ pinkie-promise "^2.0.0"
+
+globby@^8.0.1:
+ version "8.0.2"
+ resolved "https://registry.yarnpkg.com/globby/-/globby-8.0.2.tgz#5697619ccd95c5275dbb2d6faa42087c1a941d8d"
+ integrity sha512-yTzMmKygLp8RUpG1Ymu2VXPSJQZjNAZPD4ywgYEaG7e4tBJeUQBO8OpXrf1RCNcEs5alsoJYPAMiIHP0cmeC7w==
+ dependencies:
+ array-union "^1.0.1"
+ dir-glob "2.0.0"
+ fast-glob "^2.0.2"
+ glob "^7.1.2"
+ ignore "^3.3.5"
+ pify "^3.0.0"
+ slash "^1.0.0"
+
+got@^6.3.0, got@^6.7.1:
+ version "6.7.1"
+ resolved "https://registry.yarnpkg.com/got/-/got-6.7.1.tgz#240cd05785a9a18e561dc1b44b41c763ef1e8db0"
+ integrity sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA=
+ dependencies:
+ create-error-class "^3.0.0"
+ duplexer3 "^0.1.4"
+ get-stream "^3.0.0"
+ is-redirect "^1.0.0"
+ is-retry-allowed "^1.0.0"
+ is-stream "^1.0.0"
+ lowercase-keys "^1.0.0"
+ safe-buffer "^5.0.1"
+ timed-out "^4.0.0"
+ unzip-response "^2.0.1"
+ url-parse-lax "^1.0.0"
+
+graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.1.9, graceful-fs@~4.1.11:
+ version "4.1.15"
+ resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.15.tgz#ffb703e1066e8a0eeaa4c8b80ba9253eeefbfb00"
+ integrity sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==
+
+gunzip-maybe@^1.3.1:
+ version "1.4.1"
+ resolved "https://registry.yarnpkg.com/gunzip-maybe/-/gunzip-maybe-1.4.1.tgz#39c72ed89d1b49ba708e18776500488902a52027"
+ integrity sha512-qtutIKMthNJJgeHQS7kZ9FqDq59/Wn0G2HYCRNjpup7yKfVI6/eqwpmroyZGFoCYaG+sW6psNVb4zoLADHpp2g==
+ dependencies:
+ browserify-zlib "^0.1.4"
+ is-deflate "^1.0.0"
+ is-gzip "^1.0.0"
+ peek-stream "^1.1.0"
+ pumpify "^1.3.3"
+ through2 "^2.0.3"
+
+handlebars@4.0.11:
+ version "4.0.11"
+ resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.0.11.tgz#630a35dfe0294bc281edae6ffc5d329fc7982dcc"
+ integrity sha1-Ywo13+ApS8KB7a5v/F0yn8eYLcw=
+ dependencies:
+ async "^1.4.0"
+ optimist "^0.6.1"
+ source-map "^0.4.4"
+ optionalDependencies:
+ uglify-js "^2.6"
+
+handlebars@^4.0.2:
+ version "4.1.2"
+ resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.1.2.tgz#b6b37c1ced0306b221e094fc7aca3ec23b131b67"
+ integrity sha512-nvfrjqvt9xQ8Z/w0ijewdD/vvWDTOweBUm96NTr66Wfvo1mJenBLwcYmPs3TIBP5ruzYGD7Hx/DaM9RmhroGPw==
+ dependencies:
+ neo-async "^2.6.0"
+ optimist "^0.6.1"
+ source-map "^0.6.1"
+ optionalDependencies:
+ uglify-js "^3.1.4"
+
+har-schema@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92"
+ integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=
+
+har-validator@~5.1.0:
+ version "5.1.3"
+ resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.3.tgz#1ef89ebd3e4996557675eed9893110dc350fa080"
+ integrity sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==
+ dependencies:
+ ajv "^6.5.5"
+ har-schema "^2.0.0"
+
+has-ansi@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91"
+ integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=
+ dependencies:
+ ansi-regex "^2.0.0"
+
+has-flag@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-2.0.0.tgz#e8207af1cc7b30d446cc70b734b5e8be18f88d51"
+ integrity sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=
+
+has-flag@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd"
+ integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0=
+
+has-symbols@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.0.tgz#ba1a8f1af2a0fc39650f5c850367704122063b44"
+ integrity sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=
+
+has-unicode@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9"
+ integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=
+
+has-value@^0.3.1:
+ version "0.3.1"
+ resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f"
+ integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=
+ dependencies:
+ get-value "^2.0.3"
+ has-values "^0.1.4"
+ isobject "^2.0.0"
+
+has-value@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177"
+ integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=
+ dependencies:
+ get-value "^2.0.6"
+ has-values "^1.0.0"
+ isobject "^3.0.0"
+
+has-values@^0.1.4:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771"
+ integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E=
+
+has-values@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f"
+ integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=
+ dependencies:
+ is-number "^3.0.0"
+ kind-of "^4.0.0"
+
+has@^1.0.0, has@^1.0.1, has@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796"
+ integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==
+ dependencies:
+ function-bind "^1.1.1"
+
+hash-base@^3.0.0:
+ version "3.0.4"
+ resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.0.4.tgz#5fc8686847ecd73499403319a6b0a3f3f6ae4918"
+ integrity sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=
+ dependencies:
+ inherits "^2.0.1"
+ safe-buffer "^5.0.1"
+
+hash.js@^1.0.0, hash.js@^1.0.3:
+ version "1.1.7"
+ resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42"
+ integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==
+ dependencies:
+ inherits "^2.0.3"
+ minimalistic-assert "^1.0.1"
+
+hmac-drbg@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1"
+ integrity sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=
+ dependencies:
+ hash.js "^1.0.3"
+ minimalistic-assert "^1.0.0"
+ minimalistic-crypto-utils "^1.0.1"
+
+hosted-git-info@^2.1.4:
+ version "2.7.1"
+ resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.7.1.tgz#97f236977bd6e125408930ff6de3eec6281ec047"
+ integrity sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==
+
+htmlescape@^1.1.0:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/htmlescape/-/htmlescape-1.1.1.tgz#3a03edc2214bca3b66424a3e7959349509cb0351"
+ integrity sha1-OgPtwiFLyjtmQko+eVk0lQnLA1E=
+
+htmlparser2@^3.9.1:
+ version "3.10.1"
+ resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.10.1.tgz#bd679dc3f59897b6a34bb10749c855bb53a9392f"
+ integrity sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==
+ dependencies:
+ domelementtype "^1.3.1"
+ domhandler "^2.3.0"
+ domutils "^1.5.1"
+ entities "^1.1.1"
+ inherits "^2.0.1"
+ readable-stream "^3.1.1"
+
+htmlparser2@~3.8.1:
+ version "3.8.3"
+ resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.8.3.tgz#996c28b191516a8be86501a7d79757e5c70c1068"
+ integrity sha1-mWwosZFRaovoZQGn15dX5ccMEGg=
+ dependencies:
+ domelementtype "1"
+ domhandler "2.3"
+ domutils "1.5"
+ entities "1.0"
+ readable-stream "1.1"
+
+http-errors@1.6.2:
+ version "1.6.2"
+ resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.2.tgz#0a002cc85707192a7e7946ceedc11155f60ec736"
+ integrity sha1-CgAsyFcHGSp+eUbO7cERVfYOxzY=
+ dependencies:
+ depd "1.1.1"
+ inherits "2.0.3"
+ setprototypeof "1.0.3"
+ statuses ">= 1.3.1 < 2"
+
+http-errors@1.6.3, http-errors@~1.6.2, http-errors@~1.6.3:
+ version "1.6.3"
+ resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d"
+ integrity sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=
+ dependencies:
+ depd "~1.1.2"
+ inherits "2.0.3"
+ setprototypeof "1.1.0"
+ statuses ">= 1.4.0 < 2"
+
+http-signature@~1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1"
+ integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=
+ dependencies:
+ assert-plus "^1.0.0"
+ jsprim "^1.2.2"
+ sshpk "^1.7.0"
+
+https-browserify@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73"
+ integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=
+
+husky@^0.14.3:
+ version "0.14.3"
+ resolved "https://registry.yarnpkg.com/husky/-/husky-0.14.3.tgz#c69ed74e2d2779769a17ba8399b54ce0b63c12c3"
+ integrity sha512-e21wivqHpstpoiWA/Yi8eFti8E+sQDSS53cpJsPptPs295QTOQR0ZwnHo2TXy1XOpZFD9rPOd3NpmqTK6uMLJA==
+ dependencies:
+ is-ci "^1.0.10"
+ normalize-path "^1.0.0"
+ strip-indent "^2.0.0"
+
+iconv-lite@0.4.19:
+ version "0.4.19"
+ resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.19.tgz#f7468f60135f5e5dad3399c0a81be9a1603a082b"
+ integrity sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==
+
+iconv-lite@0.4.23:
+ version "0.4.23"
+ resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.23.tgz#297871f63be507adcfbfca715d0cd0eed84e9a63"
+ integrity sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==
+ dependencies:
+ safer-buffer ">= 2.1.2 < 3"
+
+iconv-lite@^0.4.17, iconv-lite@^0.4.24, iconv-lite@^0.4.4:
+ version "0.4.24"
+ resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b"
+ integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==
+ dependencies:
+ safer-buffer ">= 2.1.2 < 3"
+
+ieee754@^1.1.4:
+ version "1.1.13"
+ resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84"
+ integrity sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==
+
+ignore-walk@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.1.tgz#a83e62e7d272ac0e3b551aaa82831a19b69f82f8"
+ integrity sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ==
+ dependencies:
+ minimatch "^3.0.4"
+
+ignore@^3.0.9, ignore@^3.2.0, ignore@^3.3.5:
+ version "3.3.10"
+ resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043"
+ integrity sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==
+
+ignore@^4.0.2, ignore@^4.0.6:
+ version "4.0.6"
+ resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc"
+ integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==
+
+ignore@^5.0.2:
+ version "5.1.1"
+ resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.1.tgz#2fc6b8f518aff48fef65a7f348ed85632448e4a5"
+ integrity sha512-DWjnQIFLenVrwyRCKZT+7a7/U4Cqgar4WG8V++K3hw+lrW1hc/SIwdiGmtxKCVACmHULTuGeBbHJmbwW7/sAvA==
+
+import-fresh@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-2.0.0.tgz#d81355c15612d386c61f9ddd3922d4304822a546"
+ integrity sha1-2BNVwVYS04bGH53dOSLUMEgipUY=
+ dependencies:
+ caller-path "^2.0.0"
+ resolve-from "^3.0.0"
+
+import-fresh@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.0.0.tgz#a3d897f420cab0e671236897f75bc14b4885c390"
+ integrity sha512-pOnA9tfM3Uwics+SaBLCNyZZZbK+4PTu0OPZtLlMIrv17EdBoC15S9Kn8ckJ9TZTyKb3ywNE5y1yeDxxGA7nTQ==
+ dependencies:
+ parent-module "^1.0.0"
+ resolve-from "^4.0.0"
+
+import-lazy@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-2.1.0.tgz#05698e3d45c88e8d7e9d92cb0584e77f096f3e43"
+ integrity sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=
+
+imurmurhash@^0.1.4:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea"
+ integrity sha1-khi5srkoojixPcT7a21XbyMUU+o=
+
+indent-string@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80"
+ integrity sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=
+ dependencies:
+ repeating "^2.0.0"
+
+indent-string@^3.0.0:
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-3.2.0.tgz#4a5fd6d27cc332f37e5419a504dbb837105c9289"
+ integrity sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=
+
+inflight@^1.0.4:
+ version "1.0.6"
+ resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
+ integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=
+ dependencies:
+ once "^1.3.0"
+ wrappy "1"
+
+inherits@2, inherits@2.0.3, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.1, inherits@~2.0.3:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
+ integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=
+
+inherits@2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1"
+ integrity sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=
+
+ini@^1.3.2, ini@^1.3.4, ini@~1.3.0:
+ version "1.3.5"
+ resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927"
+ integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==
+
+inline-source-map@~0.6.0:
+ version "0.6.2"
+ resolved "https://registry.yarnpkg.com/inline-source-map/-/inline-source-map-0.6.2.tgz#f9393471c18a79d1724f863fa38b586370ade2a5"
+ integrity sha1-+Tk0ccGKedFyT4Y/o4tYY3Ct4qU=
+ dependencies:
+ source-map "~0.5.3"
+
+inquirer@^5.2.0:
+ version "5.2.0"
+ resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-5.2.0.tgz#db350c2b73daca77ff1243962e9f22f099685726"
+ integrity sha512-E9BmnJbAKLPGonz0HeWHtbKf+EeSP93paWO3ZYoUpq/aowXvYGjjCSuashhXPpzbArIjBbji39THkxTz9ZeEUQ==
+ dependencies:
+ ansi-escapes "^3.0.0"
+ chalk "^2.0.0"
+ cli-cursor "^2.1.0"
+ cli-width "^2.0.0"
+ external-editor "^2.1.0"
+ figures "^2.0.0"
+ lodash "^4.3.0"
+ mute-stream "0.0.7"
+ run-async "^2.2.0"
+ rxjs "^5.5.2"
+ string-width "^2.1.0"
+ strip-ansi "^4.0.0"
+ through "^2.3.6"
+
+inquirer@^6.2.2:
+ version "6.3.1"
+ resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.3.1.tgz#7a413b5e7950811013a3db491c61d1f3b776e8e7"
+ integrity sha512-MmL624rfkFt4TG9y/Jvmt8vdmOo836U7Y0Hxr2aFk3RelZEGX4Igk0KabWrcaaZaTv9uzglOqWh1Vly+FAWAXA==
+ dependencies:
+ ansi-escapes "^3.2.0"
+ chalk "^2.4.2"
+ cli-cursor "^2.1.0"
+ cli-width "^2.0.0"
+ external-editor "^3.0.3"
+ figures "^2.0.0"
+ lodash "^4.17.11"
+ mute-stream "0.0.7"
+ run-async "^2.2.0"
+ rxjs "^6.4.0"
+ string-width "^2.1.0"
+ strip-ansi "^5.1.0"
+ through "^2.3.6"
+
+insert-module-globals@^7.0.0:
+ version "7.2.0"
+ resolved "https://registry.yarnpkg.com/insert-module-globals/-/insert-module-globals-7.2.0.tgz#ec87e5b42728479e327bd5c5c71611ddfb4752ba"
+ integrity sha512-VE6NlW+WGn2/AeOMd496AHFYmE7eLKkUY6Ty31k4og5vmA3Fjuwe9v6ifH6Xx/Hz27QvdoMoviw1/pqWRB09Sw==
+ dependencies:
+ JSONStream "^1.0.3"
+ acorn-node "^1.5.2"
+ combine-source-map "^0.8.0"
+ concat-stream "^1.6.1"
+ is-buffer "^1.1.0"
+ path-is-absolute "^1.0.1"
+ process "~0.11.0"
+ through2 "^2.0.0"
+ undeclared-identifiers "^1.1.2"
+ xtend "^4.0.0"
+
+interpret@^1.0.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.2.0.tgz#d5061a6224be58e8083985f5014d844359576296"
+ integrity sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw==
+
+ip@1.1.5:
+ version "1.1.5"
+ resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a"
+ integrity sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=
+
+ipaddr.js@1.9.0:
+ version "1.9.0"
+ resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.0.tgz#37df74e430a0e47550fe54a2defe30d8acd95f65"
+ integrity sha512-M4Sjn6N/+O6/IXSJseKqHoFc+5FdGJ22sXqnjTpdZweHK64MzEPAyQZyEU3R/KRv2GLoa7nNtg/C2Ev6m7z+eA==
+
+irregular-plurals@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/irregular-plurals/-/irregular-plurals-2.0.0.tgz#39d40f05b00f656d0b7fa471230dd3b714af2872"
+ integrity sha512-Y75zBYLkh0lJ9qxeHlMjQ7bSbyiSqNW/UOPWDmzC7cXskL1hekSITh1Oc6JV0XCWWZ9DE8VYSB71xocLk3gmGw==
+
+is-accessor-descriptor@^0.1.6:
+ version "0.1.6"
+ resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6"
+ integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=
+ dependencies:
+ kind-of "^3.0.2"
+
+is-accessor-descriptor@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656"
+ integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==
+ dependencies:
+ kind-of "^6.0.0"
+
+is-alphabetical@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/is-alphabetical/-/is-alphabetical-1.0.2.tgz#1fa6e49213cb7885b75d15862fb3f3d96c884f41"
+ integrity sha512-V0xN4BYezDHcBSKb1QHUFMlR4as/XEuCZBzMJUU4n7+Cbt33SmUnSol+pnXFvLxSHNq2CemUXNdaXV6Flg7+xg==
+
+is-alphanumeric@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-alphanumeric/-/is-alphanumeric-1.0.0.tgz#4a9cef71daf4c001c1d81d63d140cf53fd6889f4"
+ integrity sha1-Spzvcdr0wAHB2B1j0UDPU/1oifQ=
+
+is-alphanumerical@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/is-alphanumerical/-/is-alphanumerical-1.0.2.tgz#1138e9ae5040158dc6ff76b820acd6b7a181fd40"
+ integrity sha512-pyfU/0kHdISIgslFfZN9nfY1Gk3MquQgUm1mJTjdkEPpkAKNWuBTSqFwewOpR7N351VkErCiyV71zX7mlQQqsg==
+ dependencies:
+ is-alphabetical "^1.0.0"
+ is-decimal "^1.0.0"
+
+is-arrayish@^0.2.1:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d"
+ integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=
+
+is-binary-path@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898"
+ integrity sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=
+ dependencies:
+ binary-extensions "^1.0.0"
+
+is-buffer@^1.1.0, is-buffer@^1.1.4, is-buffer@^1.1.5:
+ version "1.1.6"
+ resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be"
+ integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==
+
+is-callable@^1.1.4:
+ version "1.1.4"
+ resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.4.tgz#1e1adf219e1eeb684d691f9d6a05ff0d30a24d75"
+ integrity sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==
+
+is-ci@^1.0.10:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-1.2.1.tgz#e3779c8ee17fccf428488f6e281187f2e632841c"
+ integrity sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg==
+ dependencies:
+ ci-info "^1.5.0"
+
+is-data-descriptor@^0.1.4:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56"
+ integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=
+ dependencies:
+ kind-of "^3.0.2"
+
+is-data-descriptor@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7"
+ integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==
+ dependencies:
+ kind-of "^6.0.0"
+
+is-date-object@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16"
+ integrity sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=
+
+is-decimal@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/is-decimal/-/is-decimal-1.0.2.tgz#894662d6a8709d307f3a276ca4339c8fa5dff0ff"
+ integrity sha512-TRzl7mOCchnhchN+f3ICUCzYvL9ul7R+TYOsZ8xia++knyZAJfv/uA1FvQXsAnYIl1T3B2X5E/J7Wb1QXiIBXg==
+
+is-deflate@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-deflate/-/is-deflate-1.0.0.tgz#c862901c3c161fb09dac7cdc7e784f80e98f2f14"
+ integrity sha1-yGKQHDwWH7CdrHzcfnhPgOmPLxQ=
+
+is-descriptor@^0.1.0:
+ version "0.1.6"
+ resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca"
+ integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==
+ dependencies:
+ is-accessor-descriptor "^0.1.6"
+ is-data-descriptor "^0.1.4"
+ kind-of "^5.0.0"
+
+is-descriptor@^1.0.0, is-descriptor@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec"
+ integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==
+ dependencies:
+ is-accessor-descriptor "^1.0.0"
+ is-data-descriptor "^1.0.0"
+ kind-of "^6.0.2"
+
+is-directory@^0.3.1:
+ version "0.3.1"
+ resolved "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1"
+ integrity sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=
+
+is-dotfile@^1.0.0:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.3.tgz#a6a2f32ffd2dfb04f5ca25ecd0f6b83cf798a1e1"
+ integrity sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=
+
+is-empty@^1.0.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/is-empty/-/is-empty-1.2.0.tgz#de9bb5b278738a05a0b09a57e1fb4d4a341a9f6b"
+ integrity sha1-3pu1snhzigWgsJpX4ftNSjQan2s=
+
+is-equal-shallow@^0.1.3:
+ version "0.1.3"
+ resolved "https://registry.yarnpkg.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534"
+ integrity sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=
+ dependencies:
+ is-primitive "^2.0.0"
+
+is-extendable@^0.1.0, is-extendable@^0.1.1:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89"
+ integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=
+
+is-extendable@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4"
+ integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==
+ dependencies:
+ is-plain-object "^2.0.4"
+
+is-extglob@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0"
+ integrity sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=
+
+is-extglob@^2.1.0, is-extglob@^2.1.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
+ integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=
+
+is-file@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-file/-/is-file-1.0.0.tgz#28a44cfbd9d3db193045f22b65fce8edf9620596"
+ integrity sha1-KKRM+9nT2xkwRfIrZfzo7fliBZY=
+
+is-finite@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa"
+ integrity sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=
+ dependencies:
+ number-is-nan "^1.0.0"
+
+is-fullwidth-code-point@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb"
+ integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs=
+ dependencies:
+ number-is-nan "^1.0.0"
+
+is-fullwidth-code-point@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f"
+ integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=
+
+is-glob@^2.0.0, is-glob@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863"
+ integrity sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=
+ dependencies:
+ is-extglob "^1.0.0"
+
+is-glob@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a"
+ integrity sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=
+ dependencies:
+ is-extglob "^2.1.0"
+
+is-glob@^4.0.0:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc"
+ integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==
+ dependencies:
+ is-extglob "^2.1.1"
+
+is-gzip@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-gzip/-/is-gzip-1.0.0.tgz#6ca8b07b99c77998025900e555ced8ed80879a83"
+ integrity sha1-bKiwe5nHeZgCWQDlVc7Y7YCHmoM=
+
+is-hexadecimal@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/is-hexadecimal/-/is-hexadecimal-1.0.2.tgz#b6e710d7d07bb66b98cb8cece5c9b4921deeb835"
+ integrity sha512-but/G3sapV3MNyqiDBLrOi4x8uCIw0RY3o/Vb5GT0sMFHrVV7731wFSVy41T5FO1og7G0gXLJh0MkgPRouko/A==
+
+is-hidden@^1.0.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/is-hidden/-/is-hidden-1.1.1.tgz#82ee6a93aeef3fb007ad5b9457c0584d45329f38"
+ integrity sha512-175UKecS8+U4hh2PSY0j4xnm2GKYzvSKnbh+naC93JjuBA7LgIo6YxlbcsSo6seFBdQO3RuIcH980yvqqD/2cA==
+
+is-installed-globally@^0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.1.0.tgz#0dfd98f5a9111716dd535dda6492f67bf3d25a80"
+ integrity sha1-Df2Y9akRFxbdU13aZJL2e/PSWoA=
+ dependencies:
+ global-dirs "^0.1.0"
+ is-path-inside "^1.0.0"
+
+is-npm@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-1.0.0.tgz#f2fb63a65e4905b406c86072765a1a4dc793b9f4"
+ integrity sha1-8vtjpl5JBbQGyGBydloaTceTufQ=
+
+is-number@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f"
+ integrity sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=
+ dependencies:
+ kind-of "^3.0.2"
+
+is-number@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195"
+ integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=
+ dependencies:
+ kind-of "^3.0.2"
+
+is-number@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/is-number/-/is-number-4.0.0.tgz#0026e37f5454d73e356dfe6564699867c6a7f0ff"
+ integrity sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==
+
+is-obj@^1.0.0, is-obj@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f"
+ integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8=
+
+is-object@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/is-object/-/is-object-1.0.1.tgz#8952688c5ec2ffd6b03ecc85e769e02903083470"
+ integrity sha1-iVJojF7C/9awPsyF52ngKQMINHA=
+
+is-observable@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/is-observable/-/is-observable-1.1.0.tgz#b3e986c8f44de950867cab5403f5a3465005975e"
+ integrity sha512-NqCa4Sa2d+u7BWc6CukaObG3Fh+CU9bvixbpcXYhy2VvYS7vVGIdAgnIS5Ks3A/cqk4rebLJ9s8zBstT2aKnIA==
+ dependencies:
+ symbol-observable "^1.1.0"
+
+is-path-cwd@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-1.0.0.tgz#d225ec23132e89edd38fda767472e62e65f1106d"
+ integrity sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=
+
+is-path-in-cwd@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz#5ac48b345ef675339bd6c7a48a912110b241cf52"
+ integrity sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ==
+ dependencies:
+ is-path-inside "^1.0.0"
+
+is-path-inside@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-1.0.1.tgz#8ef5b7de50437a3fdca6b4e865ef7aa55cb48036"
+ integrity sha1-jvW33lBDej/cprToZe96pVy0gDY=
+ dependencies:
+ path-is-inside "^1.0.1"
+
+is-plain-obj@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e"
+ integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4=
+
+is-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4:
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677"
+ integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==
+ dependencies:
+ isobject "^3.0.1"
+
+is-posix-bracket@^0.1.0:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4"
+ integrity sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=
+
+is-primitive@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575"
+ integrity sha1-IHurkWOEmcB7Kt8kCkGochADRXU=
+
+is-promise@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa"
+ integrity sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=
+
+is-redirect@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-redirect/-/is-redirect-1.0.0.tgz#1d03dded53bd8db0f30c26e4f95d36fc7c87dc24"
+ integrity sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ=
+
+is-regex@^1.0.4:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491"
+ integrity sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=
+ dependencies:
+ has "^1.0.1"
+
+is-regexp@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069"
+ integrity sha1-/S2INUXEa6xaYz57mgnof6LLUGk=
+
+is-resolvable@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88"
+ integrity sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==
+
+is-retry-allowed@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz#11a060568b67339444033d0125a61a20d564fb34"
+ integrity sha1-EaBgVotnM5REAz0BJaYaINVk+zQ=
+
+is-stream@1.1.0, is-stream@^1.0.0, is-stream@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44"
+ integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ=
+
+is-subset@^0.1.1:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/is-subset/-/is-subset-0.1.1.tgz#8a59117d932de1de00f245fcdd39ce43f1e939a6"
+ integrity sha1-ilkRfZMt4d4A8kX83TnOQ/HpOaY=
+
+is-symbol@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.2.tgz#a055f6ae57192caee329e7a860118b497a950f38"
+ integrity sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==
+ dependencies:
+ has-symbols "^1.0.0"
+
+is-text-path@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/is-text-path/-/is-text-path-1.0.1.tgz#4e1aa0fb51bfbcb3e92688001397202c1775b66e"
+ integrity sha1-Thqg+1G/vLPpJogAE5cgLBd1tm4=
+ dependencies:
+ text-extensions "^1.0.0"
+
+is-typedarray@~1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a"
+ integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=
+
+is-utf8@^0.2.0:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72"
+ integrity sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=
+
+is-whitespace-character@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/is-whitespace-character/-/is-whitespace-character-1.0.2.tgz#ede53b4c6f6fb3874533751ec9280d01928d03ed"
+ integrity sha512-SzM+T5GKUCtLhlHFKt2SDAX2RFzfS6joT91F2/WSi9LxgFdsnhfPK/UIA+JhRR2xuyLdrCys2PiFDrtn1fU5hQ==
+
+is-windows@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d"
+ integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==
+
+is-word-character@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/is-word-character/-/is-word-character-1.0.2.tgz#46a5dac3f2a1840898b91e576cd40d493f3ae553"
+ integrity sha512-T3FlsX8rCHAH8e7RE7PfOPZVFQlcV3XRF9eOOBQ1uf70OxO7CjjSOjeImMPCADBdYWcStAbVbYvJ1m2D3tb+EA==
+
+is-wsl@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d"
+ integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=
+
+isarray@0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf"
+ integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=
+
+isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
+ integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=
+
+isarray@^2.0.4:
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.4.tgz#38e7bcbb0f3ba1b7933c86ba1894ddfc3781bbb7"
+ integrity sha512-GMxXOiUirWg1xTKRipM0Ek07rX+ubx4nNVElTJdNLYmNO/2YrDkgJGw9CljXn+r4EWiDQg/8lsRdHyg2PJuUaA==
+
+isexe@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
+ integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=
+
+isobject@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89"
+ integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=
+ dependencies:
+ isarray "1.0.0"
+
+isobject@^3.0.0, isobject@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df"
+ integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8=
+
+isstream@~0.1.2:
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a"
+ integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=
+
+"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"
+ integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==
+
+js-tokens@^3.0.2:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b"
+ integrity sha1-mGbfOVECEw449/mWvOtlRDIJwls=
+
+js-yaml@^3.11.0, js-yaml@^3.13.0, js-yaml@^3.6.1:
+ version "3.13.1"
+ resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847"
+ integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==
+ dependencies:
+ argparse "^1.0.7"
+ esprima "^4.0.0"
+
+jsbn@~0.1.0:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513"
+ integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM=
+
+jsdom@^7.0.2:
+ version "7.2.2"
+ resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-7.2.2.tgz#40b402770c2bda23469096bee91ab675e3b1fc6e"
+ integrity sha1-QLQCdwwr2iNGkJa+6Rq2deOx/G4=
+ dependencies:
+ abab "^1.0.0"
+ acorn "^2.4.0"
+ acorn-globals "^1.0.4"
+ cssom ">= 0.3.0 < 0.4.0"
+ cssstyle ">= 0.2.29 < 0.3.0"
+ escodegen "^1.6.1"
+ nwmatcher ">= 1.3.7 < 2.0.0"
+ parse5 "^1.5.1"
+ request "^2.55.0"
+ sax "^1.1.4"
+ symbol-tree ">= 3.1.0 < 4.0.0"
+ tough-cookie "^2.2.0"
+ webidl-conversions "^2.0.0"
+ whatwg-url-compat "~0.6.5"
+ xml-name-validator ">= 2.0.1 < 3.0.0"
+
+json-parse-better-errors@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9"
+ integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==
+
+json-schema-traverse@^0.4.1:
+ version "0.4.1"
+ resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660"
+ integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==
+
+json-schema@0.2.3:
+ version "0.2.3"
+ resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13"
+ integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=
+
+json-stable-stringify-without-jsonify@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651"
+ integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=
+
+json-stable-stringify@~0.0.0:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-0.0.1.tgz#611c23e814db375527df851193db59dd2af27f45"
+ integrity sha1-YRwj6BTbN1Un34URk9tZ3Sryf0U=
+ dependencies:
+ jsonify "~0.0.0"
+
+json-stringify-safe@^5.0.1, json-stringify-safe@~5.0.1:
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb"
+ integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=
+
+jsonfile@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb"
+ integrity sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=
+ optionalDependencies:
+ graceful-fs "^4.1.6"
+
+jsonify@~0.0.0:
+ version "0.0.0"
+ resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73"
+ integrity sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=
+
+jsonparse@^1.2.0:
+ version "1.3.1"
+ resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280"
+ integrity sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=
+
+jsprim@^1.2.2:
+ version "1.4.1"
+ resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2"
+ integrity sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=
+ dependencies:
+ assert-plus "1.0.0"
+ extsprintf "1.3.0"
+ json-schema "0.2.3"
+ verror "1.10.0"
+
+jsx-ast-utils@^2.0.1:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-2.1.0.tgz#0ee4e2c971fb9601c67b5641b71be80faecf0b36"
+ integrity sha512-yDGDG2DS4JcqhA6blsuYbtsT09xL8AoLuUR2Gb5exrw7UEM19sBcOTq+YBBhrNbl0PUC4R4LnFu+dHg2HKeVvA==
+ dependencies:
+ array-includes "^3.0.3"
+
+keyed-array@^2.1.2:
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/keyed-array/-/keyed-array-2.1.2.tgz#8ac137b61322ed5ed1c7b41b9f9cd066631cace0"
+ integrity sha1-isE3thMi7V7Rx7Qbn5zQZmMcrOA=
+
+kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0:
+ version "3.2.2"
+ resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64"
+ integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=
+ dependencies:
+ is-buffer "^1.1.5"
+
+kind-of@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57"
+ integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc=
+ dependencies:
+ is-buffer "^1.1.5"
+
+kind-of@^5.0.0:
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d"
+ integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==
+
+kind-of@^6.0.0, kind-of@^6.0.2:
+ version "6.0.2"
+ resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051"
+ integrity sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==
+
+klaw@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/klaw/-/klaw-3.0.0.tgz#b11bec9cf2492f06756d6e809ab73a2910259146"
+ integrity sha512-0Fo5oir+O9jnXu5EefYbVK+mHMBeEVEy2cmctR1O1NECcCkPRreJKrS6Qt/j3KC2C148Dfo9i3pCmCMsdqGr0g==
+ dependencies:
+ graceful-fs "^4.1.9"
+
+labeled-stream-splicer@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/labeled-stream-splicer/-/labeled-stream-splicer-2.0.1.tgz#9cffa32fd99e1612fd1d86a8db962416d5292926"
+ integrity sha512-MC94mHZRvJ3LfykJlTUipBqenZz1pacOZEMhhQ8dMGcDHs0SBE5GbsavUXV7YtP3icBW17W0Zy1I0lfASmo9Pg==
+ dependencies:
+ inherits "^2.0.1"
+ isarray "^2.0.4"
+ stream-splicer "^2.0.0"
+
+latest-version@^3.0.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-3.1.0.tgz#a205383fea322b33b5ae3b18abee0dc2f356ee15"
+ integrity sha1-ogU4P+oyKzO1rjsYq+4NwvNW7hU=
+ dependencies:
+ package-json "^4.0.0"
+
+lazy-cache@^1.0.3:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e"
+ integrity sha1-odePw6UEdMuAhF07O24dpJpEbo4=
+
+leven@2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/leven/-/leven-2.1.0.tgz#c2e7a9f772094dee9d34202ae8acce4687875580"
+ integrity sha1-wuep93IJTe6dNCAq6KzORoeHVYA=
+
+levn@^0.3.0, levn@~0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee"
+ integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=
+ dependencies:
+ prelude-ls "~1.1.2"
+ type-check "~0.3.2"
+
+linkify-it@~1.2.2:
+ version "1.2.4"
+ resolved "https://registry.yarnpkg.com/linkify-it/-/linkify-it-1.2.4.tgz#0773526c317c8fd13bd534ee1d180ff88abf881a"
+ integrity sha1-B3NSbDF8j9E71TTuHRgP+Iq/iBo=
+ dependencies:
+ uc.micro "^1.0.1"
+
+lint-staged@^8.1.0:
+ version "8.1.5"
+ resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-8.1.5.tgz#372476fe1a58b8834eb562ed4c99126bd60bdd79"
+ integrity sha512-e5ZavfnSLcBJE1BTzRTqw6ly8OkqVyO3GL2M6teSmTBYQ/2BuueD5GIt2RPsP31u/vjKdexUyDCxSyK75q4BDA==
+ dependencies:
+ chalk "^2.3.1"
+ commander "^2.14.1"
+ cosmiconfig "^5.0.2"
+ debug "^3.1.0"
+ dedent "^0.7.0"
+ del "^3.0.0"
+ execa "^1.0.0"
+ find-parent-dir "^0.3.0"
+ g-status "^2.0.2"
+ is-glob "^4.0.0"
+ is-windows "^1.0.2"
+ listr "^0.14.2"
+ listr-update-renderer "^0.5.0"
+ lodash "^4.17.11"
+ log-symbols "^2.2.0"
+ micromatch "^3.1.8"
+ npm-which "^3.0.1"
+ p-map "^1.1.1"
+ path-is-inside "^1.0.2"
+ pify "^3.0.0"
+ please-upgrade-node "^3.0.2"
+ staged-git-files "1.1.2"
+ string-argv "^0.0.2"
+ stringify-object "^3.2.2"
+ yup "^0.26.10"
+
+lint@^1.1.2:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/lint/-/lint-1.1.2.tgz#35ed064f322547c331358d899868664968ba371f"
+ integrity sha1-Ne0GTzIlR8MxNY2JmGhmSWi6Nx8=
+
+listr-silent-renderer@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/listr-silent-renderer/-/listr-silent-renderer-1.1.1.tgz#924b5a3757153770bf1a8e3fbf74b8bbf3f9242e"
+ integrity sha1-kktaN1cVN3C/Go4/v3S4u/P5JC4=
+
+listr-update-renderer@^0.5.0:
+ version "0.5.0"
+ resolved "https://registry.yarnpkg.com/listr-update-renderer/-/listr-update-renderer-0.5.0.tgz#4ea8368548a7b8aecb7e06d8c95cb45ae2ede6a2"
+ integrity sha512-tKRsZpKz8GSGqoI/+caPmfrypiaq+OQCbd+CovEC24uk1h952lVj5sC7SqyFUm+OaJ5HN/a1YLt5cit2FMNsFA==
+ dependencies:
+ chalk "^1.1.3"
+ cli-truncate "^0.2.1"
+ elegant-spinner "^1.0.1"
+ figures "^1.7.0"
+ indent-string "^3.0.0"
+ log-symbols "^1.0.2"
+ log-update "^2.3.0"
+ strip-ansi "^3.0.1"
+
+listr-verbose-renderer@^0.5.0:
+ version "0.5.0"
+ resolved "https://registry.yarnpkg.com/listr-verbose-renderer/-/listr-verbose-renderer-0.5.0.tgz#f1132167535ea4c1261102b9f28dac7cba1e03db"
+ integrity sha512-04PDPqSlsqIOaaaGZ+41vq5FejI9auqTInicFRndCBgE3bXG8D6W1I+mWhk+1nqbHmyhla/6BUrd5OSiHwKRXw==
+ dependencies:
+ chalk "^2.4.1"
+ cli-cursor "^2.1.0"
+ date-fns "^1.27.2"
+ figures "^2.0.0"
+
+listr@^0.14.2:
+ version "0.14.3"
+ resolved "https://registry.yarnpkg.com/listr/-/listr-0.14.3.tgz#2fea909604e434be464c50bddba0d496928fa586"
+ integrity sha512-RmAl7su35BFd/xoMamRjpIE4j3v+L28o8CT5YhAXQJm1fD+1l9ngXY8JAQRJ+tFK2i5njvi0iRUKV09vPwA0iA==
+ dependencies:
+ "@samverschueren/stream-to-observable" "^0.3.0"
+ is-observable "^1.1.0"
+ is-promise "^2.1.0"
+ is-stream "^1.1.0"
+ listr-silent-renderer "^1.1.1"
+ listr-update-renderer "^0.5.0"
+ listr-verbose-renderer "^0.5.0"
+ p-map "^2.0.0"
+ rxjs "^6.3.3"
+
+load-json-file@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0"
+ integrity sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=
+ dependencies:
+ graceful-fs "^4.1.2"
+ parse-json "^2.2.0"
+ pify "^2.0.0"
+ pinkie-promise "^2.0.0"
+ strip-bom "^2.0.0"
+
+load-json-file@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8"
+ integrity sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=
+ dependencies:
+ graceful-fs "^4.1.2"
+ parse-json "^2.2.0"
+ pify "^2.0.0"
+ strip-bom "^3.0.0"
+
+load-json-file@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b"
+ integrity sha1-L19Fq5HjMhYjT9U62rZo607AmTs=
+ dependencies:
+ graceful-fs "^4.1.2"
+ parse-json "^4.0.0"
+ pify "^3.0.0"
+ strip-bom "^3.0.0"
+
+load-plugin@^2.0.0:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/load-plugin/-/load-plugin-2.3.0.tgz#577b6a956b344fd2ae80d8ecff5944febeea8eb7"
+ integrity sha512-OxHNMfT3aeHFSpzeMQRcE40kXULv3KA8fGgnySC+rO3Be+0oMWkcRKMJ5zWzUCTuUnabCsQyJzNjo/BLdbmRxA==
+ dependencies:
+ npm-prefix "^1.2.0"
+ resolve-from "^4.0.0"
+
+locate-path@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e"
+ integrity sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=
+ dependencies:
+ p-locate "^2.0.0"
+ path-exists "^3.0.0"
+
+lodash._reinterpolate@~3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d"
+ integrity sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=
+
+lodash.flatten@^4.4.0:
+ version "4.4.0"
+ resolved "https://registry.yarnpkg.com/lodash.flatten/-/lodash.flatten-4.4.0.tgz#f31c22225a9632d2bbf8e4addbef240aa765a61f"
+ integrity sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=
+
+lodash.get@^4.4.2:
+ version "4.4.2"
+ resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99"
+ integrity sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=
+
+lodash.isempty@^4.4.0:
+ version "4.4.0"
+ resolved "https://registry.yarnpkg.com/lodash.isempty/-/lodash.isempty-4.4.0.tgz#6f86cbedd8be4ec987be9aaf33c9684db1b31e7e"
+ integrity sha1-b4bL7di+TsmHvpqvM8loTbGzHn4=
+
+lodash.isplainobject@^4.0.6:
+ version "4.0.6"
+ resolved "https://registry.yarnpkg.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb"
+ integrity sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=
+
+lodash.memoize@~3.0.3:
+ version "3.0.4"
+ resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-3.0.4.tgz#2dcbd2c287cbc0a55cc42328bd0c736150d53e3f"
+ integrity sha1-LcvSwofLwKVcxCMovQxzYVDVPj8=
+
+lodash.merge@^4.6.0:
+ version "4.6.1"
+ resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.1.tgz#adc25d9cb99b9391c59624f379fbba60d7111d54"
+ integrity sha512-AOYza4+Hf5z1/0Hztxpm2/xiPZgi/cjMqdnKTUWTBSKchJlxXXuUSxCCl8rJlf4g6yww/j6mA8nC8Hw/EZWxKQ==
+
+lodash.pick@^4.2.1:
+ version "4.4.0"
+ resolved "https://registry.yarnpkg.com/lodash.pick/-/lodash.pick-4.4.0.tgz#52f05610fff9ded422611441ed1fc123a03001b3"
+ integrity sha1-UvBWEP/53tQiYRRB7R/BI6AwAbM=
+
+lodash.range@^3.2.0:
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/lodash.range/-/lodash.range-3.2.0.tgz#f461e588f66683f7eadeade513e38a69a565a15d"
+ integrity sha1-9GHliPZmg/fq3q3lE+OKaaVloV0=
+
+lodash.set@^4.3.2:
+ version "4.3.2"
+ resolved "https://registry.yarnpkg.com/lodash.set/-/lodash.set-4.3.2.tgz#d8757b1da807dde24816b0d6a84bea1a76230b23"
+ integrity sha1-2HV7HagH3eJIFrDWqEvqGnYjCyM=
+
+lodash.template@^4.0.2:
+ version "4.4.0"
+ resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-4.4.0.tgz#e73a0385c8355591746e020b99679c690e68fba0"
+ integrity sha1-5zoDhcg1VZF0bgILmWecaQ5o+6A=
+ dependencies:
+ lodash._reinterpolate "~3.0.0"
+ lodash.templatesettings "^4.0.0"
+
+lodash.templatesettings@^4.0.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-4.1.0.tgz#2b4d4e95ba440d915ff08bc899e4553666713316"
+ integrity sha1-K01OlbpEDZFf8IvImeRVNmZxMxY=
+ dependencies:
+ lodash._reinterpolate "~3.0.0"
+
+lodash.transform@^4.6.0:
+ version "4.6.0"
+ resolved "https://registry.yarnpkg.com/lodash.transform/-/lodash.transform-4.6.0.tgz#12306422f63324aed8483d3f38332b5f670547a0"
+ integrity sha1-EjBkIvYzJK7YSD0/ODMrX2cFR6A=
+
+lodash.unescape@4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/lodash.unescape/-/lodash.unescape-4.0.1.tgz#bf2249886ce514cda112fae9218cdc065211fc9c"
+ integrity sha1-vyJJiGzlFM2hEvrpIYzcBlIR/Jw=
+
+lodash.uniq@^4.5.0:
+ version "4.5.0"
+ resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773"
+ integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=
+
+lodash@^4.1.0, lodash@^4.15.0, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.2.1, lodash@^4.3.0:
+ version "4.17.11"
+ resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d"
+ integrity sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==
+
+log-symbols@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-1.0.2.tgz#376ff7b58ea3086a0f09facc74617eca501e1a18"
+ integrity sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg=
+ dependencies:
+ chalk "^1.0.0"
+
+log-symbols@^2.2.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-2.2.0.tgz#5740e1c5d6f0dfda4ad9323b5332107ef6b4c40a"
+ integrity sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==
+ dependencies:
+ chalk "^2.0.1"
+
+log-update@^2.3.0:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/log-update/-/log-update-2.3.0.tgz#88328fd7d1ce7938b29283746f0b1bc126b24708"
+ integrity sha1-iDKP19HOeTiykoN0bwsbwSayRwg=
+ dependencies:
+ ansi-escapes "^3.0.0"
+ cli-cursor "^2.0.0"
+ wrap-ansi "^3.0.1"
+
+longest-streak@^2.0.1:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/longest-streak/-/longest-streak-2.0.2.tgz#2421b6ba939a443bb9ffebf596585a50b4c38e2e"
+ integrity sha512-TmYTeEYxiAmSVdpbnQDXGtvYOIRsCMg89CVZzwzc2o7GFL1CjoiRPjH5ec0NFAVlAx3fVof9dX/t6KKRAo2OWA==
+
+longest@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097"
+ integrity sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=
+
+loose-envify@^1.4.0:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf"
+ integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==
+ dependencies:
+ js-tokens "^3.0.0 || ^4.0.0"
+
+loud-rejection@^1.0.0:
+ version "1.6.0"
+ resolved "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f"
+ integrity sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=
+ dependencies:
+ currently-unhandled "^0.4.1"
+ signal-exit "^3.0.0"
+
+lowercase-keys@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f"
+ integrity sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==
+
+lru-cache@^4.0.1:
+ version "4.1.5"
+ resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd"
+ integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==
+ dependencies:
+ pseudomap "^1.0.2"
+ yallist "^2.1.2"
+
+macos-release@^2.2.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/macos-release/-/macos-release-2.2.0.tgz#ab58d55dd4714f0a05ad4b0e90f4370fef5cdea8"
+ integrity sha512-iV2IDxZaX8dIcM7fG6cI46uNmHUxHE4yN+Z8tKHAW1TBPMZDIKHf/3L+YnOuj/FK9il14UaVdHmiQ1tsi90ltA==
+
+make-dir@^1.0.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c"
+ integrity sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==
+ dependencies:
+ pify "^3.0.0"
+
+make-error@^1.1.1:
+ version "1.3.5"
+ resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.5.tgz#efe4e81f6db28cadd605c70f29c831b58ef776c8"
+ integrity sha512-c3sIjNUow0+8swNwVpqoH4YCShKNFkMaw6oH1mNS2haDZQqkeZFlHS3dhoeEbKKmJB4vXpJucU6oH75aDYeE9g==
+
+map-cache@^0.2.2:
+ version "0.2.2"
+ resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf"
+ integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=
+
+map-obj@^1.0.0, map-obj@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d"
+ integrity sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=
+
+map-obj@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-2.0.0.tgz#a65cd29087a92598b8791257a523e021222ac1f9"
+ integrity sha1-plzSkIepJZi4eRJXpSPgISIqwfk=
+
+map-visit@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f"
+ integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=
+ dependencies:
+ object-visit "^1.0.0"
+
+markdown-escapes@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/markdown-escapes/-/markdown-escapes-1.0.2.tgz#e639cbde7b99c841c0bacc8a07982873b46d2122"
+ integrity sha512-lbRZ2mE3Q9RtLjxZBZ9+IMl68DKIXaVAhwvwn9pmjnPLS0h/6kyBMgNhqi1xFJ/2yv6cSyv0jbiZavZv93JkkA==
+
+markdown-extensions@^1.1.0:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/markdown-extensions/-/markdown-extensions-1.1.1.tgz#fea03b539faeaee9b4ef02a3769b455b189f7fc3"
+ integrity sha512-WWC0ZuMzCyDHYCasEGs4IPvLyTGftYwh6wIEOULOF0HXcqZlhwRzrK0w2VUlxWA98xnvb/jszw4ZSkJ6ADpM6Q==
+
+markdown-it-named-headers@0.0.4:
+ version "0.0.4"
+ resolved "https://registry.yarnpkg.com/markdown-it-named-headers/-/markdown-it-named-headers-0.0.4.tgz#82efc28324240a6b1e77b9aae501771d5f351c1f"
+ integrity sha1-gu/CgyQkCmsed7mq5QF3HV81HB8=
+ dependencies:
+ string "^3.0.1"
+
+markdown-it@^6.0.1:
+ version "6.1.1"
+ resolved "https://registry.yarnpkg.com/markdown-it/-/markdown-it-6.1.1.tgz#ced037f4473ee9f5153ac414f77dc83c91ba927c"
+ integrity sha1-ztA39Ec+6fUVOsQU933IPJG6knw=
+ dependencies:
+ argparse "^1.0.7"
+ entities "~1.1.1"
+ linkify-it "~1.2.2"
+ mdurl "~1.0.1"
+ uc.micro "^1.0.1"
+
+markdown-table@^1.1.0:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/markdown-table/-/markdown-table-1.1.2.tgz#c78db948fa879903a41bce522e3b96f801c63786"
+ integrity sha512-NcWuJFHDA8V3wkDgR/j4+gZx+YQwstPgfQDV8ndUeWWzta3dnDTBxpVzqS9lkmJAuV5YX35lmyojl6HO5JXAgw==
+
+marky-markdown-lite@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/marky-markdown-lite/-/marky-markdown-lite-1.2.0.tgz#74eda984b8136557dee1064efd15e40617406997"
+ integrity sha1-dO2phLgTZVfe4QZO/RXkBhdAaZc=
+ dependencies:
+ cheerio "^0.20.0"
+ conventional-changelog-cli "^1.2.0"
+ is-file "^1.0.0"
+ markdown-it "^6.0.1"
+ markdown-it-named-headers "0.0.4"
+
+matcher-collection@^1.0.0:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/matcher-collection/-/matcher-collection-1.1.2.tgz#1076f506f10ca85897b53d14ef54f90a5c426838"
+ integrity sha512-YQ/teqaOIIfUHedRam08PB3NK7Mjct6BvzRnJmpGDm8uFXpNr1sbY4yuflI5JcEs6COpYA0FpRQhSDBf1tT95g==
+ dependencies:
+ minimatch "^3.0.2"
+
+matcher@^1.0.0:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/matcher/-/matcher-1.1.1.tgz#51d8301e138f840982b338b116bb0c09af62c1c2"
+ integrity sha512-+BmqxWIubKTRKNWx/ahnCkk3mG8m7OturVlqq6HiojGJTd5hVYbgZm6WzcYPCoB+KBT4Vd6R7WSRG2OADNaCjg==
+ dependencies:
+ escape-string-regexp "^1.0.4"
+
+math-random@^1.0.1:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/math-random/-/math-random-1.0.4.tgz#5dd6943c938548267016d4e34f057583080c514c"
+ integrity sha512-rUxjysqif/BZQH2yhd5Aaq7vXMSx9NdEsQcyA07uEzIvxgI7zIr33gGsh+RU0/XjmQpCW7RsVof1vlkvQVCK5A==
+
+md5.js@^1.3.4:
+ version "1.3.5"
+ resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f"
+ integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==
+ dependencies:
+ hash-base "^3.0.0"
+ inherits "^2.0.1"
+ safe-buffer "^5.1.2"
+
+mdast-comment-marker@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/mdast-comment-marker/-/mdast-comment-marker-1.1.0.tgz#81129dd4182eaeafbd40bb1f79be4da587a1dc52"
+ integrity sha512-NqHAs8nmu08I6MGzpKzgTd9qiCP7oshkyzQrlZxLMsLPUOPjp/Zb/ZtorKD0oOJ38vdZxFCdOlXvlDf77AqEDg==
+
+mdast-util-compact@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/mdast-util-compact/-/mdast-util-compact-1.0.2.tgz#c12ebe16fffc84573d3e19767726de226e95f649"
+ integrity sha512-d2WS98JSDVbpSsBfVvD9TaDMlqPRz7ohM/11G0rp5jOBb5q96RJ6YLszQ/09AAixyzh23FeIpCGqfaamEADtWg==
+ dependencies:
+ unist-util-visit "^1.1.0"
+
+mdast-util-heading-style@^1.0.2:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/mdast-util-heading-style/-/mdast-util-heading-style-1.0.4.tgz#8e796de77f91c141691620ebbb5c9140609e3fd2"
+ integrity sha512-n4fUvwpR5Uj1Ti658KxYDq9gR0UF3FK1UVTVig12imrSOssQU2OpUysje8nps5Cb85b6eau5akpWW7Zkxtv1XA==
+
+mdast-util-to-string@^1.0.2:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/mdast-util-to-string/-/mdast-util-to-string-1.0.5.tgz#3552b05428af22ceda34f156afe62ec8e6d731ca"
+ integrity sha512-2qLt/DEOo5F6nc2VFScQiHPzQ0XXcabquRJxKMhKte8nt42o08HUxNDPk7tt0YPxnWjAT11I1SYi0X0iPnfI5A==
+
+mdurl@~1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/mdurl/-/mdurl-1.0.1.tgz#fe85b2ec75a59037f2adfec100fd6c601761152e"
+ integrity sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4=
+
+media-typer@0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748"
+ integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=
+
+meow@^3.1.0, meow@^3.3.0:
+ version "3.7.0"
+ resolved "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb"
+ integrity sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=
+ dependencies:
+ camelcase-keys "^2.0.0"
+ decamelize "^1.1.2"
+ loud-rejection "^1.0.0"
+ map-obj "^1.0.1"
+ minimist "^1.1.3"
+ normalize-package-data "^2.3.4"
+ object-assign "^4.0.1"
+ read-pkg-up "^1.0.1"
+ redent "^1.0.0"
+ trim-newlines "^1.0.0"
+
+meow@^4.0.0:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/meow/-/meow-4.0.1.tgz#d48598f6f4b1472f35bf6317a95945ace347f975"
+ integrity sha512-xcSBHD5Z86zaOc+781KrupuHAzeGXSLtiAOmBsiLDiPSaYSB6hdew2ng9EBAnZ62jagG9MHAOdxpDi/lWBFJ/A==
+ dependencies:
+ camelcase-keys "^4.0.0"
+ decamelize-keys "^1.0.0"
+ loud-rejection "^1.0.0"
+ minimist "^1.1.3"
+ minimist-options "^3.0.1"
+ normalize-package-data "^2.3.4"
+ read-pkg-up "^3.0.0"
+ redent "^2.0.0"
+ trim-newlines "^2.0.0"
+
+merge-descriptors@1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61"
+ integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=
+
+merge2@^1.2.3:
+ version "1.2.3"
+ resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.2.3.tgz#7ee99dbd69bb6481689253f018488a1b902b0ed5"
+ integrity sha512-gdUU1Fwj5ep4kplwcmftruWofEFt6lfpkkr3h860CXbAB9c3hGb55EOL2ali0Td5oebvW0E1+3Sr+Ur7XfKpRA==
+
+methods@~1.1.2:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee"
+ integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=
+
+micro-compress@1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/micro-compress/-/micro-compress-1.0.0.tgz#53f5a80b4ad0320ca165a559b6e3df145d4f704f"
+ integrity sha1-U/WoC0rQMgyhZaVZtuPfFF1PcE8=
+ dependencies:
+ compression "^1.6.2"
+
+micro@9.3.1:
+ version "9.3.1"
+ resolved "https://registry.yarnpkg.com/micro/-/micro-9.3.1.tgz#0c37eba0171554b1beccda5215ff8ea4e7aa59d6"
+ integrity sha512-83uimpPJqfwkfKvJl2WWontBlV3hmzrIgyJ+L2uhDXKNk7Ll+/ezK3zBz7TljubpKPqjM0JdT2Ker4MTPmhjgA==
+ dependencies:
+ arg "2.0.0"
+ chalk "2.4.0"
+ content-type "1.0.4"
+ is-stream "1.1.0"
+ raw-body "2.3.2"
+
+micromatch@^2.1.5:
+ version "2.3.11"
+ resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565"
+ integrity sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=
+ dependencies:
+ arr-diff "^2.0.0"
+ array-unique "^0.2.1"
+ braces "^1.8.2"
+ expand-brackets "^0.1.4"
+ extglob "^0.3.1"
+ filename-regex "^2.0.0"
+ is-extglob "^1.0.0"
+ is-glob "^2.0.1"
+ kind-of "^3.0.2"
+ normalize-path "^2.0.1"
+ object.omit "^2.0.0"
+ parse-glob "^3.0.4"
+ regex-cache "^0.4.2"
+
+micromatch@^3.1.10, micromatch@^3.1.8:
+ version "3.1.10"
+ resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23"
+ integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==
+ dependencies:
+ arr-diff "^4.0.0"
+ array-unique "^0.3.2"
+ braces "^2.3.1"
+ define-property "^2.0.2"
+ extend-shallow "^3.0.2"
+ extglob "^2.0.4"
+ fragment-cache "^0.2.1"
+ kind-of "^6.0.2"
+ nanomatch "^1.2.9"
+ object.pick "^1.3.0"
+ regex-not "^1.0.0"
+ snapdragon "^0.8.1"
+ to-regex "^3.0.2"
+
+miller-rabin@^4.0.0:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d"
+ integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==
+ dependencies:
+ bn.js "^4.0.0"
+ brorand "^1.0.1"
+
+mime-db@1.40.0, "mime-db@>= 1.40.0 < 2":
+ version "1.40.0"
+ resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.40.0.tgz#a65057e998db090f732a68f6c276d387d4126c32"
+ integrity sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA==
+
+mime-db@~1.33.0:
+ version "1.33.0"
+ resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.33.0.tgz#a3492050a5cb9b63450541e39d9788d2272783db"
+ integrity sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==
+
+mime-types@2.1.18:
+ version "2.1.18"
+ resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.18.tgz#6f323f60a83d11146f831ff11fd66e2fe5503bb8"
+ integrity sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==
+ dependencies:
+ mime-db "~1.33.0"
+
+mime-types@^2.1.12, mime-types@~2.1.19, mime-types@~2.1.24:
+ version "2.1.24"
+ resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.24.tgz#b6f8d0b3e951efb77dedeca194cff6d16f676f81"
+ integrity sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==
+ dependencies:
+ mime-db "1.40.0"
+
+mime@1.4.1:
+ version "1.4.1"
+ resolved "https://registry.yarnpkg.com/mime/-/mime-1.4.1.tgz#121f9ebc49e3766f311a76e1fa1c8003c4b03aa6"
+ integrity sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==
+
+mimic-fn@^1.0.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022"
+ integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==
+
+minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7"
+ integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==
+
+minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a"
+ integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=
+
+"minimatch@2 || 3", minimatch@^3.0.2, minimatch@^3.0.3, minimatch@^3.0.4, minimatch@~3.0.4:
+ version "3.0.4"
+ resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
+ integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==
+ dependencies:
+ brace-expansion "^1.1.7"
+
+minimist-options@^3.0.1:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/minimist-options/-/minimist-options-3.0.2.tgz#fba4c8191339e13ecf4d61beb03f070103f3d954"
+ integrity sha512-FyBrT/d0d4+uiZRbqznPXqw3IpZZG3gl3wKWiX784FycUKVwBt0uLBFkQrtE4tZOrgo78nZp2jnKz3L65T5LdQ==
+ dependencies:
+ arrify "^1.0.1"
+ is-plain-obj "^1.1.0"
+
+minimist@0.0.8:
+ version "0.0.8"
+ resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d"
+ integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=
+
+minimist@^1.1.0, minimist@^1.1.1, minimist@^1.1.3, minimist@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284"
+ integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=
+
+minimist@~0.0.1:
+ version "0.0.10"
+ resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf"
+ integrity sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=
+
+minipass@^2.2.1, minipass@^2.3.4:
+ version "2.3.5"
+ resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.3.5.tgz#cacebe492022497f656b0f0f51e2682a9ed2d848"
+ integrity sha512-Gi1W4k059gyRbyVUZQ4mEqLm0YIUiGYfvxhF6SIlk3ui1WVxMTGfGdQ2SInh3PDrRTVvPKgULkpJtT4RH10+VA==
+ dependencies:
+ safe-buffer "^5.1.2"
+ yallist "^3.0.0"
+
+minizlib@^1.1.1:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.2.1.tgz#dd27ea6136243c7c880684e8672bb3a45fd9b614"
+ integrity sha512-7+4oTUOWKg7AuL3vloEWekXY2/D20cevzsrNT2kGWm+39J9hGTCBv8VI5Pm5lXZ/o3/mdR4f8rflAPhnQb8mPA==
+ dependencies:
+ minipass "^2.2.1"
+
+mixin-deep@^1.2.0:
+ version "1.3.1"
+ resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.1.tgz#a49e7268dce1a0d9698e45326c5626df3543d0fe"
+ integrity sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==
+ dependencies:
+ for-in "^1.0.2"
+ is-extendable "^1.0.1"
+
+mkdirp@^0.5.0, mkdirp@^0.5.1:
+ version "0.5.1"
+ resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903"
+ integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=
+ dependencies:
+ minimist "0.0.8"
+
+modify-values@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/modify-values/-/modify-values-1.0.1.tgz#b3939fa605546474e3e3e3c63d64bd43b4ee6022"
+ integrity sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw==
+
+module-deps@^6.0.0:
+ version "6.2.0"
+ resolved "https://registry.yarnpkg.com/module-deps/-/module-deps-6.2.0.tgz#d41a2e790245ce319171e4e7c4d8c73993ba3cd5"
+ integrity sha512-hKPmO06so6bL/ZvqVNVqdTVO8UAYsi3tQWlCa+z9KuWhoN4KDQtb5hcqQQv58qYiDE21wIvnttZEPiDgEbpwbA==
+ dependencies:
+ JSONStream "^1.0.3"
+ browser-resolve "^1.7.0"
+ cached-path-relative "^1.0.0"
+ concat-stream "~1.6.0"
+ defined "^1.0.0"
+ detective "^5.0.2"
+ duplexer2 "^0.1.2"
+ inherits "^2.0.1"
+ parents "^1.0.0"
+ readable-stream "^2.0.2"
+ resolve "^1.4.0"
+ stream-combiner2 "^1.1.1"
+ subarg "^1.0.0"
+ through2 "^2.0.0"
+ xtend "^4.0.0"
+
+mri@1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/mri/-/mri-1.1.0.tgz#5c0a3f29c8ccffbbb1ec941dcec09d71fa32f36a"
+ integrity sha1-XAo/KcjM/7ux7JQdzsCdcfoy82o=
+
+ms@2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
+ integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=
+
+ms@^2.1.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a"
+ integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==
+
+mute-stream@0.0.7:
+ version "0.0.7"
+ resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab"
+ integrity sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=
+
+nan@^2.12.1:
+ version "2.13.2"
+ resolved "https://registry.yarnpkg.com/nan/-/nan-2.13.2.tgz#f51dc7ae66ba7d5d55e1e6d4d8092e802c9aefe7"
+ integrity sha512-TghvYc72wlMGMVMluVo9WRJc0mB8KxxF/gZ4YYFy7V2ZQX9l7rgbPg7vjS9mt6U5HXODVFVI2bOduCzwOMv/lw==
+
+nanomatch@^1.2.9:
+ version "1.2.13"
+ resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119"
+ integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==
+ dependencies:
+ arr-diff "^4.0.0"
+ array-unique "^0.3.2"
+ define-property "^2.0.2"
+ extend-shallow "^3.0.2"
+ fragment-cache "^0.2.1"
+ is-windows "^1.0.2"
+ kind-of "^6.0.2"
+ object.pick "^1.3.0"
+ regex-not "^1.0.0"
+ snapdragon "^0.8.1"
+ to-regex "^3.0.1"
+
+natural-compare@^1.4.0:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"
+ integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=
+
+needle@^2.2.1:
+ version "2.3.1"
+ resolved "https://registry.yarnpkg.com/needle/-/needle-2.3.1.tgz#d272f2f4034afb9c4c9ab1379aabc17fc85c9388"
+ integrity sha512-CaLXV3W8Vnbps8ZANqDGz7j4x7Yj1LW4TWF/TQuDfj7Cfx4nAPTvw98qgTevtto1oHDrh3pQkaODbqupXlsWTg==
+ dependencies:
+ debug "^4.1.0"
+ iconv-lite "^0.4.4"
+ sax "^1.2.4"
+
+negotiator@0.6.1:
+ version "0.6.1"
+ resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9"
+ integrity sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=
+
+neo-async@^2.6.0:
+ version "2.6.0"
+ resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.0.tgz#b9d15e4d71c6762908654b5183ed38b753340835"
+ integrity sha512-MFh0d/Wa7vkKO3Y3LlacqAEeHK0mckVqzDieUKTT+KGxi+zIpeVsFxymkIiRpbpDziHc290Xr9A1O4Om7otoRA==
+
+nice-try@^1.0.4:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366"
+ integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==
+
+node-dir@^0.1.12:
+ version "0.1.17"
+ resolved "https://registry.yarnpkg.com/node-dir/-/node-dir-0.1.17.tgz#5f5665d93351335caabef8f1c554516cf5f1e4e5"
+ integrity sha1-X1Zl2TNRM1yqvvjxxVRRbPXx5OU=
+ dependencies:
+ minimatch "^3.0.2"
+
+node-fetch@^2.3.0:
+ version "2.4.1"
+ resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.4.1.tgz#b2e38f1117b8acbedbe0524f041fb3177188255d"
+ integrity sha512-P9UbpFK87NyqBZzUuDBDz4f6Yiys8xm8j7ACDbi6usvFm6KItklQUKjeoqTrYS/S1k6I8oaOC2YLLDr/gg26Mw==
+
+node-pre-gyp@^0.12.0:
+ version "0.12.0"
+ resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.12.0.tgz#39ba4bb1439da030295f899e3b520b7785766149"
+ integrity sha512-4KghwV8vH5k+g2ylT+sLTjy5wmUOb9vPhnM8NHvRf9dHmnW/CndrFXy2aRPaPST6dugXSdHXfeaHQm77PIz/1A==
+ dependencies:
+ detect-libc "^1.0.2"
+ mkdirp "^0.5.1"
+ needle "^2.2.1"
+ nopt "^4.0.1"
+ npm-packlist "^1.1.6"
+ npmlog "^4.0.2"
+ rc "^1.2.7"
+ rimraf "^2.6.1"
+ semver "^5.3.0"
+ tar "^4"
+
+node-version@1.1.3:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/node-version/-/node-version-1.1.3.tgz#1081c87cce6d2dbbd61d0e51e28c287782678496"
+ integrity sha512-rEwE51JWn0yN3Wl5BXeGn5d52OGbSXzWiiXRjAQeuyvcGKyvuSILW2rb3G7Xh+nexzLwhTpek6Ehxd6IjvHePg==
+
+nopt@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d"
+ integrity sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=
+ dependencies:
+ abbrev "1"
+ osenv "^0.1.4"
+
+normalize-package-data@^2.3.0, normalize-package-data@^2.3.2, normalize-package-data@^2.3.4, normalize-package-data@^2.3.5:
+ version "2.5.0"
+ resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8"
+ integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==
+ dependencies:
+ hosted-git-info "^2.1.4"
+ resolve "^1.10.0"
+ semver "2 || 3 || 4 || 5"
+ validate-npm-package-license "^3.0.1"
+
+normalize-path@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-1.0.0.tgz#32d0e472f91ff345701c15a8311018d3b0a90379"
+ integrity sha1-MtDkcvkf80VwHBWoMRAY07CpA3k=
+
+normalize-path@^2.0.0, normalize-path@^2.0.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9"
+ integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=
+ dependencies:
+ remove-trailing-separator "^1.0.1"
+
+npm-bundled@^1.0.1:
+ version "1.0.6"
+ resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.0.6.tgz#e7ba9aadcef962bb61248f91721cd932b3fe6bdd"
+ integrity sha512-8/JCaftHwbd//k6y2rEWp6k1wxVfpFzB6t1p825+cUb7Ym2XQfhwIC5KwhrvzZRJu+LtDE585zVaS32+CGtf0g==
+
+npm-packlist@^1.1.6:
+ version "1.4.1"
+ resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.4.1.tgz#19064cdf988da80ea3cee45533879d90192bbfbc"
+ integrity sha512-+TcdO7HJJ8peiiYhvPxsEDhF3PJFGUGRcFsGve3vxvxdcpO2Z4Z7rkosRM0kWj6LfbK/P0gu3dzk5RU1ffvFcw==
+ dependencies:
+ ignore-walk "^3.0.1"
+ npm-bundled "^1.0.1"
+
+npm-path@^2.0.2:
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/npm-path/-/npm-path-2.0.4.tgz#c641347a5ff9d6a09e4d9bce5580c4f505278e64"
+ integrity sha512-IFsj0R9C7ZdR5cP+ET342q77uSRdtWOlWpih5eC+lu29tIDbNEgDbzgVJ5UFvYHWhxDZ5TFkJafFioO0pPQjCw==
+ dependencies:
+ which "^1.2.10"
+
+npm-prefix@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/npm-prefix/-/npm-prefix-1.2.0.tgz#e619455f7074ba54cc66d6d0d37dd9f1be6bcbc0"
+ integrity sha1-5hlFX3B0ulTMZtbQ033Z8b5ry8A=
+ dependencies:
+ rc "^1.1.0"
+ shellsubstitute "^1.1.0"
+ untildify "^2.1.0"
+
+npm-run-path@^2.0.0:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f"
+ integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=
+ dependencies:
+ path-key "^2.0.0"
+
+npm-which@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/npm-which/-/npm-which-3.0.1.tgz#9225f26ec3a285c209cae67c3b11a6b4ab7140aa"
+ integrity sha1-kiXybsOihcIJyuZ8OxGmtKtxQKo=
+ dependencies:
+ commander "^2.9.0"
+ npm-path "^2.0.2"
+ which "^1.2.10"
+
+npmlog@^4.0.2:
+ version "4.1.2"
+ resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b"
+ integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==
+ dependencies:
+ are-we-there-yet "~1.1.2"
+ console-control-strings "~1.1.0"
+ gauge "~2.7.3"
+ set-blocking "~2.0.0"
+
+nth-check@~1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c"
+ integrity sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==
+ dependencies:
+ boolbase "~1.0.0"
+
+nugget@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/nugget/-/nugget-2.0.1.tgz#201095a487e1ad36081b3432fa3cada4f8d071b0"
+ integrity sha1-IBCVpIfhrTYIGzQy+jytpPjQcbA=
+ dependencies:
+ debug "^2.1.3"
+ minimist "^1.1.0"
+ pretty-bytes "^1.0.2"
+ progress-stream "^1.1.0"
+ request "^2.45.0"
+ single-line-log "^1.1.2"
+ throttleit "0.0.2"
+
+number-is-nan@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d"
+ integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=
+
+"nwmatcher@>= 1.3.7 < 2.0.0":
+ version "1.4.4"
+ resolved "https://registry.yarnpkg.com/nwmatcher/-/nwmatcher-1.4.4.tgz#2285631f34a95f0d0395cd900c96ed39b58f346e"
+ integrity sha512-3iuY4N5dhgMpCUrOVnuAdGrgxVqV2cJpM+XNccjR2DKOB1RUP0aA+wGXEiNziG/UKboFyGBIoKOaNlJxx8bciQ==
+
+oauth-sign@~0.9.0:
+ version "0.9.0"
+ resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455"
+ integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==
+
+object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1:
+ version "4.1.1"
+ resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
+ integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=
+
+object-copy@^0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c"
+ integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw=
+ dependencies:
+ copy-descriptor "^0.1.0"
+ define-property "^0.2.5"
+ kind-of "^3.0.3"
+
+object-keys@^1.0.12, object-keys@^1.0.6:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e"
+ integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==
+
+object-keys@~0.4.0:
+ version "0.4.0"
+ resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-0.4.0.tgz#28a6aae7428dd2c3a92f3d95f21335dd204e0336"
+ integrity sha1-KKaq50KN0sOpLz2V8hM13SBOAzY=
+
+object-visit@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb"
+ integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=
+ dependencies:
+ isobject "^3.0.0"
+
+object.omit@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa"
+ integrity sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=
+ dependencies:
+ for-own "^0.1.4"
+ is-extendable "^0.1.1"
+
+object.pick@^1.3.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747"
+ integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=
+ dependencies:
+ isobject "^3.0.1"
+
+octicons@^7.3.0:
+ version "7.4.0"
+ resolved "https://registry.yarnpkg.com/octicons/-/octicons-7.4.0.tgz#0be0082ed75b81e680800ef978bf47078b670091"
+ integrity sha512-j53BDX+FpJ4DQwENARbk9hHkwG/Oaq5NPUMNzYdGxRA/R5M6BbPVQEakUVMNKLzvzPue/gEEUTtSj6utFse5QQ==
+ dependencies:
+ object-assign "^4.1.1"
+
+octokit-pagination-methods@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/octokit-pagination-methods/-/octokit-pagination-methods-1.1.0.tgz#cf472edc9d551055f9ef73f6e42b4dbb4c80bea4"
+ integrity sha512-fZ4qZdQ2nxJvtcasX7Ghl+WlWS/d9IgnBIwFZXVNNZUmzpno91SX5bc5vuxiuKoCtK78XxGGNuSCrDC7xYB3OQ==
+
+on-finished@~2.3.0:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947"
+ integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=
+ dependencies:
+ ee-first "1.1.1"
+
+on-headers@~1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f"
+ integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==
+
+once@^1.3.0, once@^1.3.1, once@^1.4.0:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
+ integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E=
+ dependencies:
+ wrappy "1"
+
+onetime@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/onetime/-/onetime-1.1.0.tgz#a1f7838f8314c516f05ecefcbc4ccfe04b4ed789"
+ integrity sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=
+
+onetime@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4"
+ integrity sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=
+ dependencies:
+ mimic-fn "^1.0.0"
+
+openssl-self-signed-certificate@1.1.6:
+ version "1.1.6"
+ resolved "https://registry.yarnpkg.com/openssl-self-signed-certificate/-/openssl-self-signed-certificate-1.1.6.tgz#9d3a4776b1a57e9847350392114ad2f915a83dd4"
+ integrity sha1-nTpHdrGlfphHNQOSEUrS+RWoPdQ=
+
+opn@5.3.0:
+ version "5.3.0"
+ resolved "https://registry.yarnpkg.com/opn/-/opn-5.3.0.tgz#64871565c863875f052cfdf53d3e3cb5adb53b1c"
+ integrity sha512-bYJHo/LOmoTd+pfiYhfZDnf9zekVJrY+cnS2a5F2x+w5ppvTqObojTP7WiFG+kVZs9Inw+qQ/lw7TroWwhdd2g==
+ dependencies:
+ is-wsl "^1.1.0"
+
+optimist@^0.6.1, optimist@~0.6.0:
+ version "0.6.1"
+ resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686"
+ integrity sha1-2j6nRob6IaGaERwybpDrFaAZZoY=
+ dependencies:
+ minimist "~0.0.1"
+ wordwrap "~0.0.2"
+
+optimist@~0.3.5:
+ version "0.3.7"
+ resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.3.7.tgz#c90941ad59e4273328923074d2cf2e7cbc6ec0d9"
+ integrity sha1-yQlBrVnkJzMokjB00s8ufLxuwNk=
+ dependencies:
+ wordwrap "~0.0.2"
+
+optionator@^0.8.1, optionator@^0.8.2:
+ version "0.8.2"
+ resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64"
+ integrity sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=
+ dependencies:
+ deep-is "~0.1.3"
+ fast-levenshtein "~2.0.4"
+ levn "~0.3.0"
+ prelude-ls "~1.1.2"
+ type-check "~0.3.2"
+ wordwrap "~1.0.0"
+
+ora@^0.2.3:
+ version "0.2.3"
+ resolved "https://registry.yarnpkg.com/ora/-/ora-0.2.3.tgz#37527d220adcd53c39b73571d754156d5db657a4"
+ integrity sha1-N1J9Igrc1Tw5tzVx11QVbV22V6Q=
+ dependencies:
+ chalk "^1.1.1"
+ cli-cursor "^1.0.2"
+ cli-spinners "^0.1.2"
+ object-assign "^4.0.1"
+
+ora@^3.0.0:
+ version "3.4.0"
+ resolved "https://registry.yarnpkg.com/ora/-/ora-3.4.0.tgz#bf0752491059a3ef3ed4c85097531de9fdbcd318"
+ integrity sha512-eNwHudNbO1folBP3JsZ19v9azXWtQZjICdr3Q0TDPIaeBQ3mXLrh54wM+er0+hSp+dWKf+Z8KM58CYzEyIYxYg==
+ dependencies:
+ chalk "^2.4.2"
+ cli-cursor "^2.1.0"
+ cli-spinners "^2.0.0"
+ log-symbols "^2.2.0"
+ strip-ansi "^5.2.0"
+ wcwidth "^1.0.1"
+
+os-browserify@~0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27"
+ integrity sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=
+
+os-homedir@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3"
+ integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M=
+
+os-name@^3.0.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/os-name/-/os-name-3.1.0.tgz#dec19d966296e1cd62d701a5a66ee1ddeae70801"
+ integrity sha512-h8L+8aNjNcMpo/mAIBPn5PXCM16iyPGjHNWo6U1YO8sJTMHtEtyczI6QJnLoplswm6goopQkqc7OAnjhWcugVg==
+ dependencies:
+ macos-release "^2.2.0"
+ windows-release "^3.1.0"
+
+os-tmpdir@^1.0.0, os-tmpdir@~1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274"
+ integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=
+
+osenv@^0.1.4:
+ version "0.1.5"
+ resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410"
+ integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==
+ dependencies:
+ os-homedir "^1.0.0"
+ os-tmpdir "^1.0.0"
+
+p-finally@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae"
+ integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=
+
+p-limit@^1.1.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8"
+ integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==
+ dependencies:
+ p-try "^1.0.0"
+
+p-locate@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43"
+ integrity sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=
+ dependencies:
+ p-limit "^1.1.0"
+
+p-map@^1.1.1:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/p-map/-/p-map-1.2.0.tgz#e4e94f311eabbc8633a1e79908165fca26241b6b"
+ integrity sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA==
+
+p-map@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/p-map/-/p-map-2.1.0.tgz#310928feef9c9ecc65b68b17693018a665cea175"
+ integrity sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==
+
+p-try@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3"
+ integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=
+
+package-json@^4.0.0:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/package-json/-/package-json-4.0.1.tgz#8869a0401253661c4c4ca3da6c2121ed555f5eed"
+ integrity sha1-iGmgQBJTZhxMTKPabCEh7VVfXu0=
+ dependencies:
+ got "^6.7.1"
+ registry-auth-token "^3.0.1"
+ registry-url "^3.0.3"
+ semver "^5.1.0"
+
+pako@~0.2.0:
+ version "0.2.9"
+ resolved "https://registry.yarnpkg.com/pako/-/pako-0.2.9.tgz#f3f7522f4ef782348da8161bad9ecfd51bf83a75"
+ integrity sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU=
+
+pako@~1.0.5:
+ version "1.0.10"
+ resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.10.tgz#4328badb5086a426aa90f541977d4955da5c9732"
+ integrity sha512-0DTvPVU3ed8+HNXOu5Bs+o//Mbdj9VNQMUOe9oKCwh8l0GNwpTDMKCWbRjgtD291AWnkAgkqA/LOnQS8AmS1tw==
+
+parent-module@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2"
+ integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==
+ dependencies:
+ callsites "^3.0.0"
+
+parents@^1.0.0, parents@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/parents/-/parents-1.0.1.tgz#fedd4d2bf193a77745fe71e371d73c3307d9c751"
+ integrity sha1-/t1NK/GTp3dF/nHjcdc8MwfZx1E=
+ dependencies:
+ path-platform "~0.11.15"
+
+parse-asn1@^5.0.0:
+ version "5.1.4"
+ resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.4.tgz#37f6628f823fbdeb2273b4d540434a22f3ef1fcc"
+ integrity sha512-Qs5duJcuvNExRfFZ99HDD3z4mAi3r9Wl/FOjEOijlxwCZs7E7mW2vjTpgQ4J8LpTF8x5v+1Vn5UQFejmWT11aw==
+ dependencies:
+ asn1.js "^4.0.0"
+ browserify-aes "^1.0.0"
+ create-hash "^1.1.0"
+ evp_bytestokey "^1.0.0"
+ pbkdf2 "^3.0.3"
+ safe-buffer "^5.1.1"
+
+parse-entities@^1.0.2:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/parse-entities/-/parse-entities-1.2.1.tgz#2c761ced065ba7dc68148580b5a225e4918cdd69"
+ integrity sha512-NBWYLQm1KSoDKk7GAHyioLTvCZ5QjdH/ASBBQTD3iLiAWJXS5bg1jEWI8nIJ+vgVvsceBVBcDGRWSo0KVQBvvg==
+ dependencies:
+ character-entities "^1.0.0"
+ character-entities-legacy "^1.0.0"
+ character-reference-invalid "^1.0.0"
+ is-alphanumerical "^1.0.0"
+ is-decimal "^1.0.0"
+ is-hexadecimal "^1.0.0"
+
+parse-github-repo-url@^1.3.0:
+ version "1.4.1"
+ resolved "https://registry.yarnpkg.com/parse-github-repo-url/-/parse-github-repo-url-1.4.1.tgz#9e7d8bb252a6cb6ba42595060b7bf6df3dbc1f50"
+ integrity sha1-nn2LslKmy2ukJZUGC3v23z28H1A=
+
+parse-gitignore@^0.4.0:
+ version "0.4.0"
+ resolved "https://registry.yarnpkg.com/parse-gitignore/-/parse-gitignore-0.4.0.tgz#abf702e4b900524fff7902b683862857b63f93fe"
+ integrity sha1-q/cC5LkAUk//eQK2g4YoV7Y/k/4=
+ dependencies:
+ array-unique "^0.3.2"
+ is-glob "^3.1.0"
+
+parse-glob@^3.0.4:
+ version "3.0.4"
+ resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c"
+ integrity sha1-ssN2z7EfNVE7rdFz7wu246OIORw=
+ dependencies:
+ glob-base "^0.3.0"
+ is-dotfile "^1.0.0"
+ is-extglob "^1.0.0"
+ is-glob "^2.0.0"
+
+parse-json@^2.2.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9"
+ integrity sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=
+ dependencies:
+ error-ex "^1.2.0"
+
+parse-json@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0"
+ integrity sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=
+ dependencies:
+ error-ex "^1.3.1"
+ json-parse-better-errors "^1.0.1"
+
+parse5@^1.5.1:
+ version "1.5.1"
+ resolved "https://registry.yarnpkg.com/parse5/-/parse5-1.5.1.tgz#9b7f3b0de32be78dc2401b17573ccaf0f6f59d94"
+ integrity sha1-m387DeMr543CQBsXVzzK8Pb1nZQ=
+
+parse5@^3.0.1:
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/parse5/-/parse5-3.0.3.tgz#042f792ffdd36851551cf4e9e066b3874ab45b5c"
+ integrity sha512-rgO9Zg5LLLkfJF9E6CCmXlSE4UVceloys8JrFqCcHloC3usd/kJCyPDwH2SOlzix2j3xaP9sUX3e8+kvkuleAA==
+ dependencies:
+ "@types/node" "*"
+
+parseurl@~1.3.2:
+ version "1.3.3"
+ resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4"
+ integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==
+
+pascalcase@^0.1.1:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14"
+ integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=
+
+path-browserify@~0.0.0:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.1.tgz#e6c4ddd7ed3aa27c68a20cc4e50e1a4ee83bbc4a"
+ integrity sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==
+
+path-dirname@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0"
+ integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=
+
+path-exists@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b"
+ integrity sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=
+ dependencies:
+ pinkie-promise "^2.0.0"
+
+path-exists@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515"
+ integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=
+
+path-is-absolute@^1.0.0, path-is-absolute@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
+ integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18=
+
+path-is-inside@1.0.2, path-is-inside@^1.0.1, path-is-inside@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53"
+ integrity sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=
+
+path-key@^2.0.0, path-key@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40"
+ integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=
+
+path-parse@^1.0.6:
+ version "1.0.6"
+ resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c"
+ integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==
+
+path-platform@~0.11.15:
+ version "0.11.15"
+ resolved "https://registry.yarnpkg.com/path-platform/-/path-platform-0.11.15.tgz#e864217f74c36850f0852b78dc7bf7d4a5721bf2"
+ integrity sha1-6GQhf3TDaFDwhSt43Hv31KVyG/I=
+
+path-to-regexp@0.1.7:
+ version "0.1.7"
+ resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c"
+ integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=
+
+path-type@3.0.0, path-type@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f"
+ integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==
+ dependencies:
+ pify "^3.0.0"
+
+path-type@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441"
+ integrity sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=
+ dependencies:
+ graceful-fs "^4.1.2"
+ pify "^2.0.0"
+ pinkie-promise "^2.0.0"
+
+path-type@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73"
+ integrity sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=
+ dependencies:
+ pify "^2.0.0"
+
+pbkdf2@^3.0.3:
+ version "3.0.17"
+ resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.17.tgz#976c206530617b14ebb32114239f7b09336e93a6"
+ integrity sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA==
+ dependencies:
+ create-hash "^1.1.2"
+ create-hmac "^1.1.4"
+ ripemd160 "^2.0.1"
+ safe-buffer "^5.0.1"
+ sha.js "^2.4.8"
+
+peek-stream@^1.1.0:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/peek-stream/-/peek-stream-1.1.3.tgz#3b35d84b7ccbbd262fff31dc10da56856ead6d67"
+ integrity sha512-FhJ+YbOSBb9/rIl2ZeE/QHEsWn7PqNYt8ARAY3kIgNGOk13g9FGyIY6JIl/xB/3TFRVoTv5as0l11weORrTekA==
+ dependencies:
+ buffer-from "^1.0.0"
+ duplexify "^3.5.0"
+ through2 "^2.0.3"
+
+performance-now@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b"
+ integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=
+
+pify@^2.0.0, pify@^2.3.0:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c"
+ integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw=
+
+pify@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176"
+ integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=
+
+pify@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231"
+ integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==
+
+pinkie-promise@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa"
+ integrity sha1-ITXW36ejWMBprJsXh3YogihFD/o=
+ dependencies:
+ pinkie "^2.0.0"
+
+pinkie@^2.0.0:
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870"
+ integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA=
+
+pkg-conf@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/pkg-conf/-/pkg-conf-2.1.0.tgz#2126514ca6f2abfebd168596df18ba57867f0058"
+ integrity sha1-ISZRTKbyq/69FoWW3xi6V4Z/AFg=
+ dependencies:
+ find-up "^2.0.0"
+ load-json-file "^4.0.0"
+
+pkg-config@^1.1.0:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/pkg-config/-/pkg-config-1.1.1.tgz#557ef22d73da3c8837107766c52eadabde298fe4"
+ integrity sha1-VX7yLXPaPIg3EHdmxS6tq94pj+Q=
+ dependencies:
+ debug-log "^1.0.0"
+ find-root "^1.0.0"
+ xtend "^4.0.1"
+
+pkg-dir@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b"
+ integrity sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=
+ dependencies:
+ find-up "^2.1.0"
+
+please-upgrade-node@^3.0.2:
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/please-upgrade-node/-/please-upgrade-node-3.1.1.tgz#ed320051dfcc5024fae696712c8288993595e8ac"
+ integrity sha512-KY1uHnQ2NlQHqIJQpnh/i54rKkuxCEBx+voJIS/Mvb+L2iYd2NMotwduhKTMjfC1uKoX3VXOxLjIYG66dfJTVQ==
+ dependencies:
+ semver-compare "^1.0.0"
+
+plist@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/plist/-/plist-3.0.1.tgz#a9b931d17c304e8912ef0ba3bdd6182baf2e1f8c"
+ integrity sha512-GpgvHHocGRyQm74b6FWEZZVRroHKE1I0/BTjAmySaohK+cUn+hZpbqXkc3KWgW3gQYkqcQej35FohcT0FRlkRQ==
+ dependencies:
+ base64-js "^1.2.3"
+ xmlbuilder "^9.0.7"
+ xmldom "0.1.x"
+
+plur@^3.0.0:
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/plur/-/plur-3.1.1.tgz#60267967866a8d811504fe58f2faaba237546a5b"
+ integrity sha512-t1Ax8KUvV3FFII8ltczPn2tJdjqbd1sIzu6t4JL7nQ3EyeL/lTrj5PWKb06ic5/6XYDr65rQ4uzQEGN70/6X5w==
+ dependencies:
+ irregular-plurals "^2.0.0"
+
+pluralize@^7.0.0:
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-7.0.0.tgz#298b89df8b93b0221dbf421ad2b1b1ea23fc6777"
+ integrity sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==
+
+posix-character-classes@^0.1.0:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab"
+ integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=
+
+pre-flight@^1.1.0:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/pre-flight/-/pre-flight-1.1.1.tgz#482fb1649fb400616a86b2706b11591f5cc8402d"
+ integrity sha512-glqyc2Hh3K+sYeSsVs+HhjyUVf8j6xwuFej0yjYjRYfSnOK8P3Na9GznkoPn48fR+9kTOfkocYIWrtWktp4AqA==
+ dependencies:
+ colors "^1.1.2"
+ commander "^2.9.0"
+ semver "^5.1.0"
+
+prelude-ls@~1.1.2:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54"
+ integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=
+
+prepend-http@^1.0.1:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc"
+ integrity sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=
+
+preserve@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b"
+ integrity sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=
+
+pretty-bytes@^1.0.2:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-1.0.4.tgz#0a22e8210609ad35542f8c8d5d2159aff0751c84"
+ integrity sha1-CiLoIQYJrTVUL4yNXSFZr/B1HIQ=
+ dependencies:
+ get-stdin "^4.0.1"
+ meow "^3.1.0"
+
+process-nextick-args@~2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa"
+ integrity sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==
+
+process@~0.11.0:
+ version "0.11.10"
+ resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182"
+ integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI=
+
+progress-stream@^1.1.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/progress-stream/-/progress-stream-1.2.0.tgz#2cd3cfea33ba3a89c9c121ec3347abe9ab125f77"
+ integrity sha1-LNPP6jO6OonJwSHsM0er6asSX3c=
+ dependencies:
+ speedometer "~0.1.2"
+ through2 "~0.2.3"
+
+progress@^2.0.0, progress@^2.0.3:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8"
+ integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==
+
+prop-types@^15.6.2:
+ version "15.7.2"
+ resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5"
+ integrity sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==
+ dependencies:
+ loose-envify "^1.4.0"
+ object-assign "^4.1.1"
+ react-is "^16.8.1"
+
+property-expr@^1.5.0:
+ version "1.5.1"
+ resolved "https://registry.yarnpkg.com/property-expr/-/property-expr-1.5.1.tgz#22e8706894a0c8e28d58735804f6ba3a3673314f"
+ integrity sha512-CGuc0VUTGthpJXL36ydB6jnbyOf/rAHFvmVrJlH+Rg0DqqLFQGAP6hIaxD/G0OAmBJPhXDHuEJigrp0e0wFV6g==
+
+proxy-addr@~2.0.4:
+ version "2.0.5"
+ resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.5.tgz#34cbd64a2d81f4b1fd21e76f9f06c8a45299ee34"
+ integrity sha512-t/7RxHXPH6cJtP0pRG6smSr9QJidhB+3kXu0KgXnbGYMgzEnUxRQ4/LDdfOwZEMyIh3/xHb8PX3t+lfL9z+YVQ==
+ dependencies:
+ forwarded "~0.1.2"
+ ipaddr.js "1.9.0"
+
+pseudomap@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3"
+ integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM=
+
+psl@^1.1.24, psl@^1.1.28:
+ version "1.1.31"
+ resolved "https://registry.yarnpkg.com/psl/-/psl-1.1.31.tgz#e9aa86d0101b5b105cbe93ac6b784cd547276184"
+ integrity sha512-/6pt4+C+T+wZUieKR620OpzN/LlnNKuWjy1iFLQ/UG35JqHlR/89MP1d96dUfkf6Dne3TuLQzOYEYshJ+Hx8mw==
+
+public-encrypt@^4.0.0:
+ version "4.0.3"
+ resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0"
+ integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==
+ dependencies:
+ bn.js "^4.1.0"
+ browserify-rsa "^4.0.0"
+ create-hash "^1.1.0"
+ parse-asn1 "^5.0.0"
+ randombytes "^2.0.1"
+ safe-buffer "^5.1.2"
+
+pump@^1.0.0:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/pump/-/pump-1.0.3.tgz#5dfe8311c33bbf6fc18261f9f34702c47c08a954"
+ integrity sha512-8k0JupWme55+9tCVE+FS5ULT3K6AbgqrGa58lTT49RpyfwwcGedHqaC5LlQNdEAumn/wFsu6aPwkuPMioy8kqw==
+ dependencies:
+ end-of-stream "^1.1.0"
+ once "^1.3.1"
+
+pump@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909"
+ integrity sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==
+ dependencies:
+ end-of-stream "^1.1.0"
+ once "^1.3.1"
+
+pump@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64"
+ integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==
+ dependencies:
+ end-of-stream "^1.1.0"
+ once "^1.3.1"
+
+pumpify@^1.3.3:
+ version "1.5.1"
+ resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.5.1.tgz#36513be246ab27570b1a374a5ce278bfd74370ce"
+ integrity sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==
+ dependencies:
+ duplexify "^3.6.0"
+ inherits "^2.0.3"
+ pump "^2.0.0"
+
+punycode@1.3.2:
+ version "1.3.2"
+ resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d"
+ integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=
+
+punycode@^1.3.2, punycode@^1.4.1:
+ version "1.4.1"
+ resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e"
+ integrity sha1-wNWmOycYgArY4esPpSachN1BhF4=
+
+punycode@^2.1.0, punycode@^2.1.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec"
+ integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==
+
+q@^1.4.1, q@^1.5.1:
+ version "1.5.1"
+ resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7"
+ integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=
+
+qs@6.5.2, qs@~6.5.2:
+ version "6.5.2"
+ resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36"
+ integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==
+
+querystring-es3@~0.2.0:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73"
+ integrity sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=
+
+querystring@0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620"
+ integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=
+
+quick-lru@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-1.1.0.tgz#4360b17c61136ad38078397ff11416e186dcfbb8"
+ integrity sha1-Q2CxfGETatOAeDl/8RQW4Ybc+7g=
+
+ramda@^0.26.1:
+ version "0.26.1"
+ resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.26.1.tgz#8d41351eb8111c55353617fc3bbffad8e4d35d06"
+ integrity sha512-hLWjpy7EnsDBb0p+Z3B7rPi3GDeRG5ZtiI33kJhTt+ORCd38AbAIjB/9zRIUoeTbE/AVX5ZkU7m6bznsvrf8eQ==
+
+randomatic@^3.0.0:
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-3.1.1.tgz#b776efc59375984e36c537b2f51a1f0aff0da1ed"
+ integrity sha512-TuDE5KxZ0J461RVjrJZCJc+J+zCkTb1MbH9AQUq68sMhOMcy9jLcb3BrZKgp9q9Ncltdg4QVqWrH02W2EFFVYw==
+ dependencies:
+ is-number "^4.0.0"
+ kind-of "^6.0.0"
+ math-random "^1.0.1"
+
+randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a"
+ integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==
+ dependencies:
+ safe-buffer "^5.1.0"
+
+randomfill@^1.0.3:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458"
+ integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==
+ dependencies:
+ randombytes "^2.0.5"
+ safe-buffer "^5.1.0"
+
+range-parser@~1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e"
+ integrity sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=
+
+raw-body@2.3.2:
+ version "2.3.2"
+ resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.3.2.tgz#bcd60c77d3eb93cde0050295c3f379389bc88f89"
+ integrity sha1-vNYMd9Prk83gBQKVw/N5OJvIj4k=
+ dependencies:
+ bytes "3.0.0"
+ http-errors "1.6.2"
+ iconv-lite "0.4.19"
+ unpipe "1.0.0"
+
+raw-body@2.3.3:
+ version "2.3.3"
+ resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.3.3.tgz#1b324ece6b5706e153855bc1148c65bb7f6ea0c3"
+ integrity sha512-9esiElv1BrZoI3rCDuOuKCBRbuApGGaDPQfjSflGxdy4oyzqghxu6klEkkVIvBje+FF0BX9coEv8KqW6X/7njw==
+ dependencies:
+ bytes "3.0.0"
+ http-errors "1.6.3"
+ iconv-lite "0.4.23"
+ unpipe "1.0.0"
+
+rc@^1.0.1, rc@^1.1.0, rc@^1.1.6, rc@^1.2.7:
+ version "1.2.8"
+ resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed"
+ integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==
+ dependencies:
+ deep-extend "^0.6.0"
+ ini "~1.3.0"
+ minimist "^1.2.0"
+ strip-json-comments "~2.0.1"
+
+react-is@^16.8.1:
+ version "16.8.6"
+ resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.8.6.tgz#5bbc1e2d29141c9fbdfed456343fe2bc430a6a16"
+ integrity sha512-aUk3bHfZ2bRSVFFbbeVS4i+lNPZr3/WM5jT2J5omUVV1zzcs1nAaf3l51ctA5FFvCRbhrH0bdAsRRQddFJZPtA==
+
+read-only-stream@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/read-only-stream/-/read-only-stream-2.0.0.tgz#2724fd6a8113d73764ac288d4386270c1dbf17f0"
+ integrity sha1-JyT9aoET1zdkrCiNQ4YnDB2/F/A=
+ dependencies:
+ readable-stream "^2.0.2"
+
+read-pkg-up@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02"
+ integrity sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=
+ dependencies:
+ find-up "^1.0.0"
+ read-pkg "^1.0.0"
+
+read-pkg-up@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be"
+ integrity sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=
+ dependencies:
+ find-up "^2.0.0"
+ read-pkg "^2.0.0"
+
+read-pkg-up@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-3.0.0.tgz#3ed496685dba0f8fe118d0691dc51f4a1ff96f07"
+ integrity sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=
+ dependencies:
+ find-up "^2.0.0"
+ read-pkg "^3.0.0"
+
+read-pkg@^1.0.0, read-pkg@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28"
+ integrity sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=
+ dependencies:
+ load-json-file "^1.0.0"
+ normalize-package-data "^2.3.2"
+ path-type "^1.0.0"
+
+read-pkg@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8"
+ integrity sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=
+ dependencies:
+ load-json-file "^2.0.0"
+ normalize-package-data "^2.3.2"
+ path-type "^2.0.0"
+
+read-pkg@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389"
+ integrity sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=
+ dependencies:
+ load-json-file "^4.0.0"
+ normalize-package-data "^2.3.2"
+ path-type "^3.0.0"
+
+readable-stream@1.1:
+ version "1.1.13"
+ resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.13.tgz#f6eef764f514c89e2b9e23146a75ba106756d23e"
+ integrity sha1-9u73ZPUUyJ4rniMUanW6EGdW0j4=
+ dependencies:
+ core-util-is "~1.0.0"
+ inherits "~2.0.1"
+ isarray "0.0.1"
+ string_decoder "~0.10.x"
+
+readable-stream@^2.0.0, readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.2.2, readable-stream@^2.3.0, readable-stream@^2.3.5, readable-stream@^2.3.6, readable-stream@~2.3.6:
+ version "2.3.6"
+ resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf"
+ integrity sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==
+ dependencies:
+ core-util-is "~1.0.0"
+ inherits "~2.0.3"
+ isarray "~1.0.0"
+ process-nextick-args "~2.0.0"
+ safe-buffer "~5.1.1"
+ string_decoder "~1.1.1"
+ util-deprecate "~1.0.1"
+
+readable-stream@^3.1.1:
+ version "3.3.0"
+ resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.3.0.tgz#cb8011aad002eb717bf040291feba8569c986fb9"
+ integrity sha512-EsI+s3k3XsW+fU8fQACLN59ky34AZ14LoeVZpYwmZvldCFo0r0gnelwF2TcMjLor/BTL5aDJVBMkss0dthToPw==
+ dependencies:
+ inherits "^2.0.3"
+ string_decoder "^1.1.1"
+ util-deprecate "^1.0.1"
+
+readable-stream@~1.1.9:
+ version "1.1.14"
+ resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9"
+ integrity sha1-fPTFTvZI44EwhMY23SB54WbAgdk=
+ dependencies:
+ core-util-is "~1.0.0"
+ inherits "~2.0.1"
+ isarray "0.0.1"
+ string_decoder "~0.10.x"
+
+readdirp@^2.0.0:
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525"
+ integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==
+ dependencies:
+ graceful-fs "^4.1.11"
+ micromatch "^3.1.10"
+ readable-stream "^2.0.2"
+
+rechoir@^0.6.2:
+ version "0.6.2"
+ resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384"
+ integrity sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=
+ dependencies:
+ resolve "^1.1.6"
+
+redent@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/redent/-/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde"
+ integrity sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=
+ dependencies:
+ indent-string "^2.1.0"
+ strip-indent "^1.0.1"
+
+redent@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/redent/-/redent-2.0.0.tgz#c1b2007b42d57eb1389079b3c8333639d5e1ccaa"
+ integrity sha1-wbIAe0LVfrE4kHmzyDM2OdXhzKo=
+ dependencies:
+ indent-string "^3.0.0"
+ strip-indent "^2.0.0"
+
+regenerator-runtime@^0.12.0:
+ version "0.12.1"
+ resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.12.1.tgz#fa1a71544764c036f8c49b13a08b2594c9f8a0de"
+ integrity sha512-odxIc1/vDlo4iZcfXqRYFj0vpXFNoGdKMAUieAlFYO6m/nl5e9KR/beGf41z4a1FI+aQgtjhuaSlDxQ0hmkrHg==
+
+regex-cache@^0.4.2:
+ version "0.4.4"
+ resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.4.tgz#75bdc58a2a1496cec48a12835bc54c8d562336dd"
+ integrity sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==
+ dependencies:
+ is-equal-shallow "^0.1.3"
+
+regex-not@^1.0.0, regex-not@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c"
+ integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==
+ dependencies:
+ extend-shallow "^3.0.2"
+ safe-regex "^1.1.0"
+
+regexpp@^2.0.0, regexpp@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-2.0.1.tgz#8d19d31cf632482b589049f8281f93dbcba4d07f"
+ integrity sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==
+
+registry-auth-token@3.3.2:
+ version "3.3.2"
+ resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-3.3.2.tgz#851fd49038eecb586911115af845260eec983f20"
+ integrity sha512-JL39c60XlzCVgNrO+qq68FoNb56w/m7JYvGR2jT5iR1xBrUA3Mfx5Twk5rqTThPmQKMWydGmq8oFtDlxfrmxnQ==
+ dependencies:
+ rc "^1.1.6"
+ safe-buffer "^5.0.1"
+
+registry-auth-token@^3.0.1:
+ version "3.4.0"
+ resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-3.4.0.tgz#d7446815433f5d5ed6431cd5dca21048f66b397e"
+ integrity sha512-4LM6Fw8eBQdwMYcES4yTnn2TqIasbXuwDx3um+QRs7S55aMKCBKBxvPXl2RiUjHwuJLTyYfxSpmfSAjQpcuP+A==
+ dependencies:
+ rc "^1.1.6"
+ safe-buffer "^5.0.1"
+
+registry-url@3.1.0, registry-url@^3.0.3:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/registry-url/-/registry-url-3.1.0.tgz#3d4ef870f73dde1d77f0cf9a381432444e174942"
+ integrity sha1-PU74cPc93h138M+aOBQyRE4XSUI=
+ dependencies:
+ rc "^1.0.1"
+
+remark-cli@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/remark-cli/-/remark-cli-4.0.0.tgz#bb84c14ffeb6f5b658eff4dfbb77cdd7775bab73"
+ integrity sha512-q5GMjGypUS4rTZb3WfMQcGpClSC38A9Ogg1h/HB2GLsqypDetmAfy0X+tuJ6JeyCPVOXXCDgsDCQq4QPqKmxBA==
+ dependencies:
+ markdown-extensions "^1.1.0"
+ remark "^8.0.0"
+ unified-args "^4.0.0"
+
+remark-lint-blockquote-indentation@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/remark-lint-blockquote-indentation/-/remark-lint-blockquote-indentation-1.0.2.tgz#e84ab0dc4bf468ca10c53f09e1cb8dd0c2f56a95"
+ integrity sha512-u3ruA+4ZZOpt3YmTCdCOcYiGBMSQ/b/iJvZs/fibF6rwSBmkod48aGGJVoOLMuIuTYYbbXpzigxS+PeJwN0CDQ==
+ dependencies:
+ mdast-util-to-string "^1.0.2"
+ plur "^3.0.0"
+ unified-lint-rule "^1.0.0"
+ unist-util-generated "^1.1.0"
+ unist-util-position "^3.0.0"
+ unist-util-visit "^1.1.1"
+
+remark-lint-code-block-style@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/remark-lint-code-block-style/-/remark-lint-code-block-style-1.0.2.tgz#f24ef71767d5933ed83de93a54a85faf9e02c197"
+ integrity sha512-fTSCga/lJ710zBaD808NwqzAatVoLQFizvXWpetygKwoAfXCyMYQ9DUdDE5jdDhwOu2JPnKbxY+4t6m4SrKKWA==
+ dependencies:
+ unified-lint-rule "^1.0.0"
+ unist-util-generated "^1.1.0"
+ unist-util-position "^3.0.0"
+ unist-util-visit "^1.1.1"
+
+remark-lint-definition-case@^1.0.0:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/remark-lint-definition-case/-/remark-lint-definition-case-1.0.3.tgz#4dbc9322eeb7f8d0402f4f1056eaf97812a47557"
+ integrity sha512-ORRDV+ETVWnXoPE3fX0zXFGC5NQvdsB1Ihjeqmw38IWVKnOR34f5s/9BZNnbflBzdKWnLVg1g3IwQLf8eVBsow==
+ dependencies:
+ unified-lint-rule "^1.0.0"
+ unist-util-generated "^1.1.0"
+ unist-util-position "^3.0.0"
+ unist-util-visit "^1.4.0"
+
+remark-lint-definition-spacing@^1.0.0:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/remark-lint-definition-spacing/-/remark-lint-definition-spacing-1.0.3.tgz#f7fc54d0fe7b3cd6b94e2e1290220dd1a3cfb1ff"
+ integrity sha512-8lFBtgSE3xbvvSuO95B6lUiD6Ph1wZr5xevKokwwfKoyfOkXDpN85wh7JepIZnUj1OnTXvupCwr7yYUEji/Rrw==
+ dependencies:
+ unified-lint-rule "^1.0.0"
+ unist-util-generated "^1.1.0"
+ unist-util-position "^3.0.0"
+ unist-util-visit "^1.4.0"
+
+remark-lint-emphasis-marker@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/remark-lint-emphasis-marker/-/remark-lint-emphasis-marker-1.0.2.tgz#df77c6b62b87a61ddf683e791d13ccfae050c318"
+ integrity sha512-c+uvvnYesMaqy/X0dU62dbI6/rk+4dxMXdnfLC/NKBA8GU+4kljWqluW797S6nBG94QZjKIv8m49zJl38QfImQ==
+ dependencies:
+ unified-lint-rule "^1.0.0"
+ unist-util-generated "^1.1.0"
+ unist-util-position "^3.0.0"
+ unist-util-visit "^1.1.1"
+
+remark-lint-fenced-code-flag@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/remark-lint-fenced-code-flag/-/remark-lint-fenced-code-flag-1.0.2.tgz#614232ab7923fc0a3e8694b485bc7ae664c7046b"
+ integrity sha512-6/412zYtz+qKpFJryEPSMurWr6tO5MTVohJF3byFc3+3SSEZLWY3Dg8gbwFlumZ9T4HgmfUm/LT7Idm96zj0nw==
+ dependencies:
+ unified-lint-rule "^1.0.0"
+ unist-util-generated "^1.1.0"
+ unist-util-position "^3.0.0"
+ unist-util-visit "^1.1.1"
+
+remark-lint-fenced-code-marker@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/remark-lint-fenced-code-marker/-/remark-lint-fenced-code-marker-1.0.2.tgz#07959311cf7b9cbe35ae279ea3cb7823205cb29f"
+ integrity sha512-yAP59Q1JoI1jjOFCn0GoNx4uDji99ROLvdwvmz7+9YR9guDArBcR4i9Wem/wN6apauWPk2DbAZFavHvbZaT8HQ==
+ dependencies:
+ unified-lint-rule "^1.0.0"
+ unist-util-generated "^1.1.0"
+ unist-util-position "^3.0.0"
+ unist-util-visit "^1.1.1"
+
+remark-lint-file-extension@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/remark-lint-file-extension/-/remark-lint-file-extension-1.0.2.tgz#c52c6e00c9d1f5e729f515c1bb9c23de9aef4983"
+ integrity sha512-qx0uki74rmALIKE3r5J3neasbXnz6h+l88OngvpwWkELsnJmfk81JdxfEd0tZ++uTj6CN0TZuhMKad9smfNtRw==
+ dependencies:
+ unified-lint-rule "^1.0.0"
+
+remark-lint-final-definition@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/remark-lint-final-definition/-/remark-lint-final-definition-1.0.2.tgz#63e013c9f95c9b52197f19c6e0d14b622352e0f3"
+ integrity sha512-F+n8eauYOJGdcSrnD7w2YgQSERx1rAwXTxStaJ2tLmoXlT7eQgpVGHz1U4Y76cg8OANbq8pT0KTNJ85JNqkq4g==
+ dependencies:
+ unified-lint-rule "^1.0.0"
+ unist-util-generated "^1.1.0"
+ unist-util-position "^3.0.0"
+ unist-util-visit "^1.1.1"
+
+remark-lint-hard-break-spaces@^1.0.0:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/remark-lint-hard-break-spaces/-/remark-lint-hard-break-spaces-1.0.3.tgz#0485fc09265dcea436f5eb3420a3b6f616c6fad7"
+ integrity sha512-GiC0uXeFwef6/Pfo+EYBN0WIVlEFffh+9TdeJ4uLt89ZweaRVDPCTJQqkkuXoiXSPnZGD7cGHdkWCfXU1PaU7Q==
+ dependencies:
+ unified-lint-rule "^1.0.0"
+ unist-util-generated "^1.1.0"
+ unist-util-position "^3.0.0"
+ unist-util-visit "^1.1.1"
+
+remark-lint-heading-increment@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/remark-lint-heading-increment/-/remark-lint-heading-increment-1.0.2.tgz#5da0771232711a42acb66fa79c3c6686de402c3e"
+ integrity sha512-CE3MmARKFk6LK+nBuOUubhr64LnbJfLNx1gA8XgxWJ4s/gf8yZO23KsaWk3ftVmmwk0d8Eqh4qKg8vvvaMyrWQ==
+ dependencies:
+ unified-lint-rule "^1.0.0"
+ unist-util-generated "^1.1.0"
+ unist-util-visit "^1.1.1"
+
+remark-lint-heading-style@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/remark-lint-heading-style/-/remark-lint-heading-style-1.0.2.tgz#87bdab061c9d259f50b5c51ce478d1c65bd31ae8"
+ integrity sha512-d0aIbL8PU5LWfZVI8p49vEV5wWIfD/DdUjc+O8j5E0UWUgcRgPGB66xznkOb8AiniXpcaYggRW8hGZsxoYNt1g==
+ dependencies:
+ mdast-util-heading-style "^1.0.2"
+ unified-lint-rule "^1.0.0"
+ unist-util-generated "^1.1.0"
+ unist-util-visit "^1.1.1"
+
+remark-lint-link-title-style@^1.0.0:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/remark-lint-link-title-style/-/remark-lint-link-title-style-1.0.3.tgz#4dd3aafaf9824523d4f0c8e11171581c89071702"
+ integrity sha512-1cJ/gNoIwX36FB0w8TiT+/Cy0evSJRyn0uV0jeB5Ik+fX+tVxHRkuX/DtmFw0fGImQW882r/3eaZHaKabVR1yg==
+ dependencies:
+ unified-lint-rule "^1.0.0"
+ unist-util-generated "^1.1.0"
+ unist-util-position "^3.0.0"
+ unist-util-visit "^1.1.1"
+ vfile-location "^2.0.1"
+
+remark-lint-list-item-content-indent@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/remark-lint-list-item-content-indent/-/remark-lint-list-item-content-indent-1.0.2.tgz#2564f4b661c4a82a92ecf60a1c4a2b867355c654"
+ integrity sha512-I7VkspA/jeMmIWZ4cGmW/4oWnT6fP8pn5n11MR7azRMKgooj3N2qGF084UqrWHh/dLJcakJUNl3NTXv1XCS1Mw==
+ dependencies:
+ plur "^3.0.0"
+ unified-lint-rule "^1.0.0"
+ unist-util-generated "^1.1.0"
+ unist-util-position "^3.0.0"
+ unist-util-visit "^1.1.1"
+
+remark-lint-list-item-indent@^1.0.0:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/remark-lint-list-item-indent/-/remark-lint-list-item-indent-1.0.3.tgz#93dac0cc312ee8dd9c8a0749b44b17b95b765f53"
+ integrity sha512-/IcVUPIxQ2X/oCKzqiAtH85CS8An3xQbcMD0DRBHZjBrIUO0Ot7lBiQedSHwCg9lnh7pDOTvHrmNS3FaWjVQqw==
+ dependencies:
+ plur "^3.0.0"
+ unified-lint-rule "^1.0.0"
+ unist-util-generated "^1.1.0"
+ unist-util-position "^3.0.0"
+ unist-util-visit "^1.1.1"
+
+remark-lint-list-item-spacing@^1.0.0:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/remark-lint-list-item-spacing/-/remark-lint-list-item-spacing-1.1.2.tgz#55f0d38b0bc1b1c1a553c2d7418066ad1aed9d16"
+ integrity sha512-IhG28ofW85o/2+eVH1ft1zgQmjxqDhNp3+217EQLQviPt/+jVcMsua4W4ZQECPg0E9473yiY9TKbBodp2kOMkg==
+ dependencies:
+ unified-lint-rule "^1.0.0"
+ unist-util-generated "^1.1.0"
+ unist-util-position "^3.0.0"
+ unist-util-visit "^1.1.1"
+
+remark-lint-maximum-heading-length@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/remark-lint-maximum-heading-length/-/remark-lint-maximum-heading-length-1.0.2.tgz#8588923a480d3f039d6c28ae60a6b03cf864b5c8"
+ integrity sha512-kDdwgRItpVGhxdUC+kbWn5YisCrtF4KggP8z36z26tBmDuPj1ohjQvfMWY0oKL8I0Y6UuXyE0vQx3m4R8Qrj+A==
+ dependencies:
+ mdast-util-to-string "^1.0.2"
+ unified-lint-rule "^1.0.0"
+ unist-util-generated "^1.1.0"
+ unist-util-visit "^1.1.1"
+
+remark-lint-maximum-line-length@^1.0.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/remark-lint-maximum-line-length/-/remark-lint-maximum-line-length-1.2.0.tgz#40ca341c0e40285a3708da62279476cb5ead70bf"
+ integrity sha512-tqqZ8YCvfz9ZvKN2vRA12qgNKM+DKb73rJMMb6zq9yd2Nt32n7S+1nobSpKQqAR7/bn2ysUGu/NNA7FjlRXt6g==
+ dependencies:
+ unified-lint-rule "^1.0.0"
+ unist-util-generated "^1.1.0"
+ unist-util-position "^3.0.0"
+ unist-util-visit "^1.4.0"
+
+remark-lint-no-auto-link-without-protocol@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/remark-lint-no-auto-link-without-protocol/-/remark-lint-no-auto-link-without-protocol-1.0.2.tgz#4532087419b1b131b4057ecf0a3a446f0afc2c6e"
+ integrity sha512-3GtkSxOyd6we4b8JdtJsNgt8+3UN+hpw1UiMoE9X96ahc1rqsCFm6miorNUnF/gfPQ1liHBvZUed2SIenDmpkg==
+ dependencies:
+ mdast-util-to-string "^1.0.2"
+ unified-lint-rule "^1.0.0"
+ unist-util-generated "^1.1.0"
+ unist-util-position "^3.0.0"
+ unist-util-visit "^1.1.1"
+
+remark-lint-no-blockquote-without-marker@^2.0.0:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/remark-lint-no-blockquote-without-marker/-/remark-lint-no-blockquote-without-marker-2.0.2.tgz#61b6a0a74fbfba8fd168ac0fcc2a673eb47b9880"
+ integrity sha512-jkfZ4hFiviZttEo7Ac7GZWFgMQ/bdVPfSluLeuf+qwL8sQvR4ClklKJ0Xbkk3cLRjvlGsc8U8uZR8qqH5MSLoA==
+ dependencies:
+ unified-lint-rule "^1.0.0"
+ unist-util-generated "^1.1.0"
+ unist-util-position "^3.0.0"
+ unist-util-visit "^1.1.1"
+ vfile-location "^2.0.1"
+
+remark-lint-no-consecutive-blank-lines@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/remark-lint-no-consecutive-blank-lines/-/remark-lint-no-consecutive-blank-lines-1.0.2.tgz#ba7c8944335a80e67c811028732f12e521d07d93"
+ integrity sha512-KbOm6EX5Yl9uzRC93soTB+HlqtCzu9XJWsV9CVcoDKtNnpKfyTwQOy6dmUbQrLp4xBdNk4s9S9CsemRaHEkFGA==
+ dependencies:
+ plur "^3.0.0"
+ unified-lint-rule "^1.0.0"
+ unist-util-generated "^1.1.0"
+ unist-util-position "^3.0.0"
+ unist-util-visit "^1.1.1"
+
+remark-lint-no-duplicate-headings@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/remark-lint-no-duplicate-headings/-/remark-lint-no-duplicate-headings-1.0.2.tgz#774b1c1e9f8d8313ca32f8b44a4ab3fcf2456e12"
+ integrity sha512-RO3/eQxLjUoHirHIVC+bE5Abzl+gWiJcdPr48gGSP34xfwCeaBAaeorOAxY/hOqOQ/EVNTTA/JHCBVSNPZWIeg==
+ dependencies:
+ mdast-util-to-string "^1.0.2"
+ unified-lint-rule "^1.0.0"
+ unist-util-generated "^1.1.0"
+ unist-util-position "^3.0.0"
+ unist-util-stringify-position "^1.1.2"
+ unist-util-visit "^1.1.1"
+
+remark-lint-no-emphasis-as-heading@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/remark-lint-no-emphasis-as-heading/-/remark-lint-no-emphasis-as-heading-1.0.2.tgz#a4616ad3f085e4db013132306312973b3fe76ac0"
+ integrity sha512-lKlwiRQOFOoPSwjbZf065RaUr6RZmO82zZYjXhVT9xwMkWXIAQyG0GJuLB2/+rlMEtlgoUD3ePch+Pzf+KrSJQ==
+ dependencies:
+ unified-lint-rule "^1.0.0"
+ unist-util-generated "^1.1.0"
+ unist-util-visit "^1.1.1"
+
+remark-lint-no-file-name-articles@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/remark-lint-no-file-name-articles/-/remark-lint-no-file-name-articles-1.0.2.tgz#a8187e44584e56ccc37fcd7bbc758e940a5b1829"
+ integrity sha512-5FuxJ0Hd2AgVSP1javG51qPbMBWxma1LrCKI6JmBsu/GM7ZYOgemMyH5v4I1ejTPGj7P30xmIjMNSnV8IBMq3g==
+ dependencies:
+ unified-lint-rule "^1.0.0"
+
+remark-lint-no-file-name-consecutive-dashes@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/remark-lint-no-file-name-consecutive-dashes/-/remark-lint-no-file-name-consecutive-dashes-1.0.2.tgz#e8536f4c9f349965d9b4990a75a27857dac72488"
+ integrity sha512-VvCxG3AfRm6ROFNJ8+tdOOkk61mEKj+PytB8xg5WNQypKWhhJ734mJ3GzXD4XEov7Bdd1GVXJFXlLFtfoAewHw==
+ dependencies:
+ unified-lint-rule "^1.0.0"
+
+remark-lint-no-file-name-irregular-characters@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/remark-lint-no-file-name-irregular-characters/-/remark-lint-no-file-name-irregular-characters-1.0.2.tgz#0dffe8f4dc7ffe79f634d4609a8f28261a981552"
+ integrity sha512-8A+DYXsiPBu0q4cvqtYwzRj6SWrKnPh+oI1H1t64pCQiSnLmG9e3mAUXMxH9PiM6y5OW7Vw8Xh4KYsnRwGEuMQ==
+ dependencies:
+ unified-lint-rule "^1.0.0"
+
+remark-lint-no-file-name-mixed-case@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/remark-lint-no-file-name-mixed-case/-/remark-lint-no-file-name-mixed-case-1.0.2.tgz#965606ac41b53fef8a4c8d0c7bd1bed63e26a357"
+ integrity sha512-OMH2kpjvDAsyyw8ar9h6WI1kUXSpQ2r2c5JZv3NBNYxwzTBfhCR2MSQq+eEI7yUmD2ehqNUY5LwZTQZG6cK4vw==
+ dependencies:
+ unified-lint-rule "^1.0.0"
+
+remark-lint-no-file-name-outer-dashes@^1.0.0:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/remark-lint-no-file-name-outer-dashes/-/remark-lint-no-file-name-outer-dashes-1.0.3.tgz#d5b217a8341ac79b4a378770488b3ccc8bc4a5b5"
+ integrity sha512-imUWm8Bi9PxV+IQtQC2/BV1Yj0VboC9hPMZh3sae8pZvCjXquTyYiSFa7hQxX6KWCNUiRPHMSlaSVvfvM2e4pQ==
+ dependencies:
+ unified-lint-rule "^1.0.0"
+
+remark-lint-no-heading-punctuation@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/remark-lint-no-heading-punctuation/-/remark-lint-no-heading-punctuation-1.0.2.tgz#c520d8614d641b05ac75c25502901df9218b4b5e"
+ integrity sha512-nYc2a0ihQ5cPy7elaM0lRPYKEMpEK6EjyJH6pHYlgG8NQwjKXhsVaek0fmAm12PaYoYOGW1pDxfzxnFUocU20g==
+ dependencies:
+ mdast-util-to-string "^1.0.2"
+ unified-lint-rule "^1.0.0"
+ unist-util-generated "^1.1.0"
+ unist-util-visit "^1.1.1"
+
+remark-lint-no-inline-padding@^1.0.0:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/remark-lint-no-inline-padding/-/remark-lint-no-inline-padding-1.0.3.tgz#a31e3a04ab0d47ea7e7be8416b5d2d668ad8f7cf"
+ integrity sha512-zEe7LjM13kQshdBtPnSzzCUNzGIX/XiGspMb7HZBCDWYsPJ73s01X+m+YI99Dz7wKvB3EUTZ7/MFhTUIvqcGRw==
+ dependencies:
+ mdast-util-to-string "^1.0.2"
+ unified-lint-rule "^1.0.0"
+ unist-util-generated "^1.1.0"
+ unist-util-visit "^1.4.0"
+
+remark-lint-no-literal-urls@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/remark-lint-no-literal-urls/-/remark-lint-no-literal-urls-1.0.2.tgz#1c60160a76bd9ddacd42819b43dadeb481a530df"
+ integrity sha512-+mWZIJA4yAqpKIclcFP5wRy/6hxcPnfU9Xmgp4fR7OD4JQ4JHkKq9O7MUbda14PLez1aMX+Is0O0hWI7OuqsSw==
+ dependencies:
+ mdast-util-to-string "^1.0.2"
+ unified-lint-rule "^1.0.0"
+ unist-util-generated "^1.1.0"
+ unist-util-position "^3.0.0"
+ unist-util-visit "^1.1.1"
+
+remark-lint-no-multiple-toplevel-headings@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/remark-lint-no-multiple-toplevel-headings/-/remark-lint-no-multiple-toplevel-headings-1.0.2.tgz#65f7288f66a1a14394f6c6f0910d36112f60e3eb"
+ integrity sha512-Zxkw7wIyMOyYQb5C5NTswSttZPCLqm/60Wnt0TEWzXVDkVk5DrxrCCxbMKgpXve1Co5CXPmMixNr/xYBqzxzWg==
+ dependencies:
+ unified-lint-rule "^1.0.0"
+ unist-util-generated "^1.1.0"
+ unist-util-position "^3.0.0"
+ unist-util-stringify-position "^1.1.2"
+ unist-util-visit "^1.1.1"
+
+remark-lint-no-shell-dollars@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/remark-lint-no-shell-dollars/-/remark-lint-no-shell-dollars-1.0.2.tgz#361599631271f7237b2147e692be40e08975330c"
+ integrity sha512-eIjBebX9iOFWbMdjol5JJBXI7ku+7UyJpNrd++rl8QenLLZ76beh+xONCzJw/k5dhEw5voBmQLh7VK9HPU/ang==
+ dependencies:
+ unified-lint-rule "^1.0.0"
+ unist-util-generated "^1.1.0"
+ unist-util-visit "^1.1.1"
+
+remark-lint-no-shortcut-reference-image@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/remark-lint-no-shortcut-reference-image/-/remark-lint-no-shortcut-reference-image-1.0.2.tgz#784011b832173ad9e87d4f40c90f935de0841764"
+ integrity sha512-IVYv5pgyf70jYcrn+BNHVO37BuQJg26rFOLzi2mj+/8EdFpolJiJcTvkChJgz5yip7317DmQQSNLX6gCExuDrQ==
+ dependencies:
+ unified-lint-rule "^1.0.0"
+ unist-util-generated "^1.1.0"
+ unist-util-visit "^1.1.1"
+
+remark-lint-no-shortcut-reference-link@^1.0.0:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/remark-lint-no-shortcut-reference-link/-/remark-lint-no-shortcut-reference-link-1.0.3.tgz#4210d37d234b427dd131eb11473a7a2d3719a819"
+ integrity sha512-v5mk4wYQL+YRmlOTqi8avpzhoGZg+P42dDRda2jedysDIx7TJBEXUH6oMFEbo/qV6PMmtr7fr066M3RrOrLpiQ==
+ dependencies:
+ unified-lint-rule "^1.0.0"
+ unist-util-generated "^1.1.0"
+ unist-util-visit "^1.1.1"
+
+remark-lint-no-table-indentation@^1.0.0:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/remark-lint-no-table-indentation/-/remark-lint-no-table-indentation-1.0.3.tgz#03eaa9c9d4609999cda101451451270656809c78"
+ integrity sha512-argI2JADlVrlwsdORdbmE89QXB9XtBtAy2YBHZv/q/d247CyL+h+hw9wpg06P1lLQwbllxYJD5u1bNtfgv3XVg==
+ dependencies:
+ unified-lint-rule "^1.0.0"
+ unist-util-generated "^1.1.0"
+ unist-util-position "^3.0.0"
+ unist-util-visit "^1.4.0"
+
+remark-lint-ordered-list-marker-style@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/remark-lint-ordered-list-marker-style/-/remark-lint-ordered-list-marker-style-1.0.2.tgz#ad7461306a7701fc931245300dfd7dbd9fbb589f"
+ integrity sha512-4EHuHxZqy8IT4k+4Vc8P38I34AiZfgl07fS5/iqGhCdoSMCvvxdOuzTWTgpDFbx/W2QpHelBfJ+FtOp+E0J4Lg==
+ dependencies:
+ unified-lint-rule "^1.0.0"
+ unist-util-generated "^1.1.0"
+ unist-util-position "^3.0.0"
+ unist-util-visit "^1.1.1"
+
+remark-lint-ordered-list-marker-value@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/remark-lint-ordered-list-marker-value/-/remark-lint-ordered-list-marker-value-1.0.2.tgz#26f5f1ddfadb7c958f8e2c15cd3aa9f2be985be6"
+ integrity sha512-vIPD07u+FBjTjEETZ+UWUp2nydzvOe5AHIX812JlNXWuHYuCybq8DGnkYUcoiK3HbIE+KdG+e7C5xHkim0PSjw==
+ dependencies:
+ unified-lint-rule "^1.0.0"
+ unist-util-generated "^1.1.0"
+ unist-util-position "^3.0.0"
+ unist-util-visit "^1.1.1"
+
+remark-lint-rule-style@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/remark-lint-rule-style/-/remark-lint-rule-style-1.0.2.tgz#51f82acb1e6cdf76ea6107bb231d2336615fa98d"
+ integrity sha512-D9mMPKA7rtCe4Yx+ryip6FyfNG9uGOaHxRgJClfte7D66QzxiiWtHYyNCXI4rkv8Ax9PrEdpWCPcIl3D2LrXhw==
+ dependencies:
+ unified-lint-rule "^1.0.0"
+ unist-util-generated "^1.1.0"
+ unist-util-position "^3.0.0"
+ unist-util-visit "^1.1.1"
+
+remark-lint-strong-marker@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/remark-lint-strong-marker/-/remark-lint-strong-marker-1.0.2.tgz#6ce3670f79bf5978b7518af35e6072c8425f0f46"
+ integrity sha512-oUSKqYJVLgbXe25NmcTOfQ8wsFasc+qhEoGjPEGPuJMV2aZIGuOEbGVqD5B1ckYGBEwbTuet3btvMohz8HaBDQ==
+ dependencies:
+ unified-lint-rule "^1.0.0"
+ unist-util-generated "^1.1.0"
+ unist-util-position "^3.0.0"
+ unist-util-visit "^1.1.1"
+
+remark-lint-table-cell-padding@^1.0.0:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/remark-lint-table-cell-padding/-/remark-lint-table-cell-padding-1.0.3.tgz#fafec50deb8476cb3241f2da4ef0b8b66f549741"
+ integrity sha512-beXwMK8KAGIDQWixf7wzte4GhyB9w33DxTGgmP4HWOWMVXHvBnufJvnIozBBOH9nOsi1fP8NYRb/01hrgjNnmw==
+ dependencies:
+ unified-lint-rule "^1.0.0"
+ unist-util-generated "^1.1.0"
+ unist-util-position "^3.0.0"
+ unist-util-visit "^1.4.0"
+
+remark-lint-table-pipe-alignment@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/remark-lint-table-pipe-alignment/-/remark-lint-table-pipe-alignment-1.0.2.tgz#3d79927c18b5a5713079a7890a392b740e0bc45a"
+ integrity sha512-gLJwduvBI2soR7Dyf39KGUl3M9ZCK/7pFfWBeOv8J27D7px/1lXooqlX4Y9NQ/+9jc7DyLF9upPxh7UWm7UXGg==
+ dependencies:
+ unified-lint-rule "^1.0.0"
+ unist-util-generated "^1.1.0"
+ unist-util-position "^3.0.0"
+ unist-util-visit "^1.1.1"
+
+remark-lint-table-pipes@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/remark-lint-table-pipes/-/remark-lint-table-pipes-1.0.2.tgz#a7e95c93d6908c2b515651aa44fc8c922626ad32"
+ integrity sha512-BGKcOviuUC6fILIOPYFe6awqk57ApzNJpK3OYBrweGoFF55nZ/qf3q6JpzA0chd6wKj7VrcfQEd3QSQQ+8Wcrw==
+ dependencies:
+ unified-lint-rule "^1.0.0"
+ unist-util-generated "^1.1.0"
+ unist-util-position "^3.0.0"
+ unist-util-visit "^1.1.1"
+
+remark-lint-unordered-list-marker-style@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/remark-lint-unordered-list-marker-style/-/remark-lint-unordered-list-marker-style-1.0.2.tgz#2d631c3e7e0604e1d45d5586a0bbb21474bb89a4"
+ integrity sha512-qdnF9JuMWzFJzGIfdAWfOHyjad8dqIQSs+cTzqMlNZHOGrrCJdTUWzybzcZMGn1yuwreklZdHKhOglXQFwSD3A==
+ dependencies:
+ unified-lint-rule "^1.0.0"
+ unist-util-generated "^1.1.0"
+ unist-util-position "^3.0.0"
+ unist-util-visit "^1.1.1"
+
+remark-lint@^6.0.0:
+ version "6.0.4"
+ resolved "https://registry.yarnpkg.com/remark-lint/-/remark-lint-6.0.4.tgz#13def899efd7d7d105188c274663a60e0fe8fa59"
+ integrity sha512-miD6SKhjEkLgdJXgAmNhGsdY1yIGAzwpoGIn/59MR6nZhshdxSm9/pLPiw9fK3loNASA3j7k//kea6x5vHb+jQ==
+ dependencies:
+ remark-message-control "^4.0.0"
+
+remark-message-control@^4.0.0:
+ version "4.1.1"
+ resolved "https://registry.yarnpkg.com/remark-message-control/-/remark-message-control-4.1.1.tgz#a3f0b08dffda484e7196f0539de1488220f1d251"
+ integrity sha512-DojJPPeSux/U7aHCN6GUWBgp6F1EQFPUNvnk2gfuGgiMCHVubz/xAC3TkvPaf5w1F0PEGaOEpCtvxJK6O4Kmiw==
+ dependencies:
+ mdast-comment-marker "^1.0.0"
+ unified-message-control "^1.0.0"
+ xtend "^4.0.1"
+
+remark-parse@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/remark-parse/-/remark-parse-4.0.0.tgz#99f1f049afac80382366e2e0d0bd55429dd45d8b"
+ integrity sha512-XZgICP2gJ1MHU7+vQaRM+VA9HEL3X253uwUM/BGgx3iv6TH2B3bF3B8q00DKcyP9YrJV+/7WOWEWBFF/u8cIsw==
+ dependencies:
+ collapse-white-space "^1.0.2"
+ is-alphabetical "^1.0.0"
+ is-decimal "^1.0.0"
+ is-whitespace-character "^1.0.0"
+ is-word-character "^1.0.0"
+ markdown-escapes "^1.0.0"
+ parse-entities "^1.0.2"
+ repeat-string "^1.5.4"
+ state-toggle "^1.0.0"
+ trim "0.0.1"
+ trim-trailing-lines "^1.0.0"
+ unherit "^1.0.4"
+ unist-util-remove-position "^1.0.0"
+ vfile-location "^2.0.0"
+ xtend "^4.0.1"
+
+remark-preset-lint-markdown-style-guide@^2.1.1:
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/remark-preset-lint-markdown-style-guide/-/remark-preset-lint-markdown-style-guide-2.1.2.tgz#a945814f4b014d3e6c0888fc034418bdfd77f44c"
+ integrity sha512-0mYeeO084o3ZuDSQCvj5vpMZEGQ/HxPcO5vdNpicu+wKpuGNKV2hYZeHbXa/uZV0gjiQeuRmCHIDgNaDsMj5fg==
+ dependencies:
+ remark-lint "^6.0.0"
+ remark-lint-blockquote-indentation "^1.0.0"
+ remark-lint-code-block-style "^1.0.0"
+ remark-lint-definition-case "^1.0.0"
+ remark-lint-definition-spacing "^1.0.0"
+ remark-lint-emphasis-marker "^1.0.0"
+ remark-lint-fenced-code-flag "^1.0.0"
+ remark-lint-fenced-code-marker "^1.0.0"
+ remark-lint-file-extension "^1.0.0"
+ remark-lint-final-definition "^1.0.0"
+ remark-lint-hard-break-spaces "^1.0.0"
+ remark-lint-heading-increment "^1.0.0"
+ remark-lint-heading-style "^1.0.0"
+ remark-lint-link-title-style "^1.0.0"
+ remark-lint-list-item-content-indent "^1.0.0"
+ remark-lint-list-item-indent "^1.0.0"
+ remark-lint-list-item-spacing "^1.0.0"
+ remark-lint-maximum-heading-length "^1.0.0"
+ remark-lint-maximum-line-length "^1.0.0"
+ remark-lint-no-auto-link-without-protocol "^1.0.0"
+ remark-lint-no-blockquote-without-marker "^2.0.0"
+ remark-lint-no-consecutive-blank-lines "^1.0.0"
+ remark-lint-no-duplicate-headings "^1.0.0"
+ remark-lint-no-emphasis-as-heading "^1.0.0"
+ remark-lint-no-file-name-articles "^1.0.0"
+ remark-lint-no-file-name-consecutive-dashes "^1.0.0"
+ remark-lint-no-file-name-irregular-characters "^1.0.0"
+ remark-lint-no-file-name-mixed-case "^1.0.0"
+ remark-lint-no-file-name-outer-dashes "^1.0.0"
+ remark-lint-no-heading-punctuation "^1.0.0"
+ remark-lint-no-inline-padding "^1.0.0"
+ remark-lint-no-literal-urls "^1.0.0"
+ remark-lint-no-multiple-toplevel-headings "^1.0.0"
+ remark-lint-no-shell-dollars "^1.0.0"
+ remark-lint-no-shortcut-reference-image "^1.0.0"
+ remark-lint-no-shortcut-reference-link "^1.0.0"
+ remark-lint-no-table-indentation "^1.0.0"
+ remark-lint-ordered-list-marker-style "^1.0.0"
+ remark-lint-ordered-list-marker-value "^1.0.0"
+ remark-lint-rule-style "^1.0.0"
+ remark-lint-strong-marker "^1.0.0"
+ remark-lint-table-cell-padding "^1.0.0"
+ remark-lint-table-pipe-alignment "^1.0.0"
+ remark-lint-table-pipes "^1.0.0"
+ remark-lint-unordered-list-marker-style "^1.0.0"
+
+remark-stringify@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/remark-stringify/-/remark-stringify-4.0.0.tgz#4431884c0418f112da44991b4e356cfe37facd87"
+ integrity sha512-xLuyKTnuQer3ke9hkU38SUYLiTmS078QOnoFavztmbt/pAJtNSkNtFgR0U//uCcmG0qnyxao+PDuatQav46F1w==
+ dependencies:
+ ccount "^1.0.0"
+ is-alphanumeric "^1.0.0"
+ is-decimal "^1.0.0"
+ is-whitespace-character "^1.0.0"
+ longest-streak "^2.0.1"
+ markdown-escapes "^1.0.0"
+ markdown-table "^1.1.0"
+ mdast-util-compact "^1.0.0"
+ parse-entities "^1.0.2"
+ repeat-string "^1.5.4"
+ state-toggle "^1.0.0"
+ stringify-entities "^1.0.1"
+ unherit "^1.0.4"
+ xtend "^4.0.1"
+
+remark@^8.0.0:
+ version "8.0.0"
+ resolved "https://registry.yarnpkg.com/remark/-/remark-8.0.0.tgz#287b6df2fe1190e263c1d15e486d3fa835594d6d"
+ integrity sha512-K0PTsaZvJlXTl9DN6qYlvjTkqSZBFELhROZMrblm2rB+085flN84nz4g/BscKRMqDvhzlK1oQ/xnWQumdeNZYw==
+ dependencies:
+ remark-parse "^4.0.0"
+ remark-stringify "^4.0.0"
+ unified "^6.0.0"
+
+remove-trailing-separator@^1.0.1:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef"
+ integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8=
+
+repeat-element@^1.1.2:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce"
+ integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==
+
+repeat-string@^1.5.0, repeat-string@^1.5.2, repeat-string@^1.5.4, repeat-string@^1.6.1:
+ version "1.6.1"
+ resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637"
+ integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc=
+
+repeating@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda"
+ integrity sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=
+ dependencies:
+ is-finite "^1.0.0"
+
+replace-ext@1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-1.0.0.tgz#de63128373fcbf7c3ccfa4de5a480c45a67958eb"
+ integrity sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=
+
+request@^2.45.0, request@^2.55.0, request@^2.88.0:
+ version "2.88.0"
+ resolved "https://registry.yarnpkg.com/request/-/request-2.88.0.tgz#9c2fca4f7d35b592efe57c7f0a55e81052124fef"
+ integrity sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==
+ dependencies:
+ aws-sign2 "~0.7.0"
+ aws4 "^1.8.0"
+ caseless "~0.12.0"
+ combined-stream "~1.0.6"
+ extend "~3.0.2"
+ forever-agent "~0.6.1"
+ form-data "~2.3.2"
+ har-validator "~5.1.0"
+ http-signature "~1.2.0"
+ is-typedarray "~1.0.0"
+ isstream "~0.1.2"
+ json-stringify-safe "~5.0.1"
+ mime-types "~2.1.19"
+ oauth-sign "~0.9.0"
+ performance-now "^2.1.0"
+ qs "~6.5.2"
+ safe-buffer "^5.1.2"
+ tough-cookie "~2.4.3"
+ tunnel-agent "^0.6.0"
+ uuid "^3.3.2"
+
+require-uncached@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/require-uncached/-/require-uncached-1.0.3.tgz#4e0d56d6c9662fd31e43011c4b95aa49955421d3"
+ integrity sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM=
+ dependencies:
+ caller-path "^0.1.0"
+ resolve-from "^1.0.0"
+
+requireindex@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/requireindex/-/requireindex-1.2.0.tgz#3463cdb22ee151902635aa6c9535d4de9c2ef1ef"
+ integrity sha512-L9jEkOi3ASd9PYit2cwRfyppc9NoABujTP8/5gFcbERmo5jUoAKovIC3fsF17pkTnGsrByysqX+Kxd2OTNI1ww==
+
+requireindex@~1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/requireindex/-/requireindex-1.1.0.tgz#e5404b81557ef75db6e49c5a72004893fe03e162"
+ integrity sha1-5UBLgVV+91225JxacgBIk/4D4WI=
+
+resolve-from@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-1.0.1.tgz#26cbfe935d1aeeeabb29bc3fe5aeb01e93d44226"
+ integrity sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY=
+
+resolve-from@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748"
+ integrity sha1-six699nWiBvItuZTM17rywoYh0g=
+
+resolve-from@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6"
+ integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==
+
+resolve-url@^0.2.1:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a"
+ integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=
+
+resolve@1.1.7:
+ version "1.1.7"
+ resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b"
+ integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=
+
+resolve@^1.1.4, resolve@^1.1.6, resolve@^1.1.7, resolve@^1.10.0, resolve@^1.4.0, resolve@^1.5.0, resolve@^1.6.0, resolve@^1.8.1:
+ version "1.10.1"
+ resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.10.1.tgz#664842ac960795bbe758221cdccda61fb64b5f18"
+ integrity sha512-KuIe4mf++td/eFb6wkaPbMDnP6kObCaEtIDuHOUED6MNUo4K670KZUHuuvYPZDxNF0WVLw49n06M2m2dXphEzA==
+ dependencies:
+ path-parse "^1.0.6"
+
+restore-cursor@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-1.0.1.tgz#34661f46886327fed2991479152252df92daa541"
+ integrity sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=
+ dependencies:
+ exit-hook "^1.0.0"
+ onetime "^1.0.0"
+
+restore-cursor@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf"
+ integrity sha1-n37ih/gv0ybU/RYpI9YhKe7g368=
+ dependencies:
+ onetime "^2.0.0"
+ signal-exit "^3.0.2"
+
+ret@~0.1.10:
+ version "0.1.15"
+ resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc"
+ integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==
+
+revalidator@^0.3.1:
+ version "0.3.1"
+ resolved "https://registry.yarnpkg.com/revalidator/-/revalidator-0.3.1.tgz#ff2cc4cf7cc7c6385ac710178276e6dbcd03762f"
+ integrity sha1-/yzEz3zHxjhaxxAXgnbm280Ddi8=
+
+right-align@^0.1.1:
+ version "0.1.3"
+ resolved "https://registry.yarnpkg.com/right-align/-/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef"
+ integrity sha1-YTObci/mo1FWiSENJOFMlhSGE+8=
+ dependencies:
+ align-text "^0.1.1"
+
+rimraf@2.6.3, rimraf@^2.2.8, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@~2.6.2:
+ version "2.6.3"
+ resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab"
+ integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==
+ dependencies:
+ glob "^7.1.3"
+
+rimraf@~2.2.6:
+ version "2.2.8"
+ resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.2.8.tgz#e439be2aaee327321952730f99a8929e4fc50582"
+ integrity sha1-5Dm+Kq7jJzIZUnMPmaiSnk/FBYI=
+
+ripemd160@^2.0.0, ripemd160@^2.0.1:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c"
+ integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==
+ dependencies:
+ hash-base "^3.0.0"
+ inherits "^2.0.1"
+
+run-async@^2.2.0:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0"
+ integrity sha1-A3GrSuC91yDUFm19/aZP96RFpsA=
+ dependencies:
+ is-promise "^2.1.0"
+
+run-parallel@^1.1.2:
+ version "1.1.9"
+ resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.1.9.tgz#c9dd3a7cf9f4b2c4b6244e173a6ed866e61dd679"
+ integrity sha512-DEqnSRTDw/Tc3FXf49zedI638Z9onwUotBMiUFKmrO2sdFKIbXamXGQ3Axd4qgphxKB4kw/qP1w5kTxnfU1B9Q==
+
+rxjs@^5.5.2:
+ version "5.5.12"
+ resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-5.5.12.tgz#6fa61b8a77c3d793dbaf270bee2f43f652d741cc"
+ integrity sha512-xx2itnL5sBbqeeiVgNPVuQQ1nC8Jp2WfNJhXWHmElW9YmrpS9UVnNzhP3EH3HFqexO5Tlp8GhYY+WEcqcVMvGw==
+ dependencies:
+ symbol-observable "1.0.1"
+
+rxjs@^6.3.3, rxjs@^6.4.0:
+ version "6.5.1"
+ resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.5.1.tgz#f7a005a9386361921b8524f38f54cbf80e5d08f4"
+ integrity sha512-y0j31WJc83wPu31vS1VlAFW5JGrnGC+j+TtGAa1fRQphy48+fDYiDmX8tjGloToEsMkxnouOg/1IzXGKkJnZMg==
+ dependencies:
+ tslib "^1.9.0"
+
+safe-buffer@5.1.1:
+ version "5.1.1"
+ resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853"
+ integrity sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==
+
+safe-buffer@5.1.2, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1:
+ version "5.1.2"
+ resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
+ integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==
+
+safe-regex@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e"
+ integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4=
+ dependencies:
+ ret "~0.1.10"
+
+"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0:
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
+ integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
+
+sax@^1.1.4, sax@^1.2.4:
+ version "1.2.4"
+ resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9"
+ integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==
+
+semver-compare@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/semver-compare/-/semver-compare-1.0.0.tgz#0dee216a1c941ab37e9efb1788f6afc5ff5537fc"
+ integrity sha1-De4hahyUGrN+nvsXiPavxf9VN/w=
+
+semver-diff@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-2.1.0.tgz#4bbb8437c8d37e4b0cf1a68fd726ec6d645d6d36"
+ integrity sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY=
+ dependencies:
+ semver "^5.0.3"
+
+"semver@2 || 3 || 4 || 5", semver@^5.0.3, semver@^5.1.0, semver@^5.3.0, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0:
+ version "5.7.0"
+ resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.0.tgz#790a7cf6fea5459bac96110b29b60412dc8ff96b"
+ integrity sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==
+
+semver@5.5.0:
+ version "5.5.0"
+ resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.0.tgz#dc4bbc7a6ca9d916dee5d43516f0092b58f7b8ab"
+ integrity sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==
+
+send@0.16.2:
+ version "0.16.2"
+ resolved "https://registry.yarnpkg.com/send/-/send-0.16.2.tgz#6ecca1e0f8c156d141597559848df64730a6bbc1"
+ integrity sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==
+ dependencies:
+ debug "2.6.9"
+ depd "~1.1.2"
+ destroy "~1.0.4"
+ encodeurl "~1.0.2"
+ escape-html "~1.0.3"
+ etag "~1.8.1"
+ fresh "0.5.2"
+ http-errors "~1.6.2"
+ mime "1.4.1"
+ ms "2.0.0"
+ on-finished "~2.3.0"
+ range-parser "~1.2.0"
+ statuses "~1.4.0"
+
+serve-static@1.13.2:
+ version "1.13.2"
+ resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.13.2.tgz#095e8472fd5b46237db50ce486a43f4b86c6cec1"
+ integrity sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==
+ dependencies:
+ encodeurl "~1.0.2"
+ escape-html "~1.0.3"
+ parseurl "~1.3.2"
+ send "0.16.2"
+
+serve@^6.5.8:
+ version "6.5.8"
+ resolved "https://registry.yarnpkg.com/serve/-/serve-6.5.8.tgz#fd7ad6b9c10ba12084053030cc1a8b636c0a10a7"
+ integrity sha512-GZYlJz7f6E7Xq6xbg1rTSvQQV9x4v/yYB/sum6egzSBLa/mdk1PViDSX2JvL0Me83sxu3JpEpQELfakDKbGcrw==
+ dependencies:
+ args "4.0.0"
+ basic-auth "2.0.0"
+ bluebird "3.5.1"
+ boxen "1.3.0"
+ chalk "2.4.1"
+ clipboardy "1.2.3"
+ dargs "5.1.0"
+ detect-port "1.2.3"
+ filesize "3.6.1"
+ fs-extra "6.0.1"
+ handlebars "4.0.11"
+ ip "1.1.5"
+ micro "9.3.1"
+ micro-compress "1.0.0"
+ mime-types "2.1.18"
+ node-version "1.1.3"
+ openssl-self-signed-certificate "1.1.6"
+ opn "5.3.0"
+ path-is-inside "1.0.2"
+ path-type "3.0.0"
+ send "0.16.2"
+ update-check "1.5.1"
+
+set-blocking@~2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7"
+ integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc=
+
+set-value@^0.4.3:
+ version "0.4.3"
+ resolved "https://registry.yarnpkg.com/set-value/-/set-value-0.4.3.tgz#7db08f9d3d22dc7f78e53af3c3bf4666ecdfccf1"
+ integrity sha1-fbCPnT0i3H945Trzw79GZuzfzPE=
+ dependencies:
+ extend-shallow "^2.0.1"
+ is-extendable "^0.1.1"
+ is-plain-object "^2.0.1"
+ to-object-path "^0.3.0"
+
+set-value@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.0.tgz#71ae4a88f0feefbbf52d1ea604f3fb315ebb6274"
+ integrity sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==
+ dependencies:
+ extend-shallow "^2.0.1"
+ is-extendable "^0.1.1"
+ is-plain-object "^2.0.3"
+ split-string "^3.0.1"
+
+setprototypeof@1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.0.3.tgz#66567e37043eeb4f04d91bd658c0cbefb55b8e04"
+ integrity sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ=
+
+setprototypeof@1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656"
+ integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==
+
+sha.js@^2.4.0, sha.js@^2.4.8, sha.js@~2.4.4:
+ version "2.4.11"
+ resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7"
+ integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==
+ dependencies:
+ inherits "^2.0.1"
+ safe-buffer "^5.0.1"
+
+shasum@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/shasum/-/shasum-1.0.2.tgz#e7012310d8f417f4deb5712150e5678b87ae565f"
+ integrity sha1-5wEjENj0F/TetXEhUOVni4euVl8=
+ dependencies:
+ json-stable-stringify "~0.0.0"
+ sha.js "~2.4.4"
+
+shebang-command@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea"
+ integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=
+ dependencies:
+ shebang-regex "^1.0.0"
+
+shebang-regex@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3"
+ integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=
+
+shell-quote@^1.6.1:
+ version "1.6.1"
+ resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.6.1.tgz#f4781949cce402697127430ea3b3c5476f481767"
+ integrity sha1-9HgZSczkAmlxJ0MOo7PFR29IF2c=
+ dependencies:
+ array-filter "~0.0.0"
+ array-map "~0.0.0"
+ array-reduce "~0.0.0"
+ jsonify "~0.0.0"
+
+shelljs@^0.8.1:
+ version "0.8.3"
+ resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.8.3.tgz#a7f3319520ebf09ee81275b2368adb286659b097"
+ integrity sha512-fc0BKlAWiLpwZljmOvAOTE/gXawtCoNrP5oaY7KIaQbbyHeQVg01pSEuEGvGh3HEdBU4baCD7wQBwADmM/7f7A==
+ dependencies:
+ glob "^7.0.0"
+ interpret "^1.0.0"
+ rechoir "^0.6.2"
+
+shellsubstitute@^1.1.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/shellsubstitute/-/shellsubstitute-1.2.0.tgz#e4f702a50c518b0f6fe98451890d705af29b6b70"
+ integrity sha1-5PcCpQxRiw9v6YRRiQ1wWvKba3A=
+
+shx@^0.3.2:
+ version "0.3.2"
+ resolved "https://registry.yarnpkg.com/shx/-/shx-0.3.2.tgz#40501ce14eb5e0cbcac7ddbd4b325563aad8c123"
+ integrity sha512-aS0mWtW3T2sHAenrSrip2XGv39O9dXIFUqxAEWHEOS1ePtGIBavdPJY1kE2IHl14V/4iCbUiNDPGdyYTtmhSoA==
+ dependencies:
+ es6-object-assign "^1.0.3"
+ minimist "^1.2.0"
+ shelljs "^0.8.1"
+
+signal-exit@^3.0.0, signal-exit@^3.0.2:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d"
+ integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=
+
+simple-concat@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/simple-concat/-/simple-concat-1.0.0.tgz#7344cbb8b6e26fb27d66b2fc86f9f6d5997521c6"
+ integrity sha1-c0TLuLbib7J9ZrL8hvn21Zl1IcY=
+
+simple-git@^1.85.0:
+ version "1.110.0"
+ resolved "https://registry.yarnpkg.com/simple-git/-/simple-git-1.110.0.tgz#54eb179089d055a7783d32399246cebc9d9933e9"
+ integrity sha512-UYY0rQkknk0P5eb+KW+03F4TevZ9ou0H+LoGaj7iiVgpnZH4wdj/HTViy/1tNNkmIPcmtxuBqXWiYt2YwlRKOQ==
+ dependencies:
+ debug "^4.0.1"
+
+single-line-log@^1.1.2:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/single-line-log/-/single-line-log-1.1.2.tgz#c2f83f273a3e1a16edb0995661da0ed5ef033364"
+ integrity sha1-wvg/Jzo+GhbtsJlWYdoO1e8DM2Q=
+ dependencies:
+ string-width "^1.0.1"
+
+slash@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55"
+ integrity sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=
+
+slice-ansi@0.0.4:
+ version "0.0.4"
+ resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-0.0.4.tgz#edbf8903f66f7ce2f8eafd6ceed65e264c831b35"
+ integrity sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU=
+
+slice-ansi@1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-1.0.0.tgz#044f1a49d8842ff307aad6b505ed178bd950134d"
+ integrity sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg==
+ dependencies:
+ is-fullwidth-code-point "^2.0.0"
+
+slice-ansi@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.1.0.tgz#cacd7693461a637a5788d92a7dd4fba068e81636"
+ integrity sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==
+ dependencies:
+ ansi-styles "^3.2.0"
+ astral-regex "^1.0.0"
+ is-fullwidth-code-point "^2.0.0"
+
+sliced@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/sliced/-/sliced-1.0.1.tgz#0b3a662b5d04c3177b1926bea82b03f837a2ef41"
+ integrity sha1-CzpmK10Ewxd7GSa+qCsD+Dei70E=
+
+snapdragon-node@^2.0.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b"
+ integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==
+ dependencies:
+ define-property "^1.0.0"
+ isobject "^3.0.0"
+ snapdragon-util "^3.0.1"
+
+snapdragon-util@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2"
+ integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==
+ dependencies:
+ kind-of "^3.2.0"
+
+snapdragon@^0.8.1:
+ version "0.8.2"
+ resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d"
+ integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==
+ dependencies:
+ base "^0.11.1"
+ debug "^2.2.0"
+ define-property "^0.2.5"
+ extend-shallow "^2.0.1"
+ map-cache "^0.2.2"
+ source-map "^0.5.6"
+ source-map-resolve "^0.5.0"
+ use "^3.1.0"
+
+source-map-resolve@^0.5.0:
+ version "0.5.2"
+ resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.2.tgz#72e2cc34095543e43b2c62b2c4c10d4a9054f259"
+ integrity sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==
+ dependencies:
+ atob "^2.1.1"
+ decode-uri-component "^0.2.0"
+ resolve-url "^0.2.1"
+ source-map-url "^0.4.0"
+ urix "^0.1.0"
+
+source-map-support@^0.5.6:
+ version "0.5.12"
+ resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.12.tgz#b4f3b10d51857a5af0138d3ce8003b201613d599"
+ integrity sha512-4h2Pbvyy15EE02G+JOZpUCmqWJuqrs+sEkzewTm++BPi7Hvn/HwcqLAcNxYAyI0x13CpPPn+kMjl+hplXMHITQ==
+ dependencies:
+ buffer-from "^1.0.0"
+ source-map "^0.6.0"
+
+source-map-url@^0.4.0:
+ version "0.4.0"
+ resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3"
+ integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=
+
+source-map@^0.4.4:
+ version "0.4.4"
+ resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.4.4.tgz#eba4f5da9c0dc999de68032d8b4f76173652036b"
+ integrity sha1-66T12pwNyZneaAMti092FzZSA2s=
+ dependencies:
+ amdefine ">=0.0.4"
+
+source-map@^0.5.6, source-map@~0.5.1, source-map@~0.5.3:
+ version "0.5.7"
+ resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc"
+ integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=
+
+source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1:
+ version "0.6.1"
+ resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
+ integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
+
+spdx-correct@^3.0.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.0.tgz#fb83e504445268f154b074e218c87c003cd31df4"
+ integrity sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==
+ dependencies:
+ spdx-expression-parse "^3.0.0"
+ spdx-license-ids "^3.0.0"
+
+spdx-exceptions@^2.1.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz#2ea450aee74f2a89bfb94519c07fcd6f41322977"
+ integrity sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==
+
+spdx-expression-parse@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz#99e119b7a5da00e05491c9fa338b7904823b41d0"
+ integrity sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==
+ dependencies:
+ spdx-exceptions "^2.1.0"
+ spdx-license-ids "^3.0.0"
+
+spdx-license-ids@^3.0.0:
+ version "3.0.4"
+ resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.4.tgz#75ecd1a88de8c184ef015eafb51b5b48bfd11bb1"
+ integrity sha512-7j8LYJLeY/Yb6ACbQ7F76qy5jHkp0U6jgBfJsk97bwWlVUnUWsAgpyaCvo17h0/RQGnQ036tVDomiwoI4pDkQA==
+
+speedometer@~0.1.2:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/speedometer/-/speedometer-0.1.4.tgz#9876dbd2a169d3115402d48e6ea6329c8816a50d"
+ integrity sha1-mHbb0qFp0xFUAtSObqYynIgWpQ0=
+
+split-string@^3.0.1, split-string@^3.0.2:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2"
+ integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==
+ dependencies:
+ extend-shallow "^3.0.0"
+
+split2@^2.0.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/split2/-/split2-2.2.0.tgz#186b2575bcf83e85b7d18465756238ee4ee42493"
+ integrity sha512-RAb22TG39LhI31MbreBgIuKiIKhVsawfTgEGqKHTK87aG+ul/PB8Sqoi3I7kVdRWiCfrKxK3uo4/YUkpNvhPbw==
+ dependencies:
+ through2 "^2.0.2"
+
+split@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/split/-/split-1.0.1.tgz#605bd9be303aa59fb35f9229fbea0ddec9ea07d9"
+ integrity sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==
+ dependencies:
+ through "2"
+
+sprintf-js@~1.0.2:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c"
+ integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=
+
+sshpk@^1.7.0:
+ version "1.16.1"
+ resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877"
+ integrity sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==
+ dependencies:
+ asn1 "~0.2.3"
+ assert-plus "^1.0.0"
+ bcrypt-pbkdf "^1.0.0"
+ dashdash "^1.12.0"
+ ecc-jsbn "~0.1.1"
+ getpass "^0.1.1"
+ jsbn "~0.1.0"
+ safer-buffer "^2.0.2"
+ tweetnacl "~0.14.0"
+
+staged-git-files@1.1.2:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/staged-git-files/-/staged-git-files-1.1.2.tgz#4326d33886dc9ecfa29a6193bf511ba90a46454b"
+ integrity sha512-0Eyrk6uXW6tg9PYkhi/V/J4zHp33aNyi2hOCmhFLqLTIhbgqWn5jlSzI+IU0VqrZq6+DbHcabQl/WP6P3BG0QA==
+
+standard-engine@~9.0.0:
+ version "9.0.0"
+ resolved "https://registry.yarnpkg.com/standard-engine/-/standard-engine-9.0.0.tgz#d3a3d74c4c1b91f51a1e66362465261ca7610316"
+ integrity sha512-ZfNfCWZ2Xq67VNvKMPiVMKHnMdvxYzvZkf1AH8/cw2NLDBm5LRsxMqvEJpsjLI/dUosZ3Z1d6JlHDp5rAvvk2w==
+ dependencies:
+ deglob "^2.1.0"
+ get-stdin "^6.0.0"
+ minimist "^1.1.0"
+ pkg-conf "^2.0.0"
+
+standard-markdown@^5.0.0:
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/standard-markdown/-/standard-markdown-5.0.1.tgz#39598c611bfe03b2d4313df792f365544959a592"
+ integrity sha512-rvbuTqF4zJX3yxgHhRB6o0uGq+V87Dbzk8QeBy9dyb9RdBWL4OG3nCpxfEnM0KHjycMCSMK36r60k/MGThERdA==
+ dependencies:
+ commander "^2.18.0"
+ globby "^8.0.1"
+ lodash.flatten "^4.4.0"
+ lodash.range "^3.2.0"
+ ora "^3.0.0"
+ standard "^12.0.1"
+
+standard@^12.0.1:
+ version "12.0.1"
+ resolved "https://registry.yarnpkg.com/standard/-/standard-12.0.1.tgz#0fc5a8aa6c34c546c5562aae644242b24dae2e61"
+ integrity sha512-UqdHjh87OG2gUrNCSM4QRLF5n9h3TFPwrCNyVlkqu31Hej0L/rc8hzKqVvkb2W3x0WMq7PzZdkLfEcBhVOR6lg==
+ dependencies:
+ eslint "~5.4.0"
+ eslint-config-standard "12.0.0"
+ eslint-config-standard-jsx "6.0.2"
+ eslint-plugin-import "~2.14.0"
+ eslint-plugin-node "~7.0.1"
+ eslint-plugin-promise "~4.0.0"
+ eslint-plugin-react "~7.11.1"
+ eslint-plugin-standard "~4.0.0"
+ standard-engine "~9.0.0"
+
+state-toggle@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/state-toggle/-/state-toggle-1.0.1.tgz#c3cb0974f40a6a0f8e905b96789eb41afa1cde3a"
+ integrity sha512-Qe8QntFrrpWTnHwvwj2FZTgv+PKIsp0B9VxLzLLbSpPXWOgRgc5LVj/aTiSfK1RqIeF9jeC1UeOH8Q8y60A7og==
+
+static-extend@^0.1.1:
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6"
+ integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=
+ dependencies:
+ define-property "^0.2.5"
+ object-copy "^0.1.0"
+
+"statuses@>= 1.3.1 < 2", "statuses@>= 1.4.0 < 2":
+ version "1.5.0"
+ resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c"
+ integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=
+
+statuses@~1.4.0:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.4.0.tgz#bb73d446da2796106efcc1b601a253d6c46bd087"
+ integrity sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==
+
+stream-browserify@^2.0.0:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.2.tgz#87521d38a44aa7ee91ce1cd2a47df0cb49dd660b"
+ integrity sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==
+ dependencies:
+ inherits "~2.0.1"
+ readable-stream "^2.0.2"
+
+stream-combiner2@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/stream-combiner2/-/stream-combiner2-1.1.1.tgz#fb4d8a1420ea362764e21ad4780397bebcb41cbe"
+ integrity sha1-+02KFCDqNidk4hrUeAOXvry0HL4=
+ dependencies:
+ duplexer2 "~0.1.0"
+ readable-stream "^2.0.2"
+
+stream-http@^2.0.0:
+ version "2.8.3"
+ resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.3.tgz#b2d242469288a5a27ec4fe8933acf623de6514fc"
+ integrity sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==
+ dependencies:
+ builtin-status-codes "^3.0.0"
+ inherits "^2.0.1"
+ readable-stream "^2.3.6"
+ to-arraybuffer "^1.0.0"
+ xtend "^4.0.0"
+
+stream-shift@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.0.tgz#d5c752825e5367e786f78e18e445ea223a155952"
+ integrity sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=
+
+stream-splicer@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/stream-splicer/-/stream-splicer-2.0.0.tgz#1b63be438a133e4b671cc1935197600175910d83"
+ integrity sha1-G2O+Q4oTPktnHMGTUZdgAXWRDYM=
+ dependencies:
+ inherits "^2.0.1"
+ readable-stream "^2.0.2"
+
+string-argv@^0.0.2:
+ version "0.0.2"
+ resolved "https://registry.yarnpkg.com/string-argv/-/string-argv-0.0.2.tgz#dac30408690c21f3c3630a3ff3a05877bdcbd736"
+ integrity sha1-2sMECGkMIfPDYwo/86BYd73L1zY=
+
+string-width@^1.0.0, string-width@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3"
+ integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=
+ dependencies:
+ code-point-at "^1.0.0"
+ is-fullwidth-code-point "^1.0.0"
+ strip-ansi "^3.0.0"
+
+"string-width@^1.0.2 || 2", string-width@^2.0.0, string-width@^2.1.0, string-width@^2.1.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e"
+ integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==
+ dependencies:
+ is-fullwidth-code-point "^2.0.0"
+ strip-ansi "^4.0.0"
+
+string-width@^3.0.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961"
+ integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==
+ dependencies:
+ emoji-regex "^7.0.1"
+ is-fullwidth-code-point "^2.0.0"
+ strip-ansi "^5.1.0"
+
+string@^3.0.1:
+ version "3.3.3"
+ resolved "https://registry.yarnpkg.com/string/-/string-3.3.3.tgz#5ea211cd92d228e184294990a6cc97b366a77cb0"
+ integrity sha1-XqIRzZLSKOGEKUmQpsyXs2anfLA=
+
+string_decoder@^1.1.1:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.2.0.tgz#fe86e738b19544afe70469243b2a1ee9240eae8d"
+ integrity sha512-6YqyX6ZWEYguAxgZzHGL7SsCeGx3V2TtOTqZz1xSTSWnqsbWwbptafNyvf/ACquZUXV3DANr5BDIwNYe1mN42w==
+ dependencies:
+ safe-buffer "~5.1.0"
+
+string_decoder@~0.10.x:
+ version "0.10.31"
+ resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94"
+ integrity sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=
+
+string_decoder@~1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8"
+ integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==
+ dependencies:
+ safe-buffer "~5.1.0"
+
+stringify-entities@^1.0.1:
+ version "1.3.2"
+ resolved "https://registry.yarnpkg.com/stringify-entities/-/stringify-entities-1.3.2.tgz#a98417e5471fd227b3e45d3db1861c11caf668f7"
+ integrity sha512-nrBAQClJAPN2p+uGCVJRPIPakKeKWZ9GtBCmormE7pWOSlHat7+x5A8gx85M7HM5Dt0BP3pP5RhVW77WdbJJ3A==
+ dependencies:
+ character-entities-html4 "^1.0.0"
+ character-entities-legacy "^1.0.0"
+ is-alphanumerical "^1.0.0"
+ is-hexadecimal "^1.0.0"
+
+stringify-object@^3.2.2:
+ version "3.3.0"
+ resolved "https://registry.yarnpkg.com/stringify-object/-/stringify-object-3.3.0.tgz#703065aefca19300d3ce88af4f5b3956d7556629"
+ integrity sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==
+ dependencies:
+ get-own-enumerable-property-symbols "^3.0.0"
+ is-obj "^1.0.1"
+ is-regexp "^1.0.0"
+
+strip-ansi@^3.0.0, strip-ansi@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf"
+ integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=
+ dependencies:
+ ansi-regex "^2.0.0"
+
+strip-ansi@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f"
+ integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8=
+ dependencies:
+ ansi-regex "^3.0.0"
+
+strip-ansi@^5.1.0, strip-ansi@^5.2.0:
+ version "5.2.0"
+ resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae"
+ integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==
+ dependencies:
+ ansi-regex "^4.1.0"
+
+strip-bom@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e"
+ integrity sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=
+ dependencies:
+ is-utf8 "^0.2.0"
+
+strip-bom@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3"
+ integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=
+
+strip-eof@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf"
+ integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=
+
+strip-indent@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-1.0.1.tgz#0c7962a6adefa7bbd4ac366460a638552ae1a0a2"
+ integrity sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=
+ dependencies:
+ get-stdin "^4.0.1"
+
+strip-indent@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-2.0.0.tgz#5ef8db295d01e6ed6cbf7aab96998d7822527b68"
+ integrity sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g=
+
+strip-json-comments@^2.0.0, strip-json-comments@^2.0.1, strip-json-comments@~2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a"
+ integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo=
+
+subarg@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/subarg/-/subarg-1.0.0.tgz#f62cf17581e996b48fc965699f54c06ae268b8d2"
+ integrity sha1-9izxdYHplrSPyWVpn1TAauJouNI=
+ dependencies:
+ minimist "^1.1.0"
+
+sumchecker@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/sumchecker/-/sumchecker-2.0.2.tgz#0f42c10e5d05da5d42eea3e56c3399a37d6c5b3e"
+ integrity sha1-D0LBDl0F2l1C7qPlbDOZo31sWz4=
+ dependencies:
+ debug "^2.2.0"
+
+supports-color@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7"
+ integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=
+
+supports-color@^4.1.0:
+ version "4.5.0"
+ resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.5.0.tgz#be7a0de484dec5c5cddf8b3d59125044912f635b"
+ integrity sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=
+ dependencies:
+ has-flag "^2.0.0"
+
+supports-color@^5.3.0:
+ version "5.5.0"
+ resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f"
+ integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==
+ dependencies:
+ has-flag "^3.0.0"
+
+symbol-observable@1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.0.1.tgz#8340fc4702c3122df5d22288f88283f513d3fdd4"
+ integrity sha1-g0D8RwLDEi310iKI+IKD9RPT/dQ=
+
+symbol-observable@^1.1.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804"
+ integrity sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==
+
+"symbol-tree@>= 3.1.0 < 4.0.0":
+ version "3.2.2"
+ resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.2.tgz#ae27db38f660a7ae2e1c3b7d1bc290819b8519e6"
+ integrity sha1-rifbOPZgp64uHDt9G8KQgZuFGeY=
+
+synchronous-promise@^2.0.5:
+ version "2.0.7"
+ resolved "https://registry.yarnpkg.com/synchronous-promise/-/synchronous-promise-2.0.7.tgz#3574b3d2fae86b145356a4b89103e1577f646fe3"
+ integrity sha512-16GbgwTmFMYFyQMLvtQjvNWh30dsFe1cAW5Fg1wm5+dg84L9Pe36mftsIRU95/W2YsISxsz/xq4VB23sqpgb/A==
+
+syntax-error@^1.1.1:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/syntax-error/-/syntax-error-1.4.0.tgz#2d9d4ff5c064acb711594a3e3b95054ad51d907c"
+ integrity sha512-YPPlu67mdnHGTup2A8ff7BC2Pjq0e0Yp/IyTFN03zWO0RcK07uLcbi7C2KpGR2FvWbaB0+bfE27a+sBKebSo7w==
+ dependencies:
+ acorn-node "^1.2.0"
+
+table@^4.0.3:
+ version "4.0.3"
+ resolved "https://registry.yarnpkg.com/table/-/table-4.0.3.tgz#00b5e2b602f1794b9acaf9ca908a76386a7813bc"
+ integrity sha512-S7rnFITmBH1EnyKcvxBh1LjYeQMmnZtCXSEbHcH6S0NoKit24ZuFO/T1vDcLdYsLQkM188PVVhQmzKIuThNkKg==
+ dependencies:
+ ajv "^6.0.1"
+ ajv-keywords "^3.0.0"
+ chalk "^2.1.0"
+ lodash "^4.17.4"
+ slice-ansi "1.0.0"
+ string-width "^2.1.1"
+
+table@^5.2.3:
+ version "5.2.3"
+ resolved "https://registry.yarnpkg.com/table/-/table-5.2.3.tgz#cde0cc6eb06751c009efab27e8c820ca5b67b7f2"
+ integrity sha512-N2RsDAMvDLvYwFcwbPyF3VmVSSkuF+G1e+8inhBLtHpvwXGw4QRPEZhihQNeEN0i1up6/f6ObCJXNdlRG3YVyQ==
+ dependencies:
+ ajv "^6.9.1"
+ lodash "^4.17.11"
+ slice-ansi "^2.1.0"
+ string-width "^3.0.0"
+
+tar-fs@^1.13.0:
+ version "1.16.3"
+ resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-1.16.3.tgz#966a628841da2c4010406a82167cbd5e0c72d509"
+ integrity sha512-NvCeXpYx7OsmOh8zIOP/ebG55zZmxLE0etfWRbWok+q2Qo8x/vOR/IJT1taADXPe+jsiu9axDb3X4B+iIgNlKw==
+ dependencies:
+ chownr "^1.0.1"
+ mkdirp "^0.5.1"
+ pump "^1.0.0"
+ tar-stream "^1.1.2"
+
+tar-stream@^1.1.2:
+ version "1.6.2"
+ resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-1.6.2.tgz#8ea55dab37972253d9a9af90fdcd559ae435c555"
+ integrity sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A==
+ dependencies:
+ bl "^1.0.0"
+ buffer-alloc "^1.2.0"
+ end-of-stream "^1.0.0"
+ fs-constants "^1.0.0"
+ readable-stream "^2.3.0"
+ to-buffer "^1.1.1"
+ xtend "^4.0.0"
+
+tar@^4, tar@^4.4.7:
+ version "4.4.8"
+ resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.8.tgz#b19eec3fde2a96e64666df9fdb40c5ca1bc3747d"
+ integrity sha512-LzHF64s5chPQQS0IYBn9IN5h3i98c12bo4NCO7e0sGM2llXQ3p2FGC5sdENN4cTW48O915Sh+x+EXx7XW96xYQ==
+ dependencies:
+ chownr "^1.1.1"
+ fs-minipass "^1.2.5"
+ minipass "^2.3.4"
+ minizlib "^1.1.1"
+ mkdirp "^0.5.0"
+ safe-buffer "^5.1.2"
+ yallist "^3.0.2"
+
+temp@^0.8.3:
+ version "0.8.3"
+ resolved "https://registry.yarnpkg.com/temp/-/temp-0.8.3.tgz#e0c6bc4d26b903124410e4fed81103014dfc1f59"
+ integrity sha1-4Ma8TSa5AxJEEOT+2BEDAU38H1k=
+ dependencies:
+ os-tmpdir "^1.0.0"
+ rimraf "~2.2.6"
+
+tempfile@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/tempfile/-/tempfile-1.1.1.tgz#5bcc4eaecc4ab2c707d8bc11d99ccc9a2cb287f2"
+ integrity sha1-W8xOrsxKsscH2LwR2ZzMmiyyh/I=
+ dependencies:
+ os-tmpdir "^1.0.0"
+ uuid "^2.0.1"
+
+term-size@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/term-size/-/term-size-1.2.0.tgz#458b83887f288fc56d6fffbfad262e26638efa69"
+ integrity sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk=
+ dependencies:
+ execa "^0.7.0"
+
+text-extensions@^1.0.0:
+ version "1.9.0"
+ resolved "https://registry.yarnpkg.com/text-extensions/-/text-extensions-1.9.0.tgz#1853e45fee39c945ce6f6c36b2d659b5aabc2a26"
+ integrity sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ==
+
+text-table@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4"
+ integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=
+
+throttleit@0.0.2:
+ version "0.0.2"
+ resolved "https://registry.yarnpkg.com/throttleit/-/throttleit-0.0.2.tgz#cfedf88e60c00dd9697b61fdd2a8343a9b680eaf"
+ integrity sha1-z+34jmDADdlpe2H90qg0OptoDq8=
+
+through2@^2.0.0, through2@^2.0.2, through2@^2.0.3:
+ version "2.0.5"
+ resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd"
+ integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==
+ dependencies:
+ readable-stream "~2.3.6"
+ xtend "~4.0.1"
+
+through2@~0.2.3:
+ version "0.2.3"
+ resolved "https://registry.yarnpkg.com/through2/-/through2-0.2.3.tgz#eb3284da4ea311b6cc8ace3653748a52abf25a3f"
+ integrity sha1-6zKE2k6jEbbMis42U3SKUqvyWj8=
+ dependencies:
+ readable-stream "~1.1.9"
+ xtend "~2.1.1"
+
+through@2, "through@>=2.2.7 <3", through@^2.3.6, through@^2.3.7:
+ version "2.3.8"
+ resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5"
+ integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=
+
+timed-out@^4.0.0:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f"
+ integrity sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=
+
+timers-browserify@^1.0.1:
+ version "1.4.2"
+ resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-1.4.2.tgz#c9c58b575be8407375cb5e2462dacee74359f41d"
+ integrity sha1-ycWLV1voQHN1y14kYtrO50NZ9B0=
+ dependencies:
+ process "~0.11.0"
+
+tmp-promise@^1.0.5:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/tmp-promise/-/tmp-promise-1.0.5.tgz#3208d7fa44758f86a2a4c4060f3c33fea30e8038"
+ integrity sha512-hOabTz9Tp49wCozFwuJe5ISrOqkECm6kzw66XTP23DuzNU7QS/KiZq5LC9Y7QSy8f1rPSLy4bKaViP0OwGI1cA==
+ dependencies:
+ bluebird "^3.5.0"
+ tmp "0.0.33"
+
+tmp@0.0.33, tmp@^0.0.33:
+ version "0.0.33"
+ resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9"
+ integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==
+ dependencies:
+ os-tmpdir "~1.0.2"
+
+to-arraybuffer@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43"
+ integrity sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=
+
+to-buffer@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/to-buffer/-/to-buffer-1.1.1.tgz#493bd48f62d7c43fcded313a03dcadb2e1213a80"
+ integrity sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg==
+
+to-object-path@^0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af"
+ integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=
+ dependencies:
+ kind-of "^3.0.2"
+
+to-regex-range@^2.1.0:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38"
+ integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=
+ dependencies:
+ is-number "^3.0.0"
+ repeat-string "^1.6.1"
+
+to-regex@^3.0.1, to-regex@^3.0.2:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce"
+ integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==
+ dependencies:
+ define-property "^2.0.2"
+ extend-shallow "^3.0.2"
+ regex-not "^1.0.2"
+ safe-regex "^1.1.0"
+
+to-vfile@^2.0.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/to-vfile/-/to-vfile-2.2.0.tgz#342d1705e6df526d569b1fc8bfa29f1f36d6c416"
+ integrity sha512-saGC8/lWdGrEoBMLUtgzhRHWAkQMP8gdldA3MOAUhBwTGEb1RSMVcflHGSx4ZJsdEZ9o1qDBCPp47LCPrbZWow==
+ dependencies:
+ is-buffer "^1.1.4"
+ vfile "^2.0.0"
+ x-is-function "^1.0.4"
+
+toposort@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/toposort/-/toposort-2.0.2.tgz#ae21768175d1559d48bef35420b2f4962f09c330"
+ integrity sha1-riF2gXXRVZ1IvvNUILL0li8JwzA=
+
+tough-cookie@^2.2.0:
+ version "2.5.0"
+ resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2"
+ integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==
+ dependencies:
+ psl "^1.1.28"
+ punycode "^2.1.1"
+
+tough-cookie@~2.4.3:
+ version "2.4.3"
+ resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.4.3.tgz#53f36da3f47783b0925afa06ff9f3b165280f781"
+ integrity sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==
+ dependencies:
+ psl "^1.1.24"
+ punycode "^1.4.1"
+
+tr46@~0.0.1:
+ version "0.0.3"
+ resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a"
+ integrity sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=
+
+trim-newlines@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613"
+ integrity sha1-WIeWa7WCpFA6QetST301ARgVphM=
+
+trim-newlines@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-2.0.0.tgz#b403d0b91be50c331dfc4b82eeceb22c3de16d20"
+ integrity sha1-tAPQuRvlDDMd/EuC7s6yLD3hbSA=
+
+trim-off-newlines@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/trim-off-newlines/-/trim-off-newlines-1.0.1.tgz#9f9ba9d9efa8764c387698bcbfeb2c848f11adb3"
+ integrity sha1-n5up2e+odkw4dpi8v+sshI8RrbM=
+
+trim-trailing-lines@^1.0.0:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/trim-trailing-lines/-/trim-trailing-lines-1.1.1.tgz#e0ec0810fd3c3f1730516b45f49083caaf2774d9"
+ integrity sha512-bWLv9BbWbbd7mlqqs2oQYnLD/U/ZqeJeJwbO0FG2zA1aTq+HTvxfHNKFa/HGCVyJpDiioUYaBhfiT6rgk+l4mg==
+
+trim@0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/trim/-/trim-0.0.1.tgz#5858547f6b290757ee95cccc666fb50084c460dd"
+ integrity sha1-WFhUf2spB1fulczMZm+1AITEYN0=
+
+trough@^1.0.0:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/trough/-/trough-1.0.3.tgz#e29bd1614c6458d44869fc28b255ab7857ef7c24"
+ integrity sha512-fwkLWH+DimvA4YCy+/nvJd61nWQQ2liO/nF/RjkTpiOGi+zxZzVkhb1mvbHIIW4b/8nDsYI8uTmAlc0nNkRMOw==
+
+ts-node@^6.0.3:
+ version "6.2.0"
+ resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-6.2.0.tgz#65a0ae2acce319ea4fd7ac8d7c9f1f90c5da6baf"
+ integrity sha512-ZNT+OEGfUNVMGkpIaDJJ44Zq3Yr0bkU/ugN1PHbU+/01Z7UV1fsELRiTx1KuQNvQ1A3pGh3y25iYF6jXgxV21A==
+ dependencies:
+ arrify "^1.0.0"
+ buffer-from "^1.1.0"
+ diff "^3.1.0"
+ make-error "^1.1.1"
+ minimist "^1.2.0"
+ mkdirp "^0.5.1"
+ source-map-support "^0.5.6"
+ yn "^2.0.0"
+
+tsconfig@^5.0.3:
+ version "5.0.3"
+ resolved "https://registry.yarnpkg.com/tsconfig/-/tsconfig-5.0.3.tgz#5f4278e701800967a8fc383fd19648878f2a6e3a"
+ integrity sha1-X0J45wGACWeo/Dg/0ZZIh48qbjo=
+ dependencies:
+ any-promise "^1.3.0"
+ parse-json "^2.2.0"
+ strip-bom "^2.0.0"
+ strip-json-comments "^2.0.0"
+
+tsify@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/tsify/-/tsify-4.0.1.tgz#b19b0ddf7f184368dbf65839293d2c5a6d48453d"
+ integrity sha512-ClznEI+pmwY5wmD0J7HCSVERwkD+l71ch3Dqyod2JuQLEsFaiNDI+vPjaGadsuVFVvmzgoI7HghrBtWsSmCDHQ==
+ dependencies:
+ convert-source-map "^1.1.0"
+ fs.realpath "^1.0.0"
+ object-assign "^4.1.0"
+ semver "^5.6.0"
+ through2 "^2.0.0"
+ tsconfig "^5.0.3"
+
+tslib@^1.8.1, tslib@^1.9.0:
+ version "1.9.3"
+ resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.3.tgz#d7e4dd79245d85428c4d7e4822a79917954ca286"
+ integrity sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==
+
+tslint@^4.5.1:
+ version "4.5.1"
+ resolved "https://registry.yarnpkg.com/tslint/-/tslint-4.5.1.tgz#05356871bef23a434906734006fc188336ba824b"
+ integrity sha1-BTVocb7yOkNJBnNABvwYgza6gks=
+ dependencies:
+ babel-code-frame "^6.20.0"
+ colors "^1.1.2"
+ diff "^3.0.1"
+ findup-sync "~0.3.0"
+ glob "^7.1.1"
+ optimist "~0.6.0"
+ resolve "^1.1.7"
+ tsutils "^1.1.0"
+ update-notifier "^2.0.0"
+
+tsutils@^1.1.0:
+ version "1.9.1"
+ resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-1.9.1.tgz#b9f9ab44e55af9681831d5f28d0aeeaf5c750cb0"
+ integrity sha1-ufmrROVa+WgYMdXyjQrur1x1DLA=
+
+tsutils@^3.7.0:
+ version "3.10.0"
+ resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.10.0.tgz#6f1c95c94606e098592b0dff06590cf9659227d6"
+ integrity sha512-q20XSMq7jutbGB8luhKKsQldRKWvyBO2BGqni3p4yq8Ys9bEP/xQw3KepKmMRt9gJ4lvQSScrihJrcKdKoSU7Q==
+ dependencies:
+ tslib "^1.8.1"
+
+tty-browserify@0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.1.tgz#3f05251ee17904dfd0677546670db9651682b811"
+ integrity sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw==
+
+tunnel-agent@^0.6.0:
+ version "0.6.0"
+ resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd"
+ integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=
+ dependencies:
+ safe-buffer "^5.0.1"
+
+tweetnacl@^0.14.3, tweetnacl@~0.14.0:
+ version "0.14.5"
+ resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64"
+ integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=
+
+type-check@~0.3.2:
+ version "0.3.2"
+ resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72"
+ integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=
+ dependencies:
+ prelude-ls "~1.1.2"
+
+type-is@~1.6.16:
+ version "1.6.18"
+ resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131"
+ integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==
+ dependencies:
+ media-typer "0.3.0"
+ mime-types "~2.1.24"
+
+typedarray@^0.0.6:
+ version "0.0.6"
+ resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"
+ integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=
+
+typescript@^2.2.1:
+ version "2.9.2"
+ resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.9.2.tgz#1cbf61d05d6b96269244eb6a3bce4bd914e0f00c"
+ integrity sha512-Gr4p6nFNaoufRIY4NMdpQRNmgxVIGMs4Fcu/ujdYk3nAZqk7supzBE9idmvfZIlH/Cuj//dvi+019qEue9lV0w==
+
+typescript@~3.3.3333:
+ version "3.3.4000"
+ resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.3.4000.tgz#76b0f89cfdbf97827e1112d64f283f1151d6adf0"
+ integrity sha512-jjOcCZvpkl2+z7JFn0yBOoLQyLoIkNZAs/fYJkUG6VKy6zLPHJGfQJYFHzibB6GJaF/8QrcECtlQ5cpvRHSMEA==
+
+uc.micro@^1.0.1:
+ version "1.0.6"
+ resolved "https://registry.yarnpkg.com/uc.micro/-/uc.micro-1.0.6.tgz#9c411a802a409a91fc6cf74081baba34b24499ac"
+ integrity sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==
+
+uglify-js@^2.6:
+ version "2.8.29"
+ resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.29.tgz#29c5733148057bb4e1f75df35b7a9cb72e6a59dd"
+ integrity sha1-KcVzMUgFe7Th913zW3qcty5qWd0=
+ dependencies:
+ source-map "~0.5.1"
+ yargs "~3.10.0"
+ optionalDependencies:
+ uglify-to-browserify "~1.0.0"
+
+uglify-js@^3.1.4:
+ version "3.5.9"
+ resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.5.9.tgz#372fbf95939555b1f460b1777d33a67d4a994ac9"
+ integrity sha512-WpT0RqsDtAWPNJK955DEnb6xjymR8Fn0OlK4TT4pS0ASYsVPqr5ELhgwOwLCP5J5vHeJ4xmMmz3DEgdqC10JeQ==
+ dependencies:
+ commander "~2.20.0"
+ source-map "~0.6.1"
+
+uglify-to-browserify@~1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7"
+ integrity sha1-bgkk1r2mta/jSeOabWMoUKD4grc=
+
+umd@^3.0.0:
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/umd/-/umd-3.0.3.tgz#aa9fe653c42b9097678489c01000acb69f0b26cf"
+ integrity sha512-4IcGSufhFshvLNcMCV80UnQVlZ5pMOC8mvNPForqwA4+lzYQuetTESLDQkeLmihq8bRcnpbQa48Wb8Lh16/xow==
+
+undeclared-identifiers@^1.1.2:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/undeclared-identifiers/-/undeclared-identifiers-1.1.3.tgz#9254c1d37bdac0ac2b52de4b6722792d2a91e30f"
+ integrity sha512-pJOW4nxjlmfwKApE4zvxLScM/njmwj/DiUBv7EabwE4O8kRUy+HIwxQtZLBPll/jx1LJyBcqNfB3/cpv9EZwOw==
+ dependencies:
+ acorn-node "^1.3.0"
+ dash-ast "^1.0.0"
+ get-assigned-identifiers "^1.2.0"
+ simple-concat "^1.0.0"
+ xtend "^4.0.1"
+
+unherit@^1.0.4:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/unherit/-/unherit-1.1.1.tgz#132748da3e88eab767e08fabfbb89c5e9d28628c"
+ integrity sha512-+XZuV691Cn4zHsK0vkKYwBEwB74T3IZIcxrgn2E4rKwTfFyI1zCh7X7grwh9Re08fdPlarIdyWgI8aVB3F5A5g==
+ dependencies:
+ inherits "^2.0.1"
+ xtend "^4.0.1"
+
+unified-args@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/unified-args/-/unified-args-4.0.0.tgz#8d9b9b8ad347beb37f430562a62c4d361b42220f"
+ integrity sha1-jZubitNHvrN/QwVipixNNhtCIg8=
+ dependencies:
+ camelcase "^4.0.0"
+ chalk "^2.0.0"
+ chokidar "^1.5.1"
+ minimist "^1.2.0"
+ text-table "^0.2.0"
+ unified-engine "^4.0.0"
+
+unified-engine@^4.0.0:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/unified-engine/-/unified-engine-4.0.1.tgz#9692aa97fd5c4ec36889779e12514bef8e863fc3"
+ integrity sha1-lpKql/1cTsNoiXeeElFL746GP8M=
+ dependencies:
+ concat-stream "^1.5.1"
+ debug "^2.2.0"
+ fault "^1.0.0"
+ fn-name "^2.0.1"
+ glob "^7.0.3"
+ ignore "^3.2.0"
+ is-empty "^1.0.0"
+ is-hidden "^1.0.1"
+ is-object "^1.0.1"
+ js-yaml "^3.6.1"
+ load-plugin "^2.0.0"
+ parse-json "^2.2.0"
+ to-vfile "^2.0.0"
+ trough "^1.0.0"
+ vfile-reporter "^4.0.0"
+ vfile-statistics "^1.1.0"
+ x-is-function "^1.0.4"
+ x-is-string "^0.1.0"
+ xtend "^4.0.1"
+
+unified-lint-rule@^1.0.0:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/unified-lint-rule/-/unified-lint-rule-1.0.3.tgz#e302b0c4a7ac428c0980e049a500e59528001299"
+ integrity sha512-6z+HH3mtlFdj/w3MaQpObrZAd9KRiro370GxBFh13qkV8LYR21lLozA4iQiZPhe7KuX/lHewoGOEgQ4AWrAR3Q==
+ dependencies:
+ wrapped "^1.0.1"
+
+unified-message-control@^1.0.0:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/unified-message-control/-/unified-message-control-1.0.4.tgz#a5e02c07112f78c6687b83a10392c2fba86dc09b"
+ integrity sha512-e1dEtN4Z/TvLn/qHm+xeZpzqhJTtfZusFErk336kkZVpqrJYiV9ptxq+SbRPFMlN0OkjDYHmVJ929KYjsMTo3g==
+ dependencies:
+ trim "0.0.1"
+ unist-util-visit "^1.0.0"
+ vfile-location "^2.0.0"
+
+unified@^6.0.0:
+ version "6.2.0"
+ resolved "https://registry.yarnpkg.com/unified/-/unified-6.2.0.tgz#7fbd630f719126d67d40c644b7e3f617035f6dba"
+ integrity sha512-1k+KPhlVtqmG99RaTbAv/usu85fcSRu3wY8X+vnsEhIxNP5VbVIDiXnLqyKIG+UMdyTg0ZX9EI6k2AfjJkHPtA==
+ dependencies:
+ bail "^1.0.0"
+ extend "^3.0.0"
+ is-plain-obj "^1.1.0"
+ trough "^1.0.0"
+ vfile "^2.0.0"
+ x-is-string "^0.1.0"
+
+union-value@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.0.tgz#5c71c34cb5bad5dcebe3ea0cd08207ba5aa1aea4"
+ integrity sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=
+ dependencies:
+ arr-union "^3.1.0"
+ get-value "^2.0.6"
+ is-extendable "^0.1.1"
+ set-value "^0.4.3"
+
+uniq@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff"
+ integrity sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=
+
+unique-string@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-1.0.0.tgz#9e1057cca851abb93398f8b33ae187b99caec11a"
+ integrity sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo=
+ dependencies:
+ crypto-random-string "^1.0.0"
+
+unist-util-generated@^1.1.0:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/unist-util-generated/-/unist-util-generated-1.1.3.tgz#ca650470aef2fbcc5fe54c465bc26b41ca109e2b"
+ integrity sha512-qlPeDqnQnd84KIqwphzOR+l02cxjDzvEYEBl84EjmKRrX4eUmjyAo8xJv1SCDhJqNjyHRnBMZWNKAiBtXE6hBg==
+
+unist-util-is@^2.1.2:
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/unist-util-is/-/unist-util-is-2.1.2.tgz#1193fa8f2bfbbb82150633f3a8d2eb9a1c1d55db"
+ integrity sha512-YkXBK/H9raAmG7KXck+UUpnKiNmUdB+aBGrknfQ4EreE1banuzrKABx3jP6Z5Z3fMSPMQQmeXBlKpCbMwBkxVw==
+
+unist-util-position@^3.0.0:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/unist-util-position/-/unist-util-position-3.0.2.tgz#80ad4a05efc4ab01a66886cc70493893ba73c5eb"
+ integrity sha512-npmFu92l/+b1Ao6uGP4I1WFz9hsKv7qleZ4aliw6x0RVu6A9A3tAf57NMpFfzQ02jxRtJZuRn+C8xWT7GWnH0g==
+
+unist-util-remove-position@^1.0.0:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/unist-util-remove-position/-/unist-util-remove-position-1.1.2.tgz#86b5dad104d0bbfbeb1db5f5c92f3570575c12cb"
+ integrity sha512-XxoNOBvq1WXRKXxgnSYbtCF76TJrRoe5++pD4cCBsssSiWSnPEktyFrFLE8LTk3JW5mt9hB0Sk5zn4x/JeWY7Q==
+ dependencies:
+ unist-util-visit "^1.1.0"
+
+unist-util-stringify-position@^1.0.0, unist-util-stringify-position@^1.1.1, unist-util-stringify-position@^1.1.2:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/unist-util-stringify-position/-/unist-util-stringify-position-1.1.2.tgz#3f37fcf351279dcbca7480ab5889bb8a832ee1c6"
+ integrity sha512-pNCVrk64LZv1kElr0N1wPiHEUoXNVFERp+mlTg/s9R5Lwg87f9bM/3sQB99w+N9D/qnM9ar3+AKDBwo/gm/iQQ==
+
+unist-util-visit-parents@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/unist-util-visit-parents/-/unist-util-visit-parents-2.0.1.tgz#63fffc8929027bee04bfef7d2cce474f71cb6217"
+ integrity sha512-6B0UTiMfdWql4cQ03gDTCSns+64Zkfo2OCbK31Ov0uMizEz+CJeAp0cgZVb5Fhmcd7Bct2iRNywejT0orpbqUA==
+ dependencies:
+ unist-util-is "^2.1.2"
+
+unist-util-visit@^1.0.0, unist-util-visit@^1.1.0, unist-util-visit@^1.1.1, unist-util-visit@^1.4.0:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/unist-util-visit/-/unist-util-visit-1.4.0.tgz#1cb763647186dc26f5e1df5db6bd1e48b3cc2fb1"
+ integrity sha512-FiGu34ziNsZA3ZUteZxSFaczIjGmksfSgdKqBfOejrrfzyUy5b7YrlzT1Bcvi+djkYDituJDy2XB7tGTeBieKw==
+ dependencies:
+ unist-util-visit-parents "^2.0.0"
+
+universal-user-agent@^2.0.0, universal-user-agent@^2.0.1:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/universal-user-agent/-/universal-user-agent-2.0.3.tgz#9f6f09f9cc33de867bb720d84c08069b14937c6c"
+ integrity sha512-eRHEHhChCBHrZsA4WEhdgiOKgdvgrMIHwnwnqD0r5C6AO8kwKcG7qSku3iXdhvHL3YvsS9ZkSGN8h/hIpoFC8g==
+ dependencies:
+ os-name "^3.0.0"
+
+universalify@^0.1.0:
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66"
+ integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==
+
+unpipe@1.0.0, unpipe@~1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec"
+ integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=
+
+unset-value@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559"
+ integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=
+ dependencies:
+ has-value "^0.3.1"
+ isobject "^3.0.0"
+
+untildify@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/untildify/-/untildify-2.1.0.tgz#17eb2807987f76952e9c0485fc311d06a826a2e0"
+ integrity sha1-F+soB5h/dpUunASF/DEdBqgmouA=
+ dependencies:
+ os-homedir "^1.0.0"
+
+unzip-response@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/unzip-response/-/unzip-response-2.0.1.tgz#d2f0f737d16b0615e72a6935ed04214572d56f97"
+ integrity sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c=
+
+update-check@1.5.1:
+ version "1.5.1"
+ resolved "https://registry.yarnpkg.com/update-check/-/update-check-1.5.1.tgz#24fc52266273cb8684d2f1bf9687c0e52dcf709f"
+ integrity sha512-M3rjq5KwSrWZrm2GVPIQIF+NXpIn5I9mIV67gGoydptQvzRjLp9ZbM6ctFJeNuaWSm5+mNP7aInELjSiLcIw6A==
+ dependencies:
+ registry-auth-token "3.3.2"
+ registry-url "3.1.0"
+
+update-notifier@^2.0.0:
+ version "2.5.0"
+ resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-2.5.0.tgz#d0744593e13f161e406acb1d9408b72cad08aff6"
+ integrity sha512-gwMdhgJHGuj/+wHJJs9e6PcCszpxR1b236igrOkUofGhqJuG+amlIKwApH1IW1WWl7ovZxsX49lMBWLxSdm5Dw==
+ dependencies:
+ boxen "^1.2.1"
+ chalk "^2.0.1"
+ configstore "^3.0.0"
+ import-lazy "^2.1.0"
+ is-ci "^1.0.10"
+ is-installed-globally "^0.1.0"
+ is-npm "^1.0.0"
+ latest-version "^3.0.0"
+ semver-diff "^2.0.0"
+ xdg-basedir "^3.0.0"
+
+uri-js@^4.2.2:
+ version "4.2.2"
+ resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0"
+ integrity sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==
+ dependencies:
+ punycode "^2.1.0"
+
+urix@^0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72"
+ integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=
+
+url-parse-lax@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-1.0.0.tgz#7af8f303645e9bd79a272e7a14ac68bc0609da73"
+ integrity sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=
+ dependencies:
+ prepend-http "^1.0.1"
+
+url-template@^2.0.8:
+ version "2.0.8"
+ resolved "https://registry.yarnpkg.com/url-template/-/url-template-2.0.8.tgz#fc565a3cccbff7730c775f5641f9555791439f21"
+ integrity sha1-/FZaPMy/93MMd19WQflVV5FDnyE=
+
+url@~0.11.0:
+ version "0.11.0"
+ resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1"
+ integrity sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=
+ dependencies:
+ punycode "1.3.2"
+ querystring "0.2.0"
+
+use@^3.1.0:
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f"
+ integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==
+
+util-deprecate@^1.0.1, util-deprecate@~1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
+ integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=
+
+util@0.10.3:
+ version "0.10.3"
+ resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9"
+ integrity sha1-evsa/lCAUkZInj23/g7TeTNqwPk=
+ dependencies:
+ inherits "2.0.1"
+
+util@~0.10.1:
+ version "0.10.4"
+ resolved "https://registry.yarnpkg.com/util/-/util-0.10.4.tgz#3aa0125bfe668a4672de58857d3ace27ecb76901"
+ integrity sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==
+ dependencies:
+ inherits "2.0.3"
+
+utils-merge@1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713"
+ integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=
+
+uuid@^2.0.1:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/uuid/-/uuid-2.0.3.tgz#67e2e863797215530dff318e5bf9dcebfd47b21a"
+ integrity sha1-Z+LoY3lyFVMN/zGOW/nc6/1Hsho=
+
+uuid@^3.3.2:
+ version "3.3.2"
+ resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131"
+ integrity sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==
+
+validate-npm-package-license@^3.0.1:
+ version "3.0.4"
+ resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a"
+ integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==
+ dependencies:
+ spdx-correct "^3.0.0"
+ spdx-expression-parse "^3.0.0"
+
+vary@~1.1.2:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc"
+ integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=
+
+verror@1.10.0:
+ version "1.10.0"
+ resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400"
+ integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=
+ dependencies:
+ assert-plus "^1.0.0"
+ core-util-is "1.0.2"
+ extsprintf "^1.2.0"
+
+vfile-location@^2.0.0, vfile-location@^2.0.1:
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/vfile-location/-/vfile-location-2.0.4.tgz#2a5e7297dd0d9e2da4381464d04acc6b834d3e55"
+ integrity sha512-KRL5uXQPoUKu+NGvQVL4XLORw45W62v4U4gxJ3vRlDfI9QsT4ZN1PNXn/zQpKUulqGDpYuT0XDfp5q9O87/y/w==
+
+vfile-message@^1.0.0:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/vfile-message/-/vfile-message-1.1.1.tgz#5833ae078a1dfa2d96e9647886cd32993ab313e1"
+ integrity sha512-1WmsopSGhWt5laNir+633LszXvZ+Z/lxveBf6yhGsqnQIhlhzooZae7zV6YVM1Sdkw68dtAW3ow0pOdPANugvA==
+ dependencies:
+ unist-util-stringify-position "^1.1.1"
+
+vfile-reporter@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/vfile-reporter/-/vfile-reporter-4.0.0.tgz#ea6f0ae1342f4841573985e05f941736f27de9da"
+ integrity sha1-6m8K4TQvSEFXOYXgX5QXNvJ96do=
+ dependencies:
+ repeat-string "^1.5.0"
+ string-width "^1.0.0"
+ supports-color "^4.1.0"
+ unist-util-stringify-position "^1.0.0"
+ vfile-statistics "^1.1.0"
+
+vfile-statistics@^1.1.0:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/vfile-statistics/-/vfile-statistics-1.1.2.tgz#c50132627e4669a3afa07c64ff1e7aa7695e8151"
+ integrity sha512-16wAC9eEGXdsD35LX9m/iXCRIZyX5LIrDgDtAF92rbATSqsBRbC4n05e0Rj5vt3XRpcKu0UJeWnTxWsSyvNZ+w==
+
+vfile@^2.0.0:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/vfile/-/vfile-2.3.0.tgz#e62d8e72b20e83c324bc6c67278ee272488bf84a"
+ integrity sha512-ASt4mBUHcTpMKD/l5Q+WJXNtshlWxOogYyGYYrg4lt/vuRjC1EFQtlAofL5VmtVNIZJzWYFJjzGWZ0Gw8pzW1w==
+ dependencies:
+ is-buffer "^1.1.4"
+ replace-ext "1.0.0"
+ unist-util-stringify-position "^1.0.0"
+ vfile-message "^1.0.0"
+
+vm-browserify@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.0.tgz#bd76d6a23323e2ca8ffa12028dc04559c75f9019"
+ integrity sha512-iq+S7vZJE60yejDYM0ek6zg308+UZsdtPExWP9VZoCFCz1zkJoXFnAX7aZfd/ZwrkidzdUZL0C/ryW+JwAiIGw==
+
+walk-sync@^0.3.2:
+ version "0.3.4"
+ resolved "https://registry.yarnpkg.com/walk-sync/-/walk-sync-0.3.4.tgz#cf78486cc567d3a96b5b2237c6108017a5ffb9a4"
+ integrity sha512-ttGcuHA/OBnN2pcM6johpYlEms7XpO5/fyKIr48541xXedan4roO8cS1Q2S/zbbjGH/BarYDAMeS2Mi9HE5Tig==
+ dependencies:
+ ensure-posix-path "^1.0.0"
+ matcher-collection "^1.0.0"
+
+wcwidth@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8"
+ integrity sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=
+ dependencies:
+ defaults "^1.0.3"
+
+webidl-conversions@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-2.0.1.tgz#3bf8258f7d318c7443c36f2e169402a1a6703506"
+ integrity sha1-O/glj30xjHRDw28uFpQCoaZwNQY=
+
+whatwg-url-compat@~0.6.5:
+ version "0.6.5"
+ resolved "https://registry.yarnpkg.com/whatwg-url-compat/-/whatwg-url-compat-0.6.5.tgz#00898111af689bb097541cd5a45ca6c8798445bf"
+ integrity sha1-AImBEa9om7CXVBzVpFymyHmERb8=
+ dependencies:
+ tr46 "~0.0.1"
+
+which@^1.2.10, which@^1.2.9:
+ version "1.3.1"
+ resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a"
+ integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==
+ dependencies:
+ isexe "^2.0.0"
+
+wide-align@^1.1.0:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457"
+ integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==
+ dependencies:
+ string-width "^1.0.2 || 2"
+
+widest-line@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-2.0.1.tgz#7438764730ec7ef4381ce4df82fb98a53142a3fc"
+ integrity sha512-Ba5m9/Fa4Xt9eb2ELXt77JxVDV8w7qQrH0zS/TWSJdLyAwQjWoOzpzj5lwVftDz6n/EOu3tNACS84v509qwnJA==
+ dependencies:
+ string-width "^2.1.1"
+
+window-size@0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d"
+ integrity sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=
+
+windows-release@^3.1.0:
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/windows-release/-/windows-release-3.2.0.tgz#8122dad5afc303d833422380680a79cdfa91785f"
+ integrity sha512-QTlz2hKLrdqukrsapKsINzqMgOUpQW268eJ0OaOpJN32h272waxR9fkB9VoWRtK7uKHG5EHJcTXQBD8XZVJkFA==
+ dependencies:
+ execa "^1.0.0"
+
+wordwrap@0.0.2:
+ version "0.0.2"
+ resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f"
+ integrity sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=
+
+wordwrap@~0.0.2:
+ version "0.0.3"
+ resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107"
+ integrity sha1-o9XabNXAvAAI03I0u68b7WMFkQc=
+
+wordwrap@~1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb"
+ integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=
+
+wrap-ansi@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-3.0.1.tgz#288a04d87eda5c286e060dfe8f135ce8d007f8ba"
+ integrity sha1-KIoE2H7aXChuBg3+jxNc6NAH+Lo=
+ dependencies:
+ string-width "^2.1.1"
+ strip-ansi "^4.0.0"
+
+wrapped@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/wrapped/-/wrapped-1.0.1.tgz#c783d9d807b273e9b01e851680a938c87c907242"
+ integrity sha1-x4PZ2Aeyc+mwHoUWgKk4yHyQckI=
+ dependencies:
+ co "3.1.0"
+ sliced "^1.0.1"
+
+wrappy@1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
+ integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=
+
+write-file-atomic@^2.0.0:
+ version "2.4.2"
+ resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.4.2.tgz#a7181706dfba17855d221140a9c06e15fcdd87b9"
+ integrity sha512-s0b6vB3xIVRLWywa6X9TOMA7k9zio0TMOsl9ZnDkliA/cfJlpHXAscj0gbHVJiTdIuAYpIyqS5GW91fqm6gG5g==
+ dependencies:
+ graceful-fs "^4.1.11"
+ imurmurhash "^0.1.4"
+ signal-exit "^3.0.2"
+
+write@1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/write/-/write-1.0.3.tgz#0800e14523b923a387e415123c865616aae0f5c3"
+ integrity sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==
+ dependencies:
+ mkdirp "^0.5.1"
+
+write@^0.2.1:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/write/-/write-0.2.1.tgz#5fc03828e264cea3fe91455476f7a3c566cb0757"
+ integrity sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=
+ dependencies:
+ mkdirp "^0.5.1"
+
+x-is-function@^1.0.4:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/x-is-function/-/x-is-function-1.0.4.tgz#5d294dc3d268cbdd062580e0c5df77a391d1fa1e"
+ integrity sha1-XSlNw9Joy90GJYDgxd93o5HR+h4=
+
+x-is-string@^0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/x-is-string/-/x-is-string-0.1.0.tgz#474b50865af3a49a9c4657f05acd145458f77d82"
+ integrity sha1-R0tQhlrzpJqcRlfwWs0UVFj3fYI=
+
+xdg-basedir@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-3.0.0.tgz#496b2cc109eca8dbacfe2dc72b603c17c5870ad4"
+ integrity sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ=
+
+"xml-name-validator@>= 2.0.1 < 3.0.0":
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-2.0.1.tgz#4d8b8f1eccd3419aa362061becef515e1e559635"
+ integrity sha1-TYuPHszTQZqjYgYb7O9RXh5VljU=
+
+xmlbuilder@^9.0.7:
+ version "9.0.7"
+ resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-9.0.7.tgz#132ee63d2ec5565c557e20f4c22df9aca686b10d"
+ integrity sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=
+
+xmldom@0.1.x:
+ version "0.1.27"
+ resolved "https://registry.yarnpkg.com/xmldom/-/xmldom-0.1.27.tgz#d501f97b3bdb403af8ef9ecc20573187aadac0e9"
+ integrity sha1-1QH5ezvbQDr4757MIFcxh6rawOk=
+
+xregexp@4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/xregexp/-/xregexp-4.0.0.tgz#e698189de49dd2a18cc5687b05e17c8e43943020"
+ integrity sha512-PHyM+sQouu7xspQQwELlGwwd05mXUFqwFYfqPO0cC7x4fxyHnnuetmQr6CjJiafIDoH4MogHb9dOoJzR/Y4rFg==
+
+xtend@^4.0.0, xtend@^4.0.1, xtend@~4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af"
+ integrity sha1-pcbVMr5lbiPbgg77lDofBJmNY68=
+
+xtend@~2.1.1:
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/xtend/-/xtend-2.1.2.tgz#6efecc2a4dad8e6962c4901b337ce7ba87b5d28b"
+ integrity sha1-bv7MKk2tjmlixJAbM3znuoe10os=
+ dependencies:
+ object-keys "~0.4.0"
+
+yallist@^2.1.2:
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52"
+ integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=
+
+yallist@^3.0.0, yallist@^3.0.2:
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.3.tgz#b4b049e314be545e3ce802236d6cd22cd91c3de9"
+ integrity sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==
+
+yargs@~3.10.0:
+ version "3.10.0"
+ resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1"
+ integrity sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=
+ dependencies:
+ camelcase "^1.0.2"
+ cliui "^2.1.0"
+ decamelize "^1.0.0"
+ window-size "0.1.0"
+
+yn@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/yn/-/yn-2.0.0.tgz#e5adabc8acf408f6385fc76495684c88e6af689a"
+ integrity sha1-5a2ryKz0CPY4X8dklWhMiOavaJo=
+
+yup@^0.26.10:
+ version "0.26.10"
+ resolved "https://registry.yarnpkg.com/yup/-/yup-0.26.10.tgz#3545839663289038faf25facfc07e11fd67c0cb1"
+ integrity sha512-keuNEbNSnsOTOuGCt3UJW69jDE3O4P+UHAakO7vSeFMnjaitcmlbij/a3oNb9g1Y1KvSKH/7O1R2PQ4m4TRylw==
+ dependencies:
+ "@babel/runtime" "7.0.0"
+ fn-name "~2.0.1"
+ lodash "^4.17.10"
+ property-expr "^1.5.0"
+ synchronous-promise "^2.0.5"
+ toposort "^2.0.2"
diff --git a/devel/electron6/pkg-descr b/devel/electron6/pkg-descr
new file mode 100644
index 000000000000..bb5485e9e735
--- /dev/null
+++ b/devel/electron6/pkg-descr
@@ -0,0 +1,10 @@
+Build cross platform desktop apps with JavaScript, HTML, and CSS.
+
+It's easier than you think.
+
+If you can build a website, you can build a desktop app. Electron is a
+framework for creating native applications with web technologies like
+JavaScript, HTML, and CSS. It takes care of the hard parts so you can
+focus on the core of your application.
+
+WWW: https://electronjs.org/
diff --git a/devel/electron6/pkg-plist b/devel/electron6/pkg-plist
new file mode 100644
index 000000000000..73456e413aad
--- /dev/null
+++ b/devel/electron6/pkg-plist
@@ -0,0 +1,124 @@
+bin/electron%%ELECTRON_VER_MAJOR%%
+%%DATADIR%%/LICENSE
+%%DATADIR%%/LICENSES.chromium.html
+%%DATADIR%%/chrome_100_percent.pak
+%%DATADIR%%/chrome_200_percent.pak
+%%DRIVER%%%%DATADIR%%/chromedriver
+%%DATADIR%%/electron
+%%DATADIR%%/icudtl.dat
+%%DATADIR%%/libEGL.so
+%%DATADIR%%/libGLESv2.so
+%%DATADIR%%/locales/am.pak
+%%DATADIR%%/locales/ar.pak
+%%DATADIR%%/locales/bg.pak
+%%DATADIR%%/locales/bn.pak
+%%DATADIR%%/locales/ca.pak
+%%DATADIR%%/locales/cs.pak
+%%DATADIR%%/locales/da.pak
+%%DATADIR%%/locales/de.pak
+%%DATADIR%%/locales/el.pak
+%%DATADIR%%/locales/en-GB.pak
+%%DATADIR%%/locales/en-US.pak
+%%DATADIR%%/locales/es-419.pak
+%%DATADIR%%/locales/es.pak
+%%DATADIR%%/locales/et.pak
+%%DATADIR%%/locales/fa.pak
+%%DATADIR%%/locales/fi.pak
+%%DATADIR%%/locales/fil.pak
+%%DATADIR%%/locales/fr.pak
+%%DATADIR%%/locales/gu.pak
+%%DATADIR%%/locales/he.pak
+%%DATADIR%%/locales/hi.pak
+%%DATADIR%%/locales/hr.pak
+%%DATADIR%%/locales/hu.pak
+%%DATADIR%%/locales/id.pak
+%%DATADIR%%/locales/it.pak
+%%DATADIR%%/locales/ja.pak
+%%DATADIR%%/locales/kn.pak
+%%DATADIR%%/locales/ko.pak
+%%DATADIR%%/locales/lt.pak
+%%DATADIR%%/locales/lv.pak
+%%DATADIR%%/locales/ml.pak
+%%DATADIR%%/locales/mr.pak
+%%DATADIR%%/locales/ms.pak
+%%DATADIR%%/locales/nb.pak
+%%DATADIR%%/locales/nl.pak
+%%DATADIR%%/locales/pl.pak
+%%DATADIR%%/locales/pt-BR.pak
+%%DATADIR%%/locales/pt-PT.pak
+%%DATADIR%%/locales/ro.pak
+%%DATADIR%%/locales/ru.pak
+%%DATADIR%%/locales/sk.pak
+%%DATADIR%%/locales/sl.pak
+%%DATADIR%%/locales/sr.pak
+%%DATADIR%%/locales/sv.pak
+%%DATADIR%%/locales/sw.pak
+%%DATADIR%%/locales/ta.pak
+%%DATADIR%%/locales/te.pak
+%%DATADIR%%/locales/th.pak
+%%DATADIR%%/locales/tr.pak
+%%DATADIR%%/locales/uk.pak
+%%DATADIR%%/locales/vi.pak
+%%DATADIR%%/locales/zh-CN.pak
+%%DATADIR%%/locales/zh-TW.pak
+%%DATADIR%%/mksnapshot
+%%DATADIR%%/natives_blob.bin
+%%DATADIR%%/node_headers/include/node/common.gypi
+%%DATADIR%%/node_headers/include/node/config.gypi
+%%DATADIR%%/node_headers/include/node/js_native_api.h
+%%DATADIR%%/node_headers/include/node/js_native_api_types.h
+%%DATADIR%%/node_headers/include/node/libplatform/libplatform-export.h
+%%DATADIR%%/node_headers/include/node/libplatform/libplatform.h
+%%DATADIR%%/node_headers/include/node/libplatform/v8-tracing.h
+%%DATADIR%%/node_headers/include/node/node.h
+%%DATADIR%%/node_headers/include/node/node_api.h
+%%DATADIR%%/node_headers/include/node/node_api_types.h
+%%DATADIR%%/node_headers/include/node/node_buffer.h
+%%DATADIR%%/node_headers/include/node/node_object_wrap.h
+%%DATADIR%%/node_headers/include/node/node_version.h
+%%DATADIR%%/node_headers/include/node/uv.h
+%%DATADIR%%/node_headers/include/node/uv/aix.h
+%%DATADIR%%/node_headers/include/node/uv/android-ifaddrs.h
+%%DATADIR%%/node_headers/include/node/uv/bsd.h
+%%DATADIR%%/node_headers/include/node/uv/darwin.h
+%%DATADIR%%/node_headers/include/node/uv/errno.h
+%%DATADIR%%/node_headers/include/node/uv/linux.h
+%%DATADIR%%/node_headers/include/node/uv/os390.h
+%%DATADIR%%/node_headers/include/node/uv/posix.h
+%%DATADIR%%/node_headers/include/node/uv/stdint-msvc2008.h
+%%DATADIR%%/node_headers/include/node/uv/sunos.h
+%%DATADIR%%/node_headers/include/node/uv/threadpool.h
+%%DATADIR%%/node_headers/include/node/uv/tree.h
+%%DATADIR%%/node_headers/include/node/uv/unix.h
+%%DATADIR%%/node_headers/include/node/uv/version.h
+%%DATADIR%%/node_headers/include/node/uv/win.h
+%%DATADIR%%/node_headers/include/node/v8-internal.h
+%%DATADIR%%/node_headers/include/node/v8-platform.h
+%%DATADIR%%/node_headers/include/node/v8-profiler.h
+%%DATADIR%%/node_headers/include/node/v8-testing.h
+%%DATADIR%%/node_headers/include/node/v8-util.h
+%%DATADIR%%/node_headers/include/node/v8-value-serializer-version.h
+%%DATADIR%%/node_headers/include/node/v8-version-string.h
+%%DATADIR%%/node_headers/include/node/v8-version.h
+%%DATADIR%%/node_headers/include/node/v8-wasm-trap-handler-posix.h
+%%DATADIR%%/node_headers/include/node/v8-wasm-trap-handler-win.h
+%%DATADIR%%/node_headers/include/node/v8.h
+%%DATADIR%%/node_headers/include/node/v8config.h
+%%DATADIR%%/node_headers/include/node/zconf.h
+%%DATADIR%%/node_headers/include/node/zlib.h
+%%DIST%%%%DATADIR%%/releases/SHASUMS256.txt
+%%DIST%%%%AMD64%%%%DATADIR%%/releases/chromedriver-v%%ELECTRON_VER%%-freebsd-x64.zip
+%%DIST%%%%I386%%%%DATADIR%%/releases/chromedriver-v%%ELECTRON_VER%%-freebsd-ia32.zip
+%%DIST%%%%AMD64%%%%DATADIR%%/releases/electron-v%%ELECTRON_VER%%-freebsd-x64.zip
+%%DIST%%%%I386%%%%DATADIR%%/releases/electron-v%%ELECTRON_VER%%-freebsd-ia32.zip
+%%DIST%%%%AMD64%%%%DATADIR%%/releases/mksnapshot-v%%ELECTRON_VER%%-freebsd-x64.zip
+%%DIST%%%%I386%%%%DATADIR%%/releases/mksnapshot-v%%ELECTRON_VER%%-freebsd-ia32.zip
+%%DATADIR%%/resources.pak
+%%DATADIR%%/resources/default_app.asar
+%%DATADIR%%/resources/electron.asar
+%%DATADIR%%/snapshot_blob.bin
+%%DATADIR%%/swiftshader/libEGL.so
+%%DATADIR%%/swiftshader/libGLESv2.so
+%%DATADIR%%/v8_context_snapshot.bin
+%%DATADIR%%/v8_context_snapshot_generator
+%%DATADIR%%/version
diff --git a/devel/electron7/Makefile b/devel/electron7/Makefile
new file mode 100644
index 000000000000..ac9f6f120b5c
--- /dev/null
+++ b/devel/electron7/Makefile
@@ -0,0 +1,305 @@
+# $FreeBSD$
+
+PORTNAME= electron
+DISTVERSIONPREFIX= v
+DISTVERSION= ${ELECTRON_VER:S/-beta./.b/}
+PORTREVISION= 1
+CATEGORIES= devel java
+MASTER_SITES= https://github.com/tagattie/FreeBSD-Electron/releases/download/v7.1.5/:chromium \
+ https://commondatastorage.googleapis.com/chromium-browser-official/:chromium_official \
+ https://commondatastorage.googleapis.com/chromium-nodejs/:chromium_node \
+ https://commondatastorage.googleapis.com/chromium-fonts/:chromium_testfonts
+PKGNAMESUFFIX= ${ELECTRON_VER_MAJOR}
+DISTFILES= chromium-${CHROMIUM_VER}${EXTRACT_SUFX}:chromium \
+ chromium-${CHROMIUM_OFFICIAL_VER}${EXTRACT_SUFX}:chromium_official \
+ ${CHROMIUM_NODE_MODULES_HASH}:chromium_node \
+ ${CHROMIUM_TEST_FONTS_HASH}:chromium_testfonts \
+ electron-yarn-cache-${ELECTRON_VER}${EXTRACT_SUFX}:prefetch
+DIST_SUBDIR= ${PORTNAME}
+
+MAINTAINER= tagattie@FreeBSD.org
+COMMENT= Build cross-platform desktop apps with JavaScript, HTML, and CSS
+
+LICENSE= MIT
+LICENSE_FILE= ${WRKSRC}/electron/LICENSE
+
+FETCH_DEPENDS= yarn-node${NODE_VER_MAJOR}>0:www/yarn-node${NODE_VER_MAJOR}
+EXTRACT_DEPENDS= yarn-node${NODE_VER_MAJOR}>0:www/yarn-node${NODE_VER_MAJOR}
+PATCH_DEPENDS= git:devel/git
+BUILD_DEPENDS= ${LOCALBASE}/bin/ar:devel/binutils \
+ gperf:devel/gperf \
+ yasm:devel/yasm \
+ ${LOCALBASE}/include/linux/videodev2.h:multimedia/v4l_compat \
+ node${NODE_VER_MAJOR}>0:www/node${NODE_VER_MAJOR} \
+ npm-node${NODE_VER_MAJOR}>0:www/npm-node${NODE_VER_MAJOR}
+LIB_DEPENDS= libatk-bridge-2.0.so:accessibility/at-spi2-atk \
+ libatspi.so:accessibility/at-spi2-core \
+ libsnappy.so:archivers/snappy \
+ libFLAC.so:audio/flac \
+ libopus.so:audio/opus \
+ libdbus-1.so:devel/dbus \
+ libnotify.so:devel/libnotify \
+ libpci.so:devel/libpci \
+ libnspr4.so:devel/nspr \
+ libre2.so:devel/re2 \
+ libdrm.so:graphics/libdrm \
+ libwebp.so:graphics/webp \
+ libavcodec.so:multimedia/ffmpeg \
+ libopenh264.so:multimedia/openh264 \
+ libfreetype.so:print/freetype2 \
+ libharfbuzz.so:print/harfbuzz \
+ libsecret-1.so:security/libsecret \
+ libnss3.so:security/nss \
+ libexpat.so:textproc/expat2 \
+ libfontconfig.so:x11-fonts/fontconfig
+RUN_DEPENDS= xdg-open:devel/xdg-utils
+TEST_DEPENDS= git:devel/git \
+ ${PYTHON_PKGNAMEPREFIX}python-dbusmock>0:devel/py-python-dbusmock@${PY_FLAVOR} \
+ npm-node${NODE_VER_MAJOR}>0:www/npm-node${NODE_VER_MAJOR}
+
+USES= bison dos2unix gettext-tools gl gnome jpeg localbase:ldflags \
+ ninja pkgconfig python:2.7,build,test tar:xz xorg
+
+USE_GITHUB= yes
+GH_TAGNAME= ${DISTVERSIONPREFIX}${ELECTRON_VER}
+GH_TUPLE= nodejs:node:v${NODE_VER}:node \
+ nodejs:nan:${NAN_VER}:nan
+
+# Official chromium version containing "gn" which is known to work
+CHROMIUM_OFFICIAL_VER= 78.0.3904.108
+# See ${WRKSRC}/electron/DEPS for CHROMIUM_VER
+CHROMIUM_VER= 78.0.3904.130
+# See ${WRKSRC}/third_party/node/node_modules.tar.gz.sha1 for CHROMIUM_NODE_MODULES_HASH
+CHROMIUM_NODE_MODULES_HASH= ab7f28fee456b5af5fbd3fcb5bcc7c61420788c9
+# See ${WRKSRC}/third_party/test_fonts/test_fonts.tar.gz.sha1 for CHROMIUM_TEST_FONTS_HASH
+CHROMIUM_TEST_FONTS_HASH= a22de844e32a3f720d219e3911c3da3478039f89
+# See ${WRKSRC}/electron/DEPS for NODE_VER
+NODE_VER= 12.8.1
+NODE_VER_MAJOR= ${NODE_VER:C/\..*$//}
+# See ${WRKSRC}/electron/DEPS for NAN_VER
+NAN_VER= 2ee313aaca52e2b478965ac50eb5082520380d1b
+
+NO_WRKSUBDIR= yes
+WRKSRC_SUBDIR= src
+
+DATADIR= ${PREFIX}/share/${PORTNAME}${PKGNAMESUFFIX}
+
+DOS2UNIX_FILES= third_party/skia/third_party/vulkanmemoryallocator/include/vk_mem_alloc.h
+BINARY_ALIAS= python=${PYTHON_CMD}
+
+USE_XORG= x11 xcb xcomposite xcursor xdamage xext xfixes xi xrandr \
+ xrender xscrnsaver xtst
+USE_GL= gl glesv2
+USE_GNOME= atk cairo pango gdkpixbuf2 gtk30 libxml2 libxslt
+USE_JAVA= yes
+JAVA_VERSION= 1.8
+JAVA_BUILD= yes
+
+USE_LDCONFIG= ${DATADIR}
+
+GN_ARGS+= clang_use_chrome_plugins=false \
+ enable_hangout_services_extension=true \
+ enable_nacl=false \
+ enable_one_click_signin=true \
+ enable_remoting=false \
+ fieldtrial_testing_like_official_build=true \
+ is_clang=true \
+ toolkit_views=true \
+ treat_warnings_as_errors=false \
+ use_allocator="none" \
+ use_allocator_shim=false \
+ use_aura=true \
+ use_bundled_fontconfig=false \
+ use_custom_libcxx=false \
+ use_gnome_keyring=false \
+ use_jumbo_build=true \
+ use_lld=true \
+ use_sysroot=false \
+ use_system_freetype=true \
+ use_system_harfbuzz=true \
+ use_system_libjpeg=true \
+ extra_cxxflags="${CXXFLAGS}" \
+ extra_ldflags="${LDFLAGS}"
+GN_BOOTSTRAP_FLAGS= --no-clean --no-rebuild --skip-generate-buildfiles
+
+ALL_TARGET= electron third_party/electron_node:headers
+MAKE_ARGS= -C out/${BUILDTYPE}
+MAKE_ENV+= C_INCLUDE_PATH=${LOCALBASE}/include \
+ CPLUS_INCLUDE_PATH=${LOCALBASE}/include
+
+OPTIONS_DEFINE= CUPS DEBUG DIST DRIVER KERBEROS
+DIST_DESC= Build distribution zip files
+DRIVER_DESC= Install chromedriver
+OPTIONS_GROUP= AUDIO
+OPTIONS_GROUP_AUDIO= ALSA PULSEAUDIO
+OPTIONS_DEFAULT= CUPS DRIVER KERBEROS ALSA
+OPTIONS_SUB= yes
+
+ALSA_LIB_DEPENDS= libasound.so:audio/alsa-lib
+ALSA_RUN_DEPENDS= ${LOCALBASE}/lib/alsa-lib/libasound_module_pcm_oss.so:audio/alsa-plugins
+ALSA_VARS= GN_ARGS+=use_alsa=true
+ALSA_VARS_OFF= GN_ARGS+=use_alsa=false
+
+CUPS_LIB_DEPENDS= libcups.so:print/cups
+CUPS_VARS= GN_ARGS+=use_cups=true
+CUPS_VARS_OFF= GN_ARGS+=use_cups=false
+
+DEBUG_VARS= BUILDTYPE=Debug \
+ GN_ARGS+=is_component_build=false
+DEBUG_VARS_OFF= BUILDTYPE=Release
+
+DIST_IMPLIES= DRIVER
+
+DRIVER_ALL_TARGET= chromedriver
+
+KERBEROS_VARS= GN_ARGS+=use_kerberos=true
+KERBEROS_VARS_OFF= GN_ARGS+=use_kerberos=false
+
+PULSEAUDIO_LIB_DEPENDS= libpulse.so:audio/pulseaudio
+PULSEAUDIO_VARS= GN_ARGS+=use_pulseaudio=true
+PULSEAUDIO_VARS_OFF= GN_ARGS+=use_pulseaudio=false
+
+POST_BUILD_TARGETS= licenses version
+POST_BUILD_DIST_TARGETS= electron_dist_zip electron_chromedriver_zip electron_mksnapshot_zip
+
+YARN_TIMESTAMP= 1591165014
+
+PLIST_SUB= ELECTRON_VER=${ELECTRON_VER} \
+ ELECTRON_VER_MAJOR=${ELECTRON_VER_MAJOR}
+
+.include "Makefile.version"
+.include <bsd.port.pre.mk>
+
+.if ${ARCH} == "amd64"
+PLIST_SUB+= AMD64=""
+.else
+PLIST_SUB+= AMD64="@comment "
+.endif
+
+.if ${ARCH} == "i386"
+PLIST_SUB+= I386=""
+.else
+PLIST_SUB+= I386="@comment "
+.endif
+
+pre-fetch:
+ @${MKDIR} ${DISTDIR}/${DIST_SUBDIR}
+ if [ ! -f ${DISTDIR}/${DIST_SUBDIR}/electron-yarn-cache-${ELECTRON_VER}${EXTRACT_SUFX} ]; \
+ then ${MKDIR} ${WRKDIR}; \
+ ${ECHO_CMD} 'yarn-offline-mirror "./yarn-offline-cache"' >> \
+ ${WRKDIR}/.yarnrc; \
+ ${CP} ${FILESDIR}/package.json ${FILESDIR}/yarn.lock ${WRKDIR}; \
+ cd ${WRKDIR} && ${SETENV} HOME=${WRKDIR} XDG_CACHE_HOME=${WRKDIR}/.cache \
+ yarn --frozen-lockfile --ignore-scripts; \
+ ${MTREE_CMD} -cbnSp yarn-offline-cache | ${MTREE_CMD} -C | ${SED} \
+ -e 's:time=[0-9.]*:time=${YARN_TIMESTAMP}.000000000:' \
+ -e 's:\([gu]id\)=[0-9]*:\1=0:g' \
+ -e 's:flags=.*:flags=none:' \
+ -e 's:^\.:./yarn-offline-cache:' > yarn-offline-cache.mtree; \
+ ${TAR} cJf ${DISTDIR}/${DIST_SUBDIR}/electron-yarn-cache-${ELECTRON_VER}${EXTRACT_SUFX} \
+ @yarn-offline-cache.mtree; \
+ ${RM} -r ${WRKDIR}; \
+ fi
+
+post-extract:
+ ${MV} ${WRKDIR}/${PORTNAME}-${ELECTRON_VER}/chromium-${CHROMIUM_VER} ${WRKSRC}
+ ${RM} -r ${WRKSRC}/tools/gn
+ ${MV} ${WRKDIR}/${PORTNAME}-${ELECTRON_VER}/chromium-${CHROMIUM_OFFICIAL_VER}/tools/gn \
+ ${WRKSRC}/tools/gn
+ ${MV} ${WRKDIR}/${PORTNAME}-${ELECTRON_VER}/${PORTNAME}-${ELECTRON_VER} ${WRKSRC}/electron
+ ${MV} ${WRKDIR}/${PORTNAME}-${ELECTRON_VER}/${GH_PROJECT_nan}-${NAN_VER} \
+ ${WRKSRC}/third_party/nan
+ ${MV} ${WRKDIR}/${PORTNAME}-${ELECTRON_VER}/${GH_PROJECT_node}-${NODE_VER} \
+ ${WRKSRC}/third_party/electron_node
+ ${MV} ${WRKDIR}/${PORTNAME}-${ELECTRON_VER}/yarn-offline-cache ${WRKDIR}
+ ${ECHO_CMD} 'yarn-offline-mirror "../../../yarn-offline-cache"' >> ${WRKSRC}/electron/.yarnrc
+ cd ${WRKSRC}/electron && \
+ ${SETENV} HOME=${WRKDIR} XDG_CACHE_HOME=${WRKDIR}/.cache yarn --frozen-lockfile --offline
+ ${MV} ${WRKDIR}/${PORTNAME}-${ELECTRON_VER}/node_modules ${WRKSRC}/third_party/node
+ ${MV} ${WRKDIR}/${PORTNAME}-${ELECTRON_VER}/test_fonts ${WRKSRC}/third_party/test_fonts
+
+pre-patch:
+ ${SH} ${FILESDIR}/apply-electron-patches.sh ${WRKSRC}
+ # ${FIND} ${WRKSRC} -type f -name '*.orig' -print -delete
+ # ${FIND} ${WRKSRC} -type f -name '*~' -print -delete
+
+pre-configure:
+ # We used to remove bundled libraries to be sure that chromium uses
+ # system libraries and not shipped ones.
+ # cd ${WRKSRC} && ${PYTHON_CMD} \
+ #./build/linux/unbundle/remove_bundled_libraries.py [list of preserved]
+ cd ${WRKSRC} && ${SETENV} ${CONFIGURE_ENV} ${PYTHON_CMD} \
+ ./build/linux/unbundle/replace_gn_files.py --system-libraries \
+ ffmpeg flac freetype harfbuzz-ng libdrm libusb libwebp libxml \
+ libxslt openh264 opus snappy yasm || ${FALSE}
+
+do-configure:
+ # GN generator bootstrapping and generating ninja files
+ cd ${WRKSRC} && ${SETENV} ${CONFIGURE_ENV} CC=${CC} CXX=${CXX} LD=${CXX} \
+ READELF=${READELF} AR=${AR} NM=${NM} ${PYTHON_CMD} \
+ ./tools/gn/bootstrap/bootstrap.py ${GN_BOOTSTRAP_FLAGS}
+ cd ${WRKSRC} && ${SETENV} ${CONFIGURE_ENV} ./out/${BUILDTYPE}/gn gen out/${BUILDTYPE} \
+ --args='import("//electron/build/args/${BUILDTYPE:tl}.gn") ${GN_ARGS}'
+ # Setup nodejs dependency
+ ${MKDIR} ${WRKSRC}/third_party/node/freebsd/node-freebsd-x64/bin
+ ${LN} -sf ${LOCALBASE}/bin/node ${WRKSRC}/third_party/node/freebsd/node-freebsd-x64/bin/node
+ # Setup java dependency
+ ${MKDIR} ${WRKDIR}/bin
+ ${LN} -sf ${LOCALBASE}/openjdk8/bin/java ${WRKDIR}/bin/java
+
+post-build:
+ cd ${WRKSRC} && ${SETENV} ${MAKE_ENV} \
+ ${MAKE_CMD} ${MAKE_ARGS} ${POST_BUILD_TARGETS}
+
+post-build-DIST-on:
+ cd ${WRKSRC} && ${SETENV} ${MAKE_ENV} \
+ ${MAKE_CMD} ${MAKE_ARGS} ${POST_BUILD_DIST_TARGETS}
+ cd ${WRKSRC}/out/${BUILDTYPE} && \
+ ${CP} chromedriver.zip chromedriver-v${ELECTRON_VER}-freebsd-${ARCH:S/amd64/x64/:S/i386/ia32/}.zip && \
+ ${CP} dist.zip electron-v${ELECTRON_VER}-freebsd-${ARCH:S/amd64/x64/:S/i386/ia32/}.zip && \
+ ${CP} mksnapshot.zip mksnapshot-v${ELECTRON_VER}-freebsd-${ARCH:S/amd64/x64/:S/i386/ia32/}.zip && \
+ ${SHA256} -r *-v${ELECTRON_VER}-freebsd-*.zip | ${SED} -e 's/ / */' > SHASUMS256.txt
+
+do-install:
+ ${MKDIR} ${STAGEDIR}${DATADIR}
+.for f in electron mksnapshot v8_context_snapshot_generator
+ ${INSTALL_PROGRAM} ${WRKSRC}/out/${BUILDTYPE}/${f} ${STAGEDIR}${DATADIR}
+.endfor
+.for f in libEGL.so libGLESv2.so
+ ${INSTALL_LIB} ${WRKSRC}/out/${BUILDTYPE}/${f} ${STAGEDIR}${DATADIR}
+.endfor
+ ${MKDIR} ${STAGEDIR}${DATADIR}/swiftshader
+.for f in libEGL.so libGLESv2.so libvk_swiftshader.so
+ ${INSTALL_LIB} ${WRKSRC}/out/${BUILDTYPE}/swiftshader/${f} ${STAGEDIR}${DATADIR}/swiftshader
+.endfor
+.for f in LICENSE LICENSES.chromium.html icudtl.dat natives_blob.bin snapshot_blob.bin v8_context_snapshot.bin version
+ ${INSTALL_DATA} ${WRKSRC}/out/${BUILDTYPE}/${f} ${STAGEDIR}${DATADIR}
+.endfor
+.for f in chrome_100_percent.pak chrome_200_percent.pak resources.pak
+ ${INSTALL_DATA} ${WRKSRC}/out/${BUILDTYPE}/${f} ${STAGEDIR}${DATADIR}
+.endfor
+ ${MKDIR} ${STAGEDIR}${DATADIR}/locales
+ ${INSTALL_DATA} ${WRKSRC}/out/${BUILDTYPE}/locales/*.pak ${STAGEDIR}${DATADIR}/locales
+ ${MKDIR} ${STAGEDIR}${DATADIR}/resources
+.for f in default_app.asar
+ ${INSTALL_DATA} ${WRKSRC}/out/${BUILDTYPE}/resources/${f} ${STAGEDIR}${DATADIR}/resources
+.endfor
+ cd ${WRKSRC}/out/${BUILDTYPE}/gen && ${COPYTREE_SHARE} node_headers ${STAGEDIR}${DATADIR}
+ ${RLN} ${STAGEDIR}${DATADIR}/electron ${STAGEDIR}${PREFIX}/bin/electron${PKGNAMESUFFIX}
+
+post-install-DIST-on:
+ ${MKDIR} ${STAGEDIR}${DATADIR}/releases
+ ${INSTALL_DATA} ${WRKSRC}/out/${BUILDTYPE}/SHASUMS256.txt ${STAGEDIR}${DATADIR}/releases
+ ${INSTALL_DATA} ${WRKSRC}/out/${BUILDTYPE}/*-v${ELECTRON_VER}-freebsd-*.zip ${STAGEDIR}${DATADIR}/releases
+
+post-install-DRIVER-on:
+ ${INSTALL_PROGRAM} ${WRKSRC}/out/${BUILDTYPE}/chromedriver ${STAGEDIR}${DATADIR}
+
+do-test:
+ # Note 1: "npm install" will run before actual tests are executed
+ # Note 2: Xvfb or something similar is necessary for headless testing
+ cd ${WRKSRC}/electron && \
+ ${SETENV} ${TEST_ENV} ELECTRON_OUT_DIR=${BUILDTYPE} LOCAL_GIT_DIRECTORY=${LOCALBASE} \
+ npm run test -- --ci
+
+.include <bsd.port.post.mk>
diff --git a/devel/electron7/Makefile.version b/devel/electron7/Makefile.version
new file mode 100644
index 000000000000..d1f814117325
--- /dev/null
+++ b/devel/electron7/Makefile.version
@@ -0,0 +1,4 @@
+# $FreeBSD$
+
+ELECTRON_VER= 7.3.1
+ELECTRON_VER_MAJOR= ${ELECTRON_VER:C/\..*//}
diff --git a/devel/electron7/distinfo b/devel/electron7/distinfo
new file mode 100644
index 000000000000..3f5bb58f593d
--- /dev/null
+++ b/devel/electron7/distinfo
@@ -0,0 +1,17 @@
+TIMESTAMP = 1591165606
+SHA256 (electron/chromium-78.0.3904.130.tar.xz) = 6f9656a345e8cd4938520a70d1979672190f386ac710421be8d32cb542008fc2
+SIZE (electron/chromium-78.0.3904.130.tar.xz) = 1405077664
+SHA256 (electron/chromium-78.0.3904.108.tar.xz) = f9c53839f306d2973de27723360024f7904101d426b9e7e9cdb56e8bcc775b0e
+SIZE (electron/chromium-78.0.3904.108.tar.xz) = 742906260
+SHA256 (electron/ab7f28fee456b5af5fbd3fcb5bcc7c61420788c9) = a45b953ebd15f4f13f1e0c675ccf59e9ed0352049497c4bea0111dbc2c9a5997
+SIZE (electron/ab7f28fee456b5af5fbd3fcb5bcc7c61420788c9) = 4593699
+SHA256 (electron/a22de844e32a3f720d219e3911c3da3478039f89) = 6e331676d098a57c53c1250821dc47ed84c47f823901bf30c4704df90d8a34be
+SIZE (electron/a22de844e32a3f720d219e3911c3da3478039f89) = 17469927
+SHA256 (electron/electron-yarn-cache-7.3.1.tar.xz) = e927298e19105f59c3cd444512b1affc12ceb6909f98d5a53221faa4d757c4f9
+SIZE (electron/electron-yarn-cache-7.3.1.tar.xz) = 24834380
+SHA256 (electron/electron-electron-v7.3.1_GH0.tar.gz) = d6e6baed5cc37065236fa881ff77188e68712402886da90ed0700e2d4de7f533
+SIZE (electron/electron-electron-v7.3.1_GH0.tar.gz) = 5451776
+SHA256 (electron/nodejs-node-v12.8.1_GH0.tar.gz) = 11648d586f68ee5fc38e4cadf3974541aac4a67709fa028e9075aff42e28d9b9
+SIZE (electron/nodejs-node-v12.8.1_GH0.tar.gz) = 72104419
+SHA256 (electron/nodejs-nan-2ee313aaca52e2b478965ac50eb5082520380d1b_GH0.tar.gz) = e6d0727f2f33d6c0fdbee3182543cb23679551dc15318cc8a2489901eabe9915
+SIZE (electron/nodejs-nan-2ee313aaca52e2b478965ac50eb5082520380d1b_GH0.tar.gz) = 173099
diff --git a/devel/electron7/files/apply-electron-patches.sh b/devel/electron7/files/apply-electron-patches.sh
new file mode 100644
index 000000000000..17365d1f06b1
--- /dev/null
+++ b/devel/electron7/files/apply-electron-patches.sh
@@ -0,0 +1,20 @@
+#! /bin/sh
+
+PATH=/bin:/usr/bin:/usr/local/bin
+
+PATCH_CMD="git apply"
+#PATCH_FLAGS="--numstat --check" # for debugging
+PATCH_FLAGS="--verbose --reject"
+
+WRKSRC=$1
+PATCH_CONF=${WRKSRC}/electron/patches/config.json
+
+PATCHD_REPOD_PAIRS=$(sed -e '1d; $d; /^$/d; s/[",]//g; s/: */:/' "${PATCH_CONF}")
+for prp in ${PATCHD_REPOD_PAIRS}; do
+ pd=$(echo "${prp}" | awk -F: '{print $1}' | sed -e 's/src/./')
+ rd=$(echo "${prp}" | awk -F: '{print $2}' | sed -e 's/src/./')
+ (cd "${WRKSRC}/${rd}" && \
+ while read -r p; do
+ ${PATCH_CMD} ${PATCH_FLAGS} "${WRKSRC}/${pd}/${p}"
+ done < "${WRKSRC}/${pd}/.patches")
+done
diff --git a/devel/electron7/files/package.json b/devel/electron7/files/package.json
new file mode 100644
index 000000000000..cbf8bdb1d424
--- /dev/null
+++ b/devel/electron7/files/package.json
@@ -0,0 +1,129 @@
+{
+ "name": "electron",
+ "version": "7.3.1",
+ "repository": "https://github.com/electron/electron",
+ "description": "Build cross platform desktop apps with JavaScript, HTML, and CSS",
+ "devDependencies": {
+ "@electron/docs-parser": "^0.4.2",
+ "@electron/typescript-definitions": "^8.6.4",
+ "@octokit/rest": "^16.3.2",
+ "@primer/octicons": "^9.1.1",
+ "@types/chai": "^4.1.7",
+ "@types/chai-as-promised": "^7.1.0",
+ "@types/express": "^4.16.1",
+ "@types/fs-extra": "^5.0.5",
+ "@types/mocha": "^5.2.6",
+ "@types/node": "^12.0.10",
+ "@types/semver": "^6.0.1",
+ "@types/split": "^1.0.0",
+ "@types/webpack": "^4.4.32",
+ "@types/webpack-env": "^1.13.9",
+ "@typescript-eslint/eslint-plugin": "^1.4.2",
+ "@typescript-eslint/parser": "^1.4.2",
+ "asar": "^1.0.0",
+ "check-for-leaks": "^1.2.1",
+ "colors": "^1.1.2",
+ "dotenv-safe": "^4.0.4",
+ "dugite": "^1.45.0",
+ "eslint": "^5.13.0",
+ "eslint-config-standard": "^12.0.0",
+ "eslint-plugin-import": "^2.17.2",
+ "eslint-plugin-mocha": "^5.2.0",
+ "eslint-plugin-node": "^8.0.1",
+ "eslint-plugin-standard": "^4.0.0",
+ "eslint-plugin-typescript": "^0.14.0",
+ "express": "^4.16.4",
+ "folder-hash": "^2.1.1",
+ "fs-extra": "^7.0.1",
+ "husky": "^2.2.0",
+ "klaw": "^3.0.0",
+ "lint": "^1.1.2",
+ "lint-staged": "^8.1.0",
+ "minimist": "^1.2.0",
+ "nugget": "^2.0.1",
+ "pre-flight": "^1.1.0",
+ "remark-cli": "^4.0.0",
+ "remark-preset-lint-markdown-style-guide": "^2.1.1",
+ "request": "^2.88.0",
+ "semver": "^5.6.0",
+ "shx": "^0.3.2",
+ "standard-markdown": "^5.0.0",
+ "sumchecker": "^2.0.2",
+ "tap-xunit": "^2.4.1",
+ "temp": "^0.8.3",
+ "timers-browserify": "1.4.2",
+ "ts-loader": "^6.0.2",
+ "ts-node": "^6.0.3",
+ "typescript": "^3.5.2",
+ "webpack": "^4.32.2",
+ "webpack-cli": "^3.3.2"
+ },
+ "private": true,
+ "scripts": {
+ "asar": "asar",
+ "generate-version-json": "node script/generate-version-json.js",
+ "lint": "node ./script/lint.js && npm run lint:clang-format && npm run lint:docs",
+ "lint:js": "node ./script/lint.js --js",
+ "lint:clang-format": "python script/run-clang-format.py -r -c atom/ chromium_src/ || (echo \"\\nCode not formatted correctly.\" && exit 1)",
+ "lint:cpp": "node ./script/lint.js --cc",
+ "lint:objc": "node ./script/lint.js --objc",
+ "lint:py": "node ./script/lint.js --py",
+ "lint:gn": "node ./script/lint.js --gn",
+ "lint:docs": "remark docs -qf && npm run lint:js-in-markdown && npm run create-typescript-definitions && npm run lint:docs-relative-links && npm run lint:check-trailing-whitespace",
+ "lint:docs-relative-links": "python ./script/check-relative-doc-links.py",
+ "lint:check-trailing-whitespace": "python ./script/check-trailing-whitespace.py",
+ "lint:js-in-markdown": "standard-markdown docs",
+ "create-api-json": "electron-docs-parser --dir=./",
+ "create-typescript-definitions": "npm run create-api-json && electron-typescript-definitions --api=electron-api.json && node spec/ts-smoke/runner.js",
+ "gn-typescript-definitions": "npm run create-typescript-definitions && shx cp electron.d.ts",
+ "pre-flight": "pre-flight",
+ "preinstall": "node -e 'process.exit(0)'",
+ "prepack": "check-for-leaks",
+ "repl": "node ./script/start.js --interactive",
+ "start": "node ./script/start.js",
+ "test": "node ./script/spec-runner.js",
+ "tsc": "tsc",
+ "webpack": "node build/webpack/run-compiler"
+ },
+ "license": "MIT",
+ "author": "Electron Community",
+ "keywords": [
+ "electron"
+ ],
+ "husky": {
+ "hooks": {
+ "pre-commit": "lint-staged",
+ "pre-push": "check-for-leaks"
+ }
+ },
+ "lint-staged": {
+ "*.{js,ts}": [
+ "node script/lint.js --js --fix --only --",
+ "git add"
+ ],
+ "*.{js,ts,d.ts}": [
+ "node script/gen-filenames.js",
+ "git add"
+ ],
+ "*.{cc,mm,c,h}": [
+ "python script/run-clang-format.py -r -c --fix",
+ "git add"
+ ],
+ "*.md": [
+ "remark -qf"
+ ],
+ "*.{gn,gni}": [
+ "python script/run-gn-format.py",
+ "git add"
+ ],
+ "*.py": [
+ "node script/lint.js --py --fix --only --",
+ "git add"
+ ],
+ "docs/api/**/*.md": [
+ "node script/gen-filenames.js",
+ "python script/check-trailing-whitespace.py --fix",
+ "git add filenames.auto.gni"
+ ]
+ }
+}
diff --git a/devel/electron7/files/patch-BUILD.gn b/devel/electron7/files/patch-BUILD.gn
new file mode 100644
index 000000000000..ace8ea6c33f9
--- /dev/null
+++ b/devel/electron7/files/patch-BUILD.gn
@@ -0,0 +1,95 @@
+--- BUILD.gn.orig 2019-12-12 12:38:54 UTC
++++ BUILD.gn
+@@ -404,7 +404,7 @@ group("gn_all") {
+ ]
+ }
+
+- if (is_linux || is_android) {
++ if ((is_linux && !is_bsd) || is_android) {
+ deps += [
+ "//third_party/breakpad:breakpad_unittests",
+ "//third_party/breakpad:core-2-minidump",
+@@ -445,8 +445,6 @@ group("gn_all") {
+ "//net:disk_cache_memory_test",
+ "//net:quic_client",
+ "//net:quic_server",
+- "//sandbox/linux:chrome_sandbox",
+- "//sandbox/linux:sandbox_linux_unittests",
+ "//testing:empty_main",
+ ]
+
+@@ -501,10 +499,6 @@ group("gn_all") {
+ "//chrome/test:load_library_perf_tests",
+ "//chrome/test:sync_performance_tests",
+ "//chrome/test/chromedriver:chromedriver",
+- "//courgette:courgette",
+- "//courgette:courgette_fuzz",
+- "//courgette:courgette_minimal_tool",
+- "//courgette:courgette_unittests",
+ "//media/cast:generate_barcode_video",
+ "//media/cast:generate_timecode_audio",
+ "//net:crash_cache",
+@@ -560,10 +554,6 @@ group("gn_all") {
+ "//mojo:mojo_perftests",
+ "//services/service_manager/public/cpp",
+ "//testing/gmock:gmock_main",
+- "//third_party/breakpad:dump_syms($host_toolchain)",
+- "//third_party/breakpad:microdump_stackwalk($host_toolchain)",
+- "//third_party/breakpad:minidump_dump($host_toolchain)",
+- "//third_party/breakpad:minidump_stackwalk($host_toolchain)",
+ ]
+
+ if (!is_android) {
+@@ -637,7 +627,7 @@ group("gn_all") {
+ host_os == "win") {
+ deps += [ "//chrome/test/mini_installer:mini_installer_tests" ]
+ }
+- } else if (!is_android && !is_ios && !is_fuchsia) {
++ } else if (!is_android && !is_ios && !is_fuchsia && !is_bsd) {
+ deps += [ "//third_party/breakpad:symupload($host_toolchain)" ]
+ }
+
+@@ -776,7 +766,6 @@ group("gn_all") {
+ "//chrome/browser/vr:vr_common_perftests",
+ "//chrome/browser/vr:vr_common_unittests",
+ "//chrome/browser/vr:vr_pixeltests",
+- "//tools/perf/contrib/vr_benchmarks:vr_perf_tests",
+ ]
+ if (is_desktop_linux && use_ozone) {
+ deps += [ "//chrome/browser/vr/testapp:vr_testapp" ]
+@@ -896,7 +885,6 @@ if (is_chromeos) {
+ "//ppapi/examples/video_decode",
+ "//sandbox/linux:chrome_sandbox",
+ "//sandbox/linux:sandbox_linux_unittests",
+- "//third_party/breakpad:minidump_stackwalk($host_toolchain)",
+
+ # Blocked on https://github.com/catapult-project/catapult/issues/2297
+ #"//third_party/catapult/telemetry:bitmaptools",
+@@ -1065,7 +1053,7 @@ if (!is_ios) {
+ ]
+ }
+
+- if (!is_win && !is_android) {
++ if (!is_win && !is_android && !is_bsd) {
+ data_deps +=
+ [ "//third_party/breakpad:minidump_stackwalk($host_toolchain)" ]
+ }
+@@ -1074,7 +1062,7 @@ if (!is_ios) {
+ data_deps += [ "//third_party/breakpad:dump_syms($host_toolchain)" ]
+ }
+
+- if (is_linux) {
++ if (is_linux && !is_bsd) {
+ data_deps += [ "//third_party/breakpad:dump_syms($host_toolchain)" ]
+ }
+
+@@ -1216,9 +1204,6 @@ group("chromium_builder_perf") {
+
+ if (is_win) {
+ data_deps += [ "//chrome/installer/mini_installer:mini_installer" ]
+- } else {
+- data_deps +=
+- [ "//third_party/breakpad:minidump_stackwalk($host_toolchain)" ]
+ }
+ if (is_win || is_android) {
+ data_deps += [
diff --git a/devel/electron7/files/patch-apps_ui_views_app__window__frame__view.cc b/devel/electron7/files/patch-apps_ui_views_app__window__frame__view.cc
new file mode 100644
index 000000000000..21df7f2cc178
--- /dev/null
+++ b/devel/electron7/files/patch-apps_ui_views_app__window__frame__view.cc
@@ -0,0 +1,11 @@
+--- apps/ui/views/app_window_frame_view.cc.orig 2019-12-12 12:38:55 UTC
++++ apps/ui/views/app_window_frame_view.cc
+@@ -125,7 +125,7 @@ gfx::Rect AppWindowFrameView::GetBoundsForClientView()
+ gfx::Rect AppWindowFrameView::GetWindowBoundsForClientBounds(
+ const gfx::Rect& client_bounds) const {
+ gfx::Rect window_bounds = client_bounds;
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ // Get the difference between the widget's client area bounds and window
+ // bounds, and grow |window_bounds| by that amount.
+ gfx::Insets native_frame_insets =
diff --git a/devel/electron7/files/patch-ash_display_mirror__window__controller.cc b/devel/electron7/files/patch-ash_display_mirror__window__controller.cc
new file mode 100644
index 000000000000..96e2248cf8d6
--- /dev/null
+++ b/devel/electron7/files/patch-ash_display_mirror__window__controller.cc
@@ -0,0 +1,14 @@
+--- ash/display/mirror_window_controller.cc.orig 2019-12-12 12:38:55 UTC
++++ ash/display/mirror_window_controller.cc
+@@ -274,7 +274,11 @@ void MirrorWindowController::UpdateWindow(
+ return info.id() == iter->first;
+ }) == display_info_list.end()) {
+ CloseAndDeleteHost(iter->second, true);
++#if defined(__llvm__)
++ mirroring_host_info_map_.erase(iter++);
++#else
+ iter = mirroring_host_info_map_.erase(iter);
++#endif
+ } else {
+ ++iter;
+ }
diff --git a/devel/electron7/files/patch-base_BUILD.gn b/devel/electron7/files/patch-base_BUILD.gn
new file mode 100644
index 000000000000..7da1e0702910
--- /dev/null
+++ b/devel/electron7/files/patch-base_BUILD.gn
@@ -0,0 +1,67 @@
+--- base/BUILD.gn.orig 2019-12-12 12:38:58 UTC
++++ base/BUILD.gn
+@@ -1266,7 +1266,7 @@ jumbo_component("base") {
+ # Needed for <atomic> if using newer C++ library than sysroot, except if
+ # building inside the cros_sdk environment - use host_toolchain as a
+ # more robust check for this.
+- if (!use_sysroot && (is_android || (is_linux && !is_chromecast)) &&
++ if (!use_sysroot && (is_android || (is_linux && !is_chromecast) && !is_clang) &&
+ host_toolchain != "//build/toolchain/cros:host") {
+ libs += [ "atomic" ]
+ }
+@@ -1292,7 +1292,7 @@ jumbo_component("base") {
+ "allocator/allocator_shim_override_glibc_weak_symbols.h",
+ ]
+ deps += [ "//base/allocator:tcmalloc" ]
+- } else if (is_linux && use_allocator == "none") {
++ } else if ((is_linux && !is_bsd) && use_allocator == "none") {
+ sources += [ "allocator/allocator_shim_default_dispatch_to_glibc.cc" ]
+ } else if (is_android && use_allocator == "none") {
+ sources += [
+@@ -1893,6 +1893,33 @@ jumbo_component("base") {
+ }
+ }
+
++ if (is_bsd) {
++ sources -= [
++ "files/file_path_watcher_linux.cc",
++ "files/file_util_linux.cc",
++ "process/memory_linux.cc",
++ "process/process_handle_linux.cc",
++ "process/process_iterator_linux.cc",
++ "process/process_metrics_linux.cc",
++ "system/sys_info_linux.cc"
++ ]
++ sources += [
++ "files/file_path_watcher_kqueue.cc",
++ "files/file_path_watcher_kqueue.h",
++ "files/file_path_watcher_stub.cc",
++ "process/memory_stubs.cc",
++ "process/process_handle_freebsd.cc",
++ "process/process_iterator_freebsd.cc",
++ "process/process_metrics_freebsd.cc",
++ "system/sys_info_freebsd.cc",
++ ]
++ libs = [
++ "execinfo", # logging.cc
++ "kvm", # process_metrics_freebsd
++ "util" # process_metrics_freebsd
++ ]
++ }
++
+ # iOS
+ if (is_ios) {
+ set_sources_assignment_filter([])
+@@ -3041,6 +3068,12 @@ test("base_unittests") {
+ ]
+ set_sources_assignment_filter(sources_assignment_filter)
+ }
++
++ if (is_bsd) {
++ sources -= [
++ "debug/proc_maps_linux_unittest.cc",
++ ]
++ }
+
+ if (is_win) {
+ deps += [ "//base:scoped_handle_test_dll" ]
diff --git a/devel/electron7/files/patch-base_allocator_allocator__shim.cc b/devel/electron7/files/patch-base_allocator_allocator__shim.cc
new file mode 100644
index 000000000000..fbf962ab5979
--- /dev/null
+++ b/devel/electron7/files/patch-base_allocator_allocator__shim.cc
@@ -0,0 +1,11 @@
+--- base/allocator/allocator_shim.cc.orig 2019-12-12 12:38:58 UTC
++++ base/allocator/allocator_shim.cc
+@@ -71,7 +71,7 @@ inline const base::allocator::AllocatorDispatch* GetCh
+ // Unfortunately due to that bug NoBarrier_Load() is mistakenly fully
+ // barriered on Linux+Clang, and that causes visible perf regressons.
+ return reinterpret_cast<const base::allocator::AllocatorDispatch*>(
+-#if defined(OS_LINUX) && defined(__clang__)
++#if (defined(OS_BSD) || defined(OS_LINUX)) && defined(__clang__)
+ *static_cast<const volatile base::subtle::AtomicWord*>(&g_chain_head)
+ #else
+ base::subtle::NoBarrier_Load(&g_chain_head)
diff --git a/devel/electron7/files/patch-base_allocator_allocator__shim__default__dispatch__to__glibc.cc b/devel/electron7/files/patch-base_allocator_allocator__shim__default__dispatch__to__glibc.cc
new file mode 100644
index 000000000000..c9a46f3fa08b
--- /dev/null
+++ b/devel/electron7/files/patch-base_allocator_allocator__shim__default__dispatch__to__glibc.cc
@@ -0,0 +1,76 @@
+--- base/allocator/allocator_shim_default_dispatch_to_glibc.cc.orig 2019-12-12 12:38:58 UTC
++++ base/allocator/allocator_shim_default_dispatch_to_glibc.cc
+@@ -5,18 +5,28 @@
+ #include "base/allocator/allocator_shim.h"
+
+ #include <dlfcn.h>
+-#include <malloc.h>
++#include <stdio.h>
++#include <stdlib.h>
++#include <malloc_np.h>
+
+ // This translation unit defines a default dispatch for the allocator shim which
+ // routes allocations to libc functions.
+-// The code here is strongly inspired from tcmalloc's libc_override_glibc.h.
++// The code here is strongly inspired from tcmalloc's override_glibc.h.
+
+ extern "C" {
+-void* __libc_malloc(size_t size);
+-void* __libc_calloc(size_t n, size_t size);
+-void* __libc_realloc(void* address, size_t size);
+-void* __libc_memalign(size_t alignment, size_t size);
+-void __libc_free(void* ptr);
++void* __malloc(size_t size);
++void* __calloc(size_t n, size_t size);
++void* __realloc(void* address, size_t len);
++void* __memalign(size_t alignment, size_t size) {
++ void *ret;
++ if (__posix_memalign(&ret, alignment, size) != 0) {
++ return nullptr;
++ } else {
++ return ret;
++ }
++}
++int __posix_memalign(void **ptr, size_t alignment, size_t size);
++void __free(void* ptr);
+ } // extern "C"
+
+ namespace {
+@@ -24,32 +34,32 @@ namespace {
+ using base::allocator::AllocatorDispatch;
+
+ void* GlibcMalloc(const AllocatorDispatch*, size_t size, void* context) {
+- return __libc_malloc(size);
++ return __malloc(size);
+ }
+
+ void* GlibcCalloc(const AllocatorDispatch*,
+ size_t n,
+ size_t size,
+ void* context) {
+- return __libc_calloc(n, size);
++ return __calloc(n, size);
+ }
+
+ void* GlibcRealloc(const AllocatorDispatch*,
+ void* address,
+ size_t size,
+ void* context) {
+- return __libc_realloc(address, size);
++ return __realloc(address, size);
+ }
+
+ void* GlibcMemalign(const AllocatorDispatch*,
+ size_t alignment,
+ size_t size,
+ void* context) {
+- return __libc_memalign(alignment, size);
++ return __memalign(alignment, size);
+ }
+
+ void GlibcFree(const AllocatorDispatch*, void* address, void* context) {
+- __libc_free(address);
++ __free(address);
+ }
+
+ size_t GlibcGetSizeEstimate(const AllocatorDispatch*,
diff --git a/devel/electron7/files/patch-base_allocator_allocator__shim__override__libc__symbols.h b/devel/electron7/files/patch-base_allocator_allocator__shim__override__libc__symbols.h
new file mode 100644
index 000000000000..6aac722ab545
--- /dev/null
+++ b/devel/electron7/files/patch-base_allocator_allocator__shim__override__libc__symbols.h
@@ -0,0 +1,11 @@
+--- base/allocator/allocator_shim_override_libc_symbols.h.orig 2019-12-12 12:38:58 UTC
++++ base/allocator/allocator_shim_override_libc_symbols.h
+@@ -10,7 +10,7 @@
+ #endif
+ #define BASE_ALLOCATOR_ALLOCATOR_SHIM_OVERRIDE_LIBC_SYMBOLS_H_
+
+-#include <malloc.h>
++#include <stdlib.h>
+
+ #include "base/allocator/allocator_shim_internals.h"
+
diff --git a/devel/electron7/files/patch-base_allocator_allocator__shim__unittest.cc b/devel/electron7/files/patch-base_allocator_allocator__shim__unittest.cc
new file mode 100644
index 000000000000..922debaed2f8
--- /dev/null
+++ b/devel/electron7/files/patch-base_allocator_allocator__shim__unittest.cc
@@ -0,0 +1,36 @@
+--- base/allocator/allocator_shim_unittest.cc.orig 2019-12-12 12:38:58 UTC
++++ base/allocator/allocator_shim_unittest.cc
+@@ -348,7 +348,7 @@ TEST_F(AllocatorShimTest, InterceptLibcSymbols) {
+ ASSERT_GE(aligned_allocs_intercepted_by_size[61], 1u);
+ #endif // !OS_WIN
+
+-#if !defined(OS_WIN) && !defined(OS_MACOSX)
++#if !defined(OS_WIN) && !defined(OS_MACOSX) && !defined(OS_BSD)
+ void* memalign_ptr = memalign(128, 53);
+ ASSERT_NE(nullptr, memalign_ptr);
+ ASSERT_EQ(0u, reinterpret_cast<uintptr_t>(memalign_ptr) % 128);
+@@ -361,7 +361,7 @@ TEST_F(AllocatorShimTest, InterceptLibcSymbols) {
+ ASSERT_GE(aligned_allocs_intercepted_by_alignment[kPageSize], 1u);
+ // pvalloc rounds the size up to the next page.
+ ASSERT_GE(aligned_allocs_intercepted_by_size[kPageSize], 1u);
+-#endif // !OS_WIN && !OS_MACOSX
++#endif // !OS_WIN && !OS_MACOSX && !OS_BSD
+
+ char* realloc_ptr = static_cast<char*>(malloc(10));
+ strcpy(realloc_ptr, "foobar");
+@@ -377,13 +377,13 @@ TEST_F(AllocatorShimTest, InterceptLibcSymbols) {
+ free(zero_alloc_ptr);
+ ASSERT_GE(frees_intercepted_by_addr[Hash(zero_alloc_ptr)], 1u);
+
+-#if !defined(OS_WIN) && !defined(OS_MACOSX)
++#if !defined(OS_WIN) && !defined(OS_MACOSX) && !defined(OS_BSD)
+ free(memalign_ptr);
+ ASSERT_GE(frees_intercepted_by_addr[Hash(memalign_ptr)], 1u);
+
+ free(pvalloc_ptr);
+ ASSERT_GE(frees_intercepted_by_addr[Hash(pvalloc_ptr)], 1u);
+-#endif // !OS_WIN && !OS_MACOSX
++#endif // !OS_WIN && !OS_MACOSX && !OS_BSD
+
+ #if !defined(OS_WIN)
+ free(posix_memalign_ptr);
diff --git a/devel/electron7/files/patch-base_allocator_partition__allocator_page__allocator__internals__posix.h b/devel/electron7/files/patch-base_allocator_partition__allocator_page__allocator__internals__posix.h
new file mode 100644
index 000000000000..a5d875eba33f
--- /dev/null
+++ b/devel/electron7/files/patch-base_allocator_partition__allocator_page__allocator__internals__posix.h
@@ -0,0 +1,11 @@
+--- base/allocator/partition_allocator/page_allocator_internals_posix.h.orig 2019-12-12 12:38:58 UTC
++++ base/allocator/partition_allocator/page_allocator_internals_posix.h
+@@ -19,7 +19,7 @@
+ #if defined(OS_ANDROID)
+ #include <sys/prctl.h>
+ #endif
+-#if defined(OS_LINUX)
++#if defined(OS_BSD) || defined(OS_LINUX)
+ #include <sys/resource.h>
+
+ #include <algorithm>
diff --git a/devel/electron7/files/patch-base_base__switches.cc b/devel/electron7/files/patch-base_base__switches.cc
new file mode 100644
index 000000000000..635b2a537404
--- /dev/null
+++ b/devel/electron7/files/patch-base_base__switches.cc
@@ -0,0 +1,20 @@
+--- base/base_switches.cc.orig 2019-12-12 12:38:58 UTC
++++ base/base_switches.cc
+@@ -117,7 +117,7 @@ const char kDisableHighResTimer[] = "disable-highres-t
+ const char kDisableUsbKeyboardDetect[] = "disable-usb-keyboard-detect";
+ #endif
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ // The /dev/shm partition is too small in certain VM environments, causing
+ // Chrome to fail or crash (see http://crbug.com/715363). Use this flag to
+ // work-around this issue (a temporary directory will always be used to create
+@@ -138,7 +138,7 @@ const char kEnableCrashReporterForTesting[] =
+ const char kEnableReachedCodeProfiler[] = "enable-reached-code-profiler";
+ #endif
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Controls whether or not retired instruction counts are surfaced for threads
+ // in trace events on Linux.
+ //
diff --git a/devel/electron7/files/patch-base_base__switches.h b/devel/electron7/files/patch-base_base__switches.h
new file mode 100644
index 000000000000..4f517f709081
--- /dev/null
+++ b/devel/electron7/files/patch-base_base__switches.h
@@ -0,0 +1,20 @@
+--- base/base_switches.h.orig 2019-12-12 12:38:58 UTC
++++ base/base_switches.h
+@@ -38,7 +38,7 @@ extern const char kDisableHighResTimer[];
+ extern const char kDisableUsbKeyboardDetect[];
+ #endif
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ extern const char kDisableDevShmUsage[];
+ #endif
+
+@@ -51,7 +51,7 @@ extern const char kEnableReachedCodeProfiler[];
+ extern const char kOrderfileMemoryOptimization[];
+ #endif
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ extern const char kEnableThreadInstructionCount[];
+ #endif
+
diff --git a/devel/electron7/files/patch-base_cpu.cc b/devel/electron7/files/patch-base_cpu.cc
new file mode 100644
index 000000000000..305d0cddb866
--- /dev/null
+++ b/devel/electron7/files/patch-base_cpu.cc
@@ -0,0 +1,38 @@
+--- base/cpu.cc.orig 2019-12-12 12:38:58 UTC
++++ base/cpu.cc
+@@ -14,7 +14,7 @@
+
+ #include "base/stl_util.h"
+
+-#if defined(ARCH_CPU_ARM_FAMILY) && (defined(OS_ANDROID) || defined(OS_LINUX))
++#if defined(ARCH_CPU_ARM_FAMILY) && (defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_BSD))
+ #include "base/files/file_util.h"
+ #endif
+
+@@ -135,7 +135,7 @@ uint64_t xgetbv(uint32_t xcr) {
+
+ #endif // ARCH_CPU_X86_FAMILY
+
+-#if defined(ARCH_CPU_ARM_FAMILY) && (defined(OS_ANDROID) || defined(OS_LINUX))
++#if defined(ARCH_CPU_ARM_FAMILY) && (defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_BSD))
+ std::string* CpuInfoBrand() {
+ static std::string* brand = []() {
+ // This function finds the value from /proc/cpuinfo under the key "model
+@@ -165,7 +165,7 @@ std::string* CpuInfoBrand() {
+ return brand;
+ }
+ #endif // defined(ARCH_CPU_ARM_FAMILY) && (defined(OS_ANDROID) ||
+- // defined(OS_LINUX))
++ // defined(OS_LINUX) || defined(OS_BSD))
+
+ } // namespace
+
+@@ -287,7 +287,7 @@ void CPU::Initialize() {
+ }
+ }
+ #elif defined(ARCH_CPU_ARM_FAMILY)
+-#if (defined(OS_ANDROID) || defined(OS_LINUX))
++#if (defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_BSD))
+ cpu_brand_ = *CpuInfoBrand();
+ #elif defined(OS_WIN)
+ // Windows makes high-resolution thread timing information available in
diff --git a/devel/electron7/files/patch-base_debug_debugger__posix.cc b/devel/electron7/files/patch-base_debug_debugger__posix.cc
new file mode 100644
index 000000000000..b0046e50c906
--- /dev/null
+++ b/devel/electron7/files/patch-base_debug_debugger__posix.cc
@@ -0,0 +1,56 @@
+--- base/debug/debugger_posix.cc.orig 2019-12-12 12:38:58 UTC
++++ base/debug/debugger_posix.cc
+@@ -90,7 +90,7 @@ bool BeingDebugged() {
+ KERN_PROC,
+ KERN_PROC_PID,
+ getpid()
+-#if defined(OS_OPENBSD)
++#if defined(OS_BSD)
+ , sizeof(struct kinfo_proc),
+ 0
+ #endif
+@@ -98,33 +98,35 @@ bool BeingDebugged() {
+
+ // Caution: struct kinfo_proc is marked __APPLE_API_UNSTABLE. The source and
+ // binary interfaces may change.
+- struct kinfo_proc info;
+- size_t info_size = sizeof(info);
++ struct kinfo_proc *info;
++ size_t info_size;
+
+-#if defined(OS_OPENBSD)
+ if (sysctl(mib, base::size(mib), NULL, &info_size, NULL, 0) < 0)
+ return -1;
+
++ info = (struct kinfo_proc *)malloc(info_size);
+ mib[5] = (info_size / sizeof(struct kinfo_proc));
+-#endif
+
+- int sysctl_result = sysctl(mib, base::size(mib), &info, &info_size, NULL, 0);
++ int sysctl_result = sysctl(mib, base::size(mib), info, &info_size, NULL, 0);
+ DCHECK_EQ(sysctl_result, 0);
+ if (sysctl_result != 0) {
+ is_set = true;
+ being_debugged = false;
+- return being_debugged;
++ goto out;
+ }
+
+ // This process is being debugged if the P_TRACED flag is set.
+ is_set = true;
+ #if defined(OS_FREEBSD)
+- being_debugged = (info.ki_flag & P_TRACED) != 0;
++ being_debugged = (info->ki_flag & P_TRACED) != 0;
+ #elif defined(OS_BSD)
+- being_debugged = (info.p_flag & P_TRACED) != 0;
++ being_debugged = (info->p_flag & P_TRACED) != 0;
+ #else
+- being_debugged = (info.kp_proc.p_flag & P_TRACED) != 0;
++ being_debugged = (info->kp_proc.p_flag & P_TRACED) != 0;
+ #endif
++
++out:
++ free(info);
+ return being_debugged;
+ }
+
diff --git a/devel/electron7/files/patch-base_debug_elf__reader.cc b/devel/electron7/files/patch-base_debug_elf__reader.cc
new file mode 100644
index 000000000000..a1b48851c3fe
--- /dev/null
+++ b/devel/electron7/files/patch-base_debug_elf__reader.cc
@@ -0,0 +1,18 @@
+--- base/debug/elf_reader.cc.orig 2019-12-12 12:38:58 UTC
++++ base/debug/elf_reader.cc
+@@ -83,6 +83,7 @@ size_t ReadElfBuildId(const void* elf_mapped_base,
+ reinterpret_cast<const Nhdr*>(elf_base + header.p_vaddr);
+ bool found = false;
+ while (current_note < section_end) {
++#if !defined(OS_BSD)
+ if (current_note->n_type == NT_GNU_BUILD_ID) {
+ const char* note_name =
+ reinterpret_cast<const char*>(current_note) + sizeof(Nhdr);
+@@ -92,6 +93,7 @@ size_t ReadElfBuildId(const void* elf_mapped_base,
+ break;
+ }
+ }
++#endif
+
+ current_note = reinterpret_cast<const Nhdr*>(
+ reinterpret_cast<const char*>(current_note) + sizeof(Nhdr) +
diff --git a/devel/electron7/files/patch-base_debug_proc__maps__linux.cc b/devel/electron7/files/patch-base_debug_proc__maps__linux.cc
new file mode 100644
index 000000000000..f24eec2dcde6
--- /dev/null
+++ b/devel/electron7/files/patch-base_debug_proc__maps__linux.cc
@@ -0,0 +1,11 @@
+--- base/debug/proc_maps_linux.cc.orig 2019-12-12 12:38:58 UTC
++++ base/debug/proc_maps_linux.cc
+@@ -12,7 +12,7 @@
+ #include "base/strings/string_split.h"
+ #include "build/build_config.h"
+
+-#if defined(OS_LINUX) || defined(OS_ANDROID)
++#if defined(OS_LINUX) || defined(OS_BSD) || defined(OS_ANDROID)
+ #include <inttypes.h>
+ #endif
+
diff --git a/devel/electron7/files/patch-base_debug_stack__trace.cc b/devel/electron7/files/patch-base_debug_stack__trace.cc
new file mode 100644
index 000000000000..7a20a4a2ddfe
--- /dev/null
+++ b/devel/electron7/files/patch-base_debug_stack__trace.cc
@@ -0,0 +1,11 @@
+--- base/debug/stack_trace.cc.orig 2019-12-12 12:38:58 UTC
++++ base/debug/stack_trace.cc
+@@ -14,7 +14,7 @@
+
+ #if BUILDFLAG(CAN_UNWIND_WITH_FRAME_POINTERS)
+
+-#if defined(OS_LINUX) || defined(OS_ANDROID)
++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
+ #include <pthread.h>
+ #include "base/process/process_handle.h"
+ #include "base/threading/platform_thread.h"
diff --git a/devel/electron7/files/patch-base_debug_stack__trace.h b/devel/electron7/files/patch-base_debug_stack__trace.h
new file mode 100644
index 000000000000..20ed00e051eb
--- /dev/null
+++ b/devel/electron7/files/patch-base_debug_stack__trace.h
@@ -0,0 +1,10 @@
+--- base/debug/stack_trace.h.orig 2019-12-12 12:38:58 UTC
++++ base/debug/stack_trace.h
+@@ -19,6 +19,7 @@
+ #if !defined(OS_NACL)
+ #include <signal.h>
+ #endif
++#include <sys/stdint.h>
+ #include <unistd.h>
+ #endif
+
diff --git a/devel/electron7/files/patch-base_debug_stack__trace__posix.cc b/devel/electron7/files/patch-base_debug_stack__trace__posix.cc
new file mode 100644
index 000000000000..44ab3dd9143c
--- /dev/null
+++ b/devel/electron7/files/patch-base_debug_stack__trace__posix.cc
@@ -0,0 +1,31 @@
+--- base/debug/stack_trace_posix.cc.orig 2019-12-12 12:38:58 UTC
++++ base/debug/stack_trace_posix.cc
+@@ -35,7 +35,7 @@
+ #include <AvailabilityMacros.h>
+ #endif
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include "base/debug/proc_maps_linux.h"
+ #endif
+
+@@ -657,6 +657,11 @@ class SandboxSymbolizeHelper {
+ // for the modules that are loaded in the current process.
+ // Returns true on success.
+ bool CacheMemoryRegions() {
++#if defined(OS_BSD)
++ // TODO (rene) avoid link error, implement something?
++ NOTIMPLEMENTED();
++ return false;
++#else
+ // Reads /proc/self/maps.
+ std::string contents;
+ if (!ReadProcMaps(&contents)) {
+@@ -674,6 +679,7 @@ class SandboxSymbolizeHelper {
+
+ is_initialized_ = true;
+ return true;
++#endif
+ }
+
+ // Opens all object files and caches their file descriptors.
diff --git a/devel/electron7/files/patch-base_files_file__path__unittest.cc b/devel/electron7/files/patch-base_files_file__path__unittest.cc
new file mode 100644
index 000000000000..4b6958a54e3a
--- /dev/null
+++ b/devel/electron7/files/patch-base_files_file__path__unittest.cc
@@ -0,0 +1,11 @@
+--- base/files/file_path_unittest.cc.orig 2019-12-12 12:38:58 UTC
++++ base/files/file_path_unittest.cc
+@@ -1139,7 +1139,7 @@ TEST_F(FilePathTest, FromUTF8Unsafe_And_AsUTF8Unsafe)
+ "\xEF\xBC\xA1\xEF\xBC\xA2\xEF\xBC\xA3.txt" },
+ };
+
+-#if !defined(SYSTEM_NATIVE_UTF8) && defined(OS_LINUX)
++#if !defined(SYSTEM_NATIVE_UTF8) && (defined(OS_LINUX) || defined(OS_BSD))
+ ScopedLocale locale("en_US.UTF-8");
+ #endif
+
diff --git a/devel/electron7/files/patch-base_files_file__path__watcher.cc b/devel/electron7/files/patch-base_files_file__path__watcher.cc
new file mode 100644
index 000000000000..2c442d175aeb
--- /dev/null
+++ b/devel/electron7/files/patch-base_files_file__path__watcher.cc
@@ -0,0 +1,11 @@
+--- base/files/file_path_watcher.cc.orig 2019-12-12 12:38:58 UTC
++++ base/files/file_path_watcher.cc
+@@ -20,7 +20,7 @@ FilePathWatcher::~FilePathWatcher() {
+ // static
+ bool FilePathWatcher::RecursiveWatchAvailable() {
+ #if (defined(OS_MACOSX) && !defined(OS_IOS)) || defined(OS_WIN) || \
+- defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_AIX)
++ defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_AIX) || defined(OS_BSD)
+ return true;
+ #else
+ // FSEvents isn't available on iOS.
diff --git a/devel/electron7/files/patch-base_files_file__path__watcher__kqueue.h b/devel/electron7/files/patch-base_files_file__path__watcher__kqueue.h
new file mode 100644
index 000000000000..78060fe54644
--- /dev/null
+++ b/devel/electron7/files/patch-base_files_file__path__watcher__kqueue.h
@@ -0,0 +1,13 @@
+--- base/files/file_path_watcher_kqueue.h.orig 2019-12-12 12:38:58 UTC
++++ base/files/file_path_watcher_kqueue.h
+@@ -5,6 +5,10 @@
+ #ifndef BASE_FILES_FILE_PATH_WATCHER_KQUEUE_H_
+ #define BASE_FILES_FILE_PATH_WATCHER_KQUEUE_H_
+
++#ifdef __FreeBSD__
++#include <sys/stdint.h>
++#include <sys/types.h>
++#endif
+ #include <sys/event.h>
+
+ #include <memory>
diff --git a/devel/electron7/files/patch-base_files_file__path__watcher__stub.cc b/devel/electron7/files/patch-base_files_file__path__watcher__stub.cc
new file mode 100644
index 000000000000..658aee57f7a7
--- /dev/null
+++ b/devel/electron7/files/patch-base_files_file__path__watcher__stub.cc
@@ -0,0 +1,51 @@
+--- base/files/file_path_watcher_stub.cc.orig 2019-12-12 12:38:58 UTC
++++ base/files/file_path_watcher_stub.cc
+@@ -1,14 +1,15 @@
+-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
++// Copyright 2014 The Chromium Authors. All rights reserved.
+ // Use of this source code is governed by a BSD-style license that can be
+ // found in the LICENSE file.
+
+-// This file exists for Unix systems which don't have the inotify headers, and
+-// thus cannot build file_watcher_inotify.cc
+
+-#include "base/files/file_path_watcher.h"
++#include <memory>
+
++#include "base/files/file_path_watcher.h"
++#include "base/files/file_path_watcher_kqueue.h"
+ #include "base/macros.h"
+ #include "base/memory/ptr_util.h"
++#include "build/build_config.h"
+
+ namespace base {
+
+@@ -22,12 +23,26 @@ class FilePathWatcherImpl : public FilePathWatcher::Pl
+ bool Watch(const FilePath& path,
+ bool recursive,
+ const FilePathWatcher::Callback& callback) override {
+- return false;
++ DCHECK(!impl_.get());
++ if (recursive) {
++ if (!FilePathWatcher::RecursiveWatchAvailable())
++ return false;
++ } else {
++ impl_ = std::make_unique<FilePathWatcherKQueue>();
++ }
++ DCHECK(impl_.get());
++ return impl_->Watch(path, recursive, callback);
+ }
+
+- void Cancel() override {}
++ void Cancel() override {
++ if (impl_.get())
++ impl_->Cancel();
++ set_cancelled();
++ }
+
+ private:
++ std::unique_ptr<PlatformDelegate> impl_;
++
+ DISALLOW_COPY_AND_ASSIGN(FilePathWatcherImpl);
+ };
+
diff --git a/devel/electron7/files/patch-base_files_file__path__watcher__unittest.cc b/devel/electron7/files/patch-base_files_file__path__watcher__unittest.cc
new file mode 100644
index 000000000000..45c49c15af43
--- /dev/null
+++ b/devel/electron7/files/patch-base_files_file__path__watcher__unittest.cc
@@ -0,0 +1,11 @@
+--- base/files/file_path_watcher_unittest.cc.orig 2019-12-12 12:38:58 UTC
++++ base/files/file_path_watcher_unittest.cc
+@@ -435,7 +435,7 @@ TEST_F(FilePathWatcherTest, WatchDirectory) {
+ VLOG(1) << "Waiting for file1 creation";
+ ASSERT_TRUE(WaitForEvents());
+
+-#if !defined(OS_MACOSX)
++#if !defined(OS_MACOSX) && !defined(OS_BSD)
+ // Mac implementation does not detect files modified in a directory.
+ ASSERT_TRUE(WriteFile(file1, "content v2"));
+ VLOG(1) << "Waiting for file1 modification";
diff --git a/devel/electron7/files/patch-base_files_file__util.h b/devel/electron7/files/patch-base_files_file__util.h
new file mode 100644
index 000000000000..1107907e3a50
--- /dev/null
+++ b/devel/electron7/files/patch-base_files_file__util.h
@@ -0,0 +1,11 @@
+--- base/files/file_util.h.orig 2019-12-12 12:38:58 UTC
++++ base/files/file_util.h
+@@ -497,7 +497,7 @@ BASE_EXPORT bool VerifyPathControlledByAdmin(const bas
+ // the directory |path|, in the number of FilePath::CharType, or -1 on failure.
+ BASE_EXPORT int GetMaximumPathComponentLength(const base::FilePath& path);
+
+-#if defined(OS_LINUX) || defined(OS_AIX)
++#if defined(OS_LINUX) || defined(OS_AIX) || defined(OS_BSD)
+ // Broad categories of file systems as returned by statfs() on Linux.
+ enum FileSystemType {
+ FILE_SYSTEM_UNKNOWN, // statfs failed.
diff --git a/devel/electron7/files/patch-base_files_file__util__posix.cc b/devel/electron7/files/patch-base_files_file__util__posix.cc
new file mode 100644
index 000000000000..ae41eeea8c88
--- /dev/null
+++ b/devel/electron7/files/patch-base_files_file__util__posix.cc
@@ -0,0 +1,11 @@
+--- base/files/file_util_posix.cc.orig 2019-12-12 12:38:58 UTC
++++ base/files/file_util_posix.cc
+@@ -426,7 +426,7 @@ bool CreatePipe(ScopedFD* read_fd, ScopedFD* write_fd,
+ }
+
+ bool CreateLocalNonBlockingPipe(int fds[2]) {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ return pipe2(fds, O_CLOEXEC | O_NONBLOCK) == 0;
+ #else
+ int raw_fds[2];
diff --git a/devel/electron7/files/patch-base_files_scoped__file.cc b/devel/electron7/files/patch-base_files_scoped__file.cc
new file mode 100644
index 000000000000..e474c17469c3
--- /dev/null
+++ b/devel/electron7/files/patch-base_files_scoped__file.cc
@@ -0,0 +1,11 @@
+--- base/files/scoped_file.cc.orig 2019-12-12 12:38:58 UTC
++++ base/files/scoped_file.cc
+@@ -30,7 +30,7 @@ void ScopedFDCloseTraits::Free(int fd) {
+ // a single open directory would bypass the entire security model.
+ int ret = IGNORE_EINTR(close(fd));
+
+-#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_FUCHSIA) || \
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_FUCHSIA) || defined(OS_BSD) || \
+ defined(OS_ANDROID)
+ // NB: Some file descriptors can return errors from close() e.g. network
+ // filesystems such as NFS and Linux input devices. On Linux, macOS, and
diff --git a/devel/electron7/files/patch-base_i18n_icu__util.cc b/devel/electron7/files/patch-base_i18n_icu__util.cc
new file mode 100644
index 000000000000..36554bf60033
--- /dev/null
+++ b/devel/electron7/files/patch-base_i18n_icu__util.cc
@@ -0,0 +1,20 @@
+--- base/i18n/icu_util.cc.orig 2019-12-12 12:38:58 UTC
++++ base/i18n/icu_util.cc
+@@ -20,7 +20,7 @@
+ #include "build/build_config.h"
+ #include "third_party/icu/source/common/unicode/putil.h"
+ #include "third_party/icu/source/common/unicode/udata.h"
+-#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_ANDROID)
++#if (defined(OS_LINUX) || defined(OS_BSD) && !defined(OS_CHROMEOS)) || defined(OS_ANDROID)
+ #include "third_party/icu/source/i18n/unicode/timezone.h"
+ #endif
+
+@@ -285,7 +285,7 @@ bool InitializeICU() {
+ // TODO(jungshik): Some callers do not care about tz at all. If necessary,
+ // add a boolean argument to this function to init'd the default tz only
+ // when requested.
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ if (result)
+ std::unique_ptr<icu::TimeZone> zone(icu::TimeZone::createDefault());
+ #endif
diff --git a/devel/electron7/files/patch-base_linux__util.cc b/devel/electron7/files/patch-base_linux__util.cc
new file mode 100644
index 000000000000..cf60bbe90d8c
--- /dev/null
+++ b/devel/electron7/files/patch-base_linux__util.cc
@@ -0,0 +1,18 @@
+--- base/linux_util.cc.orig 2019-12-12 12:38:58 UTC
++++ base/linux_util.cc
+@@ -90,12 +90,14 @@ char g_linux_distro[kDistroSize] =
+ "CrOS";
+ #elif defined(OS_ANDROID)
+ "Android";
++#elif defined(OS_BSD)
++ "BSD";
+ #else // if defined(OS_LINUX)
+ "Unknown";
+ #endif
+
+ std::string GetLinuxDistro() {
+-#if defined(OS_CHROMEOS) || defined(OS_ANDROID)
++#if defined(OS_CHROMEOS) || defined(OS_ANDROID) || defined(OS_BSD)
+ return g_linux_distro;
+ #elif defined(OS_LINUX)
+ LinuxDistroHelper* distro_state_singleton = LinuxDistroHelper::GetInstance();
diff --git a/devel/electron7/files/patch-base_logging__unittest.cc b/devel/electron7/files/patch-base_logging__unittest.cc
new file mode 100644
index 000000000000..eddafb8be9a1
--- /dev/null
+++ b/devel/electron7/files/patch-base_logging__unittest.cc
@@ -0,0 +1,11 @@
+--- base/logging_unittest.cc.orig 2019-12-12 12:38:58 UTC
++++ base/logging_unittest.cc
+@@ -590,7 +590,7 @@ void CheckCrashTestSighandler(int, siginfo_t* info, vo
+ // need the arch-specific boilerplate below, which is inspired by breakpad.
+ // At the same time, on OSX, ucontext.h is deprecated but si_addr works fine.
+ uintptr_t crash_addr = 0;
+-#if defined(OS_MACOSX)
++#if defined(OS_MACOSX) || defined(OS_BSD)
+ crash_addr = reinterpret_cast<uintptr_t>(info->si_addr);
+ #else // OS_POSIX && !OS_MACOSX
+ ucontext_t* context = reinterpret_cast<ucontext_t*>(context_ptr);
diff --git a/devel/electron7/files/patch-base_memory_platform__shared__memory__region.h b/devel/electron7/files/patch-base_memory_platform__shared__memory__region.h
new file mode 100644
index 000000000000..8423436755c4
--- /dev/null
+++ b/devel/electron7/files/patch-base_memory_platform__shared__memory__region.h
@@ -0,0 +1,29 @@
+--- base/memory/platform_shared_memory_region.h.orig 2019-12-12 12:38:59 UTC
++++ base/memory/platform_shared_memory_region.h
+@@ -28,7 +28,7 @@
+ #include "base/files/scoped_file.h"
+ #endif
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ namespace content {
+ class SandboxIPCHandler;
+ }
+@@ -122,7 +122,7 @@ class BASE_EXPORT PlatformSharedMemoryRegion {
+ kMaxValue = GET_SHMEM_TEMP_DIR_FAILURE
+ };
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Structure to limit access to executable region creation.
+ struct ExecutableRegion {
+ private:
+@@ -276,7 +276,7 @@ class BASE_EXPORT PlatformSharedMemoryRegion {
+ CheckPlatformHandlePermissionsCorrespondToMode);
+ static PlatformSharedMemoryRegion Create(Mode mode,
+ size_t size
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ ,
+ bool executable = false
+ #endif
diff --git a/devel/electron7/files/patch-base_memory_platform__shared__memory__region__posix.cc b/devel/electron7/files/patch-base_memory_platform__shared__memory__region__posix.cc
new file mode 100644
index 000000000000..b203930fa652
--- /dev/null
+++ b/devel/electron7/files/patch-base_memory_platform__shared__memory__region__posix.cc
@@ -0,0 +1,38 @@
+--- base/memory/platform_shared_memory_region_posix.cc.orig 2019-12-12 12:38:59 UTC
++++ base/memory/platform_shared_memory_region_posix.cc
+@@ -76,7 +76,7 @@ FDPair ScopedFDPair::get() const {
+ return {fd.get(), readonly_fd.get()};
+ }
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // static
+ ScopedFD PlatformSharedMemoryRegion::ExecutableRegion::CreateFD(size_t size) {
+ PlatformSharedMemoryRegion region =
+@@ -85,7 +85,7 @@ ScopedFD PlatformSharedMemoryRegion::ExecutableRegion:
+ return region.PassPlatformHandle().fd;
+ return ScopedFD();
+ }
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+
+ // static
+ PlatformSharedMemoryRegion PlatformSharedMemoryRegion::Take(
+@@ -224,7 +224,7 @@ bool PlatformSharedMemoryRegion::MapAtInternal(off_t o
+ // static
+ PlatformSharedMemoryRegion PlatformSharedMemoryRegion::Create(Mode mode,
+ size_t size
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ ,
+ bool executable
+ #endif
+@@ -255,7 +255,7 @@ PlatformSharedMemoryRegion PlatformSharedMemoryRegion:
+ // flag.
+ FilePath directory;
+ if (!GetShmemTempDir(
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ executable,
+ #else
+ false /* executable */,
diff --git a/devel/electron7/files/patch-base_memory_protected__memory__posix.cc b/devel/electron7/files/patch-base_memory_protected__memory__posix.cc
new file mode 100644
index 000000000000..98657482ccd8
--- /dev/null
+++ b/devel/electron7/files/patch-base_memory_protected__memory__posix.cc
@@ -0,0 +1,31 @@
+--- base/memory/protected_memory_posix.cc.orig 2019-12-12 12:38:59 UTC
++++ base/memory/protected_memory_posix.cc
+@@ -8,9 +8,9 @@
+ #include <sys/mman.h>
+ #include <unistd.h>
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include <sys/resource.h>
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+
+ #if defined(OS_MACOSX) && !defined(OS_IOS)
+ #include <mach/mach.h>
+@@ -44,7 +44,7 @@ bool AutoWritableMemory::SetMemoryReadOnly(void* start
+ return SetMemory(start, end, PROT_READ);
+ }
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ void AssertMemoryIsReadOnly(const void* ptr) {
+ #if DCHECK_IS_ON()
+ const uintptr_t page_mask = ~(base::GetPageSize() - 1);
+@@ -74,6 +74,6 @@ void AssertMemoryIsReadOnly(const void* ptr) {
+ DCHECK_EQ(region_info.protection, VM_PROT_READ);
+ #endif // DCHECK_IS_ON()
+ }
+-#endif // defined(OS_LINUX) || (defined(OS_MACOSX) && !defined(OS_IOS))
++#endif // defined(OS_LINUX) || (defined(OS_MACOSX) && !defined(OS_IOS)) || defined(OS_BSD)
+
+ } // namespace base
diff --git a/devel/electron7/files/patch-base_native__library__posix.cc b/devel/electron7/files/patch-base_native__library__posix.cc
new file mode 100644
index 000000000000..8fd0f6f1b026
--- /dev/null
+++ b/devel/electron7/files/patch-base_native__library__posix.cc
@@ -0,0 +1,11 @@
+--- base/native_library_posix.cc.orig 2019-12-12 12:38:59 UTC
++++ base/native_library_posix.cc
+@@ -29,7 +29,7 @@ NativeLibrary LoadNativeLibraryWithOptions(const FileP
+ // http://crbug.com/17943, http://crbug.com/17557, http://crbug.com/36892,
+ // and http://crbug.com/40794.
+ int flags = RTLD_LAZY;
+-#if defined(OS_ANDROID) || !defined(RTLD_DEEPBIND)
++#if defined(OS_ANDROID) || !defined(RTLD_DEEPBIND) || defined(OS_BSD)
+ // Certain platforms don't define RTLD_DEEPBIND. Android dlopen() requires
+ // further investigation, as it might vary across versions. Crash here to
+ // warn developers that they're trying to rely on uncertain behavior.
diff --git a/devel/electron7/files/patch-base_native__library__unittest.cc b/devel/electron7/files/patch-base_native__library__unittest.cc
new file mode 100644
index 000000000000..96c08fe82e29
--- /dev/null
+++ b/devel/electron7/files/patch-base_native__library__unittest.cc
@@ -0,0 +1,11 @@
+--- base/native_library_unittest.cc.orig 2019-12-12 12:38:59 UTC
++++ base/native_library_unittest.cc
+@@ -120,7 +120,7 @@ TEST(NativeLibraryTest, LoadLibrary) {
+ // Android dlopen() requires further investigation, as it might vary across
+ // versions with respect to symbol resolution scope.
+ // TSan and MSan error out on RTLD_DEEPBIND, https://crbug.com/705255
+-#if !defined(OS_ANDROID) && !defined(THREAD_SANITIZER) && \
++#if !defined(OS_ANDROID) && !defined(OS_BSD) && !defined(THREAD_SANITIZER) && \
+ !defined(MEMORY_SANITIZER)
+
+ // Verifies that the |prefer_own_symbols| option satisfies its guarantee that
diff --git a/devel/electron7/files/patch-base_numerics_safe__math__shared__impl.h b/devel/electron7/files/patch-base_numerics_safe__math__shared__impl.h
new file mode 100644
index 000000000000..652624923dd6
--- /dev/null
+++ b/devel/electron7/files/patch-base_numerics_safe__math__shared__impl.h
@@ -0,0 +1,12 @@
+--- base/numerics/safe_math_shared_impl.h.orig 2019-12-12 12:38:59 UTC
++++ base/numerics/safe_math_shared_impl.h
+@@ -23,8 +23,7 @@
+ // Where available use builtin math overflow support on Clang and GCC.
+ #elif !defined(__native_client__) && \
+ ((defined(__clang__) && \
+- ((__clang_major__ > 3) || \
+- (__clang_major__ == 3 && __clang_minor__ >= 4))) || \
++ (__clang_major__ > 6)) || \
+ (defined(__GNUC__) && __GNUC__ >= 5))
+ #include "base/numerics/safe_math_clang_gcc_impl.h"
+ #define BASE_HAS_OPTIMIZED_SAFE_MATH (1)
diff --git a/devel/electron7/files/patch-base_posix_can__lower__nice__to.cc b/devel/electron7/files/patch-base_posix_can__lower__nice__to.cc
new file mode 100644
index 000000000000..74f3db3bf710
--- /dev/null
+++ b/devel/electron7/files/patch-base_posix_can__lower__nice__to.cc
@@ -0,0 +1,20 @@
+--- base/posix/can_lower_nice_to.cc.orig 2019-12-12 12:38:59 UTC
++++ base/posix/can_lower_nice_to.cc
+@@ -31,6 +31,9 @@ bool CanLowerNiceTo(int nice_value) {
+ if (geteuid() == 0)
+ return true;
+
++#if defined(OS_BSD)
++ return false;
++#else
+ // 2. Skip checking the CAP_SYS_NICE permission because it would require
+ // libcap.so.
+
+@@ -54,6 +57,7 @@ bool CanLowerNiceTo(int nice_value) {
+ // And lowering niceness to |nice_value| is allowed if it is greater than or
+ // equal to the limit:
+ return nice_value >= lowest_nice_allowed;
++#endif
+ }
+
+ } // namespace internal
diff --git a/devel/electron7/files/patch-base_posix_unix__domain__socket.cc b/devel/electron7/files/patch-base_posix_unix__domain__socket.cc
new file mode 100644
index 000000000000..58d72a4930bf
--- /dev/null
+++ b/devel/electron7/files/patch-base_posix_unix__domain__socket.cc
@@ -0,0 +1,49 @@
+--- base/posix/unix_domain_socket.cc.orig 2019-12-12 12:38:59 UTC
++++ base/posix/unix_domain_socket.cc
+@@ -5,7 +5,10 @@
+ #include "base/posix/unix_domain_socket.h"
+
+ #include <errno.h>
++#include <sys/param.h>
+ #include <sys/socket.h>
++#include <sys/types.h>
++#include <sys/ucred.h>
+ #if !defined(OS_NACL_NONSFI)
+ #include <sys/un.h>
+ #endif
+@@ -28,6 +31,14 @@ namespace base {
+
+ const size_t UnixDomainSocket::kMaxFileDescriptors = 16;
+
++#ifndef SCM_CREDENTIALS
++# define SCM_CREDENTIALS 0x9001
++#endif
++
++#ifndef SO_PASSCRED
++# define SO_PASSCRED 0x9002
++#endif
++
+ #if !defined(OS_NACL_NONSFI)
+ bool CreateSocketPair(ScopedFD* one, ScopedFD* two) {
+ int raw_socks[2];
+@@ -150,7 +161,7 @@ ssize_t UnixDomainSocket::RecvMsgWithFlags(int fd,
+ #if !defined(OS_NACL_NONSFI) && !defined(OS_MACOSX)
+ // The PNaCl toolchain for Non-SFI binary build and macOS do not support
+ // ucred. macOS supports xucred, but this structure is insufficient.
+- + CMSG_SPACE(sizeof(struct ucred))
++ + CMSG_SPACE(sizeof(struct cmsgcred))
+ #endif // OS_NACL_NONSFI or OS_MACOSX
+ ;
+ char control_buffer[kControlBufferSize];
+@@ -180,9 +191,9 @@ ssize_t UnixDomainSocket::RecvMsgWithFlags(int fd,
+ // SCM_CREDENTIALS.
+ if (cmsg->cmsg_level == SOL_SOCKET &&
+ cmsg->cmsg_type == SCM_CREDENTIALS) {
+- DCHECK_EQ(payload_len, sizeof(struct ucred));
++ DCHECK_EQ(payload_len, sizeof(struct cmsgcred));
+ DCHECK_EQ(pid, -1);
+- pid = reinterpret_cast<struct ucred*>(CMSG_DATA(cmsg))->pid;
++ pid = getpid();
+ }
+ #endif // !defined(OS_NACL_NONSFI) && !defined(OS_MACOSX)
+ }
diff --git a/devel/electron7/files/patch-base_posix_unix__domain__socket__unittest.cc b/devel/electron7/files/patch-base_posix_unix__domain__socket__unittest.cc
new file mode 100644
index 000000000000..2d83f7b43fbf
--- /dev/null
+++ b/devel/electron7/files/patch-base_posix_unix__domain__socket__unittest.cc
@@ -0,0 +1,12 @@
+--- base/posix/unix_domain_socket_unittest.cc.orig 2019-12-12 12:38:59 UTC
++++ base/posix/unix_domain_socket_unittest.cc
+@@ -8,6 +8,9 @@
+ #include <stdint.h>
+ #include <sys/socket.h>
+ #include <sys/types.h>
++#if defined(OS_BSD)
++#include <signal.h>
++#endif
+ #include <unistd.h>
+
+ #include "base/bind.h"
diff --git a/devel/electron7/files/patch-base_process_internal__linux.cc b/devel/electron7/files/patch-base_process_internal__linux.cc
new file mode 100644
index 000000000000..70ed99e68b10
--- /dev/null
+++ b/devel/electron7/files/patch-base_process_internal__linux.cc
@@ -0,0 +1,16 @@
+--- base/process/internal_linux.cc.orig 2019-12-12 12:38:59 UTC
++++ base/process/internal_linux.cc
+@@ -60,10 +60,13 @@ bool ReadProcFile(const FilePath& file, std::string* b
+ // Synchronously reading files in /proc is safe.
+ ThreadRestrictions::ScopedAllowIO allow_io;
+
++#if !defined(OS_BSD)
+ if (!ReadFileToString(file, buffer)) {
+ DLOG(WARNING) << "Failed to read " << file.MaybeAsASCII();
+ return false;
+ }
++#endif
++
+ return !buffer->empty();
+ }
+
diff --git a/devel/electron7/files/patch-base_process_internal__linux.h b/devel/electron7/files/patch-base_process_internal__linux.h
new file mode 100644
index 000000000000..ebbb7cfed0e4
--- /dev/null
+++ b/devel/electron7/files/patch-base_process_internal__linux.h
@@ -0,0 +1,11 @@
+--- base/process/internal_linux.h.orig 2019-12-12 12:38:59 UTC
++++ base/process/internal_linux.h
+@@ -14,6 +14,8 @@
+
+ #include "base/files/file_path.h"
+
++#include <unistd.h> /* pid_t */
++
+ namespace base {
+
+ class Time;
diff --git a/devel/electron7/files/patch-base_process_kill.h b/devel/electron7/files/patch-base_process_kill.h
new file mode 100644
index 000000000000..a40eaf78358c
--- /dev/null
+++ b/devel/electron7/files/patch-base_process_kill.h
@@ -0,0 +1,16 @@
+--- base/process/kill.h.orig 2019-12-12 12:38:59 UTC
++++ base/process/kill.h
+@@ -111,11 +111,11 @@ BASE_EXPORT TerminationStatus GetTerminationStatus(Pro
+ BASE_EXPORT TerminationStatus GetKnownDeadTerminationStatus(
+ ProcessHandle handle, int* exit_code);
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Spawns a thread to wait asynchronously for the child |process| to exit
+ // and then reaps it.
+ BASE_EXPORT void EnsureProcessGetsReaped(Process process);
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+ #endif // defined(OS_POSIX)
+
+ // Registers |process| to be asynchronously monitored for termination, forcibly
diff --git a/devel/electron7/files/patch-base_process_kill__posix.cc b/devel/electron7/files/patch-base_process_kill__posix.cc
new file mode 100644
index 000000000000..3f23896a31ed
--- /dev/null
+++ b/devel/electron7/files/patch-base_process_kill__posix.cc
@@ -0,0 +1,20 @@
+--- base/process/kill_posix.cc.orig 2019-12-12 12:38:59 UTC
++++ base/process/kill_posix.cc
+@@ -168,7 +168,7 @@ void EnsureProcessTerminated(Process process) {
+ 0, new BackgroundReaper(std::move(process), TimeDelta::FromSeconds(2)));
+ }
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ void EnsureProcessGetsReaped(Process process) {
+ DCHECK(!process.is_current());
+
+@@ -179,7 +179,7 @@ void EnsureProcessGetsReaped(Process process) {
+ PlatformThread::CreateNonJoinable(
+ 0, new BackgroundReaper(std::move(process), TimeDelta()));
+ }
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+
+ #endif // !defined(OS_MACOSX)
+ #endif // !defined(OS_NACL_NONSFI)
diff --git a/devel/electron7/files/patch-base_process_launch.cc b/devel/electron7/files/patch-base_process_launch.cc
new file mode 100644
index 000000000000..5d2612677510
--- /dev/null
+++ b/devel/electron7/files/patch-base_process_launch.cc
@@ -0,0 +1,11 @@
+--- base/process/launch.cc.orig 2019-12-12 12:38:59 UTC
++++ base/process/launch.cc
+@@ -15,7 +15,7 @@ LaunchOptions::~LaunchOptions() = default;
+
+ LaunchOptions LaunchOptionsForTest() {
+ LaunchOptions options;
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // To prevent accidental privilege sharing to an untrusted child, processes
+ // are started with PR_SET_NO_NEW_PRIVS. Do not set that here, since this
+ // new child will be used for testing only.
diff --git a/devel/electron7/files/patch-base_process_launch.h b/devel/electron7/files/patch-base_process_launch.h
new file mode 100644
index 000000000000..5820538410e1
--- /dev/null
+++ b/devel/electron7/files/patch-base_process_launch.h
@@ -0,0 +1,20 @@
+--- base/process/launch.h.orig 2019-12-12 12:38:59 UTC
++++ base/process/launch.h
+@@ -181,7 +181,7 @@ struct BASE_EXPORT LaunchOptions {
+ bool clear_environment = false;
+ #endif // OS_WIN || OS_POSIX || OS_FUCHSIA
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // If non-zero, start the process using clone(), using flags as provided.
+ // Unlike in clone, clone_flags may not contain a custom termination signal
+ // that is sent to the parent when the child dies. The termination signal will
+@@ -194,7 +194,7 @@ struct BASE_EXPORT LaunchOptions {
+
+ // Sets parent process death signal to SIGKILL.
+ bool kill_on_parent_death = false;
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+
+ #if defined(OS_MACOSX) && !defined(OS_IOS)
+ // Mach ports that will be accessible to the child process. These are not
diff --git a/devel/electron7/files/patch-base_process_launch__posix.cc b/devel/electron7/files/patch-base_process_launch__posix.cc
new file mode 100644
index 000000000000..83fbcd8b3b04
--- /dev/null
+++ b/devel/electron7/files/patch-base_process_launch__posix.cc
@@ -0,0 +1,10 @@
+--- base/process/launch_posix.cc.orig 2019-12-12 12:38:59 UTC
++++ base/process/launch_posix.cc
+@@ -65,6 +65,7 @@
+ #error "macOS should use launch_mac.cc"
+ #endif
+
++#pragma weak environ
+ extern char** environ;
+
+ namespace base {
diff --git a/devel/electron7/files/patch-base_process_memory.cc b/devel/electron7/files/patch-base_process_memory.cc
new file mode 100644
index 000000000000..16233a9e8e30
--- /dev/null
+++ b/devel/electron7/files/patch-base_process_memory.cc
@@ -0,0 +1,20 @@
+--- base/process/memory.cc.orig 2019-12-12 12:38:59 UTC
++++ base/process/memory.cc
+@@ -10,7 +10,7 @@
+ namespace base {
+
+ // Defined in memory_win.cc for Windows.
+-#if !defined(OS_WIN)
++#if !defined(OS_WIN) && !defined(OS_BSD)
+
+ namespace {
+
+@@ -31,7 +31,7 @@ void TerminateBecauseOutOfMemory(size_t size) {
+ #endif
+
+ // Defined in memory_mac.mm for Mac.
+-#if !defined(OS_MACOSX)
++#if !defined(OS_MACOSX) && !defined(OS_BSD)
+
+ bool UncheckedCalloc(size_t num_items, size_t size, void** result) {
+ const size_t alloc_size = num_items * size;
diff --git a/devel/electron7/files/patch-base_process_memory.h b/devel/electron7/files/patch-base_process_memory.h
new file mode 100644
index 000000000000..31ec96bed7ed
--- /dev/null
+++ b/devel/electron7/files/patch-base_process_memory.h
@@ -0,0 +1,11 @@
+--- base/process/memory.h.orig 2019-12-12 12:38:59 UTC
++++ base/process/memory.h
+@@ -24,7 +24,7 @@ BASE_EXPORT void EnableTerminationOnOutOfMemory();
+ // Crash reporting classifies such crashes as OOM.
+ BASE_EXPORT void TerminateBecauseOutOfMemory(size_t size);
+
+-#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_AIX)
++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_AIX) || defined(OS_BSD)
+ BASE_EXPORT extern size_t g_oom_size;
+
+ // The maximum allowed value for the OOM score.
diff --git a/devel/electron7/files/patch-base_process_memory__unittest.cc b/devel/electron7/files/patch-base_process_memory__unittest.cc
new file mode 100644
index 000000000000..fae63fb49bf7
--- /dev/null
+++ b/devel/electron7/files/patch-base_process_memory__unittest.cc
@@ -0,0 +1,18 @@
+--- base/process/memory_unittest.cc.orig 2019-12-12 12:38:59 UTC
++++ base/process/memory_unittest.cc
+@@ -104,7 +104,7 @@ TEST(MemoryTest, AllocatorShimWorking) {
+ // OpenBSD does not support these tests. Don't test these on ASan/TSan/MSan
+ // configurations: only test the real allocator.
+ // Windows only supports these tests with the allocator shim in place.
+-#if !defined(OS_OPENBSD) && BUILDFLAG(USE_ALLOCATOR_SHIM) && \
++#if !defined(OS_BSD) && BUILDFLAG(USE_ALLOCATOR_SHIM) && \
+ !defined(MEMORY_TOOL_REPLACES_ALLOCATOR)
+
+ namespace {
+@@ -527,5 +527,5 @@ TEST_F(OutOfMemoryHandledTest, UncheckedCalloc) {
+ EXPECT_FALSE(base::UncheckedCalloc(1, test_size_, &value_));
+ EXPECT_TRUE(value_ == nullptr);
+ }
+-#endif // !defined(OS_OPENBSD) && BUILDFLAG(ENABLE_WIN_ALLOCATOR_SHIM_TESTS) &&
++#endif // !defined(OS_BSD) && BUILDFLAG(ENABLE_WIN_ALLOCATOR_SHIM_TESTS) &&
+ // !defined(MEMORY_TOOL_REPLACES_ALLOCATOR)
diff --git a/devel/electron7/files/patch-base_process_process__handle.cc b/devel/electron7/files/patch-base_process_process__handle.cc
new file mode 100644
index 000000000000..c4575276fab2
--- /dev/null
+++ b/devel/electron7/files/patch-base_process_process__handle.cc
@@ -0,0 +1,11 @@
+--- base/process/process_handle.cc.orig 2019-12-12 12:38:59 UTC
++++ base/process/process_handle.cc
+@@ -28,7 +28,7 @@ UniqueProcId GetUniqueIdForProcess() {
+ : UniqueProcId(GetCurrentProcId());
+ }
+
+-#if defined(OS_LINUX) || defined(OS_AIX)
++#if defined(OS_LINUX) || defined(OS_AIX) || defined(OS_BSD)
+
+ void InitUniqueIdForProcessInPidNamespace(ProcessId pid_outside_of_namespace) {
+ DCHECK(pid_outside_of_namespace != kNullProcessId);
diff --git a/devel/electron7/files/patch-base_process_process__handle.h b/devel/electron7/files/patch-base_process_process__handle.h
new file mode 100644
index 000000000000..638951f20779
--- /dev/null
+++ b/devel/electron7/files/patch-base_process_process__handle.h
@@ -0,0 +1,11 @@
+--- base/process/process_handle.h.orig 2019-12-12 12:38:59 UTC
++++ base/process/process_handle.h
+@@ -103,7 +103,7 @@ BASE_EXPORT ProcessId GetCurrentProcId();
+ // processes may be reused.
+ BASE_EXPORT UniqueProcId GetUniqueIdForProcess();
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // When a process is started in a different PID namespace from the browser
+ // process, this function must be called with the process's PID in the browser's
+ // PID namespace in order to initialize its unique ID. Not thread safe.
diff --git a/devel/electron7/files/patch-base_process_process__handle__freebsd.cc b/devel/electron7/files/patch-base_process_process__handle__freebsd.cc
new file mode 100644
index 000000000000..9f9ae3afd626
--- /dev/null
+++ b/devel/electron7/files/patch-base_process_process__handle__freebsd.cc
@@ -0,0 +1,17 @@
+--- base/process/process_handle_freebsd.cc.orig 2019-12-12 12:38:59 UTC
++++ base/process/process_handle_freebsd.cc
+@@ -16,10 +16,13 @@ namespace base {
+
+ ProcessId GetParentProcessId(ProcessHandle process) {
+ struct kinfo_proc info;
+- size_t length;
++ size_t length = sizeof(struct kinfo_proc);
+ int mib[] = { CTL_KERN, KERN_PROC, KERN_PROC_PID, process };
+
+ if (sysctl(mib, base::size(mib), &info, &length, NULL, 0) < 0)
++ return -1;
++
++ if (length < sizeof(struct kinfo_proc))
+ return -1;
+
+ return info.ki_ppid;
diff --git a/devel/electron7/files/patch-base_process_process__iterator__freebsd.cc b/devel/electron7/files/patch-base_process_process__iterator__freebsd.cc
new file mode 100644
index 000000000000..42a706175d6e
--- /dev/null
+++ b/devel/electron7/files/patch-base_process_process__iterator__freebsd.cc
@@ -0,0 +1,44 @@
+--- base/process/process_iterator_freebsd.cc.orig 2019-12-12 12:38:59 UTC
++++ base/process/process_iterator_freebsd.cc
+@@ -10,6 +10,10 @@
+ #include <sys/sysctl.h>
+ #include <unistd.h>
+
++/* getuid() */
++#include <unistd.h>
++#include <sys/types.h>
++
+ #include "base/logging.h"
+ #include "base/stl_util.h"
+ #include "base/strings/string_split.h"
+@@ -40,7 +44,7 @@ ProcessIterator::ProcessIterator(const ProcessFilter*
+ num_of_kinfo_proc += 16;
+ kinfo_procs_.resize(num_of_kinfo_proc);
+ len = num_of_kinfo_proc * sizeof(struct kinfo_proc);
+- if (sysctl(mib, base::size(mib), &kinfo_procs_[0], &len, NULL, 0) < 0) {
++ if (sysctl(mib, base::size(mib), kinfo_procs_.data(), &len, NULL, 0) < 0) {
+ // If we get a mem error, it just means we need a bigger buffer, so
+ // loop around again. Anything else is a real error and give up.
+ if (errno != ENOMEM) {
+@@ -72,18 +76,13 @@ bool ProcessIterator::CheckForNextProcess() {
+ for (; index_of_kinfo_proc_ < kinfo_procs_.size(); ++index_of_kinfo_proc_) {
+ size_t length;
+ struct kinfo_proc kinfo = kinfo_procs_[index_of_kinfo_proc_];
+- int mib[] = { CTL_KERN, KERN_PROC_ARGS, kinfo.ki_pid };
++ int mib[] = { CTL_KERN, KERN_PROC, KERN_PROC_ARGS, kinfo.ki_pid };
+
+ if ((kinfo.ki_pid > 0) && (kinfo.ki_stat == SZOMB))
+ continue;
+
+- length = 0;
+- if (sysctl(mib, base::size(mib), NULL, &length, NULL, 0) < 0) {
+- LOG(ERROR) << "failed to figure out the buffer size for a command line";
+- continue;
+- }
+-
+- data.resize(length);
++ data.resize(ARG_MAX);
++ length = ARG_MAX;
+
+ if (sysctl(mib, base::size(mib), &data[0], &length, NULL, 0) < 0) {
+ LOG(ERROR) << "failed to fetch a commandline";
diff --git a/devel/electron7/files/patch-base_process_process__linux.cc b/devel/electron7/files/patch-base_process_process__linux.cc
new file mode 100644
index 000000000000..c021feafba53
--- /dev/null
+++ b/devel/electron7/files/patch-base_process_process__linux.cc
@@ -0,0 +1,18 @@
+--- base/process/process_linux.cc.orig 2019-12-12 12:38:59 UTC
++++ base/process/process_linux.cc
+@@ -88,6 +88,7 @@ Time Process::CreationTime() const {
+ return Time(boot_time + start_offset);
+ }
+
++#if !defined(OS_BSD)
+ // static
+ bool Process::CanBackgroundProcesses() {
+ #if defined(OS_CHROMEOS)
+@@ -139,6 +140,7 @@ bool Process::SetProcessBackgrounded(bool background)
+ DPCHECK(result == 0);
+ return result == 0;
+ }
++#endif // !defined(OS_BSD)
+
+ #if defined(OS_CHROMEOS)
+ bool IsProcessBackgroundedCGroup(const StringPiece& cgroup_contents) {
diff --git a/devel/electron7/files/patch-base_process_process__metrics.cc b/devel/electron7/files/patch-base_process_process__metrics.cc
new file mode 100644
index 000000000000..7c4300cb8b76
--- /dev/null
+++ b/devel/electron7/files/patch-base_process_process__metrics.cc
@@ -0,0 +1,38 @@
+--- base/process/process_metrics.cc.orig 2019-12-12 12:38:59 UTC
++++ base/process/process_metrics.cc
+@@ -57,7 +57,7 @@ SystemMetrics SystemMetrics::Sample() {
+ SystemMetrics system_metrics;
+
+ system_metrics.committed_memory_ = GetSystemCommitCharge();
+-#if defined(OS_LINUX) || defined(OS_ANDROID)
++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
+ GetSystemMemoryInfo(&system_metrics.memory_info_);
+ GetVmStatInfo(&system_metrics.vmstat_info_);
+ GetSystemDiskInfo(&system_metrics.disk_info_);
+@@ -75,7 +75,7 @@ std::unique_ptr<Value> SystemMetrics::ToValue() const
+ std::unique_ptr<DictionaryValue> res(new DictionaryValue());
+
+ res->SetIntKey("committed_memory", static_cast<int>(committed_memory_));
+-#if defined(OS_LINUX) || defined(OS_ANDROID)
++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
+ std::unique_ptr<DictionaryValue> meminfo = memory_info_.ToValue();
+ std::unique_ptr<DictionaryValue> vmstat = vmstat_info_.ToValue();
+ meminfo->MergeDictionary(vmstat.get());
+@@ -126,7 +126,7 @@ double ProcessMetrics::GetPlatformIndependentCPUUsage(
+ }
+ #endif
+
+-#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_AIX)
++#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_AIX) || defined(OS_BSD)
+ int ProcessMetrics::CalculateIdleWakeupsPerSecond(
+ uint64_t absolute_idle_wakeups) {
+ return CalculateEventsPerSecond(absolute_idle_wakeups,
+@@ -138,7 +138,7 @@ int ProcessMetrics::GetIdleWakeupsPerSecond() {
+ NOTIMPLEMENTED(); // http://crbug.com/120488
+ return 0;
+ }
+-#endif // defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_AIX)
++#endif // defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_AIX) || defined(OS_BSD)
+
+ #if defined(OS_MACOSX)
+ int ProcessMetrics::CalculatePackageIdleWakeupsPerSecond(
diff --git a/devel/electron7/files/patch-base_process_process__metrics.h b/devel/electron7/files/patch-base_process_process__metrics.h
new file mode 100644
index 000000000000..ed6b4dcfba2c
--- /dev/null
+++ b/devel/electron7/files/patch-base_process_process__metrics.h
@@ -0,0 +1,131 @@
+--- base/process/process_metrics.h.orig 2019-12-12 12:38:59 UTC
++++ base/process/process_metrics.h
+@@ -41,7 +41,7 @@ namespace base {
+ // Full declaration is in process_metrics_iocounters.h.
+ struct IoCounters;
+
+-#if defined(OS_LINUX) || defined(OS_ANDROID)
++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
+ // Minor and major page fault counts since the process creation.
+ // Both counts are process-wide, and exclude child processes.
+ //
+@@ -51,7 +51,7 @@ struct PageFaultCounts {
+ int64_t minor;
+ int64_t major;
+ };
+-#endif // defined(OS_LINUX) || defined(OS_ANDROID)
++#endif // defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
+
+ // Convert a POSIX timeval to microseconds.
+ BASE_EXPORT int64_t TimeValToMicroseconds(const struct timeval& tv);
+@@ -92,7 +92,7 @@ class BASE_EXPORT ProcessMetrics {
+ // convenience wrapper for CreateProcessMetrics().
+ static std::unique_ptr<ProcessMetrics> CreateCurrentProcessMetrics();
+
+-#if defined(OS_LINUX) || defined(OS_ANDROID)
++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
+ // Resident Set Size is a Linux/Android specific memory concept. Do not
+ // attempt to extend this to other platforms.
+ BASE_EXPORT size_t GetResidentSetSize() const;
+@@ -172,14 +172,14 @@ class BASE_EXPORT ProcessMetrics {
+ int GetOpenFdSoftLimit() const;
+ #endif // defined(OS_POSIX)
+
+-#if defined(OS_LINUX) || defined(OS_ANDROID)
++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
+ // Bytes of swap as reported by /proc/[pid]/status.
+ uint64_t GetVmSwapBytes() const;
+
+ // Minor and major page fault count as reported by /proc/[pid]/stat.
+ // Returns true for success.
+ bool GetPageFaultCounts(PageFaultCounts* counts) const;
+-#endif // defined(OS_LINUX) || defined(OS_ANDROID)
++#endif // defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
+
+ // Returns total memory usage of malloc.
+ size_t GetMallocUsage();
+@@ -191,7 +191,7 @@ class BASE_EXPORT ProcessMetrics {
+ ProcessMetrics(ProcessHandle process, PortProvider* port_provider);
+ #endif // !defined(OS_MACOSX) || defined(OS_IOS)
+
+-#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_AIX)
++#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_AIX) || defined(OS_BSD)
+ int CalculateIdleWakeupsPerSecond(uint64_t absolute_idle_wakeups);
+ #endif
+ #if defined(OS_MACOSX)
+@@ -220,7 +220,7 @@ class BASE_EXPORT ProcessMetrics {
+ // Number of bytes transferred to/from disk in bytes.
+ uint64_t last_cumulative_disk_usage_ = 0;
+
+-#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_AIX)
++#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_AIX) || defined(OS_BSD)
+ // Same thing for idle wakeups.
+ TimeTicks last_idle_wakeups_time_;
+ uint64_t last_absolute_idle_wakeups_;
+@@ -271,7 +271,7 @@ BASE_EXPORT size_t GetHandleLimit();
+ BASE_EXPORT void IncreaseFdLimitTo(unsigned int max_descriptors);
+ #endif // defined(OS_POSIX)
+
+-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || \
++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD) || \
+ defined(OS_ANDROID) || defined(OS_AIX) || defined(OS_FUCHSIA)
+ // Data about system-wide memory consumption. Values are in KB. Available on
+ // Windows, Mac, Linux, Android and Chrome OS.
+@@ -305,7 +305,7 @@ struct BASE_EXPORT SystemMemoryInfoKB {
+ int avail_phys = 0;
+ #endif
+
+-#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_AIX)
++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_AIX) || defined(OS_BSD)
+ // This provides an estimate of available memory as described here:
+ // https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=34e431b0ae398fc54ea69ff85ec700722c9da773
+ // NOTE: this is ONLY valid in kernels 3.14 and up. Its value will always
+@@ -319,7 +319,7 @@ struct BASE_EXPORT SystemMemoryInfoKB {
+ int swap_free = 0;
+ #endif
+
+-#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_AIX) || \
++#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_AIX) || defined(OS_BSD) || \
+ defined(OS_FUCHSIA)
+ int buffers = 0;
+ int cached = 0;
+@@ -329,7 +329,7 @@ struct BASE_EXPORT SystemMemoryInfoKB {
+ int inactive_file = 0;
+ int dirty = 0;
+ int reclaimable = 0;
+-#endif // defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_AIX) ||
++#endif // defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_AIX) || defined(OS_BSD) ||
+ // defined(OS_FUCHSIA)
+
+ #if defined(OS_CHROMEOS)
+@@ -355,10 +355,10 @@ struct BASE_EXPORT SystemMemoryInfoKB {
+ // Exposed for memory debugging widget.
+ BASE_EXPORT bool GetSystemMemoryInfo(SystemMemoryInfoKB* meminfo);
+
+-#endif // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) ||
++#endif // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+ // defined(OS_ANDROID) || defined(OS_AIX) || defined(OS_FUCHSIA)
+
+-#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_AIX)
++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_AIX) || defined(OS_BSD)
+ // Parse the data found in /proc/<pid>/stat and return the sum of the
+ // CPU-related ticks. Returns -1 on parse error.
+ // Exposed for testing.
+@@ -431,7 +431,7 @@ BASE_EXPORT bool GetSystemDiskInfo(SystemDiskInfo* dis
+ // Returns the amount of time spent in user space since boot across all CPUs.
+ BASE_EXPORT TimeDelta GetUserCpuTimeSinceBoot();
+
+-#endif // defined(OS_LINUX) || defined(OS_ANDROID)
++#endif // defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
+
+ #if defined(OS_CHROMEOS)
+ // Data from files in directory /sys/block/zram0 about ZRAM usage.
+@@ -526,7 +526,7 @@ class BASE_EXPORT SystemMetrics {
+ FRIEND_TEST_ALL_PREFIXES(SystemMetricsTest, SystemMetrics);
+
+ size_t committed_memory_;
+-#if defined(OS_LINUX) || defined(OS_ANDROID)
++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
+ SystemMemoryInfoKB memory_info_;
+ VmStatInfo vmstat_info_;
+ SystemDiskInfo disk_info_;
diff --git a/devel/electron7/files/patch-base_process_process__metrics__freebsd.cc b/devel/electron7/files/patch-base_process_process__metrics__freebsd.cc
new file mode 100644
index 000000000000..e091385afce2
--- /dev/null
+++ b/devel/electron7/files/patch-base_process_process__metrics__freebsd.cc
@@ -0,0 +1,259 @@
+--- base/process/process_metrics_freebsd.cc.orig 2019-12-12 12:38:59 UTC
++++ base/process/process_metrics_freebsd.cc
+@@ -5,6 +5,7 @@
+ #include "base/process/process_metrics.h"
+
+ #include <stddef.h>
++#include <sys/types.h>
+ #include <sys/sysctl.h>
+ #include <sys/user.h>
+ #include <unistd.h>
+@@ -14,11 +15,29 @@
+ #include "base/process/process_metrics_iocounters.h"
+ #include "base/stl_util.h"
+
++#include <unistd.h> /* getpagesize() */
++#include <fcntl.h> /* O_RDONLY */
++#include <kvm.h>
++#include <libutil.h>
++
+ namespace base {
++namespace {
+
++int GetPageShift() {
++ int pagesize = getpagesize();
++ int pageshift = 0;
++
++ while (pagesize > 1) {
++ pageshift++;
++ pagesize >>= 1;
++ }
++
++ return pageshift;
++}
++}
++
+ ProcessMetrics::ProcessMetrics(ProcessHandle process)
+- : process_(process),
+- last_cpu_(0) {}
++ : process_(process) {}
+
+ // static
+ std::unique_ptr<ProcessMetrics> ProcessMetrics::CreateProcessMetrics(
+@@ -69,4 +88,216 @@ size_t GetSystemCommitCharge() {
+ return mem_total - (mem_free*pagesize) - (mem_inactive*pagesize);
+ }
+
++int GetNumberOfThreads(ProcessHandle process) {
++ // Taken from FreeBSD top (usr.bin/top/machine.c)
++
++ kvm_t* kd = kvm_open(NULL, "/dev/null", NULL, O_RDONLY, "kvm_open");
++ if (kd == NULL)
++ return 0;
++
++ struct kinfo_proc* pbase;
++ int nproc;
++ pbase = kvm_getprocs(kd, KERN_PROC_PID, process, &nproc);
++ if (pbase == NULL)
++ return 0;
++
++ if (kvm_close(kd) == -1)
++ return 0;
++
++ return nproc;
++}
++
++bool GetSystemMemoryInfo(SystemMemoryInfoKB *meminfo) {
++ unsigned int mem_total, mem_free, swap_total, swap_used;
++ size_t length;
++ int pagesizeKB;
++
++ pagesizeKB = getpagesize() / 1024;
++
++ length = sizeof(mem_total);
++ if (sysctlbyname("vm.stats.vm.v_page_count", &mem_total,
++ &length, NULL, 0) != 0 || length != sizeof(mem_total))
++ return false;
++
++ length = sizeof(mem_free);
++ if (sysctlbyname("vm.stats.vm.v_free_count", &mem_free, &length, NULL, 0)
++ != 0 || length != sizeof(mem_free))
++ return false;
++
++ length = sizeof(swap_total);
++ if (sysctlbyname("vm.swap_size", &swap_total, &length, NULL, 0)
++ != 0 || length != sizeof(swap_total))
++ return false;
++
++ length = sizeof(swap_used);
++ if (sysctlbyname("vm.swap_anon_use", &swap_used, &length, NULL, 0)
++ != 0 || length != sizeof(swap_used))
++ return false;
++
++ meminfo->total = mem_total * pagesizeKB;
++ meminfo->free = mem_free * pagesizeKB;
++ meminfo->swap_total = swap_total * pagesizeKB;
++ meminfo->swap_free = (swap_total - swap_used) * pagesizeKB;
++
++ return true;
++}
++
++int ProcessMetrics::GetOpenFdCount() const {
++ struct kinfo_file * kif;
++ int cnt;
++
++ if ((kif = kinfo_getfile(process_, &cnt)) == NULL)
++ return -1;
++
++ free(kif);
++
++ return cnt;
++}
++
++int ProcessMetrics::GetOpenFdSoftLimit() const {
++ size_t length;
++ int total_count = 0;
++ int mib[] = { CTL_KERN, KERN_MAXFILESPERPROC };
++
++ length = sizeof(total_count);
++
++ if (sysctl(mib, base::size(mib), &total_count, &length, NULL, 0) < 0) {
++ total_count = -1;
++ }
++
++ return total_count;
++}
++
++size_t ProcessMetrics::GetResidentSetSize() const {
++ kvm_t *kd = kvm_open(nullptr, "/dev/null", nullptr, O_RDONLY, "kvm_open");
++
++ if (kd == nullptr)
++ return 0;
++
++ struct kinfo_proc *pp;
++ int nproc;
++
++ if ((pp = kvm_getprocs(kd, KERN_PROC_PID, process_, &nproc)) == nullptr) {
++ kvm_close(kd);
++ return 0;
++ }
++
++ size_t rss;
++
++ if (nproc > 0) {
++ rss = pp->ki_rssize << GetPageShift();
++ } else {
++ rss = 0;
++ }
++
++ kvm_close(kd);
++ return rss;
++}
++
++uint64_t ProcessMetrics::GetVmSwapBytes() const {
++ kvm_t *kd = kvm_open(nullptr, "/dev/null", nullptr, O_RDONLY, "kvm_open");
++
++ if (kd == nullptr)
++ return 0;
++
++ struct kinfo_proc *pp;
++ int nproc;
++
++ if ((pp = kvm_getprocs(kd, KERN_PROC_PID, process_, &nproc)) == nullptr) {
++ kvm_close(kd);
++ return 0;
++ }
++
++ size_t swrss;
++
++ if (nproc > 0) {
++ swrss = pp->ki_swrss > pp->ki_rssize
++ ? (pp->ki_swrss - pp->ki_rssize) << GetPageShift()
++ : 0;
++ } else {
++ swrss = 0;
++ }
++
++ kvm_close(kd);
++ return swrss;
++}
++
++int ProcessMetrics::GetIdleWakeupsPerSecond() {
++ NOTIMPLEMENTED();
++ return 0;
++}
++
++bool GetSystemDiskInfo(SystemDiskInfo* diskinfo) {
++ NOTIMPLEMENTED();
++ return false;
++}
++
++bool GetVmStatInfo(VmStatInfo* vmstat) {
++ NOTIMPLEMENTED();
++ return false;
++}
++
++SystemDiskInfo::SystemDiskInfo() {
++ reads = 0;
++ reads_merged = 0;
++ sectors_read = 0;
++ read_time = 0;
++ writes = 0;
++ writes_merged = 0;
++ sectors_written = 0;
++ write_time = 0;
++ io = 0;
++ io_time = 0;
++ weighted_io_time = 0;
++}
++
++SystemDiskInfo::SystemDiskInfo(const SystemDiskInfo& other) = default;
++
++std::unique_ptr<Value> SystemDiskInfo::ToValue() const {
++ auto res = std::make_unique<DictionaryValue>();
++
++ // Write out uint64_t variables as doubles.
++ // Note: this may discard some precision, but for JS there's no other option.
++ res->SetDouble("reads", static_cast<double>(reads));
++ res->SetDouble("reads_merged", static_cast<double>(reads_merged));
++ res->SetDouble("sectors_read", static_cast<double>(sectors_read));
++ res->SetDouble("read_time", static_cast<double>(read_time));
++ res->SetDouble("writes", static_cast<double>(writes));
++ res->SetDouble("writes_merged", static_cast<double>(writes_merged));
++ res->SetDouble("sectors_written", static_cast<double>(sectors_written));
++ res->SetDouble("write_time", static_cast<double>(write_time));
++ res->SetDouble("io", static_cast<double>(io));
++ res->SetDouble("io_time", static_cast<double>(io_time));
++ res->SetDouble("weighted_io_time", static_cast<double>(weighted_io_time));
++
++ return std::move(res);
++}
++
++std::unique_ptr<DictionaryValue> SystemMemoryInfoKB::ToValue() const {
++ auto res = std::make_unique<DictionaryValue>();
++ res->SetIntKey("total", total);
++ res->SetIntKey("free", free);
++ res->SetIntKey("available", available);
++ res->SetIntKey("buffers", buffers);
++ res->SetIntKey("cached", cached);
++ res->SetIntKey("active_anon", active_anon);
++ res->SetIntKey("inactive_anon", inactive_anon);
++ res->SetIntKey("active_file", active_file);
++ res->SetIntKey("inactive_file", inactive_file);
++ res->SetIntKey("swap_total", swap_total);
++ res->SetIntKey("swap_free", swap_free);
++ res->SetIntKey("swap_used", swap_total - swap_free);
++ res->SetIntKey("dirty", dirty);
++ res->SetIntKey("reclaimable", reclaimable);
++
++ return res;
++}
++
++std::unique_ptr<DictionaryValue> VmStatInfo::ToValue() const {
++ auto res = std::make_unique<DictionaryValue>();
++ res->SetIntKey("pswpin", pswpin);
++ res->SetIntKey("pswpout", pswpout);
++ res->SetIntKey("pgmajfault", pgmajfault);
++ return res;
++}
+ } // namespace base
diff --git a/devel/electron7/files/patch-base_process_process__metrics__posix.cc b/devel/electron7/files/patch-base_process_process__metrics__posix.cc
new file mode 100644
index 000000000000..8e01ca8dca75
--- /dev/null
+++ b/devel/electron7/files/patch-base_process_process__metrics__posix.cc
@@ -0,0 +1,20 @@
+--- base/process/process_metrics_posix.cc.orig 2019-12-12 12:38:59 UTC
++++ base/process/process_metrics_posix.cc
+@@ -20,6 +20,8 @@
+
+ #if defined(OS_MACOSX)
+ #include <malloc/malloc.h>
++#elif defined(OS_FREEBSD)
++#include <stdlib.h>
+ #else
+ #include <malloc.h>
+ #endif
+@@ -117,7 +119,7 @@ size_t ProcessMetrics::GetMallocUsage() {
+ #else
+ return minfo.hblkhd + minfo.arena;
+ #endif
+-#elif defined(OS_FUCHSIA)
++#elif defined(OS_FUCHSIA) || defined(OS_BSD)
+ // TODO(fuchsia): Not currently exposed. https://crbug.com/735087.
+ return 0;
+ #endif
diff --git a/devel/electron7/files/patch-base_process_process__unittest.cc b/devel/electron7/files/patch-base_process_process__unittest.cc
new file mode 100644
index 000000000000..9550ce5b6d1a
--- /dev/null
+++ b/devel/electron7/files/patch-base_process_process__unittest.cc
@@ -0,0 +1,11 @@
+--- base/process/process_unittest.cc.orig 2019-12-12 12:38:59 UTC
++++ base/process/process_unittest.cc
+@@ -148,7 +148,7 @@ TEST_F(ProcessTest, CreationTimeOtherProcess) {
+ // was spawned and a time recorded after it was spawned. However, since the
+ // base::Time and process creation clocks don't match, tolerate some error.
+ constexpr base::TimeDelta kTolerance =
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // On Linux, process creation time is relative to boot time which has a
+ // 1-second resolution. Tolerate 1 second for the imprecise boot time and
+ // 100 ms for the imprecise clock.
diff --git a/devel/electron7/files/patch-base_profiler_stack__sampling__profiler__unittest.cc b/devel/electron7/files/patch-base_profiler_stack__sampling__profiler__unittest.cc
new file mode 100644
index 000000000000..b8f3d1497a5f
--- /dev/null
+++ b/devel/electron7/files/patch-base_profiler_stack__sampling__profiler__unittest.cc
@@ -0,0 +1,11 @@
+--- base/profiler/stack_sampling_profiler_unittest.cc.orig 2019-12-12 12:38:59 UTC
++++ base/profiler/stack_sampling_profiler_unittest.cc
+@@ -41,7 +41,7 @@
+ #include <intrin.h>
+ #include <malloc.h>
+ #include <windows.h>
+-#else
++#elif !defined(OS_BSD)
+ #include <alloca.h>
+ #endif
+
diff --git a/devel/electron7/files/patch-base_sampling__heap__profiler_sampling__heap__profiler.cc b/devel/electron7/files/patch-base_sampling__heap__profiler_sampling__heap__profiler.cc
new file mode 100644
index 000000000000..b210f2506a40
--- /dev/null
+++ b/devel/electron7/files/patch-base_sampling__heap__profiler_sampling__heap__profiler.cc
@@ -0,0 +1,24 @@
+--- base/sampling_heap_profiler/sampling_heap_profiler.cc.orig 2019-12-12 12:38:59 UTC
++++ base/sampling_heap_profiler/sampling_heap_profiler.cc
+@@ -29,6 +29,10 @@
+ #include <sys/prctl.h>
+ #endif
+
++#if defined(OS_BSD)
++#include <pthread_np.h>
++#endif
++
+ #if defined(OS_ANDROID) && BUILDFLAG(CAN_UNWIND_WITH_CFI_TABLE) && \
+ defined(OFFICIAL_BUILD)
+ #include "base/trace_event/cfi_backtrace_android.h"
+@@ -64,6 +68,10 @@ const char* GetAndLeakThreadName() {
+ #elif defined(OS_MACOSX)
+ int err = pthread_getname_np(pthread_self(), name, kBufferLen);
+ if (err == 0 && *name != '\0')
++ return strdup(name);
++#elif defined(OS_BSD) && __FreeBSD__ >= 12
++ pthread_get_name_np(pthread_self(), name, kBufferLen);
++ if (*name != '\0')
+ return strdup(name);
+ #endif // defined(OS_LINUX) || defined(OS_ANDROID)
+
diff --git a/devel/electron7/files/patch-base_security__unittest.cc b/devel/electron7/files/patch-base_security__unittest.cc
new file mode 100644
index 000000000000..ec5eb1b2d413
--- /dev/null
+++ b/devel/electron7/files/patch-base_security__unittest.cc
@@ -0,0 +1,11 @@
+--- base/security_unittest.cc.orig 2019-12-12 12:38:59 UTC
++++ base/security_unittest.cc
+@@ -60,7 +60,7 @@ NOINLINE Type HideValueFromCompiler(volatile Type valu
+ // FAILS_ is too clunky.
+ void OverflowTestsSoftExpectTrue(bool overflow_detected) {
+ if (!overflow_detected) {
+-#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_MACOSX)
++#if defined(OS_POSIX) && !defined(OS_NACL)
+ // Sadly, on Linux, Android, and OSX we don't have a good story yet. Don't
+ // fail the test, but report.
+ printf("Platform has overflow: %s\n",
diff --git a/devel/electron7/files/patch-base_strings_safe__sprintf__unittest.cc b/devel/electron7/files/patch-base_strings_safe__sprintf__unittest.cc
new file mode 100644
index 000000000000..9253e826377b
--- /dev/null
+++ b/devel/electron7/files/patch-base_strings_safe__sprintf__unittest.cc
@@ -0,0 +1,18 @@
+--- base/strings/safe_sprintf_unittest.cc.orig 2019-12-12 12:38:59 UTC
++++ base/strings/safe_sprintf_unittest.cc
+@@ -730,6 +730,7 @@ TEST(SafeSPrintfTest, EmbeddedNul) {
+ }
+
+ TEST(SafeSPrintfTest, EmitNULL) {
++/* Avoid compiler error: http://pastebin.com/1edWUE84
+ char buf[40];
+ #if defined(__GNUC__)
+ #pragma GCC diagnostic push
+@@ -741,6 +742,7 @@ TEST(SafeSPrintfTest, EmitNULL) {
+ EXPECT_EQ("0x0", std::string(buf));
+ EXPECT_EQ(6, SafeSPrintf(buf, "%s", NULL));
+ EXPECT_EQ("<NULL>", std::string(buf));
++*/
+ #if defined(__GCC__)
+ #pragma GCC diagnostic pop
+ #endif
diff --git a/devel/electron7/files/patch-base_syslog__logging.cc b/devel/electron7/files/patch-base_syslog__logging.cc
new file mode 100644
index 000000000000..0dd0be8ef3a4
--- /dev/null
+++ b/devel/electron7/files/patch-base_syslog__logging.cc
@@ -0,0 +1,20 @@
+--- base/syslog_logging.cc.orig 2019-12-12 12:38:59 UTC
++++ base/syslog_logging.cc
+@@ -14,7 +14,7 @@
+ #include "base/debug/stack_trace.h"
+ #include "base/strings/string_util.h"
+ #include "base/win/win_util.h"
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ // <syslog.h> defines LOG_INFO, LOG_WARNING macros that could conflict with
+ // base::LOG_INFO, base::LOG_WARNING.
+ #include <syslog.h>
+@@ -113,7 +113,7 @@ EventLogMessage::~EventLogMessage() {
+
+ if (user_sid != nullptr)
+ ::LocalFree(user_sid);
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ const char kEventSource[] = "chrome";
+ openlog(kEventSource, LOG_NOWAIT | LOG_PID, LOG_USER);
+ // We can't use the defined names for the logging severity from syslog.h
diff --git a/devel/electron7/files/patch-base_system_sys__info.h b/devel/electron7/files/patch-base_system_sys__info.h
new file mode 100644
index 000000000000..e32ab2f83ad6
--- /dev/null
+++ b/devel/electron7/files/patch-base_system_sys__info.h
@@ -0,0 +1,11 @@
+--- base/system/sys_info.h.orig 2019-12-12 12:38:59 UTC
++++ base/system/sys_info.h
+@@ -192,7 +192,7 @@ class BASE_EXPORT SysInfo {
+ static bool IsLowEndDeviceImpl();
+ static HardwareInfo GetHardwareInfoSync();
+
+-#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_AIX)
++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_AIX) || defined(OS_BSD)
+ static int64_t AmountOfAvailablePhysicalMemory(
+ const SystemMemoryInfoKB& meminfo);
+ #endif
diff --git a/devel/electron7/files/patch-base_system_sys__info__freebsd.cc b/devel/electron7/files/patch-base_system_sys__info__freebsd.cc
new file mode 100644
index 000000000000..23141b8da3b8
--- /dev/null
+++ b/devel/electron7/files/patch-base_system_sys__info__freebsd.cc
@@ -0,0 +1,59 @@
+--- base/system/sys_info_freebsd.cc.orig 2019-12-12 12:38:59 UTC
++++ base/system/sys_info_freebsd.cc
+@@ -13,26 +13,46 @@
+ namespace base {
+
+ int64_t SysInfo::AmountOfPhysicalMemoryImpl() {
+- int pages, page_size;
++ int pages, page_size, r = 0;
+ size_t size = sizeof(pages);
+- sysctlbyname("vm.stats.vm.v_page_count", &pages, &size, NULL, 0);
+- sysctlbyname("vm.stats.vm.v_page_size", &page_size, &size, NULL, 0);
+- if (pages == -1 || page_size == -1) {
++ if(r == 0)
++ r = sysctlbyname("vm.stats.vm.v_page_count", &pages, &size, NULL, 0);
++ if(r == 0)
++ r =sysctlbyname("vm.stats.vm.v_page_size", &page_size, &size, NULL, 0);
++ if(r == -1) {
+ NOTREACHED();
+ return 0;
+ }
+ return static_cast<int64_t>(pages) * page_size;
+ }
+
+-// static
+-uint64_t SysInfo::MaxSharedMemorySize() {
+- size_t limit;
+- size_t size = sizeof(limit);
+- if (sysctlbyname("kern.ipc.shmmax", &limit, &size, NULL, 0) < 0) {
++int64_t SysInfo::AmountOfAvailablePhysicalMemoryImpl() {
++ int page_size, r = 0;
++ unsigned pgfree, pginact, pgcache;
++ size_t size = sizeof(page_size);
++ size_t szpg = sizeof(pgfree);
++ if(r == 0)
++ r = sysctlbyname("vm.stats.vm.v_page_size", &page_size, &size, NULL, 0);
++ if(r == 0)
++ r = sysctlbyname("vm.stats.vm.v_free_count", &pgfree, &szpg, NULL, 0);
++ if(r == 0)
++ r = sysctlbyname("vm.stats.vm.v_inactive_count", &pginact, &szpg, NULL, 0);
++ if(r == 0)
++ r = sysctlbyname("vm.stats.vm.v_cache_count", &pgcache, &szpg, NULL, 0);
++ if(r == -1) {
+ NOTREACHED();
+ return 0;
+ }
+- return static_cast<uint64_t>(limit);
++ return static_cast<int64_t>((pgfree + pginact + pgcache) * page_size);
+ }
+
++// static
++std::string SysInfo::CPUModelName() {
++ int mib[] = { CTL_HW, HW_MODEL };
++ char name[256];
++ size_t size = base::size(name);
++ if (sysctl(mib, base::size(mib), &name, &size, NULL, 0) == 0)
++ return name;
++ return std::string();
++}
+ } // namespace base
diff --git a/devel/electron7/files/patch-base_system_sys__info__posix.cc b/devel/electron7/files/patch-base_system_sys__info__posix.cc
new file mode 100644
index 000000000000..e04f71d00e24
--- /dev/null
+++ b/devel/electron7/files/patch-base_system_sys__info__posix.cc
@@ -0,0 +1,11 @@
+--- base/system/sys_info_posix.cc.orig 2019-12-12 12:38:59 UTC
++++ base/system/sys_info_posix.cc
+@@ -220,6 +220,8 @@ std::string SysInfo::OperatingSystemArchitecture() {
+ arch = "x86";
+ } else if (arch == "amd64") {
+ arch = "x86_64";
++ } else if (arch == "arm64") {
++ arch = "aarch64";
+ } else if (std::string(info.sysname) == "AIX") {
+ arch = "ppc64";
+ }
diff --git a/devel/electron7/files/patch-base_task_thread__pool_environment__config__unittest.cc b/devel/electron7/files/patch-base_task_thread__pool_environment__config__unittest.cc
new file mode 100644
index 000000000000..25fc8953b299
--- /dev/null
+++ b/devel/electron7/files/patch-base_task_thread__pool_environment__config__unittest.cc
@@ -0,0 +1,11 @@
+--- base/task/thread_pool/environment_config_unittest.cc.orig 2019-12-12 12:38:59 UTC
++++ base/task/thread_pool/environment_config_unittest.cc
+@@ -14,7 +14,7 @@ namespace internal {
+ TEST(ThreadPoolEnvironmentConfig, CanUseBackgroundPriorityForWorker) {
+ #if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_IOS)
+ EXPECT_TRUE(CanUseBackgroundPriorityForWorkerThread());
+-#elif defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_FUCHSIA) || \
++#elif defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_FUCHSIA) || defined(OS_BSD) || \
+ defined(OS_CHROMEOS) || defined(OS_NACL)
+ EXPECT_FALSE(CanUseBackgroundPriorityForWorkerThread());
+ #else
diff --git a/devel/electron7/files/patch-base_test_fontconfig__util__linux.cc b/devel/electron7/files/patch-base_test_fontconfig__util__linux.cc
new file mode 100644
index 000000000000..1fccc0ad2475
--- /dev/null
+++ b/devel/electron7/files/patch-base_test_fontconfig__util__linux.cc
@@ -0,0 +1,408 @@
+--- base/test/fontconfig_util_linux.cc.orig 2019-12-12 12:38:59 UTC
++++ base/test/fontconfig_util_linux.cc
+@@ -6,24 +6,397 @@
+
+ #include <fontconfig/fontconfig.h>
+
+-#include <memory>
+-
+ #include "base/base_paths.h"
+ #include "base/environment.h"
+ #include "base/files/file_path.h"
++#include "base/files/file_util.h"
+ #include "base/logging.h"
++#include "base/macros.h"
+ #include "base/path_service.h"
++#include "base/strings/string_util.h"
+
+ namespace base {
+
++namespace {
++
++const char kFontsConfTemplate[] = R"(<?xml version="1.0"?>
++<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
++<fontconfig>
++
++ <!-- Cache location. -->
++ <cachedir>$1</cachedir>
++
++ <!-- GCS-synced fonts. -->
++ <dir>$2</dir>
++
++ <!-- Default properties. -->
++ <match target="font">
++ <edit name="embeddedbitmap" mode="append_last">
++ <bool>false</bool>
++ </edit>
++ </match>
++
++ <match target="pattern">
++ <test qual="any" name="family">
++ <string>Times</string>
++ </test>
++ <edit name="family" mode="assign">
++ <string>Tinos</string>
++ </edit>
++ </match>
++
++ <match target="pattern">
++ <test qual="any" name="family">
++ <string>sans</string>
++ </test>
++ <edit name="family" mode="assign">
++ <string>DejaVu Sans</string>
++ </edit>
++ </match>
++
++ <match target="pattern">
++ <test qual="any" name="family">
++ <string>sans serif</string>
++ </test>
++ <edit name="family" mode="assign">
++ <string>Arimo</string>
++ </edit>
++ </match>
++
++ <!-- Some layout tests specify Helvetica as a family and we need to make sure
++ that we don't fallback to Tinos for them -->
++ <match target="pattern">
++ <test qual="any" name="family">
++ <string>Helvetica</string>
++ </test>
++ <edit name="family" mode="assign">
++ <string>Arimo</string>
++ </edit>
++ </match>
++
++ <match target="pattern">
++ <test qual="any" name="family">
++ <string>sans-serif</string>
++ </test>
++ <edit name="family" mode="assign">
++ <string>Arimo</string>
++ </edit>
++ </match>
++
++ <match target="pattern">
++ <test qual="any" name="family">
++ <string>serif</string>
++ </test>
++ <edit name="family" mode="assign">
++ <string>Tinos</string>
++ </edit>
++ </match>
++
++ <match target="pattern">
++ <test qual="any" name="family">
++ <string>mono</string>
++ </test>
++ <edit name="family" mode="assign">
++ <string>Cousine</string>
++ </edit>
++ </match>
++
++ <match target="pattern">
++ <test qual="any" name="family">
++ <string>monospace</string>
++ </test>
++ <edit name="family" mode="assign">
++ <string>Cousine</string>
++ </edit>
++ </match>
++
++ <match target="pattern">
++ <test qual="any" name="family">
++ <string>Courier</string>
++ </test>
++ <edit name="family" mode="assign">
++ <string>Cousine</string>
++ </edit>
++ </match>
++
++ <match target="pattern">
++ <test qual="any" name="family">
++ <string>cursive</string>
++ </test>
++ <edit name="family" mode="assign">
++ <string>Comic Sans MS</string>
++ </edit>
++ </match>
++
++ <match target="pattern">
++ <test qual="any" name="family">
++ <string>fantasy</string>
++ </test>
++ <edit name="family" mode="assign">
++ <string>Impact</string>
++ </edit>
++ </match>
++
++ <match target="pattern">
++ <test qual="any" name="family">
++ <string>Monaco</string>
++ </test>
++ <edit name="family" mode="assign">
++ <string>Tinos</string>
++ </edit>
++ </match>
++
++ <match target="pattern">
++ <test qual="any" name="family">
++ <string>Arial</string>
++ </test>
++ <edit name="family" mode="assign">
++ <string>Arimo</string>
++ </edit>
++ </match>
++
++ <match target="pattern">
++ <test qual="any" name="family">
++ <string>Courier New</string>
++ </test>
++ <edit name="family" mode="assign">
++ <string>Cousine</string>
++ </edit>
++ </match>
++
++ <match target="pattern">
++ <test qual="any" name="family">
++ <string>Georgia</string>
++ </test>
++ <edit name="family" mode="assign">
++ <string>Gelasio</string>
++ </edit>
++ </match>
++
++ <match target="pattern">
++ <test qual="any" name="family">
++ <string>Times New Roman</string>
++ </test>
++ <edit name="family" mode="assign">
++ <string>Tinos</string>
++ </edit>
++ </match>
++
++ <match target="pattern">
++ <test qual="any" name="family">
++ <string>Verdana</string>
++ </test>
++ <!-- NOT metrically compatible! -->
++ <edit name="family" mode="assign">
++ <string>Arimo</string>
++ </edit>
++ </match>
++
++ <!-- TODO(thomasanderson): Move these configs to be test-specific. -->
++ <match target="pattern">
++ <test name="family" compare="eq">
++ <string>NonAntiAliasedSans</string>
++ </test>
++ <edit name="family" mode="assign">
++ <string>Arimo</string>
++ </edit>
++ <edit name="antialias" mode="assign">
++ <bool>false</bool>
++ </edit>
++ </match>
++
++ <match target="pattern">
++ <test name="family" compare="eq">
++ <string>SlightHintedGeorgia</string>
++ </test>
++ <edit name="family" mode="assign">
++ <string>Gelasio</string>
++ </edit>
++ <edit name="hintstyle" mode="assign">
++ <const>hintslight</const>
++ </edit>
++ </match>
++
++ <match target="pattern">
++ <test name="family" compare="eq">
++ <string>NonHintedSans</string>
++ </test>
++ <edit name="family" mode="assign">
++ <string>Arimo</string>
++ </edit>
++ <!-- These deliberately contradict each other. The 'hinting' preference
++ should take priority -->
++ <edit name="hintstyle" mode="assign">
++ <const>hintfull</const>
++ </edit>
++ <edit name="hinting" mode="assign">
++ <bool>false</bool>
++ </edit>
++ </match>
++
++ <match target="pattern">
++ <test name="family" compare="eq">
++ <string>AutohintedSerif</string>
++ </test>
++ <edit name="family" mode="assign">
++ <string>Arimo</string>
++ </edit>
++ <edit name="autohint" mode="assign">
++ <bool>true</bool>
++ </edit>
++ <edit name="hintstyle" mode="assign">
++ <const>hintmedium</const>
++ </edit>
++ </match>
++
++ <match target="pattern">
++ <test name="family" compare="eq">
++ <string>HintedSerif</string>
++ </test>
++ <edit name="family" mode="assign">
++ <string>Arimo</string>
++ </edit>
++ <edit name="autohint" mode="assign">
++ <bool>false</bool>
++ </edit>
++ <edit name="hintstyle" mode="assign">
++ <const>hintmedium</const>
++ </edit>
++ </match>
++
++ <match target="pattern">
++ <test name="family" compare="eq">
++ <string>FullAndAutoHintedSerif</string>
++ </test>
++ <edit name="family" mode="assign">
++ <string>Arimo</string>
++ </edit>
++ <edit name="autohint" mode="assign">
++ <bool>true</bool>
++ </edit>
++ <edit name="hintstyle" mode="assign">
++ <const>hintfull</const>
++ </edit>
++ </match>
++
++ <match target="pattern">
++ <test name="family" compare="eq">
++ <string>SubpixelEnabledArial</string>
++ </test>
++ <edit name="family" mode="assign">
++ <string>Arimo</string>
++ </edit>
++ <edit name="rgba" mode="assign">
++ <const>rgb</const>
++ </edit>
++ </match>
++
++ <match target="pattern">
++ <test name="family" compare="eq">
++ <string>SubpixelDisabledArial</string>
++ </test>
++ <edit name="family" mode="assign">
++ <string>Arimo</string>
++ </edit>
++ <edit name="rgba" mode="assign">
++ <const>none</const>
++ </edit>
++ </match>
++
++ <match target="pattern">
++ <!-- FontConfig doesn't currently provide a well-defined way to turn on
++ subpixel positioning. This is just an arbitrary pattern to use after
++ turning subpixel positioning on globally to ensure that we don't have
++ issues with our style getting cached for other tests. -->
++ <test name="family" compare="eq">
++ <string>SubpixelPositioning</string>
++ </test>
++ <edit name="family" mode="assign">
++ <string>Tinos</string>
++ </edit>
++ </match>
++
++ <match target="pattern">
++ <!-- See comments above -->
++ <test name="family" compare="eq">
++ <string>SubpixelPositioningAhem</string>
++ </test>
++ <edit name="family" mode="assign">
++ <string>ahem</string>
++ </edit>
++ </match>
++
++ <match target="pattern">
++ <test name="family" compare="eq">
++ <string>SlightHintedTimesNewRoman</string>
++ </test>
++ <edit name="family" mode="assign">
++ <string>Tinos</string>
++ </edit>
++ <edit name="hintstyle" mode="assign">
++ <const>hintslight</const>
++ </edit>
++ </match>
++
++ <!-- When we encounter a character that the current font doesn't
++ support, gfx::GetFallbackFontForChar() returns the first font
++ that does have a glyph for the character. The list of fonts is
++ sorted by a pattern that includes the current locale, but doesn't
++ include a font family (which means that the fallback font depends
++ on the locale but not on the current font).
++
++ DejaVu Sans is commonly the only font that supports some
++ characters, such as "⇧", and even when other candidates are
++ available, DejaVu Sans is commonly first among them, because of
++ the way Fontconfig is ordinarily configured. For example, the
++ configuration in the Fonconfig source lists DejaVu Sans under the
++ sans-serif generic family, and appends sans-serif to patterns
++ that don't already include a generic family (such as the pattern
++ in gfx::GetFallbackFontForChar()).
++
++ To get the same fallback font in the layout tests, we could
++ duplicate this configuration here, or more directly, simply
++ append DejaVu Sans to all patterns. -->
++ <match target="pattern">
++ <edit name="family" mode="append_last">
++ <string>DejaVu Sans</string>
++ </edit>
++ </match>
++
++</fontconfig>
++)";
++
++} // namespace
++
+ void SetUpFontconfig() {
+- FilePath dir_module;
+- CHECK(PathService::Get(DIR_MODULE, &dir_module));
++ std::unique_ptr<Environment> env = Environment::Create();
++ if (!env->HasVar("FONTCONFIG_FILE")) {
++ // fonts.conf must be generated on-the-fly since it contains absolute paths
++ // which may be different if
++ // 1. The user moves/renames their build directory (or any parent dirs).
++ // 2. The build directory is mapped on a swarming bot at a location
++ // different from the one the buildbot used.
++ FilePath dir_module;
++ PathService::Get(DIR_MODULE, &dir_module);
++ FilePath font_cache = dir_module.Append("fontconfig_caches");
++ FilePath test_fonts = dir_module.Append("test_fonts");
++ std::string fonts_conf = ReplaceStringPlaceholders(
++ kFontsConfTemplate, {font_cache.value(), test_fonts.value()}, nullptr);
+
+- std::unique_ptr<Environment> env(Environment::Create());
+- // TODO(thomasanderson): This still stat()'s the real /etc/fonts/fonts.conf.
+- // Prevent fontconfig from doing this.
+- CHECK(env->SetVar("FONTCONFIG_SYSROOT", dir_module.value().c_str()));
++ // Write the data to a different file and then atomically rename it to
++ // fonts.conf. This avoids the file being in a bad state when different
++ // parallel tests call this function at the same time.
++ FilePath fonts_conf_file_temp;
++ if(!CreateTemporaryFileInDir(dir_module, &fonts_conf_file_temp))
++ CHECK(CreateTemporaryFile(&fonts_conf_file_temp));
++ CHECK(
++ WriteFile(fonts_conf_file_temp, fonts_conf.c_str(), fonts_conf.size()));
++ FilePath fonts_conf_file = dir_module.Append("fonts.conf");
++ if (ReplaceFile(fonts_conf_file_temp, fonts_conf_file, nullptr))
++ env->SetVar("FONTCONFIG_FILE", fonts_conf_file.value());
++ else
++ env->SetVar("FONTCONFIG_FILE", fonts_conf_file_temp.value());
++ }
+ }
+
+ } // namespace base
diff --git a/devel/electron7/files/patch-base_test_generate__fontconfig__caches.cc b/devel/electron7/files/patch-base_test_generate__fontconfig__caches.cc
new file mode 100644
index 000000000000..164224117f84
--- /dev/null
+++ b/devel/electron7/files/patch-base_test_generate__fontconfig__caches.cc
@@ -0,0 +1,25 @@
+--- base/test/generate_fontconfig_caches.cc.orig 2019-12-12 12:38:59 UTC
++++ base/test/generate_fontconfig_caches.cc
+@@ -52,14 +52,21 @@ int main() {
+
+ // Delete directory before generating fontconfig caches. This will notify
+ // future fontconfig_caches changes.
+- CHECK(base::DeleteFile(fontconfig_caches, /*recursive=*/true));
+
++ CHECK(base::DeleteFile(fontconfig_caches, /*recursive=*/true));
+ base::SetUpFontconfig();
+ FcInit();
+ FcFini();
+
+ // Check existence of intended fontconfig cache file.
++#if defined(OS_BSD)
++ // Our version of fontconfig is too old to respect .uuid files in font directories,
++ // so we check for the CACHEDIR.TAG file instead
+ CHECK(base::PathExists(
++ fontconfig_caches.Append("CACHEDIR.TAG")));
++#else
++ CHECK(base::PathExists(
+ fontconfig_caches.Append(base::StrCat({uuid, "-le64.cache-7"}))));
++#endif
+ return 0;
+ }
diff --git a/devel/electron7/files/patch-base_test_launcher_test__launcher.cc b/devel/electron7/files/patch-base_test_launcher_test__launcher.cc
new file mode 100644
index 000000000000..2b6329da75a1
--- /dev/null
+++ b/devel/electron7/files/patch-base_test_launcher_test__launcher.cc
@@ -0,0 +1,10 @@
+--- base/test/launcher/test_launcher.cc.orig 2019-12-12 12:38:59 UTC
++++ base/test/launcher/test_launcher.cc
+@@ -54,6 +54,7 @@
+ #include "testing/gtest/include/gtest/gtest.h"
+
+ #if defined(OS_POSIX)
++#include <signal.h>
+ #include <fcntl.h>
+
+ #include "base/files/file_descriptor_watcher_posix.h"
diff --git a/devel/electron7/files/patch-base_test_test__file__util__linux.cc b/devel/electron7/files/patch-base_test_test__file__util__linux.cc
new file mode 100644
index 000000000000..ec7077dfd16d
--- /dev/null
+++ b/devel/electron7/files/patch-base_test_test__file__util__linux.cc
@@ -0,0 +1,13 @@
+--- base/test/test_file_util_linux.cc.orig 2019-12-12 12:38:59 UTC
++++ base/test/test_file_util_linux.cc
+@@ -51,8 +51,10 @@ bool EvictFileFromSystemCache(const FilePath& file) {
+ return false;
+ if (fdatasync(fd.get()) != 0)
+ return false;
++#if !defined(OS_BSD)
+ if (posix_fadvise(fd.get(), 0, 0, POSIX_FADV_DONTNEED) != 0)
+ return false;
++#endif
+ return true;
+ }
+
diff --git a/devel/electron7/files/patch-base_test_test__file__util__posix.cc b/devel/electron7/files/patch-base_test_test__file__util__posix.cc
new file mode 100644
index 000000000000..3e278261b9d2
--- /dev/null
+++ b/devel/electron7/files/patch-base_test_test__file__util__posix.cc
@@ -0,0 +1,11 @@
+--- base/test/test_file_util_posix.cc.orig 2019-12-12 12:38:59 UTC
++++ base/test/test_file_util_posix.cc
+@@ -85,7 +85,7 @@ void SyncPageCacheToDisk() {
+ sync();
+ }
+
+-#if !defined(OS_LINUX) && !defined(OS_MACOSX) && !defined(OS_ANDROID)
++#if !defined(OS_LINUX) && !defined(OS_MACOSX) && !defined(OS_ANDROID) && !defined(OS_BSD)
+ bool EvictFileFromSystemCache(const FilePath& file) {
+ // There doesn't seem to be a POSIX way to cool the disk cache.
+ NOTIMPLEMENTED();
diff --git a/devel/electron7/files/patch-base_third__party_libevent_BUILD.gn b/devel/electron7/files/patch-base_third__party_libevent_BUILD.gn
new file mode 100644
index 000000000000..2c6a362ed19d
--- /dev/null
+++ b/devel/electron7/files/patch-base_third__party_libevent_BUILD.gn
@@ -0,0 +1,24 @@
+--- base/third_party/libevent/BUILD.gn.orig 2019-12-12 12:38:59 UTC
++++ base/third_party/libevent/BUILD.gn
+@@ -43,13 +43,20 @@ static_library("libevent") {
+ "mac/event-config.h",
+ ]
+ include_dirs = [ "mac" ]
+- } else if (is_linux) {
++ } else if (is_linux && !is_bsd) {
+ sources += [
+ "epoll.c",
+ "linux/config.h",
+ "linux/event-config.h",
+ ]
+ include_dirs = [ "linux" ]
++ } else if (is_bsd) {
++ sources += [
++ "kqueue.c",
++ "freebsd/config.h",
++ "freebsd/event-config.h",
++ ]
++ include_dirs = [ "freebsd" ]
+ } else if (is_android) {
+ sources += [
+ "android/config.h",
diff --git a/devel/electron7/files/patch-base_threading_platform__thread.h b/devel/electron7/files/patch-base_threading_platform__thread.h
new file mode 100644
index 000000000000..70970f918ea1
--- /dev/null
+++ b/devel/electron7/files/patch-base_threading_platform__thread.h
@@ -0,0 +1,11 @@
+--- base/threading/platform_thread.h.orig 2019-12-12 12:38:59 UTC
++++ base/threading/platform_thread.h
+@@ -221,7 +221,7 @@ class BASE_EXPORT PlatformThread {
+
+ static ThreadPriority GetCurrentThreadPriority();
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Toggles a specific thread's priority at runtime. This can be used to
+ // change the priority of a thread in a different process and will fail
+ // if the calling process does not have proper permissions. The
diff --git a/devel/electron7/files/patch-base_threading_platform__thread__linux.cc b/devel/electron7/files/patch-base_threading_platform__thread__linux.cc
new file mode 100644
index 000000000000..644345925489
--- /dev/null
+++ b/devel/electron7/files/patch-base_threading_platform__thread__linux.cc
@@ -0,0 +1,30 @@
+--- base/threading/platform_thread_linux.cc.orig 2019-12-12 12:38:59 UTC
++++ base/threading/platform_thread_linux.cc
+@@ -18,7 +18,9 @@
+
+ #if !defined(OS_NACL) && !defined(OS_AIX)
+ #include <pthread.h>
++#if !defined(OS_BSD)
+ #include <sys/prctl.h>
++#endif
+ #include <sys/resource.h>
+ #include <sys/time.h>
+ #include <sys/types.h>
+@@ -99,7 +101,7 @@ const ThreadPriorityToNiceValuePair kThreadPriorityToN
+
+ Optional<bool> CanIncreaseCurrentThreadPriorityForPlatform(
+ ThreadPriority priority) {
+-#if !defined(OS_NACL)
++#if !defined(OS_NACL) && !defined(OS_BSD)
+ // A non-zero soft-limit on RLIMIT_RTPRIO is required to be allowed to invoke
+ // pthread_setschedparam in SetCurrentThreadPriorityForPlatform().
+ struct rlimit rlim;
+@@ -141,7 +143,7 @@ Optional<ThreadPriority> GetCurrentThreadPriorityForPl
+ void PlatformThread::SetName(const std::string& name) {
+ ThreadIdNameManager::GetInstance()->SetName(name);
+
+-#if !defined(OS_NACL) && !defined(OS_AIX)
++#if !defined(OS_NACL) && !defined(OS_AIX) && !defined(OS_BSD)
+ // On linux we can get the thread names to show up in the debugger by setting
+ // the process name for the LWP. We don't want to do this for the main
+ // thread because that would rename the process, causing tools like killall
diff --git a/devel/electron7/files/patch-base_threading_platform__thread__posix.cc b/devel/electron7/files/patch-base_threading_platform__thread__posix.cc
new file mode 100644
index 000000000000..0f861a580d83
--- /dev/null
+++ b/devel/electron7/files/patch-base_threading_platform__thread__posix.cc
@@ -0,0 +1,11 @@
+--- base/threading/platform_thread_posix.cc.orig 2019-12-12 12:38:59 UTC
++++ base/threading/platform_thread_posix.cc
+@@ -66,7 +66,7 @@ void* ThreadFunc(void* params) {
+ if (!thread_params->joinable)
+ base::ThreadRestrictions::SetSingletonAllowed(false);
+
+-#if !defined(OS_NACL)
++#if !defined(OS_NACL) && !defined(OS_BSD)
+ // Threads on linux/android may inherit their priority from the thread
+ // where they were created. This explicitly sets the priority of all new
+ // threads.
diff --git a/devel/electron7/files/patch-base_threading_thread__local__storage__unittest.cc b/devel/electron7/files/patch-base_threading_thread__local__storage__unittest.cc
new file mode 100644
index 000000000000..f2843e3e9e91
--- /dev/null
+++ b/devel/electron7/files/patch-base_threading_thread__local__storage__unittest.cc
@@ -0,0 +1,11 @@
+--- base/threading/thread_local_storage_unittest.cc.orig 2019-12-12 12:38:59 UTC
++++ base/threading/thread_local_storage_unittest.cc
+@@ -86,7 +86,7 @@ class ThreadLocalStorageRunner : public DelegateSimple
+ void ThreadLocalStorageCleanup(void *value) {
+ int *ptr = reinterpret_cast<int*>(value);
+ // Destructors should never be called with a NULL.
+- ASSERT_NE(reinterpret_cast<int*>(NULL), ptr);
++ ASSERT_NE(static_cast<int*>(NULL), ptr);
+ if (*ptr == kFinalTlsValue)
+ return; // We've been called enough times.
+ ASSERT_LT(kFinalTlsValue, *ptr);
diff --git a/devel/electron7/files/patch-base_threading_thread__task__runner__handle.cc b/devel/electron7/files/patch-base_threading_thread__task__runner__handle.cc
new file mode 100644
index 000000000000..0b9f22e5cf23
--- /dev/null
+++ b/devel/electron7/files/patch-base_threading_thread__task__runner__handle.cc
@@ -0,0 +1,26 @@
+--- base/threading/thread_task_runner_handle.cc.orig 2019-12-12 12:38:59 UTC
++++ base/threading/thread_task_runner_handle.cc
+@@ -8,6 +8,7 @@
+ #include <utility>
+
+ #include "base/bind.h"
++#include "base/callback_helpers.h"
+ #include "base/lazy_instance.h"
+ #include "base/logging.h"
+ #include "base/run_loop.h"
+@@ -37,6 +38,7 @@ bool ThreadTaskRunnerHandle::IsSet() {
+ return !!thread_task_runner_tls.Pointer()->Get();
+ }
+
++#if defined(OS_BSD)
+ // static
+ ScopedClosureRunner ThreadTaskRunnerHandle::OverrideForTesting(
+ scoped_refptr<SingleThreadTaskRunner> overriding_task_runner) {
+@@ -81,6 +83,7 @@ ScopedClosureRunner ThreadTaskRunnerHandle::OverrideFo
+ base::Unretained(ttrh->task_runner_.get()),
+ std::move(no_running_during_override)));
+ }
++#endif
+
+ ThreadTaskRunnerHandle::ThreadTaskRunnerHandle(
+ scoped_refptr<SingleThreadTaskRunner> task_runner)
diff --git a/devel/electron7/files/patch-base_trace__event_malloc__dump__provider.cc b/devel/electron7/files/patch-base_trace__event_malloc__dump__provider.cc
new file mode 100644
index 000000000000..51fa45f5ef79
--- /dev/null
+++ b/devel/electron7/files/patch-base_trace__event_malloc__dump__provider.cc
@@ -0,0 +1,21 @@
+--- base/trace_event/malloc_dump_provider.cc.orig 2019-12-12 12:38:59 UTC
++++ base/trace_event/malloc_dump_provider.cc
+@@ -17,6 +17,8 @@
+
+ #if defined(OS_MACOSX)
+ #include <malloc/malloc.h>
++#elif defined(OS_BSD)
++#include <stdlib.h>
+ #else
+ #include <malloc.h>
+ #endif
+@@ -132,6 +134,9 @@ bool MallocDumpProvider::OnMemoryDump(const MemoryDump
+ }
+ #elif defined(OS_FUCHSIA)
+ // TODO(fuchsia): Port, see https://crbug.com/706592.
++#elif defined(OS_BSD)
++ total_virtual_size = 0;
++ allocated_objects_size = 0;
+ #else
+ struct mallinfo info = mallinfo();
+ DCHECK_GE(info.arena + info.hblkhd, info.uordblks);
diff --git a/devel/electron7/files/patch-base_trace__event_process__memory__dump.cc b/devel/electron7/files/patch-base_trace__event_process__memory__dump.cc
new file mode 100644
index 000000000000..3a1c41fe1ffa
--- /dev/null
+++ b/devel/electron7/files/patch-base_trace__event_process__memory__dump.cc
@@ -0,0 +1,11 @@
+--- base/trace_event/process_memory_dump.cc.orig 2019-12-12 12:38:59 UTC
++++ base/trace_event/process_memory_dump.cc
+@@ -94,7 +94,7 @@ size_t ProcessMemoryDump::CountResidentBytes(void* sta
+ #if defined(OS_WIN)
+ std::unique_ptr<PSAPI_WORKING_SET_EX_INFORMATION[]> vec(
+ new PSAPI_WORKING_SET_EX_INFORMATION[max_vec_size]);
+-#elif defined(OS_MACOSX)
++#elif defined(OS_MACOSX) || defined(OS_BSD)
+ std::unique_ptr<char[]> vec(new char[max_vec_size]);
+ #elif defined(OS_POSIX) || defined(OS_FUCHSIA)
+ std::unique_ptr<unsigned char[]> vec(new unsigned char[max_vec_size]);
diff --git a/devel/electron7/files/patch-base_trace__event_process__memory__dump.h b/devel/electron7/files/patch-base_trace__event_process__memory__dump.h
new file mode 100644
index 000000000000..86286cf98f33
--- /dev/null
+++ b/devel/electron7/files/patch-base_trace__event_process__memory__dump.h
@@ -0,0 +1,11 @@
+--- base/trace_event/process_memory_dump.h.orig 2019-12-12 12:38:59 UTC
++++ base/trace_event/process_memory_dump.h
+@@ -22,7 +22,7 @@
+
+ // Define COUNT_RESIDENT_BYTES_SUPPORTED if platform supports counting of the
+ // resident memory.
+-#if !defined(OS_NACL)
++#if !defined(OS_NACL) && !defined(OS_BSD)
+ #define COUNT_RESIDENT_BYTES_SUPPORTED
+ #endif
+
diff --git a/devel/electron7/files/patch-build_config_BUILD.gn b/devel/electron7/files/patch-build_config_BUILD.gn
new file mode 100644
index 000000000000..11c36af56013
--- /dev/null
+++ b/devel/electron7/files/patch-build_config_BUILD.gn
@@ -0,0 +1,30 @@
+--- build/config/BUILD.gn.orig 2019-12-12 12:38:59 UTC
++++ build/config/BUILD.gn
+@@ -149,7 +149,7 @@ config("debug") {
+ # builds, and we have to tell it to turn it off.
+ defines += [ "_HAS_ITERATOR_DEBUGGING=0" ]
+ }
+- } else if (is_linux && current_cpu == "x64" && enable_iterator_debugging) {
++ } else if ((is_linux || is_bsd) && current_cpu == "x64" && enable_iterator_debugging) {
+ # Enable libstdc++ debugging facilities to help catch problems early, see
+ # http://crbug.com/65151 .
+ # TODO(phajdan.jr): Should we enable this for all of POSIX?
+@@ -247,9 +247,7 @@ config("default_libs") {
+ ]
+ } else if (is_linux) {
+ libs = [
+- "dl",
+ "pthread",
+- "rt",
+ ]
+ }
+ }
+@@ -337,7 +335,7 @@ config("executable_config") {
+ "//build/config/ios:ios_dynamic_flags",
+ "//build/config/ios:ios_executable_flags",
+ ]
+- } else if (is_linux || is_android || current_os == "aix") {
++ } else if (is_linux || is_bsd || is_android || current_os == "aix") {
+ configs += [ "//build/config/gcc:executable_config" ]
+ if (is_chromecast) {
+ configs += [ "//build/config/chromecast:executable_config" ]
diff --git a/devel/electron7/files/patch-build_config_BUILDCONFIG.gn b/devel/electron7/files/patch-build_config_BUILDCONFIG.gn
new file mode 100644
index 000000000000..0cea3001b7a1
--- /dev/null
+++ b/devel/electron7/files/patch-build_config_BUILDCONFIG.gn
@@ -0,0 +1,48 @@
+--- build/config/BUILDCONFIG.gn.orig 2019-12-16 13:32:58 UTC
++++ build/config/BUILDCONFIG.gn
+@@ -134,10 +134,10 @@ declare_args() {
+ is_official_build = false
+
+ # Whether we're a traditional desktop unix.
+- is_desktop_linux = current_os == "linux"
++ is_desktop_linux = current_os == "linux" || current_os == "freebsd"
+
+ # Set to true when compiling with the Clang compiler.
+- is_clang = current_os != "linux" ||
++ is_clang = current_os != "linux" || current_os == "freebsd" ||
+ (current_cpu != "s390x" && current_cpu != "s390" &&
+ current_cpu != "ppc64" && current_cpu != "ppc" &&
+ current_cpu != "mips" && current_cpu != "mips64")
+@@ -189,8 +189,8 @@ if (host_toolchain == "") {
+ # TODO(dpranke): Add some sort of assert here that verifies that
+ # no toolchain omitted host_toolchain from its toolchain_args().
+
+- if (host_os == "linux") {
+- if (target_os != "linux") {
++ if (host_os == "linux" || host_os == "freebsd") {
++ if (target_os != "linux" && target_os != "freebsd") {
+ host_toolchain = "//build/toolchain/linux:clang_$host_cpu"
+ } else if (is_clang) {
+ host_toolchain = "//build/toolchain/linux:clang_$host_cpu"
+@@ -227,7 +227,7 @@ if (target_os == "android") {
+ assert(host_os == "linux" || host_os == "mac",
+ "Android builds are only supported on Linux and Mac hosts.")
+ _default_toolchain = "//build/toolchain/android:android_clang_$target_cpu"
+-} else if (target_os == "chromeos" || target_os == "linux") {
++} else if (target_os == "chromeos" || target_os == "linux" || target_os == "freebsd") {
+ # See comments in build/toolchain/cros/BUILD.gn about board compiles.
+ if (is_clang) {
+ _default_toolchain = "//build/toolchain/linux:clang_$target_cpu"
+@@ -291,10 +291,11 @@ is_android = current_os == "android"
+ is_chromeos = current_os == "chromeos"
+ is_fuchsia = current_os == "fuchsia"
+ is_ios = current_os == "ios"
+-is_linux = current_os == "chromeos" || current_os == "linux"
++is_linux = current_os == "chromeos" || current_os == "linux" || current_os == "freebsd"
+ is_mac = current_os == "mac"
+ is_nacl = current_os == "nacl"
+ is_win = current_os == "win" || current_os == "winuwp"
++is_bsd = current_os == "freebsd"
+
+ is_posix = !is_win && !is_fuchsia
+
diff --git a/devel/electron7/files/patch-build_config_compiler_BUILD.gn b/devel/electron7/files/patch-build_config_compiler_BUILD.gn
new file mode 100644
index 000000000000..fa9eb6b79c6b
--- /dev/null
+++ b/devel/electron7/files/patch-build_config_compiler_BUILD.gn
@@ -0,0 +1,92 @@
+--- build/config/compiler/BUILD.gn.orig 2019-12-12 12:38:59 UTC
++++ build/config/compiler/BUILD.gn
+@@ -57,7 +57,7 @@ declare_args() {
+ # only two architectures that are currently checked in). Turn this off when
+ # you are using a custom toolchain and need to control -B in cflags.
+ linux_use_bundled_binutils =
+- linux_use_bundled_binutils_override && is_linux &&
++ linux_use_bundled_binutils_override && (is_linux && !is_bsd) &&
+ (current_cpu == "x64" || current_cpu == "x86")
+ binutils_path = rebase_path("//third_party/binutils/Linux_x64/Release/bin",
+ root_build_dir)
+@@ -288,7 +288,7 @@ config("compiler") {
+
+ # Linker warnings.
+ if (fatal_linker_warnings && !(is_chromeos && current_cpu == "arm") &&
+- !is_mac && !is_ios && current_os != "aix") {
++ !is_mac && !is_ios && current_os != "aix" && !is_bsd) {
+ # TODO(jochen): Enable this on chromeos on arm. http://crbug.com/356580
+ ldflags += [ "-Wl,--fatal-warnings" ]
+ }
+@@ -383,7 +383,7 @@ config("compiler") {
+
+ # Compiler instrumentation can introduce dependencies in DSOs to symbols in
+ # the executable they are loaded into, so they are unresolved at link-time.
+- if (!using_sanitizer) {
++ if (!using_sanitizer && !is_bsd) {
+ ldflags += [
+ "-Wl,-z,defs",
+ "-Wl,--as-needed",
+@@ -483,7 +483,7 @@ config("compiler") {
+ }
+ }
+
+- if (is_clang && !is_nacl && !use_xcode_clang) {
++ if (is_clang && !is_nacl && !use_xcode_clang && !is_bsd) {
+ cflags += [ "-fcrash-diagnostics-dir=" +
+ rebase_path("//tools/clang/crashreports", root_build_dir) ]
+
+@@ -753,7 +753,7 @@ config("compiler_cpu_abi") {
+ cflags += [ "-mtune=$arm_tune" ]
+ }
+ } else if (current_cpu == "arm64") {
+- if (is_clang && !is_android && !is_nacl && !is_fuchsia) {
++ if (is_clang && !is_android && !is_nacl && !is_fuchsia && !is_bsd) {
+ cflags += [ "--target=aarch64-linux-gnu" ]
+ ldflags += [ "--target=aarch64-linux-gnu" ]
+ }
+@@ -1104,7 +1104,7 @@ config("compiler_deterministic") {
+ "-Xclang",
+ ".",
+ ]
+- if (!is_win) {
++ if (!is_win && !is_bsd) {
+ # We don't use clang -cc1as on Windows (yet? https://crbug.com/762167)
+ asmflags = [ "-Wa,-fdebug-compilation-dir,." ]
+ }
+@@ -1493,7 +1493,7 @@ config("default_warnings") {
+ cflags += [ "-Wno-nonportable-include-path" ]
+ }
+
+- if (current_toolchain == host_toolchain || !use_xcode_clang) {
++ if ((current_toolchain == host_toolchain || !use_xcode_clang) && !is_bsd) {
+ # Flags NaCl (Clang 3.7) and Xcode 9.2 (Clang clang-900.0.39.2) do not
+ # recognize.
+ cflags += [
+@@ -1722,7 +1722,7 @@ config("thin_archive") {
+ # Mac and iOS use the mac-specific "libtool" command, not ar, which doesn't
+ # have a "thin archive" mode (it does accept -T, but it means truncating
+ # archive names to 16 characters, which is not what we want).
+- if ((is_posix && !is_nacl && !is_mac && !is_ios) || is_fuchsia) {
++ if ((is_posix && !is_nacl && !is_mac && !is_ios && !is_bsd) || is_fuchsia) {
+ arflags = [ "-T" ]
+ } else if (is_win && use_lld) {
+ arflags = [ "/llvmlibthin" ]
+@@ -2292,7 +2292,7 @@ config("symbols") {
+ # flag, so we can use use -g1 for pnacl and nacl-clang compiles.
+ # gcc nacl is is_nacl && !is_clang, pnacl and nacl-clang are && is_clang.
+ if (!is_nacl || is_clang) {
+- cflags += [ "-g2" ]
++ cflags += [ "-g0" ]
+ }
+
+ if (use_debug_fission && !is_nacl && !is_android) {
+@@ -2313,7 +2313,7 @@ config("symbols") {
+ # DWARF info may be corrupt; offsets in a range list entry are in different
+ # sections" there. Maybe just a bug in nacl_switch_32.S.
+ if (!is_mac && !is_ios && !is_nacl && current_cpu != "x86" &&
+- (use_gold || use_lld)) {
++ (use_gold || use_lld) && !is_bsd) {
+ if (is_clang) {
+ # This flag enables the GNU-format pubnames and pubtypes sections,
+ # which lld needs in order to generate a correct GDB index.
diff --git a/devel/electron7/files/patch-build_config_compiler_compiler.gni b/devel/electron7/files/patch-build_config_compiler_compiler.gni
new file mode 100644
index 000000000000..3fb0469c7965
--- /dev/null
+++ b/devel/electron7/files/patch-build_config_compiler_compiler.gni
@@ -0,0 +1,11 @@
+--- build/config/compiler/compiler.gni.orig 2019-12-12 12:38:59 UTC
++++ build/config/compiler/compiler.gni
+@@ -188,7 +188,7 @@ declare_args() {
+ declare_args() {
+ # Whether to use the gold linker from binutils instead of lld or bfd.
+ use_gold =
+- !use_lld && !(is_chromecast && is_linux &&
++ !is_bsd && !use_lld && !(is_chromecast && is_linux &&
+ (current_cpu == "arm" || current_cpu == "mipsel")) &&
+ ((is_linux && (current_cpu == "x64" || current_cpu == "x86" ||
+ current_cpu == "arm" || current_cpu == "arm64" ||
diff --git a/devel/electron7/files/patch-build_config_features.gni b/devel/electron7/files/patch-build_config_features.gni
new file mode 100644
index 000000000000..b779ba793ff5
--- /dev/null
+++ b/devel/electron7/files/patch-build_config_features.gni
@@ -0,0 +1,11 @@
+--- build/config/features.gni.orig 2019-12-12 12:38:59 UTC
++++ build/config/features.gni
+@@ -26,7 +26,7 @@ declare_args() {
+ proprietary_codecs = is_chrome_branded || is_chromecast
+
+ # libudev usage. This currently only affects the content layer.
+- use_udev = is_linux && !is_chromecast
++ use_udev = is_linux && !is_chromecast && !is_bsd
+
+ use_dbus = is_linux && !is_chromecast
+
diff --git a/devel/electron7/files/patch-build_config_freetype_freetype.gni b/devel/electron7/files/patch-build_config_freetype_freetype.gni
new file mode 100644
index 000000000000..b91138e3185b
--- /dev/null
+++ b/devel/electron7/files/patch-build_config_freetype_freetype.gni
@@ -0,0 +1,9 @@
+--- build/config/freetype/freetype.gni.orig 2019-12-12 12:38:59 UTC
++++ build/config/freetype/freetype.gni
+@@ -10,5 +10,5 @@ declare_args() {
+ # than version 2.7.1 and have color bitmap support compiled in. WARNING:
+ # System FreeType configurations other than as described WILL INTRODUCE TEXT
+ # RENDERING AND SECURITY REGRESSIONS.
+- use_system_freetype = false
++ use_system_freetype = true
+ }
diff --git a/devel/electron7/files/patch-build_config_linux_BUILD.gn b/devel/electron7/files/patch-build_config_linux_BUILD.gn
new file mode 100644
index 000000000000..c8fa33f48557
--- /dev/null
+++ b/devel/electron7/files/patch-build_config_linux_BUILD.gn
@@ -0,0 +1,11 @@
+--- build/config/linux/BUILD.gn.orig 2019-12-12 12:38:59 UTC
++++ build/config/linux/BUILD.gn
+@@ -28,7 +28,7 @@ config("runtime_library") {
+ }
+
+ if ((!is_chromeos || default_toolchain != "//build/toolchain/cros:target") &&
+- (!use_custom_libcxx || current_cpu == "mipsel")) {
++ (!use_custom_libcxx || current_cpu == "mipsel") && !is_bsd) {
+ libs = [ "atomic" ]
+ }
+ }
diff --git a/devel/electron7/files/patch-build_config_linux_pkg-config.py b/devel/electron7/files/patch-build_config_linux_pkg-config.py
new file mode 100644
index 000000000000..c3cff115c73d
--- /dev/null
+++ b/devel/electron7/files/patch-build_config_linux_pkg-config.py
@@ -0,0 +1,26 @@
+--- build/config/linux/pkg-config.py.orig 2019-12-12 12:38:59 UTC
++++ build/config/linux/pkg-config.py
+@@ -59,8 +59,12 @@ def SetConfigPath(options):
+ print("You must specify an architecture via -a if using a sysroot.")
+ sys.exit(1)
+
+- libdir = sysroot + '/usr/' + options.system_libdir + '/pkgconfig'
+- libdir += ':' + sysroot + '/usr/share/pkgconfig'
++ if "linux" in sys.platform:
++ libdir = sysroot + '/libdata/' + options.system_libdir + '/pkgconfig'
++ libdir += ':' + sysroot + '/usr/share/pkgconfig'
++ elif "bsd" in sys.platform:
++ libdir = sysroot + '/libdata/pkgconfig'
++ libdir += ':' + '/usr/libdata/pkgconfig'
+ os.environ['PKG_CONFIG_LIBDIR'] = libdir
+ return libdir
+
+@@ -109,7 +113,7 @@ def main():
+ # If this is run on non-Linux platforms, just return nothing and indicate
+ # success. This allows us to "kind of emulate" a Linux build from other
+ # platforms.
+- if "linux" not in sys.platform:
++ if "bsd" not in sys.platform:
+ print("[[],[],[],[],[]]")
+ return 0
+
diff --git a/devel/electron7/files/patch-build_config_sysroot.gni b/devel/electron7/files/patch-build_config_sysroot.gni
new file mode 100644
index 000000000000..9d0cc2cc00e8
--- /dev/null
+++ b/devel/electron7/files/patch-build_config_sysroot.gni
@@ -0,0 +1,15 @@
+--- build/config/sysroot.gni.orig 2019-12-12 12:38:59 UTC
++++ build/config/sysroot.gni
+@@ -15,9 +15,10 @@ declare_args() {
+ # The absolute path to directory containing linux sysroot images
+ target_sysroot_dir = "//build/linux"
+
+- use_sysroot = current_cpu == "x86" || current_cpu == "x64" ||
++ use_sysroot = !is_bsd && (
++ current_cpu == "x86" || current_cpu == "x64" ||
+ current_cpu == "arm" || current_cpu == "arm64" ||
+- current_cpu == "mipsel" || current_cpu == "mips64el"
++ current_cpu == "mipsel" || current_cpu == "mips64el")
+ }
+
+ if (current_os == target_os && current_cpu == target_cpu &&
diff --git a/devel/electron7/files/patch-build_detect__host__arch.py b/devel/electron7/files/patch-build_detect__host__arch.py
new file mode 100644
index 000000000000..a0ab500a5c14
--- /dev/null
+++ b/devel/electron7/files/patch-build_detect__host__arch.py
@@ -0,0 +1,11 @@
+--- build/detect_host_arch.py.orig 2019-12-12 12:38:59 UTC
++++ build/detect_host_arch.py
+@@ -21,6 +21,8 @@ def HostArch():
+ host_arch = 'ia32'
+ elif host_arch in ['x86_64', 'amd64']:
+ host_arch = 'x64'
++ elif host_arch.startswith('arm64'):
++ host_arch = 'arm64'
+ elif host_arch.startswith('arm'):
+ host_arch = 'arm'
+ elif host_arch.startswith('aarch64'):
diff --git a/devel/electron7/files/patch-build_gn__run__binary.py b/devel/electron7/files/patch-build_gn__run__binary.py
new file mode 100644
index 000000000000..1b9db04d2bd1
--- /dev/null
+++ b/devel/electron7/files/patch-build_gn__run__binary.py
@@ -0,0 +1,11 @@
+--- build/gn_run_binary.py.orig 2019-12-12 12:38:59 UTC
++++ build/gn_run_binary.py
+@@ -24,7 +24,7 @@ if not os.path.isabs(path):
+ # The rest of the arguments are passed directly to the executable.
+ args = [path] + sys.argv[2:]
+
+-ret = subprocess.call(args)
++ret = subprocess.call(args, env={"CHROME_EXE_PATH":"${WRKSRC}/out/Release/chrome"})
+ if ret != 0:
+ if ret <= -100:
+ # Windows error codes such as 0xC0000005 and 0xC0000409 are much easier to
diff --git a/devel/electron7/files/patch-build_linux_chrome.map b/devel/electron7/files/patch-build_linux_chrome.map
new file mode 100644
index 000000000000..ca4ed2e750d0
--- /dev/null
+++ b/devel/electron7/files/patch-build_linux_chrome.map
@@ -0,0 +1,29 @@
+--- build/linux/chrome.map.orig 2019-12-12 12:38:59 UTC
++++ build/linux/chrome.map
+@@ -1,4 +1,7 @@
+ {
++local:
++ *;
++
+ global:
+ __bss_start;
+ __data_start;
+@@ -20,6 +23,10 @@ global:
+ # Program entry point.
+ _start;
+
++ # FreeBSD specific variables.
++ __progname;
++ environ;
++
+ # Memory allocation symbols. We want chrome and any libraries to
+ # share the same heap, so it is correct to export these symbols.
+ calloc;
+@@ -81,7 +88,4 @@ global:
+ localtime64;
+ localtime64_r;
+ localtime_r;
+-
+-local:
+- *;
+ };
diff --git a/devel/electron7/files/patch-build_linux_libpci_BUILD.gn b/devel/electron7/files/patch-build_linux_libpci_BUILD.gn
new file mode 100644
index 000000000000..be5d024232e1
--- /dev/null
+++ b/devel/electron7/files/patch-build_linux_libpci_BUILD.gn
@@ -0,0 +1,53 @@
+--- build/linux/libpci/BUILD.gn.orig 2019-12-12 12:38:59 UTC
++++ build/linux/libpci/BUILD.gn
+@@ -3,20 +3,36 @@
+ # found in the LICENSE file.
+
+ import("//tools/generate_library_loader/generate_library_loader.gni")
++import("//build/config/linux/pkg_config.gni")
+
+-# This generates a target named "libpci".
+-generate_library_loader("libpci") {
+- name = "LibPciLoader"
+- output_h = "libpci.h"
+- output_cc = "libpci_loader.cc"
+- header = "<pci/pci.h>"
++declare_args() {
++ use_system_libpci = is_bsd
++}
+
+- functions = [
+- "pci_alloc",
+- "pci_init",
+- "pci_cleanup",
+- "pci_scan_bus",
+- "pci_fill_info",
+- "pci_lookup_name",
+- ]
++if (use_system_libpci) {
++ pkg_config("system_libpci") {
++ packages = [ "libpci" ]
++ }
++
++ source_set("libpci") {
++ public_configs = [ ":system_libpci" ]
++ }
++
++} else {
++ # This generates a target named "libpci".
++ generate_library_loader("libpci") {
++ name = "LibPciLoader"
++ output_h = "libpci.h"
++ output_cc = "libpci_loader.cc"
++ header = "<pci/pci.h>"
++
++ functions = [
++ "pci_alloc",
++ "pci_init",
++ "pci_cleanup",
++ "pci_scan_bus",
++ "pci_fill_info",
++ "pci_lookup_name",
++ ]
++ }
+ }
diff --git a/devel/electron7/files/patch-build_linux_unbundle_libusb.gn b/devel/electron7/files/patch-build_linux_unbundle_libusb.gn
new file mode 100644
index 000000000000..46cef00fa011
--- /dev/null
+++ b/devel/electron7/files/patch-build_linux_unbundle_libusb.gn
@@ -0,0 +1,27 @@
+--- build/linux/unbundle/libusb.gn.orig 2019-12-16 13:33:53 UTC
++++ build/linux/unbundle/libusb.gn
+@@ -0,0 +1,24 @@
++# Copyright 2016 The Chromium Authors. All rights reserved.
++# Use of this source code is governed by a BSD-style license that can be
++# found in the LICENSE file.
++
++import("//build/config/linux/pkg_config.gni")
++import("//build/shim_headers.gni")
++
++pkg_config("system_libusb") {
++ packages = [ "libusb-1.0" ]
++}
++
++shim_headers("libusb_shim") {
++ root_path = "src/libusb"
++ headers = [
++ "libusb.h",
++ ]
++}
++
++source_set("libusb") {
++ deps = [
++ ":libusb_shim",
++ ]
++ public_configs = [ ":system_libusb" ]
++}
diff --git a/devel/electron7/files/patch-build_linux_unbundle_replace__gn__files.py b/devel/electron7/files/patch-build_linux_unbundle_replace__gn__files.py
new file mode 100644
index 000000000000..7243b19ecb39
--- /dev/null
+++ b/devel/electron7/files/patch-build_linux_unbundle_replace__gn__files.py
@@ -0,0 +1,10 @@
+--- build/linux/unbundle/replace_gn_files.py.orig 2019-12-12 12:38:59 UTC
++++ build/linux/unbundle/replace_gn_files.py
+@@ -27,6 +27,7 @@ REPLACEMENTS = {
+ 'libevent': 'base/third_party/libevent/BUILD.gn',
+ 'libjpeg': 'third_party/libjpeg.gni',
+ 'libpng': 'third_party/libpng/BUILD.gn',
++ 'libusb': 'third_party/libusb/BUILD.gn',
+ 'libvpx': 'third_party/libvpx/BUILD.gn',
+ 'libwebp': 'third_party/libwebp/BUILD.gn',
+ 'libxml': 'third_party/libxml/BUILD.gn',
diff --git a/devel/electron7/files/patch-build_toolchain_gcc__toolchain.gni b/devel/electron7/files/patch-build_toolchain_gcc__toolchain.gni
new file mode 100644
index 000000000000..5c6da09e8207
--- /dev/null
+++ b/devel/electron7/files/patch-build_toolchain_gcc__toolchain.gni
@@ -0,0 +1,45 @@
+--- build/toolchain/gcc_toolchain.gni.orig 2019-12-12 12:38:59 UTC
++++ build/toolchain/gcc_toolchain.gni
+@@ -36,6 +36,11 @@ if (is_linux && target_os == "android") {
+ enable_resource_whitelist_generation = false
+ }
+
++declare_args() {
++ extra_cxxflags = ""
++ extra_ldflags = ""
++}
++
+ # This template defines a toolchain for something that works like gcc
+ # (including clang).
+ #
+@@ -589,13 +594,23 @@ template("clang_toolchain") {
+ }
+
+ gcc_toolchain(target_name) {
+- prefix = rebase_path("$clang_base_path/bin", root_build_dir)
+- cc = "$prefix/clang"
+- cxx = "$prefix/clang++"
+- ld = cxx
+- readelf = "${toolprefix}readelf"
+- ar = "${prefix}/llvm-ar"
+- nm = "${toolprefix}nm"
++ if (is_bsd) {
++ prefix = "/usr/local/bin"
++ cc = "cc"
++ cxx = "c++"
++ ld = cxx
++ readelf = "readelf"
++ ar = "${prefix}/ar"
++ nm = "${toolprefix}nm"
++ } else {
++ prefix = rebase_path("$clang_base_path/bin", root_build_dir)
++ cc = "$prefix/clang"
++ cxx = "$prefix/clang++"
++ ld = cxx
++ readelf = "${toolprefix}readelf"
++ ar = "${prefix}/llvm-ar"
++ nm = "${toolprefix}nm"
++ }
+
+ forward_variables_from(invoker,
+ [
diff --git a/devel/electron7/files/patch-build_toolchain_get__concurrent__links.py b/devel/electron7/files/patch-build_toolchain_get__concurrent__links.py
new file mode 100644
index 000000000000..f91e57e044c8
--- /dev/null
+++ b/devel/electron7/files/patch-build_toolchain_get__concurrent__links.py
@@ -0,0 +1,17 @@
+--- build/toolchain/get_concurrent_links.py.orig 2019-12-12 12:38:59 UTC
++++ build/toolchain/get_concurrent_links.py
+@@ -48,6 +48,14 @@ def _GetTotalMemoryInBytes():
+ return int(subprocess.check_output(['sysctl', '-n', 'hw.memsize']))
+ except Exception:
+ return 0
++ elif sys.platform.startswith('freebsd'):
++ try:
++ avail_bytes = int(subprocess.check_output(['sysctl', '-n', 'hw.physmem']))
++ # With -fuse-lld it doesn't take a lot of ram, feel free to change that
++ # 1 * ... to needed amount
++ return max(1, avail_bytes / (1 * (2 ** 30))) # total / 4GB
++ except Exception:
++ return 1
+ # TODO(scottmg): Implement this for other platforms.
+ return 0
+
diff --git a/devel/electron7/files/patch-build_toolchain_linux_BUILD.gn b/devel/electron7/files/patch-build_toolchain_linux_BUILD.gn
new file mode 100644
index 000000000000..4184009bb3ad
--- /dev/null
+++ b/devel/electron7/files/patch-build_toolchain_linux_BUILD.gn
@@ -0,0 +1,10 @@
+--- build/toolchain/linux/BUILD.gn.orig 2019-12-12 12:38:59 UTC
++++ build/toolchain/linux/BUILD.gn
+@@ -22,7 +22,6 @@ clang_toolchain("clang_arm") {
+ }
+
+ clang_toolchain("clang_arm64") {
+- toolprefix = "aarch64-linux-gnu-"
+ toolchain_args = {
+ current_cpu = "arm64"
+ current_os = "linux"
diff --git a/devel/electron7/files/patch-cc_BUILD.gn b/devel/electron7/files/patch-cc_BUILD.gn
new file mode 100644
index 000000000000..5bebee90b145
--- /dev/null
+++ b/devel/electron7/files/patch-cc_BUILD.gn
@@ -0,0 +1,21 @@
+--- cc/BUILD.gn.orig 2019-12-12 12:38:59 UTC
++++ cc/BUILD.gn
+@@ -572,7 +572,7 @@ cc_test_static_library("test_support") {
+ if (enable_vulkan) {
+ deps += [ "//gpu/vulkan/init" ]
+ }
+- if (!is_android) {
++ if (!is_android && !is_bsd) {
+ data_deps = [
+ "//third_party/mesa_headers",
+ ]
+@@ -776,9 +776,6 @@ cc_test("cc_unittests") {
+ "//ui/gfx/geometry",
+ "//ui/gl",
+ "//ui/gl:test_support",
+- ]
+- data_deps = [
+- "//third_party/mesa_headers",
+ ]
+
+ if (enable_vulkan) {
diff --git a/devel/electron7/files/patch-cc_layers_scrollbar__layer__impl__base.cc b/devel/electron7/files/patch-cc_layers_scrollbar__layer__impl__base.cc
new file mode 100644
index 000000000000..9e8589171b52
--- /dev/null
+++ b/devel/electron7/files/patch-cc_layers_scrollbar__layer__impl__base.cc
@@ -0,0 +1,13 @@
+--- cc/layers/scrollbar_layer_impl_base.cc.orig 2019-12-12 12:38:59 UTC
++++ cc/layers/scrollbar_layer_impl_base.cc
+@@ -218,8 +218,8 @@ gfx::Rect ScrollbarLayerImplBase::ComputeThumbQuadRect
+ int thumb_offset = TrackStart();
+ if (maximum > 0) {
+ float ratio = clamped_current_pos / maximum;
+- float max_offset = track_length - thumb_length;
+- thumb_offset += static_cast<int>(ratio * max_offset);
++ float _max_offset = track_length - thumb_length;
++ thumb_offset += static_cast<int>(ratio * _max_offset);
+ }
+
+ float thumb_thickness_adjustment =
diff --git a/devel/electron7/files/patch-cc_trees_property__tree.cc b/devel/electron7/files/patch-cc_trees_property__tree.cc
new file mode 100644
index 000000000000..78f2a4bb7c60
--- /dev/null
+++ b/devel/electron7/files/patch-cc_trees_property__tree.cc
@@ -0,0 +1,20 @@
+--- cc/trees/property_tree.cc.orig 2019-12-12 12:39:00 UTC
++++ cc/trees/property_tree.cc
+@@ -1278,13 +1278,13 @@ gfx::ScrollOffset ScrollTree::MaxScrollOffset(int scro
+
+ gfx::Size clip_layer_bounds = container_bounds(scroll_node->id);
+
+- gfx::ScrollOffset max_offset(
++ gfx::ScrollOffset _max_offset(
+ scaled_scroll_bounds.width() - clip_layer_bounds.width(),
+ scaled_scroll_bounds.height() - clip_layer_bounds.height());
+
+- max_offset.Scale(1 / scale_factor);
+- max_offset.SetToMax(gfx::ScrollOffset());
+- return max_offset;
++ _max_offset.Scale(1 / scale_factor);
++ _max_offset.SetToMax(gfx::ScrollOffset());
++ return _max_offset;
+ }
+
+ gfx::SizeF ScrollTree::scroll_bounds(int scroll_node_id) const {
diff --git a/devel/electron7/files/patch-chrome_app_chrome__command__ids.h b/devel/electron7/files/patch-chrome_app_chrome__command__ids.h
new file mode 100644
index 000000000000..4a839d5e2cfc
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_app_chrome__command__ids.h
@@ -0,0 +1,11 @@
+--- chrome/app/chrome_command_ids.h.orig 2019-12-12 12:39:04 UTC
++++ chrome/app/chrome_command_ids.h
+@@ -63,7 +63,7 @@
+ #define IDC_VISIT_DESKTOP_OF_LRU_USER_2 34049
+ #define IDC_VISIT_DESKTOP_OF_LRU_USER_3 34050
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ #define IDC_USE_SYSTEM_TITLE_BAR 34051
+ #define IDC_RESTORE_WINDOW 34052
+ #endif
diff --git a/devel/electron7/files/patch-chrome_app_chrome__content__browser__overlay__manifest.cc b/devel/electron7/files/patch-chrome_app_chrome__content__browser__overlay__manifest.cc
new file mode 100644
index 000000000000..bedc3ec93f94
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_app_chrome__content__browser__overlay__manifest.cc
@@ -0,0 +1,20 @@
+--- chrome/app/chrome_content_browser_overlay_manifest.cc.orig 2019-12-12 12:39:04 UTC
++++ chrome/app/chrome_content_browser_overlay_manifest.cc
+@@ -69,7 +69,7 @@
+ #include "chrome/services/app_service/public/cpp/manifest.h"
+ #endif
+
+-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || \
++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD) || \
+ defined(OS_CHROMEOS)
+ #include "chrome/browser/performance_manager/webui_graph_dump.mojom.h" // nogncheck
+ #include "chrome/browser/ui/webui/discards/discards.mojom.h"
+@@ -205,7 +205,7 @@ const service_manager::Manifest& GetChromeContentBrows
+ #else
+ app_management::mojom::PageHandlerFactory,
+ #endif
+-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || \
++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD) || \
+ defined(OS_CHROMEOS)
+ mojom::DiscardsDetailsProvider,
+ performance_manager::mojom::WebUIGraphDump,
diff --git a/devel/electron7/files/patch-chrome_app_chrome__main.cc b/devel/electron7/files/patch-chrome_app_chrome__main.cc
new file mode 100644
index 000000000000..ff56044b016d
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_app_chrome__main.cc
@@ -0,0 +1,16 @@
+--- chrome/app/chrome_main.cc.orig 2019-12-12 12:39:04 UTC
++++ chrome/app/chrome_main.cc
+@@ -101,11 +101,11 @@ int ChromeMain(int argc, const char** argv) {
+ MainThreadStackSamplingProfiler scoped_sampling_profiler;
+
+ // Chrome-specific process modes.
+-#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_BSD)
+ if (command_line->HasSwitch(switches::kHeadless)) {
+ return headless::HeadlessShellMain(params);
+ }
+-#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN)
++#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_BSD)
+
+ int rv = content::ContentMain(params);
+
diff --git a/devel/electron7/files/patch-chrome_app_chrome__main__delegate.cc b/devel/electron7/files/patch-chrome_app_chrome__main__delegate.cc
new file mode 100644
index 000000000000..0c05a2b85d05
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_app_chrome__main__delegate.cc
@@ -0,0 +1,144 @@
+--- chrome/app/chrome_main_delegate.cc.orig 2019-12-12 12:39:04 UTC
++++ chrome/app/chrome_main_delegate.cc
+@@ -99,7 +99,7 @@
+ #include "chrome/app/shutdown_signal_handlers_posix.h"
+ #endif
+
+-#if BUILDFLAG(ENABLE_NACL) && defined(OS_LINUX)
++#if BUILDFLAG(ENABLE_NACL) && defined(OS_LINUX) && !defined(OS_BSD)
+ #include "components/nacl/common/nacl_paths.h"
+ #include "components/nacl/zygote/nacl_fork_delegate_linux.h"
+ #endif
+@@ -137,7 +137,7 @@
+ #include "v8/include/v8.h"
+ #endif
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include "base/environment.h"
+ #endif
+
+@@ -240,7 +240,7 @@ bool UseHooks() {
+
+ #endif // defined(OS_WIN)
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) && !defined(OS_BSD)
+ void AdjustLinuxOOMScore(const std::string& process_type) {
+ // Browsers and zygotes should still be killable, but killed last.
+ const int kZygoteScore = 0;
+@@ -299,13 +299,13 @@ void AdjustLinuxOOMScore(const std::string& process_ty
+ if (score > -1)
+ base::AdjustOOMScore(base::GetCurrentProcId(), score);
+ }
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) && !defined(OS_BSD)
+
+ // Returns true if this subprocess type needs the ResourceBundle initialized
+ // and resources loaded.
+ bool SubprocessNeedsResourceBundle(const std::string& process_type) {
+ return
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // The zygote process opens the resources for the renderers.
+ process_type == service_manager::switches::kZygoteProcess ||
+ #endif
+@@ -344,7 +344,7 @@ bool HandleVersionSwitches(const base::CommandLine& co
+ return false;
+ }
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ // Show the man page if --help or -h is on the command line.
+ void HandleHelpSwitches(const base::CommandLine& command_line) {
+ if (command_line.HasSwitch(switches::kHelp) ||
+@@ -354,7 +354,7 @@ void HandleHelpSwitches(const base::CommandLine& comma
+ PLOG(FATAL) << "execlp failed";
+ }
+ }
+-#endif // defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#endif // (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+
+ #if !defined(OS_MACOSX) && !defined(OS_ANDROID)
+ void SIGTERMProfilingShutdown(int signal) {
+@@ -408,7 +408,7 @@ void InitializeUserDataDir(base::CommandLine* command_
+ std::string process_type =
+ command_line->GetSwitchValueASCII(switches::kProcessType);
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // On Linux, Chrome does not support running multiple copies under different
+ // DISPLAYs, so the profile directory can be specified in the environment to
+ // support the virtual desktop use-case.
+@@ -420,7 +420,7 @@ void InitializeUserDataDir(base::CommandLine* command_
+ user_data_dir = base::FilePath::FromUTF8Unsafe(user_data_dir_string);
+ }
+ }
+-#endif // OS_LINUX
++#endif // OS_LINUX || OS_BSD
+ #if defined(OS_MACOSX)
+ policy::path_parser::CheckUserDataDirPolicy(&user_data_dir);
+ #endif // OS_MAC
+@@ -477,7 +477,7 @@ void InitLogging(const std::string& process_type) {
+ void RecordMainStartupMetrics(base::TimeTicks exe_entry_point_ticks) {
+ if (!exe_entry_point_ticks.is_null())
+ startup_metric_utils::RecordExeMainEntryPointTicks(exe_entry_point_ticks);
+-#if defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_LINUX)
++#if defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD)
+ // Record the startup process creation time on supported platforms.
+ startup_metric_utils::RecordStartupProcessCreationTime(
+ base::Process::Current().CreationTime());
+@@ -654,7 +654,7 @@ bool ChromeMainDelegate::BasicStartupComplete(int* exi
+ *exit_code = 0;
+ return true; // Got a --version switch; exit with a success error code.
+ }
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ // This will directly exit if the user asked for help.
+ HandleHelpSwitches(command_line);
+ #endif
+@@ -678,7 +678,7 @@ bool ChromeMainDelegate::BasicStartupComplete(int* exi
+ #if defined(OS_CHROMEOS)
+ chromeos::RegisterPathProvider();
+ #endif
+-#if BUILDFLAG(ENABLE_NACL) && defined(OS_LINUX)
++#if BUILDFLAG(ENABLE_NACL) && defined(OS_LINUX) && !defined(OS_BSD)
+ nacl::RegisterPathProvider();
+ #endif
+
+@@ -872,7 +872,7 @@ void ChromeMainDelegate::PreSandboxStartup() {
+ #if defined(OS_WIN)
+ child_process_logging::Init();
+ #endif
+-#if defined(ARCH_CPU_ARM_FAMILY) && (defined(OS_ANDROID) || defined(OS_LINUX))
++#if defined(ARCH_CPU_ARM_FAMILY) && (defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_BSD))
+ // Create an instance of the CPU class to parse /proc/cpuinfo and cache
+ // cpu_brand info.
+ base::CPU cpu_info;
+@@ -996,7 +996,7 @@ void ChromeMainDelegate::PreSandboxStartup() {
+ InitializePDF();
+ #endif
+
+-#if defined(OS_POSIX) && !defined(OS_MACOSX)
++#if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_BSD)
+ // Zygote needs to call InitCrashReporter() in RunZygote().
+ if (process_type != service_manager::switches::kZygoteProcess) {
+ #if defined(OS_ANDROID)
+@@ -1011,7 +1011,7 @@ void ChromeMainDelegate::PreSandboxStartup() {
+ breakpad::InitCrashReporter(process_type);
+ #endif // defined(OS_ANDROID)
+ }
+-#endif // defined(OS_POSIX) && !defined(OS_MACOSX)
++#endif // defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_BSD)
+
+ // After all the platform Breakpads have been initialized, store the command
+ // line for crash reporting.
+@@ -1021,7 +1021,7 @@ void ChromeMainDelegate::PreSandboxStartup() {
+ void ChromeMainDelegate::SandboxInitialized(const std::string& process_type) {
+ // Note: If you are adding a new process type below, be sure to adjust the
+ // AdjustLinuxOOMScore function too.
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) && !defined(OS_BSD)
+ AdjustLinuxOOMScore(process_type);
+ #endif
+ #if defined(OS_WIN)
diff --git a/devel/electron7/files/patch-chrome_app_chromium__strings.grd b/devel/electron7/files/patch-chrome_app_chromium__strings.grd
new file mode 100644
index 000000000000..a55db99e25d2
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_app_chromium__strings.grd
@@ -0,0 +1,29 @@
+--- chrome/app/chromium_strings.grd.orig 2019-12-12 12:39:04 UTC
++++ chrome/app/chromium_strings.grd
+@@ -694,7 +694,7 @@ Signing in anyway will merge Chromium information like
+ </if>
+
+ <!-- about:browser-switch strings -->
+- <if expr="is_win or is_macosx or (is_linux and not is_chromeos)">
++ <if expr="is_win or is_macosx or (is_posix and not is_chromeos)">
+ <message name="IDS_ABOUT_BROWSER_SWITCH_DESCRIPTION_UNKNOWN_BROWSER" desc="Description shown while waiting for an alternative browser to open, when the browser name is not auto-detected">
+ Your system administrator has configured Chromium to open an alternative browser to access <ph name="TARGET_URL_HOSTNAME">$1<ex>example.com</ex></ph>.
+ </message>
+@@ -825,7 +825,7 @@ Signing in anyway will merge Chromium information like
+ </message>
+
+ <!-- ProcessSingleton -->
+- <if expr="is_linux or is_macosx">
++ <if expr="is_linux or is_macosx or is_posix">
+ <message name="IDS_PROFILE_IN_USE_POSIX" desc="Message shown when the browser cannot start because the profile is in use on a different host.">
+ The profile appears to be in use by another Chromium process (<ph name="PROCESS_ID">$1<ex>12345</ex></ph>) on another computer (<ph name="HOST_NAME">$2<ex>example.com</ex></ph>). Chromium has locked the profile so that it doesn't get corrupted. If you are sure no other processes are using this profile, you can unlock the profile and relaunch Chromium.
+ </message>
+@@ -1069,7 +1069,7 @@ Signing in anyway will merge Chromium information like
+ </message>
+
+ <!-- Plugin Placeholders -->
+- <if expr="is_linux">
++ <if expr="is_posix">
+ <message name="IDS_PLUGIN_RESTART_REQUIRED" desc="The placeholder text for a plugin that can't be loaded until the browser is restarted.">
+ Restart Chromium to enable <ph name="PLUGIN_NAME">$1<ex>Flash</ex></ph>
+ </message>
diff --git a/devel/electron7/files/patch-chrome_app_generated__resources.grd b/devel/electron7/files/patch-chrome_app_generated__resources.grd
new file mode 100644
index 000000000000..2e023ae28803
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_app_generated__resources.grd
@@ -0,0 +1,29 @@
+--- chrome/app/generated_resources.grd.orig 2019-12-12 12:39:04 UTC
++++ chrome/app/generated_resources.grd
+@@ -4885,7 +4885,7 @@ Keep your key file in a safe place. You will need it t
+ </if>
+
+ <!-- chrome://browser-switch strings -->
+- <if expr="is_win or is_macosx or (is_linux and not is_chromeos)">
++ <if expr="is_win or is_macosx or (is_posix and not is_chromeos)">
+ <message name="IDS_ABOUT_BROWSER_SWITCH_TITLE" desc="about:browser-switch page title">
+ Legacy Browser Support
+ </message>
+@@ -6520,7 +6520,7 @@ the Bookmarks menu.">
+ Google Pay
+ </message>
+
+- <if expr="is_linux and not chromeos">
++ <if expr="is_posix and not chromeos">
+ <message name="IDS_SHOW_WINDOW_DECORATIONS" desc="The label of a radio button in the options dialog for using the system title bar and borders.">
+ Use system title bar and borders
+ </message>
+@@ -7401,7 +7401,7 @@ Please help our engineers fix this problem. Tell us wh
+ Set as default
+ </message>
+
+- <if expr="is_linux and not chromeos">
++ <if expr="is_posix and not chromeos">
+ <message name="IDS_MINIMIZE_WINDOW_MENU" desc="The Linux browser window menu item text for minimizing the window.">
+ Minimize
+ </message>
diff --git a/devel/electron7/files/patch-chrome_app_google__chrome__strings.grd b/devel/electron7/files/patch-chrome_app_google__chrome__strings.grd
new file mode 100644
index 000000000000..256daa8d776a
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_app_google__chrome__strings.grd
@@ -0,0 +1,29 @@
+--- chrome/app/google_chrome_strings.grd.orig 2019-12-12 12:39:04 UTC
++++ chrome/app/google_chrome_strings.grd
+@@ -706,7 +706,7 @@ Signing in anyway will merge Chrome information like b
+ </if>
+
+ <!-- about:browser-switch strings -->
+- <if expr="is_win or is_macosx or (is_linux and not is_chromeos)">
++ <if expr="is_win or is_macosx or (is_posix and not is_chromeos)">
+ <message name="IDS_ABOUT_BROWSER_SWITCH_DESCRIPTION_UNKNOWN_BROWSER" desc="Description shown while waiting for an alternative browser to open, when the browser name is not auto-detected">
+ Your system administrator has configured Google Chrome to open an alternative browser to access <ph name="TARGET_URL_HOSTNAME">$1<ex>example.com</ex></ph>.
+ </message>
+@@ -837,7 +837,7 @@ Signing in anyway will merge Chrome information like b
+ </message>
+
+ <!-- ProcessSingleton -->
+- <if expr="is_linux or is_macosx">
++ <if expr="is_linux or is_macosx or is_posix">
+ <message name="IDS_PROFILE_IN_USE_POSIX" desc="Message shown when the browser cannot start because the profile is in use on a different host.">
+ The profile appears to be in use by another Google Chrome process (<ph name="PROCESS_ID">$1<ex>12345</ex></ph>) on another computer (<ph name="HOST_NAME">$2<ex>example.com</ex></ph>). Chrome has locked the profile so that it doesn't get corrupted. If you are sure no other processes are using this profile, you can unlock the profile and relaunch Chrome.
+ </message>
+@@ -1088,7 +1088,7 @@ Signing in anyway will merge Chrome information like b
+ </message>
+
+ <!-- Plugin Placeholders -->
+- <if expr="is_linux">
++ <if expr="is_posix">
+ <message name="IDS_PLUGIN_RESTART_REQUIRED" desc="The placeholder text for a plugin that can't be loaded until the browser is restarted.">
+ Restart Chrome to enable <ph name="PLUGIN_NAME">$1<ex>Flash</ex></ph>
+ </message>
diff --git a/devel/electron7/files/patch-chrome_app_settings__strings.grdp b/devel/electron7/files/patch-chrome_app_settings__strings.grdp
new file mode 100644
index 000000000000..2c84d31bd8a6
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_app_settings__strings.grdp
@@ -0,0 +1,20 @@
+--- chrome/app/settings_strings.grdp.orig 2019-12-12 12:39:06 UTC
++++ chrome/app/settings_strings.grdp
+@@ -757,7 +757,7 @@
+ Themes
+ </message>
+ </if>
+- <if expr="is_linux and not chromeos">
++ <if expr="is_posix and not chromeos">
+ <message name="IDS_SETTINGS_SYSTEM_THEME" desc="Text of the label describing the system (GTK+) browser theme on Linux">
+ GTK+
+ </message>
+@@ -771,7 +771,7 @@
+ Use Classic
+ </message>
+ </if>
+- <if expr="not is_linux or chromeos">
++ <if expr="not is_posix or chromeos">
+ <message name="IDS_SETTINGS_RESET_TO_DEFAULT_THEME" desc="Name of the control which resets the browser theme back to the default theme.">
+ Reset to default
+ </message>
diff --git a/devel/electron7/files/patch-chrome_app_shutdown__signal__handlers__posix.cc b/devel/electron7/files/patch-chrome_app_shutdown__signal__handlers__posix.cc
new file mode 100644
index 000000000000..1a06edd9aeb5
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_app_shutdown__signal__handlers__posix.cc
@@ -0,0 +1,21 @@
+--- chrome/app/shutdown_signal_handlers_posix.cc.orig 2019-12-12 12:39:06 UTC
++++ chrome/app/shutdown_signal_handlers_posix.cc
+@@ -186,12 +186,18 @@ void InstallShutdownSignalHandlers(
+ g_pipe_pid = getpid();
+ g_shutdown_pipe_read_fd = pipefd[0];
+ g_shutdown_pipe_write_fd = pipefd[1];
++#if defined(OS_BSD)
++ // PTHREAD_STACK_MIN causes chromium to crash under FreeBSD,
++ // we request the default pthread stack size by specifying 0 here.
++ const size_t kShutdownDetectorThreadStackSize = 0;
++#else
+ #if !defined(ADDRESS_SANITIZER)
+ const size_t kShutdownDetectorThreadStackSize = PTHREAD_STACK_MIN * 2;
+ #else
+ // ASan instrumentation bloats the stack frames, so we need to increase the
+ // stack size to avoid hitting the guard page.
+ const size_t kShutdownDetectorThreadStackSize = PTHREAD_STACK_MIN * 4;
++#endif
+ #endif
+ ShutdownDetector* detector = new ShutdownDetector(
+ g_shutdown_pipe_read_fd, std::move(shutdown_callback), task_runner);
diff --git a/devel/electron7/files/patch-chrome_app_theme_chrome__unscaled__resources.grd b/devel/electron7/files/patch-chrome_app_theme_chrome__unscaled__resources.grd
new file mode 100644
index 000000000000..ca75c7a3b577
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_app_theme_chrome__unscaled__resources.grd
@@ -0,0 +1,20 @@
+--- chrome/app/theme/chrome_unscaled_resources.grd.orig 2019-12-12 12:39:06 UTC
++++ chrome/app/theme/chrome_unscaled_resources.grd
+@@ -18,7 +18,7 @@
+ <include name="IDR_PRODUCT_LOGO_64" file="google_chrome/product_logo_64.png" type="BINDATA" />
+ <include name="IDR_PRODUCT_LOGO_128" file="google_chrome/product_logo_128.png" type="BINDATA" />
+ <include name="IDR_PRODUCT_LOGO_256" file="google_chrome/product_logo_256.png" type="BINDATA" />
+- <if expr="is_linux">
++ <if expr="is_posix">
+ <include name="IDR_PRODUCT_LOGO_128_BETA" file="google_chrome/product_logo_128_beta.png" type="BINDATA" />
+ <include name="IDR_PRODUCT_LOGO_128_DEV" file="google_chrome/product_logo_128_dev.png" type="BINDATA" />
+ </if>
+@@ -109,7 +109,7 @@
+ <include name="IDR_PROFILE_AVATAR_2X_25" file="default_200_percent/common/profile_avatar_sun_cloud.png" type="BINDATA" />
+ <include name="IDR_PROFILE_AVATAR_2X_26" file="default_200_percent/common/profile_avatar_placeholder.png" type="BINDATA" />
+ </if>
+- <if expr="is_linux and enable_app_list">
++ <if expr="is_posix and enable_app_list">
+ <!-- App Launcher icons for desktop icon. -->
+ <if expr="_google_chrome">
+ <then>
diff --git a/devel/electron7/files/patch-chrome_app_theme_theme__resources.grd b/devel/electron7/files/patch-chrome_app_theme_theme__resources.grd
new file mode 100644
index 000000000000..c10ff84a82ca
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_app_theme_theme__resources.grd
@@ -0,0 +1,11 @@
+--- chrome/app/theme/theme_resources.grd.orig 2019-12-12 12:39:07 UTC
++++ chrome/app/theme/theme_resources.grd
+@@ -25,7 +25,7 @@
+ <!-- KEEP THESE IN ALPHABETICAL ORDER! DO NOT ADD TO RANDOM PLACES JUST
+ BECAUSE YOUR RESOURCES ARE FUNCTIONALLY RELATED OR FALL UNDER THE
+ SAME CONDITIONALS. -->
+- <if expr="is_linux or is_win or chromeos">
++ <if expr="is_posix or is_win or chromeos">
+ <structure type="chrome_scaled_image" name="IDR_ACCESSIBILITY_CAPTIONS_PREVIEW_BACKGROUND" file="common/captions-preview-bg.png" />
+ </if>
+ <if expr="toolkit_views and not is_macosx">
diff --git a/devel/electron7/files/patch-chrome_browser_about__flags.cc b/devel/electron7/files/patch-chrome_browser_about__flags.cc
new file mode 100644
index 000000000000..eb35ee59782a
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_browser_about__flags.cc
@@ -0,0 +1,285 @@
+--- chrome/browser/about_flags.cc.orig 2019-12-12 12:39:07 UTC
++++ chrome/browser/about_flags.cc
+@@ -162,7 +162,7 @@
+ #include "ui/gl/gl_switches.h"
+ #include "ui/native_theme/native_theme_features.h"
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include "base/allocator/buildflags.h"
+ #endif
+
+@@ -716,7 +716,7 @@ const FeatureEntry::FeatureVariation
+ nullptr}};
+ #endif // OS_ANDROID
+
+-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+ const FeatureEntry::FeatureParam
+ kAutofillSaveCreditCardUsesImprovedMessagingStoreCard[] = {
+ {autofill::features::
+@@ -763,7 +763,7 @@ const FeatureEntry::FeatureVariation
+ kAutofillSaveCreditCardUsesImprovedMessagingConfirmAndSaveCard),
+ nullptr},
+ };
+-#endif // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
++#endif // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+
+ const FeatureEntry::Choice kMemlogModeChoices[] = {
+ {flags_ui::kGenericExperimentChoiceDisabled, "", ""},
+@@ -816,7 +816,7 @@ const FeatureEntry::Choice kMemlogSamplingRateChoices[
+ heap_profiling::kMemlogSamplingRate5MB},
+ };
+
+-#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_BSD)
+ const FeatureEntry::FeatureParam kOmniboxDocumentProviderServerScoring[] = {
+ {"DocumentUseServerScore", "true"},
+ {"DocumentUseClientScore", "false"},
+@@ -854,7 +854,7 @@ const FeatureEntry::FeatureVariation kOmniboxDocumentP
+ base::size(kOmniboxDocumentProviderClientScoring), nullptr},
+ {"server and client scores", kOmniboxDocumentProviderServerAndClientScoring,
+ base::size(kOmniboxDocumentProviderServerAndClientScoring), nullptr}};
+-#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN)
++#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_BSD)
+
+ const FeatureEntry::FeatureParam kOmniboxOnFocusSuggestionsParamNTPOmnibox[] = {
+ {"ZeroSuggestVariant:7:*", ZeroSuggestProvider::kRemoteNoUrlVariant}};
+@@ -932,7 +932,7 @@ const FeatureEntry::FeatureVariation kOmniboxMaxURLMat
+ {"6 matches", kOmniboxMaxURLMatches6, base::size(kOmniboxMaxURLMatches6),
+ nullptr}};
+
+-#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN) || \
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_BSD) || \
+ defined(OS_CHROMEOS)
+ const FeatureEntry::FeatureParam kTranslateBubbleUIButton[] = {
+ {language::kTranslateUIBubbleKey, language::kTranslateUIBubbleButtonValue}};
+@@ -948,7 +948,7 @@ const FeatureEntry::FeatureVariation kTranslateBubbleU
+ {"Tab", kTranslateBubbleUITab, base::size(kTranslateBubbleUITab), nullptr},
+ {"Button_GM2", kTranslateBubbleUIButtonGM2,
+ base::size(kTranslateBubbleUIButton), nullptr}};
+-#endif // OS_LINUX || OS_MACOSX || OS_WIN || OS_CHROMEOS
++#endif // OS_LINUX || OS_MACOSX || OS_WIN || OS_BSD || OS_CHROMEOS
+
+ const FeatureEntry::FeatureParam kMarkHttpAsDangerous[] = {
+ {security_state::features::kMarkHttpAsFeatureParameterName,
+@@ -1849,13 +1849,13 @@ const FeatureEntry kFeatureEntries[] = {
+ flag_descriptions::kCloudPrintXpsDescription, kOsWin,
+ SINGLE_VALUE_TYPE(switches::kEnableCloudPrintXps)},
+ #endif // OS_WIN
+-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ {"enable-webgl2-compute-context",
+ flag_descriptions::kWebGL2ComputeContextName,
+ flag_descriptions::kWebGL2ComputeContextDescription,
+ kOsWin | kOsLinux | kOsCrOS,
+ SINGLE_VALUE_TYPE(switches::kEnableWebGL2ComputeContext)},
+-#endif // defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS)
++#endif // defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ {"enable-webgl-draft-extensions",
+ flag_descriptions::kWebglDraftExtensionsName,
+ flag_descriptions::kWebglDraftExtensionsDescription, kOsAll,
+@@ -1904,14 +1904,14 @@ const FeatureEntry kFeatureEntries[] = {
+ "OverrideTranslateTriggerInIndia")},
+ #endif // OS_ANDROID
+
+-#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN) || \
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_BSD) || \
+ defined(OS_CHROMEOS)
+ {"translate-ui-bubble-options", flag_descriptions::kTranslateBubbleUIName,
+ flag_descriptions::kTranslateBubbleUIDescription, kOsDesktop,
+ FEATURE_WITH_PARAMS_VALUE_TYPE(language::kUseButtonTranslateBubbleUi,
+ kTranslateBubbleUIVariations,
+ "UseButtonTranslateBubbleUI")},
+-#endif // OS_LINUX || OS_MACOSX || OS_WIN || OS_CHROMEOS
++#endif // OS_LINUX || OS_MACOSX || OS_WIN || OS_CHROMEOS || OS_BSD
+
+ #if BUILDFLAG(ENABLE_NATIVE_NOTIFICATIONS) && !defined(OS_CHROMEOS)
+ {"enable-native-notifications",
+@@ -1983,7 +1983,7 @@ const FeatureEntry kFeatureEntries[] = {
+ flag_descriptions::kCrostiniBackupDescription, kOsCrOS,
+ FEATURE_VALUE_TYPE(chromeos::features::kCrostiniBackup)},
+ #endif // OS_CHROMEOS
+-#if defined(OS_CHROMEOS) || defined(OS_LINUX)
++#if defined(OS_CHROMEOS) || defined(OS_LINUX) || defined(OS_BSD)
+ {"terminal-system-app", flag_descriptions::kTerminalSystemAppName,
+ flag_descriptions::kTerminalSystemAppDescription, kOsCrOS | kOsLinux,
+ FEATURE_VALUE_TYPE(features::kTerminalSystemApp)},
+@@ -1992,7 +1992,7 @@ const FeatureEntry kFeatureEntries[] = {
+ flag_descriptions::kDynamicTcmallocDescription, kOsCrOS | kOsLinux,
+ FEATURE_VALUE_TYPE(performance_manager::features::kDynamicTcmallocTuning)},
+ #endif // BUILDFLAG(USE_TCMALLOC)
+-#endif // OS_CHROMEOS || OS_LINUX
++#endif // OS_CHROMEOS || OS_LINUX || defined(OS_BSD)
+ #if defined(OS_ANDROID)
+ {"enable-credit-card-assist", flag_descriptions::kCreditCardAssistName,
+ flag_descriptions::kCreditCardAssistDescription, kOsAndroid,
+@@ -2075,7 +2075,7 @@ const FeatureEntry kFeatureEntries[] = {
+ FEATURE_VALUE_TYPE(
+ previews::features::kHTTPSServerPreviewsUsingURLLoader)},
+ #endif // OS_ANDROID
+-#if defined(OS_CHROMEOS) || defined(OS_LINUX)
++#if defined(OS_CHROMEOS) || defined(OS_LINUX) || defined(OS_BSD)
+ {"enable-save-data", flag_descriptions::kEnableSaveDataName,
+ flag_descriptions::kEnableSaveDataDescription, kOsCrOS,
+ SINGLE_VALUE_TYPE(
+@@ -2427,12 +2427,12 @@ const FeatureEntry kFeatureEntries[] = {
+ "AndroidNightMode")},
+ #endif // BUILDFLAG(ENABLE_ANDROID_NIGHT_MODE)
+ #endif // OS_ANDROID
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ {"enable-dbus-and-x11-status-icons",
+ flag_descriptions::kEnableDbusAndX11StatusIconsName,
+ flag_descriptions::kEnableDbusAndX11StatusIconsDescription, kOsLinux,
+ FEATURE_VALUE_TYPE(features::kEnableDbusAndX11StatusIcons)},
+-#endif // defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#endif // (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ {"enable-experimental-accessibility-features",
+ flag_descriptions::kExperimentalAccessibilityFeaturesName,
+ flag_descriptions::kExperimentalAccessibilityFeaturesDescription, kOsCrOS,
+@@ -2752,7 +2752,7 @@ const FeatureEntry kFeatureEntries[] = {
+ flag_descriptions::kOmniboxLocalEntitySuggestionsDescription, kOsDesktop,
+ FEATURE_VALUE_TYPE(omnibox::kOmniboxLocalEntitySuggestions)},
+
+-#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_BSD)
+ {"omnibox-experimental-keyword-mode",
+ flag_descriptions::kOmniboxExperimentalKeywordModeName,
+ flag_descriptions::kOmniboxExperimentalKeywordModeDescription, kOsDesktop,
+@@ -2806,7 +2806,7 @@ const FeatureEntry kFeatureEntries[] = {
+ FEATURE_WITH_PARAMS_VALUE_TYPE(omnibox::kDocumentProvider,
+ kOmniboxDocumentProviderVariations,
+ "OmniboxBundledExperimentV1")},
+-#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN)
++#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_BSD)
+
+ {"enable-speculative-service-worker-start-on-query-input",
+ flag_descriptions::kSpeculativeServiceWorkerStartOnQueryInputName,
+@@ -3026,13 +3026,13 @@ const FeatureEntry kFeatureEntries[] = {
+ flag_descriptions::kClickToOpenPDFDescription, kOsAll,
+ FEATURE_VALUE_TYPE(features::kClickToOpenPDFPlaceholder)},
+
+-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+ {"direct-manipulation-stylus",
+ flag_descriptions::kDirectManipulationStylusName,
+ flag_descriptions::kDirectManipulationStylusDescription,
+ kOsWin | kOsMac | kOsLinux,
+ FEATURE_VALUE_TYPE(features::kDirectManipulationStylus)},
+-#endif // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
++#endif // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+
+ #if !defined(OS_ANDROID)
+ {"chrome-colors", flag_descriptions::kChromeColorsName,
+@@ -3729,7 +3729,7 @@ const FeatureEntry kFeatureEntries[] = {
+ FEATURE_VALUE_TYPE(kClickToCallReceiver)},
+ #endif // defined(OS_ANDROID)
+
+-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || \
++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD) || \
+ defined(OS_CHROMEOS)
+ {"click-to-call-context-menu-selected-text",
+ flag_descriptions::kClickToCallContextMenuForSelectedTextName,
+@@ -3739,7 +3739,7 @@ const FeatureEntry kFeatureEntries[] = {
+ {"click-to-call-ui", flag_descriptions::kClickToCallUIName,
+ flag_descriptions::kClickToCallUIDescription, kOsDesktop,
+ FEATURE_VALUE_TYPE(kClickToCallUI)},
+-#endif // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) ||
++#endif // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD) ||
+ // defined(OS_CHROMEOS)
+
+ {"shared-clipboard-receiver",
+@@ -3859,13 +3859,13 @@ const FeatureEntry kFeatureEntries[] = {
+ FEATURE_VALUE_TYPE(printing::features::kEnableCustomMacPaperSizes)},
+ #endif
+
+-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || \
++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD) || \
+ defined(OS_CHROMEOS)
+ {"enable-reopen-tab-in-product-help",
+ flag_descriptions::kReopenTabInProductHelpName,
+ flag_descriptions::kReopenTabInProductHelpDescription, kOsDesktop,
+ FEATURE_VALUE_TYPE(feature_engagement::kIPHReopenTabFeature)},
+-#endif // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) ||
++#endif // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD) ||
+ // defined(OS_CHROMEOS)
+
+ {"enable-audio-focus-enforcement",
+@@ -4245,7 +4245,7 @@ const FeatureEntry kFeatureEntries[] = {
+ flag_descriptions::kAudioWorkletRealtimeThreadDescription, kOsAll,
+ FEATURE_VALUE_TYPE(blink::features::kAudioWorkletRealtimeThread)},
+
+-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+ {"enable-autofill-save-credit-card-uses-improved-messaging",
+ flag_descriptions::kEnableAutofillSaveCreditCardUsesImprovedMessagingName,
+ flag_descriptions::
+@@ -4255,7 +4255,7 @@ const FeatureEntry kFeatureEntries[] = {
+ autofill::features::kAutofillSaveCreditCardUsesImprovedMessaging,
+ kAutofillSaveCreditCardUsesImprovedMessagingVariations,
+ "AutofillSaveCreditCardUsesImprovedMessaging")},
+-#endif // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
++#endif // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+
+ #if defined(OS_CHROMEOS)
+ {"release-notes", flag_descriptions::kReleaseNotesName,
+@@ -4337,12 +4337,12 @@ const FeatureEntry kFeatureEntries[] = {
+ flag_descriptions::kEnableSyncUSSNigoriDescription, kOsAll,
+ FEATURE_VALUE_TYPE(switches::kSyncUSSNigori)},
+
+-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+ {"global-media-controls", flag_descriptions::kGlobalMediaControlsName,
+ flag_descriptions::kGlobalMediaControlsDescription,
+ kOsWin | kOsMac | kOsLinux,
+ FEATURE_VALUE_TYPE(media::kGlobalMediaControls)},
+-#endif // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
++#endif // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+
+ #if BUILDFLAG(ENABLE_SPELLCHECK) && defined(OS_WIN)
+ {"win-use-native-spellchecker",
+@@ -4355,12 +4355,12 @@ const FeatureEntry kFeatureEntries[] = {
+ flag_descriptions::kSafetyTipDescription, kOsAll,
+ FEATURE_VALUE_TYPE(features::kSafetyTipUI)},
+
+-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+ {"animated-avatar-button", flag_descriptions::kAnimatedAvatarButtonName,
+ flag_descriptions::kAnimatedAvatarButtonDescription,
+ kOsWin | kOsMac | kOsLinux,
+ FEATURE_VALUE_TYPE(features::kAnimatedAvatarButton)},
+-#endif // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
++#endif // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+
+ #if defined(OS_CHROMEOS)
+ {"crostini-webui-installer", flag_descriptions::kCrostiniWebUIInstallerName,
+@@ -4484,12 +4484,12 @@ const FeatureEntry kFeatureEntries[] = {
+ flag_descriptions::kBundledHTTPExchangesDescription, kOsAll,
+ FEATURE_VALUE_TYPE(features::kBundledHTTPExchanges)},
+
+-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+ {"profile-menu-revamp", flag_descriptions::kProfileMenuRevampName,
+ flag_descriptions::kProfileMenuRevampDescription,
+ kOsWin | kOsMac | kOsLinux,
+ FEATURE_VALUE_TYPE(features::kProfileMenuRevamp)},
+-#endif // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
++#endif // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+
+ {"password-leak-detection", flag_descriptions::kPasswordLeakDetectionName,
+ flag_descriptions::kPasswordLeakDetectionDescription, kOsAll,
+@@ -4543,11 +4543,11 @@ const FeatureEntry kFeatureEntries[] = {
+ FEATURE_VALUE_TYPE(content_settings::kImprovedCookieControls)},
+ #endif // !defined(OS_ANDROID)
+
+-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+ {"sync-clipboard-service", flag_descriptions::kSyncClipboardServiceName,
+ flag_descriptions::kSyncClipboardServiceDescription, kOsDesktop,
+ FEATURE_VALUE_TYPE(features::kSyncClipboardServiceFeature)},
+-#endif // OS_WIN || OS_MACOSX || OS_LINUX
++#endif // OS_WIN || OS_MACOSX || OS_LINUX || defined(OS_BSD)
+
+ #if defined(OS_ANDROID)
+ {"enable-clipboard-provider-text-suggestions",
diff --git a/devel/electron7/files/patch-chrome_browser_after__startup__task__utils.cc b/devel/electron7/files/patch-chrome_browser_after__startup__task__utils.cc
new file mode 100644
index 000000000000..07b7adc53d4a
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_browser_after__startup__task__utils.cc
@@ -0,0 +1,38 @@
+--- chrome/browser/after_startup_task_utils.cc.orig 2019-12-12 12:39:07 UTC
++++ chrome/browser/after_startup_task_utils.cc
+@@ -32,7 +32,7 @@
+ #include "chrome/browser/ui/tabs/tab_strip_model.h"
+ #endif
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ #include "ui/views/linux_ui/linux_ui.h"
+ #endif
+
+@@ -118,7 +118,7 @@ void QueueTask(std::unique_ptr<AfterStartupTask> queue
+
+ void SetBrowserStartupIsComplete() {
+ DCHECK_CURRENTLY_ON(BrowserThread::UI);
+-#if defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_LINUX)
++#if defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD)
+ // Process::Current().CreationTime() is not available on all platforms.
+ const base::Time process_creation_time =
+ base::Process::Current().CreationTime();
+@@ -126,7 +126,7 @@ void SetBrowserStartupIsComplete() {
+ UMA_HISTOGRAM_LONG_TIMES("Startup.AfterStartupTaskDelayedUntilTime",
+ base::Time::Now() - process_creation_time);
+ }
+-#endif // defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_LINUX)
++#endif // defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD)
+ UMA_HISTOGRAM_COUNTS_10000("Startup.AfterStartupTaskCount",
+ g_after_startup_tasks.Get().size());
+ g_startup_complete_flag.Get().Set();
+@@ -135,7 +135,7 @@ void SetBrowserStartupIsComplete() {
+ g_after_startup_tasks.Get().clear();
+ g_after_startup_tasks.Get().shrink_to_fit();
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ // Make sure we complete the startup notification sequence, or launchers will
+ // get confused by not receiving the expected message from the main process.
+ views::LinuxUI* linux_ui = views::LinuxUI::instance();
diff --git a/devel/electron7/files/patch-chrome_browser_apps_platform__apps_api_music__manager__private_device__id__linux.cc b/devel/electron7/files/patch-chrome_browser_apps_platform__apps_api_music__manager__private_device__id__linux.cc
new file mode 100644
index 000000000000..ff7025324a99
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_browser_apps_platform__apps_api_music__manager__private_device__id__linux.cc
@@ -0,0 +1,70 @@
+--- chrome/browser/apps/platform_apps/api/music_manager_private/device_id_linux.cc.orig 2019-12-12 12:39:07 UTC
++++ chrome/browser/apps/platform_apps/api/music_manager_private/device_id_linux.cc
+@@ -4,6 +4,11 @@
+
+ #include "chrome/browser/apps/platform_apps/api/music_manager_private/device_id.h"
+
++#if defined(OS_FREEBSD)
++#include <sys/types.h>
++#include <net/if_dl.h>
++#endif
++
+ #include <ifaddrs.h>
+ #include <net/if.h>
+ #include <stddef.h>
+@@ -106,9 +111,36 @@ class MacAddressProcessor {
+ const char* const prefixes[],
+ size_t prefixes_count) {
+ const int MAC_LENGTH = 6;
++#if defined(OS_FREEBSD)
++ struct ifaddrs *ifap, *ifinfo;
++#else
+ struct ifreq ifinfo;
++#endif
+
+ memset(&ifinfo, 0, sizeof(ifinfo));
++
++#if defined(OS_FREEBSD)
++ int result = getifaddrs(&ifap);
++
++ if (result != 0)
++ return true;
++
++ result = 1; // no MAC found yet
++
++ for (ifinfo = ifap; ifinfo != NULL; ifinfo = ifinfo->ifa_next) {
++ struct sockaddr* sa = ifinfo->ifa_addr;
++ if (sa->sa_family == AF_LINK &&
++ !strncmp(ifinfo->ifa_name, ifaddr->ifa_name,
++ sizeof(ifinfo->ifa_name) - 1)) {
++ result = 0;
++ break;
++ }
++ }
++
++ char mac_address[6];
++
++ strncpy(mac_address, (const char*)LLADDR((struct sockaddr_dl*)ifinfo->ifa_addr), sizeof(mac_address));
++#else
+ strncpy(ifinfo.ifr_name, ifaddr->ifa_name, sizeof(ifinfo.ifr_name) - 1);
+
+ int sd = socket(AF_INET, SOCK_DGRAM, 0);
+@@ -120,11 +152,18 @@ class MacAddressProcessor {
+
+ const char* mac_address =
+ static_cast<const char*>(ifinfo.ifr_hwaddr.sa_data);
++#endif
++
+ if (!is_valid_mac_address_.Run(mac_address, MAC_LENGTH))
+ return true;
+
++#if defined(OS_FREEBSD)
++ if (!IsValidPrefix(ifinfo->ifa_name, prefixes, prefixes_count))
++ return true;
++#else
+ if (!IsValidPrefix(ifinfo.ifr_name, prefixes, prefixes_count))
+ return true;
++#endif
+
+ // Got one!
+ found_mac_address_ =
diff --git a/devel/electron7/files/patch-chrome_browser_autocomplete_chrome__autocomplete__scheme__classifier.cc b/devel/electron7/files/patch-chrome_browser_autocomplete_chrome__autocomplete__scheme__classifier.cc
new file mode 100644
index 000000000000..f5a68f327c75
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_browser_autocomplete_chrome__autocomplete__scheme__classifier.cc
@@ -0,0 +1,17 @@
+--- chrome/browser/autocomplete/chrome_autocomplete_scheme_classifier.cc.orig 2019-12-12 12:39:07 UTC
++++ chrome/browser/autocomplete/chrome_autocomplete_scheme_classifier.cc
+@@ -59,12 +59,12 @@ ChromeAutocompleteSchemeClassifier::GetInputTypeForSch
+ return metrics::OmniboxInputType::QUERY;
+
+ case ExternalProtocolHandler::UNKNOWN: {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Linux impl of GetApplicationNameForProtocol doesn't distinguish
+ // between URL schemes with handers and those without. This will
+ // make the default behaviour be search on Linux.
+ return metrics::OmniboxInputType::EMPTY;
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+ // If block state is unknown, check if there is an application registered
+ // for the url scheme.
+ GURL url(scheme + "://");
diff --git a/devel/electron7/files/patch-chrome_browser_background_background__mode__manager.cc b/devel/electron7/files/patch-chrome_browser_background_background__mode__manager.cc
new file mode 100644
index 000000000000..9bc3d3093bb6
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_browser_background_background__mode__manager.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/background/background_mode_manager.cc.orig 2019-12-12 12:39:07 UTC
++++ chrome/browser/background/background_mode_manager.cc
+@@ -769,7 +769,7 @@ gfx::ImageSkia GetStatusTrayIcon() {
+ return gfx::ImageSkia();
+
+ return family->CreateExact(size).AsImageSkia();
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ return *ui::ResourceBundle::GetSharedInstance().GetImageSkiaNamed(
+ IDR_PRODUCT_LOGO_128);
+ #elif defined(OS_MACOSX)
diff --git a/devel/electron7/files/patch-chrome_browser_background_background__mode__optimizer.cc b/devel/electron7/files/patch-chrome_browser_background_background__mode__optimizer.cc
new file mode 100644
index 000000000000..1d55f7d5f674
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_browser_background_background__mode__optimizer.cc
@@ -0,0 +1,15 @@
+--- chrome/browser/background/background_mode_optimizer.cc.orig 2019-12-12 12:39:07 UTC
++++ chrome/browser/background/background_mode_optimizer.cc
+@@ -30,10 +30,10 @@ std::unique_ptr<BackgroundModeOptimizer> BackgroundMod
+ switches::kKeepAliveForTest))
+ return nullptr;
+
+-#if defined(OS_WIN) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD)
+ if (base::FeatureList::IsEnabled(features::kBackgroundModeAllowRestart))
+ return base::WrapUnique(new BackgroundModeOptimizer());
+-#endif // defined(OS_WIN) || defined(OS_LINUX)
++#endif // defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD)
+
+ return nullptr;
+ }
diff --git a/devel/electron7/files/patch-chrome_browser_browser__features.cc b/devel/electron7/files/patch-chrome_browser_browser__features.cc
new file mode 100644
index 000000000000..38f916a57109
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_browser_browser__features.cc
@@ -0,0 +1,14 @@
+--- chrome/browser/browser_features.cc.orig 2019-12-12 12:39:07 UTC
++++ chrome/browser/browser_features.cc
+@@ -13,9 +13,9 @@ const base::Feature kDoubleTapToZoomInTabletMode{
+ "DoubleTapToZoomInTabletMode", base::FEATURE_DISABLED_BY_DEFAULT};
+ #endif
+
+-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+ const base::Feature kSyncClipboardServiceFeature{
+ "SyncClipboardService", base::FEATURE_DISABLED_BY_DEFAULT};
+-#endif // OS_WIN || OS_MACOSX || OS_LINUX
++#endif // OS_WIN || OS_MACOSX || OS_LINUX || defined(OS_BSD)
+
+ } // namespace features
diff --git a/devel/electron7/files/patch-chrome_browser_browser__features.h b/devel/electron7/files/patch-chrome_browser_browser__features.h
new file mode 100644
index 000000000000..79f3b7ab9dd9
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_browser_browser__features.h
@@ -0,0 +1,14 @@
+--- chrome/browser/browser_features.h.orig 2019-12-12 12:39:07 UTC
++++ chrome/browser/browser_features.h
+@@ -20,9 +20,9 @@ namespace features {
+ extern const base::Feature kDoubleTapToZoomInTabletMode;
+ #endif
+
+-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+ extern const base::Feature kSyncClipboardServiceFeature;
+-#endif // OS_WIN || OS_MACOSX || OS_LINUX
++#endif // OS_WIN || OS_MACOSX || OS_LINUX || defined(OS_BSD)
+
+ } // namespace features
+
diff --git a/devel/electron7/files/patch-chrome_browser_browser__resources.grd b/devel/electron7/files/patch-chrome_browser_browser__resources.grd
new file mode 100644
index 000000000000..b03da3726ccf
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_browser_browser__resources.grd
@@ -0,0 +1,20 @@
+--- chrome/browser/browser_resources.grd.orig 2019-12-12 12:39:07 UTC
++++ chrome/browser/browser_resources.grd
+@@ -106,7 +106,7 @@
+ <include name="IDR_DISCARDS_SORTED_TABLE_BEHAVIOR_JS" file="resources\discards\sorted_table_behavior.js" compress="gzip" type="BINDATA" />
+ <include name="IDR_DISCARDS_WEBUI_GRAPH_DUMP_MOJOM_LITE_JS" file="${root_gen_dir}\chrome\browser\performance_manager\webui_graph_dump.mojom-lite.js" compress="gzip" use_base_dir="false" type="BINDATA" />
+ </if>
+- <if expr="is_win or is_macosx or (is_linux and not is_chromeos)">
++ <if expr="is_win or is_macosx or (is_posix and not is_chromeos)">
+ <include name="IDR_BROWSER_SWITCH_APP_HTML" file="resources\browser_switch\app.html" compress="gzip" allowexternalscript="true" type="BINDATA" />
+ <include name="IDR_BROWSER_SWITCH_APP_JS" file="resources\browser_switch\app.js" compress="gzip" type="BINDATA" />
+ <include name="IDR_BROWSER_SWITCH_PROXY_HTML" file="resources\browser_switch\browser_switch_proxy.html" compress="gzip" allowexternalscript="true" type="BINDATA" />
+@@ -561,7 +561,7 @@
+ <include name="IDR_IME_WINDOW_CLOSE_H" file="resources\input_ime\ime_window_close_hover.png" type="BINDATA" />
+ </if>
+ <include name="IDR_SSL_ERROR_ASSISTANT_PB" file="${root_gen_dir}/chrome/browser/resources/ssl/ssl_error_assistant/ssl_error_assistant.pb" use_base_dir="false" type="BINDATA" />
+- <if expr="is_android or is_linux">
++ <if expr="is_android or is_posix">
+ <include name="IDR_SANDBOX_INTERNALS_HTML" file="resources\sandbox_internals\sandbox_internals.html" flattenhtml="true" allowexternalscript="true" type="BINDATA" compress="gzip" />
+ <include name="IDR_SANDBOX_INTERNALS_JS" file="resources\sandbox_internals\sandbox_internals.js" type="BINDATA" compress="gzip" />
+ </if>
diff --git a/devel/electron7/files/patch-chrome_browser_chrome__browser__main.cc b/devel/electron7/files/patch-chrome_browser_chrome__browser__main.cc
new file mode 100644
index 000000000000..016a36b929c8
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_browser_chrome__browser__main.cc
@@ -0,0 +1,75 @@
+--- chrome/browser/chrome_browser_main.cc.orig 2019-12-12 12:39:08 UTC
++++ chrome/browser/chrome_browser_main.cc
+@@ -222,9 +222,9 @@
+ #include "components/arc/metrics/stability_metrics_manager.h"
+ #endif // defined(OS_CHROMEOS)
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS)
+ #include "chrome/browser/first_run/upgrade_util_linux.h"
+-#endif // defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#endif // (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS)
+
+ #if defined(OS_LINUX)
+ #include "components/crash/content/app/breakpad_linux.h"
+@@ -261,7 +261,7 @@
+ #endif // defined(OS_WIN)
+
+ #if defined(OS_WIN) || defined(OS_MACOSX) || \
+- (defined(OS_LINUX) && !defined(OS_CHROMEOS))
++ (defined(OS_LINUX) && !defined(OS_CHROMEOS) || defined(OS_BSD))
+ #include "chrome/browser/metrics/desktop_session_duration/desktop_session_duration_tracker.h"
+ #include "chrome/browser/profiles/profile_activity_metrics_recorder.h"
+ #endif
+@@ -1075,7 +1075,7 @@ int ChromeBrowserMainParts::PreCreateThreadsImpl() {
+ AddFirstRunNewTabs(browser_creator_.get(), master_prefs_->new_tabs);
+ }
+
+-#if defined(OS_MACOSX) || defined(OS_LINUX)
++#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+ // Create directory for user-level Native Messaging manifest files. This
+ // makes it less likely that the directory will be created by third-party
+ // software with incorrect owner or permission. See crbug.com/725513 .
+@@ -1084,14 +1084,14 @@ int ChromeBrowserMainParts::PreCreateThreadsImpl() {
+ &user_native_messaging_dir));
+ if (!base::PathExists(user_native_messaging_dir))
+ base::CreateDirectory(user_native_messaging_dir);
+-#endif // defined(OS_MACOSX) || defined(OS_LINUX)
++#endif // defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+ }
+ #endif // !defined(OS_ANDROID) && !defined(OS_CHROMEOS)
+
+-#if defined(OS_LINUX) || defined(OS_OPENBSD)
++#if defined(OS_LINUX)
+ // Set the product channel for crash reports.
+ breakpad::SetChannelCrashKey(chrome::GetChannelName());
+-#endif // defined(OS_LINUX) || defined(OS_OPENBSD)
++#endif // defined(OS_LINUX)
+
+ #if defined(OS_MACOSX)
+ // Get the Keychain API to register for distributed notifications on the main
+@@ -1121,7 +1121,7 @@ int ChromeBrowserMainParts::PreCreateThreadsImpl() {
+ }
+
+ #if defined(OS_WIN) || defined(OS_MACOSX) || \
+- (defined(OS_LINUX) && !defined(OS_CHROMEOS))
++ (defined(OS_LINUX) && !defined(OS_CHROMEOS) || defined(OS_BSD))
+ metrics::DesktopSessionDurationTracker::Initialize();
+ ProfileActivityMetricsRecorder::Initialize();
+ #endif
+@@ -1280,6 +1280,7 @@ void ChromeBrowserMainParts::PostBrowserStart() {
+ base::TimeDelta::FromMinutes(1));
+
+ #if !defined(OS_ANDROID)
++#if !defined(OS_BSD)
+ if (base::FeatureList::IsEnabled(features::kWebUsb)) {
+ web_usb_detector_.reset(new WebUsbDetector());
+ base::PostTask(
+@@ -1288,6 +1289,7 @@ void ChromeBrowserMainParts::PostBrowserStart() {
+ base::BindOnce(&WebUsbDetector::Initialize,
+ base::Unretained(web_usb_detector_.get())));
+ }
++#endif
+ if (base::FeatureList::IsEnabled(features::kTabMetricsLogging)) {
+ // Initialize the TabActivityWatcher to begin logging tab activity events.
+ resource_coordinator::TabActivityWatcher::GetInstance();
diff --git a/devel/electron7/files/patch-chrome_browser_chrome__browser__main__linux.cc b/devel/electron7/files/patch-chrome_browser_chrome__browser__main__linux.cc
new file mode 100644
index 000000000000..359890dcee6d
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_browser_chrome__browser__main__linux.cc
@@ -0,0 +1,27 @@
+--- chrome/browser/chrome_browser_main_linux.cc.orig 2019-12-12 12:39:08 UTC
++++ chrome/browser/chrome_browser_main_linux.cc
+@@ -91,12 +91,14 @@ void ChromeBrowserMainPartsLinux::PreProfileInit() {
+ void ChromeBrowserMainPartsLinux::PostProfileInit() {
+ ChromeBrowserMainPartsPosix::PostProfileInit();
+
++#if !defined(OS_BSD)
+ g_browser_process->metrics_service()->RecordBreakpadRegistration(
+ breakpad::IsCrashReporterEnabled());
++#endif
+ }
+
+ void ChromeBrowserMainPartsLinux::PostMainMessageLoopStart() {
+-#if !defined(OS_CHROMEOS)
++#if !defined(OS_CHROMEOS) && !defined(OS_BSD)
+ bluez::BluezDBusManager::Initialize(nullptr /* system_bus */);
+ #endif
+
+@@ -104,7 +106,7 @@ void ChromeBrowserMainPartsLinux::PostMainMessageLoopS
+ }
+
+ void ChromeBrowserMainPartsLinux::PostDestroyThreads() {
+-#if !defined(OS_CHROMEOS)
++#if !defined(OS_CHROMEOS) && !defined(OS_BSD)
+ bluez::BluezDBusManager::Shutdown();
+ bluez::BluezDBusThreadManager::Shutdown();
+ #endif
diff --git a/devel/electron7/files/patch-chrome_browser_chrome__browser__main__posix.cc b/devel/electron7/files/patch-chrome_browser_chrome__browser__main__posix.cc
new file mode 100644
index 000000000000..e9dd14fff82f
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_browser_chrome__browser__main__posix.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/chrome_browser_main_posix.cc.orig 2019-12-12 12:39:08 UTC
++++ chrome/browser/chrome_browser_main_posix.cc
+@@ -70,7 +70,7 @@ void ExitHandler::ExitWhenPossibleOnUIThread(int signa
+ // ExitHandler takes care of deleting itself.
+ new ExitHandler();
+ } else {
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ switch (signal) {
+ case SIGINT:
+ case SIGHUP:
+@@ -166,7 +166,7 @@ void ChromeBrowserMainPartsPosix::PostMainMessageLoopS
+ void ChromeBrowserMainPartsPosix::ShowMissingLocaleMessageBox() {
+ #if defined(OS_CHROMEOS)
+ NOTREACHED(); // Should not ever happen on ChromeOS.
+-#elif defined(OS_MACOSX)
++#elif defined(OS_MACOSX) || defined(OS_BSD)
+ // Not called on Mac because we load the locale files differently.
+ NOTREACHED();
+ #elif defined(USE_AURA)
diff --git a/devel/electron7/files/patch-chrome_browser_chrome__content__browser__client.cc b/devel/electron7/files/patch-chrome_browser_chrome__content__browser__client.cc
new file mode 100644
index 000000000000..c7b10ad5e591
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_browser_chrome__content__browser__client.cc
@@ -0,0 +1,83 @@
+--- chrome/browser/chrome_content_browser_client.cc.orig 2019-12-12 12:39:08 UTC
++++ chrome/browser/chrome_content_browser_client.cc
+@@ -403,7 +403,7 @@
+ #include "components/user_manager/user.h"
+ #include "components/user_manager/user_manager.h"
+ #include "services/service_manager/public/mojom/interface_provider_spec.mojom.h"
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ #include "chrome/browser/chrome_browser_main_linux.h"
+ #elif defined(OS_ANDROID)
+ #include "base/android/application_status_listener.h"
+@@ -459,7 +459,7 @@
+ #endif // !defined(OS_ANDROID)
+
+ #if defined(OS_WIN) || defined(OS_MACOSX) || \
+- (defined(OS_LINUX) && !defined(OS_CHROMEOS))
++ (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ #include "chrome/browser/browser_switcher/browser_switcher_navigation_throttle.h"
+ #endif
+
+@@ -485,7 +485,7 @@
+ #include "chrome/browser/ui/views/chrome_browser_main_extra_parts_views.h"
+ #endif
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ #if defined(USE_X11)
+ #include "chrome/browser/ui/views/chrome_browser_main_extra_parts_views_linux_x11.h"
+ #else
+@@ -1200,7 +1200,7 @@ ChromeContentBrowserClient::CreateBrowserMainParts(
+ #elif defined(OS_CHROMEOS)
+ main_parts = std::make_unique<chromeos::ChromeBrowserMainPartsChromeos>(
+ parameters, startup_data_);
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ main_parts =
+ std::make_unique<ChromeBrowserMainPartsLinux>(parameters, startup_data_);
+ #elif defined(OS_ANDROID)
+@@ -1226,7 +1226,7 @@ ChromeContentBrowserClient::CreateBrowserMainParts(
+ // Construct additional browser parts. Stages are called in the order in
+ // which they are added.
+ #if defined(TOOLKIT_VIEWS)
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ #if defined(USE_X11)
+ main_parts->AddParts(new ChromeBrowserMainExtraPartsViewsLinuxX11());
+ #else
+@@ -2029,7 +2029,7 @@ void ChromeContentBrowserClient::AppendExtraCommandLin
+ command_line->AppendSwitchASCII(switches::kMetricsClientID,
+ client_info->client_id);
+ }
+-#elif defined(OS_POSIX)
++#elif defined(OS_POSIX) && !defined(OS_BSD)
+ #if defined(OS_ANDROID)
+ bool enable_crash_reporter = true;
+ #else
+@@ -2267,7 +2267,7 @@ void ChromeContentBrowserClient::AppendExtraCommandLin
+ StackSamplingConfiguration::Get()->AppendCommandLineSwitchForChildProcess(
+ process_type, command_line);
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Processes may only query perf_event_open with the BPF sandbox disabled.
+ if (browser_command_line.HasSwitch(switches::kEnableThreadInstructionCount) &&
+ command_line->HasSwitch(service_manager::switches::kNoSandbox)) {
+@@ -3575,7 +3575,7 @@ void ChromeContentBrowserClient::GetAdditionalFileSyst
+ }
+ }
+
+-#if defined(OS_POSIX) && !defined(OS_MACOSX)
++#if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_BSD)
+ void ChromeContentBrowserClient::GetAdditionalMappedFilesForChildProcess(
+ const base::CommandLine& command_line,
+ int child_process_id,
+@@ -4245,7 +4245,7 @@ ChromeContentBrowserClient::CreateThrottlesForNavigati
+ }
+
+ #if defined(OS_WIN) || defined(OS_MACOSX) || \
+- (defined(OS_LINUX) && !defined(OS_CHROMEOS))
++ (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ std::unique_ptr<content::NavigationThrottle> browser_switcher_throttle =
+ browser_switcher::BrowserSwitcherNavigationThrottle ::
+ MaybeCreateThrottleFor(handle);
diff --git a/devel/electron7/files/patch-chrome_browser_chrome__content__browser__client.h b/devel/electron7/files/patch-chrome_browser_chrome__content__browser__client.h
new file mode 100644
index 000000000000..1ae1e498405d
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_browser_chrome__content__browser__client.h
@@ -0,0 +1,17 @@
+--- chrome/browser/chrome_content_browser_client.h.orig 2019-12-12 12:39:08 UTC
++++ chrome/browser/chrome_content_browser_client.h
+@@ -360,12 +360,12 @@ class ChromeContentBrowserClient : public content::Con
+ void OverridePageVisibilityState(
+ content::RenderFrameHost* render_frame_host,
+ content::PageVisibilityState* visibility_state) override;
+-#if defined(OS_POSIX) && !defined(OS_MACOSX)
++#if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_BSD)
+ void GetAdditionalMappedFilesForChildProcess(
+ const base::CommandLine& command_line,
+ int child_process_id,
+ content::PosixFileDescriptorInfo* mappings) override;
+-#endif // defined(OS_POSIX) && !defined(OS_MACOSX)
++#endif // defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_BSD)
+ #if defined(OS_WIN)
+ bool PreSpawnRenderer(sandbox::TargetPolicy* policy,
+ RendererSpawnFlags flags) override;
diff --git a/devel/electron7/files/patch-chrome_browser_custom__handlers_protocol__handler__registry.cc b/devel/electron7/files/patch-chrome_browser_custom__handlers_protocol__handler__registry.cc
new file mode 100644
index 000000000000..17f85cd60c49
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_browser_custom__handlers_protocol__handler__registry.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/custom_handlers/protocol_handler_registry.cc.orig 2019-12-12 12:39:10 UTC
++++ chrome/browser/custom_handlers/protocol_handler_registry.cc
+@@ -43,7 +43,7 @@ const ProtocolHandler& LookupHandler(
+ // If true default protocol handlers will be removed if the OS level
+ // registration for a protocol is no longer Chrome.
+ bool ShouldRemoveHandlersNotInOS() {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // We don't do this on Linux as the OS registration there is not reliable,
+ // and Chrome OS doesn't have any notion of OS registration.
+ // TODO(benwells): When Linux support is more reliable remove this
diff --git a/devel/electron7/files/patch-chrome_browser_defaults.cc b/devel/electron7/files/patch-chrome_browser_defaults.cc
new file mode 100644
index 000000000000..db51b7910e4e
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_browser_defaults.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/defaults.cc.orig 2019-12-12 12:39:10 UTC
++++ chrome/browser/defaults.cc
+@@ -43,7 +43,7 @@ const bool kSyncAutoStarts = true;
+ const bool kSyncAutoStarts = false;
+ #endif
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ const bool kScrollEventChangesTab = true;
+ #else
+ const bool kScrollEventChangesTab = false;
diff --git a/devel/electron7/files/patch-chrome_browser_devtools_devtools__eye__dropper.cc b/devel/electron7/files/patch-chrome_browser_devtools_devtools__eye__dropper.cc
new file mode 100644
index 000000000000..65e525c2c84a
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_browser_devtools_devtools__eye__dropper.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/devtools/devtools_eye_dropper.cc.orig 2019-12-12 12:39:10 UTC
++++ chrome/browser/devtools/devtools_eye_dropper.cc
+@@ -163,7 +163,7 @@ void DevToolsEyeDropper::UpdateCursor() {
+ // magnified projection only with centered hotspot.
+ // Mac Retina requires cursor to be > 120px in order to render smoothly.
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ const float kCursorSize = 63;
+ const float kDiameter = 63;
+ const float kHotspotOffset = 32;
diff --git a/devel/electron7/files/patch-chrome_browser_diagnostics_diagnostics__writer.h b/devel/electron7/files/patch-chrome_browser_diagnostics_diagnostics__writer.h
new file mode 100644
index 000000000000..b02b6d6ef16a
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_browser_diagnostics_diagnostics__writer.h
@@ -0,0 +1,11 @@
+--- chrome/browser/diagnostics/diagnostics_writer.h.orig 2019-12-12 12:39:10 UTC
++++ chrome/browser/diagnostics/diagnostics_writer.h
+@@ -15,6 +15,8 @@ namespace diagnostics {
+ // Console base class used internally.
+ class SimpleConsole;
+
++#undef MACHINE
++
+ class DiagnosticsWriter : public DiagnosticsModel::Observer {
+ public:
+ // The type of formatting done by this writer.
diff --git a/devel/electron7/files/patch-chrome_browser_download_chrome__download__manager__delegate.cc b/devel/electron7/files/patch-chrome_browser_download_chrome__download__manager__delegate.cc
new file mode 100644
index 000000000000..76b34bf8d9a6
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_browser_download_chrome__download__manager__delegate.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/download/chrome_download_manager_delegate.cc.orig 2019-12-12 12:39:10 UTC
++++ chrome/browser/download/chrome_download_manager_delegate.cc
+@@ -1257,7 +1257,7 @@ void ChromeDownloadManagerDelegate::OnDownloadTargetDe
+ target_info->is_filetype_handled_safely)
+ DownloadItemModel(item).SetShouldPreferOpeningInBrowser(true);
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ if (item->GetOriginalMimeType() == "application/x-x509-user-cert")
+ DownloadItemModel(item).SetShouldPreferOpeningInBrowser(true);
+ #endif
+@@ -1287,7 +1287,7 @@ void ChromeDownloadManagerDelegate::OnDownloadTargetDe
+
+ bool ChromeDownloadManagerDelegate::IsOpenInBrowserPreferreredForFile(
+ const base::FilePath& path) {
+-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ if (path.MatchesExtension(FILE_PATH_LITERAL(".pdf"))) {
+ return !download_prefs_->ShouldOpenPdfInSystemReader();
+ }
diff --git a/devel/electron7/files/patch-chrome_browser_download_download__commands.cc b/devel/electron7/files/patch-chrome_browser_download_download__commands.cc
new file mode 100644
index 000000000000..48df142619a5
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_browser_download_download__commands.cc
@@ -0,0 +1,35 @@
+--- chrome/browser/download/download_commands.cc.orig 2019-12-12 12:39:10 UTC
++++ chrome/browser/download/download_commands.cc
+@@ -30,7 +30,7 @@
+ #include "net/base/url_util.h"
+ #include "ui/base/clipboard/scoped_clipboard_writer.h"
+
+-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ #include "chrome/browser/ui/browser.h"
+ #include "chrome/browser/ui/browser_finder.h"
+ #include "chrome/browser/ui/scoped_tabbed_browser_displayer.h"
+@@ -157,7 +157,7 @@ void DownloadCommands::ExecuteCommand(Command command)
+ model_->ExecuteCommand(this, command);
+ }
+
+-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+
+ Browser* DownloadCommands::GetBrowser() const {
+ chrome::ScopedTabbedBrowserDisplayer browser_displayer(model_->profile());
+@@ -180,12 +180,12 @@ bool DownloadCommands::CanOpenPdfInSystemViewer() cons
+ return IsDownloadPdf() &&
+ (IsAdobeReaderDefaultPDFViewer() ? is_adobe_pdf_reader_up_to_date
+ : true);
+-#elif defined(OS_MACOSX) || defined(OS_LINUX)
++#elif defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+ return IsDownloadPdf();
+ #endif
+ }
+
+-#endif // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
++#endif // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+
+ void DownloadCommands::CopyFileAsImageToClipboard() {
+ if (model_->GetState() != download::DownloadItem::COMPLETE ||
diff --git a/devel/electron7/files/patch-chrome_browser_download_download__commands.h b/devel/electron7/files/patch-chrome_browser_download_download__commands.h
new file mode 100644
index 000000000000..2c07d5f85d49
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_browser_download_download__commands.h
@@ -0,0 +1,11 @@
+--- chrome/browser/download/download_commands.h.orig 2019-12-12 12:39:10 UTC
++++ chrome/browser/download/download_commands.h
+@@ -45,7 +45,7 @@ class DownloadCommands {
+ bool IsCommandVisible(Command command) const;
+ void ExecuteCommand(Command command);
+
+-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ bool IsDownloadPdf() const;
+ bool CanOpenPdfInSystemViewer() const;
+ Browser* GetBrowser() const;
diff --git a/devel/electron7/files/patch-chrome_browser_download_download__item__model.cc b/devel/electron7/files/patch-chrome_browser_download_download__item__model.cc
new file mode 100644
index 000000000000..8a416580cf0b
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_browser_download_download__item__model.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/download/download_item_model.cc.orig 2019-12-12 12:39:10 UTC
++++ chrome/browser/download/download_item_model.cc
+@@ -565,7 +565,7 @@ bool DownloadItemModel::IsCommandChecked(
+ return download_->GetOpenWhenComplete() ||
+ download_crx_util::IsExtensionDownload(*download_);
+ case DownloadCommands::ALWAYS_OPEN_TYPE:
+-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ if (download_commands->CanOpenPdfInSystemViewer()) {
+ DownloadPrefs* prefs = DownloadPrefs::FromBrowserContext(profile());
+ return prefs->ShouldOpenPdfInSystemReader();
+@@ -602,7 +602,7 @@ void DownloadItemModel::ExecuteCommand(DownloadCommand
+ bool is_checked = IsCommandChecked(download_commands,
+ DownloadCommands::ALWAYS_OPEN_TYPE);
+ DownloadPrefs* prefs = DownloadPrefs::FromBrowserContext(profile());
+-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ if (download_commands->CanOpenPdfInSystemViewer()) {
+ prefs->SetShouldOpenPdfInSystemReader(!is_checked);
+ SetShouldPreferOpeningInBrowser(is_checked);
diff --git a/devel/electron7/files/patch-chrome_browser_download_download__prefs.cc b/devel/electron7/files/patch-chrome_browser_download_download__prefs.cc
new file mode 100644
index 000000000000..105eff4201ff
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_browser_download_download__prefs.cc
@@ -0,0 +1,65 @@
+--- chrome/browser/download/download_prefs.cc.orig 2019-12-12 12:39:10 UTC
++++ chrome/browser/download/download_prefs.cc
+@@ -62,7 +62,7 @@ namespace {
+ // Consider downloads 'dangerous' if they go to the home directory on Linux and
+ // to the desktop on any platform.
+ bool DownloadPathIsDangerous(const base::FilePath& download_path) {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ base::FilePath home_dir = base::GetHomeDir();
+ if (download_path == home_dir) {
+ return true;
+@@ -155,7 +155,7 @@ DownloadPrefs::DownloadPrefs(Profile* profile) : profi
+ GetDefaultDownloadDirectoryForProfile()));
+ #endif // defined(OS_CHROMEOS)
+
+-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ should_open_pdf_in_system_reader_ =
+ prefs->GetBoolean(prefs::kOpenPdfDownloadInSystemReader);
+ #endif
+@@ -257,7 +257,7 @@ void DownloadPrefs::RegisterProfilePrefs(
+ default_download_path);
+ registry->RegisterFilePathPref(prefs::kSaveFileDefaultDirectory,
+ default_download_path);
+-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ registry->RegisterBooleanPref(prefs::kOpenPdfDownloadInSystemReader, false);
+ #endif
+ #if defined(OS_ANDROID)
+@@ -354,7 +354,7 @@ bool DownloadPrefs::IsDownloadPathManaged() const {
+ }
+
+ bool DownloadPrefs::IsAutoOpenUsed() const {
+-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ if (ShouldOpenPdfInSystemReader())
+ return true;
+ #endif
+@@ -368,7 +368,7 @@ bool DownloadPrefs::IsAutoOpenEnabledBasedOnExtension(
+ return false;
+ DCHECK(extension[0] == base::FilePath::kExtensionSeparator);
+ extension.erase(0, 1);
+-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ if (base::FilePath::CompareEqualIgnoreCase(extension,
+ FILE_PATH_LITERAL("pdf")) &&
+ ShouldOpenPdfInSystemReader())
+@@ -405,7 +405,7 @@ void DownloadPrefs::DisableAutoOpenBasedOnExtension(
+ SaveAutoOpenState();
+ }
+
+-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ void DownloadPrefs::SetShouldOpenPdfInSystemReader(bool should_open) {
+ if (should_open_pdf_in_system_reader_ == should_open)
+ return;
+@@ -426,7 +426,7 @@ bool DownloadPrefs::ShouldOpenPdfInSystemReader() cons
+ #endif
+
+ void DownloadPrefs::ResetAutoOpen() {
+-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ SetShouldOpenPdfInSystemReader(false);
+ #endif
+ auto_open_.clear();
diff --git a/devel/electron7/files/patch-chrome_browser_download_download__prefs.h b/devel/electron7/files/patch-chrome_browser_download_download__prefs.h
new file mode 100644
index 000000000000..8ff4a435b563
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_browser_download_download__prefs.h
@@ -0,0 +1,20 @@
+--- chrome/browser/download/download_prefs.h.orig 2019-12-12 12:39:10 UTC
++++ chrome/browser/download/download_prefs.h
+@@ -102,7 +102,7 @@ class DownloadPrefs {
+ // Disables auto-open based on file extension.
+ void DisableAutoOpenBasedOnExtension(const base::FilePath& file_name);
+
+-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ // Store the user preference to disk. If |should_open| is true, also disable
+ // the built-in PDF plugin. If |should_open| is false, enable the PDF plugin.
+ void SetShouldOpenPdfInSystemReader(bool should_open);
+@@ -150,7 +150,7 @@ class DownloadPrefs {
+ AutoOpenCompareFunctor> AutoOpenSet;
+ AutoOpenSet auto_open_;
+
+-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ bool should_open_pdf_in_system_reader_;
+ #endif
+
diff --git a/devel/electron7/files/patch-chrome_browser_download_download__query.cc b/devel/electron7/files/patch-chrome_browser_download_download__query.cc
new file mode 100644
index 000000000000..dbfc79d3fac0
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_browser_download_download__query.cc
@@ -0,0 +1,14 @@
+--- chrome/browser/download/download_query.cc.orig 2019-12-12 12:39:10 UTC
++++ chrome/browser/download/download_query.cc
+@@ -27,7 +27,11 @@
+ #include "components/download/public/common/download_item.h"
+ #include "components/url_formatter/url_formatter.h"
+ #include "content/public/browser/content_browser_client.h"
++#if defined(OS_BSD)
++#include <re2/re2.h>
++#else
+ #include "third_party/re2/src/re2/re2.h"
++#endif
+ #include "url/gurl.h"
+
+ using download::DownloadDangerType;
diff --git a/devel/electron7/files/patch-chrome_browser_download_download__shelf__context__menu.cc b/devel/electron7/files/patch-chrome_browser_download_download__shelf__context__menu.cc
new file mode 100644
index 000000000000..86c2196fcb5c
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_browser_download_download__shelf__context__menu.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/download/download_shelf_context_menu.cc.orig 2019-12-12 12:39:10 UTC
++++ chrome/browser/download/download_shelf_context_menu.cc
+@@ -127,7 +127,7 @@ base::string16 DownloadShelfContextMenu::GetLabelForCo
+ : IDS_DOWNLOAD_MENU_PLATFORM_OPEN_ALWAYS;
+ break;
+ }
+-#elif defined(OS_MACOSX) || defined(OS_LINUX)
++#elif defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+ if (can_open_pdf_in_system_viewer) {
+ id = IDS_DOWNLOAD_MENU_PLATFORM_OPEN_ALWAYS;
+ break;
diff --git a/devel/electron7/files/patch-chrome_browser_download_download__status__updater.cc b/devel/electron7/files/patch-chrome_browser_download_download__status__updater.cc
new file mode 100644
index 000000000000..8b45729ebd3e
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_browser_download_download__status__updater.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/download/download_status_updater.cc.orig 2019-12-12 12:39:10 UTC
++++ chrome/browser/download/download_status_updater.cc
+@@ -13,7 +13,7 @@
+ #include "base/memory/ptr_util.h"
+ #include "build/build_config.h"
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ #include "ui/views/linux_ui/linux_ui.h"
+ #endif
+
+@@ -136,7 +136,7 @@ void DownloadStatusUpdater::OnDownloadUpdated(content:
+ #if defined(OS_ANDROID) || (defined(USE_AURA) && !defined(OS_WIN))
+ void DownloadStatusUpdater::UpdateAppIconDownloadProgress(
+ download::DownloadItem* download) {
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ const views::LinuxUI* linux_ui = views::LinuxUI::instance();
+ if (linux_ui) {
+ float progress = 0;
diff --git a/devel/electron7/files/patch-chrome_browser_extensions_BUILD.gn b/devel/electron7/files/patch-chrome_browser_extensions_BUILD.gn
new file mode 100644
index 000000000000..a6eb11018269
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_browser_extensions_BUILD.gn
@@ -0,0 +1,15 @@
+--- chrome/browser/extensions/BUILD.gn.orig 2019-12-12 12:39:10 UTC
++++ chrome/browser/extensions/BUILD.gn
+@@ -1128,6 +1128,12 @@ jumbo_static_library("extensions") {
+ deps += [ "//chrome/common:service_process_mojom" ]
+ }
+
++ if (is_bsd) {
++ sources -= [
++ "api/image_writer_private/removable_storage_provider_linux.cc",
++ ]
++ }
++
+ if (enable_service_discovery) {
+ sources += [
+ "api/mdns/mdns_api.cc",
diff --git a/devel/electron7/files/patch-chrome_browser_extensions_activity__log_activity__log.cc b/devel/electron7/files/patch-chrome_browser_extensions_activity__log_activity__log.cc
new file mode 100644
index 000000000000..11018dbf4008
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_browser_extensions_activity__log_activity__log.cc
@@ -0,0 +1,14 @@
+--- chrome/browser/extensions/activity_log/activity_log.cc.orig 2019-12-12 12:39:10 UTC
++++ chrome/browser/extensions/activity_log/activity_log.cc
+@@ -54,7 +54,11 @@
+ #include "extensions/browser/extensions_browser_client.h"
+ #include "extensions/common/extension.h"
+ #include "extensions/common/extension_messages.h"
++#if defined(OS_BSD)
++#include <re2/re2.h>
++#else
+ #include "third_party/re2/src/re2/re2.h"
++#endif
+ #include "url/gurl.h"
+
+ namespace constants = activity_log_constants;
diff --git a/devel/electron7/files/patch-chrome_browser_extensions_api_image__writer__private_removable__storage__provider.cc b/devel/electron7/files/patch-chrome_browser_extensions_api_image__writer__private_removable__storage__provider.cc
new file mode 100644
index 000000000000..4434c086f1ef
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_browser_extensions_api_image__writer__private_removable__storage__provider.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/extensions/api/image_writer_private/removable_storage_provider.cc.orig 2019-12-12 12:39:10 UTC
++++ chrome/browser/extensions/api/image_writer_private/removable_storage_provider.cc
+@@ -21,6 +21,7 @@ static base::LazyInstance<scoped_refptr<StorageDeviceL
+
+ void RemovableStorageProvider::GetAllDevices(DeviceListReadyCallback callback) {
+ DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
++#if !defined(OS_BSD)
+ if (g_test_device_list.Get().get() != nullptr) {
+ base::ThreadTaskRunnerHandle::Get()->PostTask(
+ FROM_HERE,
+@@ -34,6 +35,9 @@ void RemovableStorageProvider::GetAllDevices(DeviceLis
+ base::TaskShutdownBehavior::SKIP_ON_SHUTDOWN},
+ base::BindOnce(&RemovableStorageProvider::PopulateDeviceList),
+ std::move(callback));
++#else
++ NOTIMPLEMENTED();
++#endif
+ }
+
+ // static
diff --git a/devel/electron7/files/patch-chrome_browser_extensions_api_input__ime_input__ime__api.h b/devel/electron7/files/patch-chrome_browser_extensions_api_input__ime_input__ime__api.h
new file mode 100644
index 000000000000..4357c1c439e2
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_browser_extensions_api_input__ime_input__ime__api.h
@@ -0,0 +1,11 @@
+--- chrome/browser/extensions/api/input_ime/input_ime_api.h.orig 2019-12-12 12:39:10 UTC
++++ chrome/browser/extensions/api/input_ime/input_ime_api.h
+@@ -31,7 +31,7 @@
+
+ #if defined(OS_CHROMEOS)
+ #include "chrome/browser/extensions/api/input_ime/input_ime_api_chromeos.h"
+-#elif defined(OS_LINUX) || defined(OS_WIN)
++#elif defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD)
+ #include "chrome/browser/extensions/api/input_ime/input_ime_api_nonchromeos.h"
+ #endif // defined(OS_CHROMEOS)
+
diff --git a/devel/electron7/files/patch-chrome_browser_extensions_api_runtime_chrome__runtime__api__delegate.cc b/devel/electron7/files/patch-chrome_browser_extensions_api_runtime_chrome__runtime__api__delegate.cc
new file mode 100644
index 000000000000..9446f5e2f153
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_browser_extensions_api_runtime_chrome__runtime__api__delegate.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/extensions/api/runtime/chrome_runtime_api_delegate.cc.orig 2019-12-12 12:39:10 UTC
++++ chrome/browser/extensions/api/runtime/chrome_runtime_api_delegate.cc
+@@ -299,6 +299,8 @@ bool ChromeRuntimeAPIDelegate::GetPlatformInfo(Platfor
+ info->os = extensions::api::runtime::PLATFORM_OS_CROS;
+ } else if (strcmp(os, "linux") == 0) {
+ info->os = extensions::api::runtime::PLATFORM_OS_LINUX;
++ } else if (strcmp(os, "freebsd") == 0) {
++ info->os = extensions::api::runtime::PLATFORM_OS_FREEBSD;
+ } else if (strcmp(os, "openbsd") == 0) {
+ info->os = extensions::api::runtime::PLATFORM_OS_OPENBSD;
+ } else {
diff --git a/devel/electron7/files/patch-chrome_browser_extensions_api_settings__private_prefs__util.cc b/devel/electron7/files/patch-chrome_browser_extensions_api_settings__private_prefs__util.cc
new file mode 100644
index 000000000000..6c68e710a82e
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_browser_extensions_api_settings__private_prefs__util.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/extensions/api/settings_private/prefs_util.cc.orig 2019-12-12 12:39:10 UTC
++++ chrome/browser/extensions/api/settings_private/prefs_util.cc
+@@ -155,7 +155,7 @@ const PrefsUtil::TypedPrefMap& PrefsUtil::GetWhitelist
+ (*s_whitelist)[bookmarks::prefs::kShowBookmarkBar] =
+ settings_api::PrefType::PREF_TYPE_BOOLEAN;
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ (*s_whitelist)[::prefs::kUseCustomChromeFrame] =
+ settings_api::PrefType::PREF_TYPE_BOOLEAN;
+ #endif
+@@ -165,7 +165,7 @@ const PrefsUtil::TypedPrefMap& PrefsUtil::GetWhitelist
+ // Appearance settings.
+ (*s_whitelist)[::prefs::kCurrentThemeID] =
+ settings_api::PrefType::PREF_TYPE_STRING;
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS)
+ (*s_whitelist)[::prefs::kUsesSystemTheme] =
+ settings_api::PrefType::PREF_TYPE_BOOLEAN;
+ #endif
diff --git a/devel/electron7/files/patch-chrome_browser_extensions_api_webrtc__logging__private_webrtc__logging__private__api.cc b/devel/electron7/files/patch-chrome_browser_extensions_api_webrtc__logging__private_webrtc__logging__private__api.cc
new file mode 100644
index 000000000000..f3b89d02185f
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_browser_extensions_api_webrtc__logging__private_webrtc__logging__private__api.cc
@@ -0,0 +1,43 @@
+--- chrome/browser/extensions/api/webrtc_logging_private/webrtc_logging_private_api.cc.orig 2019-12-12 12:39:10 UTC
++++ chrome/browser/extensions/api/webrtc_logging_private/webrtc_logging_private_api.cc
+@@ -29,7 +29,7 @@
+ #include "extensions/browser/process_manager.h"
+ #include "extensions/common/error_utils.h"
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ #include "extensions/common/permissions/permissions_data.h"
+ #endif
+
+@@ -38,7 +38,7 @@ namespace {
+ bool CanEnableAudioDebugRecordingsFromExtension(
+ const extensions::Extension* extension) {
+ bool enabled_by_permissions = false;
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ if (extension) {
+ enabled_by_permissions =
+ extension->permissions_data()->active_permissions().HasAPIPermission(
+@@ -557,7 +557,7 @@ void WebrtcLoggingPrivateStartEventLoggingFunction::Fi
+ }
+
+ bool WebrtcLoggingPrivateGetLogsDirectoryFunction::RunAsync() {
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ // Unlike other WebrtcLoggingPrivate functions that take a RequestInfo object,
+ // this function shouldn't be called by a component extension on behalf of
+ // some web code. It returns a DirectoryEntry for use directly in the calling
+@@ -580,11 +580,11 @@ bool WebrtcLoggingPrivateGetLogsDirectoryFunction::Run
+ &WebrtcLoggingPrivateGetLogsDirectoryFunction::FireErrorCallback,
+ this));
+ return true;
+-#else // defined(OS_LINUX) || defined(OS_CHROMEOS)
++#else // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ SetError("Not supported on the current OS");
+ SendResponse(false);
+ return false;
+-#endif // defined(OS_LINUX) || defined(OS_CHROMEOS)
++#endif // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ }
+
+ void WebrtcLoggingPrivateGetLogsDirectoryFunction::FireCallback(
diff --git a/devel/electron7/files/patch-chrome_browser_extensions_browser__context__keyed__service__factories.cc b/devel/electron7/files/patch-chrome_browser_extensions_browser__context__keyed__service__factories.cc
new file mode 100644
index 000000000000..235bf0c555cb
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_browser_extensions_browser__context__keyed__service__factories.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/extensions/browser_context_keyed_service_factories.cc.orig 2019-12-12 12:39:10 UTC
++++ chrome/browser/extensions/browser_context_keyed_service_factories.cc
+@@ -55,7 +55,7 @@
+ #include "chrome/browser/chromeos/extensions/input_method_api.h"
+ #include "chrome/browser/chromeos/extensions/media_player_api.h"
+ #include "chrome/browser/extensions/api/input_ime/input_ime_api.h"
+-#elif defined(OS_LINUX) || defined(OS_WIN)
++#elif defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD)
+ #include "chrome/browser/extensions/api/input_ime/input_ime_api.h"
+ #endif
+
+@@ -94,7 +94,7 @@ void EnsureBrowserContextKeyedServiceFactoriesBuilt()
+ #if defined(OS_CHROMEOS)
+ extensions::InputImeAPI::GetFactoryInstance();
+ extensions::InputMethodAPI::GetFactoryInstance();
+-#elif defined(OS_LINUX) || defined(OS_WIN)
++#elif defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD)
+ extensions::InputImeAPI::GetFactoryInstance();
+ #endif
+ extensions::LanguageSettingsPrivateDelegateFactory::GetInstance();
diff --git a/devel/electron7/files/patch-chrome_browser_extensions_external__provider__impl.cc b/devel/electron7/files/patch-chrome_browser_extensions_external__provider__impl.cc
new file mode 100644
index 000000000000..f47722b58de9
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_browser_extensions_external__provider__impl.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/extensions/external_provider_impl.cc.orig 2019-12-12 12:39:10 UTC
++++ chrome/browser/extensions/external_provider_impl.cc
+@@ -765,7 +765,7 @@ void ExternalProviderImpl::CreateExternalProviders(
+ chromeos::DemoSession::Get()->SetExtensionsExternalLoader(loader);
+ provider_list->push_back(std::move(demo_apps_provider));
+ }
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ provider_list->push_back(std::make_unique<ExternalProviderImpl>(
+ service,
+ base::MakeRefCounted<ExternalPrefLoader>(
+@@ -793,7 +793,7 @@ void ExternalProviderImpl::CreateExternalProviders(
+ bundled_extension_creation_flags));
+
+ // Define a per-user source of external extensions.
+-#if defined(OS_MACOSX) || (defined(OS_LINUX) && BUILDFLAG(CHROMIUM_BRANDING))
++#if defined(OS_MACOSX) || ((defined(OS_LINUX) || defined(OS_BSD)) && BUILDFLAG(CHROMIUM_BRANDING))
+ provider_list->push_back(std::make_unique<ExternalProviderImpl>(
+ service,
+ base::MakeRefCounted<ExternalPrefLoader>(
diff --git a/devel/electron7/files/patch-chrome_browser_extensions_install__signer.cc b/devel/electron7/files/patch-chrome_browser_extensions_install__signer.cc
new file mode 100644
index 000000000000..2c413b360146
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_browser_extensions_install__signer.cc
@@ -0,0 +1,18 @@
+--- chrome/browser/extensions/install_signer.cc.orig 2019-12-12 12:39:10 UTC
++++ chrome/browser/extensions/install_signer.cc
+@@ -293,13 +293,13 @@ void LogRequestStartHistograms() {
+ DCHECK(g_single_thread_checker.Get().CalledOnValidThread());
+
+ // Process::Current().CreationTime is only defined on some platforms.
+-#if defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_LINUX)
++#if defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD)
+ const base::Time process_creation_time =
+ base::Process::Current().CreationTime();
+ UMA_HISTOGRAM_COUNTS_1M(
+ "ExtensionInstallSigner.UptimeAtTimeOfRequest",
+ (base::Time::Now() - process_creation_time).InSeconds());
+-#endif // defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_LINUX)
++#endif // defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD)
+
+ base::TimeDelta delta;
+ base::TimeTicks now = base::TimeTicks::Now();
diff --git a/devel/electron7/files/patch-chrome_browser_first__run_first__run__dialog.h b/devel/electron7/files/patch-chrome_browser_first__run_first__run__dialog.h
new file mode 100644
index 000000000000..b73629ad5cb2
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_browser_first__run_first__run__dialog.h
@@ -0,0 +1,11 @@
+--- chrome/browser/first_run/first_run_dialog.h.orig 2019-12-12 12:39:10 UTC
++++ chrome/browser/first_run/first_run_dialog.h
+@@ -9,7 +9,7 @@
+ #include "build/build_config.h"
+
+ // Hide this function on platforms where the dialog does not exist.
+-#if defined(OS_MACOSX) || (defined(OS_LINUX) && !defined(OS_CHROMEOS))
++#if defined(OS_MACOSX) || (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+
+ class Profile;
+
diff --git a/devel/electron7/files/patch-chrome_browser_first__run_first__run__internal.h b/devel/electron7/files/patch-chrome_browser_first__run_first__run__internal.h
new file mode 100644
index 000000000000..74b304a62485
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_browser_first__run_first__run__internal.h
@@ -0,0 +1,18 @@
+--- chrome/browser/first_run/first_run_internal.h.orig 2019-12-12 12:39:10 UTC
++++ chrome/browser/first_run/first_run_internal.h
+@@ -64,13 +64,13 @@ FirstRunState DetermineFirstRunState(bool has_sentinel
+ bool force_first_run,
+ bool no_first_run);
+
+-#if defined(OS_MACOSX) || (defined(OS_LINUX) && !defined(OS_CHROMEOS))
++#if defined(OS_MACOSX) || (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ // For testing, forces the first run dialog to either be shown or not. If not
+ // called, the decision to show the dialog or not will be made by Chrome based
+ // on a number of factors (such as install type, whether it's a Chrome-branded
+ // build, etc).
+ void ForceFirstRunDialogShownForTesting(bool shown);
+-#endif // defined(OS_MACOSX) || (defined(OS_LINUX) && !defined(OS_CHROMEOS))
++#endif // defined(OS_MACOSX) || (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+
+ } // namespace internal
+ } // namespace first_run
diff --git a/devel/electron7/files/patch-chrome_browser_first__run_first__run__internal__posix.cc b/devel/electron7/files/patch-chrome_browser_first__run_first__run__internal__posix.cc
new file mode 100644
index 000000000000..2843915bd9fb
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_browser_first__run_first__run__internal__posix.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/first_run/first_run_internal_posix.cc.orig 2019-12-12 12:39:10 UTC
++++ chrome/browser/first_run/first_run_internal_posix.cc
+@@ -45,7 +45,7 @@ enum class ForcedShowDialogState {
+ ForcedShowDialogState g_forced_show_dialog_state =
+ ForcedShowDialogState::kNotForced;
+
+-#if !defined(OS_CHROMEOS)
++#if !defined(OS_CHROMEOS) && !defined(OS_BSD)
+ // Returns whether the first run dialog should be shown. This is only true for
+ // certain builds, and only if the user has not already set preferences. In a
+ // real, official-build first run, initializes the default metrics reporting if
+@@ -96,7 +96,7 @@ void ForceFirstRunDialogShownForTesting(bool shown) {
+ }
+
+ void DoPostImportPlatformSpecificTasks(Profile* profile) {
+-#if !defined(OS_CHROMEOS)
++#if !defined(OS_CHROMEOS) && !defined(OS_BSD)
+ if (!ShouldShowFirstRunDialog())
+ return;
+
diff --git a/devel/electron7/files/patch-chrome_browser_flag__descriptions.cc b/devel/electron7/files/patch-chrome_browser_flag__descriptions.cc
new file mode 100644
index 000000000000..ab5d6f53f219
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_browser_flag__descriptions.cc
@@ -0,0 +1,79 @@
+--- chrome/browser/flag_descriptions.cc.orig 2019-12-12 12:39:10 UTC
++++ chrome/browser/flag_descriptions.cc
+@@ -3637,7 +3637,7 @@ const char kZeroStateFilesDescription[] =
+
+ #endif // defined(OS_CHROMEOS)
+
+-#if defined(OS_CHROMEOS) || defined(OS_LINUX)
++#if defined(OS_CHROMEOS) || defined(OS_LINUX) || defined(OS_BSD)
+ const char kTerminalSystemAppName[] = "Terminal System App";
+ const char kTerminalSystemAppDescription[] =
+ "Enables the Terminal System App at chrome://terminal which is used for "
+@@ -3650,7 +3650,7 @@ const char kDynamicTcmallocDescription[] =
+ "utilization.";
+ #endif // BUILDFLAG(USE_TCMALLOC)
+
+-#endif // #if defined(OS_CHROMEOS) || defined(OS_LINUX)
++#endif // #if defined(OS_CHROMEOS) || defined(OS_LINUX) || defined(OS_BSD)
+
+ // All views-based platforms --------------------------------------------------
+
+@@ -3675,15 +3675,15 @@ const char kReopenTabInProductHelpDescription[] =
+
+ // Random platform combinations -----------------------------------------------
+
+-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+
+ const char kWebGL2ComputeContextName[] = "WebGL 2.0 Compute";
+ const char kWebGL2ComputeContextDescription[] =
+ "Enable the use of WebGL 2.0 Compute API.";
+
+-#endif // defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS)
++#endif // defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+
+-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || \
++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD) || \
+ defined(OS_CHROMEOS)
+
+ const char kClickToCallContextMenuForSelectedTextName[] =
+@@ -3698,10 +3698,10 @@ const char kClickToCallUIDescription[] =
+ "Enables click to call feature signals to be handled on desktop by showing "
+ "a list of user's available devices with telephony functionality.";
+
+-#endif // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) ||
++#endif // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD) ||
+ // defined(OS_CHROMEOS)
+
+-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+
+ const char kDirectManipulationStylusName[] = "Direct Manipulation Stylus";
+ const char kDirectManipulationStylusDescription[] =
+@@ -3720,7 +3720,7 @@ const char kSyncClipboardServiceName[] = "Sync Clipboa
+ const char kSyncClipboardServiceDescription[] =
+ "Enables clipboard syncing via Chrome Sync.";
+
+-#endif // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
++#endif // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+
+ #if defined(OS_MACOSX) || defined(OS_CHROMEOS)
+
+@@ -3830,7 +3830,7 @@ extern const char kWebrtcPipeWireCapturerDescription[]
+
+ #endif // #if defined(WEBRTC_USE_PIPEWIRE)
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+
+ const char kEnableDbusAndX11StatusIconsName[] =
+ "Enable DBus and X11 status icons";
+@@ -3839,7 +3839,7 @@ const char kEnableDbusAndX11StatusIconsDescription[] =
+ "(X11) implementations of status icons. Otherwise, uses libappindicator's "
+ "and GTK's implementations.";
+
+-#endif // defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#endif // (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+
+ const char kAvoidFlashBetweenNavigationName[] =
+ "Enable flash avoidance between same-origin navigations";
diff --git a/devel/electron7/files/patch-chrome_browser_flag__descriptions.h b/devel/electron7/files/patch-chrome_browser_flag__descriptions.h
new file mode 100644
index 000000000000..9cce599d91a2
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_browser_flag__descriptions.h
@@ -0,0 +1,87 @@
+--- chrome/browser/flag_descriptions.h.orig 2019-12-12 12:39:10 UTC
++++ chrome/browser/flag_descriptions.h
+@@ -20,9 +20,9 @@
+ #include "ui/android/buildflags.h"
+ #endif // defined(OS_ANDROID)
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include "base/allocator/buildflags.h"
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+
+ // This file declares strings used in chrome://flags. These messages are not
+ // translated, because instead of end-users they target Chromium developers and
+@@ -2181,7 +2181,7 @@ extern const char kZeroStateFilesDescription[];
+
+ #endif // #if defined(OS_CHROMEOS)
+
+-#if defined(OS_CHROMEOS) || defined(OS_LINUX)
++#if defined(OS_CHROMEOS) || defined(OS_LINUX) || defined(OS_BSD)
+ extern const char kTerminalSystemAppName[];
+ extern const char kTerminalSystemAppDescription[];
+
+@@ -2190,7 +2190,7 @@ extern const char kDynamicTcmallocName[];
+ extern const char kDynamicTcmallocDescription[];
+ #endif // BUILDFLAG(USE_TCMALLOC)
+
+-#endif // #if defined(OS_CHROMEOS) || defined(OS_LINUX)
++#endif // #if defined(OS_CHROMEOS) || defined(OS_LINUX) || defined(OS_BSD)
+
+ // All views-based platforms --------------------------------------------------
+
+@@ -2209,14 +2209,14 @@ extern const char kReopenTabInProductHelpDescription[]
+
+ // Random platform combinations -----------------------------------------------
+
+-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+
+ extern const char kWebGL2ComputeContextName[];
+ extern const char kWebGL2ComputeContextDescription[];
+
+-#endif // defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS)
++#endif // defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+
+-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || \
++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD) || \
+ defined(OS_CHROMEOS)
+
+ extern const char kClickToCallContextMenuForSelectedTextName[];
+@@ -2225,10 +2225,10 @@ extern const char kClickToCallContextMenuForSelectedTe
+ extern const char kClickToCallUIName[];
+ extern const char kClickToCallUIDescription[];
+
+-#endif // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) ||
++#endif // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD) ||
+ // defined(OS_CHROMEOS)
+
+-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+
+ extern const char kDirectManipulationStylusName[];
+ extern const char kDirectManipulationStylusDescription[];
+@@ -2242,7 +2242,7 @@ extern const char kProfileMenuRevampDescription[];
+ extern const char kSyncClipboardServiceName[];
+ extern const char kSyncClipboardServiceDescription[];
+
+-#endif // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
++#endif // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+
+ #if defined(OS_MACOSX) || defined(OS_CHROMEOS)
+
+@@ -2333,12 +2333,12 @@ extern const char kWebrtcPipeWireCapturerDescription[]
+
+ #endif // #if defined(WEBRTC_USE_PIPEWIRE)
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+
+ extern const char kEnableDbusAndX11StatusIconsName[];
+ extern const char kEnableDbusAndX11StatusIconsDescription[];
+
+-#endif // defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#endif // (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+
+ // ============================================================================
+ // Don't just add flags to the end, put them in the right section in
diff --git a/devel/electron7/files/patch-chrome_browser_media__galleries_fileapi_mtp__device__map__service.cc b/devel/electron7/files/patch-chrome_browser_media__galleries_fileapi_mtp__device__map__service.cc
new file mode 100644
index 000000000000..aef2d876779a
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_browser_media__galleries_fileapi_mtp__device__map__service.cc
@@ -0,0 +1,15 @@
+--- chrome/browser/media_galleries/fileapi/mtp_device_map_service.cc.orig 2019-12-12 12:39:11 UTC
++++ chrome/browser/media_galleries/fileapi/mtp_device_map_service.cc
+@@ -39,10 +39,12 @@ void MTPDeviceMapService::RegisterMTPFileSystem(
+ // Note that this initializes the delegate asynchronously, but since
+ // the delegate will only be used from the IO thread, it is guaranteed
+ // to be created before use of it expects it to be there.
++#if !defined(OS_FREEBSD)
+ CreateMTPDeviceAsyncDelegate(
+ device_location, read_only,
+ base::Bind(&MTPDeviceMapService::AddAsyncDelegate,
+ base::Unretained(this), device_location, read_only));
++#endif
+ mtp_device_usage_map_[key] = 0;
+ }
+
diff --git a/devel/electron7/files/patch-chrome_browser_media__galleries_media__file__system__registry.cc b/devel/electron7/files/patch-chrome_browser_media__galleries_media__file__system__registry.cc
new file mode 100644
index 000000000000..32000dbb1037
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_browser_media__galleries_media__file__system__registry.cc
@@ -0,0 +1,14 @@
+--- chrome/browser/media_galleries/media_file_system_registry.cc.orig 2019-12-12 12:39:11 UTC
++++ chrome/browser/media_galleries/media_file_system_registry.cc
+@@ -732,7 +732,10 @@ class MediaFileSystemRegistry::MediaFileSystemContextI
+ // Constructor in 'private' section because depends on private class definition.
+ MediaFileSystemRegistry::MediaFileSystemRegistry()
+ : file_system_context_(new MediaFileSystemContextImpl) {
+- StorageMonitor::GetInstance()->AddObserver(this);
++ // This conditional is needed for shutdown. Destructors
++ // try to get the media file system registry.
++ if (StorageMonitor::GetInstance())
++ StorageMonitor::GetInstance()->AddObserver(this);
+ }
+
+ MediaFileSystemRegistry::~MediaFileSystemRegistry() {
diff --git a/devel/electron7/files/patch-chrome_browser_media_router_discovery_discovery__network__list__posix.cc b/devel/electron7/files/patch-chrome_browser_media_router_discovery_discovery__network__list__posix.cc
new file mode 100644
index 000000000000..44cf35d64ca7
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_browser_media_router_discovery_discovery__network__list__posix.cc
@@ -0,0 +1,28 @@
+--- chrome/browser/media/router/discovery/discovery_network_list_posix.cc.orig 2019-12-12 12:39:11 UTC
++++ chrome/browser/media/router/discovery/discovery_network_list_posix.cc
+@@ -10,6 +10,7 @@
+ #include <netinet/in.h>
+ #include <sys/socket.h>
+ #include <sys/types.h>
++#include <sys/time.h>
+
+ #include <algorithm>
+
+@@ -19,7 +20,7 @@
+ #include "chrome/browser/media/router/discovery/discovery_network_list_wifi.h"
+ #include "net/base/net_errors.h"
+
+-#if !defined(OS_MACOSX)
++#if !defined(OS_MACOSX) && !defined(OS_BSD)
+ #include <netpacket/packet.h>
+ #else
+ #include <net/if_dl.h>
+@@ -28,7 +29,7 @@
+ namespace media_router {
+ namespace {
+
+-#if !defined(OS_MACOSX)
++#if !defined(OS_MACOSX) && !defined(OS_BSD)
+ using sll = struct sockaddr_ll;
+ #define SOCKET_ARP_TYPE(s) ((s)->sll_hatype)
+ #define SOCKET_ADDRESS_LEN(s) ((s)->sll_halen)
diff --git a/devel/electron7/files/patch-chrome_browser_media_router_discovery_discovery__network__list__wifi__linux.cc b/devel/electron7/files/patch-chrome_browser_media_router_discovery_discovery__network__list__wifi__linux.cc
new file mode 100644
index 000000000000..3f8479c6f961
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_browser_media_router_discovery_discovery__network__list__wifi__linux.cc
@@ -0,0 +1,27 @@
+--- chrome/browser/media/router/discovery/discovery_network_list_wifi_linux.cc.orig 2019-12-12 12:39:11 UTC
++++ chrome/browser/media/router/discovery/discovery_network_list_wifi_linux.cc
+@@ -9,8 +9,6 @@
+ #include <sys/socket.h>
+ #include <sys/types.h>
+
+-#include <linux/wireless.h>
+-
+ #include "base/files/scoped_file.h"
+ #include "base/logging.h"
+ #include "net/base/network_interfaces_linux.h"
+@@ -20,6 +18,7 @@ namespace media_router {
+ bool MaybeGetWifiSSID(const std::string& if_name, std::string* ssid_out) {
+ DCHECK(ssid_out);
+
++#if !defined(OS_BSD)
+ base::ScopedFD ioctl_socket(socket(AF_INET, SOCK_DGRAM, 0));
+ if (!ioctl_socket.is_valid()) {
+ // AF_INET is for IPv4, so it may fail for IPv6-only hosts even when there
+@@ -41,6 +40,7 @@ bool MaybeGetWifiSSID(const std::string& if_name, std:
+ ssid_out->assign(ssid);
+ return true;
+ }
++#endif
+ return false;
+ }
+
diff --git a/devel/electron7/files/patch-chrome_browser_media_router_providers_wired__display_wired__display__media__route__provider.cc b/devel/electron7/files/patch-chrome_browser_media_router_providers_wired__display_wired__display__media__route__provider.cc
new file mode 100644
index 000000000000..c76bfb615f1b
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_browser_media_router_providers_wired__display_wired__display__media__route__provider.cc
@@ -0,0 +1,23 @@
+--- chrome/browser/media/router/providers/wired_display/wired_display_media_route_provider.cc.orig 2019-12-12 12:39:11 UTC
++++ chrome/browser/media/router/providers/wired_display/wired_display_media_route_provider.cc
+@@ -112,6 +112,12 @@ void WiredDisplayMediaRouteProvider::CreateRoute(
+ bool incognito,
+ CreateRouteCallback callback) {
+ DCHECK(!base::Contains(presentations_, presentation_id));
++#if defined(OS_BSD)
++ std::move(callback).Run(base::nullopt, nullptr,
++ std::string("Not implemented"),
++ RouteRequestResult::UNKNOWN_ERROR);
++ return;
++#else
+ base::Optional<Display> display = GetDisplayBySinkId(sink_id);
+ if (!display) {
+ std::move(callback).Run(base::nullopt, nullptr,
+@@ -138,6 +144,7 @@ void WiredDisplayMediaRouteProvider::CreateRoute(
+ std::move(callback).Run(route, nullptr, base::nullopt,
+ RouteRequestResult::OK);
+ NotifyRouteObservers();
++#endif
+ }
+
+ void WiredDisplayMediaRouteProvider::JoinRoute(
diff --git a/devel/electron7/files/patch-chrome_browser_media_webrtc_webrtc__event__log__uploader.cc b/devel/electron7/files/patch-chrome_browser_media_webrtc_webrtc__event__log__uploader.cc
new file mode 100644
index 000000000000..a80783abb370
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_browser_media_webrtc_webrtc__event__log__uploader.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/media/webrtc/webrtc_event_log_uploader.cc.orig 2019-12-12 12:39:11 UTC
++++ chrome/browser/media/webrtc/webrtc_event_log_uploader.cc
+@@ -36,7 +36,7 @@ constexpr size_t kExpectedMimeOverheadBytes = 1000; /
+ const char kProduct[] = "Chrome";
+ #elif defined(OS_MACOSX)
+ const char kProduct[] = "Chrome_Mac";
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ const char kProduct[] = "Chrome_Linux";
+ #elif defined(OS_ANDROID)
+ const char kProduct[] = "Chrome_Android";
diff --git a/devel/electron7/files/patch-chrome_browser_media_webrtc_webrtc__log__uploader.cc b/devel/electron7/files/patch-chrome_browser_media_webrtc_webrtc__log__uploader.cc
new file mode 100644
index 000000000000..622048dbd308
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_browser_media_webrtc_webrtc__log__uploader.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/media/webrtc/webrtc_log_uploader.cc.orig 2019-12-12 12:39:11 UTC
++++ chrome/browser/media/webrtc/webrtc_log_uploader.cc
+@@ -358,6 +358,8 @@ void WebRtcLogUploader::SetupMultipart(
+ const char product[] = "Chrome_Android";
+ #elif defined(OS_CHROMEOS)
+ const char product[] = "Chrome_ChromeOS";
++#elif defined(OS_FREEBSD)
++ const char product[] = "Chrome_FreeBSD";
+ #else
+ #error Platform not supported.
+ #endif
diff --git a/devel/electron7/files/patch-chrome_browser_media_webrtc_webrtc__logging__controller.cc b/devel/electron7/files/patch-chrome_browser_media_webrtc_webrtc__logging__controller.cc
new file mode 100644
index 000000000000..83599743ed5a
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_browser_media_webrtc_webrtc__logging__controller.cc
@@ -0,0 +1,33 @@
+--- chrome/browser/media/webrtc/webrtc_logging_controller.cc.orig 2019-12-12 12:39:11 UTC
++++ chrome/browser/media/webrtc/webrtc_logging_controller.cc
+@@ -24,10 +24,10 @@
+ #include "content/public/browser/render_process_host.h"
+ #include "services/service_manager/public/cpp/connector.h"
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ #include "content/public/browser/child_process_security_policy.h"
+ #include "storage/browser/fileapi/isolated_context.h"
+-#endif // defined(OS_LINUX) || defined(OS_CHROMEOS)
++#endif // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+
+ using webrtc_event_logging::WebRtcEventLogManager;
+
+@@ -267,7 +267,7 @@ void WebRtcLoggingController::StartEventLogging(
+ web_app_id, callback);
+ }
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ void WebRtcLoggingController::GetLogsDirectory(
+ const LogsDirectoryCallback& callback,
+ const LogsDirectoryErrorCallback& error_callback) {
+@@ -312,7 +312,7 @@ void WebRtcLoggingController::GrantLogsDirectoryAccess
+ base::SequencedTaskRunnerHandle::Get()->PostTask(
+ FROM_HERE, base::BindOnce(callback, file_system.id(), registered_name));
+ }
+-#endif // defined(OS_LINUX) || defined(OS_CHROMEOS)
++#endif // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+
+ void WebRtcLoggingController::OnRtpPacket(
+ std::unique_ptr<uint8_t[]> packet_header,
diff --git a/devel/electron7/files/patch-chrome_browser_media_webrtc_webrtc__logging__controller.h b/devel/electron7/files/patch-chrome_browser_media_webrtc_webrtc__logging__controller.h
new file mode 100644
index 000000000000..c412e553b486
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_browser_media_webrtc_webrtc__logging__controller.h
@@ -0,0 +1,36 @@
+--- chrome/browser/media/webrtc/webrtc_logging_controller.h.orig 2019-12-12 12:39:11 UTC
++++ chrome/browser/media/webrtc/webrtc_logging_controller.h
+@@ -129,13 +129,13 @@ class WebRtcLoggingController
+ size_t web_app_id,
+ const StartEventLoggingCallback& callback);
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ // Ensures that the WebRTC Logs directory exists and then grants render
+ // process access to the 'WebRTC Logs' directory, and invokes |callback| with
+ // the ids necessary to create a DirectoryEntry object.
+ void GetLogsDirectory(const LogsDirectoryCallback& callback,
+ const LogsDirectoryErrorCallback& error_callback);
+-#endif // defined(OS_LINUX) || defined(OS_CHROMEOS)
++#endif // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+
+ // chrome::mojom::WebRtcLoggingClient methods:
+ void OnAddMessages(
+@@ -188,7 +188,7 @@ class WebRtcLoggingController
+ bool success,
+ const std::string& error_message);
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ // Grants the render process access to the 'WebRTC Logs' directory, and
+ // invokes |callback| with the ids necessary to create a DirectoryEntry
+ // object. If the |logs_path| couldn't be created or found, |error_callback|
+@@ -197,7 +197,7 @@ class WebRtcLoggingController
+ const LogsDirectoryCallback& callback,
+ const LogsDirectoryErrorCallback& error_callback,
+ const base::FilePath& logs_path);
+-#endif // defined(OS_LINUX) || defined(OS_CHROMEOS)
++#endif // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+
+ static base::FilePath GetLogDirectoryAndEnsureExists(
+ const base::FilePath& browser_context_directory_path);
diff --git a/devel/electron7/files/patch-chrome_browser_memory__details.cc b/devel/electron7/files/patch-chrome_browser_memory__details.cc
new file mode 100644
index 000000000000..26fef10f78ba
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_browser_memory__details.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/memory_details.cc.orig 2019-12-12 12:39:11 UTC
++++ chrome/browser/memory_details.cc
+@@ -38,7 +38,7 @@
+ #include "services/resource_coordinator/public/cpp/memory_instrumentation/memory_instrumentation.h"
+ #include "ui/base/l10n/l10n_util.h"
+
+-#if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_ANDROID)
++#if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_ANDROID) && !defined(OS_BSD)
+ #include "services/service_manager/zygote/zygote_host_linux.h"
+ #endif
+
+@@ -336,7 +336,7 @@ void MemoryDetails::CollectChildInfoOnUIThread() {
+ process.titles.push_back(title);
+ }
+
+-#if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_ANDROID)
++#if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_ANDROID) && !defined(OS_BSD)
+ if (service_manager::ZygoteHost::GetInstance()->IsZygotePid(process.pid)) {
+ process.process_type = content::PROCESS_TYPE_ZYGOTE;
+ }
diff --git a/devel/electron7/files/patch-chrome_browser_memory__details__linux.cc b/devel/electron7/files/patch-chrome_browser_memory__details__linux.cc
new file mode 100644
index 000000000000..315a7d4b301d
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_browser_memory__details__linux.cc
@@ -0,0 +1,13 @@
+--- chrome/browser/memory_details_linux.cc.orig 2019-12-12 12:39:11 UTC
++++ chrome/browser/memory_details_linux.cc
+@@ -72,8 +72,10 @@ ProcessData GetProcessDataMemoryInformation(
+
+ std::unique_ptr<base::ProcessMetrics> metrics(
+ base::ProcessMetrics::CreateProcessMetrics(pid));
++#if !defined(OS_BSD)
+ pmi.num_open_fds = metrics->GetOpenFdCount();
+ pmi.open_fds_soft_limit = metrics->GetOpenFdSoftLimit();
++#endif
+
+ process_data.processes.push_back(pmi);
+ }
diff --git a/devel/electron7/files/patch-chrome_browser_metrics_bluetooth__available__utility.cc b/devel/electron7/files/patch-chrome_browser_metrics_bluetooth__available__utility.cc
new file mode 100644
index 000000000000..f463301daffd
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_browser_metrics_bluetooth__available__utility.cc
@@ -0,0 +1,13 @@
+--- chrome/browser/metrics/bluetooth_available_utility.cc.orig 2019-12-12 12:39:11 UTC
++++ chrome/browser/metrics/bluetooth_available_utility.cc
+@@ -76,8 +76,10 @@ void ReportBluetoothAvailability() {
+ return;
+ }
+
++#if !defined(OS_BSD)
+ device::BluetoothAdapterFactory::Get().GetAdapter(
+ base::BindOnce(&OnGetAdapter));
++#endif
+ }
+
+ } // namespace bluetooth_utility
diff --git a/devel/electron7/files/patch-chrome_browser_metrics_chrome__browser__main__extra__parts__metrics.cc b/devel/electron7/files/patch-chrome_browser_metrics_chrome__browser__main__extra__parts__metrics.cc
new file mode 100644
index 000000000000..73a413a141ff
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_browser_metrics_chrome__browser__main__extra__parts__metrics.cc
@@ -0,0 +1,21 @@
+--- chrome/browser/metrics/chrome_browser_main_extra_parts_metrics.cc.orig 2019-12-12 12:39:11 UTC
++++ chrome/browser/metrics/chrome_browser_main_extra_parts_metrics.cc
+@@ -47,7 +47,9 @@
+
+ #if defined(OS_LINUX) && !defined(OS_CHROMEOS)
+ #include <gnu/libc-version.h>
++#endif
+
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ #include "base/linux_util.h"
+ #include "base/strings/string_split.h"
+ #include "base/strings/string_util.h"
+@@ -55,7 +57,7 @@
+ #if defined(USE_X11)
+ #include "ui/base/x/x11_util.h"
+ #endif
+-#endif // defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#endif // defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+
+ #if defined(USE_OZONE) || defined(USE_X11)
+ #include "ui/events/devices/device_data_manager.h"
diff --git a/devel/electron7/files/patch-chrome_browser_metrics_chrome__metrics__service__client.cc b/devel/electron7/files/patch-chrome_browser_metrics_chrome__metrics__service__client.cc
new file mode 100644
index 000000000000..2d08191eca0c
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_browser_metrics_chrome__metrics__service__client.cc
@@ -0,0 +1,25 @@
+--- chrome/browser/metrics/chrome_metrics_service_client.cc.orig 2019-12-12 12:39:11 UTC
++++ chrome/browser/metrics/chrome_metrics_service_client.cc
+@@ -721,11 +721,11 @@ void ChromeMetricsServiceClient::RegisterMetricsServic
+ #endif // defined(OS_WIN)
+
+ #if defined(OS_WIN) || defined(OS_MACOSX) || \
+- (defined(OS_LINUX) && !defined(OS_CHROMEOS))
++ (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ metrics_service_->RegisterMetricsProvider(
+ std::make_unique<DesktopPlatformFeaturesMetricsProvider>());
+ #endif // defined(OS_WIN) || defined(OS_MACOSX) || \
+- // (defined(OS_LINUX) && !defined(OS_CHROMEOS))
++ // (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+
+ #if BUILDFLAG(ENABLE_PLUGINS)
+ plugin_metrics_provider_ = new PluginMetricsProvider(local_state);
+@@ -974,7 +974,7 @@ bool ChromeMetricsServiceClient::RegisterForProfileEve
+ }
+ #endif
+ #if defined(OS_WIN) || defined(OS_MACOSX) || \
+- (defined(OS_LINUX) && !defined(OS_CHROMEOS))
++ (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ // This creates the DesktopProfileSessionDurationsServices if it didn't exist
+ // already.
+ metrics::DesktopProfileSessionDurationsServiceFactory::GetForBrowserContext(
diff --git a/devel/electron7/files/patch-chrome_browser_metrics_process__memory__metrics__emitter.cc b/devel/electron7/files/patch-chrome_browser_metrics_process__memory__metrics__emitter.cc
new file mode 100644
index 000000000000..b6721f75005a
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_browser_metrics_process__memory__metrics__emitter.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/metrics/process_memory_metrics_emitter.cc.orig 2019-12-12 12:39:11 UTC
++++ chrome/browser/metrics/process_memory_metrics_emitter.cc
+@@ -378,7 +378,7 @@ void EmitProcessUmaAndUkm(const GlobalMemoryDump::Proc
+
+ builder->SetPrivateMemoryFootprint(pmd.os_dump().private_footprint_kb / 1024);
+ builder->SetSharedMemoryFootprint(pmd.os_dump().shared_footprint_kb / 1024);
+-#if defined(OS_LINUX) || defined(OS_ANDROID)
++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
+ builder->SetPrivateSwapFootprint(pmd.os_dump().private_footprint_swap_kb /
+ 1024);
+ #endif
+@@ -401,7 +401,7 @@ void EmitProcessUmaAndUkm(const GlobalMemoryDump::Proc
+ MEMORY_METRICS_HISTOGRAM_MB(std::string(kMemoryHistogramPrefix) +
+ process_name + ".SharedMemoryFootprint",
+ pmd.os_dump().shared_footprint_kb / 1024);
+-#if defined(OS_LINUX) || defined(OS_ANDROID)
++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
+ MEMORY_METRICS_HISTOGRAM_MB(std::string(kMemoryHistogramPrefix) +
+ process_name + ".PrivateSwapFootprint",
+ pmd.os_dump().private_footprint_swap_kb / 1024);
diff --git a/devel/electron7/files/patch-chrome_browser_native__file__system_chrome__native__file__system__permission__context.cc b/devel/electron7/files/patch-chrome_browser_native__file__system_chrome__native__file__system__permission__context.cc
new file mode 100644
index 000000000000..3b2a08ccac45
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_browser_native__file__system_chrome__native__file__system__permission__context.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/native_file_system/chrome_native_file_system_permission_context.cc.orig 2019-12-12 12:39:11 UTC
++++ chrome/browser/native_file_system/chrome_native_file_system_permission_context.cc
+@@ -225,7 +225,7 @@ const struct {
+ {base::DIR_APP_DATA, nullptr, true},
+ {base::DIR_HOME, FILE_PATH_LITERAL("Library"), true},
+ #endif
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // On Linux also block access to devices via /dev, as well as security
+ // sensitive data in /sys and /proc.
+ {kNoBasePathKey, FILE_PATH_LITERAL("/dev"), true},
diff --git a/devel/electron7/files/patch-chrome_browser_net_system__network__context__manager.cc b/devel/electron7/files/patch-chrome_browser_net_system__network__context__manager.cc
new file mode 100644
index 000000000000..595be57d2b04
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_browser_net_system__network__context__manager.cc
@@ -0,0 +1,64 @@
+--- chrome/browser/net/system_network_context_manager.cc.orig 2019-12-12 12:39:11 UTC
++++ chrome/browser/net/system_network_context_manager.cc
+@@ -78,11 +78,11 @@
+ #include "chrome/browser/chromeos/policy/browser_policy_connector_chromeos.h"
+ #endif // defined(OS_CHROMEOS)
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ #include "chrome/common/chrome_paths_internal.h"
+ #include "chrome/grit/chromium_strings.h"
+ #include "ui/base/l10n/l10n_util.h"
+-#endif // defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#endif // (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+
+ #if BUILDFLAG(ENABLE_EXTENSIONS)
+ #include "extensions/common/constants.h"
+@@ -206,10 +206,10 @@ network::mojom::HttpAuthDynamicParamsPtr CreateHttpAut
+ auth_dynamic_params->enable_negotiate_port =
+ local_state->GetBoolean(prefs::kEnableAuthNegotiatePort);
+
+-#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ auth_dynamic_params->delegate_by_kdc_policy =
+ local_state->GetBoolean(prefs::kAuthNegotiateDelegateByKdcPolicy);
+-#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_CHROMEOS)
++#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+
+ #if defined(OS_POSIX)
+ auth_dynamic_params->ntlm_v2_enabled =
+@@ -457,10 +457,10 @@ SystemNetworkContextManager::SystemNetworkContextManag
+ pref_change_registrar_.Add(prefs::kEnableAuthNegotiatePort,
+ auth_pref_callback);
+
+-#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ pref_change_registrar_.Add(prefs::kAuthNegotiateDelegateByKdcPolicy,
+ auth_pref_callback);
+-#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_CHROMEOS)
++#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+
+ #if defined(OS_POSIX)
+ pref_change_registrar_.Add(prefs::kNtlmV2Enabled, auth_pref_callback);
+@@ -509,10 +509,10 @@ void SystemNetworkContextManager::RegisterPrefs(PrefRe
+ registry->RegisterStringPref(prefs::kAuthServerWhitelist, std::string());
+ registry->RegisterStringPref(prefs::kAuthNegotiateDelegateWhitelist,
+ std::string());
+-#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ registry->RegisterBooleanPref(prefs::kAuthNegotiateDelegateByKdcPolicy,
+ false);
+-#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_CHROMEOS)
++#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+
+ #if defined(OS_POSIX)
+ registry->RegisterBooleanPref(
+@@ -620,7 +620,7 @@ void SystemNetworkContextManager::OnNetworkServiceCrea
+ insecure_stub_resolver_enabled, secure_dns_mode,
+ std::move(dns_over_https_servers));
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS)
+ const base::CommandLine& command_line =
+ *base::CommandLine::ForCurrentProcess();
+
diff --git a/devel/electron7/files/patch-chrome_browser_notifications_notification__display__service__impl.cc b/devel/electron7/files/patch-chrome_browser_notifications_notification__display__service__impl.cc
new file mode 100644
index 000000000000..eb8ab052c69a
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_browser_notifications_notification__display__service__impl.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/notifications/notification_display_service_impl.cc.orig 2019-12-12 12:39:11 UTC
++++ chrome/browser/notifications/notification_display_service_impl.cc
+@@ -33,7 +33,7 @@
+ #include "chrome/browser/notifications/notification_platform_bridge_message_center.h"
+ #endif
+
+-#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_BSD)
+ #include "chrome/browser/send_tab_to_self/desktop_notification_handler.h"
+ #endif
+
+@@ -122,7 +122,7 @@ NotificationDisplayServiceImpl::NotificationDisplaySer
+ AddNotificationHandler(NotificationHandler::Type::WEB_PERSISTENT,
+ std::make_unique<PersistentNotificationHandler>());
+
+-#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_BSD)
+ AddNotificationHandler(
+ NotificationHandler::Type::SEND_TAB_TO_SELF,
+ std::make_unique<send_tab_to_self::DesktopNotificationHandler>(
diff --git a/devel/electron7/files/patch-chrome_browser_password__manager_chrome__password__manager__client.cc b/devel/electron7/files/patch-chrome_browser_password__manager_chrome__password__manager__client.cc
new file mode 100644
index 000000000000..a116ba344580
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_browser_password__manager_chrome__password__manager__client.cc
@@ -0,0 +1,14 @@
+--- chrome/browser/password_manager/chrome_password_manager_client.cc.orig 2019-12-12 12:39:11 UTC
++++ chrome/browser/password_manager/chrome_password_manager_client.cc
+@@ -84,7 +84,11 @@
+ #include "net/base/url_util.h"
+ #include "net/cert/cert_status_flags.h"
+ #include "services/metrics/public/cpp/ukm_recorder.h"
++#if defined(OS_BSD)
++#include <re2/re2.h>
++#else
+ #include "third_party/re2/src/re2/re2.h"
++#endif
+ #include "url/url_constants.h"
+
+ #if BUILDFLAG(FULL_SAFE_BROWSING)
diff --git a/devel/electron7/files/patch-chrome_browser_password__manager_password__store__factory.cc b/devel/electron7/files/patch-chrome_browser_password__manager_password__store__factory.cc
new file mode 100644
index 000000000000..1ddf887941c0
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_browser_password__manager_password__store__factory.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/password_manager/password_store_factory.cc.orig 2019-12-12 12:39:11 UTC
++++ chrome/browser/password_manager/password_store_factory.cc
+@@ -181,7 +181,7 @@ PasswordStoreFactory::BuildServiceInstanceFor(
+ base::TimeDelta::FromSeconds(20));
+
+ #if defined(OS_WIN) || defined(OS_MACOSX) || \
+- (defined(OS_LINUX) && !defined(OS_CHROMEOS))
++ (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ std::unique_ptr<password_manager::PasswordStoreSigninNotifier> notifier =
+ std::make_unique<password_manager::PasswordStoreSigninNotifierImpl>(
+ IdentityManagerFactory::GetForProfile(profile));
diff --git a/devel/electron7/files/patch-chrome_browser_performance__monitor_process__metrics__history.cc b/devel/electron7/files/patch-chrome_browser_performance__monitor_process__metrics__history.cc
new file mode 100644
index 000000000000..54ee1129991a
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_browser_performance__monitor_process__metrics__history.cc
@@ -0,0 +1,38 @@
+--- chrome/browser/performance_monitor/process_metrics_history.cc.orig 2019-12-12 12:39:11 UTC
++++ chrome/browser/performance_monitor/process_metrics_history.cc
+@@ -47,7 +47,7 @@ void ProcessMetricsHistory::SampleMetrics() {
+ #if defined(OS_WIN)
+ disk_usage_ = process_metrics_->GetDiskUsageBytesPerSecond();
+ #endif
+-#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_AIX)
++#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_AIX) || defined(OS_BSD)
+ idle_wakeups_ = process_metrics_->GetIdleWakeupsPerSecond();
+ #endif
+ #if defined(OS_MACOSX)
+@@ -88,7 +88,7 @@ void ProcessMetricsHistory::RunPerformanceTriggers() {
+ kDiskUsageHistogramMin, kDiskUsageHistogramMax,
+ kDiskUsageHistogramBucketCount);
+ #endif
+-#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_AIX)
++#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_AIX) || defined(OS_BSD)
+ UMA_HISTOGRAM_COUNTS_10000(
+ "PerformanceMonitor.IdleWakeups.BrowserProcess", idle_wakeups_);
+ #endif
+@@ -109,7 +109,7 @@ void ProcessMetricsHistory::RunPerformanceTriggers() {
+ UMA_HISTOGRAM_BOOLEAN("PerformanceMonitor.HighCPU.RendererProcess",
+ true);
+ }
+-#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_AIX)
++#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_AIX) || defined(OS_BSD)
+ UMA_HISTOGRAM_COUNTS_10000(
+ "PerformanceMonitor.IdleWakeups.RendererProcess", idle_wakeups_);
+ #endif
+@@ -129,7 +129,7 @@ void ProcessMetricsHistory::RunPerformanceTriggers() {
+ kHistogramBucketCount);
+ if (cpu_usage_ > kHighCPUUtilizationThreshold)
+ UMA_HISTOGRAM_BOOLEAN("PerformanceMonitor.HighCPU.GPUProcess", true);
+-#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_AIX)
++#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_AIX) || defined(OS_BSD)
+ UMA_HISTOGRAM_COUNTS_10000("PerformanceMonitor.IdleWakeups.GPUProcess",
+ idle_wakeups_);
+ #endif
diff --git a/devel/electron7/files/patch-chrome_browser_performance__monitor_process__metrics__history.h b/devel/electron7/files/patch-chrome_browser_performance__monitor_process__metrics__history.h
new file mode 100644
index 000000000000..64ca0fa3819a
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_browser_performance__monitor_process__metrics__history.h
@@ -0,0 +1,11 @@
+--- chrome/browser/performance_monitor/process_metrics_history.h.orig 2019-12-12 12:39:11 UTC
++++ chrome/browser/performance_monitor/process_metrics_history.h
+@@ -72,7 +72,7 @@ class ProcessMetricsHistory {
+ uint64_t disk_usage_ = 0;
+ #endif
+
+-#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_AIX)
++#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_AIX) || defined(OS_BSD)
+ int idle_wakeups_ = 0;
+ #endif
+ #if defined(OS_MACOSX)
diff --git a/devel/electron7/files/patch-chrome_browser_platform__util.h b/devel/electron7/files/patch-chrome_browser_platform__util.h
new file mode 100644
index 000000000000..262e7989117c
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_browser_platform__util.h
@@ -0,0 +1,11 @@
+--- chrome/browser/platform_util.h.orig 2019-12-12 12:39:11 UTC
++++ chrome/browser/platform_util.h
+@@ -41,7 +41,7 @@ enum OpenOperationResult {
+ enum OpenItemType {
+ OPEN_FILE,
+ OPEN_FOLDER,
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ SHOW_ITEM_IN_FOLDER
+ #endif
+ };
diff --git a/devel/electron7/files/patch-chrome_browser_plugins_plugin__info__host__impl.cc b/devel/electron7/files/patch-chrome_browser_plugins_plugin__info__host__impl.cc
new file mode 100644
index 000000000000..468c606aea6e
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_browser_plugins_plugin__info__host__impl.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/plugins/plugin_info_host_impl.cc.orig 2019-12-12 12:39:11 UTC
++++ chrome/browser/plugins/plugin_info_host_impl.cc
+@@ -383,7 +383,7 @@ void PluginInfoHostImpl::ComponentPluginLookupDone(
+ std::unique_ptr<component_updater::ComponentInfo> cus_plugin_info) {
+ if (cus_plugin_info) {
+ output->status = chrome::mojom::PluginStatus::kComponentUpdateRequired;
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ if (cus_plugin_info->version != base::Version("0")) {
+ output->status = chrome::mojom::PluginStatus::kRestartRequired;
+ }
diff --git a/devel/electron7/files/patch-chrome_browser_plugins_plugins__resource__service.cc b/devel/electron7/files/patch-chrome_browser_plugins_plugins__resource__service.cc
new file mode 100644
index 000000000000..4daa8d69e3b7
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_browser_plugins_plugins__resource__service.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/plugins/plugins_resource_service.cc.orig 2019-12-12 12:39:11 UTC
++++ chrome/browser/plugins/plugins_resource_service.cc
+@@ -63,7 +63,7 @@ GURL GetPluginsServerURL() {
+ filename = "plugins_win.json";
+ #elif defined(OS_CHROMEOS)
+ filename = "plugins_chromeos.json";
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ filename = "plugins_linux.json";
+ #elif defined(OS_MACOSX)
+ filename = "plugins_mac.json";
diff --git a/devel/electron7/files/patch-chrome_browser_policy_browser__signin__policy__handler.cc b/devel/electron7/files/patch-chrome_browser_policy_browser__signin__policy__handler.cc
new file mode 100644
index 000000000000..a19edeb578ce
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_browser_policy_browser__signin__policy__handler.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/policy/browser_signin_policy_handler.cc.orig 2019-12-12 12:39:11 UTC
++++ chrome/browser/policy/browser_signin_policy_handler.cc
+@@ -39,7 +39,7 @@ void BrowserSigninPolicyHandler::ApplyPolicySettings(c
+ }
+ switch (static_cast<BrowserSigninMode>(int_value)) {
+ case BrowserSigninMode::kForced:
+-#if !defined(OS_LINUX)
++#if !defined(OS_LINUX) && !defined(OS_BSD)
+ prefs->SetValue(prefs::kForceBrowserSignin, base::Value(true));
+ #endif
+ FALLTHROUGH;
diff --git a/devel/electron7/files/patch-chrome_browser_policy_configuration__policy__handler__list__factory.cc b/devel/electron7/files/patch-chrome_browser_policy_configuration__policy__handler__list__factory.cc
new file mode 100644
index 000000000000..504aed67d0a9
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_browser_policy_configuration__policy__handler__list__factory.cc
@@ -0,0 +1,43 @@
+--- chrome/browser/policy/configuration_policy_handler_list_factory.cc.orig 2019-12-12 12:39:12 UTC
++++ chrome/browser/policy/configuration_policy_handler_list_factory.cc
+@@ -113,7 +113,7 @@
+ #endif
+
+ #if defined(OS_WIN) || defined(OS_MACOSX) || \
+- (defined(OS_LINUX) && !defined(OS_CHROMEOS))
++ (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ #include "chrome/browser/browser_switcher/browser_switcher_prefs.h"
+ #endif
+
+@@ -333,11 +333,11 @@ const PolicyToPreferenceMapEntry kSimplePolicyMap[] =
+ prefs::kSafeBrowsingSendFilesForMalwareCheck,
+ base::Value::Type::INTEGER
+ },
+-#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ { key::kAuthNegotiateDelegateByKdcPolicy,
+ prefs::kAuthNegotiateDelegateByKdcPolicy,
+ base::Value::Type::BOOLEAN },
+-#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_CHROMEOS)
++#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ #if defined(OS_POSIX)
+ { key::kNtlmV2Enabled,
+ prefs::kNtlmV2Enabled,
+@@ -1064,7 +1064,7 @@ const PolicyToPreferenceMapEntry kSimplePolicyMap[] =
+ base::Value::Type::BOOLEAN },
+
+ #if defined(OS_WIN) || defined(OS_MACOSX) || \
+- (defined(OS_LINUX) && !defined(OS_CHROMEOS))
++ (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ { key::kAlternativeBrowserPath,
+ browser_switcher::prefs::kAlternativeBrowserPath,
+ base::Value::Type::STRING },
+@@ -1125,7 +1125,7 @@ const PolicyToPreferenceMapEntry kSimplePolicyMap[] =
+ browser_switcher::prefs::kChromeParameters,
+ base::Value::Type::LIST },
+ #endif
+-#if defined(OS_LINUX) || defined(OS_WIN) || defined(OS_MACOSX)
++#if defined(OS_LINUX) || defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_BSD)
+ { key::kBrowserGuestModeEnforced,
+ prefs::kBrowserGuestModeEnforced,
+ base::Value::Type::BOOLEAN },
diff --git a/devel/electron7/files/patch-chrome_browser_policy_policy__prefs__browsertest.cc b/devel/electron7/files/patch-chrome_browser_policy_policy__prefs__browsertest.cc
new file mode 100644
index 000000000000..9f3f75be4b60
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_browser_policy_policy__prefs__browsertest.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/policy/policy_prefs_browsertest.cc.orig 2019-12-12 12:39:12 UTC
++++ chrome/browser/policy/policy_prefs_browsertest.cc
+@@ -184,6 +184,8 @@ class PolicyTestCase {
+ const std::string os("chromeos");
+ #elif defined(OS_LINUX)
+ const std::string os("linux");
++#elif defined(OS_FREEBSD)
++ const std::string os("freebsd");
+ #else
+ #error "Unknown platform"
+ #endif
diff --git a/devel/electron7/files/patch-chrome_browser_prefs_browser__prefs.cc b/devel/electron7/files/patch-chrome_browser_prefs_browser__prefs.cc
new file mode 100644
index 000000000000..90f46e1f7de4
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_browser_prefs_browser__prefs.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/prefs/browser_prefs.cc.orig 2019-12-12 12:39:12 UTC
++++ chrome/browser/prefs/browser_prefs.cc
+@@ -346,7 +346,7 @@
+ #endif
+
+ #if defined(OS_WIN) || defined(OS_MACOSX) || \
+- (defined(OS_LINUX) && !defined(OS_CHROMEOS))
++ (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ #include "chrome/browser/browser_switcher/browser_switcher_prefs.h"
+ #endif
+
+@@ -951,7 +951,7 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySync
+ #endif
+
+ #if defined(OS_WIN) || defined(OS_MACOSX) || \
+- (defined(OS_LINUX) && !defined(OS_CHROMEOS))
++ (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ browser_switcher::BrowserSwitcherPrefs::RegisterProfilePrefs(registry);
+ #endif
+
diff --git a/devel/electron7/files/patch-chrome_browser_prefs_pref__service__incognito__whitelist.cc b/devel/electron7/files/patch-chrome_browser_prefs_pref__service__incognito__whitelist.cc
new file mode 100644
index 000000000000..b2ef6cc6ec21
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_browser_prefs_pref__service__incognito__whitelist.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/prefs/pref_service_incognito_whitelist.cc.orig 2019-12-12 12:39:12 UTC
++++ chrome/browser/prefs/pref_service_incognito_whitelist.cc
+@@ -186,7 +186,7 @@ const char* const kPersistentPrefNames[] = {
+ prefs::kShowFullscreenToolbar,
+ #endif
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS)
+ // Toggleing custom frames affects all open windows in the profile, hence
+ // should be written to the regular profile when changed in incognito mode.
+ prefs::kUseCustomChromeFrame,
diff --git a/devel/electron7/files/patch-chrome_browser_process__singleton__posix.cc b/devel/electron7/files/patch-chrome_browser_process__singleton__posix.cc
new file mode 100644
index 000000000000..8aafd173c9dd
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_browser_process__singleton__posix.cc
@@ -0,0 +1,34 @@
+--- chrome/browser/process_singleton_posix.cc.orig 2019-12-12 12:39:12 UTC
++++ chrome/browser/process_singleton_posix.cc
+@@ -95,11 +95,11 @@
+ #include "net/base/network_interfaces.h"
+ #include "ui/base/l10n/l10n_util.h"
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include "chrome/browser/ui/process_singleton_dialog_linux.h"
+ #endif
+
+-#if defined(TOOLKIT_VIEWS) && defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if defined(TOOLKIT_VIEWS) && (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ #include "ui/views/linux_ui/linux_ui.h"
+ #endif
+
+@@ -296,7 +296,7 @@ bool DisplayProfileInUseError(const base::FilePath& lo
+ if (g_disable_prompt)
+ return g_user_opted_unlock_in_use_profile;
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ base::string16 relaunch_button_text = l10n_util::GetStringUTF16(
+ IDS_PROFILE_IN_USE_LINUX_RELAUNCH);
+ return ShowProcessSingletonDialog(error, relaunch_button_text);
+@@ -872,7 +872,7 @@ ProcessSingleton::NotifyResult ProcessSingleton::Notif
+ SendRemoteProcessInteractionResultHistogram(REMOTE_PROCESS_SHUTTING_DOWN);
+ return PROCESS_NONE;
+ } else if (strncmp(buf, kACKToken, base::size(kACKToken) - 1) == 0) {
+-#if defined(TOOLKIT_VIEWS) && defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if defined(TOOLKIT_VIEWS) && (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ // Likely NULL in unit tests.
+ views::LinuxUI* linux_ui = views::LinuxUI::instance();
+ if (linux_ui)
diff --git a/devel/electron7/files/patch-chrome_browser_profiles_chrome__browser__main__extra__parts__profiles.cc b/devel/electron7/files/patch-chrome_browser_profiles_chrome__browser__main__extra__parts__profiles.cc
new file mode 100644
index 000000000000..d93c1081dd4f
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_browser_profiles_chrome__browser__main__extra__parts__profiles.cc
@@ -0,0 +1,29 @@
+--- chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc.orig 2019-12-12 12:39:12 UTC
++++ chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc
+@@ -181,7 +181,7 @@
+ #include "chrome/browser/safe_browsing/advanced_protection_status_manager_factory.h"
+ #endif
+
+-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+ #include "chrome/browser/sync/sync_clipboard_service_factory.h"
+ #endif
+
+@@ -336,7 +336,7 @@ void ChromeBrowserMainExtraPartsProfiles::
+ MediaGalleriesPreferencesFactory::GetInstance();
+ #endif
+ #if defined(OS_WIN) || defined(OS_MACOSX) || \
+- (defined(OS_LINUX) && !defined(OS_CHROMEOS))
++ (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ metrics::DesktopProfileSessionDurationsServiceFactory::GetInstance();
+ #endif
+ ModelTypeStoreServiceFactory::GetInstance();
+@@ -398,7 +398,7 @@ void ChromeBrowserMainExtraPartsProfiles::
+ SpellcheckServiceFactory::GetInstance();
+ #endif
+ suggestions::SuggestionsServiceFactory::GetInstance();
+-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+ SyncClipboardServiceFactory::GetInstance();
+ #endif
+ TabRestoreServiceFactory::GetInstance();
diff --git a/devel/electron7/files/patch-chrome_browser_profiles_profile__attributes__entry.cc b/devel/electron7/files/patch-chrome_browser_profiles_profile__attributes__entry.cc
new file mode 100644
index 000000000000..800da17bbabc
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_browser_profiles_profile__attributes__entry.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/profiles/profile_attributes_entry.cc.orig 2019-12-12 12:39:12 UTC
++++ chrome/browser/profiles/profile_attributes_entry.cc
+@@ -83,7 +83,7 @@ void ProfileAttributesEntry::Initialize(ProfileInfoCac
+ if (is_force_signin_enabled_) {
+ if (!IsAuthenticated())
+ is_force_signin_profile_locked_ = true;
+-#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_WIN)
++#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD)
+ } else if (IsSigninRequired()) {
+ // Profiles that require signin in the absence of an enterprise policy are
+ // left-overs from legacy supervised users. Just unlock them, so users can
diff --git a/devel/electron7/files/patch-chrome_browser_renderer__context__menu_render__view__context__menu.cc b/devel/electron7/files/patch-chrome_browser_renderer__context__menu_render__view__context__menu.cc
new file mode 100644
index 000000000000..31b90afcf3b4
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_browser_renderer__context__menu_render__view__context__menu.cc
@@ -0,0 +1,29 @@
+--- chrome/browser/renderer_context_menu/render_view_context_menu.cc.orig 2019-12-12 12:39:12 UTC
++++ chrome/browser/renderer_context_menu/render_view_context_menu.cc
+@@ -1699,7 +1699,7 @@ void RenderViewContextMenu::AppendEditableItems() {
+ // 'Undo' and 'Redo' for text input with no suggestions and no text selected.
+ // We make an exception for OS X as context clicking will select the closest
+ // word. In this case both items are always shown.
+-#if defined(OS_MACOSX)
++#if defined(OS_MACOSX) || defined(OS_BSD)
+ menu_model_.AddItemWithStringId(IDC_CONTENT_CONTEXT_UNDO,
+ IDS_CONTENT_CONTEXT_UNDO);
+ menu_model_.AddItemWithStringId(IDC_CONTENT_CONTEXT_REDO,
+@@ -1741,7 +1741,7 @@ void RenderViewContextMenu::AppendLanguageSettings() {
+ if (!use_spelling)
+ return;
+
+-#if defined(OS_MACOSX)
++#if defined(OS_MACOSX) || defined(OS_BSD)
+ menu_model_.AddItemWithStringId(IDC_CONTENT_CONTEXT_LANGUAGE_SETTINGS,
+ IDS_CONTENT_CONTEXT_LANGUAGE_SETTINGS);
+ #else
+@@ -2045,7 +2045,7 @@ bool RenderViewContextMenu::IsCommandIdEnabled(int id)
+ case IDC_CHECK_SPELLING_WHILE_TYPING:
+ return prefs->GetBoolean(spellcheck::prefs::kSpellCheckEnable);
+
+-#if !defined(OS_MACOSX) && defined(OS_POSIX)
++#if !defined(OS_MACOSX) && !defined(OS_BSD) && defined(OS_POSIX)
+ // TODO(suzhe): this should not be enabled for password fields.
+ case IDC_INPUT_METHODS_MENU:
+ return true;
diff --git a/devel/electron7/files/patch-chrome_browser_renderer__preferences__util.cc b/devel/electron7/files/patch-chrome_browser_renderer__preferences__util.cc
new file mode 100644
index 000000000000..e681c2d25b47
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_browser_renderer__preferences__util.cc
@@ -0,0 +1,29 @@
+--- chrome/browser/renderer_preferences_util.cc.orig 2019-12-12 12:39:12 UTC
++++ chrome/browser/renderer_preferences_util.cc
+@@ -30,7 +30,7 @@
+ #include "ui/base/cocoa/defaults_utils.h"
+ #endif
+
+-#if defined(USE_AURA) && defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if defined(USE_AURA) && (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS)
+ #include "chrome/browser/themes/theme_service.h"
+ #include "chrome/browser/themes/theme_service_factory.h"
+ #include "ui/views/linux_ui/linux_ui.h"
+@@ -130,7 +130,7 @@ void UpdateFromSystemSettings(blink::mojom::RendererPr
+ prefs->caret_blink_interval = interval;
+ #endif
+
+-#if defined(USE_AURA) && defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if defined(USE_AURA) && (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS)
+ views::LinuxUI* linux_ui = views::LinuxUI::instance();
+ if (linux_ui) {
+ if (ThemeServiceFactory::GetForProfile(profile)->UsingSystemTheme()) {
+@@ -149,7 +149,7 @@ void UpdateFromSystemSettings(blink::mojom::RendererPr
+ }
+ #endif
+
+-#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_WIN)
++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_WIN) || defined(OS_BSD)
+ content::UpdateFontRendererPreferencesFromSystemSettings(prefs);
+ #endif
+
diff --git a/devel/electron7/files/patch-chrome_browser_resources_safe__browsing_gen__file__type__proto.py b/devel/electron7/files/patch-chrome_browser_resources_safe__browsing_gen__file__type__proto.py
new file mode 100644
index 000000000000..b8bf086f3b4f
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_browser_resources_safe__browsing_gen__file__type__proto.py
@@ -0,0 +1,19 @@
+--- chrome/browser/resources/safe_browsing/gen_file_type_proto.py.orig 2019-12-12 12:39:15 UTC
++++ chrome/browser/resources/safe_browsing/gen_file_type_proto.py
+@@ -31,6 +31,7 @@ def PlatformTypes():
+ "android": download_file_types_pb2.DownloadFileType.PLATFORM_ANDROID,
+ "chromeos": download_file_types_pb2.DownloadFileType.PLATFORM_CHROME_OS,
+ "linux": download_file_types_pb2.DownloadFileType.PLATFORM_LINUX,
++ "bsd": download_file_types_pb2.DownloadFileType.PLATFORM_LINUX,
+ "mac": download_file_types_pb2.DownloadFileType.PLATFORM_MAC,
+ "win": download_file_types_pb2.DownloadFileType.PLATFORM_WINDOWS,
+ }
+@@ -169,7 +170,7 @@ class DownloadFileTypeProtoGenerator(BinaryProtoGenera
+ 'Outfile must have a %d for version and %s for platform.')
+ parser.add_option('-t', '--type',
+ help='The platform type. One of android, chromeos, ' +
+- 'linux, mac, win')
++ 'linux, bsd, mac, win')
+
+ def AddExtraCommandLineArgsForVirtualEnvRun(self, opts, command):
+ if opts.type is not None:
diff --git a/devel/electron7/files/patch-chrome_browser_resources_settings_appearance__page_appearance__browser__proxy.js b/devel/electron7/files/patch-chrome_browser_resources_settings_appearance__page_appearance__browser__proxy.js
new file mode 100644
index 000000000000..1dc370e85719
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_browser_resources_settings_appearance__page_appearance__browser__proxy.js
@@ -0,0 +1,20 @@
+--- chrome/browser/resources/settings/appearance_page/appearance_browser_proxy.js.orig 2019-12-12 12:39:15 UTC
++++ chrome/browser/resources/settings/appearance_page/appearance_browser_proxy.js
+@@ -19,7 +19,7 @@ cr.define('settings', function() {
+
+ useDefaultTheme() {}
+
+- // <if expr="is_linux and not chromeos">
++ // <if expr="is_bsd and not chromeos">
+ useSystemTheme() {}
+
+ // </if>
+@@ -59,7 +59,7 @@ cr.define('settings', function() {
+ chrome.send('useDefaultTheme');
+ }
+
+- // <if expr="is_linux and not chromeos">
++ // <if expr="is_bsd and not chromeos">
+ /** @override */
+ useSystemTheme() {
+ chrome.send('useSystemTheme');
diff --git a/devel/electron7/files/patch-chrome_browser_resources_settings_appearance__page_appearance__page.html b/devel/electron7/files/patch-chrome_browser_resources_settings_appearance__page_appearance__page.html
new file mode 100644
index 000000000000..c0e0f6981ba3
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_browser_resources_settings_appearance__page_appearance__page.html
@@ -0,0 +1,29 @@
+--- chrome/browser/resources/settings/appearance_page/appearance_page.html.orig 2019-12-12 12:39:15 UTC
++++ chrome/browser/resources/settings/appearance_page/appearance_page.html
+@@ -67,7 +67,7 @@
+ <cr-link-row class="first" hidden="[[!pageVisibility.setTheme]]"
+ label="$i18n{themes}" sub-label="[[themeSublabel_]]"
+ on-click="openThemeUrl_" external></cr-link-row>
+-<if expr="not is_linux or chromeos">
++<if expr="not is_posix or chromeos">
+ <template is="dom-if" if="[[prefs.extensions.theme.id.value]]">
+ <div class="separator"></div>
+ <cr-button id="useDefault" on-click="onUseDefaultTap_">
+@@ -75,7 +75,7 @@
+ </cr-button>
+ </template>
+ </if>
+-<if expr="is_linux and not chromeos">
++<if expr="is_posix and not chromeos">
+ <div class="settings-row continuation"
+ hidden="[[!showThemesSecondary_(
+ prefs.extensions.theme.id.value, useSystemTheme_)]]"
+@@ -138,7 +138,7 @@
+ pref="{{prefs.bookmark_bar.show_on_all_tabs}}"
+ label="$i18n{showBookmarksBar}">
+ </settings-toggle-button>
+-<if expr="is_linux and not chromeos">
++<if expr="is_posix and not chromeos">
+ <settings-toggle-button
+ class$="[[getFirst_(pageVisibility.bookmarksBar)]]"
+ pref="{{prefs.browser.custom_chrome_frame}}"
diff --git a/devel/electron7/files/patch-chrome_browser_resources_settings_appearance__page_appearance__page.js b/devel/electron7/files/patch-chrome_browser_resources_settings_appearance__page_appearance__page.js
new file mode 100644
index 000000000000..586243c078af
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_browser_resources_settings_appearance__page_appearance__page.js
@@ -0,0 +1,33 @@
+--- chrome/browser/resources/settings/appearance_page/appearance_page.js.orig 2019-12-12 12:39:15 UTC
++++ chrome/browser/resources/settings/appearance_page/appearance_page.js
+@@ -130,7 +130,7 @@ Polymer({
+ 'defaultFontSizeChanged_(prefs.webkit.webprefs.default_font_size.value)',
+ 'themeChanged_(prefs.extensions.theme.id.value, useSystemTheme_)',
+
+- // <if expr="is_linux and not chromeos">
++ // <if expr="is_bsd and not chromeos">
+ // NOTE: this pref only exists on Linux.
+ 'useSystemThemePrefChanged_(prefs.extensions.theme.use_system.value)',
+ // </if>
+@@ -238,7 +238,7 @@ Polymer({
+ this.appearanceBrowserProxy_.useDefaultTheme();
+ },
+
+- // <if expr="is_linux and not chromeos">
++ // <if expr="is_bsd and not chromeos">
+ /**
+ * @param {boolean} useSystemTheme
+ * @private
+@@ -315,10 +315,10 @@ Polymer({
+ }
+
+ let i18nId;
+- // <if expr="is_linux and not chromeos">
++ // <if expr="is_bsd and not chromeos">
+ i18nId = useSystemTheme ? 'systemTheme' : 'classicTheme';
+ // </if>
+- // <if expr="not is_linux or chromeos">
++ // <if expr="not is_bsd or chromeos">
+ i18nId = 'chooseFromWebStore';
+ // </if>
+ this.themeSublabel_ = this.i18n(i18nId);
diff --git a/devel/electron7/files/patch-chrome_browser_safe__browsing_incident__reporting_incident__handler__util.cc b/devel/electron7/files/patch-chrome_browser_safe__browsing_incident__reporting_incident__handler__util.cc
new file mode 100644
index 000000000000..8b9eeb4c7e45
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_browser_safe__browsing_incident__reporting_incident__handler__util.cc
@@ -0,0 +1,15 @@
+--- chrome/browser/safe_browsing/incident_reporting/incident_handler_util.cc.orig 2019-12-12 12:39:15 UTC
++++ chrome/browser/safe_browsing/incident_reporting/incident_handler_util.cc
+@@ -8,7 +8,12 @@
+
+ #include "base/hash/hash.h"
+ #include "base/logging.h"
++//XXX(rene) needs shim headers?
++#if defined(USE_SYSTEM_PROTOBUF)
++#include <google/protobuf/message_lite.h>
++#else
+ #include "third_party/protobuf/src/google/protobuf/message_lite.h"
++#endif
+
+ namespace safe_browsing {
+
diff --git a/devel/electron7/files/patch-chrome_browser_safe__browsing_incident__reporting_incident__reporting__service.cc b/devel/electron7/files/patch-chrome_browser_safe__browsing_incident__reporting_incident__reporting__service.cc
new file mode 100644
index 000000000000..ce7bc48bf3ce
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_browser_safe__browsing_incident__reporting_incident__reporting__service.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/safe_browsing/incident_reporting/incident_reporting_service.cc.orig 2019-12-12 12:39:15 UTC
++++ chrome/browser/safe_browsing/incident_reporting/incident_reporting_service.cc
+@@ -713,7 +713,7 @@ void IncidentReportingService::OnEnvironmentDataCollec
+ environment_collection_pending_ = false;
+
+ // Process::Current().CreationTime() is missing on some platforms.
+-#if defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_LINUX)
++#if defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD)
+ base::TimeDelta uptime =
+ first_incident_time_ - base::Process::Current().CreationTime();
+ environment_data->mutable_process()->set_uptime_msec(uptime.InMilliseconds());
diff --git a/devel/electron7/files/patch-chrome_browser_search_search__suggest_search__suggest__service.cc b/devel/electron7/files/patch-chrome_browser_search_search__suggest_search__suggest__service.cc
new file mode 100644
index 000000000000..857c906fc5dd
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_browser_search_search__suggest_search__suggest__service.cc
@@ -0,0 +1,14 @@
+--- chrome/browser/search/search_suggest/search_suggest_service.cc.orig 2019-12-12 12:39:15 UTC
++++ chrome/browser/search/search_suggest/search_suggest_service.cc
+@@ -17,7 +17,11 @@
+ #include "components/prefs/scoped_user_pref_update.h"
+ #include "components/signin/public/identity_manager/accounts_in_cookie_jar_info.h"
+ #include "components/signin/public/identity_manager/identity_manager.h"
++#if defined(OS_BSD)
++#include <re2/re2.h>
++#else
+ #include "third_party/re2/src/re2/re2.h"
++#endif
+
+ namespace {
+
diff --git a/devel/electron7/files/patch-chrome_browser_send__tab__to__self_receiving__ui__handler__registry.cc b/devel/electron7/files/patch-chrome_browser_send__tab__to__self_receiving__ui__handler__registry.cc
new file mode 100644
index 000000000000..6688d36ef421
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_browser_send__tab__to__self_receiving__ui__handler__registry.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/send_tab_to_self/receiving_ui_handler_registry.cc.orig 2019-12-12 12:39:15 UTC
++++ chrome/browser/send_tab_to_self/receiving_ui_handler_registry.cc
+@@ -11,7 +11,7 @@
+ #include "chrome/browser/profiles/profile.h"
+ #include "chrome/browser/send_tab_to_self/receiving_ui_handler.h"
+
+-#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_BSD)
+ #include "chrome/browser/send_tab_to_self/desktop_notification_handler.h"
+ #endif
+
+@@ -32,7 +32,7 @@ ReceivingUiHandlerRegistry* ReceivingUiHandlerRegistry
+ // Instantiates all the handlers relevant to this platform.
+ void ReceivingUiHandlerRegistry::InstantiatePlatformSpecificHandlers(
+ Profile* profile) {
+-#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_BSD)
+ applicable_handlers_.push_back(
+ std::make_unique<send_tab_to_self::DesktopNotificationHandler>(profile));
+ #elif defined(OS_ANDROID)
diff --git a/devel/electron7/files/patch-chrome_browser_send__tab__to__self_send__tab__to__self__client__service.cc b/devel/electron7/files/patch-chrome_browser_send__tab__to__self_send__tab__to__self__client__service.cc
new file mode 100644
index 000000000000..ca25bcc8ac03
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_browser_send__tab__to__self_send__tab__to__self__client__service.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/send_tab_to_self/send_tab_to_self_client_service.cc.orig 2019-12-12 12:39:15 UTC
++++ chrome/browser/send_tab_to_self/send_tab_to_self_client_service.cc
+@@ -41,7 +41,7 @@ void SendTabToSelfClientService::SendTabToSelfModelLoa
+ void SendTabToSelfClientService::EntriesAddedRemotely(
+ const std::vector<const SendTabToSelfEntry*>& new_entries) {
+ for (const std::unique_ptr<ReceivingUiHandler>& handler : GetHandlers()) {
+-#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_BSD)
+ // Only respond to notifications corresponding to this service's profile
+ // for these OSes; mobile does not have a Profile.
+ // Cast note: on desktop, handlers are guaranteed to be the derived class
diff --git a/devel/electron7/files/patch-chrome_browser_sharing_click__to__call_feature.cc b/devel/electron7/files/patch-chrome_browser_sharing_click__to__call_feature.cc
new file mode 100644
index 000000000000..2c70cd534cf7
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_browser_sharing_click__to__call_feature.cc
@@ -0,0 +1,17 @@
+--- chrome/browser/sharing/click_to_call/feature.cc.orig 2019-12-12 12:39:15 UTC
++++ chrome/browser/sharing/click_to_call/feature.cc
+@@ -9,12 +9,12 @@ const base::Feature kClickToCallReceiver{"ClickToCallR
+ base::FEATURE_ENABLED_BY_DEFAULT};
+ #endif // defined(OS_ANDROID)
+
+-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || \
++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD) || \
+ defined(OS_CHROMEOS)
+ const base::Feature kClickToCallContextMenuForSelectedText{
+ "ClickToCallContextMenuForSelectedText", base::FEATURE_DISABLED_BY_DEFAULT};
+
+ const base::Feature kClickToCallUI{"ClickToCallUI",
+ base::FEATURE_DISABLED_BY_DEFAULT};
+-#endif // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) ||
++#endif // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD) ||
+ // defined(OS_CHROMEOS)
diff --git a/devel/electron7/files/patch-chrome_browser_sharing_click__to__call_feature.h b/devel/electron7/files/patch-chrome_browser_sharing_click__to__call_feature.h
new file mode 100644
index 000000000000..190c70c746fd
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_browser_sharing_click__to__call_feature.h
@@ -0,0 +1,20 @@
+--- chrome/browser/sharing/click_to_call/feature.h.orig 2019-12-12 12:39:15 UTC
++++ chrome/browser/sharing/click_to_call/feature.h
+@@ -13,7 +13,7 @@
+ extern const base::Feature kClickToCallReceiver;
+ #endif // defined(OS_ANDROID)
+
+-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || \
++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD) || \
+ defined(OS_CHROMEOS)
+ // Feature to allow click to call gets processed on desktop.
+ extern const base::Feature kClickToCallUI;
+@@ -21,7 +21,7 @@ extern const base::Feature kClickToCallUI;
+ // Feature to show click to call in context menu when selected text is a phone
+ // number.
+ extern const base::Feature kClickToCallContextMenuForSelectedText;
+-#endif // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) ||
++#endif // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD) ||
+ // defined(OS_CHROMEOS)
+
+ #endif // CHROME_BROWSER_SHARING_CLICK_TO_CALL_FEATURE_H_
diff --git a/devel/electron7/files/patch-chrome_browser_signin_signin__util.cc b/devel/electron7/files/patch-chrome_browser_signin_signin__util.cc
new file mode 100644
index 000000000000..c6eb214fb843
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_browser_signin_signin__util.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/signin/signin_util.cc.orig 2019-12-12 12:39:15 UTC
++++ chrome/browser/signin/signin_util.cc
+@@ -34,7 +34,7 @@
+ #include "google_apis/gaia/gaia_auth_util.h"
+ #include "ui/base/l10n/l10n_util.h"
+
+-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ #include "chrome/browser/ui/browser_finder.h"
+ #include "chrome/browser/ui/browser_list.h"
+ #include "chrome/browser/ui/browser_list_observer.h"
+@@ -46,7 +46,7 @@ namespace {
+
+ constexpr char kSignoutSettingKey[] = "signout_setting";
+
+-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ #define CAN_DELETE_PROFILE
+ #endif
+
diff --git a/devel/electron7/files/patch-chrome_browser_ssl_captive__portal__blocking__page.cc b/devel/electron7/files/patch-chrome_browser_ssl_captive__portal__blocking__page.cc
new file mode 100644
index 000000000000..11e72959a466
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_browser_ssl_captive__portal__blocking__page.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/ssl/captive_portal_blocking_page.cc.orig 2019-12-12 12:39:15 UTC
++++ chrome/browser/ssl/captive_portal_blocking_page.cc
+@@ -124,7 +124,7 @@ std::string CaptivePortalBlockingPage::GetWiFiSSID() c
+ wifi_service->GetConnectedNetworkSSID(&ssid, &error);
+ if (!error.empty())
+ return std::string();
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ ssid = net::GetWifiSSID();
+ #elif defined(OS_ANDROID)
+ ssid = net::android::GetWifiSSID();
diff --git a/devel/electron7/files/patch-chrome_browser_ssl_ssl__error__controller__client.cc b/devel/electron7/files/patch-chrome_browser_ssl_ssl__error__controller__client.cc
new file mode 100644
index 000000000000..a7cc7d9553f9
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_browser_ssl_ssl__error__controller__client.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/ssl/ssl_error_controller_client.cc.orig 2019-12-12 12:39:16 UTC
++++ chrome/browser/ssl/ssl_error_controller_client.cc
+@@ -79,7 +79,7 @@ void LaunchDateAndTimeSettingsImpl() {
+ #if defined(OS_ANDROID)
+ chrome::android::OpenDateAndTimeSettings();
+
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ struct ClockCommand {
+ const char* const pathname;
+ const char* const argument;
+@@ -204,7 +204,7 @@ void SSLErrorControllerClient::Proceed() {
+ }
+
+ bool SSLErrorControllerClient::CanLaunchDateAndTimeSettings() {
+-#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_MACOSX) || \
++#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) || \
+ defined(OS_WIN)
+ return true;
+ #else
diff --git a/devel/electron7/files/patch-chrome_browser_sync_chrome__sync__client.cc b/devel/electron7/files/patch-chrome_browser_sync_chrome__sync__client.cc
new file mode 100644
index 000000000000..83a099a53bf6
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_browser_sync_chrome__sync__client.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/sync/chrome_sync_client.cc.orig 2019-12-12 12:39:16 UTC
++++ chrome/browser/sync/chrome_sync_client.cc
+@@ -389,7 +389,7 @@ ChromeSyncClient::CreateDataTypeControllers(syncer::Sy
+ GetSyncableServiceForType(syncer::APP_LIST), dump_stack));
+ #endif // BUILDFLAG(ENABLE_APP_LIST)
+
+-#if defined(OS_LINUX) || defined(OS_WIN)
++#if defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD)
+ // Dictionary sync is enabled by default.
+ if (!disabled_types.Has(syncer::DICTIONARY)) {
+ controllers.push_back(
+@@ -397,7 +397,7 @@ ChromeSyncClient::CreateDataTypeControllers(syncer::Sy
+ syncer::DICTIONARY, GetModelTypeStoreService()->GetStoreFactory(),
+ GetSyncableServiceForType(syncer::DICTIONARY), dump_stack));
+ }
+-#endif // defined(OS_LINUX) || defined(OS_WIN)
++#endif // defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD)
+
+ #if defined(OS_CHROMEOS)
+ if (arc::IsArcAllowedForProfile(profile_) &&
diff --git a/devel/electron7/files/patch-chrome_browser_task__manager_sampling_task__group.cc b/devel/electron7/files/patch-chrome_browser_task__manager_sampling_task__group.cc
new file mode 100644
index 000000000000..7e465425baf5
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_browser_task__manager_sampling_task__group.cc
@@ -0,0 +1,56 @@
+--- chrome/browser/task_manager/sampling/task_group.cc.orig 2019-12-12 12:39:16 UTC
++++ chrome/browser/task_manager/sampling/task_group.cc
+@@ -33,9 +33,9 @@ const int kBackgroundRefreshTypesMask =
+ #if defined(OS_WIN)
+ REFRESH_TYPE_START_TIME | REFRESH_TYPE_CPU_TIME |
+ #endif // defined(OS_WIN)
+-#if defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ REFRESH_TYPE_FD_COUNT |
+-#endif // defined(OS_LINUX) || defined(OS_MACOSX)
++#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ #if BUILDFLAG(ENABLE_NACL)
+ REFRESH_TYPE_NACL |
+ #endif // BUILDFLAG(ENABLE_NACL)
+@@ -114,9 +114,9 @@ TaskGroup::TaskGroup(
+ #if BUILDFLAG(ENABLE_NACL)
+ nacl_debug_stub_port_(nacl::kGdbDebugStubPortUnknown),
+ #endif // BUILDFLAG(ENABLE_NACL)
+-#if defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ open_fd_count_(-1),
+-#endif // defined(OS_LINUX) || defined(OS_MACOSX)
++#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ idle_wakeups_per_second_(-1),
+ gpu_memory_has_duplicates_(false),
+ is_backgrounded_(false) {
+@@ -129,10 +129,10 @@ TaskGroup::TaskGroup(
+ weak_ptr_factory_.GetWeakPtr()),
+ base::Bind(&TaskGroup::OnIdleWakeupsRefreshDone,
+ weak_ptr_factory_.GetWeakPtr()),
+-#if defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ base::Bind(&TaskGroup::OnOpenFdCountRefreshDone,
+ weak_ptr_factory_.GetWeakPtr()),
+-#endif // defined(OS_LINUX) || defined(OS_MACOSX)
++#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ base::Bind(&TaskGroup::OnProcessPriorityDone,
+ weak_ptr_factory_.GetWeakPtr()));
+
+@@ -300,14 +300,14 @@ void TaskGroup::OnRefreshNaClDebugStubPortDone(int nac
+ }
+ #endif // BUILDFLAG(ENABLE_NACL)
+
+-#if defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ void TaskGroup::OnOpenFdCountRefreshDone(int open_fd_count) {
+ DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
+
+ open_fd_count_ = open_fd_count;
+ OnBackgroundRefreshTypeFinished(REFRESH_TYPE_FD_COUNT);
+ }
+-#endif // defined(OS_LINUX) || defined(OS_MACOSX)
++#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+
+ void TaskGroup::OnCpuRefreshDone(double cpu_usage) {
+ DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
diff --git a/devel/electron7/files/patch-chrome_browser_task__manager_sampling_task__group.h b/devel/electron7/files/patch-chrome_browser_task__manager_sampling_task__group.h
new file mode 100644
index 000000000000..0a3d182238ce
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_browser_task__manager_sampling_task__group.h
@@ -0,0 +1,48 @@
+--- chrome/browser/task_manager/sampling/task_group.h.orig 2019-12-12 12:39:16 UTC
++++ chrome/browser/task_manager/sampling/task_group.h
+@@ -39,7 +39,7 @@ constexpr int kUnsupportedVMRefreshFlags =
+ REFRESH_TYPE_WEBCACHE_STATS | REFRESH_TYPE_NETWORK_USAGE |
+ REFRESH_TYPE_NACL | REFRESH_TYPE_IDLE_WAKEUPS | REFRESH_TYPE_HANDLES |
+ REFRESH_TYPE_START_TIME | REFRESH_TYPE_CPU_TIME | REFRESH_TYPE_PRIORITY |
+-#if defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ REFRESH_TYPE_FD_COUNT |
+ #endif
+ REFRESH_TYPE_HARD_FAULTS;
+@@ -122,9 +122,9 @@ class TaskGroup {
+ int nacl_debug_stub_port() const { return nacl_debug_stub_port_; }
+ #endif // BUILDFLAG(ENABLE_NACL)
+
+-#if defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ int open_fd_count() const { return open_fd_count_; }
+-#endif // defined(OS_LINUX) || defined(OS_MACOSX)
++#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+
+ int idle_wakeups_per_second() const { return idle_wakeups_per_second_; }
+
+@@ -138,9 +138,9 @@ class TaskGroup {
+ void RefreshNaClDebugStubPort(int child_process_unique_id);
+ void OnRefreshNaClDebugStubPortDone(int port);
+ #endif
+-#if defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ void OnOpenFdCountRefreshDone(int open_fd_count);
+-#endif // defined(OS_LINUX) || defined(OS_MACOSX)
++#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+
+ void OnCpuRefreshDone(double cpu_usage);
+ void OnSwappedMemRefreshDone(int64_t swapped_mem_bytes);
+@@ -209,10 +209,10 @@ class TaskGroup {
+ #if BUILDFLAG(ENABLE_NACL)
+ int nacl_debug_stub_port_;
+ #endif // BUILDFLAG(ENABLE_NACL)
+-#if defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ // The number of file descriptors currently open by the process.
+ int open_fd_count_;
+-#endif // defined(OS_LINUX) || defined(OS_MACOSX)
++#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ int idle_wakeups_per_second_;
+ bool gpu_memory_has_duplicates_;
+ bool is_backgrounded_;
diff --git a/devel/electron7/files/patch-chrome_browser_task__manager_sampling_task__group__sampler.cc b/devel/electron7/files/patch-chrome_browser_task__manager_sampling_task__group__sampler.cc
new file mode 100644
index 000000000000..84d20534a83b
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_browser_task__manager_sampling_task__group__sampler.cc
@@ -0,0 +1,72 @@
+--- chrome/browser/task_manager/sampling/task_group_sampler.cc.orig 2019-12-12 12:39:16 UTC
++++ chrome/browser/task_manager/sampling/task_group_sampler.cc
+@@ -43,9 +43,9 @@ TaskGroupSampler::TaskGroupSampler(
+ const OnCpuRefreshCallback& on_cpu_refresh,
+ const OnSwappedMemRefreshCallback& on_swapped_mem_refresh,
+ const OnIdleWakeupsCallback& on_idle_wakeups,
+-#if defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ const OnOpenFdCountCallback& on_open_fd_count,
+-#endif // defined(OS_LINUX) || defined(OS_MACOSX)
++#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ const OnProcessPriorityCallback& on_process_priority)
+ : process_(std::move(process)),
+ process_metrics_(CreateProcessMetrics(process_.Handle())),
+@@ -53,9 +53,9 @@ TaskGroupSampler::TaskGroupSampler(
+ on_cpu_refresh_callback_(on_cpu_refresh),
+ on_swapped_mem_refresh_callback_(on_swapped_mem_refresh),
+ on_idle_wakeups_callback_(on_idle_wakeups),
+-#if defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ on_open_fd_count_callback_(on_open_fd_count),
+-#endif // defined(OS_LINUX) || defined(OS_MACOSX)
++#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ on_process_priority_callback_(on_process_priority) {
+ DCHECK(blocking_pool_runner.get());
+
+@@ -86,7 +86,7 @@ void TaskGroupSampler::Refresh(int64_t refresh_flags)
+ on_swapped_mem_refresh_callback_);
+ }
+
+-#if defined(OS_MACOSX) || defined(OS_LINUX)
++#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+ if (TaskManagerObserver::IsResourceRefreshEnabled(REFRESH_TYPE_IDLE_WAKEUPS,
+ refresh_flags)) {
+ base::PostTaskAndReplyWithResult(
+@@ -95,9 +95,9 @@ void TaskGroupSampler::Refresh(int64_t refresh_flags)
+ base::Bind(&TaskGroupSampler::RefreshIdleWakeupsPerSecond, this),
+ on_idle_wakeups_callback_);
+ }
+-#endif // defined(OS_MACOSX) || defined(OS_LINUX)
++#endif // defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+
+-#if defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ if (TaskManagerObserver::IsResourceRefreshEnabled(REFRESH_TYPE_FD_COUNT,
+ refresh_flags)) {
+ base::PostTaskAndReplyWithResult(
+@@ -106,7 +106,7 @@ void TaskGroupSampler::Refresh(int64_t refresh_flags)
+ base::Bind(&TaskGroupSampler::RefreshOpenFdCount, this),
+ on_open_fd_count_callback_);
+ }
+-#endif // defined(OS_LINUX) || defined(OS_MACOSX)
++#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+
+ if (TaskManagerObserver::IsResourceRefreshEnabled(REFRESH_TYPE_PRIORITY,
+ refresh_flags)) {
+@@ -149,13 +149,13 @@ int TaskGroupSampler::RefreshIdleWakeupsPerSecond() {
+ return process_metrics_->GetIdleWakeupsPerSecond();
+ }
+
+-#if defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ int TaskGroupSampler::RefreshOpenFdCount() {
+ DCHECK(worker_pool_sequenced_checker_.CalledOnValidSequence());
+
+ return process_metrics_->GetOpenFdCount();
+ }
+-#endif // defined(OS_LINUX) || defined(OS_MACOSX)
++#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+
+ bool TaskGroupSampler::RefreshProcessPriority() {
+ DCHECK(worker_pool_sequenced_checker_.CalledOnValidSequence());
diff --git a/devel/electron7/files/patch-chrome_browser_task__manager_sampling_task__group__sampler.h b/devel/electron7/files/patch-chrome_browser_task__manager_sampling_task__group__sampler.h
new file mode 100644
index 000000000000..4417302d505e
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_browser_task__manager_sampling_task__group__sampler.h
@@ -0,0 +1,50 @@
+--- chrome/browser/task_manager/sampling/task_group_sampler.h.orig 2019-12-12 12:39:16 UTC
++++ chrome/browser/task_manager/sampling/task_group_sampler.h
+@@ -32,9 +32,9 @@ class TaskGroupSampler : public base::RefCountedThread
+ using OnCpuRefreshCallback = base::Callback<void(double)>;
+ using OnSwappedMemRefreshCallback = base::Callback<void(int64_t)>;
+ using OnIdleWakeupsCallback = base::Callback<void(int)>;
+-#if defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ using OnOpenFdCountCallback = base::Callback<void(int)>;
+-#endif // defined(OS_LINUX) || defined(OS_MACOSX)
++#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ using OnProcessPriorityCallback = base::Callback<void(bool)>;
+
+ TaskGroupSampler(
+@@ -43,9 +43,9 @@ class TaskGroupSampler : public base::RefCountedThread
+ const OnCpuRefreshCallback& on_cpu_refresh,
+ const OnSwappedMemRefreshCallback& on_memory_refresh,
+ const OnIdleWakeupsCallback& on_idle_wakeups,
+-#if defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ const OnOpenFdCountCallback& on_open_fd_count,
+-#endif // defined(OS_LINUX) || defined(OS_MACOSX)
++#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ const OnProcessPriorityCallback& on_process_priority);
+
+ // Refreshes the expensive process' stats (CPU usage, memory usage, and idle
+@@ -60,9 +60,9 @@ class TaskGroupSampler : public base::RefCountedThread
+ double RefreshCpuUsage();
+ int64_t RefreshSwappedMem();
+ int RefreshIdleWakeupsPerSecond();
+-#if defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ int RefreshOpenFdCount();
+-#endif // defined(OS_LINUX) || defined(OS_MACOSX)
++#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ bool RefreshProcessPriority();
+
+ // The process that holds the handle that we own so that we can use it for
+@@ -84,9 +84,9 @@ class TaskGroupSampler : public base::RefCountedThread
+ const OnCpuRefreshCallback on_cpu_refresh_callback_;
+ const OnSwappedMemRefreshCallback on_swapped_mem_refresh_callback_;
+ const OnIdleWakeupsCallback on_idle_wakeups_callback_;
+-#if defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ const OnOpenFdCountCallback on_open_fd_count_callback_;
+-#endif // defined(OS_LINUX) || defined(OS_MACOSX)
++#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ const OnProcessPriorityCallback on_process_priority_callback_;
+
+ // To assert we're running on the correct thread.
diff --git a/devel/electron7/files/patch-chrome_browser_task__manager_sampling_task__manager__impl.cc b/devel/electron7/files/patch-chrome_browser_task__manager_sampling_task__manager__impl.cc
new file mode 100644
index 000000000000..7ccfadda34ea
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_browser_task__manager_sampling_task__manager__impl.cc
@@ -0,0 +1,16 @@
+--- chrome/browser/task_manager/sampling/task_manager_impl.cc.orig 2019-12-12 12:39:16 UTC
++++ chrome/browser/task_manager/sampling/task_manager_impl.cc
+@@ -219,11 +219,11 @@ void TaskManagerImpl::GetUSERHandles(TaskId task_id,
+ }
+
+ int TaskManagerImpl::GetOpenFdCount(TaskId task_id) const {
+-#if defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ return GetTaskGroupByTaskId(task_id)->open_fd_count();
+ #else
+ return -1;
+-#endif // defined(OS_LINUX) || defined(OS_MACOSX)
++#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ }
+
+ bool TaskManagerImpl::IsTaskOnBackgroundedProcess(TaskId task_id) const {
diff --git a/devel/electron7/files/patch-chrome_browser_task__manager_task__manager__observer.h b/devel/electron7/files/patch-chrome_browser_task__manager_task__manager__observer.h
new file mode 100644
index 000000000000..bde636f87154
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_browser_task__manager_task__manager__observer.h
@@ -0,0 +1,16 @@
+--- chrome/browser/task_manager/task_manager_observer.h.orig 2019-12-12 12:39:16 UTC
++++ chrome/browser/task_manager/task_manager_observer.h
+@@ -43,11 +43,11 @@ enum RefreshType {
+ // or backgrounded.
+ REFRESH_TYPE_PRIORITY = 1 << 13,
+
+-#if defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ // For observers interested in getting the number of open file descriptors of
+ // processes.
+ REFRESH_TYPE_FD_COUNT = 1 << 14,
+-#endif // defined(OS_LINUX) || defined(OS_MACOSX)
++#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+
+ REFRESH_TYPE_KEEPALIVE_COUNT = 1 << 15,
+ REFRESH_TYPE_MEMORY_FOOTPRINT = 1 << 16,
diff --git a/devel/electron7/files/patch-chrome_browser_themes_theme__service__factory.cc b/devel/electron7/files/patch-chrome_browser_themes_theme__service__factory.cc
new file mode 100644
index 000000000000..019898710ed7
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_browser_themes_theme__service__factory.cc
@@ -0,0 +1,29 @@
+--- chrome/browser/themes/theme_service_factory.cc.orig 2019-12-12 12:39:16 UTC
++++ chrome/browser/themes/theme_service_factory.cc
+@@ -18,7 +18,7 @@
+
+ #if defined(OS_WIN)
+ #include "chrome/browser/themes/theme_service_win.h"
+-#elif defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#elif (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ #include "chrome/browser/themes/theme_service_aura_linux.h"
+ #include "ui/views/linux_ui/linux_ui.h"
+ #endif
+@@ -60,7 +60,7 @@ KeyedService* ThemeServiceFactory::BuildServiceInstanc
+ ThemeService* provider = NULL;
+ #if defined(OS_WIN)
+ provider = new ThemeServiceWin;
+-#elif defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#elif (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ provider = new ThemeServiceAuraLinux;
+ #else
+ provider = new ThemeService;
+@@ -72,7 +72,7 @@ KeyedService* ThemeServiceFactory::BuildServiceInstanc
+
+ void ThemeServiceFactory::RegisterProfilePrefs(
+ user_prefs::PrefRegistrySyncable* registry) {
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ bool default_uses_system_theme = false;
+
+ const views::LinuxUI* linux_ui = views::LinuxUI::instance();
diff --git a/devel/electron7/files/patch-chrome_browser_tracing_crash__service__uploader.cc b/devel/electron7/files/patch-chrome_browser_tracing_crash__service__uploader.cc
new file mode 100644
index 000000000000..e77ff7f337a5
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_browser_tracing_crash__service__uploader.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/tracing/crash_service_uploader.cc.orig 2019-12-12 12:39:16 UTC
++++ chrome/browser/tracing/crash_service_uploader.cc
+@@ -161,6 +161,8 @@ void TraceCrashServiceUploader::DoCompressOnBackground
+ const char product[] = "Chrome_Linux";
+ #elif defined(OS_ANDROID)
+ const char product[] = "Chrome_Android";
++#elif defined(OS_FREEBSD)
++ const char product[] = "Chrome_FreeBSD";
+ #else
+ #error Platform not supported.
+ #endif
diff --git a/devel/electron7/files/patch-chrome_browser_ui_browser__command__controller.cc b/devel/electron7/files/patch-chrome_browser_ui_browser__command__controller.cc
new file mode 100644
index 000000000000..80c67213df41
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_browser_ui_browser__command__controller.cc
@@ -0,0 +1,38 @@
+--- chrome/browser/ui/browser_command_controller.cc.orig 2019-12-12 12:39:16 UTC
++++ chrome/browser/ui/browser_command_controller.cc
+@@ -81,7 +81,7 @@
+ #include "chrome/browser/ui/browser_commands_chromeos.h"
+ #endif
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ #include "ui/base/ime/linux/text_edit_key_bindings_delegate_auralinux.h"
+ #endif
+
+@@ -251,7 +251,7 @@ bool BrowserCommandController::IsReservedCommandOrKey(
+ #endif
+ }
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ // If this key was registered by the user as a content editing hotkey, then
+ // it is not reserved.
+ ui::TextEditKeyBindingsDelegateAuraLinux* delegate =
+@@ -467,7 +467,7 @@ bool BrowserCommandController::ExecuteCommandWithDispo
+ break;
+ #endif
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ case IDC_MINIMIZE_WINDOW:
+ browser_->window()->Minimize();
+ break;
+@@ -925,7 +925,7 @@ void BrowserCommandController::InitCommandState() {
+ command_updater_.UpdateCommandEnabled(IDC_VISIT_DESKTOP_OF_LRU_USER_2, true);
+ command_updater_.UpdateCommandEnabled(IDC_VISIT_DESKTOP_OF_LRU_USER_3, true);
+ #endif
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ command_updater_.UpdateCommandEnabled(IDC_MINIMIZE_WINDOW, true);
+ command_updater_.UpdateCommandEnabled(IDC_MAXIMIZE_WINDOW, true);
+ command_updater_.UpdateCommandEnabled(IDC_RESTORE_WINDOW, true);
diff --git a/devel/electron7/files/patch-chrome_browser_ui_browser__view__prefs.cc b/devel/electron7/files/patch-chrome_browser_ui_browser__view__prefs.cc
new file mode 100644
index 000000000000..bceeb4330115
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_browser_ui_browser__view__prefs.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/ui/browser_view_prefs.cc.orig 2019-12-12 12:39:16 UTC
++++ chrome/browser/ui/browser_view_prefs.cc
+@@ -34,7 +34,7 @@ void RegisterBrowserViewLocalPrefs(PrefRegistrySimple*
+
+ void RegisterBrowserViewProfilePrefs(
+ user_prefs::PrefRegistrySyncable* registry) {
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ bool custom_frame_pref_default = false;
+ #if defined(USE_X11)
+ custom_frame_pref_default = ui::GetCustomFramePrefDefault();
+@@ -45,7 +45,7 @@ void RegisterBrowserViewProfilePrefs(
+ #endif
+ registry->RegisterBooleanPref(prefs::kUseCustomChromeFrame,
+ custom_frame_pref_default);
+-#endif // OS_LINUX && !OS_CHROMEOS
++#endif // (OS_LINUX && !OS_CHROMEOS) || defined(OS_BSD)
+ }
+
+ void MigrateBrowserTabStripPrefs(PrefService* prefs) {
diff --git a/devel/electron7/files/patch-chrome_browser_ui_exclusive__access_exclusive__access__bubble.cc b/devel/electron7/files/patch-chrome_browser_ui_exclusive__access_exclusive__access__bubble.cc
new file mode 100644
index 000000000000..bd5a484d2187
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_browser_ui_exclusive__access_exclusive__access__bubble.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/ui/exclusive_access/exclusive_access_bubble.cc.orig 2019-12-12 12:39:16 UTC
++++ chrome/browser/ui/exclusive_access/exclusive_access_bubble.cc
+@@ -16,7 +16,7 @@
+
+ // NOTE(koz): Linux doesn't use the thick shadowed border, so we add padding
+ // here.
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ const int ExclusiveAccessBubble::kPaddingPx = 8;
+ #else
+ const int ExclusiveAccessBubble::kPaddingPx = 15;
diff --git a/devel/electron7/files/patch-chrome_browser_ui_input__method_input__method__engine__base.cc b/devel/electron7/files/patch-chrome_browser_ui_input__method_input__method__engine__base.cc
new file mode 100644
index 000000000000..696a04bbeacd
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_browser_ui_input__method_input__method__engine__base.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/ui/input_method/input_method_engine_base.cc.orig 2019-12-12 12:39:16 UTC
++++ chrome/browser/ui/input_method/input_method_engine_base.cc
+@@ -30,7 +30,7 @@
+ #include "ui/base/ime/chromeos/ime_keymap.h"
+ #elif defined(OS_WIN)
+ #include "ui/events/keycodes/keyboard_codes_win.h"
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ #include "ui/events/keycodes/keyboard_codes_posix.h"
+ #endif
+
diff --git a/devel/electron7/files/patch-chrome_browser_ui_libgtkui_print__dialog__gtk.cc b/devel/electron7/files/patch-chrome_browser_ui_libgtkui_print__dialog__gtk.cc
new file mode 100644
index 000000000000..82f821073e38
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_browser_ui_libgtkui_print__dialog__gtk.cc
@@ -0,0 +1,10 @@
+--- chrome/browser/ui/libgtkui/print_dialog_gtk.cc.orig 2019-12-12 12:39:16 UTC
++++ chrome/browser/ui/libgtkui/print_dialog_gtk.cc
+@@ -336,6 +336,7 @@ void PrintDialogGtk::ShowDialog(
+ // Since we only generate PDF, only show printers that support PDF.
+ // TODO(thestig) Add more capabilities to support?
+ GtkPrintCapabilities cap = static_cast<GtkPrintCapabilities>(
++ GTK_PRINT_CAPABILITY_GENERATE_PS |
+ GTK_PRINT_CAPABILITY_GENERATE_PDF |
+ GTK_PRINT_CAPABILITY_PAGE_SET |
+ GTK_PRINT_CAPABILITY_COPIES |
diff --git a/devel/electron7/files/patch-chrome_browser_ui_sad__tab.cc b/devel/electron7/files/patch-chrome_browser_ui_sad__tab.cc
new file mode 100644
index 000000000000..74586cbe7c8a
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_browser_ui_sad__tab.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/ui/sad_tab.cc.orig 2019-12-12 12:39:17 UTC
++++ chrome/browser/ui/sad_tab.cc
+@@ -181,7 +181,7 @@ std::vector<int> SadTab::GetSubMessages() {
+ // Only show incognito suggestion if not already in Incognito mode.
+ if (!web_contents_->GetBrowserContext()->IsOffTheRecord())
+ message_ids.insert(message_ids.begin(), IDS_SAD_TAB_RELOAD_INCOGNITO);
+-#if defined(OS_MACOSX) || defined(OS_LINUX)
++#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+ // Note: on macOS, Linux and ChromeOS, the first bullet is either one of
+ // IDS_SAD_TAB_RELOAD_CLOSE_TABS or IDS_SAD_TAB_RELOAD_CLOSE_NOTABS
+ // followed by one of the above suggestions.
diff --git a/devel/electron7/files/patch-chrome_browser_ui_startup_bad__flags__prompt.cc b/devel/electron7/files/patch-chrome_browser_ui_startup_bad__flags__prompt.cc
new file mode 100644
index 000000000000..f551b428b097
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_browser_ui_startup_bad__flags__prompt.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/ui/startup/bad_flags_prompt.cc.orig 2019-12-12 12:39:17 UTC
++++ chrome/browser/ui/startup/bad_flags_prompt.cc
+@@ -89,7 +89,7 @@ static const char* kBadFlags[] = {
+ extensions::switches::kExtensionsOnChromeURLs,
+ #endif
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ // Speech dispatcher is buggy, it can crash and it can make Chrome freeze.
+ // http://crbug.com/327295
+ switches::kEnableSpeechDispatcher,
diff --git a/devel/electron7/files/patch-chrome_browser_ui_startup_startup__browser__creator.cc b/devel/electron7/files/patch-chrome_browser_ui_startup_startup__browser__creator.cc
new file mode 100644
index 000000000000..d4539b6438b5
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_browser_ui_startup_startup__browser__creator.cc
@@ -0,0 +1,31 @@
+--- chrome/browser/ui/startup/startup_browser_creator.cc.orig 2019-12-12 12:39:17 UTC
++++ chrome/browser/ui/startup/startup_browser_creator.cc
+@@ -85,7 +85,7 @@
+ #include "chrome/browser/ui/user_manager.h"
+ #endif
+
+-#if defined(TOOLKIT_VIEWS) && defined(OS_LINUX)
++#if defined(TOOLKIT_VIEWS) && (defined(OS_LINUX) || defined(OS_BSD))
+ #include "ui/events/devices/x11/touch_factory_x11.h" // nogncheck
+ #endif
+
+@@ -295,7 +295,7 @@ bool IsSilentLaunchEnabled(const base::CommandLine& co
+ // true, send a warning if guest mode is requested but not allowed by policy.
+ bool IsGuestModeEnforced(const base::CommandLine& command_line,
+ bool show_warning) {
+-#if defined(OS_LINUX) || defined(OS_WIN) || defined(OS_MACOSX)
++#if defined(OS_LINUX) || defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_BSD)
+ PrefService* service = g_browser_process->local_state();
+ DCHECK(service);
+
+@@ -666,8 +666,10 @@ bool StartupBrowserCreator::ProcessCmdLineImpl(
+ }
+ #endif // OS_CHROMEOS
+
++#if 0 /* XXX */
+ #if defined(TOOLKIT_VIEWS) && defined(USE_X11)
+ ui::TouchFactory::SetTouchDeviceListFromCommandLine();
++#endif
+ #endif
+
+ #if defined(OS_MACOSX)
diff --git a/devel/electron7/files/patch-chrome_browser_ui_tab__helpers.cc b/devel/electron7/files/patch-chrome_browser_ui_tab__helpers.cc
new file mode 100644
index 000000000000..24c4c8357ebe
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_browser_ui_tab__helpers.cc
@@ -0,0 +1,25 @@
+--- chrome/browser/ui/tab_helpers.cc.orig 2019-12-12 12:39:17 UTC
++++ chrome/browser/ui/tab_helpers.cc
+@@ -121,7 +121,7 @@
+ #include "components/zoom/zoom_controller.h"
+ #endif // defined(OS_ANDROID)
+
+-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+ #include "chrome/browser/ui/blocked_content/framebust_block_tab_helper.h"
+ #include "chrome/browser/ui/hats/hats_helper.h"
+ #endif
+@@ -313,11 +313,11 @@ void TabHelpers::AttachTabHelpers(WebContents* web_con
+ #endif
+
+ #if defined(OS_WIN) || defined(OS_MACOSX) || \
+- (defined(OS_LINUX) && !defined(OS_CHROMEOS))
++ (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ metrics::DesktopSessionDurationObserver::CreateForWebContents(web_contents);
+ #endif
+
+-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+ if (base::FeatureList::IsEnabled(
+ features::kHappinessTrackingSurveysForDesktop) ||
+ base::FeatureList::IsEnabled(
diff --git a/devel/electron7/files/patch-chrome_browser_ui_task__manager_task__manager__columns.cc b/devel/electron7/files/patch-chrome_browser_ui_task__manager_task__manager__columns.cc
new file mode 100644
index 000000000000..53824718b6c0
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_browser_ui_task__manager_task__manager__columns.cc
@@ -0,0 +1,15 @@
+--- chrome/browser/ui/task_manager/task_manager_columns.cc.orig 2019-12-12 12:39:17 UTC
++++ chrome/browser/ui/task_manager/task_manager_columns.cc
+@@ -93,10 +93,10 @@ const TableColumnData kColumns[] = {
+ base::size("100000") * kCharWidth, -1, true, false, false},
+ #endif
+
+-#if defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ {IDS_TASK_MANAGER_OPEN_FD_COUNT_COLUMN, ui::TableColumn::RIGHT, -1, 0,
+ base::size("999") * kCharWidth, -1, true, false, false},
+-#endif // defined(OS_LINUX) || defined(OS_MACOSX)
++#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ {IDS_TASK_MANAGER_PROCESS_PRIORITY_COLUMN, ui::TableColumn::LEFT, -1, 0,
+ base::size("background") * kCharWidth, -1, true, true, false},
+ {IDS_TASK_MANAGER_KEEPALIVE_COUNT_COLUMN, ui::TableColumn::RIGHT, -1, 0,
diff --git a/devel/electron7/files/patch-chrome_browser_ui_task__manager_task__manager__table__model.cc b/devel/electron7/files/patch-chrome_browser_ui_task__manager_task__manager__table__model.cc
new file mode 100644
index 000000000000..3a9af86a444c
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_browser_ui_task__manager_task__manager__table__model.cc
@@ -0,0 +1,50 @@
+--- chrome/browser/ui/task_manager/task_manager_table_model.cc.orig 2019-12-12 12:39:17 UTC
++++ chrome/browser/ui/task_manager/task_manager_table_model.cc
+@@ -451,13 +451,13 @@ base::string16 TaskManagerTableModel::GetText(int row,
+ ? stringifier_->backgrounded_string()
+ : stringifier_->foregrounded_string();
+
+-#if defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ case IDS_TASK_MANAGER_OPEN_FD_COUNT_COLUMN: {
+ const int fd_count = observed_task_manager()->GetOpenFdCount(tasks_[row]);
+ return fd_count >= 0 ? base::FormatNumber(fd_count)
+ : stringifier_->n_a_string();
+ }
+-#endif // defined(OS_LINUX) || defined(OS_MACOSX)
++#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+
+ case IDS_TASK_MANAGER_KEEPALIVE_COUNT_COLUMN: {
+ return stringifier_->GetKeepaliveCountText(
+@@ -617,7 +617,7 @@ int TaskManagerTableModel::CompareValues(int row1,
+ return BooleanCompare(is_proc1_bg, is_proc2_bg);
+ }
+
+-#if defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ case IDS_TASK_MANAGER_OPEN_FD_COUNT_COLUMN: {
+ const int proc1_fd_count =
+ observed_task_manager()->GetOpenFdCount(tasks_[row1]);
+@@ -625,7 +625,7 @@ int TaskManagerTableModel::CompareValues(int row1,
+ observed_task_manager()->GetOpenFdCount(tasks_[row2]);
+ return ValueCompare(proc1_fd_count, proc2_fd_count);
+ }
+-#endif // defined(OS_LINUX) || defined(OS_MACOSX)
++#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+
+ default:
+ NOTREACHED();
+@@ -791,11 +791,11 @@ void TaskManagerTableModel::UpdateRefreshTypes(int col
+ type = REFRESH_TYPE_KEEPALIVE_COUNT;
+ break;
+
+-#if defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ case IDS_TASK_MANAGER_OPEN_FD_COUNT_COLUMN:
+ type = REFRESH_TYPE_FD_COUNT;
+ break;
+-#endif // defined(OS_LINUX) || defined(OS_MACOSX)
++#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+
+ default:
+ NOTREACHED();
diff --git a/devel/electron7/files/patch-chrome_browser_ui_toolbar_app__menu__model.cc b/devel/electron7/files/patch-chrome_browser_ui_toolbar_app__menu__model.cc
new file mode 100644
index 000000000000..e4992aae421a
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_browser_ui_toolbar_app__menu__model.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/ui/toolbar/app_menu_model.cc.orig 2019-12-12 12:39:17 UTC
++++ chrome/browser/ui/toolbar/app_menu_model.cc
+@@ -685,7 +685,7 @@ bool AppMenuModel::IsCommandIdVisible(int command_id)
+ return app_menu_icon_controller_->GetTypeAndSeverity().type ==
+ AppMenuIconController::IconType::UPGRADE_NOTIFICATION;
+ }
+-#if !defined(OS_LINUX) || defined(USE_AURA)
++#if (!defined(OS_LINUX) && !defined(OS_BSD)) || defined(USE_AURA)
+ case IDC_BOOKMARK_THIS_TAB:
+ return !chrome::ShouldRemoveBookmarkThisTabUI(browser_->profile());
+ case IDC_BOOKMARK_ALL_TABS:
diff --git a/devel/electron7/files/patch-chrome_browser_ui_ui__features.cc b/devel/electron7/files/patch-chrome_browser_ui_ui__features.cc
new file mode 100644
index 000000000000..e6ee4d1ba4c8
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_browser_ui_ui__features.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/ui/ui_features.cc.orig 2019-12-12 12:39:17 UTC
++++ chrome/browser/ui/ui_features.cc
+@@ -81,7 +81,7 @@ const base::Feature kWebFooterExperiment{"WebFooterExp
+ const base::Feature kWebUITabStrip{"WebUITabStrip",
+ base::FEATURE_DISABLED_BY_DEFAULT};
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ constexpr base::Feature kEnableDbusAndX11StatusIcons{
+ "EnableDbusAndX11StatusIcons", base::FEATURE_ENABLED_BY_DEFAULT};
+ #endif
diff --git a/devel/electron7/files/patch-chrome_browser_ui_ui__features.h b/devel/electron7/files/patch-chrome_browser_ui_ui__features.h
new file mode 100644
index 000000000000..623d1ee95dc0
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_browser_ui_ui__features.h
@@ -0,0 +1,11 @@
+--- chrome/browser/ui/ui_features.h.orig 2019-12-12 12:39:17 UTC
++++ chrome/browser/ui/ui_features.h
+@@ -46,7 +46,7 @@ extern const base::Feature kWebFooterExperiment;
+
+ extern const base::Feature kWebUITabStrip;
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ extern const base::Feature kEnableDbusAndX11StatusIcons;
+ #endif
+
diff --git a/devel/electron7/files/patch-chrome_browser_ui_views_accelerator__table.cc b/devel/electron7/files/patch-chrome_browser_ui_views_accelerator__table.cc
new file mode 100644
index 000000000000..39375875559b
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_browser_ui_views_accelerator__table.cc
@@ -0,0 +1,46 @@
+--- chrome/browser/ui/views/accelerator_table.cc.orig 2019-12-12 12:39:17 UTC
++++ chrome/browser/ui/views/accelerator_table.cc
+@@ -51,7 +51,7 @@ const AcceleratorMapping kAcceleratorMap[] = {
+ {ui::VKEY_S, ui::EF_PLATFORM_ACCELERATOR, IDC_SAVE_PAGE},
+ {ui::VKEY_9, ui::EF_PLATFORM_ACCELERATOR, IDC_SELECT_LAST_TAB},
+ {ui::VKEY_NUMPAD9, ui::EF_PLATFORM_ACCELERATOR, IDC_SELECT_LAST_TAB},
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ {ui::VKEY_9, ui::EF_ALT_DOWN, IDC_SELECT_LAST_TAB},
+ {ui::VKEY_NUMPAD9, ui::EF_ALT_DOWN, IDC_SELECT_LAST_TAB},
+ {ui::VKEY_NEXT, ui::EF_CONTROL_DOWN | ui::EF_SHIFT_DOWN, IDC_MOVE_TAB_NEXT},
+@@ -81,7 +81,7 @@ const AcceleratorMapping kAcceleratorMap[] = {
+ {ui::VKEY_NUMPAD7, ui::EF_PLATFORM_ACCELERATOR, IDC_SELECT_TAB_6},
+ {ui::VKEY_8, ui::EF_PLATFORM_ACCELERATOR, IDC_SELECT_TAB_7},
+ {ui::VKEY_NUMPAD8, ui::EF_PLATFORM_ACCELERATOR, IDC_SELECT_TAB_7},
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ {ui::VKEY_1, ui::EF_ALT_DOWN, IDC_SELECT_TAB_0},
+ {ui::VKEY_NUMPAD1, ui::EF_ALT_DOWN, IDC_SELECT_TAB_0},
+ {ui::VKEY_2, ui::EF_ALT_DOWN, IDC_SELECT_TAB_1},
+@@ -99,7 +99,7 @@ const AcceleratorMapping kAcceleratorMap[] = {
+ {ui::VKEY_8, ui::EF_ALT_DOWN, IDC_SELECT_TAB_7},
+ {ui::VKEY_NUMPAD8, ui::EF_ALT_DOWN, IDC_SELECT_TAB_7},
+ {ui::VKEY_BROWSER_FAVORITES, ui::EF_NONE, IDC_SHOW_BOOKMARK_BAR},
+-#endif // OS_LINUX && !OS_CHROMEOS
++#endif // (OS_LINUX || OS_BSD) && !OS_CHROMEOS
+ {ui::VKEY_B, ui::EF_SHIFT_DOWN | ui::EF_PLATFORM_ACCELERATOR,
+ IDC_SHOW_BOOKMARK_BAR},
+ {ui::VKEY_OEM_MINUS, ui::EF_PLATFORM_ACCELERATOR, IDC_ZOOM_MINUS},
+@@ -125,14 +125,14 @@ const AcceleratorMapping kAcceleratorMap[] = {
+ IDC_SHOW_AVATAR_MENU},
+
+ // Platform-specific key maps.
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ {ui::VKEY_BROWSER_BACK, ui::EF_NONE, IDC_BACK},
+ {ui::VKEY_BROWSER_FORWARD, ui::EF_NONE, IDC_FORWARD},
+ {ui::VKEY_BROWSER_HOME, ui::EF_NONE, IDC_HOME},
+ {ui::VKEY_BROWSER_REFRESH, ui::EF_NONE, IDC_RELOAD},
+ {ui::VKEY_BROWSER_REFRESH, ui::EF_CONTROL_DOWN, IDC_RELOAD_BYPASSING_CACHE},
+ {ui::VKEY_BROWSER_REFRESH, ui::EF_SHIFT_DOWN, IDC_RELOAD_BYPASSING_CACHE},
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+
+ #if defined(OS_CHROMEOS)
+ // On Chrome OS, VKEY_BROWSER_SEARCH is handled in Ash.
diff --git a/devel/electron7/files/patch-chrome_browser_ui_views_chrome__browser__main__extra__parts__views.cc b/devel/electron7/files/patch-chrome_browser_ui_views_chrome__browser__main__extra__parts__views.cc
new file mode 100644
index 000000000000..4db4e1857b8b
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_browser_ui_views_chrome__browser__main__extra__parts__views.cc
@@ -0,0 +1,38 @@
+--- chrome/browser/ui/views/chrome_browser_main_extra_parts_views.cc.orig 2019-12-12 12:39:17 UTC
++++ chrome/browser/ui/views/chrome_browser_main_extra_parts_views.cc
+@@ -36,7 +36,7 @@
+ #include "ui/wm/core/wm_state.h"
+ #endif // defined(USE_AURA)
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS)
+ #include <sys/stat.h>
+ #include <sys/types.h>
+ #include <unistd.h>
+@@ -46,7 +46,7 @@
+ #include "chrome/grit/generated_resources.h"
+ #include "content/public/common/content_switches.h"
+ #include "ui/base/l10n/l10n_util.h"
+-#endif // defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#endif // (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS)
+
+ // This connector is used in ui_devtools's TracingAgent to hook up with the
+ // tracing service.
+@@ -109,7 +109,7 @@ void ChromeBrowserMainExtraPartsViews::PreProfileInit(
+ devtools_server_->tracing_agent());
+ }
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS)
+ // On the Linux desktop, we want to prevent the user from logging in as root,
+ // so that we don't destroy the profile. Now that we have some minimal ui
+ // initialized, check to see if we're running as root and bail if we are.
+@@ -140,7 +140,7 @@ void ChromeBrowserMainExtraPartsViews::PreProfileInit(
+ base::RunLoop().RunUntilIdle();
+
+ exit(EXIT_FAILURE);
+-#endif // defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#endif // (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS)
+ }
+
+ void ChromeBrowserMainExtraPartsViews::PostBrowserStart() {
diff --git a/devel/electron7/files/patch-chrome_browser_ui_views_chrome__views__delegate.h b/devel/electron7/files/patch-chrome_browser_ui_views_chrome__views__delegate.h
new file mode 100644
index 000000000000..24026f54982a
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_browser_ui_views_chrome__views__delegate.h
@@ -0,0 +1,11 @@
+--- chrome/browser/ui/views/chrome_views_delegate.h.orig 2019-12-12 12:39:17 UTC
++++ chrome/browser/ui/views/chrome_views_delegate.h
+@@ -44,7 +44,7 @@ class ChromeViewsDelegate : public views::ViewsDelegat
+ HICON GetSmallWindowIcon() const override;
+ int GetAppbarAutohideEdges(HMONITOR monitor,
+ base::OnceClosure callback) override;
+-#elif defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#elif (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ gfx::ImageSkia* GetDefaultWindowIcon() const override;
+ bool WindowManagerProvidesTitleBar(bool maximized) override;
+ #endif
diff --git a/devel/electron7/files/patch-chrome_browser_ui_views_first__run__dialog.cc b/devel/electron7/files/patch-chrome_browser_ui_views_first__run__dialog.cc
new file mode 100644
index 000000000000..01566bbe0936
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_browser_ui_views_first__run__dialog.cc
@@ -0,0 +1,24 @@
+--- chrome/browser/ui/views/first_run_dialog.cc.orig 2019-12-12 12:39:17 UTC
++++ chrome/browser/ui/views/first_run_dialog.cc
+@@ -37,8 +37,10 @@
+ namespace {
+
+ void InitCrashReporterIfEnabled(bool enabled) {
++#if !defined(OS_BSD)
+ if (enabled)
+ breakpad::InitCrashReporter(std::string());
++#endif
+ }
+
+ } // namespace
+@@ -108,8 +110,10 @@ std::unique_ptr<views::View> FirstRunDialog::CreateExt
+ bool FirstRunDialog::Accept() {
+ GetWidget()->Hide();
+
++#if !defined(OS_BSD)
+ ChangeMetricsReportingStateWithReply(report_crashes_->GetChecked(),
+ base::Bind(&InitCrashReporterIfEnabled));
++#endif
+
+ if (make_default_->GetChecked())
+ shell_integration::SetAsDefaultBrowser();
diff --git a/devel/electron7/files/patch-chrome_browser_ui_views_frame_browser__frame.cc b/devel/electron7/files/patch-chrome_browser_ui_views_frame_browser__frame.cc
new file mode 100644
index 000000000000..1c46fc482d3b
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_browser_ui_views_frame_browser__frame.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/ui/views/frame/browser_frame.cc.orig 2019-12-12 12:39:17 UTC
++++ chrome/browser/ui/views/frame/browser_frame.cc
+@@ -46,7 +46,7 @@
+ namespace {
+
+ bool IsUsingGtkTheme(Profile* profile) {
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ return ThemeServiceFactory::GetForProfile(profile)->UsingSystemTheme();
+ #else
+ return false;
diff --git a/devel/electron7/files/patch-chrome_browser_ui_views_frame_browser__non__client__frame__view__factory__views.cc b/devel/electron7/files/patch-chrome_browser_ui_views_frame_browser__non__client__frame__view__factory__views.cc
new file mode 100644
index 000000000000..4c5dc67b00d2
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_browser_ui_views_frame_browser__non__client__frame__view__factory__views.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/ui/views/frame/browser_non_client_frame_view_factory_views.cc.orig 2019-12-12 12:39:17 UTC
++++ chrome/browser/ui/views/frame/browser_non_client_frame_view_factory_views.cc
+@@ -13,7 +13,7 @@
+ #include "chrome/browser/ui/views/frame/glass_browser_frame_view.h"
+ #endif
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS)
+ #include "ui/views/linux_ui/linux_ui.h"
+ #endif
+
+@@ -32,7 +32,7 @@ OpaqueBrowserFrameView* CreateOpaqueBrowserFrameView(
+ BrowserView* browser_view) {
+ #if BUILDFLAG(ENABLE_NATIVE_WINDOW_NAV_BUTTONS)
+ std::unique_ptr<views::NavButtonProvider> nav_button_provider;
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ if (ThemeServiceFactory::GetForProfile(browser_view->browser()->profile())
+ ->UsingSystemTheme() &&
+ views::LinuxUI::instance()) {
diff --git a/devel/electron7/files/patch-chrome_browser_ui_views_frame_browser__view.cc b/devel/electron7/files/patch-chrome_browser_ui_views_frame_browser__view.cc
new file mode 100644
index 000000000000..9614c93134ff
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_browser_ui_views_frame_browser__view.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/ui/views/frame/browser_view.cc.orig 2019-12-12 12:39:17 UTC
++++ chrome/browser/ui/views/frame/browser_view.cc
+@@ -1581,7 +1581,7 @@ void BrowserView::UserChangedTheme(BrowserThemeChangeT
+ const bool should_use_native_frame = frame_->ShouldUseNativeFrame();
+
+ bool must_regenerate_frame;
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ // GTK and user theme changes can both change frame buttons, so the frame
+ // always needs to be regenerated on Linux.
+ must_regenerate_frame = true;
diff --git a/devel/electron7/files/patch-chrome_browser_ui_views_frame_opaque__browser__frame__view.cc b/devel/electron7/files/patch-chrome_browser_ui_views_frame_opaque__browser__frame__view.cc
new file mode 100644
index 000000000000..3740da714edf
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_browser_ui_views_frame_opaque__browser__frame__view.cc
@@ -0,0 +1,29 @@
+--- chrome/browser/ui/views/frame/opaque_browser_frame_view.cc.orig 2019-12-12 12:39:17 UTC
++++ chrome/browser/ui/views/frame/opaque_browser_frame_view.cc
+@@ -47,7 +47,7 @@
+ #include "ui/views/window/vector_icons/vector_icons.h"
+ #include "ui/views/window/window_shape.h"
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include "ui/views/controls/menu/menu_runner.h"
+ #endif
+
+@@ -352,7 +352,7 @@ void OpaqueBrowserFrameView::ButtonPressed(views::Butt
+ void OpaqueBrowserFrameView::OnMenuButtonClicked(views::Button* source,
+ const gfx::Point& point,
+ const ui::Event* event) {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ views::MenuRunner menu_runner(frame()->GetSystemMenuModel(),
+ views::MenuRunner::HAS_MNEMONICS);
+ menu_runner.RunMenuAt(
+@@ -478,7 +478,7 @@ bool OpaqueBrowserFrameView::EverHasVisibleBackgroundT
+
+ OpaqueBrowserFrameView::FrameButtonStyle
+ OpaqueBrowserFrameView::GetFrameButtonStyle() const {
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ return FrameButtonStyle::kMdButton;
+ #else
+ return FrameButtonStyle::kImageButton;
diff --git a/devel/electron7/files/patch-chrome_browser_ui_views_frame_opaque__browser__frame__view__platform__specific.cc b/devel/electron7/files/patch-chrome_browser_ui_views_frame_opaque__browser__frame__view__platform__specific.cc
new file mode 100644
index 000000000000..17cf83c8020a
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_browser_ui_views_frame_opaque__browser__frame__view__platform__specific.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/ui/views/frame/opaque_browser_frame_view_platform_specific.cc.orig 2019-12-12 12:39:17 UTC
++++ chrome/browser/ui/views/frame/opaque_browser_frame_view_platform_specific.cc
+@@ -6,7 +6,7 @@
+
+ #include "build/build_config.h"
+
+-#if !defined(OS_LINUX)
++#if !defined(OS_LINUX) && !defined(OS_FREEBSD)
+
+ // static
+ std::unique_ptr<OpaqueBrowserFrameViewPlatformSpecific>
diff --git a/devel/electron7/files/patch-chrome_browser_ui_views_frame_system__menu__model__builder.cc b/devel/electron7/files/patch-chrome_browser_ui_views_frame_system__menu__model__builder.cc
new file mode 100644
index 000000000000..fbf8ea2f0ede
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_browser_ui_views_frame_system__menu__model__builder.cc
@@ -0,0 +1,29 @@
+--- chrome/browser/ui/views/frame/system_menu_model_builder.cc.orig 2019-12-12 12:39:17 UTC
++++ chrome/browser/ui/views/frame/system_menu_model_builder.cc
+@@ -80,7 +80,7 @@ void SystemMenuModelBuilder::BuildMenu(ui::SimpleMenuM
+
+ void SystemMenuModelBuilder::BuildSystemMenuForBrowserWindow(
+ ui::SimpleMenuModel* model) {
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ model->AddItemWithStringId(IDC_MINIMIZE_WINDOW, IDS_MINIMIZE_WINDOW_MENU);
+ model->AddItemWithStringId(IDC_MAXIMIZE_WINDOW, IDS_MAXIMIZE_WINDOW_MENU);
+ model->AddItemWithStringId(IDC_RESTORE_WINDOW, IDS_RESTORE_WINDOW_MENU);
+@@ -93,7 +93,7 @@ void SystemMenuModelBuilder::BuildSystemMenuForBrowser
+ model->AddSeparator(ui::NORMAL_SEPARATOR);
+ model->AddItemWithStringId(IDC_TASK_MANAGER, IDS_TASK_MANAGER);
+ }
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ model->AddSeparator(ui::NORMAL_SEPARATOR);
+ model->AddCheckItemWithStringId(IDC_USE_SYSTEM_TITLE_BAR,
+ IDS_SHOW_WINDOW_DECORATIONS_MENU);
+@@ -131,7 +131,7 @@ void SystemMenuModelBuilder::BuildSystemMenuForAppOrPo
+ model->AddSeparator(ui::NORMAL_SEPARATOR);
+ model->AddItemWithStringId(IDC_TASK_MANAGER, IDS_TASK_MANAGER);
+ }
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ model->AddSeparator(ui::NORMAL_SEPARATOR);
+ model->AddItemWithStringId(IDC_CLOSE_WINDOW, IDS_CLOSE);
+ #endif
diff --git a/devel/electron7/files/patch-chrome_browser_ui_views_frame_system__menu__model__delegate.cc b/devel/electron7/files/patch-chrome_browser_ui_views_frame_system__menu__model__delegate.cc
new file mode 100644
index 000000000000..a5520c3b0fe1
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_browser_ui_views_frame_system__menu__model__delegate.cc
@@ -0,0 +1,29 @@
+--- chrome/browser/ui/views/frame/system_menu_model_delegate.cc.orig 2019-12-12 12:39:17 UTC
++++ chrome/browser/ui/views/frame/system_menu_model_delegate.cc
+@@ -15,7 +15,7 @@
+ #include "components/sessions/core/tab_restore_service.h"
+ #include "ui/base/l10n/l10n_util.h"
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ #include "chrome/common/pref_names.h"
+ #include "components/prefs/pref_service.h"
+ #endif
+@@ -30,7 +30,7 @@ SystemMenuModelDelegate::SystemMenuModelDelegate(
+ SystemMenuModelDelegate::~SystemMenuModelDelegate() {}
+
+ bool SystemMenuModelDelegate::IsCommandIdChecked(int command_id) const {
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ if (command_id == IDC_USE_SYSTEM_TITLE_BAR) {
+ PrefService* prefs = browser_->profile()->GetPrefs();
+ return !prefs->GetBoolean(prefs::kUseCustomChromeFrame);
+@@ -44,7 +44,7 @@ bool SystemMenuModelDelegate::IsCommandIdEnabled(int c
+ }
+
+ bool SystemMenuModelDelegate::IsCommandIdVisible(int command_id) const {
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ bool is_maximized = browser_->window()->IsMaximized();
+ switch (command_id) {
+ case IDC_MAXIMIZE_WINDOW:
diff --git a/devel/electron7/files/patch-chrome_browser_ui_views_hung__renderer__view.cc b/devel/electron7/files/patch-chrome_browser_ui_views_hung__renderer__view.cc
new file mode 100644
index 000000000000..d3dc57392619
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_browser_ui_views_hung__renderer__view.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/ui/views/hung_renderer_view.cc.orig 2019-12-12 12:39:18 UTC
++++ chrome/browser/ui/views/hung_renderer_view.cc
+@@ -390,7 +390,7 @@ bool HungRendererDialogView::Cancel() {
+ content::RenderProcessHost* rph =
+ hung_pages_table_model_->GetRenderWidgetHost()->GetProcess();
+ if (rph) {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // A generic |CrashDumpHungChildProcess()| is not implemented for Linux.
+ // Instead we send an explicit IPC to crash on the renderer's IO thread.
+ rph->ForceCrash();
diff --git a/devel/electron7/files/patch-chrome_browser_ui_views_tabs_new__tab__button.cc b/devel/electron7/files/patch-chrome_browser_ui_views_tabs_new__tab__button.cc
new file mode 100644
index 000000000000..7e89698d22f0
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_browser_ui_views_tabs_new__tab__button.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/ui/views/tabs/new_tab_button.cc.orig 2019-12-12 12:39:18 UTC
++++ chrome/browser/ui/views/tabs/new_tab_button.cc
+@@ -69,7 +69,7 @@ const gfx::Size NewTabButton::kButtonSize{28, 28};
+ NewTabButton::NewTabButton(TabStrip* tab_strip, views::ButtonListener* listener)
+ : views::ImageButton(listener), tab_strip_(tab_strip) {
+ set_animate_on_state_change(true);
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ set_triggerable_event_flags(triggerable_event_flags() |
+ ui::EF_MIDDLE_MOUSE_BUTTON);
+ #endif
diff --git a/devel/electron7/files/patch-chrome_browser_ui_views_tabs_tab.cc b/devel/electron7/files/patch-chrome_browser_ui_views_tabs_tab.cc
new file mode 100644
index 000000000000..ed744a5a634a
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_browser_ui_views_tabs_tab.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/ui/views/tabs/tab.cc.orig 2019-12-12 12:39:18 UTC
++++ chrome/browser/ui/views/tabs/tab.cc
+@@ -512,7 +512,7 @@ void Tab::OnMouseCaptureLost() {
+ void Tab::OnMouseMoved(const ui::MouseEvent& event) {
+ tab_style_->SetHoverLocation(event.location());
+ controller_->OnMouseEventInTab(this, event);
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ MaybeUpdateHoverStatus(event);
+ #endif
+ }
+@@ -522,7 +522,7 @@ void Tab::OnMouseEntered(const ui::MouseEvent& event)
+ }
+
+ void Tab::MaybeUpdateHoverStatus(const ui::MouseEvent& event) {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Move the hit test area for hovering up so that it is not overlapped by tab
+ // hover cards when they are shown.
+ // TODO(crbug/978134): Once Linux/CrOS widget transparency is solved, remove
diff --git a/devel/electron7/files/patch-chrome_browser_ui_views_tabs_tab__drag__controller.cc b/devel/electron7/files/patch-chrome_browser_ui_views_tabs_tab__drag__controller.cc
new file mode 100644
index 000000000000..7f4d37eedbed
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_browser_ui_views_tabs_tab__drag__controller.cc
@@ -0,0 +1,29 @@
+--- chrome/browser/ui/views/tabs/tab_drag_controller.cc.orig 2019-12-12 12:39:18 UTC
++++ chrome/browser/ui/views/tabs/tab_drag_controller.cc
+@@ -443,7 +443,7 @@ void TabDragController::Init(TabDragContext* source_co
+ // synchronous on desktop Linux, so use that.
+ // - Chrome OS
+ // Releasing capture on Ash cancels gestures so avoid it.
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ can_release_capture_ = false;
+ #endif
+ start_point_in_screen_ = gfx::Point(source_tab_offset, mouse_offset.y());
+@@ -865,7 +865,7 @@ TabDragController::DragBrowserToNewTabStrip(TabDragCon
+ else
+ SetCapture(target_context);
+
+-#if !defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if (!defined(OS_LINUX) || defined(OS_CHROMEOS)) && !defined(OS_BSD)
+ // EndMoveLoop is going to snap the window back to its original location.
+ // Hide it so users don't see this. Hiding a window in Linux aura causes
+ // it to lose capture so skip it.
+@@ -2003,7 +2003,7 @@ TabDragController::Liveness TabDragController::GetLoca
+ if (dragged_window)
+ exclude.insert(dragged_window);
+ }
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ // Exclude windows which are pending deletion via Browser::TabStripEmpty().
+ // These windows can be returned in the Linux Aura port because the browser
+ // window which was used for dragging is not hidden once all of its tabs are
diff --git a/devel/electron7/files/patch-chrome_browser_ui_webui_about__ui.cc b/devel/electron7/files/patch-chrome_browser_ui_webui_about__ui.cc
new file mode 100644
index 000000000000..21ecec66ae91
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_browser_ui_webui_about__ui.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/ui/webui/about_ui.cc.orig 2019-12-12 12:39:18 UTC
++++ chrome/browser/ui/webui/about_ui.cc
+@@ -562,7 +562,7 @@ std::string ChromeURLs() {
+ return html;
+ }
+
+-#if defined(OS_LINUX) || defined(OS_OPENBSD)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ std::string AboutLinuxProxyConfig() {
+ std::string data;
+ AppendHeader(&data, 0,
+@@ -617,7 +617,7 @@ void AboutUIHTMLSource::StartDataRequest(
+ .GetRawDataResource(idr)
+ .as_string();
+ }
+-#if defined(OS_LINUX) || defined(OS_OPENBSD)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ } else if (source_name_ == chrome::kChromeUILinuxProxyConfigHost) {
+ response = AboutLinuxProxyConfig();
+ #endif
diff --git a/devel/electron7/files/patch-chrome_browser_ui_webui_chrome__web__ui__controller__factory.cc b/devel/electron7/files/patch-chrome_browser_ui_webui_chrome__web__ui__controller__factory.cc
new file mode 100644
index 000000000000..f852885b3037
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_browser_ui_webui_chrome__web__ui__controller__factory.cc
@@ -0,0 +1,55 @@
+--- chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc.orig 2019-12-12 12:39:18 UTC
++++ chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc
+@@ -212,11 +212,11 @@
+ #include "chrome/browser/ui/webui/conflicts/conflicts_ui.h"
+ #endif
+
+-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+ #include "chrome/browser/ui/webui/discards/discards_ui.h"
+ #endif
+
+-#if defined(OS_LINUX) || defined(OS_ANDROID)
++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
+ #include "chrome/browser/ui/webui/sandbox_internals_ui.h"
+ #endif
+
+@@ -338,7 +338,7 @@ bool IsAboutUI(const GURL& url) {
+ #if !defined(OS_ANDROID)
+ || url.host_piece() == chrome::kChromeUITermsHost
+ #endif
+-#if defined(OS_LINUX) || defined(OS_OPENBSD)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ || url.host_piece() == chrome::kChromeUILinuxProxyConfigHost
+ #endif
+ #if defined(OS_CHROMEOS)
+@@ -654,7 +654,7 @@ WebUIFactoryFunction GetWebUIFactoryFunction(WebUI* we
+ if (url.host_piece() == chrome::kChromeUINaClHost)
+ return &NewWebUI<NaClUI>;
+ #endif
+-#if (defined(OS_LINUX) && defined(TOOLKIT_VIEWS)) || defined(USE_AURA)
++#if (defined(OS_LINUX) && defined(TOOLKIT_VIEWS)) || defined(USE_AURA) || defined(OS_BSD)
+ if (url.host_piece() == chrome::kChromeUITabModalConfirmDialogHost)
+ return &NewWebUI<ConstrainedWebDialogUI>;
+ #endif
+@@ -702,17 +702,17 @@ WebUIFactoryFunction GetWebUIFactoryFunction(WebUI* we
+ return &NewWebUI<CastUI>;
+ }
+ #endif
+-#if defined(OS_LINUX) || defined(OS_ANDROID)
++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
+ if (url.host_piece() == chrome::kChromeUISandboxHost) {
+ return &NewWebUI<SandboxInternalsUI>;
+ }
+ #endif
+-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+ if (url.host_piece() == chrome::kChromeUIDiscardsHost)
+ return &NewWebUI<DiscardsUI>;
+ #endif
+ #if defined(OS_WIN) || defined(OS_MACOSX) || \
+- (defined(OS_LINUX) && !defined(OS_CHROMEOS))
++ (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ if (url.host_piece() == chrome::kChromeUIBrowserSwitchHost)
+ return &NewWebUI<BrowserSwitchUI>;
+ #endif
diff --git a/devel/electron7/files/patch-chrome_browser_ui_webui_settings_appearance__handler.cc b/devel/electron7/files/patch-chrome_browser_ui_webui_settings_appearance__handler.cc
new file mode 100644
index 000000000000..0920412ba908
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_browser_ui_webui_settings_appearance__handler.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/ui/webui/settings/appearance_handler.cc.orig 2019-12-12 12:39:18 UTC
++++ chrome/browser/ui/webui/settings/appearance_handler.cc
+@@ -27,7 +27,7 @@ void AppearanceHandler::RegisterMessages() {
+ "useDefaultTheme",
+ base::BindRepeating(&AppearanceHandler::HandleUseDefaultTheme,
+ base::Unretained(this)));
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_BSD) && !defined(OS_CHROMEOS)
+ web_ui()->RegisterMessageCallback(
+ "useSystemTheme",
+ base::BindRepeating(&AppearanceHandler::HandleUseSystemTheme,
+@@ -39,7 +39,7 @@ void AppearanceHandler::HandleUseDefaultTheme(const ba
+ ThemeServiceFactory::GetForProfile(profile_)->UseDefaultTheme();
+ }
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_BSD) && !defined(OS_CHROMEOS)
+ void AppearanceHandler::HandleUseSystemTheme(const base::ListValue* args) {
+ if (profile_->IsSupervised())
+ NOTREACHED();
diff --git a/devel/electron7/files/patch-chrome_browser_ui_webui_settings_appearance__handler.h b/devel/electron7/files/patch-chrome_browser_ui_webui_settings_appearance__handler.h
new file mode 100644
index 000000000000..ebcf890b16dd
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_browser_ui_webui_settings_appearance__handler.h
@@ -0,0 +1,11 @@
+--- chrome/browser/ui/webui/settings/appearance_handler.h.orig 2019-12-12 12:39:18 UTC
++++ chrome/browser/ui/webui/settings/appearance_handler.h
+@@ -36,7 +36,7 @@ class AppearanceHandler : public SettingsPageUIHandler
+ // Changes the UI theme of the browser to the default theme.
+ void HandleUseDefaultTheme(const base::ListValue* args);
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS)
+ // Changes the UI theme of the browser to the system (GTK+) theme.
+ void HandleUseSystemTheme(const base::ListValue* args);
+ #endif
diff --git a/devel/electron7/files/patch-chrome_browser_ui_webui_settings_settings__localized__strings__provider.cc b/devel/electron7/files/patch-chrome_browser_ui_webui_settings_settings__localized__strings__provider.cc
new file mode 100644
index 000000000000..641d3f836a1d
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_browser_ui_webui_settings_settings__localized__strings__provider.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc.orig 2019-12-12 12:39:18 UTC
++++ chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc
+@@ -702,7 +702,7 @@ void AddAppearanceStrings(content::WebUIDataSource* ht
+ {"enterCustomWebAddress", IDS_SETTINGS_ENTER_CUSTOM_WEB_ADDRESS},
+ {"homeButtonDisabled", IDS_SETTINGS_HOME_BUTTON_DISABLED},
+ {"themes", IDS_SETTINGS_THEMES},
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ {"systemTheme", IDS_SETTINGS_SYSTEM_THEME},
+ {"useSystemTheme", IDS_SETTINGS_USE_SYSTEM_THEME},
+ {"classicTheme", IDS_SETTINGS_CLASSIC_THEME},
+@@ -722,7 +722,7 @@ void AddAppearanceStrings(content::WebUIDataSource* ht
+ {"openWallpaperApp", IDS_OS_SETTINGS_OPEN_WALLPAPER_APP},
+ {"setWallpaper", IDS_OS_SETTINGS_SET_WALLPAPER},
+ #endif
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ {"showWindowDecorations", IDS_SHOW_WINDOW_DECORATIONS},
+ #endif
+ #if defined(OS_MACOSX)
diff --git a/devel/electron7/files/patch-chrome_browser_web__applications_extensions_bookmark__app__finalizer__utils.cc b/devel/electron7/files/patch-chrome_browser_web__applications_extensions_bookmark__app__finalizer__utils.cc
new file mode 100644
index 000000000000..a087bd74dae7
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_browser_web__applications_extensions_bookmark__app__finalizer__utils.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/web_applications/extensions/bookmark_app_finalizer_utils.cc.orig 2019-12-12 12:39:19 UTC
++++ chrome/browser/web_applications/extensions/bookmark_app_finalizer_utils.cc
+@@ -15,7 +15,7 @@ namespace {
+
+ #if !defined(OS_CHROMEOS)
+ bool CanOsAddDesktopShortcuts() {
+-#if defined(OS_LINUX) || defined(OS_WIN)
++#if defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD)
+ return true;
+ #else
+ return false;
diff --git a/devel/electron7/files/patch-chrome_browser_web__applications_extensions_web__app__extension__shortcut.cc b/devel/electron7/files/patch-chrome_browser_web__applications_extensions_web__app__extension__shortcut.cc
new file mode 100644
index 000000000000..3dd378aee8d2
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_browser_web__applications_extensions_web__app__extension__shortcut.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/web_applications/extensions/web_app_extension_shortcut.cc.orig 2019-12-12 12:39:19 UTC
++++ chrome/browser/web_applications/extensions/web_app_extension_shortcut.cc
+@@ -50,7 +50,7 @@ namespace {
+ #if defined(OS_MACOSX)
+ const int kDesiredSizes[] = {16, 32, 128, 256, 512};
+ const size_t kNumDesiredSizes = base::size(kDesiredSizes);
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ // Linux supports icons of any size. FreeDesktop Icon Theme Specification states
+ // that "Minimally you should install a 48x48 icon in the hicolor theme."
+ const int kDesiredSizes[] = {16, 32, 48, 128, 256, 512};
diff --git a/devel/electron7/files/patch-chrome_common_BUILD.gn b/devel/electron7/files/patch-chrome_common_BUILD.gn
new file mode 100644
index 000000000000..5fc446c5e2d9
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_common_BUILD.gn
@@ -0,0 +1,13 @@
+--- chrome/common/BUILD.gn.orig 2019-12-12 12:39:19 UTC
++++ chrome/common/BUILD.gn
+@@ -293,6 +293,10 @@ static_library("common") {
+ public_deps += [ "//ppapi/shared_impl" ]
+ }
+
++ if (is_bsd) {
++ sources -= [ "component_flash_hint_file_linux.cc" ]
++ }
++
+ if (enable_extensions) {
+ sources += [
+ "cast_messages.cc",
diff --git a/devel/electron7/files/patch-chrome_common_chrome__features.cc b/devel/electron7/files/patch-chrome_common_chrome__features.cc
new file mode 100644
index 000000000000..59255cea0d18
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_common_chrome__features.cc
@@ -0,0 +1,27 @@
+--- chrome/common/chrome_features.cc.orig 2019-12-12 12:39:19 UTC
++++ chrome/common/chrome_features.cc
+@@ -84,13 +84,13 @@ const base::Feature kAutoFetchOnNetErrorPage{"AutoFetc
+ base::FEATURE_DISABLED_BY_DEFAULT};
+ #endif // defined(OS_ANDROID)
+
+-#if defined(OS_WIN) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD)
+ // Enables the Restart background mode optimization. When all Chrome UI is
+ // closed and it goes in the background, allows to restart the browser to
+ // discard memory.
+ const base::Feature kBackgroundModeAllowRestart{
+ "BackgroundModeAllowRestart", base::FEATURE_DISABLED_BY_DEFAULT};
+-#endif // defined(OS_WIN) || defined(OS_LINUX)
++#endif // defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD)
+
+ // Enables or disables whether permission prompts are automatically blocked
+ // after the user has explicitly dismissed them too many times.
+@@ -140,7 +140,7 @@ const base::Feature kThirdPartyModulesBlocking{
+ "ThirdPartyModulesBlocking", base::FEATURE_DISABLED_BY_DEFAULT};
+ #endif
+
+-#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_MACOSX)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_MACOSX) || defined(OS_BSD)
+ // Enables the dual certificate verification trial feature.
+ // https://crbug.com/649026
+ const base::Feature kCertDualVerificationTrialFeature{
diff --git a/devel/electron7/files/patch-chrome_common_chrome__features.h b/devel/electron7/files/patch-chrome_common_chrome__features.h
new file mode 100644
index 000000000000..fd3c06fc0c7a
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_common_chrome__features.h
@@ -0,0 +1,24 @@
+--- chrome/common/chrome_features.h.orig 2019-12-12 12:39:19 UTC
++++ chrome/common/chrome_features.h
+@@ -64,10 +64,10 @@ COMPONENT_EXPORT(CHROME_FEATURES)
+ extern const base::Feature kAutoFetchOnNetErrorPage;
+ #endif
+
+-#if defined(OS_WIN) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD)
+ COMPONENT_EXPORT(CHROME_FEATURES)
+ extern const base::Feature kBackgroundModeAllowRestart;
+-#endif // defined(OS_WIN) || defined(OS_LINUX)
++#endif // defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD)
+
+ COMPONENT_EXPORT(CHROME_FEATURES)
+ extern const base::Feature kBlockPromptsIfDismissedOften;
+@@ -86,7 +86,7 @@ extern const base::Feature kBundledConnectionHelpFeatu
+ COMPONENT_EXPORT(CHROME_FEATURES)
+ extern const base::Feature kCaptionSettings;
+
+-#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_MACOSX)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_MACOSX) || defined(OS_BSD)
+ COMPONENT_EXPORT(CHROME_FEATURES)
+ extern const base::Feature kCertDualVerificationTrialFeature;
+ #endif
diff --git a/devel/electron7/files/patch-chrome_common_chrome__paths.cc b/devel/electron7/files/patch-chrome_common_chrome__paths.cc
new file mode 100644
index 000000000000..facf6eeb024d
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_common_chrome__paths.cc
@@ -0,0 +1,101 @@
+--- chrome/common/chrome_paths.cc.orig 2019-12-12 12:39:19 UTC
++++ chrome/common/chrome_paths.cc
+@@ -52,21 +52,21 @@ const base::FilePath::CharType kPepperFlashSystemBaseD
+ FILE_PATH_LITERAL("Internet Plug-Ins/PepperFlashPlayer");
+ #endif
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // The path to the external extension <id>.json files.
+ // /usr/share seems like a good choice, see: http://www.pathname.com/fhs/
+ const base::FilePath::CharType kFilepathSinglePrefExtensions[] =
+ #if BUILDFLAG(GOOGLE_CHROME_BRANDING)
+- FILE_PATH_LITERAL("/usr/share/google-chrome/extensions");
++ FILE_PATH_LITERAL("/usr/local/share/google-chrome/extensions");
+ #else
+- FILE_PATH_LITERAL("/usr/share/chromium/extensions");
++ FILE_PATH_LITERAL("/usr/local/share/chromium/extensions");
+ #endif // BUILDFLAG(GOOGLE_CHROME_BRANDING)
+
+ // The path to the hint file that tells the pepper plugin loader
+ // where it can find the latest component updated flash.
+ const base::FilePath::CharType kComponentUpdatedFlashHint[] =
+ FILE_PATH_LITERAL("latest-component-updated-flash");
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+
+ #if defined(OS_CHROMEOS)
+ const base::FilePath::CharType kChromeOSComponentFlash[] = FILE_PATH_LITERAL(
+@@ -197,7 +197,7 @@ bool PathProvider(int key, base::FilePath* result) {
+ return false;
+ break;
+ case chrome::DIR_DEFAULT_DOWNLOADS_SAFE:
+-#if defined(OS_WIN) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD)
+ if (!GetUserDownloadsDirectorySafe(&cur))
+ return false;
+ break;
+@@ -489,7 +489,7 @@ bool PathProvider(int key, base::FilePath* result) {
+ }
+ #endif
+ #if defined(OS_CHROMEOS) || \
+- (defined(OS_LINUX) && BUILDFLAG(CHROMIUM_BRANDING)) || defined(OS_MACOSX)
++ ((defined(OS_LINUX) || defined(OS_BSD)) && BUILDFLAG(CHROMIUM_BRANDING)) || defined(OS_MACOSX)
+ case chrome::DIR_USER_EXTERNAL_EXTENSIONS: {
+ if (!base::PathService::Get(chrome::DIR_USER_DATA, &cur))
+ return false;
+@@ -497,7 +497,7 @@ bool PathProvider(int key, base::FilePath* result) {
+ break;
+ }
+ #endif
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ case chrome::DIR_STANDALONE_EXTERNAL_EXTENSIONS: {
+ cur = base::FilePath(kFilepathSinglePrefExtensions);
+ break;
+@@ -532,7 +532,7 @@ bool PathProvider(int key, base::FilePath* result) {
+ #endif
+ break;
+
+-#if defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ case chrome::DIR_NATIVE_MESSAGING:
+ #if defined(OS_MACOSX)
+ #if BUILDFLAG(GOOGLE_CHROME_BRANDING)
+@@ -546,6 +546,9 @@ bool PathProvider(int key, base::FilePath* result) {
+ #if BUILDFLAG(GOOGLE_CHROME_BRANDING)
+ cur = base::FilePath(FILE_PATH_LITERAL(
+ "/etc/opt/chrome/native-messaging-hosts"));
++#elif defined(OS_BSD)
++ cur = base::FilePath(FILE_PATH_LITERAL(
++ "/usr/local/etc/chrome/native-messaging-hosts"));
+ #else
+ cur = base::FilePath(FILE_PATH_LITERAL(
+ "/etc/chromium/native-messaging-hosts"));
+@@ -558,7 +561,7 @@ bool PathProvider(int key, base::FilePath* result) {
+ return false;
+ cur = cur.Append(FILE_PATH_LITERAL("NativeMessagingHosts"));
+ break;
+-#endif // defined(OS_LINUX) || defined(OS_MACOSX)
++#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ #if !defined(OS_ANDROID)
+ case chrome::DIR_GLOBAL_GCM_STORE:
+ if (!base::PathService::Get(chrome::DIR_USER_DATA, &cur))
+@@ -566,7 +569,7 @@ bool PathProvider(int key, base::FilePath* result) {
+ cur = cur.Append(kGCMStoreDirname);
+ break;
+ #endif // !defined(OS_ANDROID)
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ case chrome::FILE_COMPONENT_FLASH_HINT:
+ if (!base::PathService::Get(
+ chrome::DIR_COMPONENT_UPDATED_PEPPER_FLASH_PLUGIN, &cur)) {
+@@ -574,7 +577,7 @@ bool PathProvider(int key, base::FilePath* result) {
+ }
+ cur = cur.Append(kComponentUpdatedFlashHint);
+ break;
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+ #if defined(OS_CHROMEOS)
+ case chrome::FILE_CHROME_OS_COMPONENT_FLASH:
+ cur = base::FilePath(kChromeOSComponentFlash);
diff --git a/devel/electron7/files/patch-chrome_common_chrome__paths.h b/devel/electron7/files/patch-chrome_common_chrome__paths.h
new file mode 100644
index 000000000000..34ee5803883f
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_common_chrome__paths.h
@@ -0,0 +1,42 @@
+--- chrome/common/chrome_paths.h.orig 2019-12-12 12:39:19 UTC
++++ chrome/common/chrome_paths.h
+@@ -53,7 +53,7 @@ enum {
+ // contains subdirectories.
+ #endif
+ #if defined(OS_CHROMEOS) || \
+- (defined(OS_LINUX) && BUILDFLAG(CHROMIUM_BRANDING)) || defined(OS_MACOSX)
++ ((defined(OS_LINUX) || defined(OS_BSD)) && BUILDFLAG(CHROMIUM_BRANDING)) || defined(OS_MACOSX)
+ DIR_USER_EXTERNAL_EXTENSIONS, // Directory for per-user external extensions
+ // on Chrome Mac and Chromium Linux.
+ // On Chrome OS, this path is used for OEM
+@@ -61,7 +61,7 @@ enum {
+ // create it.
+ #endif
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ DIR_STANDALONE_EXTERNAL_EXTENSIONS, // Directory for 'per-extension'
+ // definition manifest files that
+ // describe extensions which are to be
+@@ -119,7 +119,7 @@ enum {
+ DIR_SUPERVISED_USER_INSTALLED_WHITELISTS, // Directory where sanitized
+ // supervised user whitelists are
+ // installed.
+-#if defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ DIR_NATIVE_MESSAGING, // System directory where native messaging host
+ // manifest files are stored.
+ DIR_USER_NATIVE_MESSAGING, // Directory with Native Messaging Hosts
+@@ -134,10 +134,10 @@ enum {
+ DIR_GEN_TEST_DATA, // Directory where generated test data resides.
+ DIR_TEST_DATA, // Directory where unit test data resides.
+ DIR_TEST_TOOLS, // Directory where unit test tools reside.
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ FILE_COMPONENT_FLASH_HINT, // A file in a known location that points to
+ // the component updated flash plugin.
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+ #if defined(OS_CHROMEOS)
+ FILE_CHROME_OS_COMPONENT_FLASH, // The location of component updated Flash on
+ // Chrome OS.
diff --git a/devel/electron7/files/patch-chrome_common_chrome__paths__internal.h b/devel/electron7/files/patch-chrome_common_chrome__paths__internal.h
new file mode 100644
index 000000000000..747b86c64712
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_common_chrome__paths__internal.h
@@ -0,0 +1,11 @@
+--- chrome/common/chrome_paths_internal.h.orig 2019-12-12 12:39:19 UTC
++++ chrome/common/chrome_paths_internal.h
+@@ -45,7 +45,7 @@ void GetUserCacheDirectory(const base::FilePath& profi
+ // Get the path to the user's documents directory.
+ bool GetUserDocumentsDirectory(base::FilePath* result);
+
+-#if defined(OS_WIN) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD)
+ // Gets the path to a safe default download directory for a user.
+ bool GetUserDownloadsDirectorySafe(base::FilePath* result);
+ #endif
diff --git a/devel/electron7/files/patch-chrome_common_chrome__switches.cc b/devel/electron7/files/patch-chrome_common_chrome__switches.cc
new file mode 100644
index 000000000000..c47b5a300596
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_common_chrome__switches.cc
@@ -0,0 +1,11 @@
+--- chrome/common/chrome_switches.cc.orig 2019-12-12 12:39:19 UTC
++++ chrome/common/chrome_switches.cc
+@@ -853,7 +853,7 @@ const char kAllowNaClFileHandleAPI[] = "allow-n
+ const char kAllowNaClSocketAPI[] = "allow-nacl-socket-api";
+ #endif
+
+-#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_BSD)
+ const char kEnableNewAppMenuIcon[] = "enable-new-app-menu-icon";
+
+ // Causes the browser to launch directly in guest mode.
diff --git a/devel/electron7/files/patch-chrome_common_chrome__switches.h b/devel/electron7/files/patch-chrome_common_chrome__switches.h
new file mode 100644
index 000000000000..3ebc75416e1e
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_common_chrome__switches.h
@@ -0,0 +1,11 @@
+--- chrome/common/chrome_switches.h.orig 2019-12-12 12:39:19 UTC
++++ chrome/common/chrome_switches.h
+@@ -264,7 +264,7 @@ extern const char kAllowNaClFileHandleAPI[];
+ extern const char kAllowNaClSocketAPI[];
+ #endif
+
+-#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_BSD)
+ extern const char kEnableNewAppMenuIcon[];
+ extern const char kGuest[];
+ #endif
diff --git a/devel/electron7/files/patch-chrome_common_extensions_api_api__sources.gni b/devel/electron7/files/patch-chrome_common_extensions_api_api__sources.gni
new file mode 100644
index 000000000000..fe69d1570ba8
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_common_extensions_api_api__sources.gni
@@ -0,0 +1,11 @@
+--- chrome/common/extensions/api/api_sources.gni.orig 2019-12-12 12:39:19 UTC
++++ chrome/common/extensions/api/api_sources.gni
+@@ -109,7 +109,7 @@ if (is_chromeos) {
+ "wallpaper.json",
+ "wallpaper_private.json",
+ ]
+-} else if (is_linux || is_win) {
++} else if (is_linux || is_bsd || is_win) {
+ schema_sources_ += [ "input_ime.json" ]
+ }
+
diff --git a/devel/electron7/files/patch-chrome_common_extensions_command.cc b/devel/electron7/files/patch-chrome_common_extensions_command.cc
new file mode 100644
index 000000000000..2bc8ab7f6511
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_common_extensions_command.cc
@@ -0,0 +1,11 @@
+--- chrome/common/extensions/command.cc.orig 2019-12-12 12:39:19 UTC
++++ chrome/common/extensions/command.cc
+@@ -300,7 +300,7 @@ std::string Command::CommandPlatform() {
+ return values::kKeybindingPlatformMac;
+ #elif defined(OS_CHROMEOS)
+ return values::kKeybindingPlatformChromeOs;
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ return values::kKeybindingPlatformLinux;
+ #else
+ return "";
diff --git a/devel/electron7/files/patch-chrome_common_features.gni b/devel/electron7/files/patch-chrome_common_features.gni
new file mode 100644
index 000000000000..aac3422e4a25
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_common_features.gni
@@ -0,0 +1,14 @@
+--- chrome/common/features.gni.orig 2019-12-12 12:39:20 UTC
++++ chrome/common/features.gni
+@@ -42,9 +42,9 @@ declare_args() {
+ (is_desktop_linux && use_dbus) || is_chromeos
+
+ enable_one_click_signin =
+- is_win || is_mac || (is_linux && !is_chromeos && !is_chromecast)
++ is_win || is_mac || is_bsd || (is_linux && !is_chromeos && !is_chromecast)
+
+- enable_service_discovery = (enable_mdns && !is_android) || is_mac
++ enable_service_discovery = (enable_mdns && !is_android) || is_mac || is_bsd
+
+ # Enables use of the session service, which is enabled by default.
+ # Android stores them separately on the Java side.
diff --git a/devel/electron7/files/patch-chrome_common_pref__names.cc b/devel/electron7/files/patch-chrome_common_pref__names.cc
new file mode 100644
index 000000000000..f6d8290669b8
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_common_pref__names.cc
@@ -0,0 +1,44 @@
+--- chrome/common/pref_names.cc.orig 2019-12-12 12:39:20 UTC
++++ chrome/common/pref_names.cc
+@@ -1026,7 +1026,7 @@ const char kForceYouTubeRestrict[] = "settings.force_y
+ // only using an account that belongs to one of the domains from this pref.
+ const char kAllowedDomainsForApps[] = "settings.allowed_domains_for_apps";
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ // Linux specific preference on whether we should match the system theme.
+ const char kUsesSystemTheme[] = "extensions.theme.use_system";
+ #endif
+@@ -1153,7 +1153,7 @@ const char kShowUpdatePromotionInfoBar[] =
+ "browser.show_update_promotion_info_bar";
+ #endif
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ // Boolean that is false if we should show window manager decorations. If
+ // true, we draw a custom chrome frame (thicker title bar and blue border).
+ const char kUseCustomChromeFrame[] = "browser.custom_chrome_frame";
+@@ -1540,7 +1540,7 @@ const char kDownloadDefaultDirectory[] = "download.def
+ // upgrade a unsafe location to a safe location.
+ const char kDownloadDirUpgraded[] = "download.directory_upgrade";
+
+-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ const char kOpenPdfDownloadInSystemReader[] =
+ "download.open_pdf_in_system_reader";
+ #endif
+@@ -1791,12 +1791,12 @@ const char kAuthAndroidNegotiateAccountType[] =
+ // domain sub-content requests.
+ const char kAllowCrossOriginAuthPrompt[] = "auth.allow_cross_origin_prompt";
+
+-#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ // Boolean that specifies whether OK-AS-DELEGATE flag from KDC is respected
+ // along with kAuthNegotiateDelegateWhitelist.
+ const char kAuthNegotiateDelegateByKdcPolicy[] =
+ "auth.negotiate_delegate_by_kdc_policy";
+-#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_CHROMEOS)
++#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+
+ #if defined(OS_POSIX)
+ // Boolean that specifies whether NTLMv2 is enabled.
diff --git a/devel/electron7/files/patch-chrome_common_pref__names.h b/devel/electron7/files/patch-chrome_common_pref__names.h
new file mode 100644
index 000000000000..a37206103448
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_common_pref__names.h
@@ -0,0 +1,41 @@
+--- chrome/common/pref_names.h.orig 2019-12-12 12:39:20 UTC
++++ chrome/common/pref_names.h
+@@ -326,7 +326,7 @@ extern const char kHistoryMenuPromoShown[];
+ extern const char kForceGoogleSafeSearch[];
+ extern const char kForceYouTubeRestrict[];
+ extern const char kAllowedDomainsForApps[];
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ extern const char kUsesSystemTheme[];
+ #endif
+ extern const char kCurrentThemePackFilename[];
+@@ -357,7 +357,7 @@ extern const char kDefaultBrowserSettingEnabled[];
+ #if defined(OS_MACOSX)
+ extern const char kShowUpdatePromotionInfoBar[];
+ #endif
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ extern const char kUseCustomChromeFrame[];
+ #endif
+ #if BUILDFLAG(ENABLE_PLUGINS)
+@@ -511,7 +511,7 @@ extern const char kAppWindowPlacement[];
+ extern const char kDownloadDefaultDirectory[];
+ extern const char kDownloadExtensionsToOpen[];
+ extern const char kDownloadDirUpgraded[];
+-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ extern const char kOpenPdfDownloadInSystemReader[];
+ #endif
+ #if defined(OS_ANDROID)
+@@ -708,9 +708,9 @@ extern const char kGSSAPILibraryName[];
+ extern const char kAuthAndroidNegotiateAccountType[];
+ extern const char kAllowCrossOriginAuthPrompt[];
+
+-#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ extern const char kAuthNegotiateDelegateByKdcPolicy[];
+-#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_CHROMEOS)
++#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+
+ #if defined(OS_POSIX)
+ extern const char kNtlmV2Enabled[];
diff --git a/devel/electron7/files/patch-chrome_common_webui__url__constants.cc b/devel/electron7/files/patch-chrome_common_webui__url__constants.cc
new file mode 100644
index 000000000000..fa7f2728c123
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_common_webui__url__constants.cc
@@ -0,0 +1,48 @@
+--- chrome/common/webui_url_constants.cc.orig 2019-12-12 12:39:20 UTC
++++ chrome/common/webui_url_constants.cc
+@@ -311,7 +311,7 @@ bool IsSystemWebUIHost(base::StringPiece host) {
+ const char kChromeUICastHost[] = "cast";
+ #endif
+
+-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+ const char kChromeUIDiscardsHost[] = "discards";
+ const char kChromeUIDiscardsURL[] = "chrome://discards/";
+ const char kChromeUIHatsHost[] = "hats";
+@@ -322,17 +322,17 @@ const char kChromeUIHatsURL[] = "chrome://hats/";
+ const char kChromeUILinuxProxyConfigHost[] = "linux-proxy-config";
+ #endif
+
+-#if defined(OS_LINUX) || defined(OS_ANDROID)
++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
+ const char kChromeUISandboxHost[] = "sandbox";
+ #endif
+
+ #if defined(OS_WIN) || defined(OS_MACOSX) || \
+- (defined(OS_LINUX) && !defined(OS_CHROMEOS))
++ (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ const char kChromeUIBrowserSwitchHost[] = "browser-switch";
+ const char kChromeUIBrowserSwitchURL[] = "chrome://browser-switch/";
+ #endif
+
+-#if (defined(OS_LINUX) && defined(TOOLKIT_VIEWS)) || defined(USE_AURA)
++#if ((defined(OS_BSD) || defined(OS_LINUX)) && defined(TOOLKIT_VIEWS)) || defined(USE_AURA)
+ const char kChromeUITabModalConfirmDialogHost[] = "tab-modal-confirm-dialog";
+ #endif
+
+@@ -586,13 +586,13 @@ const char* const kChromeHostURLs[] = {
+ kChromeUIInternetDetailDialogHost,
+ kChromeUIAssistantOptInHost,
+ #endif
+-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+ kChromeUIDiscardsHost,
+ #endif
+ #if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_ANDROID)
+ kChromeUILinuxProxyConfigHost,
+ #endif
+-#if defined(OS_LINUX) || defined(OS_ANDROID)
++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
+ kChromeUISandboxHost,
+ #endif
+ #if defined(OS_WIN)
diff --git a/devel/electron7/files/patch-chrome_common_webui__url__constants.h b/devel/electron7/files/patch-chrome_common_webui__url__constants.h
new file mode 100644
index 000000000000..93f15b2bb72d
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_common_webui__url__constants.h
@@ -0,0 +1,32 @@
+--- chrome/common/webui_url_constants.h.orig 2019-12-12 12:39:20 UTC
++++ chrome/common/webui_url_constants.h
+@@ -270,7 +270,7 @@ bool IsSystemWebUIHost(base::StringPiece host);
+ extern const char kChromeUICastHost[];
+ #endif
+
+-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+ extern const char kChromeUIDiscardsHost[];
+ extern const char kChromeUIDiscardsURL[];
+ extern const char kChromeUIHatsHost[];
+@@ -282,17 +282,17 @@ extern const char kChromeUIHatsURL[];
+ extern const char kChromeUILinuxProxyConfigHost[];
+ #endif
+
+-#if defined(OS_LINUX) || defined(OS_ANDROID)
++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
+ extern const char kChromeUISandboxHost[];
+ #endif
+
+ #if defined(OS_WIN) || defined(OS_MACOSX) || \
+- (defined(OS_LINUX) && !defined(OS_CHROMEOS))
++ (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ extern const char kChromeUIBrowserSwitchHost[];
+ extern const char kChromeUIBrowserSwitchURL[];
+ #endif
+
+-#if (defined(OS_LINUX) && defined(TOOLKIT_VIEWS)) || defined(USE_AURA)
++#if ((defined(OS_BSD) || defined(OS_LINUX)) && defined(TOOLKIT_VIEWS)) || defined(USE_AURA)
+ extern const char kChromeUITabModalConfirmDialogHost[];
+ #endif
+
diff --git a/devel/electron7/files/patch-chrome_renderer_chrome__content__renderer__client.cc b/devel/electron7/files/patch-chrome_renderer_chrome__content__renderer__client.cc
new file mode 100644
index 000000000000..a23ce2246bc6
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_renderer_chrome__content__renderer__client.cc
@@ -0,0 +1,45 @@
+--- chrome/renderer/chrome_content_renderer_client.cc.orig 2019-12-12 12:39:21 UTC
++++ chrome/renderer/chrome_content_renderer_client.cc
+@@ -154,13 +154,13 @@
+ #include "chrome/renderer/searchbox/searchbox_extension.h"
+ #endif
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include "base/allocator/buildflags.h"
+ #if BUILDFLAG(USE_TCMALLOC)
+ #include "chrome/common/performance_manager/mojom/tcmalloc.mojom.h"
+ #include "chrome/renderer/performance_manager/mechanisms/tcmalloc_tunables_impl.h"
+ #endif // BUILDFLAG(USE_TCMALLOC)
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+
+ #if defined(OS_WIN)
+ #endif
+@@ -1040,7 +1040,7 @@ WebPlugin* ChromeContentRendererClient::CreatePlugin(
+ }
+
+ case chrome::mojom::PluginStatus::kRestartRequired: {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ placeholder =
+ create_blocked_plugin(IDR_BLOCKED_PLUGIN_HTML,
+ l10n_util::GetStringFUTF16(
+@@ -1636,7 +1636,7 @@ void ChromeContentRendererClient::BindReceiverOnMainTh
+ }
+ #endif
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #if BUILDFLAG(USE_TCMALLOC)
+ if (auto setter_receiver = receiver.As<tcmalloc::mojom::TcmallocTunables>()) {
+ performance_manager::mechanism::TcmallocTunablesImpl::Create(
+@@ -1644,7 +1644,7 @@ void ChromeContentRendererClient::BindReceiverOnMainTh
+ return;
+ }
+ #endif // BUILDFLAG(USE_TCMALLOC)
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+
+ // TODO(crbug.com/977637): Get rid of the use of BinderRegistry here. This was
+ // done only to avoid churning spellcheck code while eliminting the "chrome"
diff --git a/devel/electron7/files/patch-chrome_renderer_pepper_pepper__flash__font__file__host.cc b/devel/electron7/files/patch-chrome_renderer_pepper_pepper__flash__font__file__host.cc
new file mode 100644
index 000000000000..82c7dae1540e
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_renderer_pepper_pepper__flash__font__file__host.cc
@@ -0,0 +1,29 @@
+--- chrome/renderer/pepper/pepper_flash_font_file_host.cc.orig 2019-12-12 12:39:21 UTC
++++ chrome/renderer/pepper/pepper_flash_font_file_host.cc
+@@ -15,7 +15,7 @@
+ #include "ppapi/proxy/ppapi_messages.h"
+ #include "ppapi/proxy/serialized_structs.h"
+
+-#if defined(OS_LINUX) || defined(OS_OPENBSD)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include "components/services/font/public/cpp/font_loader.h"
+ #include "content/public/common/common_sandbox_support_linux.h"
+ #elif defined(OS_WIN)
+@@ -29,7 +29,7 @@ PepperFlashFontFileHost::PepperFlashFontFileHost(
+ const ppapi::proxy::SerializedFontDescription& description,
+ PP_PrivateFontCharset charset)
+ : ResourceHost(host->GetPpapiHost(), instance, resource) {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // The global SkFontConfigInterface is configured and initialized with a
+ // SkFontconfigInterface compatible font_service::FontLoader in
+ // RendererBlinkPlatformImpl (called from RenderThreadImpl::Init) at startup
+@@ -74,7 +74,7 @@ bool PepperFlashFontFileHost::GetFontData(uint32_t tab
+ void* buffer,
+ size_t* length) {
+ bool result = false;
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ if (font_file_.IsValid()) {
+ result = content::GetFontTable(font_file_.GetPlatformFile(), table,
+ 0 /* offset */,
diff --git a/devel/electron7/files/patch-chrome_renderer_pepper_pepper__flash__font__file__host.h b/devel/electron7/files/patch-chrome_renderer_pepper_pepper__flash__font__file__host.h
new file mode 100644
index 000000000000..0eb6ea79ceef
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_renderer_pepper_pepper__flash__font__file__host.h
@@ -0,0 +1,20 @@
+--- chrome/renderer/pepper/pepper_flash_font_file_host.h.orig 2019-12-12 12:39:21 UTC
++++ chrome/renderer/pepper/pepper_flash_font_file_host.h
+@@ -14,7 +14,7 @@
+ #include "ppapi/c/private/pp_private_font_charset.h"
+ #include "ppapi/host/resource_host.h"
+
+-#if defined(OS_LINUX) || defined(OS_OPENBSD)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include "base/files/file.h"
+ #elif defined(OS_WIN)
+ #include "third_party/skia/include/core/SkRefCnt.h"
+@@ -50,7 +50,7 @@ class PepperFlashFontFileHost : public ppapi::host::Re
+ uint32_t table);
+ bool GetFontData(uint32_t table, void* buffer, size_t* length);
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ base::File font_file_;
+ #elif defined(OS_WIN)
+ sk_sp<SkTypeface> typeface_;
diff --git a/devel/electron7/files/patch-chrome_service_cloud__print_print__system.cc b/devel/electron7/files/patch-chrome_service_cloud__print_print__system.cc
new file mode 100644
index 000000000000..b997f1f70341
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_service_cloud__print_print__system.cc
@@ -0,0 +1,11 @@
+--- chrome/service/cloud_print/print_system.cc.orig 2019-12-12 12:39:21 UTC
++++ chrome/service/cloud_print/print_system.cc
+@@ -36,7 +36,7 @@ std::string PrintSystem::GenerateProxyId() {
+ return base::GenerateGUID();
+ }
+
+-#if defined(OS_LINUX) && !defined(USE_CUPS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(USE_CUPS)
+ scoped_refptr<PrintSystem> PrintSystem::CreateInstance(
+ const base::DictionaryValue*) {
+ return nullptr;
diff --git a/devel/electron7/files/patch-chrome_test_BUILD.gn b/devel/electron7/files/patch-chrome_test_BUILD.gn
new file mode 100644
index 000000000000..eac23536ec62
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_test_BUILD.gn
@@ -0,0 +1,11 @@
+--- chrome/test/BUILD.gn.orig 2019-12-12 12:39:21 UTC
++++ chrome/test/BUILD.gn
+@@ -5797,7 +5797,7 @@ test("chrome_app_unittests") {
+ "//components/safe_browsing:buildflags",
+ "//components/tracing",
+ ]
+- if (!is_fuchsia) {
++ if (!is_fuchsia && !is_bsd) {
+ # TODO(crbug.com/753619): Enable crash reporting on Fuchsia.
+ deps += [ "//third_party/breakpad:client" ]
+ }
diff --git a/devel/electron7/files/patch-chrome_test_base_in__process__browser__test.cc b/devel/electron7/files/patch-chrome_test_base_in__process__browser__test.cc
new file mode 100644
index 000000000000..9e49d98a2e3d
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_test_base_in__process__browser__test.cc
@@ -0,0 +1,22 @@
+--- chrome/test/base/in_process_browser_test.cc.orig 2019-12-12 12:39:22 UTC
++++ chrome/test/base/in_process_browser_test.cc
+@@ -76,6 +76,10 @@
+ #include "chrome/test/base/scoped_bundle_swizzler_mac.h"
+ #endif
+
++#if defined(OS_FREEBSD)
++#include <signal.h>
++#endif
++
+ #if defined(OS_WIN)
+ #include "base/win/scoped_com_initializer.h"
+ #include "base/win/windows_version.h"
+@@ -103,7 +107,7 @@
+ #include "ui/events/test/event_generator.h"
+ #endif // defined(OS_CHROMEOS)
+
+-#if !defined(OS_CHROMEOS) && defined(OS_LINUX)
++#if !defined(OS_CHROMEOS) && (defined(OS_LINUX) || defined(OS_BSD))
+ #include "ui/views/test/test_desktop_screen_x11.h"
+ #endif
+
diff --git a/devel/electron7/files/patch-chrome_test_base_testing__browser__process.h b/devel/electron7/files/patch-chrome_test_base_testing__browser__process.h
new file mode 100644
index 000000000000..288fedaf0ade
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_test_base_testing__browser__process.h
@@ -0,0 +1,13 @@
+--- chrome/test/base/testing_browser_process.h.orig 2019-12-12 12:39:22 UTC
++++ chrome/test/base/testing_browser_process.h
+@@ -116,8 +116,8 @@ class TestingBrowserProcess : public BrowserProcess {
+ DownloadRequestLimiter* download_request_limiter() override;
+ StartupData* startup_data() override;
+
+-#if (defined(OS_WIN) || defined(OS_LINUX)) && !defined(OS_CHROMEOS)
+- void StartAutoupdateTimer() override {}
++#if (defined(OS_WIN) || defined(OS_LINUX) || defined(OS_FREEBSD)) && !defined(OS_CHROMEOS)
++ void StartAutoupdateTimer() /*override*/ {}
+ #endif
+
+ component_updater::ComponentUpdateService* component_updater() override;
diff --git a/devel/electron7/files/patch-chrome_test_chromedriver_chrome__launcher.cc b/devel/electron7/files/patch-chrome_test_chromedriver_chrome__launcher.cc
new file mode 100644
index 000000000000..b4302ca7f296
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_test_chromedriver_chrome__launcher.cc
@@ -0,0 +1,13 @@
+--- chrome/test/chromedriver/chrome_launcher.cc.orig 2019-12-12 12:39:22 UTC
++++ chrome/test/chromedriver/chrome_launcher.cc
+@@ -67,6 +67,10 @@
+ #include "chrome/test/chromedriver/keycode_text_conversion.h"
+ #endif
+
++#if defined(OS_BSD)
++#include <sys/wait.h>
++#endif
++
+ namespace {
+
+ // TODO(eseckler): Remove --ignore-certificate-errors for newer Chrome versions
diff --git a/devel/electron7/files/patch-chrome_test_chromedriver_chrome_chrome__finder.cc b/devel/electron7/files/patch-chrome_test_chromedriver_chrome_chrome__finder.cc
new file mode 100644
index 000000000000..1735059414ee
--- /dev/null
+++ b/devel/electron7/files/patch-chrome_test_chromedriver_chrome_chrome__finder.cc
@@ -0,0 +1,20 @@
+--- chrome/test/chromedriver/chrome/chrome_finder.cc.orig 2019-12-12 12:39:22 UTC
++++ chrome/test/chromedriver/chrome/chrome_finder.cc
+@@ -48,7 +48,7 @@ void GetApplicationDirs(std::vector<base::FilePath>* l
+ installation_locations[i].Append(L"Chromium\\Application"));
+ }
+ }
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ void GetApplicationDirs(std::vector<base::FilePath>* locations) {
+ // TODO: Respect users' PATH variables.
+ // Until then, we use an approximation of the most common defaults.
+@@ -135,7 +135,7 @@ bool FindChrome(base::FilePath* browser_exe) {
+ #elif defined(OS_MACOSX)
+ base::FilePath("Google Chrome.app/Contents/MacOS/Google Chrome"),
+ base::FilePath("Chromium.app/Contents/MacOS/Chromium")
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ base::FilePath("google-chrome"),
+ base::FilePath("chrome"),
+ base::FilePath("chromium"),
diff --git a/devel/electron7/files/patch-chromecast_browser_cast__browser__main__parts.cc b/devel/electron7/files/patch-chromecast_browser_cast__browser__main__parts.cc
new file mode 100644
index 000000000000..01113879bc31
--- /dev/null
+++ b/devel/electron7/files/patch-chromecast_browser_cast__browser__main__parts.cc
@@ -0,0 +1,38 @@
+--- chromecast/browser/cast_browser_main_parts.cc.orig 2019-12-12 12:39:27 UTC
++++ chromecast/browser/cast_browser_main_parts.cc
+@@ -71,7 +71,7 @@
+ #include "ui/base/ui_base_switches.h"
+ #include "ui/gl/gl_switches.h"
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include <fontconfig/fontconfig.h>
+ #include <signal.h>
+ #include <sys/prctl.h>
+@@ -283,7 +283,7 @@ const DefaultCommandLineSwitch kDefaultSwitches[] = {
+ {cc::switches::kDisableThreadedAnimation, ""},
+ #endif // defined(OS_ANDROID)
+ #endif // BUILDFLAG(IS_CAST_AUDIO_ONLY)
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #if defined(ARCH_CPU_X86_FAMILY)
+ // This is needed for now to enable the x11 Ozone platform to work with
+ // current Linux/NVidia OpenGL drivers.
+@@ -293,7 +293,7 @@ const DefaultCommandLineSwitch kDefaultSwitches[] = {
+ {switches::kEnableHardwareOverlays, "cast"},
+ #endif
+ #endif
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+ // It's better to start GPU process on demand. For example, for TV platforms
+ // cast starts in background and can't render until TV switches to cast
+ // input.
+@@ -433,7 +433,7 @@ void CastBrowserMainParts::ToolkitInitialized() {
+ views_delegate_ = std::make_unique<CastViewsDelegate>();
+ #endif // defined(USE_AURA)
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Without this call, the FontConfig library gets implicitly initialized
+ // on the first call to FontConfig. Since it's not safe to initialize it
+ // concurrently from multiple threads, we explicitly initialize it here
diff --git a/devel/electron7/files/patch-chromecast_browser_cast__content__browser__client.cc b/devel/electron7/files/patch-chromecast_browser_cast__content__browser__client.cc
new file mode 100644
index 000000000000..3f9e89a8879b
--- /dev/null
+++ b/devel/electron7/files/patch-chromecast_browser_cast__content__browser__client.cc
@@ -0,0 +1,11 @@
+--- chromecast/browser/cast_content_browser_client.cc.orig 2019-12-12 12:39:27 UTC
++++ chromecast/browser/cast_content_browser_client.cc
+@@ -534,7 +534,7 @@ void CastContentBrowserClient::AppendExtraCommandLineS
+ switches::kAudioOutputChannels));
+ }
+ } else if (process_type == switches::kGpuProcess) {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Necessary for accelerated 2d canvas. By default on Linux, Chromium assumes
+ // GLES2 contexts can be lost to a power-save mode, which breaks GPU canvas
+ // apps.
diff --git a/devel/electron7/files/patch-chromecast_browser_metrics_BUILD.gn b/devel/electron7/files/patch-chromecast_browser_metrics_BUILD.gn
new file mode 100644
index 000000000000..d8d4bd606d19
--- /dev/null
+++ b/devel/electron7/files/patch-chromecast_browser_metrics_BUILD.gn
@@ -0,0 +1,11 @@
+--- chromecast/browser/metrics/BUILD.gn.orig 2019-12-12 12:39:27 UTC
++++ chromecast/browser/metrics/BUILD.gn
+@@ -32,7 +32,7 @@ cast_source_set("metrics") {
+ "//third_party/metrics_proto",
+ ]
+
+- if (is_linux) {
++ if (is_linux || is_bsd) {
+ sources += [
+ "external_metrics.cc",
+ "external_metrics.h",
diff --git a/devel/electron7/files/patch-chromecast_browser_tts_tts__controller__impl.cc b/devel/electron7/files/patch-chromecast_browser_tts_tts__controller__impl.cc
new file mode 100644
index 000000000000..b6c00da4182d
--- /dev/null
+++ b/devel/electron7/files/patch-chromecast_browser_tts_tts__controller__impl.cc
@@ -0,0 +1,14 @@
+--- chromecast/browser/tts/tts_controller_impl.cc.orig 2019-12-12 12:39:27 UTC
++++ chromecast/browser/tts/tts_controller_impl.cc
+@@ -390,7 +390,11 @@ int TtsControllerImpl::QueueSize() {
+ }
+
+ TtsPlatformImpl* TtsControllerImpl::GetPlatformImpl() {
++#if defined(OS_BSD)
++ return NULL;
++#else
+ return platform_impl_.get();
++#endif // defined(OS_BSD)
+ }
+
+ std::string TtsControllerImpl::GetApplicationLocale() const {
diff --git a/devel/electron7/files/patch-chromecast_media_base_monotonic__clock.cc b/devel/electron7/files/patch-chromecast_media_base_monotonic__clock.cc
new file mode 100644
index 000000000000..a7ecf1b150cd
--- /dev/null
+++ b/devel/electron7/files/patch-chromecast_media_base_monotonic__clock.cc
@@ -0,0 +1,23 @@
+--- chromecast/media/base/monotonic_clock.cc.orig 2019-12-12 12:39:27 UTC
++++ chromecast/media/base/monotonic_clock.cc
+@@ -9,9 +9,9 @@
+ #include "base/time/time.h"
+ #include "build/build_config.h"
+
+-#if defined(OS_ANDROID) || defined(OS_LINUX)
++#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_BSD)
+ #include "chromecast/media/base/buildflags.h"
+-#endif // defined(OS_ANDROID) || defined(OS_LINUX)
++#endif // defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_BSD)
+
+ #if defined(OS_FUCHSIA)
+ #include <zircon/syscalls.h>
+@@ -20,7 +20,7 @@
+ namespace chromecast {
+ namespace media {
+
+-#if defined(OS_ANDROID) || defined(OS_LINUX)
++#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_BSD)
+ int64_t MonotonicClockNow() {
+ timespec now = {0, 0};
+ #if BUILDFLAG(MEDIA_CLOCK_MONOTONIC_RAW)
diff --git a/devel/electron7/files/patch-components_autofill_content_renderer_password__form__conversion__utils.cc b/devel/electron7/files/patch-components_autofill_content_renderer_password__form__conversion__utils.cc
new file mode 100644
index 000000000000..8073c7563124
--- /dev/null
+++ b/devel/electron7/files/patch-components_autofill_content_renderer_password__form__conversion__utils.cc
@@ -0,0 +1,14 @@
+--- components/autofill/content/renderer/password_form_conversion_utils.cc.orig 2019-12-12 12:39:28 UTC
++++ components/autofill/content/renderer/password_form_conversion_utils.cc
+@@ -36,7 +36,11 @@
+ #include "third_party/blink/public/web/web_form_control_element.h"
+ #include "third_party/blink/public/web/web_input_element.h"
+ #include "third_party/blink/public/web/web_local_frame.h"
++#if defined(OS_BSD)
++#include <re2/re2.h>
++#else
+ #include "third_party/re2/src/re2/re2.h"
++#endif
+ #include "url/gurl.h"
+
+ using blink::WebElement;
diff --git a/devel/electron7/files/patch-components_autofill_core_browser_autofill__experiments.cc b/devel/electron7/files/patch-components_autofill_core_browser_autofill__experiments.cc
new file mode 100644
index 000000000000..ef92ca114ba9
--- /dev/null
+++ b/devel/electron7/files/patch-components_autofill_core_browser_autofill__experiments.cc
@@ -0,0 +1,11 @@
+--- components/autofill/core/browser/autofill_experiments.cc.orig 2019-12-12 12:39:28 UTC
++++ components/autofill/core/browser/autofill_experiments.cc
+@@ -234,7 +234,7 @@ bool IsAutofillNoLocalSaveOnUploadSuccessExperimentEna
+ }
+
+ bool OfferStoreUnmaskedCards(bool is_off_the_record) {
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ // The checkbox can be forced on with a flag, but by default we don't store
+ // on Linux due to lack of system keychain integration. See crbug.com/162735
+ return base::CommandLine::ForCurrentProcess()->HasSwitch(
diff --git a/devel/electron7/files/patch-components_autofill_core_browser_personal__data__manager.cc b/devel/electron7/files/patch-components_autofill_core_browser_personal__data__manager.cc
new file mode 100644
index 000000000000..dfe748aaf162
--- /dev/null
+++ b/devel/electron7/files/patch-components_autofill_core_browser_personal__data__manager.cc
@@ -0,0 +1,15 @@
+--- components/autofill/core/browser/personal_data_manager.cc.orig 2019-12-12 12:39:29 UTC
++++ components/autofill/core/browser/personal_data_manager.cc
+@@ -1925,10 +1925,10 @@ bool PersonalDataManager::IsServerCard(const CreditCar
+
+ bool PersonalDataManager::ShouldShowCardsFromAccountOption() const {
+ // The feature is only for Linux, Windows and Mac.
+-#if (!defined(OS_LINUX) && !defined(OS_WIN) && !defined(OS_MACOSX)) || \
++#if (!defined(OS_LINUX) && !defined(OS_WIN) && !defined(OS_MACOSX) && !defined(OS_BSD)) || \
+ defined(OS_CHROMEOS)
+ return false;
+-#endif // (!defined(OS_LINUX) && !defined(OS_WIN) && !defined(OS_MACOSX)) ||
++#endif // (!defined(OS_LINUX) && !defined(OS_WIN) && !defined(OS_MACOSX) && !defined(OS_BSD)) ||
+ // defined(OS_CHROMEOS)
+
+ // This option should only be shown for users that have not enabled the Sync
diff --git a/devel/electron7/files/patch-components_autofill_core_common_autofill__payments__features.cc b/devel/electron7/files/patch-components_autofill_core_common_autofill__payments__features.cc
new file mode 100644
index 000000000000..c7de2e729610
--- /dev/null
+++ b/devel/electron7/files/patch-components_autofill_core_common_autofill__payments__features.cc
@@ -0,0 +1,11 @@
+--- components/autofill/core/common/autofill_payments_features.cc.orig 2019-12-12 12:39:29 UTC
++++ components/autofill/core/common/autofill_payments_features.cc
+@@ -159,7 +159,7 @@ const base::Feature kAutofillUpstreamEditableExpiratio
+
+ bool ShouldShowImprovedUserConsentForCreditCardSave() {
+ #if defined(OS_WIN) || defined(OS_MACOSX) || \
+- (defined(OS_LINUX) && !defined(OS_CHROMEOS))
++ (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ // The new user consent UI is fully launched on MacOS, Windows and Linux.
+ return true;
+ #endif
diff --git a/devel/electron7/files/patch-components_autofill_core_common_autofill__util.cc b/devel/electron7/files/patch-components_autofill_core_common_autofill__util.cc
new file mode 100644
index 000000000000..ddc373f97d87
--- /dev/null
+++ b/devel/electron7/files/patch-components_autofill_core_common_autofill__util.cc
@@ -0,0 +1,11 @@
+--- components/autofill/core/common/autofill_util.cc.orig 2019-12-12 12:39:29 UTC
++++ components/autofill/core/common/autofill_util.cc
+@@ -213,7 +213,7 @@ bool SanitizedFieldIsEmpty(const base::string16& value
+ }
+
+ bool ShouldAutoselectFirstSuggestionOnArrowDown() {
+-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+ return true;
+ #else
+ return false;
diff --git a/devel/electron7/files/patch-components_content__settings_core_browser_website__settings__registry.cc b/devel/electron7/files/patch-components_content__settings_core_browser_website__settings__registry.cc
new file mode 100644
index 000000000000..62b6921d8665
--- /dev/null
+++ b/devel/electron7/files/patch-components_content__settings_core_browser_website__settings__registry.cc
@@ -0,0 +1,11 @@
+--- components/content_settings/core/browser/website_settings_registry.cc.orig 2019-12-12 12:39:29 UTC
++++ components/content_settings/core/browser/website_settings_registry.cc
+@@ -66,7 +66,7 @@ const WebsiteSettingsInfo* WebsiteSettingsRegistry::Re
+ #if defined(OS_WIN)
+ if (!(platform & PLATFORM_WINDOWS))
+ return nullptr;
+-#elif defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#elif (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ if (!(platform & PLATFORM_LINUX))
+ return nullptr;
+ #elif defined(OS_MACOSX) && !defined(OS_IOS)
diff --git a/devel/electron7/files/patch-components_cookie__config_cookie__store__util.cc b/devel/electron7/files/patch-components_cookie__config_cookie__store__util.cc
new file mode 100644
index 000000000000..36b1e09f886c
--- /dev/null
+++ b/devel/electron7/files/patch-components_cookie__config_cookie__store__util.cc
@@ -0,0 +1,24 @@
+--- components/cookie_config/cookie_store_util.cc.orig 2019-12-12 12:39:29 UTC
++++ components/cookie_config/cookie_store_util.cc
+@@ -11,7 +11,7 @@
+
+ namespace cookie_config {
+
+-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+ namespace {
+
+ // Use the operating system's mechanisms to encrypt cookies before writing
+@@ -63,10 +63,10 @@ base::LazyInstance<CookieOSCryptoDelegate>::Destructor
+ net::CookieCryptoDelegate* GetCookieCryptoDelegate() {
+ return g_cookie_crypto_delegate.Pointer();
+ }
+-#else // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
++#else // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+ net::CookieCryptoDelegate* GetCookieCryptoDelegate() {
+ return NULL;
+ }
+-#endif // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
++#endif // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+
+ } // namespace cookie_config
diff --git a/devel/electron7/files/patch-components_crash_content_app_BUILD.gn b/devel/electron7/files/patch-components_crash_content_app_BUILD.gn
new file mode 100644
index 000000000000..4d4114a41ebd
--- /dev/null
+++ b/devel/electron7/files/patch-components_crash_content_app_BUILD.gn
@@ -0,0 +1,20 @@
+--- components/crash/content/app/BUILD.gn.orig 2019-12-12 12:39:29 UTC
++++ components/crash/content/app/BUILD.gn
+@@ -54,7 +54,7 @@ static_library("app") {
+ sources += [ "crashpad.cc" ]
+ }
+
+- if (is_linux) {
++ if (is_linux && !is_bsd) {
+ sources += [
+ "breakpad_linux.cc",
+ "breakpad_linux.h",
+@@ -98,7 +98,7 @@ static_library("app") {
+ ]
+ }
+
+- if (is_linux) {
++ if (is_linux && !is_bsd) {
+ deps += [ "//third_party/breakpad:client" ]
+ }
+
diff --git a/devel/electron7/files/patch-components_crash_content_app_crashpad.cc b/devel/electron7/files/patch-components_crash_content_app_crashpad.cc
new file mode 100644
index 000000000000..297d992541e4
--- /dev/null
+++ b/devel/electron7/files/patch-components_crash_content_app_crashpad.cc
@@ -0,0 +1,43 @@
+--- components/crash/content/app/crashpad.cc.orig 2019-12-12 12:39:29 UTC
++++ components/crash/content/app/crashpad.cc
+@@ -104,6 +104,12 @@ void InitializeCrashpadImpl(bool initial_client,
+ const base::FilePath& exe_path,
+ const std::vector<std::string>& initial_arguments,
+ bool embedded_handler) {
++
++#if defined(OS_BSD)
++ NOTIMPLEMENTED();
++ return;
++#endif
++
+ static bool initialized = false;
+ DCHECK(!initialized);
+ initialized = true;
+@@ -124,7 +130,7 @@ void InitializeCrashpadImpl(bool initial_client,
+ DCHECK(browser_process || process_type == "Chrome Installer" ||
+ process_type == "notification-helper" ||
+ process_type == "GCPW Installer" || process_type == "GCPW DLL");
+-#elif defined(OS_LINUX) || defined(OS_ANDROID)
++#elif defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
+ DCHECK(browser_process);
+ #else
+ #error Port.
+@@ -192,7 +198,7 @@ void InitializeCrashpadImpl(bool initial_client,
+ // other "main, first process" to initialize things. There is no "relauncher"
+ // on Windows, so this is synonymous with initial_client.
+ const bool should_initialize_database_and_set_upload_policy = initial_client;
+-#elif defined(OS_LINUX) || defined(OS_ANDROID)
++#elif defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
+ const bool should_initialize_database_and_set_upload_policy = browser_process;
+ #endif
+ if (should_initialize_database_and_set_upload_policy) {
+@@ -272,7 +278,9 @@ bool GetUploadsEnabled() {
+
+ #if !defined(OS_ANDROID)
+ void DumpWithoutCrashing() {
++#if !defined(OS_BSD)
+ CRASHPAD_SIMULATE_CRASH();
++#endif
+ }
+ #endif
+
diff --git a/devel/electron7/files/patch-components_crash_content_browser_BUILD.gn b/devel/electron7/files/patch-components_crash_content_browser_BUILD.gn
new file mode 100644
index 000000000000..e72e55545eda
--- /dev/null
+++ b/devel/electron7/files/patch-components_crash_content_browser_BUILD.gn
@@ -0,0 +1,27 @@
+--- components/crash/content/browser/BUILD.gn.orig 2019-12-12 12:39:29 UTC
++++ components/crash/content/browser/BUILD.gn
+@@ -28,7 +28,7 @@ source_set("browser") {
+ "//content/public/common",
+ ]
+
+- if (is_linux || is_android) {
++ if ((is_linux && !is_bsd) || is_android) {
+ set_sources_assignment_filter([])
+
+ # Want this file on both Linux and Android.
+@@ -42,13 +42,13 @@ source_set("browser") {
+ deps += [ "//third_party/crashpad/crashpad/client" ]
+ }
+
+- if (!is_android) {
++ if (!is_android && !is_bsd) {
+ deps += [ "//third_party/breakpad:client" ]
+ }
+
+ # This is not in the GYP build but this target includes breakpad client
+ # headers, so add the dependency here.
+- if ((is_posix && !is_ios) || is_fuchsia) {
++ if ((is_posix && !is_ios && !is_bsd) || is_fuchsia) {
+ configs += [ "//third_party/breakpad:client_config" ]
+ public_configs = [ "//third_party/breakpad:client_config" ]
+ }
diff --git a/devel/electron7/files/patch-components_crash_core_common_BUILD.gn b/devel/electron7/files/patch-components_crash_core_common_BUILD.gn
new file mode 100644
index 000000000000..4a744f1bbf1b
--- /dev/null
+++ b/devel/electron7/files/patch-components_crash_core_common_BUILD.gn
@@ -0,0 +1,28 @@
+--- components/crash/core/common/BUILD.gn.orig 2019-12-12 12:39:29 UTC
++++ components/crash/core/common/BUILD.gn
+@@ -7,7 +7,7 @@ import("//components/gwp_asan/buildflags/buildflags.gn
+
+ declare_args() {
+ # If set to true, this will stub out and disable the entire crash key system.
+- use_crash_key_stubs = is_fuchsia
++ use_crash_key_stubs = is_fuchsia || is_bsd
+ }
+
+ group("common") {
+@@ -93,7 +93,6 @@ target(crash_key_target_type, "crash_key") {
+ ]
+ }
+
+- deps += [ "//third_party/breakpad:client" ]
+ }
+ }
+
+@@ -153,7 +152,7 @@ source_set("unit_tests") {
+ sources += [ "objc_zombie_unittest.mm" ]
+ }
+
+- if (!is_mac && !is_ios && !is_win && !is_fuchsia && !is_android) {
++ if (!is_mac && !is_ios && !is_win && !is_fuchsia && !is_android && !is_bsd) {
+ include_dirs = [ "//third_party/breakpad/breakpad/src/" ]
+ sources += [ "crash_key_breakpad_unittest.cc" ]
+ }
diff --git a/devel/electron7/files/patch-components_discardable__memory_service_discardable__shared__memory__manager.cc b/devel/electron7/files/patch-components_discardable__memory_service_discardable__shared__memory__manager.cc
new file mode 100644
index 000000000000..d118620adc5c
--- /dev/null
+++ b/devel/electron7/files/patch-components_discardable__memory_service_discardable__shared__memory__manager.cc
@@ -0,0 +1,20 @@
+--- components/discardable_memory/service/discardable_shared_memory_manager.cc.orig 2019-12-12 12:39:30 UTC
++++ components/discardable_memory/service/discardable_shared_memory_manager.cc
+@@ -32,7 +32,7 @@
+ #include "components/discardable_memory/common/discardable_shared_memory_heap.h"
+ #include "mojo/public/cpp/bindings/strong_binding.h"
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include "base/files/file_path.h"
+ #include "base/files/file_util.h"
+ #include "base/metrics/histogram_macros.h"
+@@ -176,7 +176,7 @@ int64_t GetDefaultMemoryLimit() {
+ max_default_memory_limit /= 8;
+ #endif
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ base::FilePath shmem_dir;
+ if (base::GetShmemTempDir(false, &shmem_dir)) {
+ int64_t shmem_dir_amount_of_free_space =
diff --git a/devel/electron7/files/patch-components_download_internal_common_base__file.cc b/devel/electron7/files/patch-components_download_internal_common_base__file.cc
new file mode 100644
index 000000000000..584185972369
--- /dev/null
+++ b/devel/electron7/files/patch-components_download_internal_common_base__file.cc
@@ -0,0 +1,20 @@
+--- components/download/internal/common/base_file.cc.orig 2019-12-12 12:39:30 UTC
++++ components/download/internal/common/base_file.cc
+@@ -593,7 +593,7 @@ GURL GetEffectiveAuthorityURL(const GURL& source_url,
+
+ } // namespace
+
+-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+
+ DownloadInterruptReason BaseFile::AnnotateWithSourceInformationSync(
+ const std::string& client_guid,
+@@ -611,7 +611,7 @@ DownloadInterruptReason BaseFile::AnnotateWithSourceIn
+
+ return QuarantineFileResultToReason(result);
+ }
+-#else // !OS_WIN && !OS_MACOSX && !OS_LINUX
++#else // !OS_WIN && !OS_MACOSX && !OS_LINUX && !OS_BSD
+ DownloadInterruptReason BaseFile::AnnotateWithSourceInformationSync(
+ const std::string& client_guid,
+ const GURL& source_url,
diff --git a/devel/electron7/files/patch-components_feature__engagement_public_event__constants.cc b/devel/electron7/files/patch-components_feature__engagement_public_event__constants.cc
new file mode 100644
index 000000000000..de423b3c49c0
--- /dev/null
+++ b/devel/electron7/files/patch-components_feature__engagement_public_event__constants.cc
@@ -0,0 +1,27 @@
+--- components/feature_engagement/public/event_constants.cc.orig 2019-12-12 12:39:30 UTC
++++ components/feature_engagement/public/event_constants.cc
+@@ -12,12 +12,12 @@ namespace feature_engagement {
+ namespace events {
+
+ #if defined(OS_IOS) || defined(OS_WIN) || defined(OS_MACOSX) || \
+- defined(OS_LINUX) || defined(OS_CHROMEOS)
++ defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ const char kNewTabOpened[] = "new_tab_opened";
+ #endif // defined(OS_IOS) || defined(OS_WIN) || defined(OS_MACOSX) ||
+- // defined(OS_LINUX) || defined(OS_CHROMEOS)
++ // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+
+-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || \
++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD) || \
+ defined(OS_CHROMEOS)
+ const char kReopenTabConditionsMet[] = "reopen_tab_conditions_met";
+ const char kTabReopened[] = "tab_reopened";
+@@ -39,7 +39,7 @@ const char kIncognitoWindowOpened[] = "incognito_windo
+ const char kIncognitoWindowSessionTimeMet[] =
+ "incognito_window_session_time_met";
+ #endif // BUILDFLAG(ENABLE_LEGACY_DESKTOP_IN_PRODUCT_HELP)
+-#endif // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) ||
++#endif // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD) ||
+ // defined(OS_CHROMEOS)
+
+ #if defined(OS_IOS)
diff --git a/devel/electron7/files/patch-components_feature__engagement_public_event__constants.h b/devel/electron7/files/patch-components_feature__engagement_public_event__constants.h
new file mode 100644
index 000000000000..a5f1d675fbcd
--- /dev/null
+++ b/devel/electron7/files/patch-components_feature__engagement_public_event__constants.h
@@ -0,0 +1,30 @@
+--- components/feature_engagement/public/event_constants.h.orig 2019-12-12 12:39:30 UTC
++++ components/feature_engagement/public/event_constants.h
+@@ -14,15 +14,15 @@ namespace events {
+
+ // Desktop and IOS.
+ #if defined(OS_IOS) || defined(OS_WIN) || defined(OS_MACOSX) || \
+- defined(OS_LINUX) || defined(OS_CHROMEOS)
++ defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ // The user has explicitly opened a new tab via an entry point from inside of
+ // Chrome.
+ extern const char kNewTabOpened[];
+ #endif // defined(OS_IOS) || defined(OS_WIN) || defined(OS_MACOSX) ||
+- // defined(OS_LINUX) || defined(OS_CHROMEOS)
++ // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+
+ // Desktop
+-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || \
++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD) || \
+ defined(OS_CHROMEOS)
+ // All conditions for reopen closed tab IPH were met. Since this IPH needs to
+ // track user events (opening/closing tabs, focusing the omnibox, etc) on the
+@@ -75,7 +75,7 @@ extern const char kIncognitoWindowOpened[];
+ extern const char kIncognitoWindowSessionTimeMet[];
+ #endif // BUILDFLAG(ENABLE_LEGACY_DESKTOP_IN_PRODUCT_HELP)
+
+-#endif // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) ||
++#endif // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD) ||
+ // defined(OS_CHROMEOS)
+
+ #if defined(OS_IOS)
diff --git a/devel/electron7/files/patch-components_feature__engagement_public_feature__constants.cc b/devel/electron7/files/patch-components_feature__engagement_public_feature__constants.cc
new file mode 100644
index 000000000000..238d43a92494
--- /dev/null
+++ b/devel/electron7/files/patch-components_feature__engagement_public_feature__constants.cc
@@ -0,0 +1,20 @@
+--- components/feature_engagement/public/feature_constants.cc.orig 2019-12-12 12:39:30 UTC
++++ components/feature_engagement/public/feature_constants.cc
+@@ -14,7 +14,7 @@ const base::Feature kIPHDemoMode{"IPH_DemoMode",
+ const base::Feature kIPHDummyFeature{"IPH_Dummy",
+ base::FEATURE_DISABLED_BY_DEFAULT};
+
+-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || \
++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD) || \
+ defined(OS_CHROMEOS)
+ const base::Feature kIPHFocusModeFeature{"IPH_FocusMode",
+ base::FEATURE_DISABLED_BY_DEFAULT};
+@@ -31,7 +31,7 @@ const base::Feature kIPHIncognitoWindowFeature{
+ const base::Feature kIPHNewTabFeature{"IPH_NewTab",
+ base::FEATURE_DISABLED_BY_DEFAULT};
+ #endif // BUILDFLAG(ENABLE_LEGACY_DESKTOP_IN_PRODUCT_HELP)
+-#endif // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) ||
++#endif // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD) ||
+ // defined(OS_CHROMEOS)
+
+ #if defined(OS_ANDROID)
diff --git a/devel/electron7/files/patch-components_feature__engagement_public_feature__constants.h b/devel/electron7/files/patch-components_feature__engagement_public_feature__constants.h
new file mode 100644
index 000000000000..01bf73341bec
--- /dev/null
+++ b/devel/electron7/files/patch-components_feature__engagement_public_feature__constants.h
@@ -0,0 +1,20 @@
+--- components/feature_engagement/public/feature_constants.h.orig 2019-12-12 12:39:30 UTC
++++ components/feature_engagement/public/feature_constants.h
+@@ -17,7 +17,7 @@ extern const base::Feature kIPHDemoMode;
+ // A feature to ensure all arrays can contain at least one feature.
+ extern const base::Feature kIPHDummyFeature;
+
+-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || \
++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD) || \
+ defined(OS_CHROMEOS)
+ extern const base::Feature kIPHFocusModeFeature;
+ extern const base::Feature kIPHGlobalMediaControlsFeature;
+@@ -28,7 +28,7 @@ extern const base::Feature kIPHBookmarkFeature;
+ extern const base::Feature kIPHIncognitoWindowFeature;
+ extern const base::Feature kIPHNewTabFeature;
+ #endif // BUILDFLAG(ENABLE_LEGACY_DESKTOP_IPH)
+-#endif // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) ||
++#endif // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD) ||
+ // defined(OS_CHROMEOS)
+
+ // All the features declared for Android below that are also used in Java,
diff --git a/devel/electron7/files/patch-components_feature__engagement_public_feature__list.cc b/devel/electron7/files/patch-components_feature__engagement_public_feature__list.cc
new file mode 100644
index 000000000000..38bb25a58b28
--- /dev/null
+++ b/devel/electron7/files/patch-components_feature__engagement_public_feature__list.cc
@@ -0,0 +1,20 @@
+--- components/feature_engagement/public/feature_list.cc.orig 2019-12-12 12:39:30 UTC
++++ components/feature_engagement/public/feature_list.cc
+@@ -57,7 +57,7 @@ const base::Feature* const kAllFeatures[] = {
+ &kIPHBadgedReadingListFeature,
+ &kIPHBadgedTranslateManualTriggerFeature,
+ #endif // defined(OS_IOS)
+-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || \
++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD) || \
+ defined(OS_CHROMEOS)
+ &kIPHFocusModeFeature,
+ &kIPHGlobalMediaControlsFeature,
+@@ -67,7 +67,7 @@ const base::Feature* const kAllFeatures[] = {
+ &kIPHIncognitoWindowFeature,
+ &kIPHNewTabFeature,
+ #endif // BUILDFLAG(ENABLE_LEGACY_DESKTOP_IN_PRODUCT_HELP)
+-#endif // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) ||
++#endif // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD) ||
+ // defined(OS_CHROMEOS)
+ };
+ } // namespace
diff --git a/devel/electron7/files/patch-components_feature__engagement_public_feature__list.h b/devel/electron7/files/patch-components_feature__engagement_public_feature__list.h
new file mode 100644
index 000000000000..a040a2102f6b
--- /dev/null
+++ b/devel/electron7/files/patch-components_feature__engagement_public_feature__list.h
@@ -0,0 +1,38 @@
+--- components/feature_engagement/public/feature_list.h.orig 2019-12-12 12:39:30 UTC
++++ components/feature_engagement/public/feature_list.h
+@@ -107,7 +107,7 @@ DEFINE_VARIATION_PARAM(kIPHBadgedTranslateManualTrigge
+ "IPH_BadgedTranslateManualTrigger");
+ #endif // defined(OS_IOS)
+
+-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || \
++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD) || \
+ defined(OS_CHROMEOS)
+ DEFINE_VARIATION_PARAM(kIPHFocusModeFeature, "IPH_FocusMode");
+ DEFINE_VARIATION_PARAM(kIPHGlobalMediaControls, "IPH_GlobalMediaControls");
+@@ -117,7 +117,7 @@ DEFINE_VARIATION_PARAM(kIPHBookmarkFeature, "IPH_Bookm
+ DEFINE_VARIATION_PARAM(kIPHIncognitoWindowFeature, "IPH_IncognitoWindow");
+ DEFINE_VARIATION_PARAM(kIPHNewTabFeature, "IPH_NewTab");
+ #endif // BUILDFLAG(ENABLE_LEGACY_DESKTOP_IN_PRODUCT_HELP)
+-#endif // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) ||
++#endif // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD) ||
+ // defined(OS_CHROMEOS)
+
+ } // namespace
+@@ -166,7 +166,7 @@ constexpr flags_ui::FeatureEntry::FeatureVariation
+ VARIATION_ENTRY(kIPHNewIncognitoTabTipFeature),
+ VARIATION_ENTRY(kIPHBadgedReadingListFeature),
+ VARIATION_ENTRY(kIPHBadgedTranslateManualTriggerFeature),
+-#elif defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || \
++#elif defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD) || \
+ defined(OS_CHROMEOS)
+ VARIATION_ENTRY(kIPHFocusModeFeature),
+ VARIATION_ENTRY(kIPHGlobalMediaControls),
+@@ -176,7 +176,7 @@ constexpr flags_ui::FeatureEntry::FeatureVariation
+ VARIATION_ENTRY(kIPHIncognitoWindowFeature),
+ VARIATION_ENTRY(kIPHNewTabFeature),
+ #endif // BUILDFLAG(ENABLE_LEGACY_DESKTOP_IN_PRODUCT_HELP)
+-#endif // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) ||
++#endif // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD) ||
+ // defined(OS_CHROMEOS)
+ };
+
diff --git a/devel/electron7/files/patch-components_feedback_anonymizer__tool.cc b/devel/electron7/files/patch-components_feedback_anonymizer__tool.cc
new file mode 100644
index 000000000000..c8005bb81d6e
--- /dev/null
+++ b/devel/electron7/files/patch-components_feedback_anonymizer__tool.cc
@@ -0,0 +1,14 @@
+--- components/feedback/anonymizer_tool.cc.orig 2019-12-12 12:39:30 UTC
++++ components/feedback/anonymizer_tool.cc
+@@ -14,7 +14,11 @@
+ #include "base/strings/stringprintf.h"
+ #include "content/public/browser/browser_thread.h"
+ #include "net/base/ip_address.h"
++#if defined(OS_BSD)
++#include <re2/re2.h>
++#else
+ #include "third_party/re2/src/re2/re2.h"
++#endif
+
+ using re2::RE2;
+
diff --git a/devel/electron7/files/patch-components_flags__ui_flags__state.cc b/devel/electron7/files/patch-components_flags__ui_flags__state.cc
new file mode 100644
index 000000000000..eb2990f6af11
--- /dev/null
+++ b/devel/electron7/files/patch-components_flags__ui_flags__state.cc
@@ -0,0 +1,11 @@
+--- components/flags_ui/flags_state.cc.orig 2019-12-12 12:39:30 UTC
++++ components/flags_ui/flags_state.cc
+@@ -690,7 +690,7 @@ int FlagsState::GetCurrentPlatform() {
+ return kOsWin;
+ #elif defined(OS_CHROMEOS) // Needs to be before the OS_LINUX check.
+ return kOsCrOS;
+-#elif defined(OS_LINUX) || defined(OS_OPENBSD)
++#elif defined(OS_LINUX) || defined(OS_OPENBSD) || defined(OS_FREEBSD)
+ return kOsLinux;
+ #elif defined(OS_ANDROID)
+ return kOsAndroid;
diff --git a/devel/electron7/files/patch-components_gcm__driver_gcm__client.h b/devel/electron7/files/patch-components_gcm__driver_gcm__client.h
new file mode 100644
index 000000000000..a74edf485eae
--- /dev/null
+++ b/devel/electron7/files/patch-components_gcm__driver_gcm__client.h
@@ -0,0 +1,10 @@
+--- components/gcm_driver/gcm_client.h.orig 2019-12-12 12:39:30 UTC
++++ components/gcm_driver/gcm_client.h
+@@ -86,6 +86,7 @@ class GCMClient {
+ PLATFORM_CROS,
+ PLATFORM_IOS,
+ PLATFORM_ANDROID,
++ PLATFORM_BSD,
+ PLATFORM_UNSPECIFIED
+ };
+
diff --git a/devel/electron7/files/patch-components_gcm__driver_gcm__client__impl.cc b/devel/electron7/files/patch-components_gcm__driver_gcm__client__impl.cc
new file mode 100644
index 000000000000..e5aa6ab338fa
--- /dev/null
+++ b/devel/electron7/files/patch-components_gcm__driver_gcm__client__impl.cc
@@ -0,0 +1,12 @@
+--- components/gcm_driver/gcm_client_impl.cc.orig 2019-12-12 12:39:30 UTC
++++ components/gcm_driver/gcm_client_impl.cc
+@@ -134,6 +134,9 @@ void ToCheckinProtoVersion(
+ case GCMClient::PLATFORM_CROS:
+ platform = checkin_proto::ChromeBuildProto_Platform_PLATFORM_CROS;
+ break;
++ case GCMClient::PLATFORM_BSD:
++ platform = checkin_proto::ChromeBuildProto_Platform_PLATFORM_LINUX;
++ break;
+ case GCMClient::PLATFORM_UNSPECIFIED:
+ // For unknown platform, return as LINUX.
+ platform = checkin_proto::ChromeBuildProto_Platform_PLATFORM_LINUX;
diff --git a/devel/electron7/files/patch-components_keyed__service_core_dependency__graph__unittest.cc b/devel/electron7/files/patch-components_keyed__service_core_dependency__graph__unittest.cc
new file mode 100644
index 000000000000..a79bf2414d3f
--- /dev/null
+++ b/devel/electron7/files/patch-components_keyed__service_core_dependency__graph__unittest.cc
@@ -0,0 +1,14 @@
+--- components/keyed_service/core/dependency_graph_unittest.cc.orig 2019-12-12 12:39:30 UTC
++++ components/keyed_service/core/dependency_graph_unittest.cc
+@@ -9,7 +9,11 @@
+ #include "components/keyed_service/core/dependency_graph.h"
+ #include "components/keyed_service/core/dependency_node.h"
+ #include "testing/gtest/include/gtest/gtest.h"
++#if defined(OS_BSD)
++#include <re2/re2.h>
++#else
+ #include "third_party/re2/src/re2/re2.h"
++#endif
+
+ namespace {
+
diff --git a/devel/electron7/files/patch-components_metrics_BUILD.gn b/devel/electron7/files/patch-components_metrics_BUILD.gn
new file mode 100644
index 000000000000..6f178893ccb7
--- /dev/null
+++ b/devel/electron7/files/patch-components_metrics_BUILD.gn
@@ -0,0 +1,14 @@
+--- components/metrics/BUILD.gn.orig 2019-12-12 12:39:30 UTC
++++ components/metrics/BUILD.gn
+@@ -164,6 +164,11 @@ jumbo_static_library("metrics") {
+ if (is_fuchsia) {
+ sources += [ "drive_metrics_provider_fuchsia.cc" ]
+ }
++
++ if (is_bsd) {
++ sources -= [ "system_memory_stats_recorder_linux.cc" ]
++ }
++
+ }
+
+ # The component metrics provider is a separate target because it depends upon
diff --git a/devel/electron7/files/patch-components_metrics_drive__metrics__provider__linux.cc b/devel/electron7/files/patch-components_metrics_drive__metrics__provider__linux.cc
new file mode 100644
index 000000000000..14845ae91b56
--- /dev/null
+++ b/devel/electron7/files/patch-components_metrics_drive__metrics__provider__linux.cc
@@ -0,0 +1,16 @@
+--- components/metrics/drive_metrics_provider_linux.cc.orig 2019-12-12 12:39:30 UTC
++++ components/metrics/drive_metrics_provider_linux.cc
+@@ -4,7 +4,13 @@
+
+ #include "components/metrics/drive_metrics_provider.h"
+
++#if defined(OS_BSD)
++#include <sys/types.h>
++#define MAJOR(dev) major(dev)
++#define MINOR(dev) minor(dev)
++#else
+ #include <linux/kdev_t.h> // For MAJOR()/MINOR().
++#endif
+ #include <sys/stat.h>
+ #include <string>
+
diff --git a/devel/electron7/files/patch-components_metrics_metrics__log.cc b/devel/electron7/files/patch-components_metrics_metrics__log.cc
new file mode 100644
index 000000000000..718e4b94a788
--- /dev/null
+++ b/devel/electron7/files/patch-components_metrics_metrics__log.cc
@@ -0,0 +1,11 @@
+--- components/metrics/metrics_log.cc.orig 2019-12-12 12:39:30 UTC
++++ components/metrics/metrics_log.cc
+@@ -202,7 +202,7 @@ void MetricsLog::RecordCoreSystemProfile(
+ // OperatingSystemVersion refers to the ChromeOS release version.
+ #if defined(OS_CHROMEOS)
+ os->set_kernel_version(base::SysInfo::KernelVersion());
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ // Linux operating system version is copied over into kernel version to be
+ // consistent.
+ os->set_kernel_version(base::SysInfo::OperatingSystemVersion());
diff --git a/devel/electron7/files/patch-components_metrics_system__memory__stats__recorder__linux.cc b/devel/electron7/files/patch-components_metrics_system__memory__stats__recorder__linux.cc
new file mode 100644
index 000000000000..d0d8ef1ef9be
--- /dev/null
+++ b/devel/electron7/files/patch-components_metrics_system__memory__stats__recorder__linux.cc
@@ -0,0 +1,18 @@
+--- components/metrics/system_memory_stats_recorder_linux.cc.orig 2019-12-12 12:39:30 UTC
++++ components/metrics/system_memory_stats_recorder_linux.cc
+@@ -30,6 +30,7 @@ namespace metrics {
+ UMA_HISTOGRAM_LINEAR(name, sample, 2500, 50)
+
+ void RecordMemoryStats(RecordMemoryStatsType type) {
++#if !defined(OS_FREEBSD)
+ base::SystemMemoryInfoKB memory;
+ if (!base::GetSystemMemoryInfo(&memory))
+ return;
+@@ -81,6 +82,7 @@ void RecordMemoryStats(RecordMemoryStatsType type) {
+ break;
+ }
+ }
++#endif // !defined(OS_FREEBSD)
+ }
+
+ } // namespace metrics
diff --git a/devel/electron7/files/patch-components_neterror_resources_neterror.js b/devel/electron7/files/patch-components_neterror_resources_neterror.js
new file mode 100644
index 000000000000..3e8ae614bd79
--- /dev/null
+++ b/devel/electron7/files/patch-components_neterror_resources_neterror.js
@@ -0,0 +1,11 @@
+--- components/neterror/resources/neterror.js.orig 2019-12-12 12:39:30 UTC
++++ components/neterror/resources/neterror.js
+@@ -160,7 +160,7 @@ function setUpCachedButton(buttonStrings) {
+ }
+
+ var primaryControlOnLeft = true;
+-// <if expr="is_macosx or is_ios or is_linux or is_android">
++// <if expr="is_macosx or is_ios or is_linux or is_android or is_bsd">
+ primaryControlOnLeft = false;
+ // </if>
+
diff --git a/devel/electron7/files/patch-components_network__session__configurator_browser_network__session__configurator.cc b/devel/electron7/files/patch-components_network__session__configurator_browser_network__session__configurator.cc
new file mode 100644
index 000000000000..19ba955c8dd9
--- /dev/null
+++ b/devel/electron7/files/patch-components_network__session__configurator_browser_network__session__configurator.cc
@@ -0,0 +1,11 @@
+--- components/network_session_configurator/browser/network_session_configurator.cc.orig 2019-12-12 12:39:30 UTC
++++ components/network_session_configurator/browser/network_session_configurator.cc
+@@ -763,7 +763,7 @@ net::URLRequestContextBuilder::HttpCacheParams::Type C
+ }
+ #endif // #if !defined(OS_ANDROID)
+
+-#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ return net::URLRequestContextBuilder::HttpCacheParams::DISK_SIMPLE;
+ #else
+ return net::URLRequestContextBuilder::HttpCacheParams::DISK_BLOCKFILE;
diff --git a/devel/electron7/files/patch-components_new__or__sad__tab__strings.grdp b/devel/electron7/files/patch-components_new__or__sad__tab__strings.grdp
new file mode 100644
index 000000000000..cf892388be18
--- /dev/null
+++ b/devel/electron7/files/patch-components_new__or__sad__tab__strings.grdp
@@ -0,0 +1,38 @@
+--- components/new_or_sad_tab_strings.grdp.orig 2019-12-12 12:39:30 UTC
++++ components/new_or_sad_tab_strings.grdp
+@@ -51,7 +51,7 @@
+ Open page in a new Incognito window (⇧⌘N)
+ </message>
+ </if>
+- <if expr="is_win or is_linux or chromeos">
++ <if expr="is_win or is_posix or chromeos">
+ <message name="IDS_SAD_TAB_RELOAD_INCOGNITO" desc="One of the bullet points displayed on the web page if a reload failed to fix the issue, advising the user to open the web page in Chrome's Incognito mode.">
+ Open page in a new Incognito window (Ctrl-Shift-N)
+ </message>
+@@ -66,7 +66,7 @@
+ Close other tabs or apps
+ </message>
+ </if>
+- <if expr="is_linux and not chromeos">
++ <if expr="is_posix and not chromeos">
+ <message name="IDS_SAD_TAB_RELOAD_CLOSE_TABS" desc="One of the bullet points displayed on the web page if a reload failed to fix the issue, advising the user to close other Chrome tabs or programs running on their computer.">
+ Close other tabs or programs
+ </message>
+@@ -76,7 +76,7 @@
+ Close other apps
+ </message>
+ </if>
+- <if expr="is_linux and not chromeos">
++ <if expr="is_posix and not chromeos">
+ <message name="IDS_SAD_TAB_RELOAD_CLOSE_NOTABS" desc="One of the bullet points displayed on the web page if a reload failed to fix the issue, advising the user to close other programs running on their computer (Linux).">
+ Close other programs
+ </message>
+@@ -91,7 +91,7 @@
+ Restart Chromium
+ </message>
+ </if>
+- <if expr="is_win or is_linux or is_macosx or chromeos">
++ <if expr="is_win or is_posix or is_macosx or chromeos">
+ <message name="IDS_SAD_TAB_RELOAD_RESTART_DEVICE" desc="One of the bullet points displayed on the web page if a reload failed to fix the issue, advising the user to restart their computer.">
+ Restart your computer
+ </message>
diff --git a/devel/electron7/files/patch-components_os__crypt_os__crypt.h b/devel/electron7/files/patch-components_os__crypt_os__crypt.h
new file mode 100644
index 000000000000..3676c4387896
--- /dev/null
+++ b/devel/electron7/files/patch-components_os__crypt_os__crypt.h
@@ -0,0 +1,48 @@
+--- components/os_crypt/os_crypt.h.orig 2019-12-12 12:39:30 UTC
++++ components/os_crypt/os_crypt.h
+@@ -15,9 +15,9 @@
+ #include "base/strings/string16.h"
+ #include "build/build_config.h"
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ class KeyStorageLinux;
+-#endif // defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#endif // (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+
+ #if defined(OS_MACOSX) && !defined(OS_IOS)
+ class PrefRegistrySimple;
+@@ -34,13 +34,13 @@ struct Config;
+ // true for Linux, if a password management tool is available.
+ class OSCrypt {
+ public:
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ // Set the configuration of OSCrypt.
+ static COMPONENT_EXPORT(OS_CRYPT) void SetConfig(
+ std::unique_ptr<os_crypt::Config> config);
+-#endif // defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#endif // (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+
+-#if defined(OS_MACOSX) || (defined(OS_LINUX) && !defined(OS_CHROMEOS))
++#if defined(OS_MACOSX) || (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ // On Linux returns true iff the real secret key (not hardcoded one) is
+ // available. On MacOS returns true if Keychain is available (for mock
+ // Keychain it returns true if not using locked Keychain, false if using
+@@ -112,7 +112,7 @@ class OSCrypt {
+ DISALLOW_IMPLICIT_CONSTRUCTORS(OSCrypt);
+ };
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ // For unit testing purposes, inject methods to be used.
+ // |get_key_storage_mock| provides the desired |KeyStorage| implementation.
+ // If the provider returns |nullptr|, a hardcoded password will be used.
+@@ -127,6 +127,6 @@ void UseMockKeyStorageForTesting(
+ // Clears any caching and most lazy initialisations performed by the production
+ // code. Should be used after any test which required a password.
+ COMPONENT_EXPORT(OS_CRYPT) void ClearCacheForTesting();
+-#endif // defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#endif // (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+
+ #endif // COMPONENTS_OS_CRYPT_OS_CRYPT_H_
diff --git a/devel/electron7/files/patch-components_os__crypt_os__crypt__unittest.cc b/devel/electron7/files/patch-components_os__crypt_os__crypt__unittest.cc
new file mode 100644
index 000000000000..ca0db9a26970
--- /dev/null
+++ b/devel/electron7/files/patch-components_os__crypt_os__crypt__unittest.cc
@@ -0,0 +1,11 @@
+--- components/os_crypt/os_crypt_unittest.cc.orig 2019-12-12 12:39:30 UTC
++++ components/os_crypt/os_crypt_unittest.cc
+@@ -18,7 +18,7 @@
+ #include "components/os_crypt/os_crypt_mocker.h"
+ #include "testing/gtest/include/gtest/gtest.h"
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ #include "components/os_crypt/os_crypt_mocker_linux.h"
+ #endif
+
diff --git a/devel/electron7/files/patch-components_plugins_renderer_plugin__placeholder.cc b/devel/electron7/files/patch-components_plugins_renderer_plugin__placeholder.cc
new file mode 100644
index 000000000000..482f1c1f03c9
--- /dev/null
+++ b/devel/electron7/files/patch-components_plugins_renderer_plugin__placeholder.cc
@@ -0,0 +1,14 @@
+--- components/plugins/renderer/plugin_placeholder.cc.orig 2019-12-12 12:39:31 UTC
++++ components/plugins/renderer/plugin_placeholder.cc
+@@ -17,7 +17,11 @@
+ #include "third_party/blink/public/web/web_plugin_container.h"
+ #include "third_party/blink/public/web/web_script_source.h"
+ #include "third_party/blink/public/web/web_serialized_script_value.h"
++#if defined(OS_BSD)
++#include <re2/re2.h>
++#else
+ #include "third_party/re2/src/re2/re2.h"
++#endif // defined(OS_BSD)
+
+ namespace plugins {
+
diff --git a/devel/electron7/files/patch-components_policy_core_common_cloud_cloud__policy__util.cc b/devel/electron7/files/patch-components_policy_core_common_cloud_cloud__policy__util.cc
new file mode 100644
index 000000000000..ec4d4b22a8b4
--- /dev/null
+++ b/devel/electron7/files/patch-components_policy_core_common_cloud_cloud__policy__util.cc
@@ -0,0 +1,73 @@
+--- components/policy/core/common/cloud/cloud_policy_util.cc.orig 2019-12-12 12:39:31 UTC
++++ components/policy/core/common/cloud/cloud_policy_util.cc
+@@ -16,7 +16,7 @@
+ #include <wincred.h>
+ #endif
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) || defined(OS_MACOSX)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_MACOSX) || defined(OS_BSD)
+ #include <pwd.h>
+ #include <sys/types.h>
+ #include <unistd.h>
+@@ -28,7 +28,7 @@
+ #include <sys/sysctl.h>
+ #endif
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ #include <limits.h> // For HOST_NAME_MAX
+ #endif
+
+@@ -52,7 +52,7 @@
+ #include "base/system/sys_info.h"
+ #endif
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ #include "base/system/sys_info.h"
+ #endif
+
+@@ -61,11 +61,24 @@ namespace policy {
+ namespace em = enterprise_management;
+
+ std::string GetMachineName() {
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS))
+ char hostname[HOST_NAME_MAX];
+ if (gethostname(hostname, HOST_NAME_MAX) == 0) // Success.
+ return hostname;
+ return std::string();
++#elif defined(OS_BSD)
++ long host_name_max = sysconf(_SC_HOST_NAME_MAX);
++ if (host_name_max != -1) {
++ char *hostname = new char[host_name_max + 1]();
++ std::string hostname_r;
++
++ if (gethostname(hostname, host_name_max) == 0)
++ hostname_r = hostname;
++
++ delete[] hostname;
++ return hostname_r;
++ }
++ return std::string();
+ #elif defined(OS_MACOSX)
+ // Do not use NSHost currentHost, as it's very slow. http://crbug.com/138570
+ SCDynamicStoreContext context = {0, NULL, NULL, NULL};
+@@ -111,7 +124,7 @@ std::string GetMachineName() {
+ }
+
+ std::string GetOSVersion() {
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) || defined(OS_MACOSX)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_MACOSX) || defined(OS_BSD)
+ return base::SysInfo::OperatingSystemVersion();
+ #elif defined(OS_WIN)
+ base::win::OSInfo::VersionNumber version_number =
+@@ -134,7 +147,7 @@ std::string GetOSArchitecture() {
+ }
+
+ std::string GetOSUsername() {
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) || defined(OS_MACOSX)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_MACOSX) || defined(OS_BSD)
+ struct passwd* creds = getpwuid(getuid());
+ if (!creds || !creds->pw_name)
+ return std::string();
diff --git a/devel/electron7/files/patch-components_policy_core_common_schema.cc b/devel/electron7/files/patch-components_policy_core_common_schema.cc
new file mode 100644
index 000000000000..c01d57d27756
--- /dev/null
+++ b/devel/electron7/files/patch-components_policy_core_common_schema.cc
@@ -0,0 +1,14 @@
+--- components/policy/core/common/schema.cc.orig 2019-12-12 12:39:31 UTC
++++ components/policy/core/common/schema.cc
+@@ -23,7 +23,11 @@
+ #include "base/strings/stringprintf.h"
+ #include "components/policy/core/common/json_schema_constants.h"
+ #include "components/policy/core/common/schema_internal.h"
++#if defined(OS_FREEBSD)
++#include <re2/re2.h>
++#else
+ #include "third_party/re2/src/re2/re2.h"
++#endif
+
+ namespace schema = json_schema_constants;
+
diff --git a/devel/electron7/files/patch-components_policy_resources_policy__templates.json b/devel/electron7/files/patch-components_policy_resources_policy__templates.json
new file mode 100644
index 000000000000..1da7f6c419c3
--- /dev/null
+++ b/devel/electron7/files/patch-components_policy_resources_policy__templates.json
@@ -0,0 +1,83 @@
+--- components/policy/resources/policy_templates.json.orig 2019-12-12 12:39:31 UTC
++++ components/policy/resources/policy_templates.json
+@@ -1038,7 +1038,7 @@
+ 'owners': ['file://components/policy/resources/OWNERS'],
+ 'type': 'string',
+ 'schema': { 'type': 'string' },
+- 'supported_on': ['chrome.*:8-', 'chrome_os:11-'],
++ 'supported_on': ['chrome.*:8-', 'chrome_os:11-', 'chrome.freebsd:9-'],
+ 'features': {
+ 'can_be_recommended': True,
+ 'dynamic_refresh': True,
+@@ -1068,7 +1068,7 @@
+ 'owners': ['file://components/policy/resources/OWNERS'],
+ 'type': 'main',
+ 'schema': { 'type': 'boolean' },
+- 'supported_on': ['chrome.*:8-', 'chrome_os:11-'],
++ 'supported_on': ['chrome.*:8-', 'chrome_os:11-', 'chrome.freebsd:9-'],
+ 'features': {
+ 'can_be_recommended': True,
+ 'dynamic_refresh': True,
+@@ -1095,7 +1095,7 @@
+ 'owners': ['file://components/policy/resources/OWNERS'],
+ 'type': 'string',
+ 'schema': { 'type': 'string' },
+- 'supported_on': ['chrome.*:58-', 'chrome_os:58-'],
++ 'supported_on': ['chrome.*:58-', 'chrome_os:58-', 'chrome.freebsd:9-'],
+ 'features': {
+ 'can_be_recommended': True,
+ 'dynamic_refresh': True,
+@@ -1821,7 +1821,7 @@
+ 'owners': ['jamiewalch@chromium.org', 'rkjnsn@chromium.org'],
+ 'type': 'main',
+ 'schema': { 'type': 'boolean' },
+- 'supported_on': ['chrome.linux:25-', 'chrome.mac:25-', 'chrome_os:42-'],
++ 'supported_on': ['chrome.linux:25-', 'chrome.mac:25-', 'chrome_os:42-', 'chrome.freebsd:25-'],
+ 'features': {
+ 'dynamic_refresh': True,
+ 'per_profile': False,
+@@ -3536,7 +3536,7 @@
+ 'owners': ['file://components/policy/resources/OWNERS'],
+ 'type': 'string',
+ 'schema': { 'type': 'string' },
+- 'supported_on': ['chrome.linux:9-'],
++ 'supported_on': ['chrome.linux:9-', 'chrome.freebsd:9-'],
+ 'features': {
+ 'dynamic_refresh': False,
+ 'per_profile': False,
+@@ -3590,7 +3590,7 @@
+ 'owners': ['file://components/policy/resources/OWNERS'],
+ 'type': 'main',
+ 'schema': { 'type': 'boolean' },
+- 'supported_on': ['chrome.linux:63-','chrome.mac:63-','chrome_os:63-','android:63-','webview_android:63-'],
++ 'supported_on': ['chrome.linux:63-','chrome.mac:63-','chrome_os:63-','android:63-','webview_android:63-', 'chrome.freebsd:63-'],
+ 'features': {
+ 'dynamic_refresh': True,
+ 'per_profile': False,
+@@ -6919,7 +6919,7 @@
+ 'owners': ['file://src/net/cert/OWNERS'],
+ 'type': 'main',
+ 'schema': { 'type': 'boolean' },
+- 'supported_on': ['chrome_os:30-', 'chrome.linux:30-', 'chrome.win:30-'],
++ 'supported_on': ['chrome_os:30-', 'chrome.linux:30-', 'chrome.win:30-', 'chrome.freebsd:30-'],
+ 'features': {
+ 'dynamic_refresh': True,
+ 'per_profile': False,
+@@ -8119,7 +8119,7 @@
+ 'owners': ['file://components/policy/resources/OWNERS'],
+ 'type': 'main',
+ 'schema': { 'type': 'boolean' },
+- 'supported_on': ['chrome.win:19-', 'chrome.linux:19-'],
++ 'supported_on': ['chrome.win:19-', 'chrome.linux:19-', 'chrome.freebsd:19-'],
+ 'features': {
+ 'can_be_recommended': True,
+ 'dynamic_refresh': True,
+@@ -8713,7 +8713,7 @@
+ 'owners': ['file://components/policy/resources/OWNERS'],
+ 'type': 'main',
+ 'schema': { 'type': 'boolean' },
+- 'supported_on': ['chrome.win:31-', 'chrome.linux:31-', 'chrome_os:31-'],
++ 'supported_on': ['chrome.win:31-', 'chrome.linux:31-', 'chrome_os:31-', 'chrome.freebsd:31-'],
+ 'features': {
+ 'dynamic_refresh': True,
+ 'per_profile': True,
diff --git a/devel/electron7/files/patch-components_policy_tools_generate__policy__source.py b/devel/electron7/files/patch-components_policy_tools_generate__policy__source.py
new file mode 100644
index 000000000000..a6634ab31491
--- /dev/null
+++ b/devel/electron7/files/patch-components_policy_tools_generate__policy__source.py
@@ -0,0 +1,19 @@
+--- components/policy/tools/generate_policy_source.py.orig 2019-12-12 12:39:31 UTC
++++ components/policy/tools/generate_policy_source.py
+@@ -92,6 +92,7 @@ class PolicyDetails:
+ 'chrome.linux',
+ 'chrome.mac',
+ 'chrome.fuchsia',
++ 'chrome.freebsd',
+ 'chrome.*',
+ 'chrome.win7',
+ ]:
+@@ -114,7 +115,7 @@ class PolicyDetails:
+ if platform.startswith('chrome.'):
+ platform_sub = platform[7:]
+ if platform_sub == '*':
+- self.platforms.extend(['win', 'mac', 'linux', 'fuchsia'])
++ self.platforms.extend(['win', 'mac', 'linux', 'fuchsia', 'freebsd'])
+ elif platform_sub == 'win7':
+ self.platforms.append('win')
+ else:
diff --git a/devel/electron7/files/patch-components_previews_core_previews__features.cc b/devel/electron7/files/patch-components_previews_core_previews__features.cc
new file mode 100644
index 000000000000..186eb8d66f25
--- /dev/null
+++ b/devel/electron7/files/patch-components_previews_core_previews__features.cc
@@ -0,0 +1,18 @@
+--- components/previews/core/previews_features.cc.orig 2019-12-12 12:39:32 UTC
++++ components/previews/core/previews_features.cc
+@@ -14,12 +14,12 @@ namespace features {
+ // are enabled are controlled by other features.
+ const base::Feature kPreviews {
+ "Previews",
+-#if defined(OS_ANDROID) || defined(OS_LINUX)
++#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_BSD)
+ // Previews allowed for Android (but also allow on Linux for dev/debug).
+ base::FEATURE_ENABLED_BY_DEFAULT
+-#else // !defined(OS_ANDROID) || defined(OS_LINUX)
++#else // !defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_BSD)
+ base::FEATURE_DISABLED_BY_DEFAULT
+-#endif // defined(OS_ANDROID) || defined(OS_LINUX)
++#endif // defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_BSD)
+ };
+
+ // Enables the Offline previews on android slow connections.
diff --git a/devel/electron7/files/patch-components_storage__monitor_BUILD.gn b/devel/electron7/files/patch-components_storage__monitor_BUILD.gn
new file mode 100644
index 000000000000..02ab3798f141
--- /dev/null
+++ b/devel/electron7/files/patch-components_storage__monitor_BUILD.gn
@@ -0,0 +1,16 @@
+--- components/storage_monitor/BUILD.gn.orig 2019-12-12 12:39:33 UTC
++++ components/storage_monitor/BUILD.gn
+@@ -81,6 +81,13 @@ static_library("storage_monitor") {
+ }
+ }
+
++ if (is_bsd) {
++ sources += [
++ "storage_monitor_freebsd.cc",
++ "storage_monitor_freebsd.h",
++ ]
++ }
++
+ if (use_udev) {
+ sources += [
+ "udev_util_linux.cc",
diff --git a/devel/electron7/files/patch-components_storage__monitor_removable__device__constants.cc b/devel/electron7/files/patch-components_storage__monitor_removable__device__constants.cc
new file mode 100644
index 000000000000..a2d4f2c93777
--- /dev/null
+++ b/devel/electron7/files/patch-components_storage__monitor_removable__device__constants.cc
@@ -0,0 +1,11 @@
+--- components/storage_monitor/removable_device_constants.cc.orig 2019-12-12 12:39:33 UTC
++++ components/storage_monitor/removable_device_constants.cc
+@@ -10,7 +10,7 @@ namespace storage_monitor {
+ const char kFSUniqueIdPrefix[] = "UUID:";
+ const char kVendorModelSerialPrefix[] = "VendorModelSerial:";
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ const char kVendorModelVolumeStoragePrefix[] = "VendorModelVolumeStorage:";
+ #endif
+
diff --git a/devel/electron7/files/patch-components_storage__monitor_removable__device__constants.h b/devel/electron7/files/patch-components_storage__monitor_removable__device__constants.h
new file mode 100644
index 000000000000..ea4659b12bd6
--- /dev/null
+++ b/devel/electron7/files/patch-components_storage__monitor_removable__device__constants.h
@@ -0,0 +1,11 @@
+--- components/storage_monitor/removable_device_constants.h.orig 2019-12-12 12:39:33 UTC
++++ components/storage_monitor/removable_device_constants.h
+@@ -15,7 +15,7 @@ namespace storage_monitor {
+ extern const char kFSUniqueIdPrefix[];
+ extern const char kVendorModelSerialPrefix[];
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ extern const char kVendorModelVolumeStoragePrefix[];
+ #endif
+
diff --git a/devel/electron7/files/patch-components_storage__monitor_storage__monitor__freebsd.cc b/devel/electron7/files/patch-components_storage__monitor_storage__monitor__freebsd.cc
new file mode 100644
index 000000000000..d2cc7fb1533d
--- /dev/null
+++ b/devel/electron7/files/patch-components_storage__monitor_storage__monitor__freebsd.cc
@@ -0,0 +1,57 @@
+--- components/storage_monitor/storage_monitor_freebsd.cc.orig 2019-12-16 13:33:55 UTC
++++ components/storage_monitor/storage_monitor_freebsd.cc
+@@ -0,0 +1,54 @@
++// Copyright 2014 The Chromium Authors. All rights reserved.
++// Use of this source code is governed by a BSD-style license that can be
++// found in the LICENSE file.
++
++// StorageMonitorFreeBSD implementation.
++
++#include "components/storage_monitor/storage_monitor_freebsd.h"
++
++#include <stdio.h>
++
++#include <list>
++
++#include "base/bind.h"
++#include "base/metrics/histogram.h"
++#include "base/process/kill.h"
++#include "base/process/launch.h"
++#include "base/stl_util.h"
++#include "base/strings/string_number_conversions.h"
++#include "base/strings/string_util.h"
++#include "base/strings/utf_string_conversions.h"
++#include "components/storage_monitor/media_storage_util.h"
++#include "components/storage_monitor/removable_device_constants.h"
++#include "components/storage_monitor/storage_info.h"
++
++using content::BrowserThread;
++
++namespace storage_monitor {
++
++namespace {
++
++} // namespace
++
++StorageMonitorFreeBSD::StorageMonitorFreeBSD() {
++ DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
++}
++
++StorageMonitorFreeBSD::~StorageMonitorFreeBSD() {
++ DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
++}
++
++void StorageMonitorFreeBSD::Init() {
++}
++
++bool StorageMonitorFreeBSD::GetStorageInfoForPath(
++ const base::FilePath& path,
++ StorageInfo* device_info) const {
++ return false; // TODO
++}
++
++StorageMonitor* StorageMonitor::CreateInternal() {
++ return new StorageMonitorFreeBSD();
++}
++
++} // namespace storage_monitor
diff --git a/devel/electron7/files/patch-components_storage__monitor_storage__monitor__freebsd.h b/devel/electron7/files/patch-components_storage__monitor_storage__monitor__freebsd.h
new file mode 100644
index 000000000000..7f01f73ea80d
--- /dev/null
+++ b/devel/electron7/files/patch-components_storage__monitor_storage__monitor__freebsd.h
@@ -0,0 +1,48 @@
+--- components/storage_monitor/storage_monitor_freebsd.h.orig 2019-12-16 13:33:55 UTC
++++ components/storage_monitor/storage_monitor_freebsd.h
+@@ -0,0 +1,45 @@
++// Copyright 2014 The Chromium Authors. All rights reserved.
++// Use of this source code is governed by a BSD-style license that can be
++// found in the LICENSE file.
++
++// StorageMonitorFreeBSD processes mount point change events, notifies listeners
++// about the addition and deletion of media devices, and answers queries about
++// mounted devices.
++// StorageMonitorFreeBSD lives on the UI thread, and uses ???
++// the FILE thread to get mount point change events.
++
++#ifndef COMPONENTS_STORAGE_MONITOR_STORAGE_MONITOR_FREEBSD_H_
++#define COMPONENTS_STORAGE_MONITOR_STORAGE_MONITOR_FREEBSD_H_
++
++#include <map>
++#include <string>
++
++#include "base/compiler_specific.h"
++#include "base/files/file_path.h"
++#include "base/files/file_path_watcher.h"
++#include "base/memory/weak_ptr.h"
++#include "components/storage_monitor/storage_monitor.h"
++#include "content/public/browser/browser_thread.h"
++
++namespace storage_monitor {
++
++class StorageMonitorFreeBSD : public StorageMonitor {
++ public:
++ // Should only be called by browser start up code.
++ // Use StorageMonitor::GetInstance() instead.
++ explicit StorageMonitorFreeBSD();
++ virtual ~StorageMonitorFreeBSD();
++
++ // Must be called for StorageMonitorFreeBSD to work.
++ virtual void Init() override;
++ private:
++ // StorageMonitor implementation.
++ virtual bool GetStorageInfoForPath(const base::FilePath& path,
++ StorageInfo* device_info) const override;
++
++ DISALLOW_COPY_AND_ASSIGN(StorageMonitorFreeBSD);
++};
++
++} // namespace storage_monitor
++
++#endif // COMPONENTS_STORAGE_MONITOR_STORAGE_MONITOR_FREEBSD_H_
diff --git a/devel/electron7/files/patch-components_sync__device__info_local__device__info__util__linux.cc b/devel/electron7/files/patch-components_sync__device__info_local__device__info__util__linux.cc
new file mode 100644
index 000000000000..58cc14eb2b15
--- /dev/null
+++ b/devel/electron7/files/patch-components_sync__device__info_local__device__info__util__linux.cc
@@ -0,0 +1,26 @@
+--- components/sync_device_info/local_device_info_util_linux.cc.orig 2019-12-12 12:39:36 UTC
++++ components/sync_device_info/local_device_info_util_linux.cc
+@@ -30,6 +30,23 @@ std::string GetSessionNameInternal() {
+ break;
+ }
+ return "Chromebook";
++#elif defined(OS_BSD)
++ long len = sysconf(_SC_HOST_NAME_MAX);
++
++ if (len == -1)
++ return "FreeBSD";
++
++ char *hostname = new (std::nothrow) char[len]();
++
++ if ((hostname == nullptr) || (gethostname(hostname, len) == -1)) {
++ delete[](hostname);
++ return "FreeBSD";
++ }
++
++ std::string res{hostname};
++
++ delete[](hostname);
++ return res;
+ #else
+ char hostname[HOST_NAME_MAX];
+ if (gethostname(hostname, HOST_NAME_MAX) == 0) // Success.
diff --git a/devel/electron7/files/patch-components_update__client_update__query__params.cc b/devel/electron7/files/patch-components_update__client_update__query__params.cc
new file mode 100644
index 000000000000..aa0252b0b7e3
--- /dev/null
+++ b/devel/electron7/files/patch-components_update__client_update__query__params.cc
@@ -0,0 +1,11 @@
+--- components/update_client/update_query_params.cc.orig 2019-12-12 12:39:37 UTC
++++ components/update_client/update_query_params.cc
+@@ -39,6 +39,8 @@ const char kOs[] =
+ "fuchsia";
+ #elif defined(OS_OPENBSD)
+ "openbsd";
++#elif defined(OS_FREEBSD)
++ "freebsd";
+ #else
+ #error "unknown os"
+ #endif
diff --git a/devel/electron7/files/patch-components_url__matcher_regex__set__matcher.cc b/devel/electron7/files/patch-components_url__matcher_regex__set__matcher.cc
new file mode 100644
index 000000000000..93c2da44ee5b
--- /dev/null
+++ b/devel/electron7/files/patch-components_url__matcher_regex__set__matcher.cc
@@ -0,0 +1,16 @@
+--- components/url_matcher/regex_set_matcher.cc.orig 2019-12-12 12:39:37 UTC
++++ components/url_matcher/regex_set_matcher.cc
+@@ -11,8 +11,13 @@
+ #include "base/logging.h"
+ #include "base/strings/string_util.h"
+ #include "components/url_matcher/substring_set_matcher.h"
++#if defined(OS_BSD)
++#include <re2/filtered_re2.h>
++#include <re2/re2.h>
++#else
+ #include "third_party/re2/src/re2/filtered_re2.h"
+ #include "third_party/re2/src/re2/re2.h"
++#endif
+
+ namespace url_matcher {
+
diff --git a/devel/electron7/files/patch-components_url__matcher_url__matcher__factory.cc b/devel/electron7/files/patch-components_url__matcher_url__matcher__factory.cc
new file mode 100644
index 000000000000..8142955ef14c
--- /dev/null
+++ b/devel/electron7/files/patch-components_url__matcher_url__matcher__factory.cc
@@ -0,0 +1,14 @@
+--- components/url_matcher/url_matcher_factory.cc.orig 2019-12-12 12:39:37 UTC
++++ components/url_matcher/url_matcher_factory.cc
+@@ -16,7 +16,11 @@
+ #include "base/values.h"
+ #include "components/url_matcher/url_matcher_constants.h"
+ #include "components/url_matcher/url_matcher_helpers.h"
++#if defined(OS_BSD)
++#include <re2/re2.h>
++#else
+ #include "third_party/re2/src/re2/re2.h"
++#endif
+
+ namespace url_matcher {
+
diff --git a/devel/electron7/files/patch-components_webcrypto_algorithms_test__helpers.cc b/devel/electron7/files/patch-components_webcrypto_algorithms_test__helpers.cc
new file mode 100644
index 000000000000..13d5ef836a77
--- /dev/null
+++ b/devel/electron7/files/patch-components_webcrypto_algorithms_test__helpers.cc
@@ -0,0 +1,14 @@
+--- components/webcrypto/algorithms/test_helpers.cc.orig 2019-12-12 12:39:37 UTC
++++ components/webcrypto/algorithms/test_helpers.cc
+@@ -25,7 +25,11 @@
+ #include "components/webcrypto/status.h"
+ #include "third_party/blink/public/platform/web_crypto_algorithm_params.h"
+ #include "third_party/blink/public/platform/web_crypto_key_algorithm.h"
++#if defined(OS_BSD)
++#include <re2/re2.h>
++#else
+ #include "third_party/re2/src/re2/re2.h"
++#endif
+
+ namespace webcrypto {
+
diff --git a/devel/electron7/files/patch-content_app_content__main__runner__impl.cc b/devel/electron7/files/patch-content_app_content__main__runner__impl.cc
new file mode 100644
index 000000000000..90354417ed7c
--- /dev/null
+++ b/devel/electron7/files/patch-content_app_content__main__runner__impl.cc
@@ -0,0 +1,73 @@
+--- content/app/content_main_runner_impl.cc.orig 2019-12-12 12:39:37 UTC
++++ content/app/content_main_runner_impl.cc
+@@ -102,17 +102,17 @@
+ #include "base/posix/global_descriptors.h"
+ #include "content/public/common/content_descriptors.h"
+
+-#if !defined(OS_MACOSX)
++#if !defined(OS_MACOSX) && !defined(OS_BSD)
+ #include "services/service_manager/zygote/common/zygote_fork_delegate_linux.h"
+ #endif
+-#if !defined(OS_MACOSX) && !defined(OS_ANDROID)
++#if !defined(OS_MACOSX) && !defined(OS_ANDROID) && !defined(OS_BSD)
+ #include "sandbox/linux/services/libc_interceptor.h"
+ #include "services/service_manager/zygote/zygote_main.h"
+ #endif
+
+ #endif // OS_POSIX || OS_FUCHSIA
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include "base/native_library.h"
+ #include "base/rand_util.h"
+ #include "services/service_manager/zygote/common/common_sandbox_support_linux.h"
+@@ -133,7 +133,7 @@
+ #include "content/public/common/content_client.h"
+ #endif
+
+-#endif // OS_LINUX
++#endif // OS_LINUX || defined(OS_BSD)
+
+ #if !defined(CHROME_MULTIPLE_DLL_BROWSER)
+ #include "content/child/field_trial.h"
+@@ -318,7 +318,7 @@ void InitializeZygoteSandboxForBrowserProcess(
+ }
+ #endif // BUILDFLAG(USE_ZYGOTE_HANDLE)
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+
+ #if BUILDFLAG(ENABLE_PLUGINS)
+ // Loads the (native) libraries but does not initialize them (i.e., does not
+@@ -415,7 +415,7 @@ void PreSandboxInit() {
+ }
+ #endif // BUILDFLAG(USE_ZYGOTE_HANDLE)
+
+-#endif // OS_LINUX
++#endif // OS_LINUX || OS_BSD
+
+ #if !defined(CHROME_MULTIPLE_DLL_CHILD)
+ void InitializeBrowserClientProcessImpl() {
+@@ -482,7 +482,7 @@ int RunZygote(ContentMainDelegate* delegate) {
+ delegate->ZygoteStarting(&zygote_fork_delegates);
+ media::InitializeMediaLibrary();
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ PreSandboxInit();
+ #endif
+
+@@ -647,11 +647,11 @@ int ContentMainRunnerImpl::Initialize(const ContentMai
+ base::GlobalDescriptors::kBaseDescriptor);
+ #endif // !OS_ANDROID
+
+-#if defined(OS_LINUX) || defined(OS_OPENBSD)
++#if defined(OS_LINUX)
+ g_fds->Set(service_manager::kCrashDumpSignal,
+ service_manager::kCrashDumpSignal +
+ base::GlobalDescriptors::kBaseDescriptor);
+-#endif // OS_LINUX || OS_OPENBSD
++#endif // OS_LINUX
+
+ #endif // !OS_WIN
+
diff --git a/devel/electron7/files/patch-content_browser_browser__main__loop.cc b/devel/electron7/files/patch-content_browser_browser__main__loop.cc
new file mode 100644
index 000000000000..248d6d3ea380
--- /dev/null
+++ b/devel/electron7/files/patch-content_browser_browser__main__loop.cc
@@ -0,0 +1,46 @@
+--- content/browser/browser_main_loop.cc.orig 2019-12-16 13:32:58 UTC
++++ content/browser/browser_main_loop.cc
+@@ -244,6 +244,13 @@
+ #include "mojo/public/cpp/bindings/lib/test_random_mojo_delays.h"
+ #endif
+
++#if defined(OS_BSD)
++#include "content/browser/sandbox_host_linux.h"
++#include "services/service_manager/zygote/common/common_sandbox_support_linux.h"
++#include "content/public/common/common_sandbox_support_linux.h"
++#include "services/service_manager/sandbox/sandbox.h"
++#endif
++
+ // One of the linux specific headers defines this as a macro.
+ #ifdef DestroyAll
+ #undef DestroyAll
+@@ -573,6 +580,11 @@ int BrowserMainLoop::EarlyInitialization() {
+ // by now since a thread to start the ServiceManager has been created
+ // before the browser main loop starts.
+ DCHECK(SandboxHostLinux::GetInstance()->IsInitialized());
++#elif defined(OS_BSD)
++ SandboxHostLinux::GetInstance()->Init();
++ base::FileHandleMappingVector fds_to_map;
++ const int sfd = SandboxHostLinux::GetInstance()->GetChildSocket();
++ fds_to_map.push_back(std::make_pair(sfd, service_manager::GetSandboxFD()));
+ #endif
+
+ #if defined(USE_X11)
+@@ -618,7 +630,7 @@ int BrowserMainLoop::EarlyInitialization() {
+ }
+ #endif // !defined(OS_MACOSX)
+
+-#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_CHROMEOS) || \
++#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD) || \
+ defined(OS_ANDROID)
+ // We use quite a few file descriptors for our IPC as well as disk the disk
+ // cache,and the default limit on the Mac is low (256), so bump it up.
+@@ -628,7 +640,7 @@ int BrowserMainLoop::EarlyInitialization() {
+ // users can easily hit this limit with many open tabs. Bump up the limit to
+ // an arbitrarily high number. See https://crbug.com/539567
+ base::IncreaseFdLimitTo(8192);
+-#endif // defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_CHROMEOS) ||
++#endif // defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD) ||
+ // defined(OS_ANDROID)
+
+ #if defined(OS_WIN)
diff --git a/devel/electron7/files/patch-content_browser_child__process__launcher__helper__linux.cc b/devel/electron7/files/patch-content_browser_child__process__launcher__helper__linux.cc
new file mode 100644
index 000000000000..411e688c2fb7
--- /dev/null
+++ b/devel/electron7/files/patch-content_browser_child__process__launcher__helper__linux.cc
@@ -0,0 +1,92 @@
+--- content/browser/child_process_launcher_helper_linux.cc.orig 2019-12-16 13:32:59 UTC
++++ content/browser/child_process_launcher_helper_linux.cc
+@@ -17,7 +17,9 @@
+ #include "content/public/common/sandboxed_process_launcher_delegate.h"
+ #include "services/service_manager/sandbox/linux/sandbox_linux.h"
+ #include "services/service_manager/zygote/common/common_sandbox_support_linux.h"
++#if !defined(OS_BSD)
+ #include "services/service_manager/zygote/common/zygote_handle.h"
++#endif
+ #include "services/service_manager/zygote/host/zygote_communication_linux.h"
+ #include "services/service_manager/zygote/host/zygote_host_impl_linux.h"
+
+@@ -55,6 +57,7 @@ bool ChildProcessLauncherHelper::BeforeLaunchOnLaunche
+ options->fds_to_remap.push_back(
+ std::make_pair(sandbox_fd, service_manager::GetSandboxFD()));
+
++#if !defined(OS_BSD)
+ // (For Electron), if we're launching without zygote, that means we're
+ // launching an unsandboxed process (since all sandboxed processes are
+ // forked from the zygote). Relax the allow_new_privs option to permit
+@@ -66,6 +69,7 @@ bool ChildProcessLauncherHelper::BeforeLaunchOnLaunche
+ if (!zygote_handle) {
+ options->allow_new_privs = true;
+ }
++#endif
+ }
+
+ options->environment = delegate_->GetEnvironment();
+@@ -81,6 +85,7 @@ ChildProcessLauncherHelper::LaunchProcessOnLauncherThr
+ int* launch_result) {
+ *is_synchronous_launch = true;
+
++#if !defined(OS_BSD)
+ service_manager::ZygoteHandle zygote_handle =
+ base::CommandLine::ForCurrentProcess()->HasSwitch(switches::kNoZygote)
+ ? nullptr
+@@ -94,7 +99,6 @@ ChildProcessLauncherHelper::LaunchProcessOnLauncherThr
+ GetProcessType());
+ *launch_result = LAUNCH_RESULT_SUCCESS;
+
+-#if !defined(OS_OPENBSD)
+ if (handle) {
+ // This is just a starting score for a renderer or extension (the
+ // only types of processes that will be started this way). It will
+@@ -105,13 +109,13 @@ ChildProcessLauncherHelper::LaunchProcessOnLauncherThr
+ service_manager::ZygoteHostImpl::GetInstance()->AdjustRendererOOMScore(
+ handle, kLowestRendererOomScore);
+ }
+-#endif
+
+ Process process;
+ process.process = base::Process(handle);
+ process.zygote = zygote_handle;
+ return process;
+ }
++#endif
+
+ Process process;
+ process.process = base::LaunchProcess(*command_line(), options);
+@@ -129,10 +133,14 @@ ChildProcessTerminationInfo ChildProcessLauncherHelper
+ const ChildProcessLauncherHelper::Process& process,
+ bool known_dead) {
+ ChildProcessTerminationInfo info;
++#if !defined(OS_BSD)
+ if (process.zygote) {
+ info.status = process.zygote->GetTerminationStatus(
+ process.process.Handle(), known_dead, &info.exit_code);
+ } else if (known_dead) {
++#else
++ if (known_dead) {
++#endif
+ info.status = base::GetKnownDeadTerminationStatus(process.process.Handle(),
+ &info.exit_code);
+ } else {
+@@ -156,13 +164,17 @@ void ChildProcessLauncherHelper::ForceNormalProcessTer
+ DCHECK(CurrentlyOnProcessLauncherTaskRunner());
+ process.process.Terminate(service_manager::RESULT_CODE_NORMAL_EXIT, false);
+ // On POSIX, we must additionally reap the child.
++#if !defined(OS_BSD)
+ if (process.zygote) {
+ // If the renderer was created via a zygote, we have to proxy the reaping
+ // through the zygote process.
+ process.zygote->EnsureProcessTerminated(process.process.Handle());
+ } else {
++#endif
+ base::EnsureProcessTerminated(std::move(process.process));
++#if !defined(OS_BSD)
+ }
++#endif
+ }
+
+ void ChildProcessLauncherHelper::SetProcessPriorityOnLauncherThread(
diff --git a/devel/electron7/files/patch-content_browser_devtools_protocol_system__info__handler.cc b/devel/electron7/files/patch-content_browser_devtools_protocol_system__info__handler.cc
new file mode 100644
index 000000000000..b0324c4cadb7
--- /dev/null
+++ b/devel/electron7/files/patch-content_browser_devtools_protocol_system__info__handler.cc
@@ -0,0 +1,11 @@
+--- content/browser/devtools/protocol/system_info_handler.cc.orig 2019-12-12 12:39:38 UTC
++++ content/browser/devtools/protocol/system_info_handler.cc
+@@ -48,7 +48,7 @@ std::unique_ptr<SystemInfo::Size> GfxSizeToSystemInfoS
+ // Give the GPU process a few seconds to provide GPU info.
+ // Linux Debug builds need more time -- see Issue 796437.
+ // Windows builds need more time -- see Issue 873112.
+-#if (defined(OS_LINUX) && !defined(NDEBUG)) || defined(OS_WIN)
++#if ((defined(OS_LINUX) || defined(OS_BSD)) && !defined(NDEBUG)) || defined(OS_WIN)
+ const int kGPUInfoWatchdogTimeoutMs = 20000;
+ #else
+ const int kGPUInfoWatchdogTimeoutMs = 5000;
diff --git a/devel/electron7/files/patch-content_browser_gpu_gpu__process__host.cc b/devel/electron7/files/patch-content_browser_gpu_gpu__process__host.cc
new file mode 100644
index 000000000000..04a2ce8aea5e
--- /dev/null
+++ b/devel/electron7/files/patch-content_browser_gpu_gpu__process__host.cc
@@ -0,0 +1,11 @@
+--- content/browser/gpu/gpu_process_host.cc.orig 2019-12-16 13:32:59 UTC
++++ content/browser/gpu/gpu_process_host.cc
+@@ -1095,7 +1095,7 @@ bool GpuProcessHost::LaunchGpuProcess() {
+ std::unique_ptr<base::CommandLine> cmd_line =
+ std::make_unique<base::CommandLine>(base::CommandLine::NO_PROGRAM);
+ #else
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ int child_flags = gpu_launcher.empty() ? ChildProcessHost::CHILD_ALLOW_SELF
+ : ChildProcessHost::CHILD_NORMAL;
+ #elif defined(OS_MACOSX)
diff --git a/devel/electron7/files/patch-content_browser_media_media__internals.cc b/devel/electron7/files/patch-content_browser_media_media__internals.cc
new file mode 100644
index 000000000000..eace02929769
--- /dev/null
+++ b/devel/electron7/files/patch-content_browser_media_media__internals.cc
@@ -0,0 +1,11 @@
+--- content/browser/media/media_internals.cc.orig 2019-12-12 12:39:39 UTC
++++ content/browser/media/media_internals.cc
+@@ -505,7 +505,7 @@ void MediaInternals::UpdateVideoCaptureDeviceCapabilit
+ device_dict->SetString("id", descriptor.device_id);
+ device_dict->SetString("name", descriptor.GetNameAndModel());
+ device_dict->Set("formats", std::move(format_list));
+-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || \
++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD) || \
+ defined(OS_ANDROID)
+ device_dict->SetString("captureApi", descriptor.GetCaptureApiTypeString());
+ #endif
diff --git a/devel/electron7/files/patch-content_browser_memory_swap__metrics__driver__impl__linux.cc b/devel/electron7/files/patch-content_browser_memory_swap__metrics__driver__impl__linux.cc
new file mode 100644
index 000000000000..60b68c29170b
--- /dev/null
+++ b/devel/electron7/files/patch-content_browser_memory_swap__metrics__driver__impl__linux.cc
@@ -0,0 +1,27 @@
+--- content/browser/memory/swap_metrics_driver_impl_linux.cc.orig 2019-12-12 12:39:39 UTC
++++ content/browser/memory/swap_metrics_driver_impl_linux.cc
+@@ -43,6 +43,7 @@ SwapMetricsDriverImplLinux::~SwapMetricsDriverImplLinu
+
+ SwapMetricsDriver::SwapMetricsUpdateResult
+ SwapMetricsDriverImplLinux::UpdateMetricsInternal(base::TimeDelta interval) {
++#if !defined(OS_BSD)
+ base::VmStatInfo vmstat;
+ if (!base::GetVmStatInfo(&vmstat)) {
+ return SwapMetricsDriver::SwapMetricsUpdateResult::kSwapMetricsUpdateFailed;
+@@ -55,12 +56,15 @@ SwapMetricsDriverImplLinux::UpdateMetricsInternal(base
+
+ if (interval.is_zero())
+ return SwapMetricsDriver::SwapMetricsUpdateResult::
+- kSwapMetricsUpdateSuccess;
++ kSwapMetricsUpdateSuccess;
+
+ delegate_->OnSwapInCount(in_counts, interval);
+ delegate_->OnSwapOutCount(out_counts, interval);
+
+ return SwapMetricsDriver::SwapMetricsUpdateResult::kSwapMetricsUpdateSuccess;
++#else
++ return SwapMetricsDriver::SwapMetricsUpdateResult::kSwapMetricsUpdateFailed;
++#endif
+ }
+
+ } // namespace content
diff --git a/devel/electron7/files/patch-content_browser_ppapi__plugin__process__host.cc b/devel/electron7/files/patch-content_browser_ppapi__plugin__process__host.cc
new file mode 100644
index 000000000000..c44be5bc06ad
--- /dev/null
+++ b/devel/electron7/files/patch-content_browser_ppapi__plugin__process__host.cc
@@ -0,0 +1,11 @@
+--- content/browser/ppapi_plugin_process_host.cc.orig 2019-12-16 13:32:59 UTC
++++ content/browser/ppapi_plugin_process_host.cc
+@@ -373,7 +373,7 @@ bool PpapiPluginProcessHost::Init(const PepperPluginIn
+ base::CommandLine::StringType plugin_launcher =
+ browser_command_line.GetSwitchValueNative(switches::kPpapiPluginLauncher);
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ int flags = plugin_launcher.empty() ? ChildProcessHost::CHILD_ALLOW_SELF :
+ ChildProcessHost::CHILD_NORMAL;
+ #elif defined(OS_MACOSX)
diff --git a/devel/electron7/files/patch-content_browser_renderer__host_input_input__device__change__observer.cc b/devel/electron7/files/patch-content_browser_renderer__host_input_input__device__change__observer.cc
new file mode 100644
index 000000000000..8b2b3313d8d1
--- /dev/null
+++ b/devel/electron7/files/patch-content_browser_renderer__host_input_input__device__change__observer.cc
@@ -0,0 +1,29 @@
+--- content/browser/renderer_host/input/input_device_change_observer.cc.orig 2019-12-12 12:39:39 UTC
++++ content/browser/renderer_host/input/input_device_change_observer.cc
+@@ -10,7 +10,7 @@
+
+ #if defined(OS_WIN)
+ #include "ui/events/devices/input_device_observer_win.h"
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ #include "ui/events/devices/device_data_manager.h"
+ #elif defined(OS_ANDROID)
+ #include "ui/events/devices/input_device_observer_android.h"
+@@ -22,7 +22,7 @@ InputDeviceChangeObserver::InputDeviceChangeObserver(R
+ render_view_host_impl_ = rvhi;
+ #if defined(OS_WIN)
+ ui::InputDeviceObserverWin::GetInstance()->AddObserver(this);
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ ui::DeviceDataManager::GetInstance()->AddObserver(this);
+ #elif defined(OS_ANDROID)
+ ui::InputDeviceObserverAndroid::GetInstance()->AddObserver(this);
+@@ -32,7 +32,7 @@ InputDeviceChangeObserver::InputDeviceChangeObserver(R
+ InputDeviceChangeObserver::~InputDeviceChangeObserver() {
+ #if defined(OS_WIN)
+ ui::InputDeviceObserverWin::GetInstance()->RemoveObserver(this);
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ ui::DeviceDataManager::GetInstance()->RemoveObserver(this);
+ #elif defined(OS_ANDROID)
+ ui::InputDeviceObserverAndroid::GetInstance()->RemoveObserver(this);
diff --git a/devel/electron7/files/patch-content_browser_renderer__host_pepper_pepper__file__io__host.cc b/devel/electron7/files/patch-content_browser_renderer__host_pepper_pepper__file__io__host.cc
new file mode 100644
index 000000000000..90fa05fce1d8
--- /dev/null
+++ b/devel/electron7/files/patch-content_browser_renderer__host_pepper_pepper__file__io__host.cc
@@ -0,0 +1,20 @@
+--- content/browser/renderer_host/pepper/pepper_file_io_host.cc.orig 2019-12-12 12:39:39 UTC
++++ content/browser/renderer_host/pepper/pepper_file_io_host.cc
+@@ -433,7 +433,7 @@ void PepperFileIOHost::OnLocalFileOpened(
+ ppapi::host::ReplyMessageContext reply_context,
+ const base::FilePath& path,
+ base::File::Error error_code) {
+-#if defined(OS_WIN) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD)
+ // Quarantining a file before its contents are available is only supported on
+ // Windows and Linux.
+ if (!FileOpenForWrite(open_flags_) || error_code != base::File::FILE_OK) {
+@@ -453,7 +453,7 @@ void PepperFileIOHost::OnLocalFileOpened(
+ #endif
+ }
+
+-#if defined(OS_WIN) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD)
+ void PepperFileIOHost::OnLocalFileQuarantined(
+ ppapi::host::ReplyMessageContext reply_context,
+ const base::FilePath& path,
diff --git a/devel/electron7/files/patch-content_browser_renderer__host_render__message__filter.cc b/devel/electron7/files/patch-content_browser_renderer__host_render__message__filter.cc
new file mode 100644
index 000000000000..9fdc4c296de7
--- /dev/null
+++ b/devel/electron7/files/patch-content_browser_renderer__host_render__message__filter.cc
@@ -0,0 +1,29 @@
+--- content/browser/renderer_host/render_message_filter.cc.orig 2019-12-12 12:39:39 UTC
++++ content/browser/renderer_host/render_message_filter.cc
+@@ -70,7 +70,7 @@
+ #if defined(OS_MACOSX)
+ #include "ui/accelerated_widget_mac/window_resize_helper_mac.h"
+ #endif
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include "base/linux_util.h"
+ #include "base/threading/platform_thread.h"
+ #endif
+@@ -148,7 +148,7 @@ void RenderMessageFilter::CreateFullscreenWidget(
+ std::move(callback).Run(route_id);
+ }
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ void RenderMessageFilter::SetThreadPriorityOnFileThread(
+ base::PlatformThreadId ns_tid,
+ base::ThreadPriority priority) {
+@@ -169,7 +169,7 @@ void RenderMessageFilter::SetThreadPriorityOnFileThrea
+ }
+ #endif
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ void RenderMessageFilter::SetThreadPriority(int32_t ns_tid,
+ base::ThreadPriority priority) {
+ constexpr base::TaskTraits kTraits = {
diff --git a/devel/electron7/files/patch-content_browser_renderer__host_render__message__filter.h b/devel/electron7/files/patch-content_browser_renderer__host_render__message__filter.h
new file mode 100644
index 000000000000..be729662da75
--- /dev/null
+++ b/devel/electron7/files/patch-content_browser_renderer__host_render__message__filter.h
@@ -0,0 +1,19 @@
+--- content/browser/renderer_host/render_message_filter.h.orig 2019-12-12 12:39:39 UTC
++++ content/browser/renderer_host/render_message_filter.h
+@@ -86,14 +86,14 @@ class CONTENT_EXPORT RenderMessageFilter
+ mojom::WidgetPtr widget,
+ CreateFullscreenWidgetCallback callback) override;
+ void HasGpuProcess(HasGpuProcessCallback callback) override;
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ void SetThreadPriority(int32_t ns_tid,
+ base::ThreadPriority priority) override;
+ #endif
+
+ void OnResolveProxy(const GURL& url, IPC::Message* reply_msg);
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ void SetThreadPriorityOnFileThread(base::PlatformThreadId ns_tid,
+ base::ThreadPriority priority);
+ #endif
diff --git a/devel/electron7/files/patch-content_browser_renderer__host_render__process__host__impl.cc b/devel/electron7/files/patch-content_browser_renderer__host_render__process__host__impl.cc
new file mode 100644
index 000000000000..441d04ad5ae0
--- /dev/null
+++ b/devel/electron7/files/patch-content_browser_renderer__host_render__process__host__impl.cc
@@ -0,0 +1,47 @@
+--- content/browser/renderer_host/render_process_host_impl.cc.orig 2019-12-16 13:32:59 UTC
++++ content/browser/renderer_host/render_process_host_impl.cc
+@@ -231,7 +231,7 @@
+ #include "content/browser/gpu/gpu_data_manager_impl.h"
+ #endif
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include <sys/resource.h>
+ #include <sys/time.h>
+
+@@ -1212,7 +1212,7 @@ static constexpr size_t kUnknownPlatformProcessLimit =
+ // to indicate failure and std::numeric_limits<size_t>::max() to indicate
+ // unlimited.
+ size_t GetPlatformProcessLimit() {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ struct rlimit limit;
+ if (getrlimit(RLIMIT_NPROC, &limit) != 0)
+ return kUnknownPlatformProcessLimit;
+@@ -1223,7 +1223,7 @@ size_t GetPlatformProcessLimit() {
+ #else
+ // TODO(https://crbug.com/104689): Implement on other platforms.
+ return kUnknownPlatformProcessLimit;
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+ }
+ #endif // !defined(OS_ANDROID) && !defined(OS_CHROMEOS)
+
+@@ -1257,7 +1257,7 @@ class RenderProcessHostImpl::IOThreadHostImpl
+
+ // mojom::ChildProcessHost implementation:
+ void BindHostReceiver(mojo::GenericPendingReceiver receiver) override {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ if (auto font_receiver = receiver.As<font_service::mojom::FontService>()) {
+ ConnectToFontService(std::move(font_receiver));
+ return;
+@@ -1611,7 +1611,7 @@ bool RenderProcessHostImpl::Init() {
+ renderer_prefix =
+ browser_command_line.GetSwitchValueNative(switches::kRendererCmdPrefix);
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ int flags = renderer_prefix.empty() ? ChildProcessHost::CHILD_ALLOW_SELF
+ : ChildProcessHost::CHILD_NORMAL;
+ #elif defined(OS_MACOSX)
diff --git a/devel/electron7/files/patch-content_browser_renderer__host_render__process__host__impl.h b/devel/electron7/files/patch-content_browser_renderer__host_render__process__host__impl.h
new file mode 100644
index 000000000000..1c7a35b5b8e7
--- /dev/null
+++ b/devel/electron7/files/patch-content_browser_renderer__host_render__process__host__impl.h
@@ -0,0 +1,15 @@
+--- content/browser/renderer_host/render_process_host_impl.h.orig 2019-12-12 12:39:39 UTC
++++ content/browser/renderer_host/render_process_host_impl.h
+@@ -423,10 +423,10 @@ class CONTENT_EXPORT RenderProcessHostImpl
+ is_for_guests_only_ = is_for_guests_only;
+ }
+
+-#if defined(OS_POSIX) && !defined(OS_ANDROID) && !defined(OS_MACOSX)
++#if defined(OS_POSIX) && !defined(OS_ANDROID) && !defined(OS_MACOSX) && !defined(OS_BSD)
+ // Launch the zygote early in the browser startup.
+ static void EarlyZygoteLaunch();
+-#endif // defined(OS_POSIX) && !defined(OS_ANDROID) && !defined(OS_MACOSX)
++#endif // defined(OS_POSIX) && !defined(OS_ANDROID) && !defined(OS_MACOSX) && !defined(OS_BSD)
+
+ RendererAudioOutputStreamFactoryContext*
+ GetRendererAudioOutputStreamFactoryContext() override;
diff --git a/devel/electron7/files/patch-content_browser_renderer__host_render__view__host__impl.cc b/devel/electron7/files/patch-content_browser_renderer__host_render__view__host__impl.cc
new file mode 100644
index 000000000000..78df621a3553
--- /dev/null
+++ b/devel/electron7/files/patch-content_browser_renderer__host_render__view__host__impl.cc
@@ -0,0 +1,11 @@
+--- content/browser/renderer_host/render_view_host_impl.cc.orig 2019-12-16 13:32:59 UTC
++++ content/browser/renderer_host/render_view_host_impl.cc
+@@ -162,7 +162,7 @@ void GetPlatformSpecificPrefs(blink::mojom::RendererPr
+ display::win::ScreenWin::GetSystemMetricsInDIP(SM_CYVSCROLL);
+ prefs->arrow_bitmap_width_horizontal_scroll_bar_in_dips =
+ display::win::ScreenWin::GetSystemMetricsInDIP(SM_CXHSCROLL);
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ prefs->system_font_family_name = gfx::Font().GetFontName();
+ #endif
+ }
diff --git a/devel/electron7/files/patch-content_browser_renderer__host_render__widget__host__view__aura.cc b/devel/electron7/files/patch-content_browser_renderer__host_render__widget__host__view__aura.cc
new file mode 100644
index 000000000000..7b8de19066b1
--- /dev/null
+++ b/devel/electron7/files/patch-content_browser_renderer__host_render__widget__host__view__aura.cc
@@ -0,0 +1,29 @@
+--- content/browser/renderer_host/render_widget_host_view_aura.cc.orig 2019-12-12 12:39:39 UTC
++++ content/browser/renderer_host/render_widget_host_view_aura.cc
+@@ -116,7 +116,7 @@
+ #include "content/browser/accessibility/browser_accessibility_auralinux.h"
+ #endif
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS)
+ #include "ui/base/ime/linux/text_edit_command_auralinux.h"
+ #include "ui/base/ime/linux/text_edit_key_bindings_delegate_auralinux.h"
+ #endif
+@@ -2203,7 +2203,7 @@ bool RenderWidgetHostViewAura::NeedsInputGrab() {
+ }
+
+ bool RenderWidgetHostViewAura::NeedsMouseCapture() {
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS)
+ return NeedsInputGrab();
+ #endif
+ return false;
+@@ -2388,7 +2388,7 @@ void RenderWidgetHostViewAura::ForwardKeyboardEventWit
+ if (!target_host)
+ return;
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS)
+ ui::TextEditKeyBindingsDelegateAuraLinux* keybinding_delegate =
+ ui::GetTextEditKeyBindingsDelegate();
+ std::vector<ui::TextEditCommandAuraLinux> commands;
diff --git a/devel/electron7/files/patch-content_browser_renderer__host_render__widget__host__view__event__handler.cc b/devel/electron7/files/patch-content_browser_renderer__host_render__widget__host__view__event__handler.cc
new file mode 100644
index 000000000000..a6d1de73067b
--- /dev/null
+++ b/devel/electron7/files/patch-content_browser_renderer__host_render__widget__host__view__event__handler.cc
@@ -0,0 +1,11 @@
+--- content/browser/renderer_host/render_widget_host_view_event_handler.cc.orig 2019-12-12 12:39:39 UTC
++++ content/browser/renderer_host/render_widget_host_view_event_handler.cc
+@@ -620,7 +620,7 @@ bool RenderWidgetHostViewEventHandler::CanRendererHand
+ if (event->type() == ui::ET_MOUSE_EXITED) {
+ if (mouse_locked || selection_popup)
+ return false;
+-#if defined(OS_WIN) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD)
+ // Don't forward the mouse leave message which is received when the context
+ // menu is displayed by the page. This confuses the page and causes state
+ // changes.
diff --git a/devel/electron7/files/patch-content_browser_scheduler_responsiveness_jank__monitor.cc b/devel/electron7/files/patch-content_browser_scheduler_responsiveness_jank__monitor.cc
new file mode 100644
index 000000000000..1b583481ce4a
--- /dev/null
+++ b/devel/electron7/files/patch-content_browser_scheduler_responsiveness_jank__monitor.cc
@@ -0,0 +1,11 @@
+--- content/browser/scheduler/responsiveness/jank_monitor.cc.orig 2019-12-12 12:39:39 UTC
++++ content/browser/scheduler/responsiveness/jank_monitor.cc
+@@ -293,7 +293,7 @@ void JankMonitor::ThreadExecutionState::DidRunTaskOrEv
+ // in context menus, among others). Simply ignore the mismatches for now.
+ // See https://crbug.com/929813 for the details of why the mismatch
+ // happens.
+-#if !defined(OS_CHROMEOS) && defined(OS_LINUX) && defined(USE_OZONE)
++#if !defined(OS_CHROMEOS) && (defined(OS_LINUX) || defined(OS_BSD)) && defined(USE_OZONE)
+ task_execution_metadata_.clear();
+ #endif
+ return;
diff --git a/devel/electron7/files/patch-content_browser_scheduler_responsiveness_native__event__observer.cc b/devel/electron7/files/patch-content_browser_scheduler_responsiveness_native__event__observer.cc
new file mode 100644
index 000000000000..90edc5a98ff2
--- /dev/null
+++ b/devel/electron7/files/patch-content_browser_scheduler_responsiveness_native__event__observer.cc
@@ -0,0 +1,29 @@
+--- content/browser/scheduler/responsiveness/native_event_observer.cc.orig 2019-12-12 12:39:39 UTC
++++ content/browser/scheduler/responsiveness/native_event_observer.cc
+@@ -15,7 +15,7 @@
+
+ #include "ui/events/platform/platform_event_source.h"
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include "ui/aura/env.h"
+ #include "ui/events/event.h"
+ #endif
+@@ -39,7 +39,7 @@ NativeEventObserver::~NativeEventObserver() {
+ DeregisterObserver();
+ }
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ void NativeEventObserver::RegisterObserver() {
+ aura::Env::GetInstance()->AddWindowEventDispatcherObserver(this);
+ }
+@@ -61,7 +61,7 @@ void NativeEventObserver::OnWindowEventDispatcherFinis
+ did_run_event_callback_.Run(info.unique_id);
+ events_being_processed_.pop_back();
+ }
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+
+ #if defined(OS_WIN)
+ void NativeEventObserver::RegisterObserver() {
diff --git a/devel/electron7/files/patch-content_browser_scheduler_responsiveness_native__event__observer.h b/devel/electron7/files/patch-content_browser_scheduler_responsiveness_native__event__observer.h
new file mode 100644
index 000000000000..329fa92cdfd3
--- /dev/null
+++ b/devel/electron7/files/patch-content_browser_scheduler_responsiveness_native__event__observer.h
@@ -0,0 +1,47 @@
+--- content/browser/scheduler/responsiveness/native_event_observer.h.orig 2019-12-12 12:39:39 UTC
++++ content/browser/scheduler/responsiveness/native_event_observer.h
+@@ -14,7 +14,7 @@
+ #include "content/public/browser/native_event_processor_observer_mac.h"
+ #endif
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include "ui/aura/window_event_dispatcher_observer.h"
+ #endif
+
+@@ -39,7 +39,7 @@ namespace responsiveness {
+ class CONTENT_EXPORT NativeEventObserver
+ #if defined(OS_MACOSX)
+ : public NativeEventProcessorObserver
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ : public aura::WindowEventDispatcherObserver
+ #elif defined(OS_WIN)
+ : public base::MessagePumpForUI::Observer
+@@ -56,7 +56,7 @@ class CONTENT_EXPORT NativeEventObserver
+ NativeEventObserver(WillRunEventCallback will_run_event_callback,
+ DidRunEventCallback did_run_event_callback);
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ ~NativeEventObserver() override;
+ #else
+ virtual ~NativeEventObserver();
+@@ -68,7 +68,7 @@ class CONTENT_EXPORT NativeEventObserver
+ // Exposed for tests.
+ void WillRunNativeEvent(const void* opaque_identifier) override;
+ void DidRunNativeEvent(const void* opaque_identifier) override;
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ // aura::WindowEventDispatcherObserver overrides:
+ void OnWindowEventDispatcherStartedProcessing(
+ aura::WindowEventDispatcher* dispatcher,
+@@ -85,7 +85,7 @@ class CONTENT_EXPORT NativeEventObserver
+ void RegisterObserver();
+ void DeregisterObserver();
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ struct EventInfo {
+ const void* unique_id;
+ };
diff --git a/devel/electron7/files/patch-content_browser_scheduler_responsiveness_watcher.cc b/devel/electron7/files/patch-content_browser_scheduler_responsiveness_watcher.cc
new file mode 100644
index 000000000000..ba472a666147
--- /dev/null
+++ b/devel/electron7/files/patch-content_browser_scheduler_responsiveness_watcher.cc
@@ -0,0 +1,20 @@
+--- content/browser/scheduler/responsiveness/watcher.cc.orig 2019-12-12 12:39:39 UTC
++++ content/browser/scheduler/responsiveness/watcher.cc
+@@ -96,7 +96,7 @@ void Watcher::DidRunTask(const base::PendingTask* task
+ // in context menus, among others). Simply ignore the mismatches for now.
+ // See https://crbug.com/929813 for the details of why the mismatch
+ // happens.
+-#if !defined(OS_CHROMEOS) && defined(OS_LINUX) && defined(USE_OZONE)
++#if !defined(OS_CHROMEOS) && (defined(OS_LINUX) || defined(OS_BSD)) && defined(USE_OZONE)
+ return currently_running_metadata_ui_.clear();
+ #endif
+ DCHECK_LE(*mismatched_task_identifiers, 1);
+@@ -156,7 +156,7 @@ void Watcher::DidRunEventOnUIThread(const void* opaque
+ mismatched_event_identifiers_ui_ += 1;
+ // See comment in DidRunTask() for why |currently_running_metadata_ui_| may
+ // be reset.
+-#if !defined(OS_CHROMEOS) && defined(OS_LINUX) && defined(USE_OZONE)
++#if !defined(OS_CHROMEOS) && (defined(OS_LINUX) || defined(OS_BSD)) && defined(USE_OZONE)
+ return currently_running_metadata_ui_.clear();
+ #endif
+ DCHECK_LE(mismatched_event_identifiers_ui_, 1);
diff --git a/devel/electron7/files/patch-content_browser_utility__process__host.cc b/devel/electron7/files/patch-content_browser_utility__process__host.cc
new file mode 100644
index 000000000000..9333bef553d6
--- /dev/null
+++ b/devel/electron7/files/patch-content_browser_utility__process__host.cc
@@ -0,0 +1,29 @@
+--- content/browser/utility_process_host.cc.orig 2019-12-12 12:39:40 UTC
++++ content/browser/utility_process_host.cc
+@@ -55,7 +55,7 @@
+ #include "services/network/network_sandbox_win.h"
+ #endif
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include "components/services/font/public/mojom/font_service.mojom.h" // nogncheck
+ #include "content/browser/font_service.h" // nogncheck
+ #endif
+@@ -216,7 +216,7 @@ UtilityProcessHost::UtilityProcessHost()
+
+ UtilityProcessHost::UtilityProcessHost(std::unique_ptr<Client> client)
+ : sandbox_type_(service_manager::SANDBOX_TYPE_UTILITY),
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ child_flags_(ChildProcessHost::CHILD_ALLOW_SELF),
+ #else
+ child_flags_(ChildProcessHost::CHILD_NORMAL),
+@@ -515,7 +515,7 @@ void UtilityProcessHost::OnProcessCrashed(int exit_cod
+
+ void UtilityProcessHost::BindHostReceiver(
+ mojo::GenericPendingReceiver receiver) {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ if (auto font_receiver = receiver.As<font_service::mojom::FontService>()) {
+ ConnectToFontService(std::move(font_receiver));
+ return;
diff --git a/devel/electron7/files/patch-content_browser_webui_shared__resources__data__source.cc b/devel/electron7/files/patch-content_browser_webui_shared__resources__data__source.cc
new file mode 100644
index 000000000000..9dee9750ab32
--- /dev/null
+++ b/devel/electron7/files/patch-content_browser_webui_shared__resources__data__source.cc
@@ -0,0 +1,17 @@
+--- content/browser/webui/shared_resources_data_source.cc.orig 2019-12-12 12:39:40 UTC
++++ content/browser/webui/shared_resources_data_source.cc
+@@ -123,12 +123,12 @@ const std::map<int, std::string> CreateMojoResourceIdT
+ "mojo/mojo/public/mojom/base/string16.mojom.html"},
+ {IDR_MOJO_STRING16_MOJOM_LITE_JS,
+ "mojo/mojo/public/mojom/base/string16.mojom-lite.js"},
+-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+ {IDR_MOJO_TIME_MOJOM_HTML,
+ "mojo/mojo/public/mojom/base/time.mojom.html"},
+ {IDR_MOJO_TIME_MOJOM_LITE_JS,
+ "mojo/mojo/public/mojom/base/time.mojom-lite.js"},
+-#endif // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
++#endif // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+ };
+ }
+
diff --git a/devel/electron7/files/patch-content_common_BUILD.gn b/devel/electron7/files/patch-content_common_BUILD.gn
new file mode 100644
index 000000000000..87115f5ac730
--- /dev/null
+++ b/devel/electron7/files/patch-content_common_BUILD.gn
@@ -0,0 +1,15 @@
+--- content/common/BUILD.gn.orig 2019-12-12 12:39:40 UTC
++++ content/common/BUILD.gn
+@@ -367,6 +367,12 @@ source_set("common") {
+ libs += [ "android" ]
+ }
+
++ if (is_bsd) {
++ sources -= [
++ "sandbox_init_linux.cc",
++ ]
++ }
++
+ if (is_debug && !is_component_build && enable_plugins) {
+ # Content depends on the PPAPI message logging stuff; if this isn't here,
+ # some unit test binaries won't compile. This only worked in release mode
diff --git a/devel/electron7/files/patch-content_common_common__sandbox__support__linux.cc b/devel/electron7/files/patch-content_common_common__sandbox__support__linux.cc
new file mode 100644
index 000000000000..f242bc735b58
--- /dev/null
+++ b/devel/electron7/files/patch-content_common_common__sandbox__support__linux.cc
@@ -0,0 +1,10 @@
+--- content/common/common_sandbox_support_linux.cc.orig 2019-12-12 12:39:40 UTC
++++ content/common/common_sandbox_support_linux.cc
+@@ -5,6 +5,7 @@
+ #include "content/public/common/common_sandbox_support_linux.h"
+
+ #include <sys/stat.h>
++#include <unistd.h>
+
+ #include <limits>
+ #include <memory>
diff --git a/devel/electron7/files/patch-content_common_user__agent.cc b/devel/electron7/files/patch-content_common_user__agent.cc
new file mode 100644
index 000000000000..666931dffdff
--- /dev/null
+++ b/devel/electron7/files/patch-content_common_user__agent.cc
@@ -0,0 +1,17 @@
+--- content/common/user_agent.cc.orig 2019-12-12 12:39:40 UTC
++++ content/common/user_agent.cc
+@@ -124,6 +124,14 @@ std::string BuildOSCpuInfo(bool include_android_build_
+ #endif
+ );
+
++#if defined(OS_BSD)
++#if defined(__x86_64__)
++ base::StringAppendF(&os_cpu, "; Linux x86_64");
++#else
++ base::StringAppendF(&os_cpu, "; Linux i686");
++#endif
++#endif
++
+ return os_cpu;
+ }
+
diff --git a/devel/electron7/files/patch-content_gpu_BUILD.gn b/devel/electron7/files/patch-content_gpu_BUILD.gn
new file mode 100644
index 000000000000..9ed361783c8d
--- /dev/null
+++ b/devel/electron7/files/patch-content_gpu_BUILD.gn
@@ -0,0 +1,11 @@
+--- content/gpu/BUILD.gn.orig 2019-12-12 12:39:40 UTC
++++ content/gpu/BUILD.gn
+@@ -125,7 +125,7 @@ target(link_target_type, "gpu_sources") {
+
+ # Use DRI on desktop Linux builds.
+ if (current_cpu != "s390x" && current_cpu != "ppc64" && is_desktop_linux &&
+- (!is_chromecast || is_cast_desktop_build)) {
++ (!is_chromecast || is_cast_desktop_build) && !is_bsd) {
+ configs += [ "//build/config/linux/dri" ]
+ }
+ }
diff --git a/devel/electron7/files/patch-content_gpu_gpu__main.cc b/devel/electron7/files/patch-content_gpu_gpu__main.cc
new file mode 100644
index 000000000000..380d185ba885
--- /dev/null
+++ b/devel/electron7/files/patch-content_gpu_gpu__main.cc
@@ -0,0 +1,56 @@
+--- content/gpu/gpu_main.cc.orig 2019-12-16 13:32:59 UTC
++++ content/gpu/gpu_main.cc
+@@ -82,7 +82,7 @@
+ #include "ui/gfx/x/x11_switches.h" // nogncheck
+ #endif
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include "content/gpu/gpu_sandbox_hook_linux.h"
+ #include "content/public/common/sandbox_init.h"
+ #include "services/service_manager/sandbox/linux/sandbox_linux.h"
+@@ -111,7 +111,7 @@ namespace content {
+
+ namespace {
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) && !defined(OS_BSD)
+ bool StartSandboxLinux(gpu::GpuWatchdogThread*,
+ const gpu::GPUInfo*,
+ const gpu::GpuPreferences&);
+@@ -172,7 +172,7 @@ class ContentSandboxHelper : public gpu::GpuSandboxHel
+ bool EnsureSandboxInitialized(gpu::GpuWatchdogThread* watchdog_thread,
+ const gpu::GPUInfo* gpu_info,
+ const gpu::GpuPreferences& gpu_prefs) override {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) && !defined(OS_BSD)
+ return StartSandboxLinux(watchdog_thread, gpu_info, gpu_prefs);
+ #elif defined(OS_WIN)
+ return StartSandboxWindows(sandbox_info_);
+@@ -280,7 +280,7 @@ int GpuMain(const MainFunctionParams& parameters) {
+ main_thread_task_executor =
+ std::make_unique<base::SingleThreadTaskExecutor>(
+ gpu_preferences.message_pump_type);
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ #error "Unsupported Linux platform."
+ #elif defined(OS_MACOSX)
+ // Cross-process CoreAnimation requires a CFRunLoop to function at all, and
+@@ -388,7 +388,7 @@ int GpuMain(const MainFunctionParams& parameters) {
+
+ namespace {
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) && !defined(OS_BSD)
+ bool StartSandboxLinux(gpu::GpuWatchdogThread* watchdog_thread,
+ const gpu::GPUInfo* gpu_info,
+ const gpu::GpuPreferences& gpu_prefs) {
+@@ -423,7 +423,7 @@ bool StartSandboxLinux(gpu::GpuWatchdogThread* watchdo
+
+ return res;
+ }
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) && !defined(OS_BSD)
+
+ #if defined(OS_WIN)
+ bool StartSandboxWindows(const sandbox::SandboxInterfaceInfo* sandbox_info) {
diff --git a/devel/electron7/files/patch-content_gpu_gpu__sandbox__hook__linux.cc b/devel/electron7/files/patch-content_gpu_gpu__sandbox__hook__linux.cc
new file mode 100644
index 000000000000..638308bfa4c0
--- /dev/null
+++ b/devel/electron7/files/patch-content_gpu_gpu__sandbox__hook__linux.cc
@@ -0,0 +1,58 @@
+--- content/gpu/gpu_sandbox_hook_linux.cc.orig 2019-12-12 12:39:40 UTC
++++ content/gpu/gpu_sandbox_hook_linux.cc
+@@ -96,8 +96,9 @@ static const char kLibV4lEncPluginPath[] =
+ "/usr/lib/libv4l/plugins/libv4l-encplugin.so";
+ #endif
+
+-constexpr int dlopen_flag = RTLD_NOW | RTLD_GLOBAL | RTLD_NODELETE;
++constexpr int dlopen_flag = RTLD_NOW | RTLD_GLOBAL;
+
++#if !defined(OS_BSD)
+ void AddV4L2GpuWhitelist(
+ std::vector<BrokerFilePermission>* permissions,
+ const service_manager::SandboxSeccompBPF::Options& options) {
+@@ -299,8 +300,10 @@ std::vector<BrokerFilePermission> FilePermissionsForGp
+ AddStandardGpuWhiteList(&permissions);
+ return permissions;
+ }
++#endif
+
+ void LoadArmGpuLibraries() {
++#if !defined(OS_BSD)
+ // Preload the Mali library.
+ if (UseChromecastSandboxWhitelist()) {
+ for (const char* path : kWhitelistedChromecastPaths) {
+@@ -315,6 +318,7 @@ void LoadArmGpuLibraries() {
+ // Preload the Tegra V4L2 (video decode acceleration) library.
+ dlopen(kLibTegraPath, dlopen_flag);
+ }
++#endif
+ }
+
+ bool LoadAmdGpuLibraries() {
+@@ -370,6 +374,7 @@ bool LoadLibrariesForGpu(
+ return true;
+ }
+
++#if !defined(OS_BSD)
+ sandbox::syscall_broker::BrokerCommandSet CommandSetForGPU(
+ const service_manager::SandboxLinux::Options& options) {
+ sandbox::syscall_broker::BrokerCommandSet command_set;
+@@ -390,13 +395,17 @@ bool BrokerProcessPreSandboxHook(
+ service_manager::SetProcessTitleFromCommandLine(nullptr);
+ return true;
+ }
++#endif
+
+ } // namespace
+
+ bool GpuProcessPreSandboxHook(service_manager::SandboxLinux::Options options) {
++ NOTIMPLEMENTED();
++#if !defined(OS_BSD)
+ service_manager::SandboxLinux::GetInstance()->StartBrokerProcess(
+ CommandSetForGPU(options), FilePermissionsForGpu(options),
+ base::BindOnce(BrokerProcessPreSandboxHook), options);
++#endif
+
+ if (!LoadLibrariesForGpu(options))
+ return false;
diff --git a/devel/electron7/files/patch-content_ppapi__plugin_ppapi__blink__platform__impl.cc b/devel/electron7/files/patch-content_ppapi__plugin_ppapi__blink__platform__impl.cc
new file mode 100644
index 000000000000..54596a4e2374
--- /dev/null
+++ b/devel/electron7/files/patch-content_ppapi__plugin_ppapi__blink__platform__impl.cc
@@ -0,0 +1,38 @@
+--- content/ppapi_plugin/ppapi_blink_platform_impl.cc.orig 2019-12-12 12:39:40 UTC
++++ content/ppapi_plugin/ppapi_blink_platform_impl.cc
+@@ -19,7 +19,7 @@
+
+ #if defined(OS_MACOSX)
+ #include "content/child/child_process_sandbox_support_impl_mac.h"
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ #include "content/child/child_process_sandbox_support_impl_linux.h"
+ #include "mojo/public/cpp/bindings/pending_remote.h"
+ #endif
+@@ -34,7 +34,7 @@ typedef struct CGFont* CGFontRef;
+ namespace content {
+
+ PpapiBlinkPlatformImpl::PpapiBlinkPlatformImpl() {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ mojo::PendingRemote<font_service::mojom::FontService> font_service;
+ ChildThread::Get()->BindHostReceiver(
+ font_service.InitWithNewPipeAndPassReceiver());
+@@ -51,7 +51,7 @@ PpapiBlinkPlatformImpl::~PpapiBlinkPlatformImpl() {
+ }
+
+ void PpapiBlinkPlatformImpl::Shutdown() {
+-#if defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ // SandboxSupport contains a map of OutOfProcessFont objects, which hold
+ // WebStrings and WebVectors, which become invalidated when blink is shut
+ // down. Hence, we need to clear that map now, just before blink::shutdown()
+@@ -61,7 +61,7 @@ void PpapiBlinkPlatformImpl::Shutdown() {
+ }
+
+ blink::WebSandboxSupport* PpapiBlinkPlatformImpl::GetSandboxSupport() {
+-#if defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ return sandbox_support_.get();
+ #else
+ return nullptr;
diff --git a/devel/electron7/files/patch-content_ppapi__plugin_ppapi__blink__platform__impl.h b/devel/electron7/files/patch-content_ppapi__plugin_ppapi__blink__platform__impl.h
new file mode 100644
index 000000000000..faaa76042db6
--- /dev/null
+++ b/devel/electron7/files/patch-content_ppapi__plugin_ppapi__blink__platform__impl.h
@@ -0,0 +1,25 @@
+--- content/ppapi_plugin/ppapi_blink_platform_impl.h.orig 2019-12-12 12:39:40 UTC
++++ content/ppapi_plugin/ppapi_blink_platform_impl.h
+@@ -13,7 +13,7 @@
+ #include "build/build_config.h"
+ #include "content/child/blink_platform_impl.h"
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include "components/services/font/public/cpp/font_loader.h"
+ #include "third_party/skia/include/core/SkRefCnt.h"
+ #endif
+@@ -36,11 +36,11 @@ class PpapiBlinkPlatformImpl : public BlinkPlatformImp
+ blink::WebThemeEngine* ThemeEngine() override;
+
+ private:
+-#if defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ std::unique_ptr<blink::WebSandboxSupport> sandbox_support_;
+ #endif
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ sk_sp<font_service::FontLoader> font_loader_;
+ #endif
+
diff --git a/devel/electron7/files/patch-content_public_app_content__main__delegate.cc b/devel/electron7/files/patch-content_public_app_content__main__delegate.cc
new file mode 100644
index 000000000000..fba46113805d
--- /dev/null
+++ b/devel/electron7/files/patch-content_public_app_content__main__delegate.cc
@@ -0,0 +1,18 @@
+--- content/public/app/content_main_delegate.cc.orig 2019-12-12 12:39:40 UTC
++++ content/public/app/content_main_delegate.cc
+@@ -38,13 +38,13 @@ bool ContentMainDelegate::DelaySandboxInitialization(
+ return false;
+ }
+
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+
+ void ContentMainDelegate::ZygoteStarting(
+ std::vector<std::unique_ptr<service_manager::ZygoteForkDelegate>>*
+ delegates) {}
+
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+
+ int ContentMainDelegate::TerminateForFatalInitializationError() {
+ CHECK(false);
diff --git a/devel/electron7/files/patch-content_public_app_content__main__delegate.h b/devel/electron7/files/patch-content_public_app_content__main__delegate.h
new file mode 100644
index 000000000000..15bfb755c990
--- /dev/null
+++ b/devel/electron7/files/patch-content_public_app_content__main__delegate.h
@@ -0,0 +1,20 @@
+--- content/public/app/content_main_delegate.h.orig 2019-12-12 12:39:40 UTC
++++ content/public/app/content_main_delegate.h
+@@ -71,7 +71,7 @@ class CONTENT_EXPORT ContentMainDelegate {
+ // want it at all.
+ virtual bool DelaySandboxInitialization(const std::string& process_type);
+
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ // Tells the embedder that the zygote process is starting, and allows it to
+ // specify one or more zygote delegates if it wishes by storing them in
+ // |*delegates|.
+@@ -81,7 +81,7 @@ class CONTENT_EXPORT ContentMainDelegate {
+
+ // Called every time the zygote process forks.
+ virtual void ZygoteForked() {}
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+
+ // Allows the embedder to prevent locking the scheme registry. The scheme
+ // registry is the list of URL schemes we recognize, with some additional
diff --git a/devel/electron7/files/patch-content_public_app_v8__snapshot__overlay__manifest.cc b/devel/electron7/files/patch-content_public_app_v8__snapshot__overlay__manifest.cc
new file mode 100644
index 000000000000..6ddae0571348
--- /dev/null
+++ b/devel/electron7/files/patch-content_public_app_v8__snapshot__overlay__manifest.cc
@@ -0,0 +1,11 @@
+--- content/public/app/v8_snapshot_overlay_manifest.cc.orig 2019-12-12 12:39:40 UTC
++++ content/public/app/v8_snapshot_overlay_manifest.cc
+@@ -15,7 +15,7 @@ namespace content {
+ const service_manager::Manifest& GetV8SnapshotOverlayManifest() {
+ static base::NoDestructor<service_manager::Manifest> manifest {
+ service_manager::ManifestBuilder()
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ .PreloadFile(kV8NativesDataDescriptor,
+ base::FilePath(FILE_PATH_LITERAL("natives_blob.bin")))
+ #if defined(USE_V8_CONTEXT_SNAPSHOT)
diff --git a/devel/electron7/files/patch-content_public_common_child__process__host.h b/devel/electron7/files/patch-content_public_common_child__process__host.h
new file mode 100644
index 000000000000..b1e38eb56a18
--- /dev/null
+++ b/devel/electron7/files/patch-content_public_common_child__process__host.h
@@ -0,0 +1,11 @@
+--- content/public/common/child_process_host.h.orig 2019-12-12 12:39:41 UTC
++++ content/public/common/child_process_host.h
+@@ -52,7 +52,7 @@ class CONTENT_EXPORT ChildProcessHost : public IPC::Se
+ // No special behavior requested.
+ CHILD_NORMAL = 0,
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Indicates that the child execed after forking may be execced from
+ // /proc/self/exe rather than using the "real" app path. This prevents
+ // autoupdate from confusing us if it changes the file out from under us.
diff --git a/devel/electron7/files/patch-content_public_common_common__param__traits__macros.h b/devel/electron7/files/patch-content_public_common_common__param__traits__macros.h
new file mode 100644
index 000000000000..c97d7b001ad6
--- /dev/null
+++ b/devel/electron7/files/patch-content_public_common_common__param__traits__macros.h
@@ -0,0 +1,11 @@
+--- content/public/common/common_param_traits_macros.h.orig 2019-12-12 12:39:41 UTC
++++ content/public/common/common_param_traits_macros.h
+@@ -337,7 +337,7 @@ IPC_STRUCT_TRAITS_BEGIN(blink::mojom::RendererPreferen
+ IPC_STRUCT_TRAITS_MEMBER(disable_client_blocked_error_page)
+ IPC_STRUCT_TRAITS_MEMBER(plugin_fullscreen_allowed)
+ IPC_STRUCT_TRAITS_MEMBER(network_contry_iso)
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ IPC_STRUCT_TRAITS_MEMBER(system_font_family_name)
+ #endif
+ #if defined(OS_WIN)
diff --git a/devel/electron7/files/patch-content_public_common_content__features.cc b/devel/electron7/files/patch-content_public_common_content__features.cc
new file mode 100644
index 000000000000..01dbae3dd16a
--- /dev/null
+++ b/devel/electron7/files/patch-content_public_common_content__features.cc
@@ -0,0 +1,29 @@
+--- content/public/common/content_features.cc.orig 2019-12-12 12:39:41 UTC
++++ content/public/common/content_features.cc
+@@ -47,7 +47,7 @@ const base::Feature kAudioServiceLaunchOnStartup{
+ const base::Feature kAudioServiceOutOfProcess{
+ "AudioServiceOutOfProcess",
+ #if defined(OS_WIN) || defined(OS_MACOSX) || \
+- (defined(OS_LINUX) && !defined(OS_CHROMEOS))
++ (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ base::FEATURE_ENABLED_BY_DEFAULT
+ #else
+ base::FEATURE_DISABLED_BY_DEFAULT
+@@ -634,7 +634,7 @@ const base::Feature kWebAssemblyThreads {
+ };
+
+ // Enable WebAssembly trap handler.
+-#if (defined(OS_LINUX) || defined(OS_WIN) || defined(OS_MACOSX)) && \
++#if (defined(OS_BSD) || defined(OS_LINUX) || defined(OS_WIN) || defined(OS_MACOSX)) && \
+ defined(ARCH_CPU_X86_64)
+ const base::Feature kWebAssemblyTrapHandler{"WebAssemblyTrapHandler",
+ base::FEATURE_ENABLED_BY_DEFAULT};
+@@ -669,7 +669,7 @@ const base::Feature kWebAuthBle{"WebAuthenticationBle"
+ // https://w3c.github.io/webauthn
+ const base::Feature kWebAuthCable {
+ "WebAuthenticationCable",
+-#if !defined(OS_CHROMEOS) && defined(OS_LINUX)
++#if (!defined(OS_CHROMEOS) && defined(OS_LINUX)) || defined(OS_BSD)
+ base::FEATURE_DISABLED_BY_DEFAULT
+ #else
+ base::FEATURE_ENABLED_BY_DEFAULT
diff --git a/devel/electron7/files/patch-content_public_common_content__switches.cc b/devel/electron7/files/patch-content_public_common_content__switches.cc
new file mode 100644
index 000000000000..25344f56c7c8
--- /dev/null
+++ b/devel/electron7/files/patch-content_public_common_content__switches.cc
@@ -0,0 +1,11 @@
+--- content/public/common/content_switches.cc.orig 2019-12-12 12:39:41 UTC
++++ content/public/common/content_switches.cc
+@@ -980,7 +980,7 @@ const char kEnableAggressiveDOMStorageFlushing[] =
+ // Enable indication that browser is controlled by automation.
+ const char kEnableAutomation[] = "enable-automation";
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_FREEBSD)
+ // Allows sending text-to-speech requests to speech-dispatcher, a common
+ // Linux speech service. Because it's buggy, the user must explicitly
+ // enable it so that visiting a random webpage can't cause instability.
diff --git a/devel/electron7/files/patch-content_public_common_content__switches.h b/devel/electron7/files/patch-content_public_common_content__switches.h
new file mode 100644
index 000000000000..802bb1675f36
--- /dev/null
+++ b/devel/electron7/files/patch-content_public_common_content__switches.h
@@ -0,0 +1,11 @@
+--- content/public/common/content_switches.h.orig 2019-12-12 12:39:41 UTC
++++ content/public/common/content_switches.h
+@@ -270,7 +270,7 @@ CONTENT_EXPORT extern const char kRemoteDebuggingSocke
+ CONTENT_EXPORT extern const char kRendererWaitForJavaDebugger[];
+ #endif
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_FREEBSD)
+ CONTENT_EXPORT extern const char kEnableSpeechDispatcher[];
+ #endif
+
diff --git a/devel/electron7/files/patch-content_public_common_use__zoom__for__dsf__policy.cc b/devel/electron7/files/patch-content_public_common_use__zoom__for__dsf__policy.cc
new file mode 100644
index 000000000000..805ca02294ec
--- /dev/null
+++ b/devel/electron7/files/patch-content_public_common_use__zoom__for__dsf__policy.cc
@@ -0,0 +1,11 @@
+--- content/public/common/use_zoom_for_dsf_policy.cc.orig 2019-12-12 12:39:41 UTC
++++ content/public/common/use_zoom_for_dsf_policy.cc
+@@ -25,7 +25,7 @@ const base::Feature kUseZoomForDsfEnabledByDefault{
+ #endif
+
+ bool IsUseZoomForDSFEnabledByDefault() {
+-#if defined(OS_LINUX) || defined(OS_FUCHSIA)
++#if defined(OS_LINUX) || defined(OS_FUCHSIA) || defined(OS_BSD)
+ return true;
+ #elif defined(OS_WIN) || defined(OS_ANDROID)
+ return base::FeatureList::IsEnabled(kUseZoomForDsfEnabledByDefault);
diff --git a/devel/electron7/files/patch-content_public_test_browser__test__base.cc b/devel/electron7/files/patch-content_public_test_browser__test__base.cc
new file mode 100644
index 000000000000..eae307ac348d
--- /dev/null
+++ b/devel/electron7/files/patch-content_public_test_browser__test__base.cc
@@ -0,0 +1,13 @@
+--- content/public/test/browser_test_base.cc.orig 2019-12-12 12:39:41 UTC
++++ content/public/test/browser_test_base.cc
+@@ -96,6 +96,10 @@
+ #include "ui/views/test/event_generator_delegate_mac.h"
+ #endif
+
++#if defined(OS_FREEBSD)
++#include <sys/signal.h>
++#endif
++
+ #if defined(OS_POSIX)
+ #include "base/process/process_handle.h"
+ #endif
diff --git a/devel/electron7/files/patch-content_public_test_mock__render__thread.cc b/devel/electron7/files/patch-content_public_test_mock__render__thread.cc
new file mode 100644
index 000000000000..445d046fb8dc
--- /dev/null
+++ b/devel/electron7/files/patch-content_public_test_mock__render__thread.cc
@@ -0,0 +1,11 @@
+--- content/public/test/mock_render_thread.cc.orig 2019-12-12 12:39:41 UTC
++++ content/public/test/mock_render_thread.cc
+@@ -74,7 +74,7 @@ class MockRenderMessageFilterImpl : public mojom::Rend
+ std::move(callback).Run(false);
+ }
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ void SetThreadPriority(int32_t platform_thread_id,
+ base::ThreadPriority thread_priority) override {}
+ #endif
diff --git a/devel/electron7/files/patch-content_renderer_media_audio_audio__device__factory.cc b/devel/electron7/files/patch-content_renderer_media_audio_audio__device__factory.cc
new file mode 100644
index 000000000000..14b72624b8a8
--- /dev/null
+++ b/devel/electron7/files/patch-content_renderer_media_audio_audio__device__factory.cc
@@ -0,0 +1,11 @@
+--- content/renderer/media/audio/audio_device_factory.cc.orig 2019-12-12 12:39:41 UTC
++++ content/renderer/media/audio/audio_device_factory.cc
+@@ -35,7 +35,7 @@ AudioDeviceFactory* AudioDeviceFactory::factory_ = nul
+ namespace {
+
+ #if defined(OS_WIN) || defined(OS_MACOSX) || \
+- (defined(OS_LINUX) && !defined(OS_CHROMEOS))
++ (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ // Due to driver deadlock issues on Windows (http://crbug/422522) there is a
+ // chance device authorization response is never received from the browser side.
+ // In this case we will time out, to avoid renderer hang forever waiting for
diff --git a/devel/electron7/files/patch-content_renderer_media_webrtc_webrtc__audio__renderer__unittest.cc b/devel/electron7/files/patch-content_renderer_media_webrtc_webrtc__audio__renderer__unittest.cc
new file mode 100644
index 000000000000..869377bc8081
--- /dev/null
+++ b/devel/electron7/files/patch-content_renderer_media_webrtc_webrtc__audio__renderer__unittest.cc
@@ -0,0 +1,11 @@
+--- content/renderer/media/webrtc/webrtc_audio_renderer_unittest.cc.orig 2019-12-12 12:39:41 UTC
++++ content/renderer/media/webrtc/webrtc_audio_renderer_unittest.cc
+@@ -244,7 +244,7 @@ TEST_F(WebRtcAudioRendererTest, MultipleRenderers) {
+ TEST_F(WebRtcAudioRendererTest, VerifySinkParameters) {
+ SetupRenderer(kDefaultOutputDeviceId);
+ renderer_proxy_->Start();
+-#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_FUCHSIA)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_FUCHSIA) || defined(OS_BSD)
+ static const int kExpectedBufferSize = kHardwareSampleRate / 100;
+ #elif defined(OS_ANDROID)
+ static const int kExpectedBufferSize = 2 * kHardwareSampleRate / 100;
diff --git a/devel/electron7/files/patch-content_renderer_render__process__impl.cc b/devel/electron7/files/patch-content_renderer_render__process__impl.cc
new file mode 100644
index 000000000000..a5cd5dff082e
--- /dev/null
+++ b/devel/electron7/files/patch-content_renderer_render__process__impl.cc
@@ -0,0 +1,20 @@
+--- content/renderer/render_process_impl.cc.orig 2019-12-12 12:39:41 UTC
++++ content/renderer/render_process_impl.cc
+@@ -43,7 +43,7 @@
+ #if defined(OS_WIN)
+ #include "base/win/win_util.h"
+ #endif
+-#if defined(OS_LINUX) && defined(ARCH_CPU_X86_64)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && defined(ARCH_CPU_X86_64)
+ #include "v8/include/v8-wasm-trap-handler-posix.h"
+ #endif
+ namespace {
+@@ -158,7 +158,7 @@ RenderProcessImpl::RenderProcessImpl()
+
+ SetV8FlagIfNotFeature(features::kWebAssemblyTrapHandler,
+ "--no-wasm-trap-handler");
+-#if defined(OS_LINUX) && defined(ARCH_CPU_X86_64)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && defined(ARCH_CPU_X86_64)
+ if (base::FeatureList::IsEnabled(features::kWebAssemblyTrapHandler)) {
+ base::CommandLine* command_line = base::CommandLine::ForCurrentProcess();
+ if (!command_line->HasSwitch(
diff --git a/devel/electron7/files/patch-content_renderer_render__thread__impl.cc b/devel/electron7/files/patch-content_renderer_render__thread__impl.cc
new file mode 100644
index 000000000000..64884a3016bc
--- /dev/null
+++ b/devel/electron7/files/patch-content_renderer_render__thread__impl.cc
@@ -0,0 +1,51 @@
+--- content/renderer/render_thread_impl.cc.orig 2019-12-16 13:32:58 UTC
++++ content/renderer/render_thread_impl.cc
+@@ -185,12 +185,21 @@
+ #include "mojo/public/cpp/bindings/message_dumper.h"
+ #endif
+
++#if !defined(OS_BSD)
+ #if defined(OS_MACOSX)
+ #include <malloc/malloc.h>
+ #else
+ #include <malloc.h>
+ #endif
++#endif
+
++#if defined(OS_BSD)
++#include <stddef.h>
++#include <stdint.h>
++#include <sys/param.h>
++#include <sys/sysctl.h>
++#endif
++
+ using base::ThreadRestrictions;
+ using blink::WebDocument;
+ using blink::WebFrame;
+@@ -901,7 +910,7 @@ void RenderThreadImpl::Init() {
+ DCHECK(parsed_num_raster_threads) << string_value;
+ DCHECK_GT(num_raster_threads, 0);
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ categorized_worker_pool_->SetBackgroundingCallback(
+ main_thread_scheduler_->DefaultTaskRunner(),
+ base::BindOnce(
+@@ -930,7 +939,7 @@ void RenderThreadImpl::Init() {
+ base::DiscardableMemoryAllocator::SetInstance(
+ discardable_shared_memory_manager_.get());
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ if (base::FeatureList::IsEnabled(
+ blink::features::kBlinkCompositorUseDisplayThreadPriority)) {
+ render_message_filter()->SetThreadPriority(
+@@ -1309,7 +1318,7 @@ media::GpuVideoAcceleratorFactories* RenderThreadImpl:
+ !cmd_line->HasSwitch(switches::kDisableGpuMemoryBufferVideoFrames);
+ #else
+ cmd_line->HasSwitch(switches::kEnableGpuMemoryBufferVideoFrames);
+-#endif // defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_WIN)
++#endif // defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD)
+ const bool enable_media_stream_gpu_memory_buffers =
+ enable_gpu_memory_buffers &&
+ base::FeatureList::IsEnabled(
diff --git a/devel/electron7/files/patch-content_renderer_renderer__blink__platform__impl.cc b/devel/electron7/files/patch-content_renderer_renderer__blink__platform__impl.cc
new file mode 100644
index 000000000000..df1e9b2c1ad7
--- /dev/null
+++ b/devel/electron7/files/patch-content_renderer_renderer__blink__platform__impl.cc
@@ -0,0 +1,56 @@
+--- content/renderer/renderer_blink_platform_impl.cc.orig 2019-12-16 13:32:59 UTC
++++ content/renderer/renderer_blink_platform_impl.cc
+@@ -102,7 +102,7 @@
+
+ #if defined(OS_MACOSX)
+ #include "content/child/child_process_sandbox_support_impl_mac.h"
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ #include "content/child/child_process_sandbox_support_impl_linux.h"
+ #endif
+
+@@ -183,7 +183,7 @@ RendererBlinkPlatformImpl::RendererBlinkPlatformImpl(
+ if (RenderThreadImpl::current()) {
+ io_runner_ = RenderThreadImpl::current()->GetIOTaskRunner();
+ thread_safe_sender_ = RenderThreadImpl::current()->thread_safe_sender();
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ mojo::PendingRemote<font_service::mojom::FontService> font_service;
+ RenderThreadImpl::current()->BindHostReceiver(
+ font_service.InitWithNewPipeAndPassReceiver());
+@@ -193,7 +193,7 @@ RendererBlinkPlatformImpl::RendererBlinkPlatformImpl(
+ #endif
+ }
+
+-#if defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ if (sandboxEnabled()) {
+ #if defined(OS_MACOSX)
+ std::unique_ptr<service_manager::Connector> sandbox_connector;
+@@ -224,7 +224,7 @@ RendererBlinkPlatformImpl::~RendererBlinkPlatformImpl(
+ }
+
+ void RendererBlinkPlatformImpl::Shutdown() {
+-#if defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ // SandboxSupport contains a map of OutOfProcessFont objects, which hold
+ // WebStrings and WebVectors, which become invalidated when blink is shut
+ // down. Hence, we need to clear that map now, just before blink::shutdown()
+@@ -289,7 +289,7 @@ RendererBlinkPlatformImpl::CreateNetworkURLLoaderFacto
+
+ void RendererBlinkPlatformImpl::SetDisplayThreadPriority(
+ base::PlatformThreadId thread_id) {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ if (RenderThreadImpl* render_thread = RenderThreadImpl::current()) {
+ render_thread->render_message_filter()->SetThreadPriority(
+ thread_id, base::ThreadPriority::DISPLAY);
+@@ -302,7 +302,7 @@ blink::BlameContext* RendererBlinkPlatformImpl::GetTop
+ }
+
+ blink::WebSandboxSupport* RendererBlinkPlatformImpl::GetSandboxSupport() {
+-#if defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ return sandbox_support_.get();
+ #else
+ // These platforms do not require sandbox support.
diff --git a/devel/electron7/files/patch-content_renderer_renderer__blink__platform__impl.h b/devel/electron7/files/patch-content_renderer_renderer__blink__platform__impl.h
new file mode 100644
index 000000000000..5cee6bbdfed3
--- /dev/null
+++ b/devel/electron7/files/patch-content_renderer_renderer__blink__platform__impl.h
@@ -0,0 +1,29 @@
+--- content/renderer/renderer_blink_platform_impl.h.orig 2019-12-16 13:32:59 UTC
++++ content/renderer/renderer_blink_platform_impl.h
+@@ -30,7 +30,7 @@
+ #include "third_party/blink/public/mojom/cache_storage/cache_storage.mojom.h"
+ #include "third_party/blink/public/mojom/loader/code_cache.mojom.h"
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include "components/services/font/public/cpp/font_loader.h" // nogncheck
+ #include "third_party/skia/include/core/SkRefCnt.h" // nogncheck
+ #endif
+@@ -226,7 +226,7 @@ class CONTENT_EXPORT RendererBlinkPlatformImpl : publi
+
+ scoped_refptr<base::SingleThreadTaskRunner> io_runner_;
+
+-#if defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ std::unique_ptr<blink::WebSandboxSupport> sandbox_support_;
+ #endif
+
+@@ -253,7 +253,7 @@ class CONTENT_EXPORT RendererBlinkPlatformImpl : publi
+ std::unique_ptr<blink::WebTransmissionEncodingInfoHandler>
+ web_transmission_encoding_info_handler_;
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ sk_sp<font_service::FontLoader> font_loader_;
+ #endif
+
diff --git a/devel/electron7/files/patch-content_renderer_renderer__main__platform__delegate__linux.cc b/devel/electron7/files/patch-content_renderer_renderer__main__platform__delegate__linux.cc
new file mode 100644
index 000000000000..8806823c7216
--- /dev/null
+++ b/devel/electron7/files/patch-content_renderer_renderer__main__platform__delegate__linux.cc
@@ -0,0 +1,19 @@
+--- content/renderer/renderer_main_platform_delegate_linux.cc.orig 2019-12-12 12:39:41 UTC
++++ content/renderer/renderer_main_platform_delegate_linux.cc
+@@ -30,6 +30,7 @@ void RendererMainPlatformDelegate::PlatformUninitializ
+ }
+
+ bool RendererMainPlatformDelegate::EnableSandbox() {
++#if !defined(OS_BSD)
+ // The setuid sandbox is started in the zygote process: zygote_main_linux.cc
+ // https://chromium.googlesource.com/chromium/src/+/master/docs/linux_suid_sandbox.md
+ //
+@@ -65,7 +66,7 @@ bool RendererMainPlatformDelegate::EnableSandbox() {
+ CHECK_EQ(errno, EPERM);
+ }
+ #endif // __x86_64__
+-
++#endif // ! OS_BSD
+ return true;
+ }
+
diff --git a/devel/electron7/files/patch-content_shell_BUILD.gn b/devel/electron7/files/patch-content_shell_BUILD.gn
new file mode 100644
index 000000000000..25c1bd8d7c9b
--- /dev/null
+++ b/devel/electron7/files/patch-content_shell_BUILD.gn
@@ -0,0 +1,11 @@
+--- content/shell/BUILD.gn.orig 2019-12-12 12:39:41 UTC
++++ content/shell/BUILD.gn
+@@ -962,7 +962,7 @@ group("content_shell_crash_test") {
+ if (is_win) {
+ data_deps += [ "//build/win:copy_cdb_to_output" ]
+ }
+- if (is_posix) {
++ if (is_posix && !is_bsd) {
+ data_deps += [
+ "//third_party/breakpad:dump_syms",
+ "//third_party/breakpad:minidump_stackwalk",
diff --git a/devel/electron7/files/patch-content_shell_app_shell__main__delegate.cc b/devel/electron7/files/patch-content_shell_app_shell__main__delegate.cc
new file mode 100644
index 000000000000..dd8f8c90a8eb
--- /dev/null
+++ b/devel/electron7/files/patch-content_shell_app_shell__main__delegate.cc
@@ -0,0 +1,20 @@
+--- content/shell/app/shell_main_delegate.cc.orig 2019-12-12 12:39:41 UTC
++++ content/shell/app/shell_main_delegate.cc
+@@ -170,7 +170,7 @@ bool ShellMainDelegate::BasicStartupComplete(int* exit
+
+ v8_crashpad_support::SetUp();
+ #endif
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ breakpad::SetFirstChanceExceptionHandler(v8::TryHandleWebAssemblyTrapPosix);
+ #endif
+ #if defined(OS_MACOSX)
+@@ -317,7 +317,7 @@ bool ShellMainDelegate::BasicStartupComplete(int* exit
+ }
+
+ void ShellMainDelegate::PreSandboxStartup() {
+-#if defined(ARCH_CPU_ARM_FAMILY) && (defined(OS_ANDROID) || defined(OS_LINUX))
++#if defined(ARCH_CPU_ARM_FAMILY) && (defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_BSD))
+ // Create an instance of the CPU class to parse /proc/cpuinfo and cache
+ // cpu_brand info.
+ base::CPU cpu_info;
diff --git a/devel/electron7/files/patch-content_shell_browser_shell__browser__context.cc b/devel/electron7/files/patch-content_shell_browser_shell__browser__context.cc
new file mode 100644
index 000000000000..56498d914343
--- /dev/null
+++ b/devel/electron7/files/patch-content_shell_browser_shell__browser__context.cc
@@ -0,0 +1,20 @@
+--- content/shell/browser/shell_browser_context.cc.orig 2019-12-12 12:39:41 UTC
++++ content/shell/browser/shell_browser_context.cc
+@@ -32,7 +32,7 @@
+
+ #if defined(OS_WIN)
+ #include "base/base_paths_win.h"
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ #include "base/nix/xdg_util.h"
+ #elif defined(OS_MACOSX)
+ #include "base/base_paths_mac.h"
+@@ -107,7 +107,7 @@ void ShellBrowserContext::InitWhileIOAllowed() {
+ #if defined(OS_WIN)
+ CHECK(base::PathService::Get(base::DIR_LOCAL_APP_DATA, &path_));
+ path_ = path_.Append(std::wstring(L"content_shell"));
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ std::unique_ptr<base::Environment> env(base::Environment::Create());
+ base::FilePath config_dir(
+ base::nix::GetXDGDirectory(env.get(),
diff --git a/devel/electron7/files/patch-content_shell_browser_shell__browser__main__parts.cc b/devel/electron7/files/patch-content_shell_browser_shell__browser__main__parts.cc
new file mode 100644
index 000000000000..325a7f8634b5
--- /dev/null
+++ b/devel/electron7/files/patch-content_shell_browser_shell__browser__main__parts.cc
@@ -0,0 +1,20 @@
+--- content/shell/browser/shell_browser_main_parts.cc.orig 2019-12-12 12:39:41 UTC
++++ content/shell/browser/shell_browser_main_parts.cc
+@@ -47,7 +47,7 @@
+ #if defined(USE_AURA) && defined(USE_X11)
+ #include "ui/events/devices/x11/touch_factory_x11.h" // nogncheck
+ #endif
+-#if !defined(OS_CHROMEOS) && defined(USE_AURA) && defined(OS_LINUX)
++#if !defined(OS_CHROMEOS) && defined(USE_AURA) && (defined(OS_LINUX) || defined(OS_BSD))
+ #include "ui/base/ime/init/input_method_initializer.h"
+ #endif
+ #if defined(OS_CHROMEOS)
+@@ -125,7 +125,7 @@ int ShellBrowserMainParts::PreEarlyInitialization() {
+ #if defined(USE_X11)
+ ui::SetDefaultX11ErrorHandlers();
+ #endif
+-#if !defined(OS_CHROMEOS) && defined(USE_AURA) && defined(OS_LINUX)
++#if !defined(OS_CHROMEOS) && defined(USE_AURA) && (defined(OS_BSD) || defined(OS_LINUX))
+ ui::InitializeInputMethodForTesting();
+ #endif
+ #if defined(OS_ANDROID)
diff --git a/devel/electron7/files/patch-content_shell_browser_web__test_web__test__browser__context.cc b/devel/electron7/files/patch-content_shell_browser_web__test_web__test__browser__context.cc
new file mode 100644
index 000000000000..7f6ec38eb8d9
--- /dev/null
+++ b/devel/electron7/files/patch-content_shell_browser_web__test_web__test__browser__context.cc
@@ -0,0 +1,11 @@
+--- content/shell/browser/web_test/web_test_browser_context.cc.orig 2019-12-12 12:39:42 UTC
++++ content/shell/browser/web_test/web_test_browser_context.cc
+@@ -26,7 +26,7 @@
+
+ #if defined(OS_WIN)
+ #include "base/base_paths_win.h"
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ #include "base/nix/xdg_util.h"
+ #elif defined(OS_MACOSX)
+ #include "base/base_paths_mac.h"
diff --git a/devel/electron7/files/patch-content_shell_browser_web__test_web__test__browser__main__parts.cc b/devel/electron7/files/patch-content_shell_browser_web__test_web__test__browser__main__parts.cc
new file mode 100644
index 000000000000..6940b485e9d8
--- /dev/null
+++ b/devel/electron7/files/patch-content_shell_browser_web__test_web__test__browser__main__parts.cc
@@ -0,0 +1,11 @@
+--- content/shell/browser/web_test/web_test_browser_main_parts.cc.orig 2019-12-12 12:39:42 UTC
++++ content/shell/browser/web_test/web_test_browser_main_parts.cc
+@@ -36,7 +36,7 @@
+ #if defined(USE_AURA) && defined(USE_X11)
+ #include "ui/events/devices/x11/touch_factory_x11.h" // nogncheck
+ #endif
+-#if !defined(OS_CHROMEOS) && defined(USE_AURA) && defined(OS_LINUX)
++#if !defined(OS_CHROMEOS) && defined(USE_AURA) && (defined(OS_LINUX) || defined(OS_BSD))
+ #include "ui/base/ime/init/input_method_initializer.h"
+ #endif
+
diff --git a/devel/electron7/files/patch-content_shell_test__runner_test__runner.cc b/devel/electron7/files/patch-content_shell_test__runner_test__runner.cc
new file mode 100644
index 000000000000..66f6ff9bf7df
--- /dev/null
+++ b/devel/electron7/files/patch-content_shell_test__runner_test__runner.cc
@@ -0,0 +1,29 @@
+--- content/shell/test_runner/test_runner.cc.orig 2019-12-12 12:39:42 UTC
++++ content/shell/test_runner/test_runner.cc
+@@ -64,7 +64,7 @@
+ #include "ui/gfx/geometry/size.h"
+ #include "ui/gfx/skia_util.h"
+
+-#if defined(OS_LINUX) || defined(OS_FUCHSIA)
++#if defined(OS_LINUX) || defined(OS_FUCHSIA) || defined(OS_BSD)
+ #include "third_party/blink/public/platform/web_font_render_style.h"
+ #endif
+
+@@ -1533,7 +1533,7 @@ void TestRunner::Reset() {
+ drag_image_.reset();
+
+ blink::WebSecurityPolicy::ClearOriginAccessList();
+-#if defined(OS_LINUX) || defined(OS_FUCHSIA)
++#if defined(OS_LINUX) || defined(OS_FUCHSIA) || defined(OS_BSD)
+ blink::WebFontRenderStyle::SetSubpixelPositioning(false);
+ #endif
+
+@@ -2118,7 +2118,7 @@ void TestRunner::AddOriginAccessAllowListEntry(
+ }
+
+ void TestRunner::SetTextSubpixelPositioning(bool value) {
+-#if defined(OS_LINUX) || defined(OS_FUCHSIA)
++#if defined(OS_LINUX) || defined(OS_FUCHSIA) || defined(OS_BSD)
+ // Since FontConfig doesn't provide a variable to control subpixel
+ // positioning, we'll fall back to setting it globally for all fonts.
+ blink::WebFontRenderStyle::SetSubpixelPositioning(value);
diff --git a/devel/electron7/files/patch-content_test_content__test__suite.cc b/devel/electron7/files/patch-content_test_content__test__suite.cc
new file mode 100644
index 000000000000..88d992ccb8ae
--- /dev/null
+++ b/devel/electron7/files/patch-content_test_content__test__suite.cc
@@ -0,0 +1,18 @@
+--- content/test/content_test_suite.cc.orig 2019-12-12 12:39:42 UTC
++++ content/test/content_test_suite.cc
+@@ -81,6 +81,7 @@ void ContentTestSuite::Initialize() {
+ // to initialize GL, so don't do it here.
+ base::CommandLine* command_line = base::CommandLine::ForCurrentProcess();
+ bool is_child_process = command_line->HasSwitch(switches::kTestChildProcess);
++#if !defined(OS_BSD)
+ if (!is_child_process) {
+ gl::GLSurfaceTestSupport::InitializeNoExtensionsOneOff();
+ auto* gpu_feature_info = gpu::GetTestGpuThreadHolder()->GetGpuFeatureInfo();
+@@ -88,6 +89,7 @@ void ContentTestSuite::Initialize() {
+ gpu_feature_info->disabled_extensions);
+ gl::init::InitializeExtensionSettingsOneOffPlatform();
+ }
++#endif
+ testing::TestEventListeners& listeners =
+ testing::UnitTest::GetInstance()->listeners();
+ listeners.Append(new TestInitializationListener);
diff --git a/devel/electron7/files/patch-content_utility_utility__blink__platform__with__sandbox__support__impl.cc b/devel/electron7/files/patch-content_utility_utility__blink__platform__with__sandbox__support__impl.cc
new file mode 100644
index 000000000000..00f2b3628e7d
--- /dev/null
+++ b/devel/electron7/files/patch-content_utility_utility__blink__platform__with__sandbox__support__impl.cc
@@ -0,0 +1,29 @@
+--- content/utility/utility_blink_platform_with_sandbox_support_impl.cc.orig 2019-12-12 12:39:43 UTC
++++ content/utility/utility_blink_platform_with_sandbox_support_impl.cc
+@@ -9,7 +9,7 @@
+
+ #if defined(OS_MACOSX)
+ #include "content/child/child_process_sandbox_support_impl_mac.h"
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ #include "content/child/child_process_sandbox_support_impl_linux.h"
+ #endif
+
+@@ -18,7 +18,7 @@ namespace content {
+ UtilityBlinkPlatformWithSandboxSupportImpl::
+ UtilityBlinkPlatformWithSandboxSupportImpl(
+ service_manager::Connector* connector) {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ mojo::PendingRemote<font_service::mojom::FontService> font_service;
+ UtilityThread::Get()->BindHostReceiver(
+ font_service.InitWithNewPipeAndPassReceiver());
+@@ -35,7 +35,7 @@ UtilityBlinkPlatformWithSandboxSupportImpl::
+
+ blink::WebSandboxSupport*
+ UtilityBlinkPlatformWithSandboxSupportImpl::GetSandboxSupport() {
+-#if defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ return sandbox_support_.get();
+ #else
+ return nullptr;
diff --git a/devel/electron7/files/patch-content_utility_utility__blink__platform__with__sandbox__support__impl.h b/devel/electron7/files/patch-content_utility_utility__blink__platform__with__sandbox__support__impl.h
new file mode 100644
index 000000000000..539710e9ba17
--- /dev/null
+++ b/devel/electron7/files/patch-content_utility_utility__blink__platform__with__sandbox__support__impl.h
@@ -0,0 +1,24 @@
+--- content/utility/utility_blink_platform_with_sandbox_support_impl.h.orig 2019-12-12 12:39:43 UTC
++++ content/utility/utility_blink_platform_with_sandbox_support_impl.h
+@@ -11,7 +11,7 @@
+ #include "build/build_config.h"
+ #include "third_party/blink/public/platform/platform.h"
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include "components/services/font/public/cpp/font_loader.h" // nogncheck
+ #include "third_party/skia/include/core/SkRefCnt.h" // nogncheck
+ #endif
+@@ -39,10 +39,10 @@ class UtilityBlinkPlatformWithSandboxSupportImpl : pub
+ blink::WebSandboxSupport* GetSandboxSupport() override;
+
+ private:
+-#if defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ std::unique_ptr<blink::WebSandboxSupport> sandbox_support_;
+ #endif
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ sk_sp<font_service::FontLoader> font_loader_;
+ #endif
+
diff --git a/devel/electron7/files/patch-device_bluetooth_BUILD.gn b/devel/electron7/files/patch-device_bluetooth_BUILD.gn
new file mode 100644
index 000000000000..bd8b4e687db1
--- /dev/null
+++ b/devel/electron7/files/patch-device_bluetooth_BUILD.gn
@@ -0,0 +1,11 @@
+--- device/bluetooth/BUILD.gn.orig 2019-12-12 12:39:43 UTC
++++ device/bluetooth/BUILD.gn
+@@ -277,7 +277,7 @@ component("bluetooth") {
+ ]
+ }
+
+- if (is_chromeos || is_linux) {
++ if (is_chromeos || (is_linux && !is_bsd)) {
+ if (use_dbus) {
+ sources += [
+ "bluez/bluetooth_adapter_bluez.cc",
diff --git a/devel/electron7/files/patch-device_gamepad_gamepad__provider.cc b/devel/electron7/files/patch-device_gamepad_gamepad__provider.cc
new file mode 100644
index 000000000000..2b9e4806146e
--- /dev/null
+++ b/devel/electron7/files/patch-device_gamepad_gamepad__provider.cc
@@ -0,0 +1,11 @@
+--- device/gamepad/gamepad_provider.cc.orig 2019-12-12 12:39:43 UTC
++++ device/gamepad/gamepad_provider.cc
+@@ -167,7 +167,7 @@ void GamepadProvider::Initialize(std::unique_ptr<Gamep
+
+ if (!polling_thread_)
+ polling_thread_.reset(new base::Thread("Gamepad polling thread"));
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // On Linux, the data fetcher needs to watch file descriptors, so the message
+ // loop needs to be a libevent loop.
+ const base::MessagePumpType kMessageLoopType = base::MessagePumpType::IO;
diff --git a/devel/electron7/files/patch-device_gamepad_hid__writer__linux.cc b/devel/electron7/files/patch-device_gamepad_hid__writer__linux.cc
new file mode 100644
index 000000000000..c45381cc6409
--- /dev/null
+++ b/devel/electron7/files/patch-device_gamepad_hid__writer__linux.cc
@@ -0,0 +1,11 @@
+--- device/gamepad/hid_writer_linux.cc.orig 2019-12-12 12:39:43 UTC
++++ device/gamepad/hid_writer_linux.cc
+@@ -4,6 +4,8 @@
+
+ #include "device/gamepad/hid_writer_linux.h"
+
++#include <unistd.h>
++
+ #include "base/posix/eintr_wrapper.h"
+
+ namespace device {
diff --git a/devel/electron7/files/patch-electron_BUILD.gn b/devel/electron7/files/patch-electron_BUILD.gn
new file mode 100644
index 000000000000..d91fb1c58377
--- /dev/null
+++ b/devel/electron7/files/patch-electron_BUILD.gn
@@ -0,0 +1,40 @@
+--- electron/BUILD.gn.orig 2019-12-13 19:48:14 UTC
++++ electron/BUILD.gn
+@@ -458,6 +458,15 @@ source_set("electron_lib") {
+ sources = filenames.lib_sources
+ set_sources_assignment_filter(sources_assignment_filter)
+
++ if (is_bsd) {
++ sources -= [
++ "shell/common/crash_reporter/crash_reporter_linux.cc",
++ "shell/common/crash_reporter/crash_reporter_linux.h",
++ "shell/common/crash_reporter/linux/crash_dump_handler.cc",
++ "shell/common/crash_reporter/linux/crash_dump_handler.h",
++ ]
++ }
++
+ if (is_component_build) {
+ defines += [ "NODE_SHARED_MODE" ]
+ }
+@@ -525,6 +534,12 @@ source_set("electron_lib") {
+
+ sources += filenames.lib_sources_nss
+ }
++ if (is_bsd) {
++ deps -= [
++ "//third_party/breakpad:client",
++ ]
++ include_dirs -= [ "//third_party/breakpad" ]
++ }
+ if (is_win) {
+ libs += [ "dwmapi.lib" ]
+ deps += [
+@@ -1261,7 +1276,7 @@ dist_zip("electron_dist_zip") {
+ ":licenses",
+ ":electron_version",
+ ]
+- if (is_linux) {
++ if (is_linux && !is_bsd) {
+ data_deps += [ "//sandbox/linux:chrome_sandbox" ]
+ }
+ outputs = [
diff --git a/devel/electron7/files/patch-electron_chromium__src_chrome_browser_process__singleton__posix.cc b/devel/electron7/files/patch-electron_chromium__src_chrome_browser_process__singleton__posix.cc
new file mode 100644
index 000000000000..b0774a5a4bb0
--- /dev/null
+++ b/devel/electron7/files/patch-electron_chromium__src_chrome_browser_process__singleton__posix.cc
@@ -0,0 +1,20 @@
+--- electron/chromium_src/chrome/browser/process_singleton_posix.cc.orig 2019-12-13 19:48:14 UTC
++++ electron/chromium_src/chrome/browser/process_singleton_posix.cc
+@@ -95,7 +95,7 @@
+ #include "net/base/network_interfaces.h"
+ #include "ui/base/l10n/l10n_util.h"
+
+-#if defined(TOOLKIT_VIEWS) && defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if defined(TOOLKIT_VIEWS) && ((defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD))
+ #include "ui/views/linux_ui/linux_ui.h"
+ #endif
+
+@@ -862,7 +862,7 @@ ProcessSingleton::NotifyResult ProcessSingleton::Notif
+ // The other process is shutting down, it's safe to start a new process.
+ return PROCESS_NONE;
+ } else if (strncmp(buf, kACKToken, base::size(kACKToken) - 1) == 0) {
+-#if defined(TOOLKIT_VIEWS) && defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if defined(TOOLKIT_VIEWS) && ((defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD))
+ // Likely NULL in unit tests.
+ views::LinuxUI* linux_ui = views::LinuxUI::instance();
+ if (linux_ui)
diff --git a/devel/electron7/files/patch-electron_default__app_default__app.ts b/devel/electron7/files/patch-electron_default__app_default__app.ts
new file mode 100644
index 000000000000..c7d4a920f486
--- /dev/null
+++ b/devel/electron7/files/patch-electron_default__app_default__app.ts
@@ -0,0 +1,11 @@
+--- electron/default_app/default_app.ts.orig 2020-03-24 05:00:48 UTC
++++ electron/default_app/default_app.ts
+@@ -59,7 +59,7 @@ async function createWindow () {
+ show: false
+ };
+
+- if (process.platform === 'linux') {
++ if (process.platform === 'linux' || process.platform === 'freebsd') {
+ options.icon = path.join(__dirname, 'icon.png');
+ }
+
diff --git a/devel/electron7/files/patch-electron_lib_browser_api_app.ts b/devel/electron7/files/patch-electron_lib_browser_api_app.ts
new file mode 100644
index 000000000000..a0f67a9157c0
--- /dev/null
+++ b/devel/electron7/files/patch-electron_lib_browser_api_app.ts
@@ -0,0 +1,11 @@
+--- electron/lib/browser/api/app.ts.orig 2020-03-24 05:00:48 UTC
++++ electron/lib/browser/api/app.ts
+@@ -67,7 +67,7 @@ if (process.platform === 'darwin') {
+ app.dock!.getMenu = () => dockMenu;
+ }
+
+-if (process.platform === 'linux') {
++if (process.platform === 'linux' || process.platform === 'freebsd') {
+ const patternVmRSS = /^VmRSS:\s*(\d+) kB$/m;
+ const patternVmHWM = /^VmHWM:\s*(\d+) kB$/m;
+
diff --git a/devel/electron7/files/patch-electron_lib_browser_api_dialog.js b/devel/electron7/files/patch-electron_lib_browser_api_dialog.js
new file mode 100644
index 000000000000..6c7727e89dc9
--- /dev/null
+++ b/devel/electron7/files/patch-electron_lib_browser_api_dialog.js
@@ -0,0 +1,11 @@
+--- electron/lib/browser/api/dialog.js.orig 2020-03-24 05:00:48 UTC
++++ electron/lib/browser/api/dialog.js
+@@ -28,7 +28,7 @@ const normalizeAccessKey = (text) => {
+ // existing single underscores with a second underscore, replace double
+ // ampersands with a single ampersand, and replace a single ampersand with
+ // a single underscore
+- if (process.platform === 'linux') {
++ if (process.platform === 'linux' || process.platform === 'freebsd') {
+ return text.replace(/_/g, '__').replace(/&(.?)/g, (match, after) => {
+ if (after === '&') return after;
+ return `_${after}`;
diff --git a/devel/electron7/files/patch-electron_lib_browser_api_menu-item-roles.js b/devel/electron7/files/patch-electron_lib_browser_api_menu-item-roles.js
new file mode 100644
index 000000000000..20edb3caad35
--- /dev/null
+++ b/devel/electron7/files/patch-electron_lib_browser_api_menu-item-roles.js
@@ -0,0 +1,11 @@
+--- electron/lib/browser/api/menu-item-roles.js.orig 2020-03-24 05:00:48 UTC
++++ electron/lib/browser/api/menu-item-roles.js
+@@ -4,7 +4,7 @@ const { app } = require('electron');
+
+ const isMac = process.platform === 'darwin';
+ const isWindows = process.platform === 'win32';
+-const isLinux = process.platform === 'linux';
++const isLinux = (process.platform === 'linux' || process.platform === 'freebsd');
+
+ const roles = {
+ about: {
diff --git a/devel/electron7/files/patch-electron_lib_browser_init.ts b/devel/electron7/files/patch-electron_lib_browser_init.ts
new file mode 100644
index 000000000000..820d4e46a764
--- /dev/null
+++ b/devel/electron7/files/patch-electron_lib_browser_init.ts
@@ -0,0 +1,11 @@
+--- electron/lib/browser/init.ts.orig 2020-03-24 05:00:48 UTC
++++ electron/lib/browser/init.ts
+@@ -165,7 +165,7 @@ const mainStartupScript = packageJson.main || 'index.j
+ const KNOWN_XDG_DESKTOP_VALUES = ['Pantheon', 'Unity:Unity7', 'pop:GNOME'];
+
+ function currentPlatformSupportsAppIndicator () {
+- if (process.platform !== 'linux') return false;
++ if (process.platform !== 'linux' && process.platform !== 'freebsd') return false;
+ const currentDesktop = process.env.XDG_CURRENT_DESKTOP;
+
+ if (!currentDesktop) return false;
diff --git a/devel/electron7/files/patch-electron_lib_browser_rpc-server.js b/devel/electron7/files/patch-electron_lib_browser_rpc-server.js
new file mode 100644
index 000000000000..afb2d76256bc
--- /dev/null
+++ b/devel/electron7/files/patch-electron_lib_browser_rpc-server.js
@@ -0,0 +1,11 @@
+--- electron/lib/browser/rpc-server.js.orig 2020-03-24 05:00:48 UTC
++++ electron/lib/browser/rpc-server.js
+@@ -484,7 +484,7 @@ const allowedClipboardMethods = (() => {
+ switch (process.platform) {
+ case 'darwin':
+ return new Set(['readFindText', 'writeFindText']);
+- case 'linux':
++ case 'linux': case 'freebsd':
+ return new Set(Object.keys(clipboard));
+ default:
+ return new Set();
diff --git a/devel/electron7/files/patch-electron_lib_common_api_clipboard.js b/devel/electron7/files/patch-electron_lib_common_api_clipboard.js
new file mode 100644
index 000000000000..0ee1d655c0fb
--- /dev/null
+++ b/devel/electron7/files/patch-electron_lib_common_api_clipboard.js
@@ -0,0 +1,11 @@
+--- electron/lib/common/api/clipboard.js.orig 2020-03-24 05:00:48 UTC
++++ electron/lib/common/api/clipboard.js
+@@ -14,7 +14,7 @@ if (process.type === 'renderer') {
+ };
+ };
+
+- if (process.platform === 'linux') {
++ if (process.platform === 'linux' || process.platform === 'freebsd') {
+ // On Linux we could not access clipboard in renderer process.
+ for (const method of Object.keys(clipboard)) {
+ clipboard[method] = makeRemoteMethod(method);
diff --git a/devel/electron7/files/patch-electron_script_lib_config.py b/devel/electron7/files/patch-electron_script_lib_config.py
new file mode 100644
index 000000000000..6399d1561ede
--- /dev/null
+++ b/devel/electron7/files/patch-electron_script_lib_config.py
@@ -0,0 +1,12 @@
+--- electron/script/lib/config.py.orig 2019-12-19 14:49:00 UTC
++++ electron/script/lib/config.py
+@@ -21,6 +21,9 @@ BASE_URL = os.getenv('LIBCHROMIUMCONTENT_MIRROR') or \
+ PLATFORM = {
+ 'cygwin': 'win32',
+ 'darwin': 'darwin',
++ 'freebsd11': 'freebsd',
++ 'freebsd12': 'freebsd',
++ 'freebsd13': 'freebsd',
+ 'linux': 'linux',
+ 'linux2': 'linux',
+ 'win32': 'win32',
diff --git a/devel/electron7/files/patch-electron_script_lib_utils.js b/devel/electron7/files/patch-electron_script_lib_utils.js
new file mode 100644
index 000000000000..4d081fa807b3
--- /dev/null
+++ b/devel/electron7/files/patch-electron_script_lib_utils.js
@@ -0,0 +1,11 @@
+--- electron/script/lib/utils.js.orig 2020-03-24 05:00:48 UTC
++++ electron/script/lib/utils.js
+@@ -16,7 +16,7 @@ function getElectronExec () {
+ return `out/${OUT_DIR}/Electron.app/Contents/MacOS/Electron`;
+ case 'win32':
+ return `out/${OUT_DIR}/electron.exe`;
+- case 'linux':
++ case 'linux': case 'freebsd':
+ return `out/${OUT_DIR}/electron`;
+ default:
+ throw new Error('Unknown platform');
diff --git a/devel/electron7/files/patch-electron_script_spec-runner.js b/devel/electron7/files/patch-electron_script_spec-runner.js
new file mode 100644
index 000000000000..b258b6dfcad2
--- /dev/null
+++ b/devel/electron7/files/patch-electron_script_spec-runner.js
@@ -0,0 +1,11 @@
+--- electron/script/spec-runner.js.orig 2020-03-24 05:00:48 UTC
++++ electron/script/spec-runner.js
+@@ -115,7 +115,7 @@ async function runElectronTests () {
+ async function runRemoteBasedElectronTests () {
+ let exe = path.resolve(BASE, utils.getElectronExec());
+ const runnerArgs = ['electron/spec', ...unknownArgs.slice(2)];
+- if (process.platform === 'linux') {
++ if (process.platform === 'linux' || process.platform === 'freebsd') {
+ runnerArgs.unshift(path.resolve(__dirname, 'dbus_mock.py'), exe);
+ exe = 'python';
+ }
diff --git a/devel/electron7/files/patch-electron_shell_app_atom__main.cc b/devel/electron7/files/patch-electron_shell_app_atom__main.cc
new file mode 100644
index 000000000000..744d8967b647
--- /dev/null
+++ b/devel/electron7/files/patch-electron_shell_app_atom__main.cc
@@ -0,0 +1,35 @@
+--- electron/shell/app/atom_main.cc.orig 2019-12-13 19:48:14 UTC
++++ electron/shell/app/atom_main.cc
+@@ -26,12 +26,12 @@
+ #include "shell/app/atom_main_delegate.h"
+ #include "shell/app/command_line_args.h"
+ #include "shell/common/crash_reporter/win/crash_service_main.h"
+-#elif defined(OS_LINUX) // defined(OS_WIN)
++#elif defined(OS_LINUX) || defined(OS_BSD) // defined(OS_WIN)
+ #include <unistd.h>
+ #include <cstdio>
+ #include "content/public/app/content_main.h"
+ #include "shell/app/atom_main_delegate.h" // NOLINT
+-#else // defined(OS_LINUX)
++#else // defined(OS_LINUX) || defined(OS_BSD)
+ #include <mach-o/dyld.h>
+ #include <unistd.h>
+ #include <cstdio>
+@@ -168,7 +168,7 @@ int APIENTRY wWinMain(HINSTANCE instance, HINSTANCE, w
+ return content::ContentMain(params);
+ }
+
+-#elif defined(OS_LINUX) // defined(OS_WIN)
++#elif defined(OS_LINUX) || defined(OS_BSD) // defined(OS_WIN)
+
+ int main(int argc, char* argv[]) {
+ FixStdioStreams();
+@@ -189,7 +189,7 @@ int main(int argc, char* argv[]) {
+ return content::ContentMain(params);
+ }
+
+-#else // defined(OS_LINUX)
++#else // defined(OS_LINUX) || defined(OS_BSD)
+
+ int main(int argc, char* argv[]) {
+ FixStdioStreams();
diff --git a/devel/electron7/files/patch-electron_shell_app_atom__main__delegate.cc b/devel/electron7/files/patch-electron_shell_app_atom__main__delegate.cc
new file mode 100644
index 000000000000..d7888d6c22fd
--- /dev/null
+++ b/devel/electron7/files/patch-electron_shell_app_atom__main__delegate.cc
@@ -0,0 +1,29 @@
+--- electron/shell/app/atom_main_delegate.cc.orig 2020-02-28 00:07:16 UTC
++++ electron/shell/app/atom_main_delegate.cc
+@@ -8,7 +8,7 @@
+ #include <memory>
+ #include <string>
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include <glib.h> // for g_setenv()
+ #endif
+
+@@ -205,7 +205,7 @@ bool AtomMainDelegate::BasicStartupComplete(int* exit_
+ base::win::PinUser32();
+ #endif
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Check for --no-sandbox parameter when running as root.
+ if (getuid() == 0 && IsSandboxEnabled(command_line))
+ LOG(FATAL) << "Running as root without --"
+@@ -245,7 +245,7 @@ void AtomMainDelegate::PostEarlyInitialization(bool is
+ ui::ResourceBundle::GetSharedInstance().GetLocaleFilePath(locale, true);
+ if (!locale_file_path.empty()) {
+ custom_locale = locale;
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ /* When built with USE_GLIB, libcc's GetApplicationLocaleInternal() uses
+ * glib's g_get_language_names(), which keys off of getenv("LC_ALL") */
+ g_setenv("LC_ALL", custom_locale.c_str(), TRUE);
diff --git a/devel/electron7/files/patch-electron_shell_app_node__main.cc b/devel/electron7/files/patch-electron_shell_app_node__main.cc
new file mode 100644
index 000000000000..feaf8606a395
--- /dev/null
+++ b/devel/electron7/files/patch-electron_shell_app_node__main.cc
@@ -0,0 +1,20 @@
+--- electron/shell/app/node_main.cc.orig 2020-04-29 19:04:02 UTC
++++ electron/shell/app/node_main.cc
+@@ -32,7 +32,7 @@
+
+ namespace electron {
+
+-#if !defined(OS_LINUX)
++#if !defined(OS_LINUX) && !defined(OS_BSD)
+ void AddExtraParameter(const std::string& key, const std::string& value) {
+ crash_reporter::CrashReporter::GetInstance()->AddExtraParameter(key, value);
+ }
+@@ -105,7 +105,7 @@ int NodeMain(int argc, char* argv[]) {
+ auto reporter = mate::Dictionary::CreateEmpty(gin_env.isolate());
+ reporter.SetMethod("start", &crash_reporter::CrashReporter::StartInstance);
+
+-#if !defined(OS_LINUX)
++#if !defined(OS_LINUX) && !defined(OS_BSD)
+ reporter.SetMethod("addExtraParameter", &AddExtraParameter);
+ reporter.SetMethod("removeExtraParameter", &RemoveExtraParameter);
+ #endif
diff --git a/devel/electron7/files/patch-electron_shell_browser_api_atom__api__app.cc b/devel/electron7/files/patch-electron_shell_browser_api_atom__api__app.cc
new file mode 100644
index 000000000000..0b9f3de23310
--- /dev/null
+++ b/devel/electron7/files/patch-electron_shell_browser_api_atom__api__app.cc
@@ -0,0 +1,47 @@
+--- electron/shell/browser/api/atom_api_app.cc.orig 2019-12-13 19:48:14 UTC
++++ electron/shell/browser/api/atom_api_app.cc
+@@ -599,7 +599,7 @@ void App::OnWillFinishLaunching() {
+ }
+
+ void App::OnFinishLaunching(const base::DictionaryValue& launch_info) {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Set the application name for audio streams shown in external
+ // applications. Only affects pulseaudio currently.
+ media::AudioManager::SetGlobalAppName(Browser::Get()->GetName());
+@@ -877,7 +877,7 @@ void App::SetPath(mate::Arguments* args,
+ }
+
+ void App::SetDesktopName(const std::string& desktop_name) {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ std::unique_ptr<base::Environment> env(base::Environment::Create());
+ env->SetVar("CHROME_DESKTOP", desktop_name);
+ #endif
+@@ -1201,7 +1201,7 @@ std::vector<mate::Dictionary> App::GetAppMetrics(v8::I
+ pid_dict.Set("creationTime",
+ process_metric.second->process.CreationTime().ToJsTime());
+
+-#if !defined(OS_LINUX)
++#if !defined(OS_LINUX) && !defined(OS_BSD)
+ auto memory_info = process_metric.second->GetMemoryInfo();
+
+ mate::Dictionary memory_dict = mate::Dictionary::CreateEmpty(isolate);
+@@ -1438,7 +1438,7 @@ void App::BuildPrototype(v8::Isolate* isolate,
+ .SetMethod("moveToApplicationsFolder", &App::MoveToApplicationsFolder)
+ .SetMethod("isInApplicationsFolder", &App::IsInApplicationsFolder)
+ #endif
+-#if defined(OS_MACOSX) || defined(OS_LINUX)
++#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+ .SetMethod("setAboutPanelOptions",
+ base::BindRepeating(&Browser::SetAboutPanelOptions, browser))
+ .SetMethod("showAboutPanel",
+@@ -1457,7 +1457,7 @@ void App::BuildPrototype(v8::Isolate* isolate,
+ .SetMethod("getJumpListSettings", &App::GetJumpListSettings)
+ .SetMethod("setJumpList", &App::SetJumpList)
+ #endif
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ .SetMethod("isUnityRunning",
+ base::BindRepeating(&Browser::IsUnityRunning, browser))
+ #endif
diff --git a/devel/electron7/files/patch-electron_shell_browser_api_atom__api__web__contents.cc b/devel/electron7/files/patch-electron_shell_browser_api_atom__api__web__contents.cc
new file mode 100644
index 000000000000..e1ae0f744c26
--- /dev/null
+++ b/devel/electron7/files/patch-electron_shell_browser_api_atom__api__web__contents.cc
@@ -0,0 +1,34 @@
+--- electron/shell/browser/api/atom_api_web_contents.cc.orig 2020-05-15 00:25:58 UTC
++++ electron/shell/browser/api/atom_api_web_contents.cc
+@@ -106,11 +106,11 @@
+ #include "ui/base/cocoa/defaults_utils.h"
+ #endif
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include "ui/views/linux_ui/linux_ui.h"
+ #endif
+
+-#if defined(OS_LINUX) || defined(OS_WIN)
++#if defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD)
+ #include "third_party/blink/public/mojom/renderer_preferences.mojom.h"
+ #include "ui/gfx/font_render_params.h"
+ #endif
+@@ -499,7 +499,7 @@ void WebContents::InitWithSessionAndOptions(
+ accept_languages.pop_back();
+ prefs->accept_languages = accept_languages;
+
+-#if defined(OS_LINUX) || defined(OS_WIN)
++#if defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD)
+ // Update font settings.
+ static const base::NoDestructor<gfx::FontRenderParams> params(
+ gfx::GetFontRenderParams(gfx::FontRenderParamsQuery(), nullptr));
+@@ -516,7 +516,7 @@ void WebContents::InitWithSessionAndOptions(
+ base::TimeDelta interval;
+ if (ui::TextInsertionCaretBlinkPeriod(&interval))
+ prefs->caret_blink_interval = interval;
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ views::LinuxUI* linux_ui = views::LinuxUI::instance();
+ if (linux_ui)
+ prefs->caret_blink_interval = linux_ui->GetCursorBlinkInterval();
diff --git a/devel/electron7/files/patch-electron_shell_browser_api_process__metric.h b/devel/electron7/files/patch-electron_shell_browser_api_process__metric.h
new file mode 100644
index 000000000000..be7cfad493af
--- /dev/null
+++ b/devel/electron7/files/patch-electron_shell_browser_api_process__metric.h
@@ -0,0 +1,20 @@
+--- electron/shell/browser/api/process_metric.h.orig 2019-12-13 19:48:14 UTC
++++ electron/shell/browser/api/process_metric.h
+@@ -13,7 +13,7 @@
+
+ namespace electron {
+
+-#if !defined(OS_LINUX)
++#if !defined(OS_LINUX) && !defined(OS_BSD)
+ struct ProcessMemoryInfo {
+ size_t working_set_size = 0;
+ size_t peak_working_set_size = 0;
+@@ -43,7 +43,7 @@ struct ProcessMetric {
+ std::unique_ptr<base::ProcessMetrics> metrics);
+ ~ProcessMetric();
+
+-#if !defined(OS_LINUX)
++#if !defined(OS_LINUX) && !defined(OS_BSD)
+ ProcessMemoryInfo GetMemoryInfo() const;
+ #endif
+
diff --git a/devel/electron7/files/patch-electron_shell_browser_atom__browser__main__parts.cc b/devel/electron7/files/patch-electron_shell_browser_atom__browser__main__parts.cc
new file mode 100644
index 000000000000..fd14a9cc7623
--- /dev/null
+++ b/devel/electron7/files/patch-electron_shell_browser_atom__browser__main__parts.cc
@@ -0,0 +1,11 @@
+--- electron/shell/browser/atom_browser_main_parts.cc.orig 2019-12-13 19:48:14 UTC
++++ electron/shell/browser/atom_browser_main_parts.cc
+@@ -6,7 +6,7 @@
+
+ #include <utility>
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include <glib.h> // for g_setenv()
+ #endif
+
diff --git a/devel/electron7/files/patch-electron_shell_browser_atom__browser__main__parts__posix.cc b/devel/electron7/files/patch-electron_shell_browser_atom__browser__main__parts__posix.cc
new file mode 100644
index 000000000000..7a997e175f36
--- /dev/null
+++ b/devel/electron7/files/patch-electron_shell_browser_atom__browser__main__parts__posix.cc
@@ -0,0 +1,20 @@
+--- electron/shell/browser/atom_browser_main_parts_posix.cc.orig 2019-12-13 19:48:14 UTC
++++ electron/shell/browser/atom_browser_main_parts_posix.cc
+@@ -182,6 +182,9 @@ void AtomBrowserMainParts::HandleShutdownSignals() {
+ g_pipe_pid = getpid();
+ g_shutdown_pipe_read_fd = pipefd[0];
+ g_shutdown_pipe_write_fd = pipefd[1];
++#if defined(OS_BSD)
++ const size_t kShutdownDetectorThreadStackSize = 0;
++#else
+ #if !defined(ADDRESS_SANITIZER) && !defined(KEEP_SHADOW_STACKS)
+ const size_t kShutdownDetectorThreadStackSize = PTHREAD_STACK_MIN * 2;
+ #else
+@@ -189,6 +192,7 @@ void AtomBrowserMainParts::HandleShutdownSignals() {
+ // shadow stacks) bloat the stack frames, so we need to increase the stack
+ // size to avoid hitting the guard page.
+ const size_t kShutdownDetectorThreadStackSize = PTHREAD_STACK_MIN * 4;
++#endif
+ #endif
+ // TODO(viettrungluu,willchan): crbug.com/29675 - This currently leaks, so
+ // if you change this, you'll probably need to change the suppression.
diff --git a/devel/electron7/files/patch-electron_shell_browser_atom__paths.h b/devel/electron7/files/patch-electron_shell_browser_atom__paths.h
new file mode 100644
index 000000000000..c3d580cdbdd6
--- /dev/null
+++ b/devel/electron7/files/patch-electron_shell_browser_atom__paths.h
@@ -0,0 +1,18 @@
+--- electron/shell/browser/atom_paths.h.orig 2019-12-13 19:48:14 UTC
++++ electron/shell/browser/atom_paths.h
+@@ -26,13 +26,13 @@ enum {
+ DIR_USER_CACHE, // Directory where user cache can be written.
+ DIR_APP_LOGS, // Directory where app logs live
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ DIR_APP_DATA, // Application Data directory under the user profile.
+ #endif
+
+ PATH_END, // End of new paths. Those that follow redirect to base::DIR_*
+
+-#if !defined(OS_LINUX)
++#if !defined(OS_LINUX) && !defined(OS_BSD)
+ DIR_APP_DATA = base::DIR_APP_DATA,
+ #endif
+
diff --git a/devel/electron7/files/patch-electron_shell_browser_browser.h b/devel/electron7/files/patch-electron_shell_browser_browser.h
new file mode 100644
index 000000000000..9bcc114d432a
--- /dev/null
+++ b/devel/electron7/files/patch-electron_shell_browser_browser.h
@@ -0,0 +1,33 @@
+--- electron/shell/browser/browser.h.orig 2019-12-13 19:48:14 UTC
++++ electron/shell/browser/browser.h
+@@ -186,7 +186,7 @@ class Browser : public WindowListObserver {
+
+ #endif // defined(OS_MACOSX)
+
+-#if defined(OS_MACOSX) || defined(OS_LINUX)
++#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+ void ShowAboutPanel();
+ void SetAboutPanelOptions(const base::DictionaryValue& options);
+ #endif
+@@ -219,10 +219,10 @@ class Browser : public WindowListObserver {
+ PCWSTR GetAppUserModelID();
+ #endif // defined(OS_WIN)
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Whether Unity launcher is running.
+ bool IsUnityRunning();
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+
+ // Tell the application to open a file.
+ bool OpenFile(const std::string& file_path);
+@@ -301,7 +301,7 @@ class Browser : public WindowListObserver {
+
+ std::unique_ptr<util::Promise> ready_promise_;
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ base::Value about_panel_options_;
+ #elif defined(OS_MACOSX)
+ base::DictionaryValue about_panel_options_;
diff --git a/devel/electron7/files/patch-electron_shell_browser_native__window__views.cc b/devel/electron7/files/patch-electron_shell_browser_native__window__views.cc
new file mode 100644
index 000000000000..7dbc2b217e65
--- /dev/null
+++ b/devel/electron7/files/patch-electron_shell_browser_native__window__views.cc
@@ -0,0 +1,47 @@
+--- electron/shell/browser/native_window_views.cc.orig 2020-01-22 19:14:27 UTC
++++ electron/shell/browser/native_window_views.cc
+@@ -301,7 +301,7 @@ NativeWindowViews::NativeWindowViews(const mate::Dicti
+ last_window_state_ = ui::SHOW_STATE_NORMAL;
+ #endif
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Listen to move events.
+ aura::Window* window = GetNativeWindow();
+ if (window)
+@@ -317,7 +317,7 @@ NativeWindowViews::~NativeWindowViews() {
+ SetForwardMouseMessages(false);
+ #endif
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ aura::Window* window = GetNativeWindow();
+ if (window)
+ window->RemovePreTargetHandler(this);
+@@ -1261,7 +1261,7 @@ void NativeWindowViews::OnWidgetBoundsChanged(views::W
+ }
+
+ void NativeWindowViews::OnWidgetDestroying(views::Widget* widget) {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ aura::Window* window = GetNativeWindow();
+ if (window)
+ window->RemovePreTargetHandler(this);
+@@ -1354,7 +1354,7 @@ void NativeWindowViews::OnWidgetMove() {
+ void NativeWindowViews::HandleKeyboardEvent(
+ content::WebContents*,
+ const content::NativeWebKeyboardEvent& event) {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ if (event.windows_key_code == ui::VKEY_BROWSER_BACK)
+ NotifyWindowExecuteAppCommand(kBrowserBackward);
+ else if (event.windows_key_code == ui::VKEY_BROWSER_FORWARD)
+@@ -1366,7 +1366,7 @@ void NativeWindowViews::HandleKeyboardEvent(
+ root_view_->HandleKeyEvent(event);
+ }
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ void NativeWindowViews::OnMouseEvent(ui::MouseEvent* event) {
+ if (event->type() != ui::ET_MOUSE_PRESSED)
+ return;
diff --git a/devel/electron7/files/patch-electron_shell_browser_native__window__views.h b/devel/electron7/files/patch-electron_shell_browser_native__window__views.h
new file mode 100644
index 000000000000..3a3868bfa528
--- /dev/null
+++ b/devel/electron7/files/patch-electron_shell_browser_native__window__views.h
@@ -0,0 +1,11 @@
+--- electron/shell/browser/native_window_views.h.orig 2019-12-13 19:48:14 UTC
++++ electron/shell/browser/native_window_views.h
+@@ -208,7 +208,7 @@ class NativeWindowViews : public NativeWindow,
+ content::WebContents*,
+ const content::NativeWebKeyboardEvent& event) override;
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // ui::EventHandler:
+ void OnMouseEvent(ui::MouseEvent* event) override;
+ #endif
diff --git a/devel/electron7/files/patch-electron_shell_browser_relauncher__linux.cc b/devel/electron7/files/patch-electron_shell_browser_relauncher__linux.cc
new file mode 100644
index 000000000000..a66ef39f9b7a
--- /dev/null
+++ b/devel/electron7/files/patch-electron_shell_browser_relauncher__linux.cc
@@ -0,0 +1,32 @@
+--- electron/shell/browser/relauncher_linux.cc.orig 2019-12-13 19:48:14 UTC
++++ electron/shell/browser/relauncher_linux.cc
+@@ -6,8 +6,10 @@
+
+ #include <fcntl.h>
+ #include <signal.h>
++#if !defined(__FreeBSD__)
+ #include <sys/prctl.h>
+ #include <sys/signalfd.h>
++#endif
+
+ #include "base/files/file_util.h"
+ #include "base/files/scoped_file.h"
+@@ -26,6 +28,10 @@ void RelauncherSynchronizeWithParent() {
+ base::ScopedFD relauncher_sync_fd(kRelauncherSyncFD);
+ static const auto signum = SIGUSR2;
+
++#if defined(__FreeBSD__)
++ PLOG(ERROR) << "signalfd & prctl";
++ fprintf(stderr, "Not Implemented signalfd & prctl in atom/browser/relauncher_linux.cc");
++#else
+ // send signum to current process when parent process ends.
+ if (HANDLE_EINTR(prctl(PR_SET_PDEATHSIG, signum)) != 0) {
+ PLOG(ERROR) << "prctl";
+@@ -50,6 +56,7 @@ void RelauncherSynchronizeWithParent() {
+
+ // Wait for the parent to exit
+ parentWaiter.Wait();
++#endif
+ }
+
+ int LaunchProgram(const StringVector& relauncher_args,
diff --git a/devel/electron7/files/patch-electron_shell_browser_ui_views_atom__views__delegate.cc b/devel/electron7/files/patch-electron_shell_browser_ui_views_atom__views__delegate.cc
new file mode 100644
index 000000000000..5e43f5246b0b
--- /dev/null
+++ b/devel/electron7/files/patch-electron_shell_browser_ui_views_atom__views__delegate.cc
@@ -0,0 +1,38 @@
+--- electron/shell/browser/ui/views/atom_views_delegate.cc.orig 2019-12-13 19:48:14 UTC
++++ electron/shell/browser/ui/views/atom_views_delegate.cc
+@@ -9,7 +9,7 @@
+ #include "ui/views/widget/desktop_aura/desktop_native_widget_aura.h"
+ #include "ui/views/widget/native_widget_aura.h"
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include "base/environment.h"
+ #include "base/nix/xdg_util.h"
+ #include "ui/views/linux_ui/linux_ui.h"
+@@ -17,7 +17,7 @@
+
+ namespace {
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ bool IsDesktopEnvironmentUnity() {
+ std::unique_ptr<base::Environment> env(base::Environment::Create());
+ base::nix::DesktopEnvironment desktop_env =
+@@ -53,7 +53,7 @@ void ViewsDelegate::NotifyMenuItemFocused(const base::
+ int item_count,
+ bool has_submenu) {}
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ gfx::ImageSkia* ViewsDelegate::GetDefaultWindowIcon() const {
+ return NULL;
+ }
+@@ -85,7 +85,7 @@ void ViewsDelegate::OnBeforeWidgetInit(
+ }
+
+ bool ViewsDelegate::WindowManagerProvidesTitleBar(bool maximized) {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // On Ubuntu Unity, the system always provides a title bar for maximized
+ // windows.
+ if (!maximized)
diff --git a/devel/electron7/files/patch-electron_shell_browser_ui_views_atom__views__delegate.h b/devel/electron7/files/patch-electron_shell_browser_ui_views_atom__views__delegate.h
new file mode 100644
index 000000000000..ce7e4bf6186e
--- /dev/null
+++ b/devel/electron7/files/patch-electron_shell_browser_ui_views_atom__views__delegate.h
@@ -0,0 +1,11 @@
+--- electron/shell/browser/ui/views/atom_views_delegate.h.orig 2019-12-13 19:48:14 UTC
++++ electron/shell/browser/ui/views/atom_views_delegate.h
+@@ -40,7 +40,7 @@ class ViewsDelegate : public views::ViewsDelegate {
+ bool IsWindowInMetro(gfx::NativeWindow window) const override;
+ int GetAppbarAutohideEdges(HMONITOR monitor,
+ base::OnceClosure callback) override;
+-#elif defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#elif (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ gfx::ImageSkia* GetDefaultWindowIcon() const override;
+ #endif
+ views::NonClientFrameView* CreateDefaultNonClientFrameView(
diff --git a/devel/electron7/files/patch-electron_shell_browser_ui_views_submenu__button.cc b/devel/electron7/files/patch-electron_shell_browser_ui_views_submenu__button.cc
new file mode 100644
index 000000000000..69e4d3e87ab2
--- /dev/null
+++ b/devel/electron7/files/patch-electron_shell_browser_ui_views_submenu__button.cc
@@ -0,0 +1,11 @@
+--- electron/shell/browser/ui/views/submenu_button.cc.orig 2019-12-13 19:48:14 UTC
++++ electron/shell/browser/ui/views/submenu_button.cc
+@@ -25,7 +25,7 @@ SubmenuButton::SubmenuButton(const base::string16& tit
+ : views::MenuButton(gfx::RemoveAcceleratorChar(title, '&', NULL, NULL),
+ menu_button_listener),
+ background_color_(background_color) {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Dont' use native style border.
+ SetBorder(CreateDefaultBorder());
+ #endif
diff --git a/devel/electron7/files/patch-electron_shell_common_api_atom__api__crash__reporter.cc b/devel/electron7/files/patch-electron_shell_common_api_atom__api__crash__reporter.cc
new file mode 100644
index 000000000000..d2c3a30eb5eb
--- /dev/null
+++ b/devel/electron7/files/patch-electron_shell_common_api_atom__api__crash__reporter.cc
@@ -0,0 +1,18 @@
+--- electron/shell/common/api/atom_api_crash_reporter.cc.orig 2019-12-13 19:48:14 UTC
++++ electron/shell/common/api/atom_api_crash_reporter.cc
+@@ -42,6 +42,7 @@ void Initialize(v8::Local<v8::Object> exports,
+ v8::Local<v8::Context> context,
+ void* priv) {
+ using gin_util::SetMethod;
++#if !defined(OS_BSD)
+ auto reporter = base::Unretained(CrashReporter::GetInstance());
+ SetMethod(exports, "start",
+ base::BindRepeating(&CrashReporter::Start, reporter));
+@@ -58,6 +59,7 @@ void Initialize(v8::Local<v8::Object> exports,
+ base::BindRepeating(&CrashReporter::SetUploadToServer, reporter));
+ SetMethod(exports, "getUploadToServer",
+ base::BindRepeating(&CrashReporter::GetUploadToServer, reporter));
++#endif
+ }
+
+ } // namespace
diff --git a/devel/electron7/files/patch-electron_shell_common_api_electron__bindings.cc b/devel/electron7/files/patch-electron_shell_common_api_electron__bindings.cc
new file mode 100644
index 000000000000..1d818f4ed8ee
--- /dev/null
+++ b/devel/electron7/files/patch-electron_shell_common_api_electron__bindings.cc
@@ -0,0 +1,11 @@
+--- electron/shell/common/api/electron_bindings.cc.orig 2019-12-13 19:48:14 UTC
++++ electron/shell/common/api/electron_bindings.cc
+@@ -288,7 +288,7 @@ void ElectronBindings::DidReceiveMemoryDump(
+ if (base::GetCurrentProcId() == dump.pid()) {
+ mate::Dictionary dict = mate::Dictionary::CreateEmpty(isolate);
+ const auto& osdump = dump.os_dump();
+-#if defined(OS_LINUX) || defined(OS_WIN)
++#if defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD)
+ dict.Set("residentSet", osdump.resident_set_kb);
+ #endif
+ dict.Set("private", osdump.private_footprint_kb);
diff --git a/devel/electron7/files/patch-electron_shell_common_atom__command__line.cc b/devel/electron7/files/patch-electron_shell_common_atom__command__line.cc
new file mode 100644
index 000000000000..69f4e93df3ac
--- /dev/null
+++ b/devel/electron7/files/patch-electron_shell_common_atom__command__line.cc
@@ -0,0 +1,11 @@
+--- electron/shell/common/atom_command_line.cc.orig 2019-12-13 19:48:14 UTC
++++ electron/shell/common/atom_command_line.cc
+@@ -26,7 +26,7 @@ void AtomCommandLine::Init(int argc, base::CommandLine
+ argv_.assign(argv, argv + argc);
+ }
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // static
+ void AtomCommandLine::InitializeFromCommandLine() {
+ argv_ = base::CommandLine::ForCurrentProcess()->argv();
diff --git a/devel/electron7/files/patch-electron_shell_common_atom__command__line.h b/devel/electron7/files/patch-electron_shell_common_atom__command__line.h
new file mode 100644
index 000000000000..c58bcecafdba
--- /dev/null
+++ b/devel/electron7/files/patch-electron_shell_common_atom__command__line.h
@@ -0,0 +1,11 @@
+--- electron/shell/common/atom_command_line.h.orig 2019-12-13 19:48:14 UTC
++++ electron/shell/common/atom_command_line.h
+@@ -21,7 +21,7 @@ class AtomCommandLine {
+
+ static void Init(int argc, base::CommandLine::CharType** argv);
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // On Linux the command line has to be read from base::CommandLine since
+ // it is using zygote.
+ static void InitializeFromCommandLine();
diff --git a/devel/electron7/files/patch-electron_shell_common_crash__reporter_crash__reporter.cc b/devel/electron7/files/patch-electron_shell_common_crash__reporter_crash__reporter.cc
new file mode 100644
index 000000000000..3cbff5a35ab6
--- /dev/null
+++ b/devel/electron7/files/patch-electron_shell_common_crash__reporter_crash__reporter.cc
@@ -0,0 +1,14 @@
+--- electron/shell/common/crash_reporter/crash_reporter.cc.orig 2019-12-13 19:48:14 UTC
++++ electron/shell/common/crash_reporter/crash_reporter.cc
+@@ -128,7 +128,11 @@ CrashReporter* CrashReporter::GetInstance() {
+ #endif
+
+ void CrashReporter::StartInstance(const mate::Dictionary& options) {
++#if !defined(OS_BSD)
+ auto* reporter = GetInstance();
++#else
++ CrashReporter *reporter = NULL;
++#endif
+ if (!reporter)
+ return;
+
diff --git a/devel/electron7/files/patch-electron_shell_common_node__bindings.cc b/devel/electron7/files/patch-electron_shell_common_node__bindings.cc
new file mode 100644
index 000000000000..848a1301027e
--- /dev/null
+++ b/devel/electron7/files/patch-electron_shell_common_node__bindings.cc
@@ -0,0 +1,11 @@
+--- electron/shell/common/node_bindings.cc.orig 2019-12-13 19:48:14 UTC
++++ electron/shell/common/node_bindings.cc
+@@ -204,7 +204,7 @@ void NodeBindings::Initialize() {
+ node::g_standalone_mode = browser_env_ == BrowserEnvironment::BROWSER;
+ node::g_upstream_node_mode = false;
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Get real command line in renderer process forked by zygote.
+ if (browser_env_ != BrowserEnvironment::BROWSER)
+ AtomCommandLine::InitializeFromCommandLine();
diff --git a/devel/electron7/files/patch-electron_shell_common_node__bindings__linux.cc b/devel/electron7/files/patch-electron_shell_common_node__bindings__linux.cc
new file mode 100644
index 000000000000..07eeeb073fcd
--- /dev/null
+++ b/devel/electron7/files/patch-electron_shell_common_node__bindings__linux.cc
@@ -0,0 +1,69 @@
+--- electron/shell/common/node_bindings_linux.cc.orig 2019-12-13 19:48:14 UTC
++++ electron/shell/common/node_bindings_linux.cc
+@@ -4,17 +4,31 @@
+
+ #include "shell/common/node_bindings_linux.h"
+
++#if !defined(OS_BSD)
+ #include <sys/epoll.h>
++#else
++#include <errno.h>
++#include <sys/select.h>
++#include <sys/sysctl.h>
++#include <sys/time.h>
++#include <sys/types.h>
++#endif
+
+ namespace electron {
+
+ NodeBindingsLinux::NodeBindingsLinux(BrowserEnvironment browser_env)
++#if !defined(OS_BSD)
+ : NodeBindings(browser_env), epoll_(epoll_create(1)) {
++#else
++ : NodeBindings(browser_env) {
++#endif
++#if !defined(OS_BSD)
+ int backend_fd = uv_backend_fd(uv_loop_);
+ struct epoll_event ev = {0};
+ ev.events = EPOLLIN;
+ ev.data.fd = backend_fd;
+ epoll_ctl(epoll_, EPOLL_CTL_ADD, backend_fd, &ev);
++#endif
+ }
+
+ NodeBindingsLinux::~NodeBindingsLinux() {}
+@@ -37,6 +51,7 @@ void NodeBindingsLinux::OnWatcherQueueChanged(uv_loop_
+ }
+
+ void NodeBindingsLinux::PollEvents() {
++#if !defined(OS_BSD)
+ int timeout = uv_backend_timeout(uv_loop_);
+
+ // Wait for new libuv events.
+@@ -45,6 +60,26 @@ void NodeBindingsLinux::PollEvents() {
+ struct epoll_event ev;
+ r = epoll_wait(epoll_, &ev, 1, timeout);
+ } while (r == -1 && errno == EINTR);
++#else
++ struct timeval tv;
++ int timeout = uv_backend_timeout(uv_loop_);
++ if (timeout != -1) {
++ tv.tv_sec = timeout / 1000;
++ tv.tv_usec = (timeout % 1000) * 1000;
++ }
++
++ fd_set readset;
++ int fd = uv_backend_fd(uv_loop_);
++ FD_ZERO(&readset);
++ FD_SET(fd, &readset);
++
++ // Wait for new libuv events.
++ int r;
++ do {
++ r = select(fd + 1, &readset, nullptr, nullptr,
++ timeout == -1 ? nullptr : &tv);
++ } while (r == -1 && errno == EINTR);
++#endif
+ }
+
+ // static
diff --git a/devel/electron7/files/patch-electron_shell_common_platform__util.h b/devel/electron7/files/patch-electron_shell_common_platform__util.h
new file mode 100644
index 000000000000..a4f8a940fd59
--- /dev/null
+++ b/devel/electron7/files/patch-electron_shell_common_platform__util.h
@@ -0,0 +1,11 @@
+--- electron/shell/common/platform_util.h.orig 2019-12-13 19:48:14 UTC
++++ electron/shell/common/platform_util.h
+@@ -50,7 +50,7 @@ bool GetLoginItemEnabled();
+ bool SetLoginItemEnabled(bool enabled);
+ #endif
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Returns a success flag.
+ // Unlike libgtkui, does *not* use "chromium-browser.desktop" as a fallback.
+ bool GetDesktopName(std::string* setme);
diff --git a/devel/electron7/files/patch-electron_spec-main_api-app-spec.ts b/devel/electron7/files/patch-electron_spec-main_api-app-spec.ts
new file mode 100644
index 000000000000..cb6e31eb56d3
--- /dev/null
+++ b/devel/electron7/files/patch-electron_spec-main_api-app-spec.ts
@@ -0,0 +1,100 @@
+--- electron/spec-main/api-app-spec.ts.orig 2020-06-01 19:28:27 UTC
++++ electron/spec-main/api-app-spec.ts
+@@ -130,7 +130,7 @@ describe('app module', () => {
+ describe('app.getLocaleCountryCode()', () => {
+ it('should be empty or have length of two', () => {
+ let expectedLength = 2
+- if (isCI && process.platform === 'linux') {
++ if (isCI && (process.platform === 'linux' || process.platform === 'freebsd')) {
+ // Linux CI machines have no locale.
+ expectedLength = 0
+ }
+@@ -192,7 +192,7 @@ describe('app module', () => {
+ })
+
+ it('exits gracefully', async function () {
+- if (!['darwin', 'linux'].includes(process.platform)) {
++ if (!['darwin', 'linux', 'freebsd'].includes(process.platform)) {
+ this.skip()
+ return
+ }
+@@ -527,7 +527,7 @@ describe('app module', () => {
+ describe('app.badgeCount', () => {
+ const platformIsNotSupported =
+ (process.platform === 'win32') ||
+- (process.platform === 'linux' && !app.isUnityRunning())
++ ((process.platform === 'linux' || process.platform === 'freebsd') && !app.isUnityRunning())
+ const platformIsSupported = !platformIsNotSupported
+
+ const expectedBadgeCount = 42
+@@ -561,7 +561,7 @@ describe('app module', () => {
+ ]
+
+ before(function () {
+- if (process.platform === 'linux' || process.mas) this.skip()
++ if (process.platform === 'linux' || process.platform === 'freebsd' || process.mas) this.skip()
+ })
+
+ beforeEach(() => {
+@@ -637,7 +637,7 @@ describe('app module', () => {
+ })
+
+ describe('accessibilitySupportEnabled property', () => {
+- if (process.platform === 'linux') return
++ if (process.platform === 'linux' || process.platform === 'freebsd') return
+
+ it('returns whether the Chrome has accessibility APIs enabled', () => {
+ expect(app.accessibilitySupportEnabled).to.be.a('boolean')
+@@ -674,6 +674,7 @@ describe('app module', () => {
+ const logsPaths = {
+ 'darwin': path.resolve(homedir(), 'Library', 'Logs'),
+ 'linux': path.resolve(homedir(), 'AppData', app.name),
++ 'freebsd': path.resolve(homedir(), 'AppData', app.name),
+ 'win32': path.resolve(homedir(), 'AppData', app.name),
+ }
+
+@@ -732,7 +733,7 @@ describe('app module', () => {
+ let w: BrowserWindow
+
+ before(function () {
+- if (process.platform === 'linux') {
++ if (process.platform === 'linux' || process.platform === 'freebsd') {
+ this.skip()
+ }
+ })
+@@ -926,7 +927,7 @@ describe('app module', () => {
+ // doesn't affect nested `describe`s.
+ beforeEach(function () {
+ // FIXME Get these specs running on Linux CI
+- if (process.platform === 'linux' && isCI) {
++ if ((process.platform === 'linux' || process.platform === 'freebsd') && isCI) {
+ this.skip()
+ }
+ })
+@@ -996,7 +997,7 @@ describe('app module', () => {
+ expect(entry.memory).to.have.property('privateBytes').that.is.greaterThan(0)
+ }
+
+- if (process.platform !== 'linux') {
++ if (process.platform !== 'linux' && process.platform !== 'freebsd') {
+ expect(entry.sandboxed).to.be.a('boolean')
+ }
+
+@@ -1063,7 +1064,7 @@ describe('app module', () => {
+
+ it('succeeds with complete GPUInfo', async () => {
+ const completeInfo = await getGPUInfo('complete')
+- if (process.platform === 'linux') {
++ if (process.platform === 'linux' || process.platform === 'freebsd') {
+ // For linux and macOS complete info is same as basic info
+ await verifyBasicGPUInfo(completeInfo)
+ const basicInfo = await getGPUInfo('basic')
+@@ -1091,7 +1092,7 @@ describe('app module', () => {
+ const socketPath = process.platform === 'win32' ? '\\\\.\\pipe\\electron-mixed-sandbox' : '/tmp/electron-mixed-sandbox'
+
+ beforeEach(function (done) {
+- if (process.platform === 'linux' && (process.arch === 'arm64' || process.arch === 'arm')) {
++ if ((process.platform === 'linux' || process.platform === 'freebsd') && (process.arch === 'arm64' || process.arch === 'arm')) {
+ // Our ARM tests are run on VSTS rather than CircleCI, and the Docker
+ // setup on VSTS disallows syscalls that Chrome requires for setting up
+ // sandboxing.
diff --git a/devel/electron7/files/patch-electron_spec-main_api-browser-window-spec.ts b/devel/electron7/files/patch-electron_spec-main_api-browser-window-spec.ts
new file mode 100644
index 000000000000..358f449b006c
--- /dev/null
+++ b/devel/electron7/files/patch-electron_spec-main_api-browser-window-spec.ts
@@ -0,0 +1,74 @@
+--- electron/spec-main/api-browser-window-spec.ts.orig 2020-06-01 19:28:27 UTC
++++ electron/spec-main/api-browser-window-spec.ts
+@@ -878,7 +878,7 @@ describe('BrowserWindow module', () => {
+ w.setPosition(pos[0], pos[1])
+ })
+ })
+- ifdescribe(process.platform !== 'linux')(`Maximized state`, () => {
++ ifdescribe(process.platform !== 'linux' && process.platform !== 'freebsd')(`Maximized state`, () => {
+ it(`checks normal bounds when maximized`, (done) => {
+ const bounds = w.getBounds()
+ w.once('maximize', () => {
+@@ -901,7 +901,7 @@ describe('BrowserWindow module', () => {
+ w.maximize()
+ })
+ })
+- ifdescribe(process.platform !== 'linux')(`Minimized state`, () => {
++ ifdescribe(process.platform !== 'linux' && process.platform !== 'freebsd')(`Minimized state`, () => {
+ it(`checks normal bounds when minimized`, (done) => {
+ const bounds = w.getBounds()
+ w.once('minimize', () => {
+@@ -1368,7 +1368,7 @@ describe('BrowserWindow module', () => {
+ describe('BrowserWindow.setOpacity(opacity)', () => {
+ afterEach(closeAllWindows)
+
+- ifdescribe(process.platform !== 'linux')(('Windows and Mac'), () => {
++ ifdescribe(process.platform !== 'linux' && process.platform !== 'freebsd')(('Windows and Mac'), () => {
+ it('make window with initial opacity', () => {
+ const w = new BrowserWindow({ show: false, opacity: 0.5 })
+ expect(w.getOpacity()).to.equal(0.5)
+@@ -1394,7 +1394,7 @@ describe('BrowserWindow module', () => {
+ })
+ })
+
+- ifdescribe(process.platform === 'linux')(('Linux'), () => {
++ ifdescribe(process.platform === 'linux' || process.platform === 'freebsd')(('Linux'), () => {
+ it('sets 1 regardless of parameter', () => {
+ const w = new BrowserWindow({ show: false })
+ w.setOpacity(0)
+@@ -2189,7 +2189,7 @@ describe('BrowserWindow module', () => {
+ expect(test.version).to.equal(process.version)
+ expect(test.versions).to.deep.equal(process.versions)
+
+- if (process.platform === 'linux' && test.osSandbox) {
++ if ((process.platform === 'linux' || process.platform === 'freebsd') && test.osSandbox) {
+ expect(test.creationTime).to.be.null('creation time')
+ expect(test.systemMemoryInfo).to.be.null('system memory info')
+ } else {
+@@ -2592,7 +2592,7 @@ describe('BrowserWindow module', () => {
+ expect(visibilityState).to.equal('visible')
+ })
+
+- ifit(!(isCI && process.platform === 'linux'))('visibilityState changes when window is minimized', async () => {
++ ifit(!(isCI && (process.platform === 'linux' || process.platform === 'freebsd')))('visibilityState changes when window is minimized', async () => {
+ const w = new BrowserWindow({
+ width: 100,
+ height: 100,
+@@ -2692,7 +2692,7 @@ describe('BrowserWindow module', () => {
+ })
+ })
+
+- ifdescribe(process.platform !== 'linux')('max/minimize events', () => {
++ ifdescribe(process.platform !== 'linux' && process.platform !== 'freebsd')('max/minimize events', () => {
+ afterEach(closeAllWindows)
+ it('emits an event when window is maximized', (done) => {
+ const w = new BrowserWindow({show: false})
+@@ -3232,7 +3232,7 @@ describe('BrowserWindow module', () => {
+ })
+ })
+
+- ifdescribe(process.platform !== 'linux')('window states (excluding Linux)', () => {
++ ifdescribe(process.platform !== 'linux' && process.platform !== 'freebsd')('window states (excluding Linux)', () => {
+ // Not implemented on Linux.
+ afterEach(closeAllWindows)
+
diff --git a/devel/electron7/files/patch-electron_spec-main_api-content-tracing-spec.ts b/devel/electron7/files/patch-electron_spec-main_api-content-tracing-spec.ts
new file mode 100644
index 000000000000..d50d8b1ef401
--- /dev/null
+++ b/devel/electron7/files/patch-electron_spec-main_api-content-tracing-spec.ts
@@ -0,0 +1,11 @@
+--- electron/spec-main/api-content-tracing-spec.ts.orig 2019-12-13 19:48:14 UTC
++++ electron/spec-main/api-content-tracing-spec.ts
+@@ -11,7 +11,7 @@ const timeout = async (milliseconds: number) => {
+ }
+
+ // FIXME: The tests are skipped on arm/arm64.
+-ifdescribe(!(process.platform === 'linux' && ['arm', 'arm64'].includes(process.arch)))('contentTracing', () => {
++ifdescribe(!((process.platform === 'linux' || process.platform === 'freebsd') && ['arm', 'arm64'].includes(process.arch)))('contentTracing', () => {
+ const record = async (options: TraceConfig | TraceCategoriesAndOptions, outputFilePath: string | undefined, recordTimeInMilliseconds = 1e1) => {
+ await app.whenReady()
+
diff --git a/devel/electron7/files/patch-electron_spec-main_api-net-log-spec.js b/devel/electron7/files/patch-electron_spec-main_api-net-log-spec.js
new file mode 100644
index 000000000000..e5f8de947a32
--- /dev/null
+++ b/devel/electron7/files/patch-electron_spec-main_api-net-log-spec.js
@@ -0,0 +1,29 @@
+--- electron/spec-main/api-net-log-spec.js.orig 2020-02-10 19:08:32 UTC
++++ electron/spec-main/api-net-log-spec.js
+@@ -124,7 +124,7 @@ describe('netLog module', () => {
+ })
+
+ it('should begin and end logging automatically when --log-net-log is passed', done => {
+- if (isCI && process.platform === 'linux') {
++ if (isCI && (process.platform === 'linux' || process.platform === 'freebsd')) {
+ done()
+ return
+ }
+@@ -144,7 +144,7 @@ describe('netLog module', () => {
+ })
+
+ it('should begin and end logging automtically when --log-net-log is passed, and behave correctly when .startLogging() and .stopLogging() is called', done => {
+- if (isCI && process.platform === 'linux') {
++ if (isCI && (process.platform === 'linux' || process.platform === 'freebsd')) {
+ done()
+ return
+ }
+@@ -167,7 +167,7 @@ describe('netLog module', () => {
+ })
+
+ it('should end logging automatically when only .startLogging() is called', done => {
+- if (isCI && process.platform === 'linux') {
++ if (isCI && (process.platform === 'linux' || process.platform === 'freebsd')) {
+ done()
+ return
+ }
diff --git a/devel/electron7/files/patch-electron_spec-main_api-screen-spec.ts b/devel/electron7/files/patch-electron_spec-main_api-screen-spec.ts
new file mode 100644
index 000000000000..20af745ccb8b
--- /dev/null
+++ b/devel/electron7/files/patch-electron_spec-main_api-screen-spec.ts
@@ -0,0 +1,38 @@
+--- electron/spec-main/api-screen-spec.ts.orig 2019-12-13 19:48:14 UTC
++++ electron/spec-main/api-screen-spec.ts
+@@ -17,7 +17,7 @@ describe('screen module', () => {
+ })
+
+ it('has the correct non-object properties', function () {
+- if (process.platform === 'linux') this.skip()
++ if (process.platform === 'linux' || process.platform === 'freebsd') this.skip()
+ const display = screen.getPrimaryDisplay()
+
+ expect(display).to.have.property('scaleFactor').that.is.a('number')
+@@ -33,7 +33,7 @@ describe('screen module', () => {
+ })
+
+ it('has a size object property', function () {
+- if (process.platform === 'linux') this.skip()
++ if (process.platform === 'linux' || process.platform === 'freebsd') this.skip()
+ const display = screen.getPrimaryDisplay()
+
+ expect(display).to.have.property('size').that.is.an('object')
+@@ -43,7 +43,7 @@ describe('screen module', () => {
+ })
+
+ it('has a workAreaSize object property', function () {
+- if (process.platform === 'linux') this.skip()
++ if (process.platform === 'linux' || process.platform === 'freebsd') this.skip()
+ const display = screen.getPrimaryDisplay()
+
+ expect(display).to.have.property('workAreaSize').that.is.an('object')
+@@ -53,7 +53,7 @@ describe('screen module', () => {
+ })
+
+ it('has a bounds object property', function () {
+- if (process.platform === 'linux') this.skip()
++ if (process.platform === 'linux' || process.platform === 'freebsd') this.skip()
+ const display = screen.getPrimaryDisplay()
+
+ expect(display).to.have.property('bounds').that.is.an('object')
diff --git a/devel/electron7/files/patch-electron_spec-main_api-tray-spec.ts b/devel/electron7/files/patch-electron_spec-main_api-tray-spec.ts
new file mode 100644
index 000000000000..4fbf02b6b9a2
--- /dev/null
+++ b/devel/electron7/files/patch-electron_spec-main_api-tray-spec.ts
@@ -0,0 +1,11 @@
+--- electron/spec-main/api-tray-spec.ts.orig 2020-04-29 19:04:02 UTC
++++ electron/spec-main/api-tray-spec.ts
+@@ -63,7 +63,7 @@ describe('tray module', () => {
+ describe('tray.getBounds()', () => {
+ afterEach(() => { tray.destroy() })
+
+- ifit(process.platform !== 'linux') ('returns a bounds object', function () {
++ ifit(process.platform !== 'linux' && process.platform !== 'freebsd') ('returns a bounds object', function () {
+ const bounds = tray.getBounds()
+ expect(bounds).to.be.an('object').and.to.have.all.keys('x', 'y', 'width', 'height');
+ })
diff --git a/devel/electron7/files/patch-electron_spec-main_api-web-contents-spec.ts b/devel/electron7/files/patch-electron_spec-main_api-web-contents-spec.ts
new file mode 100644
index 000000000000..66ed9adfc0ed
--- /dev/null
+++ b/devel/electron7/files/patch-electron_spec-main_api-web-contents-spec.ts
@@ -0,0 +1,11 @@
+--- electron/spec-main/api-web-contents-spec.ts.orig 2020-02-22 04:58:58 UTC
++++ electron/spec-main/api-web-contents-spec.ts
+@@ -124,7 +124,7 @@ describe('webContents module', () => {
+ }).to.throw('webContents.print(): Invalid optional callback provided.')
+ })
+
+- ifit(process.platform !== 'linux')('throws when an invalid deviceName is passed', () => {
++ ifit(process.platform !== 'linux' && process.platform !== 'freebsd')('throws when an invalid deviceName is passed', () => {
+ expect(() => {
+ w.webContents.print({ deviceName: 'i-am-a-nonexistent-printer' }, () => {})
+ }).to.throw('webContents.print(): Invalid deviceName provided.')
diff --git a/devel/electron7/files/patch-electron_spec-main_version-bump-spec.ts b/devel/electron7/files/patch-electron_spec-main_version-bump-spec.ts
new file mode 100644
index 000000000000..a69137c0d07e
--- /dev/null
+++ b/devel/electron7/files/patch-electron_spec-main_version-bump-spec.ts
@@ -0,0 +1,18 @@
+--- electron/spec-main/version-bump-spec.ts.orig 2019-12-13 19:48:14 UTC
++++ electron/spec-main/version-bump-spec.ts
+@@ -43,7 +43,7 @@ describe('version-bumper', () => {
+
+ // On macOS Circle CI we don't have a real git environment due to running
+ // gclient sync on a linux machine. These tests therefore don't run as expected.
+- ifdescribe(!(process.platform === 'linux' && process.arch === 'arm') && !(isCI && process.platform === 'darwin'))('nextVersion', () => {
++ ifdescribe(!((process.platform === 'linux' || process.platform === 'freebsd') && process.arch === 'arm') && !(isCI && process.platform === 'darwin'))('nextVersion', () => {
+ const nightlyPattern = /[0-9.]*(-nightly.(\d{4})(\d{2})(\d{2}))$/g
+ const betaPattern = /[0-9.]*(-beta[0-9.]*)/g
+
+@@ -120,4 +120,4 @@ describe('version-bumper', () => {
+ ).to.be.rejectedWith('Invalid bump type.')
+ })
+ })
+-})
+\ No newline at end of file
++})
diff --git a/devel/electron7/files/patch-electron_spec-main_visibility-state-spec.ts b/devel/electron7/files/patch-electron_spec-main_visibility-state-spec.ts
new file mode 100644
index 000000000000..262c870e7e0d
--- /dev/null
+++ b/devel/electron7/files/patch-electron_spec-main_visibility-state-spec.ts
@@ -0,0 +1,11 @@
+--- electron/spec-main/visibility-state-spec.ts.orig 2019-12-13 19:48:14 UTC
++++ electron/spec-main/visibility-state-spec.ts
+@@ -9,7 +9,7 @@ import { ifdescribe } from './spec-helpers';
+
+ // visibilityState specs pass on linux with a real window manager but on CI
+ // the environment does not let these specs pass
+-ifdescribe(process.platform !== 'linux' || !isCI)('document.visibilityState', () => {
++ifdescribe((process.platform !== 'linux' && process.platform !== 'freebsd') || !isCI)('document.visibilityState', () => {
+ let w: BrowserWindow
+
+ afterEach(() => {
diff --git a/devel/electron7/files/patch-electron_spec_api-clipboard-spec.js b/devel/electron7/files/patch-electron_spec_api-clipboard-spec.js
new file mode 100644
index 000000000000..99b3dbc410fd
--- /dev/null
+++ b/devel/electron7/files/patch-electron_spec_api-clipboard-spec.js
@@ -0,0 +1,38 @@
+--- electron/spec/api-clipboard-spec.js.orig 2020-03-24 05:00:48 UTC
++++ electron/spec/api-clipboard-spec.js
+@@ -34,7 +34,7 @@ describe('clipboard module', () => {
+ describe('clipboard.readHTML()', () => {
+ it('returns markup correctly', () => {
+ const text = '<string>Hi</string>';
+- const markup = process.platform === 'darwin' ? "<meta charset='utf-8'><string>Hi</string>" : process.platform === 'linux' ? '<meta http-equiv="content-type" ' + 'content="text/html; charset=utf-8"><string>Hi</string>' : '<string>Hi</string>';
++ const markup = process.platform === 'darwin' ? "<meta charset='utf-8'><string>Hi</string>" : (process.platform === 'linux' || process.platform === 'freebsd') ? '<meta http-equiv="content-type" ' + 'content="text/html; charset=utf-8"><string>Hi</string>' : '<string>Hi</string>';
+ clipboard.writeHTML(text);
+ expect(clipboard.readHTML()).to.equal(markup);
+ });
+@@ -50,7 +50,7 @@ describe('clipboard module', () => {
+
+ describe('clipboard.readBookmark', () => {
+ before(function () {
+- if (process.platform === 'linux') {
++ if (process.platform === 'linux' || process.platform === 'freebsd') {
+ this.skip();
+ }
+ });
+@@ -76,7 +76,7 @@ describe('clipboard module', () => {
+ const rtf = '{\\rtf1\\utf8 text}';
+ const p = path.join(fixtures, 'assets', 'logo.png');
+ const i = nativeImage.createFromPath(p);
+- const markup = process.platform === 'darwin' ? "<meta charset='utf-8'><b>Hi</b>" : process.platform === 'linux' ? '<meta http-equiv="content-type" ' + 'content="text/html; charset=utf-8"><b>Hi</b>' : '<b>Hi</b>';
++ const markup = process.platform === 'darwin' ? "<meta charset='utf-8'><b>Hi</b>" : (process.platform === 'linux' || process.platform === 'freebsd') ? '<meta http-equiv="content-type" ' + 'content="text/html; charset=utf-8"><b>Hi</b>' : '<b>Hi</b>';
+ const bookmark = { title: 'a title', url: 'test' };
+ clipboard.write({
+ text: 'test',
+@@ -91,7 +91,7 @@ describe('clipboard module', () => {
+ expect(clipboard.readRTF()).to.equal(rtf);
+ expect(clipboard.readImage().toDataURL()).to.equal(i.toDataURL());
+
+- if (process.platform !== 'linux') {
++ if (process.platform !== 'linux' && process.platform !== 'freebsd') {
+ expect(clipboard.readBookmark()).to.deep.equal(bookmark);
+ }
+ });
diff --git a/devel/electron7/files/patch-electron_spec_api-crash-reporter-spec.js b/devel/electron7/files/patch-electron_spec_api-crash-reporter-spec.js
new file mode 100644
index 000000000000..63485c3e9122
--- /dev/null
+++ b/devel/electron7/files/patch-electron_spec_api-crash-reporter-spec.js
@@ -0,0 +1,101 @@
+--- electron/spec/api-crash-reporter-spec.js.orig 2020-03-24 05:00:48 UTC
++++ electron/spec/api-crash-reporter-spec.js
+@@ -19,7 +19,7 @@ describe('crashReporter module', () => {
+ if (process.mas || process.env.DISABLE_CRASH_REPORTER_TESTS) return;
+
+ // TODO(alexeykuzmin): [Ch66] Fails. Fix it and enable back.
+- if (process.platform === 'linux') return;
++ if (process.platform === 'linux' || process.platform === 'freebsd') return;
+
+ let originalTempDirectory = null;
+ let tempDirectory = null;
+@@ -90,7 +90,7 @@ describe('crashReporter module', () => {
+ let dumpFile;
+ let crashesDir = crashReporter.getCrashesDirectory();
+ const existingDumpFiles = new Set();
+- if (process.platform !== 'linux') {
++ if (process.platform !== 'linux' && process.platform !== 'freebsd') {
+ // crashpad puts the dump files in the "completed" subdirectory
+ if (process.platform === 'darwin') {
+ crashesDir = path.join(crashesDir, 'completed');
+@@ -101,7 +101,7 @@ describe('crashReporter module', () => {
+ }
+ const testDone = (uploaded) => {
+ if (uploaded) return done(new Error('Uploaded crash report'));
+- if (process.platform !== 'linux') crashReporter.setUploadToServer(true);
++ if (process.platform !== 'linux' && process.platform !== 'freebsd') crashReporter.setUploadToServer(true);
+ expect(fs.existsSync(dumpFile)).to.be.true();
+ done();
+ };
+@@ -151,7 +151,7 @@ describe('crashReporter module', () => {
+ });
+
+ it('should send minidump with updated extra parameters when node processes crash', function (done) {
+- if (process.platform === 'linux') {
++ if (process.platform === 'linux' || process.platform === 'freebsd') {
+ // FIXME(alexeykuzmin): Skip the test.
+ // this.skip()
+ return;
+@@ -305,7 +305,7 @@ describe('crashReporter module', () => {
+ expect(() => require('electron').crashReporter.getUploadToServer()).to.throw();
+ });
+ it('returns true when uploadToServer is set to true', function () {
+- if (process.platform === 'linux') {
++ if (process.platform === 'linux' || process.platform === 'freebsd') {
+ // FIXME(alexeykuzmin): Skip the test.
+ // this.skip()
+ return;
+@@ -319,7 +319,7 @@ describe('crashReporter module', () => {
+ expect(crashReporter.getUploadToServer()).to.be.true();
+ });
+ it('returns false when uploadToServer is set to false', function () {
+- if (process.platform === 'linux') {
++ if (process.platform === 'linux' || process.platform === 'freebsd') {
+ // FIXME(alexeykuzmin): Skip the test.
+ // this.skip()
+ return;
+@@ -340,7 +340,7 @@ describe('crashReporter module', () => {
+ expect(() => require('electron').crashReporter.setUploadToServer('arg')).to.throw();
+ });
+ it('sets uploadToServer false when called with false', function () {
+- if (process.platform === 'linux') {
++ if (process.platform === 'linux' || process.platform === 'freebsd') {
+ // FIXME(alexeykuzmin): Skip the test.
+ // this.skip()
+ return;
+@@ -355,7 +355,7 @@ describe('crashReporter module', () => {
+ expect(crashReporter.getUploadToServer()).to.be.false();
+ });
+ it('sets uploadToServer true when called with true', function () {
+- if (process.platform === 'linux') {
++ if (process.platform === 'linux' || process.platform === 'freebsd') {
+ // FIXME(alexeykuzmin): Skip the test.
+ // this.skip()
+ return;
+@@ -382,7 +382,7 @@ describe('crashReporter module', () => {
+ expect(parameters).to.be.an('object');
+ });
+ it('adds a parameter to current parameters', function () {
+- if (process.platform === 'linux') {
++ if (process.platform === 'linux' || process.platform === 'freebsd') {
+ // FIXME(alexeykuzmin): Skip the test.
+ // this.skip()
+ return;
+@@ -397,7 +397,7 @@ describe('crashReporter module', () => {
+ expect(crashReporter.getParameters()).to.have.a.property('hello');
+ });
+ it('removes a parameter from current parameters', function () {
+- if (process.platform === 'linux') {
++ if (process.platform === 'linux' || process.platform === 'freebsd') {
+ // FIXME(alexeykuzmin): Skip the test.
+ // this.skip()
+ return;
+@@ -490,7 +490,7 @@ const startServer = ({ callback, processType, done, pr
+ server.listen(port, '127.0.0.1', () => {
+ port = server.address().port;
+ remote.process.port = port;
+- if (process.platform !== 'linux') {
++ if (process.platform !== 'linux' && process.platform !== 'freebsd') {
+ crashReporter.start({
+ companyName: 'Umbrella Corporation',
+ submitURL: 'http://127.0.0.1:' + port
diff --git a/devel/electron7/files/patch-electron_spec_api-notification-dbus-spec.js b/devel/electron7/files/patch-electron_spec_api-notification-dbus-spec.js
new file mode 100644
index 000000000000..a1e824e5d8be
--- /dev/null
+++ b/devel/electron7/files/patch-electron_spec_api-notification-dbus-spec.js
@@ -0,0 +1,10 @@
+--- electron/spec/api-notification-dbus-spec.js.orig 2020-03-24 05:00:48 UTC
++++ electron/spec/api-notification-dbus-spec.js
+@@ -14,6 +14,7 @@ const { remote } = require('electron');
+ const { app } = remote;
+
+ const skip = process.platform !== 'linux' ||
++ process.platform !== 'freebsd' ||
+ process.arch === 'ia32' ||
+ process.arch.indexOf('arm') === 0 ||
+ !process.env.DBUS_SESSION_BUS_ADDRESS;
diff --git a/devel/electron7/files/patch-electron_spec_api-power-monitor-spec.js b/devel/electron7/files/patch-electron_spec_api-power-monitor-spec.js
new file mode 100644
index 000000000000..6effef210c7e
--- /dev/null
+++ b/devel/electron7/files/patch-electron_spec_api-power-monitor-spec.js
@@ -0,0 +1,11 @@
+--- electron/spec/api-power-monitor-spec.js.orig 2020-03-24 05:00:48 UTC
++++ electron/spec/api-power-monitor-spec.js
+@@ -14,7 +14,7 @@ const Promise = require('bluebird');
+ const { expect } = chai;
+ chai.use(dirtyChai);
+
+-const skip = process.platform !== 'linux' || !process.env.DBUS_SYSTEM_BUS_ADDRESS;
++const skip = (process.platform !== 'linux' && process.platform !== 'freebsd') || !process.env.DBUS_SYSTEM_BUS_ADDRESS;
+
+ describe('powerMonitor', () => {
+ let logindMock, dbusMockPowerMonitor, getCalls, emitSignal, reset;
diff --git a/devel/electron7/files/patch-electron_spec_api-process-spec.js b/devel/electron7/files/patch-electron_spec_api-process-spec.js
new file mode 100644
index 000000000000..c8803311d046
--- /dev/null
+++ b/devel/electron7/files/patch-electron_spec_api-process-spec.js
@@ -0,0 +1,11 @@
+--- electron/spec/api-process-spec.js.orig 2020-03-24 05:00:48 UTC
++++ electron/spec/api-process-spec.js
+@@ -50,7 +50,7 @@ describe('process module', () => {
+ it('resolves promise successfully with valid data', async () => {
+ const memoryInfo = await process.getProcessMemoryInfo();
+ expect(memoryInfo).to.be.an('object');
+- if (process.platform === 'linux' || process.platform === 'windows') {
++ if (process.platform === 'linux' || process.platform === 'freebsd' || process.platform === 'windows') {
+ expect(memoryInfo.residentSet).to.be.a('number').greaterThan(0);
+ }
+ expect(memoryInfo.private).to.be.a('number').greaterThan(0);
diff --git a/devel/electron7/files/patch-electron_spec_api-shell-spec.js b/devel/electron7/files/patch-electron_spec_api-shell-spec.js
new file mode 100644
index 000000000000..687810bc3c8c
--- /dev/null
+++ b/devel/electron7/files/patch-electron_spec_api-shell-spec.js
@@ -0,0 +1,23 @@
+--- electron/spec/api-shell-spec.js.orig 2020-03-24 05:00:48 UTC
++++ electron/spec/api-shell-spec.js
+@@ -42,7 +42,7 @@ describe('shell module', () => {
+ await closeWindow(w);
+ w = null;
+ // reset env vars to prevent side effects
+- if (process.platform === 'linux') {
++ if (process.platform === 'linux' || process.platform === 'freebsd') {
+ process.env.DE = envVars.de;
+ process.env.BROWSER = envVars.browser;
+ process.env.DISPLAY = envVars.display;
+@@ -54,6 +54,11 @@ describe('shell module', () => {
+ let requestReceived;
+ if (process.platform === 'linux') {
+ process.env.BROWSER = '/bin/true';
++ process.env.DE = 'generic';
++ process.env.DISPLAY = '';
++ requestReceived = Promise.resolve();
++ } else if (process.platform === 'freebsd') {
++ process.env.BROWSER = '/usr/bin/true';
+ process.env.DE = 'generic';
+ process.env.DISPLAY = '';
+ requestReceived = Promise.resolve();
diff --git a/devel/electron7/files/patch-electron_spec_api-subframe-spec.js b/devel/electron7/files/patch-electron_spec_api-subframe-spec.js
new file mode 100644
index 000000000000..924543f97da6
--- /dev/null
+++ b/devel/electron7/files/patch-electron_spec_api-subframe-spec.js
@@ -0,0 +1,11 @@
+--- electron/spec/api-subframe-spec.js.orig 2020-03-24 05:00:48 UTC
++++ electron/spec/api-subframe-spec.js
+@@ -188,7 +188,7 @@ describe('cross-site frame sandboxing', () => {
+ let server = null;
+
+ beforeEach(function () {
+- if (process.platform === 'linux') {
++ if (process.platform === 'linux' || process.platform === 'freebsd') {
+ this.skip();
+ }
+ });
diff --git a/devel/electron7/files/patch-electron_spec_chromium-spec.js b/devel/electron7/files/patch-electron_spec_chromium-spec.js
new file mode 100644
index 000000000000..72a0b169d90f
--- /dev/null
+++ b/devel/electron7/files/patch-electron_spec_chromium-spec.js
@@ -0,0 +1,27 @@
+--- electron/spec/chromium-spec.js.orig 2020-05-15 00:25:58 UTC
++++ electron/spec/chromium-spec.js
+@@ -828,7 +828,7 @@ describe('chromium feature', () => {
+ });
+
+ it('can be get as context in canvas', () => {
+- if (process.platform === 'linux') {
++ if (process.platform === 'linux' || process.platform === 'freebsd') {
+ // FIXME(alexeykuzmin): Skip the test.
+ // this.skip()
+ return;
+@@ -1413,12 +1413,13 @@ describe('font fallback', () => {
+ expect(fonts[0].familyName).to.equal({
+ 'win32': 'Arial',
+ 'darwin': 'Helvetica',
+- 'linux': 'DejaVu Sans' // I think this depends on the distro? We don't specify a default.
++ 'linux': 'DejaVu Sans', // I think this depends on the distro? We don't specify a default.
++ 'freebsd': 'DejaVu Sans'
+ }[process.platform]);
+ });
+
+ it('should fall back to Japanese font for sans-serif Japanese script', async function () {
+- if (process.platform === 'linux') {
++ if (process.platform === 'linux' || process.platform === 'freebsd') {
+ return this.skip();
+ }
+ const html = `
diff --git a/devel/electron7/files/patch-electron_spec_fixtures_api_crash-restart.html b/devel/electron7/files/patch-electron_spec_fixtures_api_crash-restart.html
new file mode 100644
index 000000000000..560ff344917b
--- /dev/null
+++ b/devel/electron7/files/patch-electron_spec_fixtures_api_crash-restart.html
@@ -0,0 +1,11 @@
+--- electron/spec/fixtures/api/crash-restart.html.orig 2019-12-13 19:48:14 UTC
++++ electron/spec/fixtures/api/crash-restart.html
+@@ -19,7 +19,7 @@ crashReporter.start({
+ })
+
+ setImmediate(() => {
+- if (process.platform !== 'linux') {
++ if (process.platform !== 'linux' && process.platform !== 'freebsd') {
+ crashReporter.addExtraParameter('extra2', 'extra2')
+ crashReporter.removeExtraParameter('extra3')
+ } else {
diff --git a/devel/electron7/files/patch-electron_spec_fixtures_module_crash.js b/devel/electron7/files/patch-electron_spec_fixtures_module_crash.js
new file mode 100644
index 000000000000..e48d962649db
--- /dev/null
+++ b/devel/electron7/files/patch-electron_spec_fixtures_module_crash.js
@@ -0,0 +1,11 @@
+--- electron/spec/fixtures/module/crash.js.orig 2020-03-24 05:00:48 UTC
++++ electron/spec/fixtures/module/crash.js
+@@ -10,7 +10,7 @@ process.crashReporter.start({
+ }
+ });
+
+-if (process.platform !== 'linux') {
++if (process.platform !== 'linux' && process.platform !== 'freebsd') {
+ process.crashReporter.addExtraParameter('newExtra', 'newExtra');
+ process.crashReporter.addExtraParameter('removeExtra', 'removeExtra');
+ process.crashReporter.removeExtraParameter('removeExtra');
diff --git a/devel/electron7/files/patch-electron_spec_node-spec.js b/devel/electron7/files/patch-electron_spec_node-spec.js
new file mode 100644
index 000000000000..59b8335bd095
--- /dev/null
+++ b/devel/electron7/files/patch-electron_spec_node-spec.js
@@ -0,0 +1,11 @@
+--- electron/spec/node-spec.js.orig 2020-03-24 05:00:48 UTC
++++ electron/spec/node-spec.js
+@@ -193,7 +193,7 @@ describe('node feature', () => {
+ });
+
+ describe('child_process.exec', () => {
+- (process.platform === 'linux' ? it : it.skip)('allows executing a setuid binary from non-sandboxed renderer', () => {
++ (process.platform === 'linux' || process.platform === 'freebsd' ? it : it.skip)('allows executing a setuid binary from non-sandboxed renderer', () => {
+ // Chrome uses prctl(2) to set the NO_NEW_PRIVILEGES flag on Linux (see
+ // https://github.com/torvalds/linux/blob/40fde647cc/Documentation/userspace-api/no_new_privs.rst).
+ // We disable this for unsandboxed processes, which the remote tests
diff --git a/devel/electron7/files/patch-extensions_browser_api_declarative__webrequest_webrequest__action.cc b/devel/electron7/files/patch-extensions_browser_api_declarative__webrequest_webrequest__action.cc
new file mode 100644
index 000000000000..1544a8b2a5d7
--- /dev/null
+++ b/devel/electron7/files/patch-extensions_browser_api_declarative__webrequest_webrequest__action.cc
@@ -0,0 +1,14 @@
+--- extensions/browser/api/declarative_webrequest/webrequest_action.cc.orig 2019-12-12 12:39:43 UTC
++++ extensions/browser/api/declarative_webrequest/webrequest_action.cc
+@@ -27,7 +27,11 @@
+ #include "extensions/common/extension.h"
+ #include "net/base/registry_controlled_domains/registry_controlled_domain.h"
+ #include "net/http/http_util.h"
++#if defined(OS_BSD)
++#include <re2/re2.h>
++#else
+ #include "third_party/re2/src/re2/re2.h"
++#endif
+
+ using extension_web_request_api_helpers::EventResponseDelta;
+
diff --git a/devel/electron7/files/patch-extensions_browser_api_messaging_message__service.cc b/devel/electron7/files/patch-extensions_browser_api_messaging_message__service.cc
new file mode 100644
index 000000000000..0fc5098ff86e
--- /dev/null
+++ b/devel/electron7/files/patch-extensions_browser_api_messaging_message__service.cc
@@ -0,0 +1,34 @@
+--- extensions/browser/api/messaging/message_service.cc.orig 2019-12-12 12:39:43 UTC
++++ extensions/browser/api/messaging/message_service.cc
+@@ -61,7 +61,7 @@ namespace {
+
+ const char kReceivingEndDoesntExistError[] =
+ "Could not establish connection. Receiving end does not exist.";
+-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+ const char kMissingPermissionError[] =
+ "Access to native messaging requires nativeMessaging permission.";
+ const char kProhibitedByPoliciesError[] =
+@@ -382,7 +382,7 @@ void MessageService::OpenChannelToNativeApp(
+ if (!opener_port->IsValidPort())
+ return;
+
+-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+ bool has_permission = extension->permissions_data()->HasAPIPermission(
+ APIPermission::kNativeMessaging);
+ if (!has_permission) {
+@@ -432,11 +432,11 @@ void MessageService::OpenChannelToNativeApp(
+ channel->opener->IncrementLazyKeepaliveCount();
+
+ AddChannel(std::move(channel), receiver_port_id);
+-#else // !(defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX))
++#else // !(defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD))
+ const char kNativeMessagingNotSupportedError[] =
+ "Native Messaging is not supported on this platform.";
+ opener_port->DispatchOnDisconnect(kNativeMessagingNotSupportedError);
+-#endif // !(defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX))
++#endif // !(defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD))
+ }
+
+ void MessageService::OpenChannelToTab(const ChannelEndpoint& source,
diff --git a/devel/electron7/files/patch-extensions_browser_api_networking__private_networking__private__delegate__factory.cc b/devel/electron7/files/patch-extensions_browser_api_networking__private_networking__private__delegate__factory.cc
new file mode 100644
index 000000000000..e32f9cde42c4
--- /dev/null
+++ b/devel/electron7/files/patch-extensions_browser_api_networking__private_networking__private__delegate__factory.cc
@@ -0,0 +1,20 @@
+--- extensions/browser/api/networking_private/networking_private_delegate_factory.cc.orig 2019-12-12 12:39:43 UTC
++++ extensions/browser/api/networking_private/networking_private_delegate_factory.cc
+@@ -11,7 +11,7 @@
+
+ #if defined(OS_CHROMEOS)
+ #include "extensions/browser/api/networking_private/networking_private_chromeos.h"
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ #include "extensions/browser/api/networking_private/networking_private_linux.h"
+ #elif defined(OS_WIN) || defined(OS_MACOSX)
+ #include "components/wifi/wifi_service.h"
+@@ -61,7 +61,7 @@ KeyedService* NetworkingPrivateDelegateFactory::BuildS
+ NetworkingPrivateDelegate* delegate;
+ #if defined(OS_CHROMEOS)
+ delegate = new NetworkingPrivateChromeOS(browser_context);
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ delegate = new NetworkingPrivateLinux();
+ #elif defined(OS_WIN) || defined(OS_MACOSX)
+ std::unique_ptr<wifi::WiFiService> wifi_service(wifi::WiFiService::Create());
diff --git a/devel/electron7/files/patch-extensions_browser_api_web__request_form__data__parser.cc b/devel/electron7/files/patch-extensions_browser_api_web__request_form__data__parser.cc
new file mode 100644
index 000000000000..8f302e736561
--- /dev/null
+++ b/devel/electron7/files/patch-extensions_browser_api_web__request_form__data__parser.cc
@@ -0,0 +1,14 @@
+--- extensions/browser/api/web_request/form_data_parser.cc.orig 2019-12-12 12:39:44 UTC
++++ extensions/browser/api/web_request/form_data_parser.cc
+@@ -15,7 +15,11 @@
+ #include "base/values.h"
+ #include "net/base/escape.h"
+ #include "net/http/http_request_headers.h"
++#if defined(OS_BSD)
++#include <re2/re2.h>
++#else
+ #include "third_party/re2/src/re2/re2.h"
++#endif
+
+ using base::DictionaryValue;
+ using base::ListValue;
diff --git a/devel/electron7/files/patch-extensions_browser_browser__context__keyed__service__factories.cc b/devel/electron7/files/patch-extensions_browser_browser__context__keyed__service__factories.cc
new file mode 100644
index 000000000000..4fbd0f31b435
--- /dev/null
+++ b/devel/electron7/files/patch-extensions_browser_browser__context__keyed__service__factories.cc
@@ -0,0 +1,11 @@
+--- extensions/browser/browser_context_keyed_service_factories.cc.orig 2019-12-12 12:39:44 UTC
++++ extensions/browser/browser_context_keyed_service_factories.cc
+@@ -84,7 +84,7 @@ void EnsureBrowserContextKeyedServiceFactoriesBuilt()
+ #if defined(OS_CHROMEOS)
+ NetworkingConfigServiceFactory::GetInstance();
+ #endif
+-#if defined(OS_LINUX) || defined(OS_WIN) || defined(OS_MACOSX)
++#if defined(OS_LINUX) || defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_BSD)
+ NetworkingPrivateEventRouterFactory::GetInstance();
+ #endif
+ PowerAPI::GetFactoryInstance();
diff --git a/devel/electron7/files/patch-extensions_common_api___permission__features.json b/devel/electron7/files/patch-extensions_common_api___permission__features.json
new file mode 100644
index 000000000000..775c51cead16
--- /dev/null
+++ b/devel/electron7/files/patch-extensions_common_api___permission__features.json
@@ -0,0 +1,29 @@
+--- extensions/common/api/_permission_features.json.orig 2019-12-12 12:39:44 UTC
++++ extensions/common/api/_permission_features.json
+@@ -135,7 +135,7 @@
+ {
+ "channel": "stable",
+ "extension_types": ["platform_app"],
+- "platforms": ["chromeos", "win", "mac", "linux"],
++ "platforms": ["chromeos", "win", "mac", "linux", "bsd"],
+ "whitelist": [
+ "1C93BD3CF875F4A73C0B2A163BB8FBDA8B8B3D80", // http://crbug.com/387169
+ "A3BC37E2148AC4E99BE4B16AF9D42DD1E592BBBE", // http://crbug.com/387169
+@@ -461,7 +461,7 @@
+ }, {
+ "channel": "stable",
+ "extension_types": ["extension", "legacy_packaged_app", "platform_app"],
+- "platforms": ["chromeos", "mac", "win", "linux"],
++ "platforms": ["chromeos", "mac", "win", "linux", "bsd"],
+ "whitelist": [
+ "0DE0F05680A4A056BCEC864ED8DDA84296F82B40", // http://crbug.com/434651
+ "1C93BD3CF875F4A73C0B2A163BB8FBDA8B8B3D80", // http://crbug.com/293683
+@@ -492,7 +492,7 @@
+ "networkingPrivate": {
+ "channel": "stable",
+ "extension_types": ["extension", "legacy_packaged_app", "platform_app"],
+- "platforms": ["chromeos", "mac", "win", "linux"],
++ "platforms": ["chromeos", "mac", "win", "linux", "bsd"],
+ "whitelist": [
+ // DO NOT ADD ANY MORE ENTRIES HERE.
+ // networkingPrivate is being migrated to networking.onc.
diff --git a/devel/electron7/files/patch-extensions_common_api_runtime.json b/devel/electron7/files/patch-extensions_common_api_runtime.json
new file mode 100644
index 000000000000..32f0f805a191
--- /dev/null
+++ b/devel/electron7/files/patch-extensions_common_api_runtime.json
@@ -0,0 +1,11 @@
+--- extensions/common/api/runtime.json.orig 2019-12-12 12:39:44 UTC
++++ extensions/common/api/runtime.json
+@@ -67,7 +67,7 @@
+ "id": "PlatformOs",
+ "type": "string",
+ "description": "The operating system chrome is running on.",
+- "enum": ["mac", "win", "android", "cros", "linux", "openbsd"]
++ "enum": ["mac", "win", "android", "cros", "linux", "freebsd", "openbsd"]
+ },
+ {
+ "id": "PlatformArch",
diff --git a/devel/electron7/files/patch-extensions_common_feature__switch.cc b/devel/electron7/files/patch-extensions_common_feature__switch.cc
new file mode 100644
index 000000000000..4f0348977da5
--- /dev/null
+++ b/devel/electron7/files/patch-extensions_common_feature__switch.cc
@@ -0,0 +1,16 @@
+--- extensions/common/feature_switch.cc.orig 2019-12-12 12:39:44 UTC
++++ extensions/common/feature_switch.cc
+@@ -42,11 +42,11 @@ class CommonSwitches {
+ FeatureSwitch::DEFAULT_ENABLED),
+ load_media_router_component_extension(
+ kLoadMediaRouterComponentExtensionFlag,
+-#if BUILDFLAG(GOOGLE_CHROME_BRANDING)
++#if BUILDFLAG(GOOGLE_CHROME_BRANDING) || defined(OS_BSD)
+ FeatureSwitch::DEFAULT_ENABLED)
+ #else
+ FeatureSwitch::DEFAULT_DISABLED)
+-#endif // BUILDFLAG(GOOGLE_CHROME_BRANDING)
++#endif // BUILDFLAG(GOOGLE_CHROME_BRANDING) || defined(OS_BSD)
+ {
+ }
+
diff --git a/devel/electron7/files/patch-extensions_common_features_feature.cc b/devel/electron7/files/patch-extensions_common_features_feature.cc
new file mode 100644
index 000000000000..251aa6c71b88
--- /dev/null
+++ b/devel/electron7/files/patch-extensions_common_features_feature.cc
@@ -0,0 +1,11 @@
+--- extensions/common/features/feature.cc.orig 2019-12-12 12:39:44 UTC
++++ extensions/common/features/feature.cc
+@@ -20,7 +20,7 @@ namespace extensions {
+ Feature::Platform Feature::GetCurrentPlatform() {
+ #if defined(OS_CHROMEOS)
+ return CHROMEOS_PLATFORM;
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ return LINUX_PLATFORM;
+ #elif defined(OS_MACOSX)
+ return MACOSX_PLATFORM;
diff --git a/devel/electron7/files/patch-extensions_common_image__util.cc b/devel/electron7/files/patch-extensions_common_image__util.cc
new file mode 100644
index 000000000000..8d760e4081d3
--- /dev/null
+++ b/devel/electron7/files/patch-extensions_common_image__util.cc
@@ -0,0 +1,14 @@
+--- extensions/common/image_util.cc.orig 2019-12-12 12:39:44 UTC
++++ extensions/common/image_util.cc
+@@ -18,7 +18,11 @@
+ #include "base/strings/stringprintf.h"
+ #include "base/time/time.h"
+ #include "base/timer/elapsed_timer.h"
++#if defined(OS_BSD)
++#include <re2/re2.h>
++#else
+ #include "third_party/re2/src/re2/re2.h"
++#endif // defined(OS_BSD)
+ #include "third_party/skia/include/core/SkBitmap.h"
+ #include "third_party/skia/include/core/SkCanvas.h"
+ #include "third_party/skia/include/core/SkColor.h"
diff --git a/devel/electron7/files/patch-extensions_common_stack__frame.cc b/devel/electron7/files/patch-extensions_common_stack__frame.cc
new file mode 100644
index 000000000000..8018b7255058
--- /dev/null
+++ b/devel/electron7/files/patch-extensions_common_stack__frame.cc
@@ -0,0 +1,14 @@
+--- extensions/common/stack_frame.cc.orig 2019-12-12 12:39:44 UTC
++++ extensions/common/stack_frame.cc
+@@ -7,7 +7,11 @@
+ #include <string>
+
+ #include "base/strings/utf_string_conversions.h"
++#if defined(OS_BSD)
++#include <re2/re2.h>
++#else
+ #include "third_party/re2/src/re2/re2.h"
++#endif
+
+ namespace extensions {
+
diff --git a/devel/electron7/files/patch-extensions_renderer_bindings_api__binding__util.cc b/devel/electron7/files/patch-extensions_renderer_bindings_api__binding__util.cc
new file mode 100644
index 000000000000..5c9e0a4f5f68
--- /dev/null
+++ b/devel/electron7/files/patch-extensions_renderer_bindings_api__binding__util.cc
@@ -0,0 +1,11 @@
+--- extensions/renderer/bindings/api_binding_util.cc.orig 2019-12-12 12:39:44 UTC
++++ extensions/renderer/bindings/api_binding_util.cc
+@@ -129,6 +129,8 @@ std::string GetPlatformString() {
+ return "mac";
+ #elif defined(OS_WIN)
+ return "win";
++#elif defined(OS_BSD)
++ return "bsd";
+ #else
+ NOTREACHED();
+ return std::string();
diff --git a/devel/electron7/files/patch-extensions_shell_app_shell__main__delegate.cc b/devel/electron7/files/patch-extensions_shell_app_shell__main__delegate.cc
new file mode 100644
index 000000000000..880090dd32ce
--- /dev/null
+++ b/devel/electron7/files/patch-extensions_shell_app_shell__main__delegate.cc
@@ -0,0 +1,20 @@
+--- extensions/shell/app/shell_main_delegate.cc.orig 2019-12-12 12:39:44 UTC
++++ extensions/shell/app/shell_main_delegate.cc
+@@ -38,7 +38,7 @@
+
+ #if defined(OS_WIN)
+ #include "base/base_paths_win.h"
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ #include "base/nix/xdg_util.h"
+ #elif defined(OS_MACOSX)
+ #include "base/base_paths_mac.h"
+@@ -70,7 +70,7 @@ base::FilePath GetDataPath() {
+ return cmd_line->GetSwitchValuePath(switches::kContentShellDataPath);
+
+ base::FilePath data_dir;
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ std::unique_ptr<base::Environment> env(base::Environment::Create());
+ data_dir = base::nix::GetXDGDirectory(
+ env.get(), base::nix::kXdgConfigHomeEnvVar, base::nix::kDotConfigDir);
diff --git a/devel/electron7/files/patch-extensions_shell_browser_api_runtime_shell__runtime__api__delegate.cc b/devel/electron7/files/patch-extensions_shell_browser_api_runtime_shell__runtime__api__delegate.cc
new file mode 100644
index 000000000000..6cff8b8c974b
--- /dev/null
+++ b/devel/electron7/files/patch-extensions_shell_browser_api_runtime_shell__runtime__api__delegate.cc
@@ -0,0 +1,11 @@
+--- extensions/shell/browser/api/runtime/shell_runtime_api_delegate.cc.orig 2019-12-12 12:39:44 UTC
++++ extensions/shell/browser/api/runtime/shell_runtime_api_delegate.cc
+@@ -45,7 +45,7 @@ void ShellRuntimeAPIDelegate::OpenURL(const GURL& unin
+ bool ShellRuntimeAPIDelegate::GetPlatformInfo(PlatformInfo* info) {
+ #if defined(OS_CHROMEOS)
+ info->os = api::runtime::PLATFORM_OS_CROS;
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ info->os = api::runtime::PLATFORM_OS_LINUX;
+ #endif
+ return true;
diff --git a/devel/electron7/files/patch-extensions_shell_browser_shell__extensions__api__client.cc b/devel/electron7/files/patch-extensions_shell_browser_shell__extensions__api__client.cc
new file mode 100644
index 000000000000..67894f413cba
--- /dev/null
+++ b/devel/electron7/files/patch-extensions_shell_browser_shell__extensions__api__client.cc
@@ -0,0 +1,20 @@
+--- extensions/shell/browser/shell_extensions_api_client.cc.orig 2019-12-12 12:39:44 UTC
++++ extensions/shell/browser/shell_extensions_api_client.cc
+@@ -16,7 +16,7 @@
+ #include "extensions/shell/browser/shell_virtual_keyboard_delegate.h"
+ #include "extensions/shell/browser/shell_web_view_guest_delegate.h"
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ #include "extensions/shell/browser/api/file_system/shell_file_system_delegate.h"
+ #endif
+
+@@ -52,7 +52,7 @@ ShellExtensionsAPIClient::CreateDisplayInfoProvider()
+ return std::make_unique<ShellDisplayInfoProvider>();
+ }
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ FileSystemDelegate* ShellExtensionsAPIClient::GetFileSystemDelegate() {
+ if (!file_system_delegate_)
+ file_system_delegate_ = std::make_unique<ShellFileSystemDelegate>();
diff --git a/devel/electron7/files/patch-extensions_shell_browser_shell__extensions__api__client.h b/devel/electron7/files/patch-extensions_shell_browser_shell__extensions__api__client.h
new file mode 100644
index 000000000000..e65b0ff5ac02
--- /dev/null
+++ b/devel/electron7/files/patch-extensions_shell_browser_shell__extensions__api__client.h
@@ -0,0 +1,19 @@
+--- extensions/shell/browser/shell_extensions_api_client.h.orig 2019-12-12 12:39:44 UTC
++++ extensions/shell/browser/shell_extensions_api_client.h
+@@ -32,14 +32,14 @@ class ShellExtensionsAPIClient : public ExtensionsAPIC
+ content::BrowserContext* browser_context) const override;
+ std::unique_ptr<DisplayInfoProvider> CreateDisplayInfoProvider()
+ const override;
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ FileSystemDelegate* GetFileSystemDelegate() override;
+ #endif
+ MessagingDelegate* GetMessagingDelegate() override;
+ FeedbackPrivateDelegate* GetFeedbackPrivateDelegate() override;
+
+ private:
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ std::unique_ptr<FileSystemDelegate> file_system_delegate_;
+ #endif
+ std::unique_ptr<MessagingDelegate> messaging_delegate_;
diff --git a/devel/electron7/files/patch-google__apis_gcm_engine_heartbeat__manager.cc b/devel/electron7/files/patch-google__apis_gcm_engine_heartbeat__manager.cc
new file mode 100644
index 000000000000..da24249760ea
--- /dev/null
+++ b/devel/electron7/files/patch-google__apis_gcm_engine_heartbeat__manager.cc
@@ -0,0 +1,53 @@
+--- google_apis/gcm/engine/heartbeat_manager.cc.orig 2019-12-12 12:39:44 UTC
++++ google_apis/gcm/engine/heartbeat_manager.cc
+@@ -31,13 +31,13 @@ const int kMinClientHeartbeatIntervalMs = 1000 * 30;
+ // Minimum time spent sleeping before we force a new heartbeat.
+ const int kMinSuspendTimeMs = 1000 * 10; // 10 seconds.
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ // The period at which to check if the heartbeat time has passed. Used to
+ // protect against platforms where the timer is delayed by the system being
+ // suspended. Only needed on linux because the other OSes provide a standard
+ // way to be notified of system suspend and resume events.
+ const int kHeartbeatMissedCheckMs = 1000 * 60 * 5; // 5 minutes.
+-#endif // defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#endif // (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+
+ } // namespace
+
+@@ -191,7 +191,7 @@ void HeartbeatManager::RestartTimer() {
+ base::Bind(&HeartbeatManager::OnHeartbeatTriggered,
+ weak_ptr_factory_.GetWeakPtr()));
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ // Windows, Mac, Android, iOS, and Chrome OS all provide a way to be notified
+ // when the system is suspending or resuming. The only one that does not is
+ // Linux so we need to poll to check for missed heartbeats.
+@@ -200,7 +200,7 @@ void HeartbeatManager::RestartTimer() {
+ base::BindOnce(&HeartbeatManager::CheckForMissedHeartbeat,
+ weak_ptr_factory_.GetWeakPtr()),
+ base::TimeDelta::FromMilliseconds(kHeartbeatMissedCheckMs));
+-#endif // defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#endif // (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ }
+
+ void HeartbeatManager::CheckForMissedHeartbeat() {
+@@ -216,14 +216,14 @@ void HeartbeatManager::CheckForMissedHeartbeat() {
+ return;
+ }
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ // Otherwise check again later.
+ io_task_runner_->PostDelayedTask(
+ FROM_HERE,
+ base::BindOnce(&HeartbeatManager::CheckForMissedHeartbeat,
+ weak_ptr_factory_.GetWeakPtr()),
+ base::TimeDelta::FromMilliseconds(kHeartbeatMissedCheckMs));
+-#endif // defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#endif // (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ }
+
+ void HeartbeatManager::UpdateHeartbeatInterval() {
diff --git a/devel/electron7/files/patch-gpu_command__buffer_common_gpu__memory__buffer__support.cc b/devel/electron7/files/patch-gpu_command__buffer_common_gpu__memory__buffer__support.cc
new file mode 100644
index 000000000000..f8ef02c0b8b0
--- /dev/null
+++ b/devel/electron7/files/patch-gpu_command__buffer_common_gpu__memory__buffer__support.cc
@@ -0,0 +1,11 @@
+--- gpu/command_buffer/common/gpu_memory_buffer_support.cc.orig 2019-12-12 12:39:44 UTC
++++ gpu/command_buffer/common/gpu_memory_buffer_support.cc
+@@ -88,7 +88,7 @@ bool IsImageSizeValidForGpuMemoryBufferFormat(const gf
+ uint32_t GetPlatformSpecificTextureTarget() {
+ #if defined(OS_MACOSX)
+ return GL_TEXTURE_RECTANGLE_ARB;
+-#elif defined(OS_ANDROID) || defined(OS_LINUX)
++#elif defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_BSD)
+ return GL_TEXTURE_EXTERNAL_OES;
+ #elif defined(OS_WIN) || defined(OS_FUCHSIA)
+ return GL_TEXTURE_2D;
diff --git a/devel/electron7/files/patch-gpu_command__buffer_service_external__vk__image__backing.cc b/devel/electron7/files/patch-gpu_command__buffer_service_external__vk__image__backing.cc
new file mode 100644
index 000000000000..2ee2ef3ca8ca
--- /dev/null
+++ b/devel/electron7/files/patch-gpu_command__buffer_service_external__vk__image__backing.cc
@@ -0,0 +1,65 @@
+--- gpu/command_buffer/service/external_vk_image_backing.cc.orig 2019-12-12 12:39:44 UTC
++++ gpu/command_buffer/service/external_vk_image_backing.cc
+@@ -23,7 +23,7 @@
+ #include "ui/gl/buildflags.h"
+ #include "ui/gl/gl_context.h"
+
+-#if defined(OS_LINUX) && BUILDFLAG(USE_DAWN)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && BUILDFLAG(USE_DAWN)
+ #include "gpu/command_buffer/service/external_vk_image_dawn_representation.h"
+ #endif
+
+@@ -31,7 +31,7 @@
+ #include "gpu/vulkan/fuchsia/vulkan_fuchsia_ext.h"
+ #endif
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #define GL_HANDLE_TYPE_OPAQUE_FD_EXT 0x9586
+ #endif
+
+@@ -504,7 +504,7 @@ std::unique_ptr<SharedImageRepresentationDawn>
+ ExternalVkImageBacking::ProduceDawn(SharedImageManager* manager,
+ MemoryTypeTracker* tracker,
+ DawnDevice dawnDevice) {
+-#if defined(OS_LINUX) && BUILDFLAG(USE_DAWN)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && BUILDFLAG(USE_DAWN)
+ if (!dawn_format_) {
+ DLOG(ERROR) << "Format not supported for Dawn";
+ return nullptr;
+@@ -527,7 +527,7 @@ ExternalVkImageBacking::ProduceDawn(SharedImageManager
+ return std::make_unique<ExternalVkImageDawnRepresentation>(
+ manager, this, tracker, dawnDevice, dawn_format_.value(), memory_fd,
+ image_info.fAlloc.fSize, memory_type_index_.value());
+-#else // !defined(OS_LINUX) || !BUILDFLAG(USE_DAWN)
++#else // !defined(OS_LINUX) || !defined(OS_BSD) || !BUILDFLAG(USE_DAWN)
+ NOTIMPLEMENTED_LOG_ONCE();
+ return nullptr;
+ #endif
+@@ -544,7 +544,7 @@ ExternalVkImageBacking::ProduceGLTexture(SharedImageMa
+ #if defined(OS_FUCHSIA)
+ NOTIMPLEMENTED_LOG_ONCE();
+ return nullptr;
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ GrVkImageInfo image_info;
+ bool result = backend_texture_.getVkImageInfo(&image_info);
+ DCHECK(result);
+@@ -604,7 +604,7 @@ ExternalVkImageBacking::ProduceGLTexture(SharedImageMa
+ }
+ return std::make_unique<ExternalVkImageGlRepresentation>(
+ manager, this, tracker, texture_, texture_->service_id());
+-#else // !defined(OS_LINUX) && !defined(OS_FUCHSIA)
++#else // !defined(OS_LINUX) && !defined(OS_FUCHSIA) && !defined(OS_BSD)
+ #error Unsupported OS
+ #endif
+ }
+@@ -630,7 +630,7 @@ ExternalVkImageBacking::ProduceSkia(
+ tracker);
+ }
+
+-#ifdef OS_LINUX
++#if defined(OS_LINUX) || defined(OS_BSD)
+ int ExternalVkImageBacking::GetMemoryFd(const GrVkImageInfo& image_info) {
+ VkMemoryGetFdInfoKHR get_fd_info;
+ get_fd_info.sType = VK_STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR;
diff --git a/devel/electron7/files/patch-gpu_command__buffer_service_external__vk__image__backing.h b/devel/electron7/files/patch-gpu_command__buffer_service_external__vk__image__backing.h
new file mode 100644
index 000000000000..da596284161f
--- /dev/null
+++ b/devel/electron7/files/patch-gpu_command__buffer_service_external__vk__image__backing.h
@@ -0,0 +1,11 @@
+--- gpu/command_buffer/service/external_vk_image_backing.h.orig 2019-12-12 12:39:44 UTC
++++ gpu/command_buffer/service/external_vk_image_backing.h
+@@ -133,7 +133,7 @@ class ExternalVkImageBacking : public SharedImageBacki
+ base::Optional<DawnTextureFormat> dawn_format,
+ base::Optional<uint32_t> memory_type_index);
+
+-#ifdef OS_LINUX
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Extract file descriptor from image
+ int GetMemoryFd(const GrVkImageInfo& image_info);
+ #endif
diff --git a/devel/electron7/files/patch-gpu_command__buffer_service_external__vk__image__gl__representation.cc b/devel/electron7/files/patch-gpu_command__buffer_service_external__vk__image__gl__representation.cc
new file mode 100644
index 000000000000..bebbf35c39cb
--- /dev/null
+++ b/devel/electron7/files/patch-gpu_command__buffer_service_external__vk__image__gl__representation.cc
@@ -0,0 +1,20 @@
+--- gpu/command_buffer/service/external_vk_image_gl_representation.cc.orig 2019-12-12 12:39:44 UTC
++++ gpu/command_buffer/service/external_vk_image_gl_representation.cc
+@@ -183,7 +183,7 @@ GLuint ExternalVkImageGlRepresentation::ImportVkSemaph
+ #if defined(OS_FUCHSIA)
+ NOTIMPLEMENTED_LOG_ONCE();
+ return 0;
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ if (handle.vk_handle_type() !=
+ VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT) {
+ DLOG(ERROR) << "Importing semaphore handle of unexpected type:"
+@@ -198,7 +198,7 @@ GLuint ExternalVkImageGlRepresentation::ImportVkSemaph
+ fd.release());
+
+ return gl_semaphore;
+-#else // !defined(OS_FUCHSIA) && !defined(OS_LINUX)
++#else // !defined(OS_FUCHSIA) && !defined(OS_LINUX) && !defined(OS_BSD)
+ #error Unsupported OS
+ #endif
+ }
diff --git a/devel/electron7/files/patch-gpu_command__buffer_service_program__manager.cc b/devel/electron7/files/patch-gpu_command__buffer_service_program__manager.cc
new file mode 100644
index 000000000000..e174297c026a
--- /dev/null
+++ b/devel/electron7/files/patch-gpu_command__buffer_service_program__manager.cc
@@ -0,0 +1,14 @@
+--- gpu/command_buffer/service/program_manager.cc.orig 2019-12-12 12:39:44 UTC
++++ gpu/command_buffer/service/program_manager.cc
+@@ -30,7 +30,11 @@
+ #include "gpu/command_buffer/service/program_cache.h"
+ #include "gpu/command_buffer/service/shader_manager.h"
+ #include "gpu/config/gpu_preferences.h"
++#if defined(OS_BSD)
++#include <re2/re2.h>
++#else
+ #include "third_party/re2/src/re2/re2.h"
++#endif
+ #include "ui/gl/gl_version_info.h"
+ #include "ui/gl/progress_reporter.h"
+
diff --git a/devel/electron7/files/patch-gpu_command__buffer_tests_gl__copy__texture__CHROMIUM__unittest.cc b/devel/electron7/files/patch-gpu_command__buffer_tests_gl__copy__texture__CHROMIUM__unittest.cc
new file mode 100644
index 000000000000..5b711ce7fb9d
--- /dev/null
+++ b/devel/electron7/files/patch-gpu_command__buffer_tests_gl__copy__texture__CHROMIUM__unittest.cc
@@ -0,0 +1,11 @@
+--- gpu/command_buffer/tests/gl_copy_texture_CHROMIUM_unittest.cc.orig 2019-12-12 12:39:44 UTC
++++ gpu/command_buffer/tests/gl_copy_texture_CHROMIUM_unittest.cc
+@@ -638,7 +638,7 @@ class GLCopyTextureCHROMIUMES3Test : public GLCopyText
+
+ bool ShouldSkipNorm16() const {
+ DCHECK(!ShouldSkipTest());
+-#if (defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_LINUX)) && \
++#if (defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD)) && \
+ (defined(ARCH_CPU_X86) || defined(ARCH_CPU_X86_64))
+ // Make sure it's tested; it is safe to assume that the flag is always true
+ // on desktop.
diff --git a/devel/electron7/files/patch-gpu_command__buffer_tests_gl__test__utils.cc b/devel/electron7/files/patch-gpu_command__buffer_tests_gl__test__utils.cc
new file mode 100644
index 000000000000..213cec420b63
--- /dev/null
+++ b/devel/electron7/files/patch-gpu_command__buffer_tests_gl__test__utils.cc
@@ -0,0 +1,20 @@
+--- gpu/command_buffer/tests/gl_test_utils.cc.orig 2019-12-12 12:39:44 UTC
++++ gpu/command_buffer/tests/gl_test_utils.cc
+@@ -23,7 +23,7 @@
+ #include "ui/gl/gl_version_info.h"
+ #include "ui/gl/init/gl_factory.h"
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include "ui/gl/gl_image_native_pixmap.h"
+ #endif
+
+@@ -443,7 +443,7 @@ void GpuCommandBufferTestEGL::RestoreGLDefault() {
+ window_system_binding_info_ = gl::GLWindowSystemBindingInfo();
+ }
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ scoped_refptr<gl::GLImageNativePixmap>
+ GpuCommandBufferTestEGL::CreateGLImageNativePixmap(gfx::BufferFormat format,
+ gfx::Size size,
diff --git a/devel/electron7/files/patch-gpu_command__buffer_tests_gl__test__utils.h b/devel/electron7/files/patch-gpu_command__buffer_tests_gl__test__utils.h
new file mode 100644
index 000000000000..d91d91aec0d0
--- /dev/null
+++ b/devel/electron7/files/patch-gpu_command__buffer_tests_gl__test__utils.h
@@ -0,0 +1,11 @@
+--- gpu/command_buffer/tests/gl_test_utils.h.orig 2019-12-12 12:39:44 UTC
++++ gpu/command_buffer/tests/gl_test_utils.h
+@@ -120,7 +120,7 @@ class GpuCommandBufferTestEGL {
+ return gfx::HasExtension(gl_extensions_, extension);
+ }
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Create GLImageNativePixmap filled in with the given pixels.
+ scoped_refptr<gl::GLImageNativePixmap> CreateGLImageNativePixmap(
+ gfx::BufferFormat format,
diff --git a/devel/electron7/files/patch-gpu_config_gpu__control__list.cc b/devel/electron7/files/patch-gpu_config_gpu__control__list.cc
new file mode 100644
index 000000000000..584a4d07fe62
--- /dev/null
+++ b/devel/electron7/files/patch-gpu_config_gpu__control__list.cc
@@ -0,0 +1,32 @@
+--- gpu/config/gpu_control_list.cc.orig 2019-12-12 12:39:44 UTC
++++ gpu/config/gpu_control_list.cc
+@@ -16,7 +16,11 @@
+ #include "base/values.h"
+ #include "build/build_config.h"
+ #include "gpu/config/gpu_util.h"
++#if defined(OS_BSD)
++#include <re2/re2.h>
++#else
+ #include "third_party/re2/src/re2/re2.h"
++#endif // defined(OS_BSD)
+
+ namespace gpu {
+ namespace {
+@@ -213,7 +217,7 @@ bool GpuControlList::More::GLVersionInfoMismatch(
+ GpuControlList::GLType GpuControlList::More::GetDefaultGLType() {
+ #if defined(OS_CHROMEOS)
+ return kGLTypeGL;
+-#elif defined(OS_LINUX) || defined(OS_OPENBSD)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ return kGLTypeGL;
+ #elif defined(OS_MACOSX)
+ return kGLTypeGL;
+@@ -707,7 +711,7 @@ GpuControlList::OsType GpuControlList::GetOsType() {
+ return kOsAndroid;
+ #elif defined(OS_FUCHSIA)
+ return kOsFuchsia;
+-#elif defined(OS_LINUX) || defined(OS_OPENBSD)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ return kOsLinux;
+ #elif defined(OS_MACOSX)
+ return kOsMacosx;
diff --git a/devel/electron7/files/patch-gpu_config_gpu__test__config.cc b/devel/electron7/files/patch-gpu_config_gpu__test__config.cc
new file mode 100644
index 000000000000..4c7cebe776a5
--- /dev/null
+++ b/devel/electron7/files/patch-gpu_config_gpu__test__config.cc
@@ -0,0 +1,11 @@
+--- gpu/config/gpu_test_config.cc.orig 2019-12-12 12:39:44 UTC
++++ gpu/config/gpu_test_config.cc
+@@ -25,7 +25,7 @@ namespace {
+ GPUTestConfig::OS GetCurrentOS() {
+ #if defined(OS_CHROMEOS)
+ return GPUTestConfig::kOsChromeOS;
+-#elif defined(OS_LINUX) || defined(OS_OPENBSD)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ return GPUTestConfig::kOsLinux;
+ #elif defined(OS_WIN)
+ int32_t major_version = 0;
diff --git a/devel/electron7/files/patch-gpu_ipc_common_gpu__memory__buffer__support.cc b/devel/electron7/files/patch-gpu_ipc_common_gpu__memory__buffer__support.cc
new file mode 100644
index 000000000000..4eaf7081d822
--- /dev/null
+++ b/devel/electron7/files/patch-gpu_ipc_common_gpu__memory__buffer__support.cc
@@ -0,0 +1,56 @@
+--- gpu/ipc/common/gpu_memory_buffer_support.cc.orig 2019-12-12 12:39:44 UTC
++++ gpu/ipc/common/gpu_memory_buffer_support.cc
+@@ -12,7 +12,7 @@
+ #include "gpu/ipc/common/gpu_memory_buffer_impl_io_surface.h"
+ #endif
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include "ui/gfx/client_native_pixmap_factory.h"
+ #include "ui/gfx/linux/client_native_pixmap_factory_dmabuf.h"
+ #endif
+@@ -22,7 +22,7 @@
+ #include "ui/ozone/public/ozone_platform.h"
+ #endif
+
+-#if defined(USE_OZONE) || defined(OS_LINUX)
++#if defined(USE_OZONE) || defined(OS_LINUX) || defined(OS_BSD)
+ #include "gpu/ipc/common/gpu_memory_buffer_impl_native_pixmap.h"
+ #endif
+
+@@ -40,7 +40,7 @@ namespace gpu {
+ GpuMemoryBufferSupport::GpuMemoryBufferSupport() {
+ #if defined(USE_OZONE)
+ client_native_pixmap_factory_ = ui::CreateClientNativePixmapFactoryOzone();
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ client_native_pixmap_factory_.reset(
+ gfx::CreateClientNativePixmapFactoryDmabuf());
+ #endif
+@@ -54,7 +54,7 @@ GpuMemoryBufferSupport::GetNativeGpuMemoryBufferType()
+ return gfx::IO_SURFACE_BUFFER;
+ #elif defined(OS_ANDROID)
+ return gfx::ANDROID_HARDWARE_BUFFER;
+-#elif defined(OS_LINUX) || defined(USE_OZONE)
++#elif defined(OS_LINUX) || defined(USE_OZONE) || defined(OS_BSD)
+ return gfx::NATIVE_PIXMAP;
+ #elif defined(OS_WIN)
+ return gfx::DXGI_SHARED_HANDLE;
+@@ -110,7 +110,7 @@ bool GpuMemoryBufferSupport::IsNativeGpuMemoryBufferCo
+ #elif defined(USE_OZONE)
+ return ui::OzonePlatform::EnsureInstance()->IsNativePixmapConfigSupported(
+ format, usage);
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ return false; // TODO(julian.isorce): Add linux support.
+ #elif defined(OS_WIN)
+ switch (usage) {
+@@ -166,7 +166,7 @@ GpuMemoryBufferSupport::CreateGpuMemoryBufferImplFromH
+ return GpuMemoryBufferImplIOSurface::CreateFromHandle(
+ std::move(handle), size, format, usage, std::move(callback));
+ #endif
+-#if defined(OS_LINUX) || defined(USE_OZONE)
++#if defined(OS_LINUX) || defined(USE_OZONE) || defined(OS_BSD)
+ case gfx::NATIVE_PIXMAP:
+ return GpuMemoryBufferImplNativePixmap::CreateFromHandle(
+ client_native_pixmap_factory(), std::move(handle), size, format,
diff --git a/devel/electron7/files/patch-gpu_ipc_common_gpu__memory__buffer__support.h b/devel/electron7/files/patch-gpu_ipc_common_gpu__memory__buffer__support.h
new file mode 100644
index 000000000000..5b4383cde05c
--- /dev/null
+++ b/devel/electron7/files/patch-gpu_ipc_common_gpu__memory__buffer__support.h
@@ -0,0 +1,29 @@
+--- gpu/ipc/common/gpu_memory_buffer_support.h.orig 2019-12-12 12:39:44 UTC
++++ gpu/ipc/common/gpu_memory_buffer_support.h
+@@ -16,7 +16,7 @@
+ #include "ui/gfx/geometry/size.h"
+ #include "ui/gfx/gpu_memory_buffer.h"
+
+-#if defined(OS_LINUX) || defined(USE_OZONE)
++#if defined(OS_LINUX) || defined(OS_BSD) || defined(USE_OZONE)
+ namespace gfx {
+ class ClientNativePixmapFactory;
+ }
+@@ -38,7 +38,7 @@ class GPU_EXPORT GpuMemoryBufferSupport {
+ bool IsNativeGpuMemoryBufferConfigurationSupported(gfx::BufferFormat format,
+ gfx::BufferUsage usage);
+
+-#if defined(OS_LINUX) || defined(USE_OZONE)
++#if defined(OS_LINUX) || defined(OS_BSD) || defined(USE_OZONE)
+ gfx::ClientNativePixmapFactory* client_native_pixmap_factory() {
+ return client_native_pixmap_factory_.get();
+ }
+@@ -61,7 +61,7 @@ class GPU_EXPORT GpuMemoryBufferSupport {
+ GpuMemoryBufferImpl::DestructionCallback callback);
+
+ private:
+-#if defined(OS_LINUX) || defined(USE_OZONE)
++#if defined(OS_LINUX) || defined(OS_BSD) || defined(USE_OZONE)
+ std::unique_ptr<gfx::ClientNativePixmapFactory> client_native_pixmap_factory_;
+ #endif
+
diff --git a/devel/electron7/files/patch-gpu_ipc_service_gpu__init.cc b/devel/electron7/files/patch-gpu_ipc_service_gpu__init.cc
new file mode 100644
index 000000000000..fbc581115c73
--- /dev/null
+++ b/devel/electron7/files/patch-gpu_ipc_service_gpu__init.cc
@@ -0,0 +1,118 @@
+--- gpu/ipc/service/gpu_init.cc.orig 2019-12-12 12:39:44 UTC
++++ gpu/ipc/service/gpu_init.cc
+@@ -109,7 +109,7 @@ void InitializePlatformOverlaySettings(GPUInfo* gpu_in
+ #endif
+ }
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) && !defined(IS_CHROMECAST)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS) && !defined(IS_CHROMECAST)) || defined(OS_BSD)
+ bool CanAccessNvidiaDeviceFile() {
+ bool res = true;
+ base::ScopedBlockingCall scoped_blocking_call(FROM_HERE,
+@@ -120,7 +120,7 @@ bool CanAccessNvidiaDeviceFile() {
+ }
+ return res;
+ }
+-#endif // OS_LINUX && !OS_CHROMEOS && !IS_CHROMECAST
++#endif // (OS_LINUX && !OS_CHROMEOS && !IS_CHROMECAST) || OS_BSD
+
+ class GpuWatchdogInit {
+ public:
+@@ -165,7 +165,7 @@ bool GpuInit::InitializeAndStartSandbox(base::CommandL
+ // crash during feature collection.
+ gpu::SetKeysForCrashLogging(gpu_info_);
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ if (gpu_info_.gpu.vendor_id == 0x10de && // NVIDIA
+ gpu_info_.gpu.driver_vendor == "NVIDIA" && !CanAccessNvidiaDeviceFile())
+ return false;
+@@ -246,7 +246,7 @@ bool GpuInit::InitializeAndStartSandbox(base::CommandL
+ sandbox_helper_->PreSandboxStartup();
+
+ bool attempted_startsandbox = false;
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) && !defined(OS_BSD)
+ // On Chrome OS ARM Mali, GPU driver userspace creates threads when
+ // initializing a GL context, so start the sandbox early.
+ // TODO(zmo): Need to collect OS version before this.
+@@ -255,7 +255,7 @@ bool GpuInit::InitializeAndStartSandbox(base::CommandL
+ watchdog_thread_.get(), &gpu_info_, gpu_preferences_);
+ attempted_startsandbox = true;
+ }
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) && !defined(OS_BSD)
+
+ base::TimeTicks before_initialize_one_off = base::TimeTicks::Now();
+
+@@ -304,14 +304,14 @@ bool GpuInit::InitializeAndStartSandbox(base::CommandL
+ }
+ if (gl_initialized && use_swiftshader &&
+ gl::GetGLImplementation() != gl::kGLImplementationSwiftShaderGL) {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ VLOG(1) << "Quit GPU process launch to fallback to SwiftShader cleanly "
+ << "on Linux";
+ return false;
+ #else
+ gl::init::ShutdownGL(true);
+ gl_initialized = false;
+-#endif // OS_LINUX
++#endif // OS_LINUX || OS_BSD
+ }
+ if (!gl_initialized)
+ gl_initialized = gl::init::InitializeGLNoExtensionsOneOff();
+@@ -337,7 +337,7 @@ bool GpuInit::InitializeAndStartSandbox(base::CommandL
+ command_line, gpu_feature_info_,
+ gpu_preferences_.disable_software_rasterizer, false);
+ if (use_swiftshader) {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ VLOG(1) << "Quit GPU process launch to fallback to SwiftShader cleanly "
+ << "on Linux";
+ return false;
+@@ -348,7 +348,7 @@ bool GpuInit::InitializeAndStartSandbox(base::CommandL
+ << "failed";
+ return false;
+ }
+-#endif // OS_LINUX
++#endif // OS_LINUX || OS_BSD
+ }
+ }
+
+@@ -377,7 +377,7 @@ bool GpuInit::InitializeAndStartSandbox(base::CommandL
+
+ InitializePlatformOverlaySettings(&gpu_info_);
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Driver may create a compatibility profile context when collect graphics
+ // information on Linux platform. Try to collect graphics information
+ // based on core profile context after disabling platform extensions.
+@@ -396,7 +396,7 @@ bool GpuInit::InitializeAndStartSandbox(base::CommandL
+ return false;
+ }
+ }
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+
+ if (use_swiftshader) {
+ AdjustInfoToSwiftShader();
+@@ -569,7 +569,7 @@ void GpuInit::InitializeInProcess(base::CommandLine* c
+
+ InitializePlatformOverlaySettings(&gpu_info_);
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Driver may create a compatibility profile context when collect graphics
+ // information on Linux platform. Try to collect graphics information
+ // based on core profile context after disabling platform extensions.
+@@ -589,7 +589,7 @@ void GpuInit::InitializeInProcess(base::CommandLine* c
+ }
+ }
+ }
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+
+ if (use_swiftshader) {
+ AdjustInfoToSwiftShader();
diff --git a/devel/electron7/files/patch-gpu_ipc_service_gpu__memory__buffer__factory.cc b/devel/electron7/files/patch-gpu_ipc_service_gpu__memory__buffer__factory.cc
new file mode 100644
index 000000000000..fc095f246635
--- /dev/null
+++ b/devel/electron7/files/patch-gpu_ipc_service_gpu__memory__buffer__factory.cc
@@ -0,0 +1,20 @@
+--- gpu/ipc/service/gpu_memory_buffer_factory.cc.orig 2019-12-12 12:39:44 UTC
++++ gpu/ipc/service/gpu_memory_buffer_factory.cc
+@@ -12,7 +12,7 @@
+ #include "gpu/ipc/service/gpu_memory_buffer_factory_io_surface.h"
+ #endif
+
+-#if defined(OS_LINUX) || defined(OS_FUCHSIA)
++#if defined(OS_LINUX) || defined(OS_FUCHSIA) || defined(OS_BSD)
+ #include "gpu/ipc/service/gpu_memory_buffer_factory_native_pixmap.h"
+ #endif
+
+@@ -34,7 +34,7 @@ GpuMemoryBufferFactory::CreateNativeType(
+ return std::make_unique<GpuMemoryBufferFactoryIOSurface>();
+ #elif defined(OS_ANDROID)
+ return std::make_unique<GpuMemoryBufferFactoryAndroidHardwareBuffer>();
+-#elif defined(OS_LINUX) || defined(OS_FUCHSIA)
++#elif defined(OS_LINUX) || defined(OS_FUCHSIA) || defined(OS_BSD)
+ return std::make_unique<GpuMemoryBufferFactoryNativePixmap>(
+ vulkan_context_provider);
+ #elif defined(OS_WIN)
diff --git a/devel/electron7/files/patch-gpu_ipc_service_gpu__watchdog__thread.cc b/devel/electron7/files/patch-gpu_ipc_service_gpu__watchdog__thread.cc
new file mode 100644
index 000000000000..e27b456da6bd
--- /dev/null
+++ b/devel/electron7/files/patch-gpu_ipc_service_gpu__watchdog__thread.cc
@@ -0,0 +1,76 @@
+--- gpu/ipc/service/gpu_watchdog_thread.cc.orig 2019-12-12 12:39:44 UTC
++++ gpu/ipc/service/gpu_watchdog_thread.cc
+@@ -45,8 +45,10 @@ const int kGpuTimeout = 10000;
+ #endif
+
+ #if defined(USE_X11)
++#if !defined(OS_BSD)
+ const base::FilePath::CharType kTtyFilePath[] =
+ FILE_PATH_LITERAL("/sys/class/tty/tty0/active");
++#endif
+ const unsigned char text[20] = "check";
+ #endif
+
+@@ -68,9 +70,12 @@ GpuWatchdogThreadImplV1::GpuWatchdogThreadImplV1()
+ ,
+ display_(nullptr),
+ window_(0),
+- atom_(x11::None),
++ atom_(x11::None)
++#if !defined(OS_BSD)
++ ,
+ host_tty_(-1)
+ #endif
++#endif
+ {
+ base::subtle::NoBarrier_Store(&awaiting_acknowledge_, false);
+
+@@ -85,7 +90,9 @@ GpuWatchdogThreadImplV1::GpuWatchdogThreadImplV1()
+ #endif
+
+ #if defined(USE_X11)
++#if !defined(OS_BSD)
+ tty_file_ = base::OpenFile(base::FilePath(kTtyFilePath), "r");
++#endif
+ SetupXServer();
+ #endif
+ base::MessageLoopCurrent::Get()->AddTaskObserver(&task_observer_);
+@@ -231,8 +238,10 @@ GpuWatchdogThreadImplV1::~GpuWatchdogThreadImplV1() {
+ base::PowerMonitor::RemoveObserver(this);
+
+ #if defined(USE_X11)
++#if !defined(OS_BSD)
+ if (tty_file_)
+ fclose(tty_file_);
++#endif
+ if (display_) {
+ DCHECK(window_);
+ XDestroyWindow(display_, window_);
+@@ -432,7 +441,7 @@ void GpuWatchdogThreadImplV1::DeliberatelyTerminateToR
+ return;
+ #endif
+
+-#if defined(USE_X11)
++#if defined(USE_X11) && !defined(OS_BSD)
+ // Don't crash if we're not on the TTY of our host X11 server.
+ int active_tty = GetActiveTTY();
+ if (host_tty_ != -1 && active_tty != -1 && host_tty_ != active_tty) {
+@@ -516,7 +525,9 @@ void GpuWatchdogThreadImplV1::SetupXServer() {
+ CopyFromParent, InputOutput, CopyFromParent, 0, nullptr);
+ atom_ = XInternAtom(display_, "CHECK", x11::False);
+ }
++#if !defined(OS_BSD)
+ host_tty_ = GetActiveTTY();
++#endif
+ }
+
+ void GpuWatchdogThreadImplV1::SetupXChangeProp() {
+@@ -616,7 +627,7 @@ base::ThreadTicks GpuWatchdogThreadImplV1::GetWatchedT
+ }
+ #endif
+
+-#if defined(USE_X11)
++#if defined(USE_X11) && !defined(OS_BSD)
+ int GpuWatchdogThreadImplV1::GetActiveTTY() const {
+ char tty_string[8] = {0};
+ if (tty_file_ && !fseek(tty_file_, 0, SEEK_SET) &&
diff --git a/devel/electron7/files/patch-gpu_ipc_service_gpu__watchdog__thread.h b/devel/electron7/files/patch-gpu_ipc_service_gpu__watchdog__thread.h
new file mode 100644
index 000000000000..6fc3a2079206
--- /dev/null
+++ b/devel/electron7/files/patch-gpu_ipc_service_gpu__watchdog__thread.h
@@ -0,0 +1,13 @@
+--- gpu/ipc/service/gpu_watchdog_thread.h.orig 2019-12-12 12:39:44 UTC
++++ gpu/ipc/service/gpu_watchdog_thread.h
+@@ -234,8 +234,10 @@ class GPU_IPC_SERVICE_EXPORT GpuWatchdogThreadImplV1
+ XDisplay* display_;
+ gfx::AcceleratedWidget window_;
+ XAtom atom_;
++#if !defined(OS_BSD)
+ FILE* tty_file_;
+ int host_tty_;
++#endif
+ #endif
+
+ base::WeakPtrFactory<GpuWatchdogThreadImplV1> weak_factory_{this};
diff --git a/devel/electron7/files/patch-gpu_vulkan_vulkan__function__pointers.cc b/devel/electron7/files/patch-gpu_vulkan_vulkan__function__pointers.cc
new file mode 100644
index 000000000000..e485c1c66421
--- /dev/null
+++ b/devel/electron7/files/patch-gpu_vulkan_vulkan__function__pointers.cc
@@ -0,0 +1,32 @@
+--- gpu/vulkan/vulkan_function_pointers.cc.orig 2019-12-12 12:39:44 UTC
++++ gpu/vulkan/vulkan_function_pointers.cc
+@@ -731,7 +731,7 @@ bool VulkanFunctionPointers::BindDeviceFunctionPointer
+ }
+ #endif // defined(OS_ANDROID)
+
+-#if defined(OS_LINUX) || defined(OS_ANDROID)
++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
+ if (gfx::HasExtension(enabled_extensions,
+ VK_KHR_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME)) {
+ vkGetSemaphoreFdKHRFn = reinterpret_cast<PFN_vkGetSemaphoreFdKHR>(
+@@ -750,9 +750,9 @@ bool VulkanFunctionPointers::BindDeviceFunctionPointer
+ return false;
+ }
+ }
+-#endif // defined(OS_LINUX) || defined(OS_ANDROID)
++#endif // defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ if (gfx::HasExtension(enabled_extensions,
+ VK_KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME)) {
+ vkGetMemoryFdKHRFn = reinterpret_cast<PFN_vkGetMemoryFdKHR>(
+@@ -763,7 +763,7 @@ bool VulkanFunctionPointers::BindDeviceFunctionPointer
+ return false;
+ }
+ }
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+
+ #if defined(OS_FUCHSIA)
+ if (gfx::HasExtension(enabled_extensions,
diff --git a/devel/electron7/files/patch-gpu_vulkan_vulkan__function__pointers.h b/devel/electron7/files/patch-gpu_vulkan_vulkan__function__pointers.h
new file mode 100644
index 000000000000..8cc7d380b650
--- /dev/null
+++ b/devel/electron7/files/patch-gpu_vulkan_vulkan__function__pointers.h
@@ -0,0 +1,42 @@
+--- gpu/vulkan/vulkan_function_pointers.h.orig 2019-12-12 12:39:44 UTC
++++ gpu/vulkan/vulkan_function_pointers.h
+@@ -170,14 +170,14 @@ struct VulkanFunctionPointers {
+ vkGetAndroidHardwareBufferPropertiesANDROIDFn = nullptr;
+ #endif // defined(OS_ANDROID)
+
+-#if defined(OS_LINUX) || defined(OS_ANDROID)
++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
+ PFN_vkGetSemaphoreFdKHR vkGetSemaphoreFdKHRFn = nullptr;
+ PFN_vkImportSemaphoreFdKHR vkImportSemaphoreFdKHRFn = nullptr;
+-#endif // defined(OS_LINUX) || defined(OS_ANDROID)
++#endif // defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ PFN_vkGetMemoryFdKHR vkGetMemoryFdKHRFn = nullptr;
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+
+ #if defined(OS_FUCHSIA)
+ PFN_vkImportSemaphoreZirconHandleFUCHSIA
+@@ -356,16 +356,16 @@ struct VulkanFunctionPointers {
+ ->vkGetAndroidHardwareBufferPropertiesANDROIDFn
+ #endif // defined(OS_ANDROID)
+
+-#if defined(OS_LINUX) || defined(OS_ANDROID)
++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
+ #define vkGetSemaphoreFdKHR \
+ gpu::GetVulkanFunctionPointers()->vkGetSemaphoreFdKHRFn
+ #define vkImportSemaphoreFdKHR \
+ gpu::GetVulkanFunctionPointers()->vkImportSemaphoreFdKHRFn
+-#endif // defined(OS_LINUX) || defined(OS_ANDROID)
++#endif // defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #define vkGetMemoryFdKHR gpu::GetVulkanFunctionPointers()->vkGetMemoryFdKHRFn
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+
+ #if defined(OS_FUCHSIA)
+ #define vkImportSemaphoreZirconHandleFUCHSIA \
diff --git a/devel/electron7/files/patch-headless_lib_browser_headless__content__browser__client.cc b/devel/electron7/files/patch-headless_lib_browser_headless__content__browser__client.cc
new file mode 100644
index 000000000000..3375ff9ff40b
--- /dev/null
+++ b/devel/electron7/files/patch-headless_lib_browser_headless__content__browser__client.cc
@@ -0,0 +1,20 @@
+--- headless/lib/browser/headless_content_browser_client.cc.orig 2019-12-12 12:39:44 UTC
++++ headless/lib/browser/headless_content_browser_client.cc
+@@ -165,7 +165,7 @@ HeadlessContentBrowserClient::GetGeneratedCodeCacheSet
+ return content::GeneratedCodeCacheSettings(true, 0, context->GetPath());
+ }
+
+-#if defined(OS_POSIX) && !defined(OS_MACOSX)
++#if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_BSD)
+ void HeadlessContentBrowserClient::GetAdditionalMappedFilesForChildProcess(
+ const base::CommandLine& command_line,
+ int child_process_id,
+@@ -176,7 +176,7 @@ void HeadlessContentBrowserClient::GetAdditionalMapped
+ mappings->Share(service_manager::kCrashDumpSignal, crash_signal_fd);
+ #endif // defined(HEADLESS_USE_BREAKPAD)
+ }
+-#endif // defined(OS_POSIX) && !defined(OS_MACOSX)
++#endif // defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_BSD)
+
+ void HeadlessContentBrowserClient::AppendExtraCommandLineSwitches(
+ base::CommandLine* command_line,
diff --git a/devel/electron7/files/patch-headless_lib_browser_headless__content__browser__client.h b/devel/electron7/files/patch-headless_lib_browser_headless__content__browser__client.h
new file mode 100644
index 000000000000..f1c3e9cc327e
--- /dev/null
+++ b/devel/electron7/files/patch-headless_lib_browser_headless__content__browser__client.h
@@ -0,0 +1,11 @@
+--- headless/lib/browser/headless_content_browser_client.h.orig 2019-12-12 12:39:44 UTC
++++ headless/lib/browser/headless_content_browser_client.h
+@@ -33,7 +33,7 @@ class HeadlessContentBrowserClient : public content::C
+ ::storage::OptionalQuotaSettingsCallback callback) override;
+ content::GeneratedCodeCacheSettings GetGeneratedCodeCacheSettings(
+ content::BrowserContext* context) override;
+-#if defined(OS_POSIX) && !defined(OS_MACOSX)
++#if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_BSD)
+ void GetAdditionalMappedFilesForChildProcess(
+ const base::CommandLine& command_line,
+ int child_process_id,
diff --git a/devel/electron7/files/patch-headless_lib_browser_headless__request__context__manager.cc b/devel/electron7/files/patch-headless_lib_browser_headless__request__context__manager.cc
new file mode 100644
index 000000000000..a1bbf187235b
--- /dev/null
+++ b/devel/electron7/files/patch-headless_lib_browser_headless__request__context__manager.cc
@@ -0,0 +1,29 @@
+--- headless/lib/browser/headless_request_context_manager.cc.orig 2019-12-12 12:39:44 UTC
++++ headless/lib/browser/headless_request_context_manager.cc
+@@ -25,7 +25,7 @@ namespace headless {
+
+ namespace {
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ static char kProductName[] = "HeadlessChrome";
+ #endif
+
+@@ -55,7 +55,7 @@ net::NetworkTrafficAnnotationTag GetProxyConfigTraffic
+ return traffic_annotation;
+ }
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ ::network::mojom::CryptConfigPtr BuildCryptConfigOnce(
+ const base::FilePath& user_data_path) {
+ static bool done_once = false;
+@@ -195,7 +195,7 @@ HeadlessRequestContextManager::HeadlessRequestContextM
+ proxy_config_monitor_ = std::make_unique<HeadlessProxyConfigMonitor>(
+ base::ThreadTaskRunnerHandle::Get());
+ }
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ auto crypt_config = BuildCryptConfigOnce(user_data_path_);
+ if (crypt_config)
+ content::GetNetworkService()->SetCryptConfig(std::move(crypt_config));
diff --git a/devel/electron7/files/patch-headless_lib_headless__content__main__delegate.cc b/devel/electron7/files/patch-headless_lib_headless__content__main__delegate.cc
new file mode 100644
index 000000000000..fd49de95c1fe
--- /dev/null
+++ b/devel/electron7/files/patch-headless_lib_headless__content__main__delegate.cc
@@ -0,0 +1,20 @@
+--- headless/lib/headless_content_main_delegate.cc.orig 2019-12-12 12:39:44 UTC
++++ headless/lib/headless_content_main_delegate.cc
+@@ -328,7 +328,7 @@ int HeadlessContentMainDelegate::RunProcess(
+ }
+ #endif // !defined(CHROME_MULTIPLE_DLL_CHILD)
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ void SIGTERMProfilingShutdown(int signal) {
+ content::Profiling::Stop();
+ struct sigaction sigact;
+@@ -363,7 +363,7 @@ void HeadlessContentMainDelegate::ZygoteForked() {
+ breakpad::InitCrashReporter(process_type);
+ #endif
+ }
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+
+ // static
+ HeadlessContentMainDelegate* HeadlessContentMainDelegate::GetInstance() {
diff --git a/devel/electron7/files/patch-headless_lib_headless__content__main__delegate.h b/devel/electron7/files/patch-headless_lib_headless__content__main__delegate.h
new file mode 100644
index 000000000000..72046dbeb6ef
--- /dev/null
+++ b/devel/electron7/files/patch-headless_lib_headless__content__main__delegate.h
@@ -0,0 +1,11 @@
+--- headless/lib/headless_content_main_delegate.h.orig 2019-12-12 12:39:44 UTC
++++ headless/lib/headless_content_main_delegate.h
+@@ -58,7 +58,7 @@ class HEADLESS_EXPORT HeadlessContentMainDelegate
+
+ HeadlessBrowserImpl* browser() const { return browser_.get(); }
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ void ZygoteForked() override;
+ #endif
+
diff --git a/devel/electron7/files/patch-headless_lib_headless__macros.h b/devel/electron7/files/patch-headless_lib_headless__macros.h
new file mode 100644
index 000000000000..84c8721dfba3
--- /dev/null
+++ b/devel/electron7/files/patch-headless_lib_headless__macros.h
@@ -0,0 +1,13 @@
+--- headless/lib/headless_macros.h.orig 2019-12-12 12:39:44 UTC
++++ headless/lib/headless_macros.h
+@@ -7,8 +7,8 @@
+
+ #include "build/build_config.h"
+
+-#if defined(OS_POSIX) && !defined(OS_MACOSX)
++#if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_BSD)
+ #define HEADLESS_USE_BREAKPAD
+-#endif // defined(OS_POSIX) && !defined(OS_MACOSX)
++#endif // defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_BSD)
+
+ #endif // HEADLESS_LIB_HEADLESS_MACROS_H_
diff --git a/devel/electron7/files/patch-ipc_ipc__channel.h b/devel/electron7/files/patch-ipc_ipc__channel.h
new file mode 100644
index 000000000000..87355b1bb3f6
--- /dev/null
+++ b/devel/electron7/files/patch-ipc_ipc__channel.h
@@ -0,0 +1,11 @@
+--- ipc/ipc_channel.h.orig 2019-12-12 12:39:49 UTC
++++ ipc/ipc_channel.h
+@@ -256,7 +256,7 @@ class COMPONENT_EXPORT(IPC) Channel : public Sender {
+ static std::string GenerateUniqueRandomChannelID();
+ #endif
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Sandboxed processes live in a PID namespace, so when sending the IPC hello
+ // message from client to server we need to send the PID from the global
+ // PID namespace.
diff --git a/devel/electron7/files/patch-ipc_ipc__channel__common.cc b/devel/electron7/files/patch-ipc_ipc__channel__common.cc
new file mode 100644
index 000000000000..67d5c69add36
--- /dev/null
+++ b/devel/electron7/files/patch-ipc_ipc__channel__common.cc
@@ -0,0 +1,20 @@
+--- ipc/ipc_channel_common.cc.orig 2019-12-12 12:39:49 UTC
++++ ipc/ipc_channel_common.cc
+@@ -9,7 +9,7 @@
+
+ namespace IPC {
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+
+ namespace {
+ int g_global_pid = 0;
+@@ -25,7 +25,7 @@ int Channel::GetGlobalPid() {
+ return g_global_pid;
+ }
+
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+
+ // static
+ std::unique_ptr<Channel> Channel::CreateClient(
diff --git a/devel/electron7/files/patch-ipc_ipc__channel__mojo.cc b/devel/electron7/files/patch-ipc_ipc__channel__mojo.cc
new file mode 100644
index 000000000000..77912615d377
--- /dev/null
+++ b/devel/electron7/files/patch-ipc_ipc__channel__mojo.cc
@@ -0,0 +1,15 @@
+--- ipc/ipc_channel_mojo.cc.orig 2019-12-12 12:39:49 UTC
++++ ipc/ipc_channel_mojo.cc
+@@ -64,10 +64,10 @@ class MojoChannelFactory : public ChannelFactory {
+ };
+
+ base::ProcessId GetSelfPID() {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ if (int global_pid = Channel::GetGlobalPid())
+ return global_pid;
+-#endif // OS_LINUX
++#endif // OS_LINUX || OS_BSD
+ #if defined(OS_NACL)
+ return -1;
+ #else
diff --git a/devel/electron7/files/patch-ipc_ipc__message__utils.cc b/devel/electron7/files/patch-ipc_ipc__message__utils.cc
new file mode 100644
index 000000000000..529f9fe4cbdb
--- /dev/null
+++ b/devel/electron7/files/patch-ipc_ipc__message__utils.cc
@@ -0,0 +1,11 @@
+--- ipc/ipc_message_utils.cc.orig 2019-12-12 12:39:49 UTC
++++ ipc/ipc_message_utils.cc
+@@ -355,7 +355,7 @@ void ParamTraits<unsigned int>::Log(const param_type&
+ l->append(base::NumberToString(p));
+ }
+
+-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_FUCHSIA) || \
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_FUCHSIA) || defined(OS_BSD) || \
+ (defined(OS_ANDROID) && defined(ARCH_CPU_64_BITS))
+ void ParamTraits<long>::Log(const param_type& p, std::string* l) {
+ l->append(base::NumberToString(p));
diff --git a/devel/electron7/files/patch-ipc_ipc__message__utils.h b/devel/electron7/files/patch-ipc_ipc__message__utils.h
new file mode 100644
index 000000000000..d263a3fbb79a
--- /dev/null
+++ b/devel/electron7/files/patch-ipc_ipc__message__utils.h
@@ -0,0 +1,11 @@
+--- ipc/ipc_message_utils.h.orig 2019-12-12 12:39:49 UTC
++++ ipc/ipc_message_utils.h
+@@ -210,7 +210,7 @@ struct ParamTraits<unsigned int> {
+ // 3) Android 64 bit and Fuchsia also have int64_t typedef'd to long.
+ // Since we want to support Android 32<>64 bit IPC, as long as we don't have
+ // these traits for 32 bit ARM then that'll catch any errors.
+-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_FUCHSIA) || \
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_FUCHSIA) || defined(OS_BSD) || \
+ (defined(OS_ANDROID) && defined(ARCH_CPU_64_BITS))
+ template <>
+ struct ParamTraits<long> {
diff --git a/devel/electron7/files/patch-media_BUILD.gn b/devel/electron7/files/patch-media_BUILD.gn
new file mode 100644
index 000000000000..5cab64299525
--- /dev/null
+++ b/devel/electron7/files/patch-media_BUILD.gn
@@ -0,0 +1,12 @@
+--- media/BUILD.gn.orig 2019-12-12 12:39:49 UTC
++++ media/BUILD.gn
+@@ -62,6 +62,9 @@ config("media_config") {
+ defines += [ "DLOPEN_PULSEAUDIO" ]
+ }
+ }
++ if (use_sndio) {
++ defines += [ "USE_SNDIO" ]
++ }
+ if (use_cras) {
+ defines += [ "USE_CRAS" ]
+ }
diff --git a/devel/electron7/files/patch-media_audio_BUILD.gn b/devel/electron7/files/patch-media_audio_BUILD.gn
new file mode 100644
index 000000000000..d63f3fe7d045
--- /dev/null
+++ b/devel/electron7/files/patch-media_audio_BUILD.gn
@@ -0,0 +1,22 @@
+--- media/audio/BUILD.gn.orig 2019-12-16 13:32:58 UTC
++++ media/audio/BUILD.gn
+@@ -240,8 +240,18 @@ source_set("audio") {
+ deps += [ "//media/base/android:media_jni_headers" ]
+ }
+
+- if (is_linux) {
++ if (is_linux && !use_sndio) {
+ sources += [ "linux/audio_manager_linux.cc" ]
++ }
++ if (use_sndio) {
++ libs += [ "sndio" ]
++ sources += [
++ "openbsd/audio_manager_openbsd.cc",
++ "sndio/sndio_input.cc",
++ "sndio/sndio_input.h",
++ "sndio/sndio_output.cc",
++ "sndio/sndio_output.h"
++ ]
+ }
+
+ if (use_alsa) {
diff --git a/devel/electron7/files/patch-media_audio_alsa_audio__manager__alsa.cc b/devel/electron7/files/patch-media_audio_alsa_audio__manager__alsa.cc
new file mode 100644
index 000000000000..1d39c6f2aea4
--- /dev/null
+++ b/devel/electron7/files/patch-media_audio_alsa_audio__manager__alsa.cc
@@ -0,0 +1,54 @@
+--- media/audio/alsa/audio_manager_alsa.cc.orig 2019-12-12 12:39:49 UTC
++++ media/audio/alsa/audio_manager_alsa.cc
+@@ -92,7 +92,9 @@ void AudioManagerAlsa::GetAlsaAudioDevices(StreamType
+ int card = -1;
+
+ // Loop through the sound cards to get ALSA device hints.
++#if defined(OS_LINUX)
+ while (!wrapper_->CardNext(&card) && card >= 0) {
++#endif
+ void** hints = NULL;
+ int error = wrapper_->DeviceNameHint(card, kPcmInterfaceName, &hints);
+ if (!error) {
+@@ -104,7 +106,9 @@ void AudioManagerAlsa::GetAlsaAudioDevices(StreamType
+ DLOG(WARNING) << "GetAlsaAudioDevices: unable to get device hints: "
+ << wrapper_->StrError(error);
+ }
++#if defined(OS_LINUX)
+ }
++#endif
+ }
+
+ void AudioManagerAlsa::GetAlsaDevicesInfo(AudioManagerAlsa::StreamType type,
+@@ -187,7 +191,11 @@ bool AudioManagerAlsa::IsAlsaDeviceAvailable(
+ // goes through software conversion if needed (e.g. incompatible
+ // sample rate).
+ // TODO(joi): Should we prefer "hw" instead?
++#ifdef OS_LINUX
+ static const char kDeviceTypeDesired[] = "plughw";
++#else
++ static const char kDeviceTypeDesired[] = "plug";
++#endif
+ return strncmp(kDeviceTypeDesired, device_name,
+ base::size(kDeviceTypeDesired) - 1) == 0;
+ }
+@@ -209,7 +217,9 @@ bool AudioManagerAlsa::HasAnyAlsaAudioDevice(
+ // Loop through the sound cards.
+ // Don't use snd_device_name_hint(-1,..) since there is a access violation
+ // inside this ALSA API with libasound.so.2.0.0.
++#if defined(OS_LINUX)
+ while (!wrapper_->CardNext(&card) && (card >= 0) && !has_device) {
++#endif
+ int error = wrapper_->DeviceNameHint(card, kPcmInterfaceName, &hints);
+ if (!error) {
+ for (void** hint_iter = hints; *hint_iter != NULL; hint_iter++) {
+@@ -233,7 +243,9 @@ bool AudioManagerAlsa::HasAnyAlsaAudioDevice(
+ DLOG(WARNING) << "HasAnyAudioDevice: unable to get device hints: "
+ << wrapper_->StrError(error);
+ }
++#if defined(OS_LINUX)
+ }
++#endif
+
+ return has_device;
+ }
diff --git a/devel/electron7/files/patch-media_audio_audio__input__device.cc b/devel/electron7/files/patch-media_audio_audio__input__device.cc
new file mode 100644
index 000000000000..a52543952fca
--- /dev/null
+++ b/devel/electron7/files/patch-media_audio_audio__input__device.cc
@@ -0,0 +1,11 @@
+--- media/audio/audio_input_device.cc.orig 2019-12-12 12:39:49 UTC
++++ media/audio/audio_input_device.cc
+@@ -248,7 +248,7 @@ void AudioInputDevice::OnStreamCreated(
+ // also a risk of false positives if we are suspending when starting the stream
+ // here. See comments in AliveChecker and PowerObserverHelper for details and
+ // todos.
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ const bool stop_at_first_alive_notification = true;
+ const bool pause_check_during_suspend = false;
+ #else
diff --git a/devel/electron7/files/patch-media_audio_audio__manager.cc b/devel/electron7/files/patch-media_audio_audio__manager.cc
new file mode 100644
index 000000000000..2d929c5f8e4a
--- /dev/null
+++ b/devel/electron7/files/patch-media_audio_audio__manager.cc
@@ -0,0 +1,29 @@
+--- media/audio/audio_manager.cc.orig 2019-12-12 12:39:49 UTC
++++ media/audio/audio_manager.cc
+@@ -48,7 +48,7 @@ class AudioManagerHelper {
+ }
+ #endif
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ void set_app_name(const std::string& app_name) { app_name_ = app_name; }
+ const std::string& app_name() const { return app_name_; }
+ #endif
+@@ -59,7 +59,7 @@ class AudioManagerHelper {
+ std::unique_ptr<base::win::ScopedCOMInitializer> com_initializer_for_testing_;
+ #endif
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ std::string app_name_;
+ #endif
+
+@@ -128,7 +128,7 @@ std::unique_ptr<AudioManager> AudioManager::CreateForT
+ return Create(std::move(audio_thread), GetHelper()->fake_log_factory());
+ }
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // static
+ void AudioManager::SetGlobalAppName(const std::string& app_name) {
+ GetHelper()->set_app_name(app_name);
diff --git a/devel/electron7/files/patch-media_audio_audio__manager.h b/devel/electron7/files/patch-media_audio_audio__manager.h
new file mode 100644
index 000000000000..cdf694e1f2e2
--- /dev/null
+++ b/devel/electron7/files/patch-media_audio_audio__manager.h
@@ -0,0 +1,11 @@
+--- media/audio/audio_manager.h.orig 2019-12-12 12:39:49 UTC
++++ media/audio/audio_manager.h
+@@ -60,7 +60,7 @@ class MEDIA_EXPORT AudioManager {
+ static std::unique_ptr<AudioManager> CreateForTesting(
+ std::unique_ptr<AudioThread> audio_thread);
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Sets the name of the audio source as seen by external apps. Only actually
+ // used with PulseAudio as of this writing.
+ static void SetGlobalAppName(const std::string& app_name);
diff --git a/devel/electron7/files/patch-media_audio_audio__output__proxy__unittest.cc b/devel/electron7/files/patch-media_audio_audio__output__proxy__unittest.cc
new file mode 100644
index 000000000000..f6ac62b01681
--- /dev/null
+++ b/devel/electron7/files/patch-media_audio_audio__output__proxy__unittest.cc
@@ -0,0 +1,11 @@
+--- media/audio/audio_output_proxy_unittest.cc.orig 2019-12-12 12:39:49 UTC
++++ media/audio/audio_output_proxy_unittest.cc
+@@ -412,7 +412,7 @@ class AudioOutputProxyTest : public testing::Test {
+ // |stream| is closed at this point. Start() should reopen it again.
+ EXPECT_CALL(manager(), MakeAudioOutputStream(_, _, _))
+ .Times(2)
+- .WillRepeatedly(Return(reinterpret_cast<AudioOutputStream*>(NULL)));
++ .WillRepeatedly(Return(static_cast<AudioOutputStream*>(NULL)));
+
+ EXPECT_CALL(callback_, OnError()).Times(2);
+
diff --git a/devel/electron7/files/patch-media_audio_pulse_pulse.sigs b/devel/electron7/files/patch-media_audio_pulse_pulse.sigs
new file mode 100644
index 000000000000..5068c1e29ec9
--- /dev/null
+++ b/devel/electron7/files/patch-media_audio_pulse_pulse.sigs
@@ -0,0 +1,46 @@
+--- media/audio/pulse/pulse.sigs.orig 2019-12-12 12:39:49 UTC
++++ media/audio/pulse/pulse.sigs
+@@ -24,11 +24,11 @@ pa_operation* pa_context_get_source_info_by_index(pa_c
+ pa_operation* pa_context_get_source_info_by_name(pa_context* c, const char* name, pa_source_info_cb_t cb, void *userdata);
+ pa_operation* pa_context_get_source_info_list(pa_context* c, pa_source_info_cb_t cb, void* userdata);
+ pa_operation* pa_context_get_sink_info_list(pa_context* c, pa_sink_info_cb_t cb, void* userdata);
+-pa_context_state_t pa_context_get_state(pa_context* c);
++pa_context_state_t pa_context_get_state(const pa_context *c);
+ pa_context* pa_context_new(pa_mainloop_api* mainloop, const char* name);
+ pa_operation* pa_context_set_source_volume_by_index(pa_context* c, uint32_t idx, const pa_cvolume* volume, pa_context_success_cb_t cb, void* userdata);
+ void pa_context_set_state_callback(pa_context* c, pa_context_notify_cb_t cb, void* userdata);
+-pa_operation_state_t pa_operation_get_state(pa_operation* o);
++pa_operation_state_t pa_operation_get_state(const pa_operation* o);
+ void pa_context_unref(pa_context* c);
+ void pa_operation_unref(pa_operation* o);
+ int pa_stream_begin_write(pa_stream* p, void** data, size_t* nbytes);
+@@ -38,23 +38,23 @@ pa_operation* pa_stream_cork(pa_stream* s, int b, pa_s
+ int pa_stream_disconnect(pa_stream* s);
+ int pa_stream_drop(pa_stream *p);
+ pa_operation* pa_stream_flush(pa_stream* s, pa_stream_success_cb_t cb, void* userdata);
+-uint32_t pa_stream_get_device_index(pa_stream* s);
++uint32_t pa_stream_get_device_index(const pa_stream* s);
+ int pa_stream_get_latency(pa_stream* s, pa_usec_t* r_usec, int* negative);
+-pa_stream_state_t pa_stream_get_state(pa_stream* p);
++pa_stream_state_t pa_stream_get_state(const pa_stream* p);
+ pa_stream* pa_stream_new(pa_context* c, const char* name, const pa_sample_spec* ss, const pa_channel_map * map);
+ pa_stream* pa_stream_new_with_proplist(pa_context* c, const char* name, const pa_sample_spec* ss, const pa_channel_map* map, pa_proplist* p);
+ pa_proplist* pa_proplist_new(void);
+-int pa_proplist_contains(pa_proplist* p, const char* key);
++int pa_proplist_contains(const pa_proplist* p, const char* key);
+ void pa_proplist_free(pa_proplist* p);
+-const char* pa_proplist_gets(pa_proplist* p, const char* key);
++const char* pa_proplist_gets(const pa_proplist* p, const char* key);
+ int pa_proplist_sets(pa_proplist* p, const char* key, const char* value);
+-size_t pa_stream_readable_size(pa_stream *p);
++size_t pa_stream_readable_size(const pa_stream *p);
+ int pa_stream_peek(pa_stream* p, const void** data, size_t* nbytes);
+ void pa_stream_set_read_callback(pa_stream* p, pa_stream_request_cb_t cb, void* userdata);
+ void pa_stream_set_state_callback(pa_stream* s, pa_stream_notify_cb_t cb, void* userdata);
+ int pa_stream_write(pa_stream* p, const void* data, size_t nbytes, pa_free_cb_t free_cb, int64_t offset, pa_seek_mode_t seek);
+ void pa_stream_set_write_callback(pa_stream *p, pa_stream_request_cb_t cb, void *userdata);
+ void pa_stream_unref(pa_stream* s);
+-int pa_context_errno(pa_context *c);
++int pa_context_errno(const pa_context *c);
+ const char* pa_strerror(int error);
+ pa_cvolume* pa_cvolume_set(pa_cvolume* a, unsigned channels, pa_volume_t v);
diff --git a/devel/electron7/files/patch-media_base_audio__latency.cc b/devel/electron7/files/patch-media_base_audio__latency.cc
new file mode 100644
index 000000000000..51d27693df3a
--- /dev/null
+++ b/devel/electron7/files/patch-media_base_audio__latency.cc
@@ -0,0 +1,11 @@
+--- media/base/audio_latency.cc.orig 2019-12-12 12:39:49 UTC
++++ media/base/audio_latency.cc
+@@ -106,7 +106,7 @@ int AudioLatency::GetRtcBufferSize(int sample_rate, in
+ return frames_per_buffer;
+ }
+
+-#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_FUCHSIA)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_FUCHSIA) || defined(OS_BSD)
+ // On Linux, MacOS and Fuchsia, the low level IO implementations on the
+ // browser side supports all buffer size the clients want. We use the native
+ // peer connection buffer size (10ms) to achieve best possible performance.
diff --git a/devel/electron7/files/patch-media_base_scopedfd__helper.h b/devel/electron7/files/patch-media_base_scopedfd__helper.h
new file mode 100644
index 000000000000..6e186e89ee0e
--- /dev/null
+++ b/devel/electron7/files/patch-media_base_scopedfd__helper.h
@@ -0,0 +1,23 @@
+--- media/base/scopedfd_helper.h.orig 2019-12-12 12:39:49 UTC
++++ media/base/scopedfd_helper.h
+@@ -11,17 +11,17 @@
+ namespace media {
+
+ // Theoretically, we can test on defined(OS_POSIX) || defined(OS_FUCHSIA), but
+-// since the only current user is V4L2 we are limiting the scope to OS_LINUX so
++// since the only current user is V4L2 we are limiting the scope to OS_LINUX || OS_BSD so
+ // the binary size does not inflate on non-using systems. Feel free to adapt
+ // this and BUILD.gn as our needs evolve.
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+
+ // Return a new vector containing duplicates of |fds|, or PCHECKs in case of an
+ // error.
+ MEDIA_EXPORT std::vector<base::ScopedFD> DuplicateFDs(
+ const std::vector<base::ScopedFD>& fds);
+
+-#endif // OS_LINUX
++#endif // OS_LINUX || OS_BSD
+
+ } // namespace media
+
diff --git a/devel/electron7/files/patch-media_base_video__frame.cc b/devel/electron7/files/patch-media_base_video__frame.cc
new file mode 100644
index 000000000000..29b8bca174c6
--- /dev/null
+++ b/devel/electron7/files/patch-media_base_video__frame.cc
@@ -0,0 +1,74 @@
+--- media/base/video_frame.cc.orig 2019-12-12 12:39:49 UTC
++++ media/base/video_frame.cc
+@@ -52,7 +52,7 @@ static std::string StorageTypeToString(
+ return "OWNED_MEMORY";
+ case VideoFrame::STORAGE_SHMEM:
+ return "SHMEM";
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ case VideoFrame::STORAGE_DMABUFS:
+ return "DMABUFS";
+ #endif
+@@ -67,7 +67,7 @@ static std::string StorageTypeToString(
+ // static
+ bool VideoFrame::IsStorageTypeMappable(VideoFrame::StorageType storage_type) {
+ return
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // This is not strictly needed but makes explicit that, at VideoFrame
+ // level, DmaBufs are not mappable from userspace.
+ storage_type != VideoFrame::STORAGE_DMABUFS &&
+@@ -185,7 +185,7 @@ static base::Optional<VideoFrameLayout> GetDefaultLayo
+ return VideoFrameLayout::CreateWithPlanes(format, coded_size, planes);
+ }
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // This class allows us to embed a vector<ScopedFD> into a scoped_refptr, and
+ // thus to have several VideoFrames share the same set of DMABUF FDs.
+ class VideoFrame::DmabufHolder
+@@ -203,7 +203,7 @@ class VideoFrame::DmabufHolder
+ friend class base::RefCountedThreadSafe<DmabufHolder>;
+ ~DmabufHolder() = default;
+ };
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+
+ // static
+ bool VideoFrame::IsValidConfig(VideoPixelFormat format,
+@@ -468,7 +468,7 @@ scoped_refptr<VideoFrame> VideoFrame::WrapExternalYuva
+ return frame;
+ }
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // static
+ scoped_refptr<VideoFrame> VideoFrame::WrapExternalDmabufs(
+ const VideoFrameLayout& layout,
+@@ -604,7 +604,7 @@ scoped_refptr<VideoFrame> VideoFrame::WrapVideoFrame(
+ }
+ }
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ DCHECK(frame.dmabuf_fds_);
+ // If there are any |dmabuf_fds_| plugged in, we should refer them too.
+ wrapping_frame->dmabuf_fds_ = frame.dmabuf_fds_;
+@@ -911,7 +911,7 @@ VideoFrame::mailbox_holder(size_t texture_index) const
+ return mailbox_holders_[texture_index];
+ }
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ const std::vector<base::ScopedFD>& VideoFrame::DmabufFds() const {
+ DCHECK_EQ(storage_type_, STORAGE_DMABUFS);
+
+@@ -986,7 +986,7 @@ VideoFrame::VideoFrame(const VideoFrameLayout& layout,
+ storage_type_(storage_type),
+ visible_rect_(Intersection(visible_rect, gfx::Rect(layout.coded_size()))),
+ natural_size_(natural_size),
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ dmabuf_fds_(base::MakeRefCounted<DmabufHolder>()),
+ #endif
+ timestamp_(timestamp),
diff --git a/devel/electron7/files/patch-media_base_video__frame.h b/devel/electron7/files/patch-media_base_video__frame.h
new file mode 100644
index 000000000000..a7b5f7f04fe9
--- /dev/null
+++ b/devel/electron7/files/patch-media_base_video__frame.h
@@ -0,0 +1,50 @@
+--- media/base/video_frame.h.orig 2019-12-12 12:39:49 UTC
++++ media/base/video_frame.h
+@@ -39,9 +39,9 @@
+ #include "base/mac/scoped_cftyperef.h"
+ #endif // defined(OS_MACOSX)
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include "base/files/scoped_file.h"
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+
+ namespace media {
+
+@@ -76,7 +76,7 @@ class MEDIA_EXPORT VideoFrame : public base::RefCounte
+ STORAGE_UNOWNED_MEMORY = 2, // External, non owned data pointers.
+ STORAGE_OWNED_MEMORY = 3, // VideoFrame has allocated its own data buffer.
+ STORAGE_SHMEM = 4, // Backed by unsafe (writable) shared memory.
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // TODO(mcasas): Consider turning this type into STORAGE_NATIVE
+ // based on the idea of using this same enum value for both DMA
+ // buffers on Linux and CVPixelBuffers on Mac (which currently use
+@@ -229,7 +229,7 @@ class MEDIA_EXPORT VideoFrame : public base::RefCounte
+ uint8_t* a_data,
+ base::TimeDelta timestamp);
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Wraps provided dmabufs
+ // (https://www.kernel.org/doc/html/latest/driver-api/dma-buf.html) with a
+ // VideoFrame. The frame will take ownership of |dmabuf_fds|, and will
+@@ -444,7 +444,7 @@ class MEDIA_EXPORT VideoFrame : public base::RefCounte
+ // mailbox, the caller must wait for the included sync point.
+ const gpu::MailboxHolder& mailbox_holder(size_t texture_index) const;
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Returns a vector containing the backing DmaBufs for this frame. The number
+ // of returned DmaBufs will be equal or less than the number of planes of
+ // the frame. If there are less, this means that the last FD contains the
+@@ -630,7 +630,7 @@ class MEDIA_EXPORT VideoFrame : public base::RefCounte
+ base::UnsafeSharedMemoryRegion owned_shm_region_;
+ base::WritableSharedMemoryMapping owned_shm_mapping_;
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ class DmabufHolder;
+
+ // Dmabufs for the frame, used when storage is STORAGE_DMABUFS. Size is either
diff --git a/devel/electron7/files/patch-media_capture_video_create__video__capture__device__factory.cc b/devel/electron7/files/patch-media_capture_video_create__video__capture__device__factory.cc
new file mode 100644
index 000000000000..c0d9f95aec73
--- /dev/null
+++ b/devel/electron7/files/patch-media_capture_video_create__video__capture__device__factory.cc
@@ -0,0 +1,20 @@
+--- media/capture/video/create_video_capture_device_factory.cc.orig 2019-12-12 12:39:49 UTC
++++ media/capture/video/create_video_capture_device_factory.cc
+@@ -10,7 +10,7 @@
+ #include "media/capture/video/fake_video_capture_device_factory.h"
+ #include "media/capture/video/file_video_capture_device_factory.h"
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ #include "media/capture/video/linux/video_capture_device_factory_linux.h"
+ #elif defined(OS_CHROMEOS)
+ #include "media/capture/video/chromeos/camera_app_device_bridge_impl.h"
+@@ -82,7 +82,7 @@ CreateChromeOSVideoCaptureDeviceFactory(
+ std::unique_ptr<VideoCaptureDeviceFactory>
+ CreatePlatformSpecificVideoCaptureDeviceFactory(
+ scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner) {
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ return std::make_unique<VideoCaptureDeviceFactoryLinux>(ui_task_runner);
+ #elif defined(OS_CHROMEOS)
+ return CreateChromeOSVideoCaptureDeviceFactory(ui_task_runner, {});
diff --git a/devel/electron7/files/patch-media_capture_video_fake__video__capture__device__factory.cc b/devel/electron7/files/patch-media_capture_video_fake__video__capture__device__factory.cc
new file mode 100644
index 000000000000..d87798ff4809
--- /dev/null
+++ b/devel/electron7/files/patch-media_capture_video_fake__video__capture__device__factory.cc
@@ -0,0 +1,11 @@
+--- media/capture/video/fake_video_capture_device_factory.cc.orig 2019-12-12 12:39:49 UTC
++++ media/capture/video/fake_video_capture_device_factory.cc
+@@ -205,7 +205,7 @@ void FakeVideoCaptureDeviceFactory::GetDeviceDescripto
+ for (const auto& entry : devices_config_) {
+ device_descriptors->emplace_back(
+ base::StringPrintf("fake_device_%d", entry_index), entry.device_id,
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ VideoCaptureApi::LINUX_V4L2_SINGLE_PLANE
+ #elif defined(OS_MACOSX)
+ VideoCaptureApi::MACOSX_AVFOUNDATION
diff --git a/devel/electron7/files/patch-media_capture_video_file__video__capture__device__factory.cc b/devel/electron7/files/patch-media_capture_video_file__video__capture__device__factory.cc
new file mode 100644
index 000000000000..783db98c98ce
--- /dev/null
+++ b/devel/electron7/files/patch-media_capture_video_file__video__capture__device__factory.cc
@@ -0,0 +1,11 @@
+--- media/capture/video/file_video_capture_device_factory.cc.orig 2019-12-12 12:39:49 UTC
++++ media/capture/video/file_video_capture_device_factory.cc
+@@ -54,7 +54,7 @@ void FileVideoCaptureDeviceFactory::GetDeviceDescripto
+ #elif defined(OS_MACOSX)
+ command_line_file_path.value(), kFileVideoCaptureDeviceName,
+ VideoCaptureApi::MACOSX_AVFOUNDATION
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ command_line_file_path.value(), kFileVideoCaptureDeviceName,
+ VideoCaptureApi::LINUX_V4L2_SINGLE_PLANE
+ #else
diff --git a/devel/electron7/files/patch-media_capture_video_linux_v4l2__capture__delegate.cc b/devel/electron7/files/patch-media_capture_video_linux_v4l2__capture__delegate.cc
new file mode 100644
index 000000000000..68c2683711f7
--- /dev/null
+++ b/devel/electron7/files/patch-media_capture_video_linux_v4l2__capture__delegate.cc
@@ -0,0 +1,26 @@
+--- media/capture/video/linux/v4l2_capture_delegate.cc.orig 2019-12-12 12:39:49 UTC
++++ media/capture/video/linux/v4l2_capture_delegate.cc
+@@ -4,8 +4,10 @@
+
+ #include "media/capture/video/linux/v4l2_capture_delegate.h"
+
++#if !defined(OS_BSD)
+ #include <linux/version.h>
+ #include <linux/videodev2.h>
++#endif
+ #include <poll.h>
+ #include <sys/fcntl.h>
+ #include <sys/ioctl.h>
+@@ -24,10 +26,10 @@
+
+ using media::mojom::MeteringMode;
+
+-#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 6, 0)
++// #if LINUX_VERSION_CODE < KERNEL_VERSION(4, 6, 0)
+ // 16 bit depth, Realsense F200.
+ #define V4L2_PIX_FMT_Z16 v4l2_fourcc('Z', '1', '6', ' ')
+-#endif
++// #endif
+
+ // TODO(aleksandar.stojiljkovic): Wrap this with kernel version check once the
+ // format is introduced to kernel.
diff --git a/devel/electron7/files/patch-media_capture_video_linux_video__capture__device__factory__linux.cc b/devel/electron7/files/patch-media_capture_video_linux_video__capture__device__factory__linux.cc
new file mode 100644
index 000000000000..4208b0366b5a
--- /dev/null
+++ b/devel/electron7/files/patch-media_capture_video_linux_video__capture__device__factory__linux.cc
@@ -0,0 +1,32 @@
+--- media/capture/video/linux/video_capture_device_factory_linux.cc.orig 2019-12-12 12:39:49 UTC
++++ media/capture/video/linux/video_capture_device_factory_linux.cc
+@@ -259,6 +259,7 @@ bool VideoCaptureDeviceFactoryLinux::HasUsableFormats(
+ if (!(capabilities & V4L2_CAP_VIDEO_CAPTURE))
+ return false;
+
++#if !defined(OS_FREEBSD)
+ const std::vector<uint32_t>& usable_fourccs =
+ VideoCaptureDeviceLinux::GetListOfUsableFourCCs(false);
+ v4l2_fmtdesc fmtdesc = {};
+@@ -267,6 +268,7 @@ bool VideoCaptureDeviceFactoryLinux::HasUsableFormats(
+ if (base::Contains(usable_fourccs, fmtdesc.pixelformat))
+ return true;
+ }
++#endif
+
+ DVLOG(1) << "No usable formats found";
+ return false;
+@@ -312,9 +314,13 @@ void VideoCaptureDeviceFactoryLinux::GetSupportedForma
+ v4l2_format.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
+ for (; DoIoctl(fd, VIDIOC_ENUM_FMT, &v4l2_format) == 0; ++v4l2_format.index) {
+ VideoCaptureFormat supported_format;
++#if !defined(OS_FREEBSD)
+ supported_format.pixel_format =
+ VideoCaptureDeviceLinux::V4l2FourCcToChromiumPixelFormat(
+ v4l2_format.pixelformat);
++#else
++ supported_format.pixel_format = PIXEL_FORMAT_UNKNOWN;
++#endif
+
+ if (supported_format.pixel_format == PIXEL_FORMAT_UNKNOWN)
+ continue;
diff --git a/devel/electron7/files/patch-media_capture_video_linux_video__capture__device__linux.cc b/devel/electron7/files/patch-media_capture_video_linux_video__capture__device__linux.cc
new file mode 100644
index 000000000000..2145ec155389
--- /dev/null
+++ b/devel/electron7/files/patch-media_capture_video_linux_video__capture__device__linux.cc
@@ -0,0 +1,61 @@
+--- media/capture/video/linux/video_capture_device_linux.cc.orig 2019-12-12 12:39:49 UTC
++++ media/capture/video/linux/video_capture_device_linux.cc
+@@ -37,6 +37,7 @@ int TranslatePowerLineFrequencyToV4L2(PowerLineFrequen
+
+ } // namespace
+
++#if !defined(OS_FREEBSD)
+ // Translates Video4Linux pixel formats to Chromium pixel formats.
+ // static
+ VideoPixelFormat VideoCaptureDeviceLinux::V4l2FourCcToChromiumPixelFormat(
+@@ -50,6 +51,7 @@ std::vector<uint32_t> VideoCaptureDeviceLinux::GetList
+ bool favour_mjpeg) {
+ return V4L2CaptureDelegate::GetListOfUsableFourCcs(favour_mjpeg);
+ }
++#endif // !defined(OS_FREEBSD)
+
+ VideoCaptureDeviceLinux::VideoCaptureDeviceLinux(
+ scoped_refptr<V4L2CaptureDevice> v4l2,
+@@ -71,6 +73,7 @@ void VideoCaptureDeviceLinux::AllocateAndStart(
+ const VideoCaptureParams& params,
+ std::unique_ptr<VideoCaptureDevice::Client> client) {
+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
++#if !defined(OS_FREEBSD)
+ DCHECK(!capture_impl_);
+ if (v4l2_thread_.IsRunning())
+ return; // Wrong state.
+@@ -98,10 +101,12 @@ void VideoCaptureDeviceLinux::AllocateAndStart(
+ for (auto& request : photo_requests_queue_)
+ v4l2_thread_.task_runner()->PostTask(FROM_HERE, std::move(request));
+ photo_requests_queue_.clear();
++#endif // !defined(OS_FREEBSD)
+ }
+
+ void VideoCaptureDeviceLinux::StopAndDeAllocate() {
+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
++#if !defined(OS_FREEBSD)
+ if (!v4l2_thread_.IsRunning())
+ return; // Wrong state.
+ v4l2_thread_.task_runner()->PostTask(
+@@ -111,6 +116,7 @@ void VideoCaptureDeviceLinux::StopAndDeAllocate() {
+ v4l2_thread_.Stop();
+
+ capture_impl_ = nullptr;
++#endif // !defined(OS_FREEBSD)
+ }
+
+ void VideoCaptureDeviceLinux::TakePhoto(TakePhotoCallback callback) {
+@@ -158,11 +164,13 @@ void VideoCaptureDeviceLinux::SetPhotoOptions(
+ void VideoCaptureDeviceLinux::SetRotation(int rotation) {
+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+ rotation_ = rotation;
++#if !defined(OS_FREEBSD)
+ if (v4l2_thread_.IsRunning()) {
+ v4l2_thread_.task_runner()->PostTask(
+ FROM_HERE, base::BindOnce(&V4L2CaptureDelegate::SetRotation,
+ capture_impl_->GetWeakPtr(), rotation));
+ }
++#endif // !defined(OS_FREEBSD)
+ }
+
+ } // namespace media
diff --git a/devel/electron7/files/patch-media_capture_video_mock__gpu__memory__buffer__manager.cc b/devel/electron7/files/patch-media_capture_video_mock__gpu__memory__buffer__manager.cc
new file mode 100644
index 000000000000..36f98a60b18c
--- /dev/null
+++ b/devel/electron7/files/patch-media_capture_video_mock__gpu__memory__buffer__manager.cc
@@ -0,0 +1,11 @@
+--- media/capture/video/mock_gpu_memory_buffer_manager.cc.orig 2019-12-12 12:39:49 UTC
++++ media/capture/video/mock_gpu_memory_buffer_manager.cc
+@@ -115,7 +115,7 @@ class FakeGpuMemoryBuffer : public gfx::GpuMemoryBuffe
+ gfx::GpuMemoryBufferHandle handle;
+ handle.type = gfx::NATIVE_PIXMAP;
+ handle.id = handle_.id;
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ handle.native_pixmap_handle =
+ gfx::CloneHandleForIPC(handle_.native_pixmap_handle);
+ #endif
diff --git a/devel/electron7/files/patch-media_capture_video_video__capture__buffer__pool__impl.cc b/devel/electron7/files/patch-media_capture_video_video__capture__buffer__pool__impl.cc
new file mode 100644
index 000000000000..1e20dd994dbc
--- /dev/null
+++ b/devel/electron7/files/patch-media_capture_video_video__capture__buffer__pool__impl.cc
@@ -0,0 +1,11 @@
+--- media/capture/video/video_capture_buffer_pool_impl.cc.orig 2019-12-12 12:39:49 UTC
++++ media/capture/video/video_capture_buffer_pool_impl.cc
+@@ -57,7 +57,7 @@ VideoCaptureBufferPoolImpl::CreateSharedMemoryViaRawFi
+ int buffer_id) {
+ // This requires platforms where base::SharedMemoryHandle is backed by a
+ // file descriptor.
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ base::AutoLock lock(lock_);
+
+ VideoCaptureBufferTracker* tracker = GetTracker(buffer_id);
diff --git a/devel/electron7/files/patch-media_capture_video_video__capture__device__client.cc b/devel/electron7/files/patch-media_capture_video_video__capture__device__client.cc
new file mode 100644
index 000000000000..f086cd113c6c
--- /dev/null
+++ b/devel/electron7/files/patch-media_capture_video_video__capture__device__client.cc
@@ -0,0 +1,11 @@
+--- media/capture/video/video_capture_device_client.cc.orig 2019-12-12 12:39:49 UTC
++++ media/capture/video/video_capture_device_client.cc
+@@ -301,7 +301,7 @@ void VideoCaptureDeviceClient::OnIncomingCapturedData(
+ // see http://linuxtv.org/downloads/v4l-dvb-apis/packed-rgb.html.
+ // Windows RGB24 defines blue at lowest byte,
+ // see https://msdn.microsoft.com/en-us/library/windows/desktop/dd407253
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ fourcc_format = libyuv::FOURCC_RAW;
+ #elif defined(OS_WIN)
+ fourcc_format = libyuv::FOURCC_24BG;
diff --git a/devel/electron7/files/patch-media_filters_vp9__parser.h b/devel/electron7/files/patch-media_filters_vp9__parser.h
new file mode 100644
index 000000000000..7199e6a51764
--- /dev/null
+++ b/devel/electron7/files/patch-media_filters_vp9__parser.h
@@ -0,0 +1,10 @@
+--- media/filters/vp9_parser.h.orig 2019-12-12 12:39:49 UTC
++++ media/filters/vp9_parser.h
+@@ -14,6 +14,7 @@
+
+ #include <stddef.h>
+ #include <stdint.h>
++#include <unistd.h>
+ #include <sys/types.h>
+
+ #include <memory>
diff --git a/devel/electron7/files/patch-media_formats_common_offset__byte__queue.cc b/devel/electron7/files/patch-media_formats_common_offset__byte__queue.cc
new file mode 100644
index 000000000000..d624c1492598
--- /dev/null
+++ b/devel/electron7/files/patch-media_formats_common_offset__byte__queue.cc
@@ -0,0 +1,20 @@
+--- media/formats/common/offset_byte_queue.cc.orig 2019-12-12 12:39:49 UTC
++++ media/formats/common/offset_byte_queue.cc
+@@ -46,13 +46,13 @@ void OffsetByteQueue::PeekAt(int64_t offset, const uin
+ *size = tail() - offset;
+ }
+
+-bool OffsetByteQueue::Trim(int64_t max_offset) {
+- if (max_offset < head_) return true;
+- if (max_offset > tail()) {
++bool OffsetByteQueue::Trim(int64_t _max_offset) {
++ if (_max_offset < head_) return true;
++ if (_max_offset > tail()) {
+ Pop(size_);
+ return false;
+ }
+- Pop(max_offset - head_);
++ Pop(_max_offset - head_);
+ return true;
+ }
+
diff --git a/devel/electron7/files/patch-media_formats_common_offset__byte__queue.h b/devel/electron7/files/patch-media_formats_common_offset__byte__queue.h
new file mode 100644
index 000000000000..b3dc321e3890
--- /dev/null
+++ b/devel/electron7/files/patch-media_formats_common_offset__byte__queue.h
@@ -0,0 +1,22 @@
+--- media/formats/common/offset_byte_queue.h.orig 2019-12-12 12:39:49 UTC
++++ media/formats/common/offset_byte_queue.h
+@@ -36,15 +36,15 @@ class MEDIA_EXPORT OffsetByteQueue {
+ // a null |buf| and a |size| of zero.
+ void PeekAt(int64_t offset, const uint8_t** buf, int* size);
+
+- // Marks the bytes up to (but not including) |max_offset| as ready for
++ // Marks the bytes up to (but not including) |_max_offset| as ready for
+ // deletion. This is relatively inexpensive, but will not necessarily reduce
+ // the resident buffer size right away (or ever).
+ //
+ // Returns true if the full range of bytes were successfully trimmed,
+- // including the case where |max_offset| is less than the current head.
+- // Returns false if |max_offset| > tail() (although all bytes currently
++ // including the case where |_max_offset| is less than the current head.
++ // Returns false if |_max_offset| > tail() (although all bytes currently
+ // buffered are still cleared).
+- bool Trim(int64_t max_offset);
++ bool Trim(int64_t _max_offset);
+
+ // The head and tail positions, in terms of the file's absolute offsets.
+ // tail() is an exclusive bound.
diff --git a/devel/electron7/files/patch-media_formats_mp2t_es__parser__adts.cc b/devel/electron7/files/patch-media_formats_mp2t_es__parser__adts.cc
new file mode 100644
index 000000000000..4cc67a36a276
--- /dev/null
+++ b/devel/electron7/files/patch-media_formats_mp2t_es__parser__adts.cc
@@ -0,0 +1,26 @@
+--- media/formats/mp2t/es_parser_adts.cc.orig 2019-12-12 12:39:49 UTC
++++ media/formats/mp2t/es_parser_adts.cc
+@@ -62,11 +62,11 @@ bool EsParserAdts::LookForAdtsFrame(AdtsFrame* adts_fr
+ const uint8_t* es;
+ es_queue_->Peek(&es, &es_size);
+
+- int max_offset = es_size - kADTSHeaderMinSize;
+- if (max_offset <= 0)
++ int _max_offset = es_size - kADTSHeaderMinSize;
++ if (_max_offset <= 0)
+ return false;
+
+- for (int offset = 0; offset < max_offset; offset++) {
++ for (int offset = 0; offset < _max_offset; offset++) {
+ const uint8_t* cur_buf = &es[offset];
+ if (!isAdtsSyncWord(cur_buf))
+ continue;
+@@ -106,7 +106,7 @@ bool EsParserAdts::LookForAdtsFrame(AdtsFrame* adts_fr
+ return true;
+ }
+
+- es_queue_->Pop(max_offset);
++ es_queue_->Pop(_max_offset);
+ return false;
+ }
+
diff --git a/devel/electron7/files/patch-media_formats_mp2t_es__parser__mpeg1audio.cc b/devel/electron7/files/patch-media_formats_mp2t_es__parser__mpeg1audio.cc
new file mode 100644
index 000000000000..e95b19d9b069
--- /dev/null
+++ b/devel/electron7/files/patch-media_formats_mp2t_es__parser__mpeg1audio.cc
@@ -0,0 +1,26 @@
+--- media/formats/mp2t/es_parser_mpeg1audio.cc.orig 2019-12-12 12:39:49 UTC
++++ media/formats/mp2t/es_parser_mpeg1audio.cc
+@@ -108,11 +108,11 @@ bool EsParserMpeg1Audio::LookForMpeg1AudioFrame(
+ const uint8_t* es;
+ es_queue_->Peek(&es, &es_size);
+
+- int max_offset = es_size - MPEG1AudioStreamParser::kHeaderSize;
+- if (max_offset <= 0)
++ int _max_offset = es_size - MPEG1AudioStreamParser::kHeaderSize;
++ if (_max_offset <= 0)
+ return false;
+
+- for (int offset = 0; offset < max_offset; offset++) {
++ for (int offset = 0; offset < _max_offset; offset++) {
+ const uint8_t* cur_buf = &es[offset];
+ if (cur_buf[0] != 0xff)
+ continue;
+@@ -153,7 +153,7 @@ bool EsParserMpeg1Audio::LookForMpeg1AudioFrame(
+ return true;
+ }
+
+- es_queue_->Pop(max_offset);
++ es_queue_->Pop(_max_offset);
+ return false;
+ }
+
diff --git a/devel/electron7/files/patch-media_gpu_libyuv__image__processor.cc b/devel/electron7/files/patch-media_gpu_libyuv__image__processor.cc
new file mode 100644
index 000000000000..56dca1b9e636
--- /dev/null
+++ b/devel/electron7/files/patch-media_gpu_libyuv__image__processor.cc
@@ -0,0 +1,38 @@
+--- media/gpu/libyuv_image_processor.cc.orig 2019-12-12 12:39:49 UTC
++++ media/gpu/libyuv_image_processor.cc
+@@ -91,7 +91,7 @@ std::unique_ptr<LibYUVImageProcessor> LibYUVImageProce
+ // LibYUVImageProcessor supports only memory-based video frame for input.
+ VideoFrame::StorageType input_storage_type = VideoFrame::STORAGE_UNKNOWN;
+ for (auto input_type : input_config.preferred_storage_types) {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ if (input_type == VideoFrame::STORAGE_DMABUFS) {
+ video_frame_mapper = VideoFrameMapperFactory::CreateMapper(
+ input_config.layout.format(), true);
+@@ -100,7 +100,7 @@ std::unique_ptr<LibYUVImageProcessor> LibYUVImageProce
+ break;
+ }
+ }
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+
+ if (VideoFrame::IsStorageTypeMappable(input_type)) {
+ input_storage_type = input_type;
+@@ -203,7 +203,7 @@ void LibYUVImageProcessor::ProcessTask(scoped_refptr<V
+ FrameReadyCB cb) {
+ DCHECK(process_thread_.task_runner()->BelongsToCurrentThread());
+ DVLOGF(4);
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ if (input_frame->storage_type() == VideoFrame::STORAGE_DMABUFS) {
+ DCHECK_NE(video_frame_mapper_.get(), nullptr);
+ input_frame = video_frame_mapper_->Map(std::move(input_frame));
+@@ -213,7 +213,7 @@ void LibYUVImageProcessor::ProcessTask(scoped_refptr<V
+ return;
+ }
+ }
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+
+ int res = DoConversion(input_frame.get(), output_frame.get());
+ if (res != 0) {
diff --git a/devel/electron7/files/patch-media_gpu_linux_platform__video__frame__utils.cc b/devel/electron7/files/patch-media_gpu_linux_platform__video__frame__utils.cc
new file mode 100644
index 000000000000..cd0c6c581bdd
--- /dev/null
+++ b/devel/electron7/files/patch-media_gpu_linux_platform__video__frame__utils.cc
@@ -0,0 +1,20 @@
+--- media/gpu/linux/platform_video_frame_utils.cc.orig 2019-12-12 12:39:49 UTC
++++ media/gpu/linux/platform_video_frame_utils.cc
+@@ -121,7 +121,7 @@ gfx::GpuMemoryBufferHandle CreateGpuMemoryBufferHandle
+ DCHECK(video_frame);
+
+ gfx::GpuMemoryBufferHandle handle;
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ handle.type = gfx::NATIVE_PIXMAP;
+
+ std::vector<base::ScopedFD> duped_fds =
+@@ -136,7 +136,7 @@ gfx::GpuMemoryBufferHandle CreateGpuMemoryBufferHandle
+ }
+ #else
+ NOTREACHED();
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+ return handle;
+ }
+
diff --git a/devel/electron7/files/patch-media_media__options.gni b/devel/electron7/files/patch-media_media__options.gni
new file mode 100644
index 000000000000..1920643065e6
--- /dev/null
+++ b/devel/electron7/files/patch-media_media__options.gni
@@ -0,0 +1,12 @@
+--- media/media_options.gni.orig 2019-12-12 12:39:50 UTC
++++ media/media_options.gni
+@@ -110,6 +110,9 @@ declare_args() {
+ # Enables runtime selection of ALSA library for audio.
+ use_alsa = false
+
++ # Enable runtime selection of sndio(7)
++ use_sndio = false
++
+ # Alsa should be used on non-Android, non-Mac POSIX systems.
+ # Alsa should be used on desktop Chromecast and audio-only Chromecast builds.
+ if (is_posix && !is_android && !is_mac &&
diff --git a/devel/electron7/files/patch-media_mojo_clients_mojo__video__encode__accelerator.cc b/devel/electron7/files/patch-media_mojo_clients_mojo__video__encode__accelerator.cc
new file mode 100644
index 000000000000..9f4f44939a51
--- /dev/null
+++ b/devel/electron7/files/patch-media_mojo_clients_mojo__video__encode__accelerator.cc
@@ -0,0 +1,11 @@
+--- media/mojo/clients/mojo_video_encode_accelerator.cc.orig 2019-12-12 12:39:50 UTC
++++ media/mojo/clients/mojo_video_encode_accelerator.cc
+@@ -124,7 +124,7 @@ void MojoVideoEncodeAccelerator::Encode(scoped_refptr<
+ frame->layout().num_planes());
+ DCHECK(vea_.is_bound());
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ if (frame->storage_type() == VideoFrame::STORAGE_DMABUFS) {
+ DCHECK(frame->HasDmaBufs());
+ vea_->Encode(
diff --git a/devel/electron7/files/patch-media_mojo_mojom_video__frame__mojom__traits.cc b/devel/electron7/files/patch-media_mojo_mojom_video__frame__mojom__traits.cc
new file mode 100644
index 000000000000..1339b45fe8f7
--- /dev/null
+++ b/devel/electron7/files/patch-media_mojo_mojom_video__frame__mojom__traits.cc
@@ -0,0 +1,20 @@
+--- media/mojo/mojom/video_frame_mojom_traits.cc.orig 2019-12-12 12:39:50 UTC
++++ media/mojo/mojom/video_frame_mojom_traits.cc
+@@ -52,7 +52,7 @@ media::mojom::VideoFrameDataPtr MakeVideoFrameData(
+ mojo_frame->PlaneOffset(media::VideoFrame::kVPlane)));
+ }
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ if (input->storage_type() == media::VideoFrame::STORAGE_DMABUFS) {
+ std::vector<mojo::ScopedHandle> dmabuf_fds;
+
+@@ -145,7 +145,7 @@ bool StructTraits<media::mojom::VideoFrameDataView,
+ shared_buffer_data.u_offset(), shared_buffer_data.v_offset(),
+ shared_buffer_data.y_stride(), shared_buffer_data.u_stride(),
+ shared_buffer_data.v_stride(), timestamp);
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ } else if (data.is_dmabuf_data()) {
+ media::mojom::DmabufVideoFrameDataDataView dmabuf_data;
+ data.GetDmabufDataDataView(&dmabuf_data);
diff --git a/devel/electron7/files/patch-media_mojo_services_gpu__mojo__media__client.cc b/devel/electron7/files/patch-media_mojo_services_gpu__mojo__media__client.cc
new file mode 100644
index 000000000000..64194f9ed961
--- /dev/null
+++ b/devel/electron7/files/patch-media_mojo_services_gpu__mojo__media__client.cc
@@ -0,0 +1,20 @@
+--- media/mojo/services/gpu_mojo_media_client.cc.orig 2019-12-12 12:39:50 UTC
++++ media/mojo/services/gpu_mojo_media_client.cc
+@@ -65,7 +65,7 @@ namespace media {
+ namespace {
+
+ #if defined(OS_ANDROID) || defined(OS_CHROMEOS) || defined(OS_MACOSX) || \
+- defined(OS_WIN) || defined(OS_LINUX)
++ defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD)
+ gpu::CommandBufferStub* GetCommandBufferStub(
+ scoped_refptr<base::SingleThreadTaskRunner> gpu_task_runner,
+ base::WeakPtr<MediaGpuChannelManager> media_gpu_channel_manager,
+@@ -245,7 +245,7 @@ std::unique_ptr<VideoDecoder> GpuMojoMediaClient::Crea
+ command_buffer_id->route_id));
+ }
+
+-#elif defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_LINUX)
++#elif defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD)
+ video_decoder = VdaVideoDecoder::Create(
+ task_runner, gpu_task_runner_, media_log->Clone(), target_color_space,
+ gpu_preferences_, gpu_workarounds_,
diff --git a/devel/electron7/files/patch-media_video_gpu__memory__buffer__video__frame__pool.cc b/devel/electron7/files/patch-media_video_gpu__memory__buffer__video__frame__pool.cc
new file mode 100644
index 000000000000..8640c7e64d50
--- /dev/null
+++ b/devel/electron7/files/patch-media_video_gpu__memory__buffer__video__frame__pool.cc
@@ -0,0 +1,11 @@
+--- media/video/gpu_memory_buffer_video_frame_pool.cc.orig 2019-12-12 12:39:51 UTC
++++ media/video/gpu_memory_buffer_video_frame_pool.cc
+@@ -555,7 +555,7 @@ void GpuMemoryBufferVideoFramePool::PoolImpl::CreateHa
+ }
+
+ bool is_software_backed_video_frame = !video_frame->HasTextures();
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ is_software_backed_video_frame &= !video_frame->HasDmaBufs();
+ #endif
+
diff --git a/devel/electron7/files/patch-mojo_public_c_system_thunks.cc b/devel/electron7/files/patch-mojo_public_c_system_thunks.cc
new file mode 100644
index 000000000000..3dd288f9e27f
--- /dev/null
+++ b/devel/electron7/files/patch-mojo_public_c_system_thunks.cc
@@ -0,0 +1,58 @@
+--- mojo/public/c/system/thunks.cc.orig 2019-12-12 12:39:51 UTC
++++ mojo/public/c/system/thunks.cc
+@@ -16,7 +16,7 @@
+ #include "build/build_config.h"
+ #include "mojo/public/c/system/core.h"
+
+-#if defined(OS_CHROMEOS) || defined(OS_LINUX) || defined(OS_WIN)
++#if defined(OS_CHROMEOS) || defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD)
+ #include "base/environment.h"
+ #include "base/files/file_path.h"
+ #include "base/optional.h"
+@@ -28,7 +28,7 @@ namespace {
+
+ typedef void (*MojoGetSystemThunksFunction)(MojoSystemThunks* thunks);
+
+-#if defined(OS_CHROMEOS) || defined(OS_LINUX) || defined(OS_WIN)
++#if defined(OS_CHROMEOS) || defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD)
+ PROTECTED_MEMORY_SECTION
+ base::ProtectedMemory<MojoGetSystemThunksFunction> g_get_thunks;
+ #endif
+@@ -65,7 +65,7 @@ namespace mojo {
+ class CoreLibraryInitializer {
+ public:
+ CoreLibraryInitializer(const MojoInitializeOptions* options) {
+-#if defined(OS_CHROMEOS) || defined(OS_LINUX) || defined(OS_WIN)
++#if defined(OS_CHROMEOS) || defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD)
+ bool application_provided_path = false;
+ base::Optional<base::FilePath> library_path;
+ if (options && options->struct_size >= sizeof(*options) &&
+@@ -84,7 +84,7 @@ class CoreLibraryInitializer {
+
+ if (!library_path) {
+ // Default to looking for the library in the current working directory.
+-#if defined(OS_CHROMEOS) || defined(OS_LINUX)
++#if defined(OS_CHROMEOS) || defined(OS_LINUX) || defined(OS_BSD)
+ const base::FilePath::CharType kDefaultLibraryPathValue[] =
+ FILE_PATH_LITERAL("./libmojo_core.so");
+ #elif defined(OS_WIN)
+@@ -138,16 +138,16 @@ class CoreLibraryInitializer {
+
+ CHECK_GT(g_thunks->size, 0u)
+ << "Invalid mojo_core library: " << library_path->value();
+-#else // defined(OS_CHROMEOS) || defined(OS_LINUX)
++#else // defined(OS_CHROMEOS) || defined(OS_LINUX) || defined(OS_BSD)
+ NOTREACHED()
+ << "Dynamic mojo_core loading is not supported on this platform.";
+-#endif // defined(OS_CHROMEOS) || defined(OS_LINUX)
++#endif // defined(OS_CHROMEOS) || defined(OS_LINUX) || defined(OS_BSD)
+ }
+
+ ~CoreLibraryInitializer() = default;
+
+ private:
+-#if defined(OS_CHROMEOS) || defined(OS_LINUX) || defined(OS_WIN)
++#if defined(OS_CHROMEOS) || defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD)
+ base::Optional<base::ScopedNativeLibrary> library_;
+ #endif
+
diff --git a/devel/electron7/files/patch-mojo_public_js_mojo__bindings__resources.grd b/devel/electron7/files/patch-mojo_public_js_mojo__bindings__resources.grd
new file mode 100644
index 000000000000..dadcf886d9c2
--- /dev/null
+++ b/devel/electron7/files/patch-mojo_public_js_mojo__bindings__resources.grd
@@ -0,0 +1,11 @@
+--- mojo/public/js/mojo_bindings_resources.grd.orig 2019-12-12 12:39:51 UTC
++++ mojo/public/js/mojo_bindings_resources.grd
+@@ -60,7 +60,7 @@
+ use_base_dir="false"
+ type="BINDATA"
+ compress="gzip" />
+- <if expr="is_win or is_macosx or is_linux">
++ <if expr="is_win or is_macosx or is_posix">
+ <include name="IDR_MOJO_TIME_MOJOM_HTML"
+ file="${root_gen_dir}/mojo/public/mojom/base/time.mojom.html"
+ use_base_dir="false"
diff --git a/devel/electron7/files/patch-net_BUILD.gn b/devel/electron7/files/patch-net_BUILD.gn
new file mode 100644
index 000000000000..9d5928046e3e
--- /dev/null
+++ b/devel/electron7/files/patch-net_BUILD.gn
@@ -0,0 +1,46 @@
+--- net/BUILD.gn.orig 2019-12-12 12:39:52 UTC
++++ net/BUILD.gn
+@@ -105,7 +105,7 @@ net_configs = [
+ "//build/config/compiler:wexit_time_destructors",
+ ]
+
+-if (is_linux) {
++if (is_linux && !is_bsd) {
+ net_configs += [ "//build/config/linux:libresolv" ]
+ }
+
+@@ -1924,7 +1924,7 @@ component("net") {
+ }
+ }
+
+- if (is_android || is_chromeos) {
++ if (is_android || is_chromeos || is_bsd) {
+ sources += [
+ "base/network_change_notifier_posix.cc",
+ "base/network_change_notifier_posix.h",
+@@ -1957,7 +1957,7 @@ component("net") {
+ }
+
+ # Use getifaddrs() on POSIX platforms, except Linux and Android.
+- if (is_posix && !is_linux && !is_android) {
++ if (is_posix && ((!is_linux && !is_android) || (is_bsd))) {
+ sources += [
+ "base/network_interfaces_getifaddrs.cc",
+ "base/network_interfaces_getifaddrs.h",
+@@ -2051,6 +2051,16 @@ component("net") {
+ ]
+
+ sources -= [ "disk_cache/blockfile/file_posix.cc" ]
++ }
++
++ if (is_bsd) {
++ sources -= [
++ "base/address_tracker_linux.cc",
++ "base/address_tracker_linux.h",
++ "base/network_change_notifier_linux.cc",
++ "base/network_change_notifier_linux.h",
++ "base/network_interfaces_linux.cc",
++ ]
+ }
+
+ if (is_ios || is_mac) {
diff --git a/devel/electron7/files/patch-net_base_address__tracker__linux.cc b/devel/electron7/files/patch-net_base_address__tracker__linux.cc
new file mode 100644
index 000000000000..9c7d72523545
--- /dev/null
+++ b/devel/electron7/files/patch-net_base_address__tracker__linux.cc
@@ -0,0 +1,177 @@
+--- net/base/address_tracker_linux.cc.orig 2019-12-12 12:39:52 UTC
++++ net/base/address_tracker_linux.cc
+@@ -21,96 +21,10 @@
+ namespace net {
+ namespace internal {
+
+-namespace {
+-
+-// Some kernel functions such as wireless_send_event and rtnetlink_ifinfo_prep
+-// may send spurious messages over rtnetlink. RTM_NEWLINK messages where
+-// ifi_change == 0 and rta_type == IFLA_WIRELESS should be ignored.
+-bool IgnoreWirelessChange(const struct nlmsghdr* header,
+- const struct ifinfomsg* msg) {
+- size_t length = IFLA_PAYLOAD(header);
+- for (const struct rtattr* attr = IFLA_RTA(msg); RTA_OK(attr, length);
+- attr = RTA_NEXT(attr, length)) {
+- if (attr->rta_type == IFLA_WIRELESS && msg->ifi_change == 0)
+- return true;
+- }
+- return false;
+-}
+-
+-// Retrieves address from NETLINK address message.
+-// Sets |really_deprecated| for IPv6 addresses with preferred lifetimes of 0.
+-bool GetAddress(const struct nlmsghdr* header,
+- IPAddress* out,
+- bool* really_deprecated) {
+- if (really_deprecated)
+- *really_deprecated = false;
+- const struct ifaddrmsg* msg =
+- reinterpret_cast<struct ifaddrmsg*>(NLMSG_DATA(header));
+- size_t address_length = 0;
+- switch (msg->ifa_family) {
+- case AF_INET:
+- address_length = IPAddress::kIPv4AddressSize;
+- break;
+- case AF_INET6:
+- address_length = IPAddress::kIPv6AddressSize;
+- break;
+- default:
+- // Unknown family.
+- return false;
+- }
+- // Use IFA_ADDRESS unless IFA_LOCAL is present. This behavior here is based on
+- // getaddrinfo in glibc (check_pf.c). Judging from kernel implementation of
+- // NETLINK, IPv4 addresses have only the IFA_ADDRESS attribute, while IPv6
+- // have the IFA_LOCAL attribute.
+- uint8_t* address = NULL;
+- uint8_t* local = NULL;
+- size_t length = IFA_PAYLOAD(header);
+- for (const struct rtattr* attr =
+- reinterpret_cast<const struct rtattr*>(IFA_RTA(msg));
+- RTA_OK(attr, length);
+- attr = RTA_NEXT(attr, length)) {
+- switch (attr->rta_type) {
+- case IFA_ADDRESS:
+- DCHECK_GE(RTA_PAYLOAD(attr), address_length);
+- address = reinterpret_cast<uint8_t*>(RTA_DATA(attr));
+- break;
+- case IFA_LOCAL:
+- DCHECK_GE(RTA_PAYLOAD(attr), address_length);
+- local = reinterpret_cast<uint8_t*>(RTA_DATA(attr));
+- break;
+- case IFA_CACHEINFO: {
+- const struct ifa_cacheinfo *cache_info =
+- reinterpret_cast<const struct ifa_cacheinfo*>(RTA_DATA(attr));
+- if (really_deprecated)
+- *really_deprecated = (cache_info->ifa_prefered == 0);
+- } break;
+- default:
+- break;
+- }
+- }
+- if (local)
+- address = local;
+- if (!address)
+- return false;
+- *out = IPAddress(address, address_length);
+- return true;
+-}
+-
+-} // namespace
+-
+ // static
+ char* AddressTrackerLinux::GetInterfaceName(int interface_index, char* buf) {
+- memset(buf, 0, IFNAMSIZ);
+- base::ScopedFD ioctl_socket = GetSocketForIoctl();
+- if (!ioctl_socket.is_valid())
+- return buf;
+-
+- struct ifreq ifr = {};
+- ifr.ifr_ifindex = interface_index;
+-
+- if (ioctl(ioctl_socket.get(), SIOCGIFNAME, &ifr) == 0)
+- strncpy(buf, ifr.ifr_name, IFNAMSIZ - 1);
+- return buf;
++ NOTIMPLEMENTED();
++ return NULL;
+ }
+
+ AddressTrackerLinux::AddressTrackerLinux()
+@@ -147,6 +61,7 @@ AddressTrackerLinux::AddressTrackerLinux(
+ AddressTrackerLinux::~AddressTrackerLinux() = default;
+
+ void AddressTrackerLinux::Init() {
++#if !defined(OS_FREEBSD)
+ netlink_fd_.reset(socket(AF_NETLINK, SOCK_RAW, NETLINK_ROUTE));
+ if (!netlink_fd_.is_valid()) {
+ PLOG(ERROR) << "Could not create NETLINK socket";
+@@ -242,6 +157,7 @@ void AddressTrackerLinux::AbortAndForceOnline() {
+ connection_type_initialized_cv_.Broadcast();
+ }
+
++#if !defined(OS_BSD)
+ AddressTrackerLinux::AddressMap AddressTrackerLinux::GetAddressMap() const {
+ AddressTrackerAutoLock lock(*this, address_map_lock_);
+ return address_map_;
+@@ -260,6 +176,7 @@ bool AddressTrackerLinux::IsInterfaceIgnored(int inter
+ const char* interface_name = get_interface_name_(interface_index, buf);
+ return ignored_interfaces_.find(interface_name) != ignored_interfaces_.end();
+ }
++#endif // !OS_BSD
+
+ NetworkChangeNotifier::ConnectionType
+ AddressTrackerLinux::GetCurrentConnectionType() {
+@@ -318,6 +235,7 @@ void AddressTrackerLinux::HandleMessage(char* buffer,
+ bool* address_changed,
+ bool* link_changed,
+ bool* tunnel_changed) {
++#if !defined(OS_FREEBSD)
+ DCHECK(buffer);
+ for (struct nlmsghdr* header = reinterpret_cast<struct nlmsghdr*>(buffer);
+ NLMSG_OK(header, length);
+@@ -414,6 +332,10 @@ void AddressTrackerLinux::HandleMessage(char* buffer,
+ break;
+ }
+ }
++#else // !OS_FREEBSD
++ NOTIMPLEMENTED();
++ AbortAndForceOnline();
++#endif // !OS_FREEBSD
+ }
+
+ void AddressTrackerLinux::OnFileCanReadWithoutBlocking() {
+@@ -441,31 +363,7 @@ bool AddressTrackerLinux::IsTunnelInterfaceName(const
+ }
+
+ void AddressTrackerLinux::UpdateCurrentConnectionType() {
+- AddressTrackerLinux::AddressMap address_map = GetAddressMap();
+- std::unordered_set<int> online_links = GetOnlineLinks();
+-
+- // Strip out tunnel interfaces from online_links
+- for (auto it = online_links.cbegin(); it != online_links.cend();) {
+- if (IsTunnelInterface(*it)) {
+- it = online_links.erase(it);
+- } else {
+- ++it;
+- }
+- }
+-
+- NetworkInterfaceList networks;
+- NetworkChangeNotifier::ConnectionType type =
+- NetworkChangeNotifier::CONNECTION_NONE;
+- if (GetNetworkListImpl(&networks, 0, online_links, address_map,
+- get_interface_name_)) {
+- type = NetworkChangeNotifier::ConnectionTypeFromInterfaceList(networks);
+- } else {
+- type = online_links.empty() ? NetworkChangeNotifier::CONNECTION_NONE
+- : NetworkChangeNotifier::CONNECTION_UNKNOWN;
+- }
+-
+- AddressTrackerAutoLock lock(*this, connection_type_lock_);
+- current_connection_type_ = type;
++ NOTIMPLEMENTED();
+ }
+
+ int AddressTrackerLinux::GetThreadsWaitingForConnectionTypeInitForTesting()
diff --git a/devel/electron7/files/patch-net_base_address__tracker__linux.h b/devel/electron7/files/patch-net_base_address__tracker__linux.h
new file mode 100644
index 000000000000..6bd9785ce329
--- /dev/null
+++ b/devel/electron7/files/patch-net_base_address__tracker__linux.h
@@ -0,0 +1,12 @@
+--- net/base/address_tracker_linux.h.orig 2019-12-12 12:39:52 UTC
++++ net/base/address_tracker_linux.h
+@@ -7,9 +7,6 @@
+
+ #include <sys/socket.h> // Needed to include netlink.
+ // Mask superfluous definition of |struct net|. This is fixed in Linux 2.6.38.
+-#define net net_kernel
+-#include <linux/rtnetlink.h>
+-#undef net
+ #include <stddef.h>
+
+ #include <map>
diff --git a/devel/electron7/files/patch-net_base_address__tracker__linux__unittest.cc b/devel/electron7/files/patch-net_base_address__tracker__linux__unittest.cc
new file mode 100644
index 000000000000..7c3a8d2ad1e7
--- /dev/null
+++ b/devel/electron7/files/patch-net_base_address__tracker__linux__unittest.cc
@@ -0,0 +1,14 @@
+--- net/base/address_tracker_linux_unittest.cc.orig 2019-12-12 12:39:52 UTC
++++ net/base/address_tracker_linux_unittest.cc
+@@ -4,7 +4,11 @@
+
+ #include "net/base/address_tracker_linux.h"
+
++#if defined(__linux__)
+ #include <linux/if.h>
++#else
++#include <net/if.h>
++#endif
+
+ #include <memory>
+ #include <unordered_set>
diff --git a/devel/electron7/files/patch-net_base_network__change__notifier.cc b/devel/electron7/files/patch-net_base_network__change__notifier.cc
new file mode 100644
index 000000000000..36864139d5c0
--- /dev/null
+++ b/devel/electron7/files/patch-net_base_network__change__notifier.cc
@@ -0,0 +1,19 @@
+--- net/base/network_change_notifier.cc.orig 2019-12-12 12:39:52 UTC
++++ net/base/network_change_notifier.cc
+@@ -35,7 +35,7 @@
+ #include "net/base/network_change_notifier_linux.h"
+ #elif defined(OS_MACOSX)
+ #include "net/base/network_change_notifier_mac.h"
+-#elif defined(OS_CHROMEOS)
++#elif defined(OS_CHROMEOS) || defined(OS_BSD)
+ #include "net/base/network_change_notifier_posix.h"
+ #elif defined(OS_FUCHSIA)
+ #include "net/base/network_change_notifier_fuchsia.h"
+@@ -236,7 +236,6 @@ std::unique_ptr<NetworkChangeNotifier> NetworkChangeNo
+ return std::make_unique<NetworkChangeNotifierFuchsia>(
+ 0 /* required_features */);
+ #else
+- NOTIMPLEMENTED();
+ return NULL;
+ #endif
+ }
diff --git a/devel/electron7/files/patch-net_base_network__interfaces__posix.h b/devel/electron7/files/patch-net_base_network__interfaces__posix.h
new file mode 100644
index 000000000000..c4ced80ae3a9
--- /dev/null
+++ b/devel/electron7/files/patch-net_base_network__interfaces__posix.h
@@ -0,0 +1,11 @@
+--- net/base/network_interfaces_posix.h.orig 2019-12-12 12:39:52 UTC
++++ net/base/network_interfaces_posix.h
+@@ -8,6 +8,8 @@
+ // This file provides some basic functionality shared between
+ // network_interfaces_linux.cc and network_interfaces_getifaddrs.cc.
+
++#include <sys/socket.h>
++
+ #include <string>
+
+ struct sockaddr;
diff --git a/devel/electron7/files/patch-net_disk__cache_blockfile_disk__format.h b/devel/electron7/files/patch-net_disk__cache_blockfile_disk__format.h
new file mode 100644
index 000000000000..490f8f840e3b
--- /dev/null
+++ b/devel/electron7/files/patch-net_disk__cache_blockfile_disk__format.h
@@ -0,0 +1,12 @@
+--- net/disk_cache/blockfile/disk_format.h.orig 2019-12-12 12:39:53 UTC
++++ net/disk_cache/blockfile/disk_format.h
+@@ -149,7 +149,9 @@ struct RankingsNode {
+ };
+ #pragma pack(pop)
+
++#if !defined(OS_BSD)
+ static_assert(sizeof(RankingsNode) == 36, "bad RankingsNode");
++#endif
+
+ } // namespace disk_cache
+
diff --git a/devel/electron7/files/patch-net_dns_address__sorter__posix.cc b/devel/electron7/files/patch-net_dns_address__sorter__posix.cc
new file mode 100644
index 000000000000..6eb02b0de7c5
--- /dev/null
+++ b/devel/electron7/files/patch-net_dns_address__sorter__posix.cc
@@ -0,0 +1,12 @@
+--- net/dns/address_sorter_posix.cc.orig 2019-12-12 12:39:53 UTC
++++ net/dns/address_sorter_posix.cc
+@@ -13,7 +13,9 @@
+ #include <sys/socket.h> // Must be included before ifaddrs.h.
+ #include <ifaddrs.h>
+ #include <net/if.h>
++#include <net/if_var.h>
+ #include <netinet/in_var.h>
++#include <netinet6/in6_var.h>
+ #include <string.h>
+ #include <sys/ioctl.h>
+ #endif
diff --git a/devel/electron7/files/patch-net_dns_dns__config__service__posix__unittest.cc b/devel/electron7/files/patch-net_dns_dns__config__service__posix__unittest.cc
new file mode 100644
index 000000000000..3b08caa52aae
--- /dev/null
+++ b/devel/electron7/files/patch-net_dns_dns__config__service__posix__unittest.cc
@@ -0,0 +1,47 @@
+--- net/dns/dns_config_service_posix_unittest.cc.orig 2019-12-12 12:39:53 UTC
++++ net/dns/dns_config_service_posix_unittest.cc
+@@ -2,8 +2,6 @@
+ // Use of this source code is governed by a BSD-style license that can be
+ // found in the LICENSE file.
+
+-#include <resolv.h>
+-
+ #include <memory>
+
+ #include "base/cancelable_callback.h"
+@@ -50,7 +48,7 @@ const char* const kNameserversIPv4[] = {
+ "1.0.0.1",
+ };
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ const char* const kNameserversIPv6[] = {
+ NULL,
+ "2001:DB8:0::42",
+@@ -86,7 +84,7 @@ void InitializeResState(res_state res) {
+ ++res->nscount;
+ }
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Install IPv6 addresses, replacing the corresponding IPv4 addresses.
+ unsigned nscount6 = 0;
+ for (unsigned i = 0; i < base::size(kNameserversIPv6) && i < MAXNS; ++i) {
+@@ -107,7 +105,7 @@ void InitializeResState(res_state res) {
+ }
+
+ void CloseResState(res_state res) {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ for (int i = 0; i < res->nscount; ++i) {
+ if (res->_u._ext.nsaddrs[i] != NULL)
+ free(res->_u._ext.nsaddrs[i]);
+@@ -132,7 +130,7 @@ void InitializeExpectedConfig(DnsConfig* config) {
+ config->nameservers.push_back(IPEndPoint(ip, NS_DEFAULTPORT + i));
+ }
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ for (unsigned i = 0; i < base::size(kNameserversIPv6) && i < MAXNS; ++i) {
+ if (!kNameserversIPv6[i])
+ continue;
diff --git a/devel/electron7/files/patch-net_dns_dns__reloader.cc b/devel/electron7/files/patch-net_dns_dns__reloader.cc
new file mode 100644
index 000000000000..078865505b8f
--- /dev/null
+++ b/devel/electron7/files/patch-net_dns_dns__reloader.cc
@@ -0,0 +1,13 @@
+--- net/dns/dns_reloader.cc.orig 2019-12-12 12:39:53 UTC
++++ net/dns/dns_reloader.cc
+@@ -7,6 +7,10 @@
+ #if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_OPENBSD) && \
+ !defined(OS_ANDROID) && !defined(OS_FUCHSIA)
+
++#if defined(OS_FREEBSD)
++#include <netinet/in.h>
++#endif
++
+ #include <resolv.h>
+
+ #include "base/lazy_instance.h"
diff --git a/devel/electron7/files/patch-net_dns_dns__util.cc b/devel/electron7/files/patch-net_dns_dns__util.cc
new file mode 100644
index 000000000000..33c75f996006
--- /dev/null
+++ b/devel/electron7/files/patch-net_dns_dns__util.cc
@@ -0,0 +1,11 @@
+--- net/dns/dns_util.cc.orig 2019-12-16 13:32:59 UTC
++++ net/dns/dns_util.cc
+@@ -38,6 +38,8 @@ const uint16_t kFlagNamePointer = 0xc000;
+
+ } // namespace
+
++#include <sys/socket.h>
++
+ #if defined(OS_POSIX)
+ #include <netinet/in.h>
+ #if !defined(OS_NACL)
diff --git a/devel/electron7/files/patch-net_dns_host__resolver__proc.cc b/devel/electron7/files/patch-net_dns_host__resolver__proc.cc
new file mode 100644
index 000000000000..44a2768d3f67
--- /dev/null
+++ b/devel/electron7/files/patch-net_dns_host__resolver__proc.cc
@@ -0,0 +1,11 @@
+--- net/dns/host_resolver_proc.cc.orig 2019-12-12 12:39:53 UTC
++++ net/dns/host_resolver_proc.cc
+@@ -197,7 +197,7 @@ int SystemHostResolverCall(const std::string& host,
+ base::ScopedBlockingCall scoped_blocking_call(FROM_HERE,
+ base::BlockingType::WILL_BLOCK);
+
+-#if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_OPENBSD) && \
++#if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_BSD) && \
+ !defined(OS_ANDROID) && !defined(OS_FUCHSIA)
+ DnsReloaderMaybeReload();
+ #endif
diff --git a/devel/electron7/files/patch-net_features.gni b/devel/electron7/files/patch-net_features.gni
new file mode 100644
index 000000000000..dfb2b6a3b1b8
--- /dev/null
+++ b/devel/electron7/files/patch-net_features.gni
@@ -0,0 +1,11 @@
+--- net/features.gni.orig 2019-12-12 12:39:53 UTC
++++ net/features.gni
+@@ -23,7 +23,7 @@ declare_args() {
+ disable_brotli_filter = false
+
+ # Multicast DNS.
+- enable_mdns = is_win || is_linux || is_fuchsia || is_mac || is_ios
++ enable_mdns = is_win || is_linux || is_fuchsia || is_mac || is_ios || is_bsd
+
+ # Reporting not used on iOS.
+ enable_reporting = !is_ios
diff --git a/devel/electron7/files/patch-net_http_http__auth__gssapi__posix.cc b/devel/electron7/files/patch-net_http_http__auth__gssapi__posix.cc
new file mode 100644
index 000000000000..2537104fd49a
--- /dev/null
+++ b/devel/electron7/files/patch-net_http_http__auth__gssapi__posix.cc
@@ -0,0 +1,14 @@
+--- net/http/http_auth_gssapi_posix.cc.orig 2019-12-12 12:39:53 UTC
++++ net/http/http_auth_gssapi_posix.cc
+@@ -366,8 +366,9 @@ base::NativeLibrary GSSAPISharedLibrary::LoadSharedLib
+ static const char* const kDefaultLibraryNames[] = {
+ #if defined(OS_MACOSX)
+ "/System/Library/Frameworks/GSS.framework/GSS"
+-#elif defined(OS_OPENBSD)
+- "libgssapi.so" // Heimdal - OpenBSD
++#elif defined(OS_BSD)
++ "libgssapi_krb5.so.2", // MIT Kerberos - FreeBSD
++ "libgssapi.so" // Heimdal - OpenBSD, FreeBSD
+ #else
+ "libgssapi_krb5.so.2", // MIT Kerberos - FC, Suse10, Debian
+ "libgssapi.so.4", // Heimdal - Suse10, MDK
diff --git a/devel/electron7/files/patch-net_http_http__auth__gssapi__posix.h b/devel/electron7/files/patch-net_http_http__auth__gssapi__posix.h
new file mode 100644
index 000000000000..60f4d483634e
--- /dev/null
+++ b/devel/electron7/files/patch-net_http_http__auth__gssapi__posix.h
@@ -0,0 +1,12 @@
+--- net/http/http_auth_gssapi_posix.h.orig 2019-12-12 12:39:53 UTC
++++ net/http/http_auth_gssapi_posix.h
+@@ -21,6 +21,9 @@
+ #include <GSS/gssapi.h>
+ #elif defined(OS_FREEBSD)
+ #include <gssapi/gssapi.h>
++#ifndef GSS_C_DELEG_POLICY_FLAG
++#define GSS_C_DELEG_POLICY_FLAG 32768
++#endif
+ #else
+ #include <gssapi.h>
+ #endif
diff --git a/devel/electron7/files/patch-net_nqe_network__quality__estimator.cc b/devel/electron7/files/patch-net_nqe_network__quality__estimator.cc
new file mode 100644
index 000000000000..2754c50e01f8
--- /dev/null
+++ b/devel/electron7/files/patch-net_nqe_network__quality__estimator.cc
@@ -0,0 +1,11 @@
+--- net/nqe/network_quality_estimator.cc.orig 2019-12-12 12:39:53 UTC
++++ net/nqe/network_quality_estimator.cc
+@@ -101,7 +101,7 @@ nqe::internal::NetworkID DoGetCurrentNetworkID() {
+ case NetworkChangeNotifier::ConnectionType::CONNECTION_ETHERNET:
+ break;
+ case NetworkChangeNotifier::ConnectionType::CONNECTION_WIFI:
+-#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_WIN)
++#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD)
+ network_id.id = GetWifiSSID();
+ #endif
+ break;
diff --git a/devel/electron7/files/patch-net_nqe_network__quality__estimator__unittest.cc b/devel/electron7/files/patch-net_nqe_network__quality__estimator__unittest.cc
new file mode 100644
index 000000000000..e58b82e100c4
--- /dev/null
+++ b/devel/electron7/files/patch-net_nqe_network__quality__estimator__unittest.cc
@@ -0,0 +1,11 @@
+--- net/nqe/network_quality_estimator_unittest.cc.orig 2019-12-12 12:39:53 UTC
++++ net/nqe/network_quality_estimator_unittest.cc
+@@ -2144,7 +2144,7 @@ TEST_F(NetworkQualityEstimatorTest, TestGlobalSocketWa
+ // TestTCPSocketRTT requires kernel support for tcp_info struct, and so it is
+ // enabled only on certain platforms.
+ // ChromeOS is disabled due to crbug.com/986904
+-#if (defined(TCP_INFO) || defined(OS_LINUX) || defined(OS_ANDROID)) && \
++#if (defined(TCP_INFO) || defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)) && \
+ !defined(OS_CHROMEOS)
+ #define MAYBE_TestTCPSocketRTT TestTCPSocketRTT
+ #else
diff --git a/devel/electron7/files/patch-net_proxy__resolution_proxy__config__service__linux.cc b/devel/electron7/files/patch-net_proxy__resolution_proxy__config__service__linux.cc
new file mode 100644
index 000000000000..9e43cc287e6a
--- /dev/null
+++ b/devel/electron7/files/patch-net_proxy__resolution_proxy__config__service__linux.cc
@@ -0,0 +1,39 @@
+--- net/proxy_resolution/proxy_config_service_linux.cc.orig 2019-12-12 12:39:53 UTC
++++ net/proxy_resolution/proxy_config_service_linux.cc
+@@ -6,7 +6,9 @@
+
+ #include <errno.h>
+ #include <limits.h>
++#if !defined(OS_BSD)
+ #include <sys/inotify.h>
++#endif
+ #include <unistd.h>
+
+ #include <map>
+@@ -495,6 +497,7 @@ int StringToIntOrDefault(base::StringPiece value, int
+ return default_value;
+ }
+
++#if !defined(OS_BSD)
+ // This is the KDE version that reads kioslaverc and simulates gsettings.
+ // Doing this allows the main Delegate code, as well as the unit tests
+ // for it, to stay the same - and the settings map fairly well besides.
+@@ -986,6 +989,7 @@ class SettingGetterImplKDE : public ProxyConfigService
+
+ DISALLOW_COPY_AND_ASSIGN(SettingGetterImplKDE);
+ };
++#endif
+
+ } // namespace
+
+@@ -1197,8 +1201,10 @@ ProxyConfigServiceLinux::Delegate::Delegate(
+ case base::nix::DESKTOP_ENVIRONMENT_KDE3:
+ case base::nix::DESKTOP_ENVIRONMENT_KDE4:
+ case base::nix::DESKTOP_ENVIRONMENT_KDE5:
++#if !defined(OS_BSD)
+ setting_getter_.reset(new SettingGetterImplKDE(env_var_getter_.get()));
+ break;
++#endif
+ case base::nix::DESKTOP_ENVIRONMENT_XFCE:
+ case base::nix::DESKTOP_ENVIRONMENT_OTHER:
+ break;
diff --git a/devel/electron7/files/patch-net_proxy__resolution_proxy__resolution__service.cc b/devel/electron7/files/patch-net_proxy__resolution_proxy__resolution__service.cc
new file mode 100644
index 000000000000..03e394546a53
--- /dev/null
+++ b/devel/electron7/files/patch-net_proxy__resolution_proxy__resolution__service.cc
@@ -0,0 +1,29 @@
+--- net/proxy_resolution/proxy_resolution_service.cc.orig 2019-12-12 12:39:53 UTC
++++ net/proxy_resolution/proxy_resolution_service.cc
+@@ -48,7 +48,7 @@
+ #elif defined(OS_MACOSX)
+ #include "net/proxy_resolution/proxy_config_service_mac.h"
+ #include "net/proxy_resolution/proxy_resolver_mac.h"
+-#elif defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#elif (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS)
+ #include "net/proxy_resolution/proxy_config_service_linux.h"
+ #elif defined(OS_ANDROID)
+ #include "net/proxy_resolution/proxy_config_service_android.h"
+@@ -62,7 +62,7 @@ namespace net {
+ namespace {
+
+ #if defined(OS_WIN) || defined(OS_IOS) || defined(OS_MACOSX) || \
+- (defined(OS_LINUX) && !defined(OS_CHROMEOS))
++ ((defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS))
+ constexpr net::NetworkTrafficAnnotationTag kSystemProxyConfigTrafficAnnotation =
+ net::DefineNetworkTrafficAnnotation("proxy_config_system", R"(
+ semantics {
+@@ -1547,7 +1547,7 @@ ProxyResolutionService::CreateSystemProxyConfigService
+ << "profile_io_data.cc::CreateProxyConfigService and this should "
+ << "be used only for examples.";
+ return std::make_unique<UnsetProxyConfigService>();
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ std::unique_ptr<ProxyConfigServiceLinux> linux_config_service(
+ new ProxyConfigServiceLinux());
+
diff --git a/devel/electron7/files/patch-net_socket_socket__posix.cc b/devel/electron7/files/patch-net_socket_socket__posix.cc
new file mode 100644
index 000000000000..5a61a7f4d801
--- /dev/null
+++ b/devel/electron7/files/patch-net_socket_socket__posix.cc
@@ -0,0 +1,11 @@
+--- net/socket/socket_posix.cc.orig 2019-12-12 12:39:54 UTC
++++ net/socket/socket_posix.cc
+@@ -520,7 +520,7 @@ void SocketPosix::ReadCompleted() {
+ }
+
+ int SocketPosix::DoWrite(IOBuffer* buf, int buf_len) {
+-#if defined(OS_LINUX) || defined(OS_ANDROID)
++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
+ // Disable SIGPIPE for this write. Although Chromium globally disables
+ // SIGPIPE, the net stack may be used in other consumers which do not do
+ // this. MSG_NOSIGNAL is a Linux-only API. On OS X, this is a setsockopt on
diff --git a/devel/electron7/files/patch-net_socket_socks5__client__socket.cc b/devel/electron7/files/patch-net_socket_socks5__client__socket.cc
new file mode 100644
index 000000000000..5a85507e7aa7
--- /dev/null
+++ b/devel/electron7/files/patch-net_socket_socks5__client__socket.cc
@@ -0,0 +1,13 @@
+--- net/socket/socks5_client_socket.cc.orig 2019-12-12 12:39:54 UTC
++++ net/socket/socks5_client_socket.cc
+@@ -4,6 +4,10 @@
+
+ #include "net/socket/socks5_client_socket.h"
+
++#if defined(OS_BSD)
++#include <netinet/in.h>
++#endif
++
+ #include <utility>
+
+ #include "base/bind.h"
diff --git a/devel/electron7/files/patch-net_socket_tcp__socket__posix.cc b/devel/electron7/files/patch-net_socket_tcp__socket__posix.cc
new file mode 100644
index 000000000000..65d680127d65
--- /dev/null
+++ b/devel/electron7/files/patch-net_socket_tcp__socket__posix.cc
@@ -0,0 +1,20 @@
+--- net/socket/tcp_socket_posix.cc.orig 2019-12-12 12:39:54 UTC
++++ net/socket/tcp_socket_posix.cc
+@@ -88,6 +88,17 @@ bool SetTCPKeepAlive(int fd, bool enable, int delay) {
+ PLOG(ERROR) << "Failed to set TCP_KEEPALIVE on fd: " << fd;
+ return false;
+ }
++#elif defined(OS_BSD)
++ // Set seconds until first TCP keep alive.
++ if (setsockopt(fd, IPPROTO_TCP, TCP_KEEPIDLE, &delay, sizeof(delay))) {
++ PLOG(ERROR) << "Failed to set TCP_KEEPIDLE on fd: " << fd;
++ return false;
++ }
++ // Set seconds between TCP keep alives.
++ if (setsockopt(fd, IPPROTO_TCP, TCP_KEEPINTVL, &delay, sizeof(delay))) {
++ PLOG(ERROR) << "Failed to set TCP_KEEPINTVL on fd: " << fd;
++ return false;
++ }
+ #endif
+ return true;
+ }
diff --git a/devel/electron7/files/patch-net_socket_udp__socket__posix.cc b/devel/electron7/files/patch-net_socket_udp__socket__posix.cc
new file mode 100644
index 000000000000..779ac8e50e92
--- /dev/null
+++ b/devel/electron7/files/patch-net_socket_udp__socket__posix.cc
@@ -0,0 +1,108 @@
+--- net/socket/udp_socket_posix.cc.orig 2019-12-12 12:39:54 UTC
++++ net/socket/udp_socket_posix.cc
+@@ -69,7 +69,7 @@ const int kActivityMonitorMinimumSamplesForThroughputE
+ const base::TimeDelta kActivityMonitorMsThreshold =
+ base::TimeDelta::FromMilliseconds(100);
+
+-#if defined(OS_MACOSX)
++#if defined(OS_MACOSX) || defined(OS_BSD)
+ // When enabling multicast using setsockopt(IP_MULTICAST_IF) MacOS
+ // requires passing IPv4 address instead of interface index. This function
+ // resolves IPv4 address by interface index. The |address| is returned in
+@@ -98,7 +98,7 @@ int GetIPv4AddressFromIndex(int socket, uint32_t index
+ return OK;
+ }
+
+-#endif // OS_MACOSX
++#endif // OS_MACOSX || OS_BSD
+
+ #if defined(OS_MACOSX) && !defined(OS_IOS)
+
+@@ -644,13 +644,13 @@ int UDPSocketPosix::SetDoNotFragment() {
+ }
+
+ void UDPSocketPosix::SetMsgConfirm(bool confirm) {
+-#if !defined(OS_MACOSX) && !defined(OS_IOS)
++#if !defined(OS_MACOSX) && !defined(OS_IOS) && !defined(OS_BSD)
+ if (confirm) {
+ sendto_flags_ |= MSG_CONFIRM;
+ } else {
+ sendto_flags_ &= ~MSG_CONFIRM;
+ }
+-#endif // !defined(OS_MACOSX) && !defined(OS_IOS)
++#endif // !defined(OS_MACOSX) && !defined(OS_IOS) && !defined(OS_BSD)
+ }
+
+ int UDPSocketPosix::AllowAddressReuse() {
+@@ -665,17 +665,20 @@ int UDPSocketPosix::SetBroadcast(bool broadcast) {
+ DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
+ int value = broadcast ? 1 : 0;
+ int rv;
+-#if defined(OS_MACOSX)
++#if defined(OS_MACOSX) || defined(OS_BSD)
+ // SO_REUSEPORT on OSX permits multiple processes to each receive
+ // UDP multicast or broadcast datagrams destined for the bound
+ // port.
+ // This is only being set on OSX because its behavior is platform dependent
+ // and we are playing it safe by only setting it on platforms where things
+ // break.
++ rv = setsockopt(socket_, SOL_SOCKET, SO_REUSEADDR, &value, sizeof(value));
++ if (rv != 0)
++ return MapSystemError(errno);
+ rv = setsockopt(socket_, SOL_SOCKET, SO_REUSEPORT, &value, sizeof(value));
+ if (rv != 0)
+ return MapSystemError(errno);
+-#endif // defined(OS_MACOSX)
++#endif // defined(OS_MACOSX) || defined(OS_BSD)
+ rv = setsockopt(socket_, SOL_SOCKET, SO_BROADCAST, &value, sizeof(value));
+
+ return rv == 0 ? OK : MapSystemError(errno);
+@@ -935,7 +938,7 @@ int UDPSocketPosix::SetMulticastOptions() {
+ if (multicast_interface_ != 0) {
+ switch (addr_family_) {
+ case AF_INET: {
+-#if defined(OS_MACOSX)
++#if defined(OS_MACOSX) || defined(OS_BSD)
+ ip_mreq mreq = {};
+ int error = GetIPv4AddressFromIndex(socket_, multicast_interface_,
+ &mreq.imr_interface.s_addr);
+@@ -947,7 +950,11 @@ int UDPSocketPosix::SetMulticastOptions() {
+ mreq.imr_address.s_addr = htonl(INADDR_ANY);
+ #endif // !defined(OS_MACOSX)
+ int rv = setsockopt(socket_, IPPROTO_IP, IP_MULTICAST_IF,
++#if defined(OS_BSD)
++ reinterpret_cast<const char*>(&mreq.imr_interface.s_addr), sizeof(mreq.imr_interface.s_addr));
++#else
+ reinterpret_cast<const char*>(&mreq), sizeof(mreq));
++#endif
+ if (rv)
+ return MapSystemError(errno);
+ break;
+@@ -1009,7 +1016,7 @@ int UDPSocketPosix::JoinGroup(const IPAddress& group_a
+ if (addr_family_ != AF_INET)
+ return ERR_ADDRESS_INVALID;
+
+-#if defined(OS_MACOSX)
++#if defined(OS_MACOSX) || defined(OS_BSD)
+ ip_mreq mreq = {};
+ int error = GetIPv4AddressFromIndex(socket_, multicast_interface_,
+ &mreq.imr_interface.s_addr);
+@@ -1057,9 +1064,18 @@ int UDPSocketPosix::LeaveGroup(const IPAddress& group_
+ case IPAddress::kIPv4AddressSize: {
+ if (addr_family_ != AF_INET)
+ return ERR_ADDRESS_INVALID;
++#if defined(OS_BSD)
++ ip_mreq mreq = {};
++ int error = GetIPv4AddressFromIndex(socket_, multicast_interface_,
++ &mreq.imr_interface.s_addr);
++
++ if (error != OK)
++ return error;
++#else
+ ip_mreqn mreq = {};
+ mreq.imr_ifindex = multicast_interface_;
+ mreq.imr_address.s_addr = INADDR_ANY;
++#endif
+ memcpy(&mreq.imr_multiaddr, group_address.bytes().data(),
+ IPAddress::kIPv4AddressSize);
+ int rv = setsockopt(socket_, IPPROTO_IP, IP_DROP_MEMBERSHIP,
diff --git a/devel/electron7/files/patch-net_socket_udp__socket__posix.h b/devel/electron7/files/patch-net_socket_udp__socket__posix.h
new file mode 100644
index 000000000000..ac84bd4d431d
--- /dev/null
+++ b/devel/electron7/files/patch-net_socket_udp__socket__posix.h
@@ -0,0 +1,11 @@
+--- net/socket/udp_socket_posix.h.orig 2019-12-12 12:39:54 UTC
++++ net/socket/udp_socket_posix.h
+@@ -33,7 +33,7 @@
+
+ #if defined(__ANDROID__) && defined(__aarch64__)
+ #define HAVE_SENDMMSG 1
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ #define HAVE_SENDMMSG 1
+ #else
+ #define HAVE_SENDMMSG 0
diff --git a/devel/electron7/files/patch-net_socket_unix__domain__client__socket__posix.cc b/devel/electron7/files/patch-net_socket_unix__domain__client__socket__posix.cc
new file mode 100644
index 000000000000..93c2cb269df9
--- /dev/null
+++ b/devel/electron7/files/patch-net_socket_unix__domain__client__socket__posix.cc
@@ -0,0 +1,11 @@
+--- net/socket/unix_domain_client_socket_posix.cc.orig 2019-12-12 12:39:54 UTC
++++ net/socket/unix_domain_client_socket_posix.cc
+@@ -56,7 +56,7 @@ bool UnixDomainClientSocket::FillAddress(const std::st
+ return true;
+ }
+
+-#if defined(OS_ANDROID) || defined(OS_LINUX)
++#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_BSD)
+ // Convert the path given into abstract socket name. It must start with
+ // the '\0' character, so we are adding it. |addr_len| must specify the
+ // length of the structure exactly, as potentially the socket name may
diff --git a/devel/electron7/files/patch-net_tools_cert__verify__tool_cert__verify__tool.cc b/devel/electron7/files/patch-net_tools_cert__verify__tool_cert__verify__tool.cc
new file mode 100644
index 000000000000..b798cd19c323
--- /dev/null
+++ b/devel/electron7/files/patch-net_tools_cert__verify__tool_cert__verify__tool.cc
@@ -0,0 +1,20 @@
+--- net/tools/cert_verify_tool/cert_verify_tool.cc.orig 2019-12-12 12:39:54 UTC
++++ net/tools/cert_verify_tool/cert_verify_tool.cc
+@@ -28,7 +28,7 @@
+ #include "net/url_request/url_request_context_builder.h"
+ #include "net/url_request/url_request_context_getter.h"
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include "net/proxy_resolution/proxy_config.h"
+ #include "net/proxy_resolution/proxy_config_service_fixed.h"
+ #endif
+@@ -49,7 +49,7 @@ void SetUpOnNetworkThread(
+ base::WaitableEvent* initialization_complete_event) {
+ net::URLRequestContextBuilder url_request_context_builder;
+ url_request_context_builder.set_user_agent(GetUserAgent());
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // On Linux, use a fixed ProxyConfigService, since the default one
+ // depends on glib.
+ //
diff --git a/devel/electron7/files/patch-net_tools_quic_quic__http__proxy__backend.cc b/devel/electron7/files/patch-net_tools_quic_quic__http__proxy__backend.cc
new file mode 100644
index 000000000000..bad15bfd16b1
--- /dev/null
+++ b/devel/electron7/files/patch-net_tools_quic_quic__http__proxy__backend.cc
@@ -0,0 +1,11 @@
+--- net/tools/quic/quic_http_proxy_backend.cc.orig 2019-12-12 12:39:54 UTC
++++ net/tools/quic/quic_http_proxy_backend.cc
+@@ -161,7 +161,7 @@ void QuicHttpProxyBackend::InitializeURLRequestContext
+ // Enable HTTP2, but disable QUIC on the backend
+ context_builder.SetSpdyAndQuicEnabled(true /* http2 */, false /* quic */);
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // On Linux, use a fixed ProxyConfigService, since the default one
+ // depends on glib.
+ context_builder.set_proxy_config_service(
diff --git a/devel/electron7/files/patch-net_traffic__annotation_network__traffic__annotation.h b/devel/electron7/files/patch-net_traffic__annotation_network__traffic__annotation.h
new file mode 100644
index 000000000000..949ba3389b11
--- /dev/null
+++ b/devel/electron7/files/patch-net_traffic__annotation_network__traffic__annotation.h
@@ -0,0 +1,20 @@
+--- net/traffic_annotation/network_traffic_annotation.h.orig 2019-12-12 12:39:54 UTC
++++ net/traffic_annotation/network_traffic_annotation.h
+@@ -356,7 +356,7 @@ struct MutablePartialNetworkTrafficAnnotationTag {
+ } // namespace net
+
+ // Placeholder for unannotated usages.
+-#if !defined(OS_WIN) && !defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if !defined(OS_WIN) && !defined(OS_LINUX) && !defined(OS_CHROMEOS) && !defined(OS_BSD)
+ #define TRAFFIC_ANNOTATION_WITHOUT_PROTO(ANNOTATION_ID) \
+ net::DefineNetworkTrafficAnnotation(ANNOTATION_ID, "No proto yet.")
+ #endif
+@@ -367,7 +367,7 @@ struct MutablePartialNetworkTrafficAnnotationTag {
+ //
+ // On Linux and Windows, use MISSING_TRAFFIC_ANNOTATION or
+ // TRAFFIC_ANNOTATION_FOR_TESTS.
+-#if (!defined(OS_WIN) && !defined(OS_LINUX)) || defined(OS_CHROMEOS)
++#if (!defined(OS_WIN) && !defined(OS_LINUX) && !defined(OS_BSD)) || defined(OS_CHROMEOS)
+ #define NO_TRAFFIC_ANNOTATION_YET \
+ net::DefineNetworkTrafficAnnotation("undefined", "Nothing here yet.")
+
diff --git a/devel/electron7/files/patch-net_url__request_url__fetcher.cc b/devel/electron7/files/patch-net_url__request_url__fetcher.cc
new file mode 100644
index 000000000000..3ffe18204b74
--- /dev/null
+++ b/devel/electron7/files/patch-net_url__request_url__fetcher.cc
@@ -0,0 +1,11 @@
+--- net/url_request/url_fetcher.cc.orig 2019-12-12 12:39:54 UTC
++++ net/url_request/url_fetcher.cc
+@@ -11,7 +11,7 @@ namespace net {
+
+ URLFetcher::~URLFetcher() = default;
+
+-#if (!defined(OS_WIN) && !defined(OS_LINUX)) || defined(OS_CHROMEOS)
++#if (!defined(OS_WIN) && !defined(OS_LINUX) && !defined(OS_BSD)) || defined(OS_CHROMEOS)
+ // static
+ std::unique_ptr<URLFetcher> URLFetcher::Create(
+ const GURL& url,
diff --git a/devel/electron7/files/patch-net_url__request_url__fetcher.h b/devel/electron7/files/patch-net_url__request_url__fetcher.h
new file mode 100644
index 000000000000..d564e629053b
--- /dev/null
+++ b/devel/electron7/files/patch-net_url__request_url__fetcher.h
@@ -0,0 +1,11 @@
+--- net/url_request/url_fetcher.h.orig 2019-12-12 12:39:54 UTC
++++ net/url_request/url_fetcher.h
+@@ -113,7 +113,7 @@ class NET_EXPORT URLFetcher {
+ // The unannotated Create() methods are not available on desktop Linux +
+ // Windows. They are available on other platforms, since we only audit network
+ // annotations on Linux & Windows.
+-#if (!defined(OS_WIN) && !defined(OS_LINUX)) || defined(OS_CHROMEOS)
++#if (!defined(OS_WIN) && !defined(OS_LINUX) && !defined(OS_BSD)) || defined(OS_CHROMEOS)
+ // |url| is the URL to send the request to. It must be valid.
+ // |request_type| is the type of request to make.
+ // |d| the object that will receive the callback on fetch completion.
diff --git a/devel/electron7/files/patch-net_url__request_url__request__context.cc b/devel/electron7/files/patch-net_url__request_url__request__context.cc
new file mode 100644
index 000000000000..9f4ab7fed770
--- /dev/null
+++ b/devel/electron7/files/patch-net_url__request_url__request__context.cc
@@ -0,0 +1,11 @@
+--- net/url_request/url_request_context.cc.orig 2019-12-12 12:39:54 UTC
++++ net/url_request/url_request_context.cc
+@@ -89,7 +89,7 @@ const HttpNetworkSession::Context* URLRequestContext::
+ return &network_session->context();
+ }
+
+-#if (!defined(OS_WIN) && !defined(OS_LINUX)) || defined(OS_CHROMEOS)
++#if (!defined(OS_WIN) && !defined(OS_LINUX) && !defined(OS_BSD)) || defined(OS_CHROMEOS)
+ std::unique_ptr<URLRequest> URLRequestContext::CreateRequest(
+ const GURL& url,
+ RequestPriority priority,
diff --git a/devel/electron7/files/patch-net_url__request_url__request__context.h b/devel/electron7/files/patch-net_url__request_url__request__context.h
new file mode 100644
index 000000000000..98d85babbce4
--- /dev/null
+++ b/devel/electron7/files/patch-net_url__request_url__request__context.h
@@ -0,0 +1,11 @@
+--- net/url_request/url_request_context.h.orig 2019-12-12 12:39:54 UTC
++++ net/url_request/url_request_context.h
+@@ -90,7 +90,7 @@ class NET_EXPORT URLRequestContext
+ // session.
+ const HttpNetworkSession::Context* GetNetworkSessionContext() const;
+
+-#if (!defined(OS_WIN) && !defined(OS_LINUX)) || defined(OS_CHROMEOS)
++#if (!defined(OS_WIN) && !defined(OS_LINUX) && !defined(OS_BSD)) || defined(OS_CHROMEOS)
+ // This function should not be used in Chromium, please use the version with
+ // NetworkTrafficAnnotationTag in the future.
+ //
diff --git a/devel/electron7/files/patch-net_url__request_url__request__context__builder.cc b/devel/electron7/files/patch-net_url__request_url__request__context__builder.cc
new file mode 100644
index 000000000000..e1b9898dce01
--- /dev/null
+++ b/devel/electron7/files/patch-net_url__request_url__request__context__builder.cc
@@ -0,0 +1,20 @@
+--- net/url_request/url_request_context_builder.cc.orig 2019-12-12 12:39:54 UTC
++++ net/url_request/url_request_context_builder.cc
+@@ -519,7 +519,7 @@ std::unique_ptr<URLRequestContext> URLRequestContextBu
+ }
+
+ if (!proxy_resolution_service_) {
+-#if !defined(OS_LINUX) && !defined(OS_ANDROID)
++#if !defined(OS_LINUX) && !defined(OS_ANDROID) && !defined(OS_BSD)
+ // TODO(willchan): Switch to using this code when
+ // ProxyResolutionService::CreateSystemProxyConfigService()'s signature
+ // doesn't suck.
+@@ -528,7 +528,7 @@ std::unique_ptr<URLRequestContext> URLRequestContextBu
+ ProxyResolutionService::CreateSystemProxyConfigService(
+ base::ThreadTaskRunnerHandle::Get().get());
+ }
+-#endif // !defined(OS_LINUX) && !defined(OS_ANDROID)
++#endif // !defined(OS_LINUX) && !defined(OS_ANDROID) && !defined(OS_BSD)
+ proxy_resolution_service_ = CreateProxyResolutionService(
+ std::move(proxy_config_service_), context.get(),
+ context->host_resolver(), context->network_delegate(),
diff --git a/devel/electron7/files/patch-pdf_pdfium_pdfium__engine.cc b/devel/electron7/files/patch-pdf_pdfium_pdfium__engine.cc
new file mode 100644
index 000000000000..76ae6b3f7334
--- /dev/null
+++ b/devel/electron7/files/patch-pdf_pdfium_pdfium__engine.cc
@@ -0,0 +1,56 @@
+--- pdf/pdfium/pdfium_engine.cc.orig 2019-12-12 12:39:54 UTC
++++ pdf/pdfium/pdfium_engine.cc
+@@ -53,7 +53,7 @@
+ #include "ui/gfx/geometry/rect.h"
+ #include "v8/include/v8.h"
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include "pdf/pdfium/pdfium_font_linux.h"
+ #endif
+
+@@ -378,7 +378,7 @@ bool InitializeSDK(bool enable_v8) {
+ config.m_v8EmbedderSlot = gin::kEmbedderPDFium;
+ FPDF_InitLibraryWithConfig(&config);
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ InitializeLinuxFontMapper();
+ #endif
+
+@@ -414,7 +414,7 @@ PDFiumEngine::PDFiumEngine(PDFEngine::Client* client,
+ IFSDK_PAUSE::user = nullptr;
+ IFSDK_PAUSE::NeedToPauseNow = Pause_NeedToPauseNow;
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // PreviewModeClient does not know its pp::Instance.
+ SetLastInstance(client_->GetPluginInstance());
+ #endif
+@@ -870,7 +870,7 @@ pp::Buffer_Dev PDFiumEngine::PrintPagesAsRasterPdf(
+
+ KillFormFocus();
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ SetLastInstance(client_->GetPluginInstance());
+ #endif
+
+@@ -2696,7 +2696,7 @@ bool PDFiumEngine::ContinuePaint(int progressive_index
+ DCHECK(image_data);
+
+ last_progressive_start_time_ = base::Time::Now();
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ SetLastInstance(client_->GetPluginInstance());
+ #endif
+
+@@ -3190,7 +3190,7 @@ void PDFiumEngine::SetCurrentPage(int index) {
+ FORM_DoPageAAction(old_page, form(), FPDFPAGE_AACTION_CLOSE);
+ }
+ most_visible_page_ = index;
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ SetLastInstance(client_->GetPluginInstance());
+ #endif
+ if (most_visible_page_ != -1 && called_do_document_action_) {
diff --git a/devel/electron7/files/patch-ppapi_proxy_file__io__resource.cc b/devel/electron7/files/patch-ppapi_proxy_file__io__resource.cc
new file mode 100644
index 000000000000..e1be0670c2cf
--- /dev/null
+++ b/devel/electron7/files/patch-ppapi_proxy_file__io__resource.cc
@@ -0,0 +1,48 @@
+--- ppapi/proxy/file_io_resource.cc.orig 2019-12-12 12:39:54 UTC
++++ ppapi/proxy/file_io_resource.cc
+@@ -285,17 +285,19 @@ int32_t FileIOResource::Write(int64_t offset,
+
+ if (check_quota_) {
+ int64_t increase = 0;
+- uint64_t max_offset = 0;
++ uint64_t _max_offset = 0;
++ // (rene) avoid name collission with /usr/include/vm/vm_map.h on FreeBSD
++ // which also defines max_offset
+ bool append = (open_flags_ & PP_FILEOPENFLAG_APPEND) != 0;
+ if (append) {
+ increase = bytes_to_write;
+ } else {
+- uint64_t max_offset = offset + bytes_to_write;
+- if (max_offset >
++ uint64_t _max_offset = offset + bytes_to_write;
++ if (_max_offset >
+ static_cast<uint64_t>(std::numeric_limits<int64_t>::max())) {
+ return PP_ERROR_FAILED; // amount calculation would overflow.
+ }
+- increase = static_cast<int64_t>(max_offset) - max_written_offset_;
++ increase = static_cast<int64_t>(_max_offset) - max_written_offset_;
+ }
+
+ if (increase > 0) {
+@@ -319,7 +321,7 @@ int32_t FileIOResource::Write(int64_t offset,
+ if (append)
+ append_mode_write_amount_ += bytes_to_write;
+ else
+- max_written_offset_ = max_offset;
++ max_written_offset_ = _max_offset;
+ }
+ }
+ return WriteValidated(offset, buffer, bytes_to_write, callback);
+@@ -597,9 +599,9 @@ void FileIOResource::OnRequestWriteQuotaComplete(
+ } else {
+ DCHECK_LE(offset + bytes_to_write - max_written_offset_, granted);
+
+- int64_t max_offset = offset + bytes_to_write;
+- if (max_written_offset_ < max_offset)
+- max_written_offset_ = max_offset;
++ int64_t _max_offset = offset + bytes_to_write;
++ if (max_written_offset_ < _max_offset)
++ max_written_offset_ = _max_offset;
+ }
+
+ if (callback->is_blocking()) {
diff --git a/devel/electron7/files/patch-ppapi_proxy_flash__resource.cc b/devel/electron7/files/patch-ppapi_proxy_flash__resource.cc
new file mode 100644
index 000000000000..2e2978bed50e
--- /dev/null
+++ b/devel/electron7/files/patch-ppapi_proxy_flash__resource.cc
@@ -0,0 +1,11 @@
+--- ppapi/proxy/flash_resource.cc.orig 2019-12-12 12:39:54 UTC
++++ ppapi/proxy/flash_resource.cc
+@@ -136,7 +136,7 @@ double FlashResource::GetLocalTimeZoneOffset(PP_Instan
+ // require filesystem access prohibited by the sandbox.
+ // TODO(shess): Figure out why OSX needs the access, the sandbox warmup should
+ // handle it. http://crbug.com/149006
+-#if defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ int32_t result = SyncCall<PpapiPluginMsg_Flash_GetLocalTimeZoneOffsetReply>(
+ BROWSER,
+ PpapiHostMsg_Flash_GetLocalTimeZoneOffset(PPTimeToTime(t)),
diff --git a/devel/electron7/files/patch-printing_cups__config__helper.py b/devel/electron7/files/patch-printing_cups__config__helper.py
new file mode 100644
index 000000000000..96eda0df4958
--- /dev/null
+++ b/devel/electron7/files/patch-printing_cups__config__helper.py
@@ -0,0 +1,11 @@
+--- printing/cups_config_helper.py.orig 2019-12-12 12:39:54 UTC
++++ printing/cups_config_helper.py
+@@ -65,7 +65,7 @@ def main():
+ mode = sys.argv[1]
+ if len(sys.argv) > 2 and sys.argv[2]:
+ sysroot = sys.argv[2]
+- cups_config = os.path.join(sysroot, 'usr', 'bin', 'cups-config')
++ cups_config = os.path.join(sysroot, 'bin', 'cups-config')
+ if not os.path.exists(cups_config):
+ print 'cups-config not found: %s' % cups_config
+ return 1
diff --git a/devel/electron7/files/patch-remoting_base_chromoting__event.cc b/devel/electron7/files/patch-remoting_base_chromoting__event.cc
new file mode 100644
index 000000000000..5da38adcaf1a
--- /dev/null
+++ b/devel/electron7/files/patch-remoting_base_chromoting__event.cc
@@ -0,0 +1,11 @@
+--- remoting/base/chromoting_event.cc.orig 2019-12-12 12:39:54 UTC
++++ remoting/base/chromoting_event.cc
+@@ -188,7 +188,7 @@ void ChromotingEvent::AddSystemInfo() {
+ SetString(kCpuKey, base::SysInfo::OperatingSystemArchitecture());
+ SetString(kOsVersionKey, base::SysInfo::OperatingSystemVersion());
+ SetString(kWebAppVersionKey, STRINGIZE(VERSION));
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ Os os = Os::CHROMOTING_LINUX;
+ #elif defined(OS_CHROMEOS)
+ Os os = Os::CHROMOTING_CHROMEOS;
diff --git a/devel/electron7/files/patch-remoting_client_display_sys__opengl.h b/devel/electron7/files/patch-remoting_client_display_sys__opengl.h
new file mode 100644
index 000000000000..7a80ece55f99
--- /dev/null
+++ b/devel/electron7/files/patch-remoting_client_display_sys__opengl.h
@@ -0,0 +1,11 @@
+--- remoting/client/display/sys_opengl.h.orig 2019-12-12 12:39:54 UTC
++++ remoting/client/display/sys_opengl.h
+@@ -9,7 +9,7 @@
+
+ #if defined(OS_IOS)
+ #include <OpenGLES/ES3/gl.h>
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ #define GL_GLEXT_PROTOTYPES
+ #include <GL/gl.h>
+ #include <GL/glext.h>
diff --git a/devel/electron7/files/patch-remoting_host_evaluate__capability.cc b/devel/electron7/files/patch-remoting_host_evaluate__capability.cc
new file mode 100644
index 000000000000..0544a8f2fc2f
--- /dev/null
+++ b/devel/electron7/files/patch-remoting_host_evaluate__capability.cc
@@ -0,0 +1,11 @@
+--- remoting/host/evaluate_capability.cc.orig 2019-12-12 12:39:55 UTC
++++ remoting/host/evaluate_capability.cc
+@@ -50,7 +50,7 @@ base::FilePath BuildHostBinaryPath() {
+ }
+ #endif
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ if (path.BaseName().value() ==
+ FILE_PATH_LITERAL("chrome-remote-desktop-host")) {
+ return path;
diff --git a/devel/electron7/files/patch-remoting_host_host__attributes.cc b/devel/electron7/files/patch-remoting_host_host__attributes.cc
new file mode 100644
index 000000000000..85cb8d572285
--- /dev/null
+++ b/devel/electron7/files/patch-remoting_host_host__attributes.cc
@@ -0,0 +1,11 @@
+--- remoting/host/host_attributes.cc.orig 2019-12-12 12:39:55 UTC
++++ remoting/host/host_attributes.cc
+@@ -124,7 +124,7 @@ std::string GetHostAttributes() {
+ media::InitializeMediaFoundation()) {
+ result.push_back("HWEncoder");
+ }
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ result.push_back("HWEncoder");
+ #endif
+
diff --git a/devel/electron7/files/patch-remoting_host_host__details.cc b/devel/electron7/files/patch-remoting_host_host__details.cc
new file mode 100644
index 000000000000..751f497e46cd
--- /dev/null
+++ b/devel/electron7/files/patch-remoting_host_host__details.cc
@@ -0,0 +1,11 @@
+--- remoting/host/host_details.cc.orig 2019-12-12 12:39:55 UTC
++++ remoting/host/host_details.cc
+@@ -22,7 +22,7 @@ std::string GetHostOperatingSystemName() {
+ return "Mac";
+ #elif defined(OS_CHROMEOS)
+ return "ChromeOS";
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ return "Linux";
+ #elif defined(OS_ANDROID)
+ return "Android";
diff --git a/devel/electron7/files/patch-remoting_host_host__main.cc b/devel/electron7/files/patch-remoting_host_host__main.cc
new file mode 100644
index 000000000000..40a7cee70eb1
--- /dev/null
+++ b/devel/electron7/files/patch-remoting_host_host__main.cc
@@ -0,0 +1,27 @@
+--- remoting/host/host_main.cc.orig 2019-12-12 12:39:55 UTC
++++ remoting/host/host_main.cc
+@@ -49,9 +49,9 @@ int DesktopProcessMain();
+ int FileChooserMain();
+ int RdpDesktopSessionMain();
+ #endif // defined(OS_WIN)
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ int XSessionChooserMain();
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+
+ namespace {
+
+@@ -146,10 +146,10 @@ MainRoutineFn SelectMainRoutine(const std::string& pro
+ } else if (process_type == kProcessTypeRdpDesktopSession) {
+ main_routine = &RdpDesktopSessionMain;
+ #endif // defined(OS_WIN)
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ } else if (process_type == kProcessTypeXSessionChooser) {
+ main_routine = &XSessionChooserMain;
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+ }
+
+ return main_routine;
diff --git a/devel/electron7/files/patch-remoting_host_it2me_it2me__native__messaging__host__main.cc b/devel/electron7/files/patch-remoting_host_it2me_it2me__native__messaging__host__main.cc
new file mode 100644
index 000000000000..17b292f07b52
--- /dev/null
+++ b/devel/electron7/files/patch-remoting_host_it2me_it2me__native__messaging__host__main.cc
@@ -0,0 +1,35 @@
+--- remoting/host/it2me/it2me_native_messaging_host_main.cc.orig 2019-12-12 12:39:55 UTC
++++ remoting/host/it2me/it2me_native_messaging_host_main.cc
+@@ -28,12 +28,12 @@
+ #include "remoting/host/resources.h"
+ #include "remoting/host/usage_stats_consent.h"
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include <gtk/gtk.h>
+
+ #include "base/linux_util.h"
+ #include "ui/gfx/x/x11.h"
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+
+ #if defined(OS_MACOSX)
+ #include "base/mac/scoped_nsautorelease_pool.h"
+@@ -108,7 +108,7 @@ int It2MeNativeMessagingHostMain(int argc, char** argv
+
+ remoting::LoadResources("");
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Required in order for us to run multiple X11 threads.
+ XInitThreads();
+
+@@ -124,7 +124,7 @@ int It2MeNativeMessagingHostMain(int argc, char** argv
+ // Need to prime the host OS version value for linux to prevent IO on the
+ // network thread. base::GetLinuxDistro() caches the result.
+ base::GetLinuxDistro();
+-#endif // OS_LINUX
++#endif // OS_LINUX || OS_BSD
+
+ base::File read_file;
+ base::File write_file;
diff --git a/devel/electron7/files/patch-remoting_host_me2me__desktop__environment.cc b/devel/electron7/files/patch-remoting_host_me2me__desktop__environment.cc
new file mode 100644
index 000000000000..590a020ff368
--- /dev/null
+++ b/devel/electron7/files/patch-remoting_host_me2me__desktop__environment.cc
@@ -0,0 +1,11 @@
+--- remoting/host/me2me_desktop_environment.cc.orig 2019-12-12 12:39:55 UTC
++++ remoting/host/me2me_desktop_environment.cc
+@@ -129,7 +129,7 @@ bool Me2MeDesktopEnvironment::InitializeSecurity(
+
+ // Otherwise, if the session is shared with the local user start monitoring
+ // the local input and create the in-session UI.
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ bool want_user_interface = false;
+ #elif defined(OS_MACOSX)
+ // Don't try to display any UI on top of the system's login screen as this
diff --git a/devel/electron7/files/patch-remoting_host_remoting__me2me__host.cc b/devel/electron7/files/patch-remoting_host_remoting__me2me__host.cc
new file mode 100644
index 000000000000..b8a446dd9fd4
--- /dev/null
+++ b/devel/electron7/files/patch-remoting_host_remoting__me2me__host.cc
@@ -0,0 +1,108 @@
+--- remoting/host/remoting_me2me_host.cc.orig 2019-12-12 12:39:55 UTC
++++ remoting/host/remoting_me2me_host.cc
+@@ -120,13 +120,13 @@
+ #include "remoting/host/mac/permission_utils.h"
+ #endif // defined(OS_MACOSX)
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include <gtk/gtk.h>
+ #include "base/linux_util.h"
+ #include "remoting/host/audio_capturer_linux.h"
+ #include "remoting/host/linux/certificate_watcher.h"
+ #include "ui/gfx/x/x11.h"
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+
+ #if defined(OS_WIN)
+ #include <commctrl.h>
+@@ -161,11 +161,11 @@ const char kApplicationName[] = "chromoting";
+ const char kStdinConfigPath[] = "-";
+ #endif // !defined(REMOTING_MULTI_PROCESS)
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // The command line switch used to pass name of the pipe to capture audio on
+ // linux.
+ const char kAudioPipeSwitchName[] = "audio-pipe-name";
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+
+ #if defined(OS_POSIX)
+ // The command line switch used to pass name of the unix domain socket used to
+@@ -358,7 +358,7 @@ class HostProcess : public ConfigWatcher::Delegate,
+
+ std::unique_ptr<ChromotingHostContext> context_;
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Watch for certificate changes and kill the host when changes occur
+ std::unique_ptr<CertificateWatcher> cert_watcher_;
+ #endif
+@@ -555,10 +555,10 @@ bool HostProcess::InitWithCommandLine(const base::Comm
+ enable_window_capture_ = cmd_line->HasSwitch(kWindowIdSwitchName);
+ if (enable_window_capture_) {
+
+-#if defined(OS_LINUX) || defined(OS_WIN)
++#if defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD)
+ LOG(WARNING) << "Window capturing is not fully supported on Linux or "
+ "Windows.";
+-#endif // defined(OS_LINUX) || defined(OS_WIN)
++#endif // defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD)
+
+ // uint32_t is large enough to hold window IDs on all platforms.
+ uint32_t window_id;
+@@ -753,7 +753,7 @@ void HostProcess::CreateAuthenticatorFactory() {
+ DCHECK(third_party_auth_config_.token_url.is_valid());
+ DCHECK(third_party_auth_config_.token_validation_url.is_valid());
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ if (!cert_watcher_) {
+ cert_watcher_.reset(new CertificateWatcher(
+ base::Bind(&HostProcess::ShutdownHost, this, kSuccessExitCode),
+@@ -839,7 +839,7 @@ void HostProcess::StartOnUiThread() {
+ base::Bind(&HostProcess::OnPolicyUpdate, base::Unretained(this)),
+ base::Bind(&HostProcess::OnPolicyError, base::Unretained(this)));
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // If an audio pipe is specific on the command-line then initialize
+ // AudioCapturerLinux to capture from it.
+ base::FilePath audio_pipe_name = base::CommandLine::ForCurrentProcess()->
+@@ -848,7 +848,7 @@ void HostProcess::StartOnUiThread() {
+ remoting::AudioCapturerLinux::InitializePipeReader(
+ context_->audio_task_runner(), audio_pipe_name);
+ }
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+
+ #if defined(OS_POSIX)
+ base::FilePath security_key_socket_name =
+@@ -903,7 +903,7 @@ void HostProcess::ShutdownOnUiThread() {
+ // It is now safe for the HostProcess to be deleted.
+ self_ = nullptr;
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Cause the global AudioPipeReader to be freed, otherwise the audio
+ // thread will remain in-use and prevent the process from exiting.
+ // TODO(wez): DesktopEnvironmentFactory should own the pipe reader.
+@@ -1532,7 +1532,7 @@ void HostProcess::StartHost() {
+ host_->AddExtension(std::make_unique<TestEchoExtension>());
+
+ // TODO(simonmorris): Get the maximum session duration from a policy.
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ host_->SetMaximumSessionDuration(base::TimeDelta::FromHours(20));
+ #endif
+
+@@ -1711,7 +1711,7 @@ void HostProcess::OnCrash(const std::string& function_
+ int HostProcessMain() {
+ HOST_LOG << "Starting host process: version " << STRINGIZE(VERSION);
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ if (!base::CommandLine::ForCurrentProcess()->HasSwitch(
+ kReportOfflineReasonSwitchName)) {
+ // Required in order for us to run multiple X11 threads.
diff --git a/devel/electron7/files/patch-remoting_host_switches.cc b/devel/electron7/files/patch-remoting_host_switches.cc
new file mode 100644
index 000000000000..2cb8c7cc028a
--- /dev/null
+++ b/devel/electron7/files/patch-remoting_host_switches.cc
@@ -0,0 +1,14 @@
+--- remoting/host/switches.cc.orig 2019-12-12 12:39:55 UTC
++++ remoting/host/switches.cc
+@@ -21,9 +21,9 @@ const char kProcessTypeHost[] = "host";
+ const char kProcessTypeRdpDesktopSession[] = "rdp_desktop_session";
+ const char kProcessTypeEvaluateCapability[] = "evaluate_capability";
+ const char kProcessTypeFileChooser[] = "file_chooser";
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ const char kProcessTypeXSessionChooser[] = "xsession_chooser";
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+
+ const char kEvaluateCapabilitySwitchName[] = "evaluate-type";
+
diff --git a/devel/electron7/files/patch-remoting_host_switches.h b/devel/electron7/files/patch-remoting_host_switches.h
new file mode 100644
index 000000000000..4edf0990ff6b
--- /dev/null
+++ b/devel/electron7/files/patch-remoting_host_switches.h
@@ -0,0 +1,14 @@
+--- remoting/host/switches.h.orig 2019-12-12 12:39:55 UTC
++++ remoting/host/switches.h
+@@ -34,9 +34,9 @@ extern const char kProcessTypeHost[];
+ extern const char kProcessTypeRdpDesktopSession[];
+ extern const char kProcessTypeEvaluateCapability[];
+ extern const char kProcessTypeFileChooser[];
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ extern const char kProcessTypeXSessionChooser[];
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+
+ extern const char kEvaluateCapabilitySwitchName[];
+
diff --git a/devel/electron7/files/patch-remoting_resources_remoting__strings.grd b/devel/electron7/files/patch-remoting_resources_remoting__strings.grd
new file mode 100644
index 000000000000..6ddef565e120
--- /dev/null
+++ b/devel/electron7/files/patch-remoting_resources_remoting__strings.grd
@@ -0,0 +1,20 @@
+--- remoting/resources/remoting_strings.grd.orig 2019-12-12 12:39:55 UTC
++++ remoting/resources/remoting_strings.grd
+@@ -1332,7 +1332,7 @@ If '<ph name="SERVICE_SCRIPT_NAME">$3<ex>org.chromium.
+ Not Now
+ </message>
+ </if>
+- <if expr="is_linux">
++ <if expr="is_posix">
+ <message name="IDS_SESSION_DIALOG_MESSAGE" desc="The message to show at the top of the session-selection dialog.">
+ Select a session to launch within your Chrome Remote Desktop environment. (Note that some session types may not support running within Chrome Remote Desktop and on the local console simultaneously.)
+ </message>
+@@ -1348,7 +1348,7 @@ If '<ph name="SERVICE_SCRIPT_NAME">$3<ex>org.chromium.
+ <message name="IDS_SESSION_DIALOG_DEFAULT_SESSION_COMMENT" desc="The comment for the entry to launch the default session.">
+ Launch the default XSession
+ </message>
+- </if> <!-- is_linux -->
++ </if> <!-- is_posix -->
+ </messages>
+ </release>
+ </grit>
diff --git a/devel/electron7/files/patch-remoting_webapp_base_js_platform.js b/devel/electron7/files/patch-remoting_webapp_base_js_platform.js
new file mode 100644
index 000000000000..f10871324095
--- /dev/null
+++ b/devel/electron7/files/patch-remoting_webapp_base_js_platform.js
@@ -0,0 +1,17 @@
+--- remoting/webapp/base/js/platform.js.orig 2019-12-12 12:39:56 UTC
++++ remoting/webapp/base/js/platform.js
+@@ -107,6 +107,14 @@ remoting.getSystemInfo = function() {
+ return result;
+ }
+
++ match = new RegExp('FreeBSD ([a-zA-Z0-9_]*)').exec(userAgent);
++ if (match && (match.length >= 2)) {
++ result.osName = remoting.Os.LINUX;
++ result.osVersion = '';
++ result.cpu = match[1];
++ return result;
++ }
++
+ match = new RegExp('([a-zA-Z]*) Mac OS X ([0-9_]*)').exec(userAgent);
+ if (match && (match.length >= 3)) {
+ result.osName = remoting.Os.MAC;
diff --git a/devel/electron7/files/patch-sandbox_features.gni b/devel/electron7/files/patch-sandbox_features.gni
new file mode 100644
index 000000000000..ba20f99b81a5
--- /dev/null
+++ b/devel/electron7/files/patch-sandbox_features.gni
@@ -0,0 +1,10 @@
+--- sandbox/features.gni.orig 2019-12-12 12:39:56 UTC
++++ sandbox/features.gni
+@@ -12,6 +12,6 @@ use_seccomp_bpf =
+ (is_linux || is_android) &&
+ (current_cpu == "x86" || current_cpu == "x64" || current_cpu == "arm" ||
+ current_cpu == "arm64" || current_cpu == "mipsel" ||
+- current_cpu == "mips64el")
++ current_cpu == "mips64el") && !is_bsd
+
+ use_seccomp_bpf = use_seccomp_bpf || is_nacl_nonsfi
diff --git a/devel/electron7/files/patch-sandbox_linux_BUILD.gn b/devel/electron7/files/patch-sandbox_linux_BUILD.gn
new file mode 100644
index 000000000000..d77f26457b0d
--- /dev/null
+++ b/devel/electron7/files/patch-sandbox_linux_BUILD.gn
@@ -0,0 +1,47 @@
+--- sandbox/linux/BUILD.gn.orig 2019-12-12 12:39:56 UTC
++++ sandbox/linux/BUILD.gn
+@@ -12,12 +12,12 @@ if (is_android) {
+ }
+
+ declare_args() {
+- compile_suid_client = is_linux
++ compile_suid_client = is_linux && !is_bsd
+
+- compile_credentials = is_linux
++ compile_credentials = is_linux && !is_bsd
+
+ # On Android, use plain GTest.
+- use_base_test_suite = is_linux
++ use_base_test_suite = is_linux && !is_bsd
+ }
+
+ if (is_nacl_nonsfi) {
+@@ -379,7 +379,7 @@ component("sandbox_services") {
+ public_deps += [ ":sandbox_services_headers" ]
+ }
+
+- if (is_nacl_nonsfi) {
++ if (is_nacl_nonsfi || is_bsd) {
+ cflags = [ "-fgnu-inline-asm" ]
+
+ sources -= [
+@@ -387,6 +387,8 @@ component("sandbox_services") {
+ "services/init_process_reaper.h",
+ "services/scoped_process.cc",
+ "services/scoped_process.h",
++ "services/syscall_wrappers.cc",
++ "services/syscall_wrappers.h",
+ "services/yama.cc",
+ "services/yama.h",
+ "syscall_broker/broker_channel.cc",
+@@ -405,6 +407,10 @@ component("sandbox_services") {
+ "syscall_broker/broker_process.h",
+ "syscall_broker/broker_simple_message.cc",
+ "syscall_broker/broker_simple_message.h",
++ ]
++ sources += [
++ "services/libc_interceptor.cc",
++ "services/libc_interceptor.h",
+ ]
+ } else if (!is_android) {
+ sources += [
diff --git a/devel/electron7/files/patch-sandbox_linux_services_init__process__reaper.cc b/devel/electron7/files/patch-sandbox_linux_services_init__process__reaper.cc
new file mode 100644
index 000000000000..27cb9925a3ad
--- /dev/null
+++ b/devel/electron7/files/patch-sandbox_linux_services_init__process__reaper.cc
@@ -0,0 +1,15 @@
+--- sandbox/linux/services/init_process_reaper.cc.orig 2019-12-12 12:39:56 UTC
++++ sandbox/linux/services/init_process_reaper.cc
+@@ -1,6 +1,7 @@
+ // Copyright 2013 The Chromium Authors. All rights reserved.
+ // Use of this source code is governed by a BSD-style license that can be
+ // found in the LICENSE file.
++#if 0
+
+ #include "sandbox/linux/services/init_process_reaper.h"
+
+@@ -100,3 +101,4 @@ bool CreateInitProcessReaper(base::OnceClosure post_fo
+ }
+
+ } // namespace sandbox.
++#endif
diff --git a/devel/electron7/files/patch-sandbox_linux_services_libc__interceptor.cc b/devel/electron7/files/patch-sandbox_linux_services_libc__interceptor.cc
new file mode 100644
index 000000000000..189467414de4
--- /dev/null
+++ b/devel/electron7/files/patch-sandbox_linux_services_libc__interceptor.cc
@@ -0,0 +1,21 @@
+--- sandbox/linux/services/libc_interceptor.cc.orig 2019-12-12 12:39:56 UTC
++++ sandbox/linux/services/libc_interceptor.cc
+@@ -11,7 +11,9 @@
+ #include <stddef.h>
+ #include <stdint.h>
+ #include <string.h>
++#if !defined(OS_BSD)
+ #include <sys/prctl.h>
++#endif
+ #include <sys/socket.h>
+ #include <sys/types.h>
+ #include <time.h>
+@@ -94,7 +96,7 @@ bool ReadTimeStruct(base::PickleIterator* iter,
+ } else {
+ base::AutoLock lock(g_timezones_lock.Get());
+ auto ret_pair = g_timezones.Get().insert(timezone);
+- output->tm_zone = ret_pair.first->c_str();
++ output->tm_zone = (char *)ret_pair.first->c_str();
+ }
+
+ return true;
diff --git a/devel/electron7/files/patch-services_audio_BUILD.gn b/devel/electron7/files/patch-services_audio_BUILD.gn
new file mode 100644
index 000000000000..d1afff7b92aa
--- /dev/null
+++ b/devel/electron7/files/patch-services_audio_BUILD.gn
@@ -0,0 +1,11 @@
+--- services/audio/BUILD.gn.orig 2019-12-12 12:39:56 UTC
++++ services/audio/BUILD.gn
+@@ -99,7 +99,7 @@ source_set("lib") {
+ "//services/service_manager/sandbox:sandbox",
+ ]
+
+- if (is_linux) {
++ if ((is_linux) && (!is_bsd)) {
+ sources += [
+ "audio_sandbox_hook_linux.cc",
+ "audio_sandbox_hook_linux.h",
diff --git a/devel/electron7/files/patch-services_device_geolocation_location__arbitrator.cc b/devel/electron7/files/patch-services_device_geolocation_location__arbitrator.cc
new file mode 100644
index 000000000000..fc595f4542ae
--- /dev/null
+++ b/devel/electron7/files/patch-services_device_geolocation_location__arbitrator.cc
@@ -0,0 +1,11 @@
+--- services/device/geolocation/location_arbitrator.cc.orig 2019-12-12 12:39:56 UTC
++++ services/device/geolocation/location_arbitrator.cc
+@@ -156,7 +156,7 @@ LocationArbitrator::NewNetworkLocationProvider(
+
+ std::unique_ptr<LocationProvider>
+ LocationArbitrator::NewSystemLocationProvider() {
+-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || \
++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD) || \
+ defined(OS_FUCHSIA)
+ return nullptr;
+ #else
diff --git a/devel/electron7/files/patch-services_device_hid_BUILD.gn b/devel/electron7/files/patch-services_device_hid_BUILD.gn
new file mode 100644
index 000000000000..f3770946c496
--- /dev/null
+++ b/devel/electron7/files/patch-services_device_hid_BUILD.gn
@@ -0,0 +1,22 @@
+--- services/device/hid/BUILD.gn.orig 2019-12-12 12:39:56 UTC
++++ services/device/hid/BUILD.gn
+@@ -51,6 +51,19 @@ source_set("hid") {
+ deps += [ "//device/udev_linux" ]
+ }
+
++ if (is_bsd) {
++ sources -= [
++ "hid_connection_linux.cc",
++ "hid_connection_linux.h",
++ ]
++ sources += [
++ "hid_connection_freebsd.cc",
++ "hid_connection_freebsd.h",
++ "hid_service_freebsd.cc",
++ "hid_service_freebsd.h",
++ ]
++ }
++
+ if (is_chromeos) {
+ deps += [ "//chromeos/dbus/permission_broker" ]
+ }
diff --git a/devel/electron7/files/patch-services_device_hid_hid__connection__freebsd.cc b/devel/electron7/files/patch-services_device_hid_hid__connection__freebsd.cc
new file mode 100644
index 000000000000..50ab83e890b5
--- /dev/null
+++ b/devel/electron7/files/patch-services_device_hid_hid__connection__freebsd.cc
@@ -0,0 +1,243 @@
+--- services/device/hid/hid_connection_freebsd.cc.orig 2019-12-16 13:33:58 UTC
++++ services/device/hid/hid_connection_freebsd.cc
+@@ -0,0 +1,240 @@
++// Copyright (c) 2014 The Chromium Authors. All rights reserved.
++// Use of this source code is governed by a BSD-style license that can be
++// found in the LICENSE file.
++
++#include "services/device/hid/hid_connection_freebsd.h"
++
++#include <dev/usb/usbhid.h>
++#include <dev/usb/usb_ioctl.h>
++
++#include "base/bind.h"
++#include "base/files/file_descriptor_watcher_posix.h"
++#include "base/location.h"
++#include "base/numerics/safe_math.h"
++#include "base/posix/eintr_wrapper.h"
++#include "base/single_thread_task_runner.h"
++#include "base/strings/stringprintf.h"
++#include "base/task/post_task.h"
++#include "base/threading/scoped_blocking_call.h"
++#include "base/threading/thread_restrictions.h"
++#include "base/threading/thread_task_runner_handle.h"
++#include "components/device_event_log/device_event_log.h"
++#include "services/device/hid/hid_service.h"
++
++namespace device {
++
++class HidConnectionFreeBSD::BlockingTaskHelper {
++ public:
++ BlockingTaskHelper(base::ScopedFD fd,
++ scoped_refptr<HidDeviceInfo> device_info,
++ base::WeakPtr<HidConnectionFreeBSD> connection)
++ : fd_(std::move(fd)),
++ connection_(connection),
++ origin_task_runner_(base::ThreadTaskRunnerHandle::Get()) {
++ DETACH_FROM_SEQUENCE(sequence_checker_);
++ // Report buffers must always have room for the report ID.
++ report_buffer_size_ = device_info->max_input_report_size() + 1;
++ has_report_id_ = device_info->has_report_id();
++ }
++
++ ~BlockingTaskHelper() { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); }
++
++ // Starts the FileDescriptorWatcher that reads input events from the device.
++ // Must be called on a thread that has a base::MessageLoopForIO.
++ void Start() {
++ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
++ base::internal::AssertBlockingAllowed();
++
++ file_watcher_ = base::FileDescriptorWatcher::WatchReadable(
++ fd_.get(), base::Bind(&BlockingTaskHelper::OnFileCanReadWithoutBlocking,
++ base::Unretained(this)));
++ }
++
++ void Write(scoped_refptr<base::RefCountedBytes> buffer,
++ WriteCallback callback) {
++ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
++ base::ScopedBlockingCall scoped_blocking_call(
++ FROM_HERE, base::BlockingType::MAY_BLOCK);
++
++ auto data = buffer->front();
++ size_t size = buffer->size();
++ // if report id is 0, it shouldn't be included
++ if (data[0] == 0) {
++ data++;
++ size--;
++ }
++
++ ssize_t result = HANDLE_EINTR(write(fd_.get(), data, size));
++ if (result < 0) {
++ HID_PLOG(EVENT) << "Write failed";
++ origin_task_runner_->PostTask(FROM_HERE, base::BindOnce(std::move(callback), false));
++ } else {
++ if (static_cast<size_t>(result) != size)
++ HID_LOG(EVENT) << "Incomplete HID write: " << result << " != " << size;
++ origin_task_runner_->PostTask(FROM_HERE, base::BindOnce(std::move(callback), true));
++ }
++ }
++
++ void GetFeatureReport(uint8_t report_id,
++ scoped_refptr<base::RefCountedBytes> buffer,
++ ReadCallback callback) {
++ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
++ base::ScopedBlockingCall scoped_blocking_call(
++ FROM_HERE, base::BlockingType::MAY_BLOCK);
++ struct usb_gen_descriptor ugd;
++ ugd.ugd_report_type = UHID_FEATURE_REPORT;
++ ugd.ugd_data = buffer->front();
++ ugd.ugd_maxlen = buffer->size();
++ int result = HANDLE_EINTR(
++ ioctl(fd_.get(), USB_GET_REPORT, &ugd));
++ if (result < 0) {
++ HID_PLOG(EVENT) << "Failed to get feature report";
++ origin_task_runner_->PostTask(FROM_HERE,
++ base::BindOnce(std::move(callback), false, nullptr, 0));
++ } else if (result == 0) {
++ HID_LOG(EVENT) << "Get feature result too short.";
++ origin_task_runner_->PostTask(FROM_HERE,
++ base::BindOnce(std::move(callback), false, nullptr, 0));
++ } else {
++ origin_task_runner_->PostTask(FROM_HERE,
++ base::BindOnce(std::move(callback), true, buffer, result));
++ }
++ }
++
++ void SendFeatureReport(scoped_refptr<base::RefCountedBytes> buffer,
++ WriteCallback callback) {
++ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
++ struct usb_gen_descriptor ugd;
++ ugd.ugd_report_type = UHID_FEATURE_REPORT;
++ ugd.ugd_data = buffer->front();
++ ugd.ugd_maxlen = buffer->size();
++ // FreeBSD does not require report id if it's not used
++ if (buffer->front()[0] == 0) {
++ ugd.ugd_data = buffer->front() + 1;
++ ugd.ugd_maxlen = buffer->size() - 1;
++ } else {
++ ugd.ugd_data = buffer->front();
++ ugd.ugd_maxlen = buffer->size();
++ }
++ int result = HANDLE_EINTR(
++ ioctl(fd_.get(), USB_SET_REPORT, &ugd));
++ if (result < 0) {
++ HID_PLOG(EVENT) << "Failed to send feature report";
++ origin_task_runner_->PostTask(FROM_HERE,
++ base::BindOnce(std::move(callback), false));
++ } else {
++ origin_task_runner_->PostTask(FROM_HERE,
++ base::BindOnce(std::move(callback), true));
++ }
++ }
++
++ private:
++ void OnFileCanReadWithoutBlocking() {
++ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
++
++ scoped_refptr<base::RefCountedBytes> buffer(new base::RefCountedBytes(report_buffer_size_));
++ unsigned char* data = buffer->front();
++ size_t length = report_buffer_size_;
++ if (!has_report_id_) {
++ // FreeBSD will not prefix the buffer with a report ID if report IDs are not
++ // used by the device. Prefix the buffer with 0.
++ *data++ = 0;
++ length--;
++ }
++
++ ssize_t bytes_read = HANDLE_EINTR(read(fd_.get(), data, length));
++ if (bytes_read < 0) {
++ if (errno != EAGAIN) {
++ HID_PLOG(EVENT) << "Read failed";
++ // This assumes that the error is unrecoverable and disables reading
++ // from the device until it has been re-opened.
++ // TODO(reillyg): Investigate starting and stopping the file descriptor
++ // watcher in response to pending read requests so that per-request
++ // errors can be returned to the client.
++ file_watcher_.reset();
++ }
++ return;
++ }
++ if (!has_report_id_) {
++ // Behave as if the byte prefixed above as the the report ID was read.
++ bytes_read++;
++ }
++
++ origin_task_runner_->PostTask(
++ FROM_HERE, base::BindOnce(&HidConnectionFreeBSD::ProcessInputReport,
++ connection_, buffer, bytes_read));
++ }
++
++ SEQUENCE_CHECKER(sequence_checker_);
++ base::ScopedFD fd_;
++ size_t report_buffer_size_;
++ bool has_report_id_;
++ base::WeakPtr<HidConnectionFreeBSD> connection_;
++ const scoped_refptr<base::SequencedTaskRunner> origin_task_runner_;
++ std::unique_ptr<base::FileDescriptorWatcher::Controller> file_watcher_;
++
++ DISALLOW_COPY_AND_ASSIGN(BlockingTaskHelper);
++};
++
++HidConnectionFreeBSD::HidConnectionFreeBSD(
++ scoped_refptr<HidDeviceInfo> device_info,
++ base::ScopedFD fd,
++ scoped_refptr<base::SequencedTaskRunner> blocking_task_runner)
++ : HidConnection(device_info),
++ blocking_task_runner_(std::move(blocking_task_runner)),
++ weak_factory_(this) {
++ helper_ = std::make_unique<BlockingTaskHelper>(std::move(fd), device_info,
++ weak_factory_.GetWeakPtr());
++ blocking_task_runner_->PostTask(
++ FROM_HERE, base::BindOnce(&BlockingTaskHelper::Start,
++ base::Unretained(helper_.get())));
++}
++
++HidConnectionFreeBSD::~HidConnectionFreeBSD() {}
++
++void HidConnectionFreeBSD::PlatformClose() {
++ // By closing the device on the blocking task runner 1) the requirement that
++ // base::ScopedFD is destroyed on a thread where I/O is allowed is satisfied
++ // and 2) any tasks posted to this task runner that refer to this file will
++ // complete before it is closed.
++ blocking_task_runner_->DeleteSoon(FROM_HERE, helper_.release());
++}
++
++void HidConnectionFreeBSD::PlatformWrite(scoped_refptr<base::RefCountedBytes> buffer,
++ WriteCallback callback) {
++
++ blocking_task_runner_->PostTask(
++ FROM_HERE,
++ base::BindOnce(&BlockingTaskHelper::Write, base::Unretained(helper_.get()),
++ buffer, std::move(callback)));
++}
++
++void HidConnectionFreeBSD::PlatformGetFeatureReport(uint8_t report_id,
++ ReadCallback callback) {
++ // The first byte of the destination buffer is the report ID being requested
++ // and is overwritten by the feature report.
++ DCHECK_GT(device_info()->max_feature_report_size(), 0u);
++ scoped_refptr<base::RefCountedBytes> buffer(
++ new base::RefCountedBytes(device_info()->max_feature_report_size() + 1));
++ if (report_id != 0)
++ buffer->data()[0] = report_id;
++
++ blocking_task_runner_->PostTask(
++ FROM_HERE,
++ base::BindOnce(&BlockingTaskHelper::GetFeatureReport,
++ base::Unretained(helper_.get()), report_id,
++ buffer, std::move(callback)));
++}
++
++void HidConnectionFreeBSD::PlatformSendFeatureReport(
++ scoped_refptr<base::RefCountedBytes> buffer,
++ WriteCallback callback) {
++ base::ScopedBlockingCall scoped_blocking_call(
++ FROM_HERE, base::BlockingType::MAY_BLOCK);
++ blocking_task_runner_->PostTask(
++ FROM_HERE,
++ base::BindOnce(&BlockingTaskHelper::SendFeatureReport,
++ base::Unretained(helper_.get()), buffer, std::move(callback)));
++}
++
++} // namespace device
diff --git a/devel/electron7/files/patch-services_device_hid_hid__connection__freebsd.h b/devel/electron7/files/patch-services_device_hid_hid__connection__freebsd.h
new file mode 100644
index 000000000000..dacc48e2ecf5
--- /dev/null
+++ b/devel/electron7/files/patch-services_device_hid_hid__connection__freebsd.h
@@ -0,0 +1,71 @@
+--- services/device/hid/hid_connection_freebsd.h.orig 2019-12-16 13:33:58 UTC
++++ services/device/hid/hid_connection_freebsd.h
+@@ -0,0 +1,68 @@
++// Copyright (c) 2014 The Chromium Authors. All rights reserved.
++// Use of this source code is governed by a BSD-style license that can be
++// found in the LICENSE file.
++
++#ifndef DEVICE_HID_HID_CONNECTION_FREEBSD_H_
++#define DEVICE_HID_HID_CONNECTION_FREEBSD_H_
++
++#include <stddef.h>
++#include <stdint.h>
++
++#include "base/files/scoped_file.h"
++#include "base/macros.h"
++#include "base/memory/ptr_util.h"
++#include "base/memory/ref_counted_memory.h"
++#include "base/memory/weak_ptr.h"
++#include "base/sequence_checker.h"
++#include "services/device/hid/hid_connection.h"
++
++namespace base {
++class SequencedTaskRunner;
++}
++
++namespace net {
++class IOBuffer;
++}
++
++namespace device {
++
++class HidConnectionFreeBSD : public HidConnection {
++ public:
++ HidConnectionFreeBSD(
++ scoped_refptr<HidDeviceInfo> device_info,
++ base::ScopedFD fd,
++ scoped_refptr<base::SequencedTaskRunner> blocking_task_runner);
++
++ private:
++ friend class base::RefCountedThreadSafe<HidConnectionFreeBSD>;
++ class BlockingTaskHelper;
++
++ ~HidConnectionFreeBSD() override;
++
++ // HidConnection implementation.
++ void PlatformClose() override;
++ void PlatformWrite(scoped_refptr<base::RefCountedBytes> buffer,
++ WriteCallback callback) override;
++ void PlatformGetFeatureReport(uint8_t report_id,
++ ReadCallback callback) override;
++ void PlatformSendFeatureReport(scoped_refptr<base::RefCountedBytes> buffer,
++ WriteCallback callback) override;
++
++ // |helper_| lives on the sequence to which |blocking_task_runner_| posts
++ // tasks so all calls must be posted there including this object's
++ // destruction.
++ std::unique_ptr<BlockingTaskHelper> helper_;
++
++ const scoped_refptr<base::SequencedTaskRunner> blocking_task_runner_;
++ const scoped_refptr<base::SequencedTaskRunner> task_runner_;
++
++ SEQUENCE_CHECKER(sequence_checker_);
++
++ base::WeakPtrFactory<HidConnectionFreeBSD> weak_factory_;
++
++ DISALLOW_COPY_AND_ASSIGN(HidConnectionFreeBSD);
++};
++
++} // namespace device
++
++#endif // DEVICE_HID_HID_CONNECTION_FREEBSD_H_
diff --git a/devel/electron7/files/patch-services_device_hid_hid__service.cc b/devel/electron7/files/patch-services_device_hid_hid__service.cc
new file mode 100644
index 000000000000..6682c4fa222c
--- /dev/null
+++ b/devel/electron7/files/patch-services_device_hid_hid__service.cc
@@ -0,0 +1,20 @@
+--- services/device/hid/hid_service.cc.orig 2019-12-12 12:39:56 UTC
++++ services/device/hid/hid_service.cc
+@@ -16,6 +16,8 @@
+
+ #if defined(OS_LINUX) && defined(USE_UDEV)
+ #include "services/device/hid/hid_service_linux.h"
++#elif defined(OS_BSD)
++#include "services/device/hid/hid_service_freebsd.h"
+ #elif defined(OS_MACOSX)
+ #include "services/device/hid/hid_service_mac.h"
+ #elif defined(OS_WIN)
+@@ -36,6 +38,8 @@ constexpr base::TaskTraits HidService::kBlockingTaskTr
+ std::unique_ptr<HidService> HidService::Create() {
+ #if defined(OS_LINUX) && defined(USE_UDEV)
+ return base::WrapUnique(new HidServiceLinux());
++#elif defined(OS_BSD)
++ return base::WrapUnique(new HidServiceFreeBSD());
+ #elif defined(OS_MACOSX)
+ return base::WrapUnique(new HidServiceMac());
+ #elif defined(OS_WIN)
diff --git a/devel/electron7/files/patch-services_device_hid_hid__service__freebsd.cc b/devel/electron7/files/patch-services_device_hid_hid__service__freebsd.cc
new file mode 100644
index 000000000000..3483a065076d
--- /dev/null
+++ b/devel/electron7/files/patch-services_device_hid_hid__service__freebsd.cc
@@ -0,0 +1,378 @@
+--- services/device/hid/hid_service_freebsd.cc.orig 2019-12-16 13:33:58 UTC
++++ services/device/hid/hid_service_freebsd.cc
+@@ -0,0 +1,375 @@
++// Copyright 2014 The Chromium Authors. All rights reserved.
++// Use of this source code is governed by a BSD-style license that can be
++// found in the LICENSE file.
++
++#include "services/device/hid/hid_service_freebsd.h"
++
++#include <dev/usb/usb_ioctl.h>
++#include <stdint.h>
++#include <sys/socket.h>
++#include <sys/un.h>
++
++#include <set>
++#include <string>
++#include <vector>
++
++#include "base/bind.h"
++#include "base/files/file_descriptor_watcher_posix.h"
++#include "base/files/file_enumerator.h"
++#include "base/files/file.h"
++#include "base/location.h"
++#include "base/logging.h"
++#include "base/posix/eintr_wrapper.h"
++#include "base/single_thread_task_runner.h"
++#include "base/stl_util.h"
++#include "base/strings/pattern.h"
++#include "base/strings/stringprintf.h"
++#include "base/strings/sys_string_conversions.h"
++#include "base/strings/string_util.h"
++#include "base/strings/string_split.h"
++#include "base/task/post_task.h"
++#include "base/threading/scoped_blocking_call.h"
++#include "base/threading/thread_task_runner_handle.h"
++#include "components/device_event_log/device_event_log.h"
++#include "services/device/hid/hid_connection_freebsd.h"
++
++const int kMaxPermissionChecks = 5;
++
++namespace device {
++
++struct HidServiceFreeBSD::ConnectParams {
++ ConnectParams(scoped_refptr<HidDeviceInfo> device_info,
++ const ConnectCallback& callback)
++ : device_info(std::move(device_info)),
++ callback(callback),
++ task_runner(base::ThreadTaskRunnerHandle::Get()),
++ blocking_task_runner(
++ base::CreateSequencedTaskRunnerWithTraits(kBlockingTaskTraits)) {}
++ ~ConnectParams() {}
++
++ scoped_refptr<HidDeviceInfo> device_info;
++ ConnectCallback callback;
++ scoped_refptr<base::SequencedTaskRunner> task_runner;
++ scoped_refptr<base::SequencedTaskRunner> blocking_task_runner;
++ base::ScopedFD fd;
++};
++
++class HidServiceFreeBSD::BlockingTaskHelper {
++ public:
++ BlockingTaskHelper(base::WeakPtr<HidServiceFreeBSD> service)
++ : service_(std::move(service)),
++ task_runner_(base::ThreadTaskRunnerHandle::Get()) {
++ DETACH_FROM_SEQUENCE(sequence_checker_);
++
++ timer_.reset(new base::RepeatingTimer());
++ devd_buffer_ = new net::IOBufferWithSize(1024);
++ }
++
++ ~BlockingTaskHelper() {
++ }
++
++ void Start() {
++ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
++
++ const base::FilePath kDevRoot("/dev");
++ const std::string kUHIDPattern("/dev/uhid*");
++
++ base::FileEnumerator enumerator(kDevRoot, false, base::FileEnumerator::FILES);
++ do {
++ const base::FilePath next_device_path(enumerator.Next());
++ const std::string next_device = next_device_path.value();
++ if (next_device.empty())
++ break;
++
++ if (base::MatchPattern(next_device, kUHIDPattern))
++ OnDeviceAdded(next_device.substr(5));
++ } while (true);
++
++ SetupDevdMonitor();
++
++ task_runner_->PostTask(
++ FROM_HERE,
++ base::Bind(&HidServiceFreeBSD::FirstEnumerationComplete, service_));
++ }
++
++ bool HaveReadWritePermissions(std::string device_id) {
++ std::string device_node = "/dev/" + device_id;
++ base::internal::AssertBlockingAllowed();
++
++ base::FilePath device_path(device_node);
++ base::File device_file;
++ int flags =
++ base::File::FLAG_OPEN | base::File::FLAG_READ | base::File::FLAG_WRITE;
++ device_file.Initialize(device_path, flags);
++ if (!device_file.IsValid())
++ return false;
++
++ return true;
++ }
++
++ void OnDeviceAdded(std::string device_id) {
++ base::ScopedBlockingCall scoped_blocking_call(
++ FROM_HERE, base::BlockingType::MAY_BLOCK);
++ std::string device_node = "/dev/" + device_id;
++ uint16_t vendor_id = 0xffff;
++ uint16_t product_id = 0xffff;
++ std::string product_name = "";
++ std::string serial_number = "";
++
++ std::vector<uint8_t> report_descriptor;
++
++ base::internal::AssertBlockingAllowed();
++
++ base::FilePath device_path(device_node);
++ base::File device_file;
++ int flags =
++ base::File::FLAG_OPEN | base::File::FLAG_READ | base::File::FLAG_WRITE;
++ device_file.Initialize(device_path, flags);
++ if (!device_file.IsValid()) {
++ HID_LOG(ERROR) << "Failed to open '" << device_node
++ << "': "
++ << base::File::ErrorToString(device_file.error_details());
++ return;
++ }
++
++ base::ScopedFD fd;
++ fd.reset(device_file.TakePlatformFile());
++
++ struct usb_gen_descriptor ugd;
++ ugd.ugd_data = NULL;
++ ugd.ugd_maxlen = 0xffff;
++ int result = HANDLE_EINTR(
++ ioctl(fd.get(), USB_GET_REPORT_DESC, &ugd));
++
++ if (result < 0) {
++ HID_LOG(ERROR) << "Failed to get report descriptor size";
++ return;
++ }
++
++ report_descriptor.resize(ugd.ugd_actlen);
++
++ ugd.ugd_data = report_descriptor.data();
++ ugd.ugd_maxlen = ugd.ugd_actlen;
++ result = HANDLE_EINTR(
++ ioctl(fd.get(), USB_GET_REPORT_DESC, &ugd));
++
++ if (result < 0) {
++ HID_LOG(ERROR) << "Failed to get report descriptor";
++ return;
++ }
++
++ scoped_refptr<HidDeviceInfo> device_info(new HidDeviceInfo(
++ device_id, vendor_id, product_id, product_name, serial_number,
++ device::mojom::HidBusType::kHIDBusTypeUSB,
++ report_descriptor, device_node));
++
++ task_runner_->PostTask(FROM_HERE, base::Bind(&HidServiceFreeBSD::AddDevice,
++ service_, device_info));
++ }
++
++ void OnDeviceRemoved(std::string device_id) {
++ base::ScopedBlockingCall scoped_blocking_call(
++ FROM_HERE, base::BlockingType::MAY_BLOCK);
++ task_runner_->PostTask(
++ FROM_HERE, base::Bind(&HidServiceFreeBSD::RemoveDevice, service_,
++ device_id));
++ }
++
++ private:
++
++ void CheckPendingPermissionChange() {
++ base::internal::AssertBlockingAllowed();
++ std::map<std::string, int>::iterator it;
++ for (it = permissions_checks_attempts_.begin(); it != permissions_checks_attempts_.end();) {
++ std::string device_name = it->first;
++ bool keep = true;
++ if (HaveReadWritePermissions(device_name)) {
++ OnDeviceAdded(device_name);
++ keep = false;
++ }
++ else if (it->second-- <= 0) {
++ HID_LOG(ERROR) << "Still don't have write permissions to '" << device_name
++ << "' after " << kMaxPermissionChecks << " attempts";
++ keep = false;
++ }
++
++ if (keep)
++ ++it;
++ else
++ permissions_checks_attempts_.erase(it++);
++ }
++
++ if (permissions_checks_attempts_.empty())
++ timer_->Stop();
++ }
++
++ void SetupDevdMonitor() {
++ base::internal::AssertBlockingAllowed();
++
++ int devd_fd = socket(AF_UNIX, SOCK_SEQPACKET, 0);
++ if (devd_fd < 0)
++ return;
++
++ struct sockaddr_un sa;
++
++ sa.sun_family = AF_UNIX;
++ strlcpy(sa.sun_path, "/var/run/devd.seqpacket.pipe", sizeof(sa.sun_path));
++ if (connect(devd_fd, (struct sockaddr *) &sa, sizeof(sa)) < 0) {
++ close(devd_fd);
++ return;
++ }
++
++ devd_fd_.reset(devd_fd);
++ file_watcher_ = base::FileDescriptorWatcher::WatchReadable(
++ devd_fd_.get(), base::Bind(&BlockingTaskHelper::OnDevdMessageCanBeRead,
++ base::Unretained(this)));
++ }
++
++ void OnDevdMessageCanBeRead() {
++ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
++ ssize_t bytes_read = HANDLE_EINTR(recv(devd_fd_.get(), devd_buffer_->data(),
++ devd_buffer_->size() - 1, MSG_WAITALL));
++ if (bytes_read < 0) {
++ if (errno != EAGAIN) {
++ HID_LOG(ERROR) << "Read failed";
++ file_watcher_.reset();
++ }
++ return;
++ }
++
++ devd_buffer_->data()[bytes_read] = 0;
++ char *data = devd_buffer_->data();
++ // It may take some time for devd to change permissions
++ // on /dev/uhidX node. So do not fail immediately if
++ // open fail. Retry each second for kMaxPermissionChecks
++ // times before giving up entirely
++ if (base::StartsWith(data, "+uhid", base::CompareCase::SENSITIVE)) {
++ std::vector<std::string> parts = base::SplitString(
++ data, " ", base::TRIM_WHITESPACE, base::SPLIT_WANT_ALL);
++ if (!parts.empty()) {
++ std::string device_name = parts[0].substr(1); // skip '+'
++ if (HaveReadWritePermissions(device_name))
++ OnDeviceAdded(parts[0].substr(1));
++ else {
++ // Do not re-add to checks
++ if (permissions_checks_attempts_.find(device_name) == permissions_checks_attempts_.end()) {
++ permissions_checks_attempts_.insert(std::pair<std::string, int>(device_name, kMaxPermissionChecks));
++ timer_->Start(FROM_HERE, base::TimeDelta::FromSeconds(1),
++ this, &BlockingTaskHelper::CheckPendingPermissionChange);
++ }
++ }
++ }
++ }
++
++ if (base::StartsWith(data, "-uhid", base::CompareCase::SENSITIVE)) {
++ std::vector<std::string> parts = base::SplitString(
++ data, " ", base::TRIM_WHITESPACE, base::SPLIT_WANT_ALL);
++ if (!parts.empty()) {
++ std::string device_name = parts[0].substr(1); // skip '-'
++ auto it = permissions_checks_attempts_.find(device_name);
++ if (it != permissions_checks_attempts_.end()) {
++ permissions_checks_attempts_.erase(it);
++ if (permissions_checks_attempts_.empty())
++ timer_->Stop();
++ }
++ OnDeviceRemoved(parts[0].substr(1));
++ }
++ }
++ }
++
++ SEQUENCE_CHECKER(sequence_checker_);
++
++ // This weak pointer is only valid when checked on this task runner.
++ base::WeakPtr<HidServiceFreeBSD> service_;
++ scoped_refptr<base::SequencedTaskRunner> task_runner_;
++ std::unique_ptr<base::FileDescriptorWatcher::Controller> file_watcher_;
++ std::unique_ptr<base::RepeatingTimer> timer_;
++ base::ScopedFD devd_fd_;
++ scoped_refptr<net::IOBufferWithSize> devd_buffer_;
++ std::map<std::string, int> permissions_checks_attempts_;
++
++ DISALLOW_COPY_AND_ASSIGN(BlockingTaskHelper);
++};
++
++HidServiceFreeBSD::HidServiceFreeBSD()
++ : task_runner_(base::ThreadTaskRunnerHandle::Get()),
++ blocking_task_runner_(
++ base::CreateSequencedTaskRunnerWithTraits(kBlockingTaskTraits)),
++ weak_factory_(this) {
++ helper_ = std::make_unique<BlockingTaskHelper>(weak_factory_.GetWeakPtr());
++ blocking_task_runner_->PostTask(
++ FROM_HERE,
++ base::Bind(&BlockingTaskHelper::Start, base::Unretained(helper_.get())));
++}
++
++HidServiceFreeBSD::~HidServiceFreeBSD() {
++ blocking_task_runner_->DeleteSoon(FROM_HERE, helper_.release());
++}
++
++base::WeakPtr<HidService> HidServiceFreeBSD::GetWeakPtr() {
++ return weak_factory_.GetWeakPtr();
++}
++
++// static
++void HidServiceFreeBSD::OpenOnBlockingThread(
++ std::unique_ptr<ConnectParams> params) {
++ base::ScopedBlockingCall scoped_blocking_call(
++ FROM_HERE, base::BlockingType::MAY_BLOCK);
++ scoped_refptr<base::SequencedTaskRunner> task_runner = params->task_runner;
++
++ base::FilePath device_path(params->device_info->device_node());
++ base::File device_file;
++ int flags =
++ base::File::FLAG_OPEN | base::File::FLAG_READ | base::File::FLAG_WRITE;
++ device_file.Initialize(device_path, flags);
++ if (!device_file.IsValid()) {
++ HID_LOG(EVENT) << "Failed to open '" << params->device_info->device_node()
++ << "': "
++ << base::File::ErrorToString(device_file.error_details());
++ task_runner->PostTask(FROM_HERE, base::Bind(params->callback, nullptr));
++ return;
++ }
++ params->fd.reset(device_file.TakePlatformFile());
++ FinishOpen(std::move(params));
++}
++
++void HidServiceFreeBSD::Connect(const std::string& device_guid,
++ const ConnectCallback& callback) {
++ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
++
++ const auto& map_entry = devices().find(device_guid);
++ if (map_entry == devices().end()) {
++ base::ThreadTaskRunnerHandle::Get()->PostTask(
++ FROM_HERE, base::Bind(callback, nullptr));
++ return;
++ }
++
++ scoped_refptr<HidDeviceInfo> device_info = map_entry->second;
++
++ auto params = std::make_unique<ConnectParams>(device_info, callback);
++
++ scoped_refptr<base::SequencedTaskRunner> blocking_task_runner =
++ params->blocking_task_runner;
++ blocking_task_runner->PostTask(
++ FROM_HERE, base::Bind(&HidServiceFreeBSD::OpenOnBlockingThread,
++ base::Passed(&params)));
++}
++
++// static
++void HidServiceFreeBSD::FinishOpen(std::unique_ptr<ConnectParams> params) {
++ scoped_refptr<base::SequencedTaskRunner> task_runner = params->task_runner;
++
++ task_runner->PostTask(
++ FROM_HERE,
++ base::Bind(&HidServiceFreeBSD::CreateConnection, base::Passed(&params)));
++}
++
++// static
++void HidServiceFreeBSD::CreateConnection(std::unique_ptr<ConnectParams> params) {
++ DCHECK(params->fd.is_valid());
++ params->callback.Run(base::MakeRefCounted<HidConnectionFreeBSD>(
++ std::move(params->device_info), std::move(params->fd),
++ std::move(params->blocking_task_runner)));
++}
++
++} // namespace device
diff --git a/devel/electron7/files/patch-services_device_hid_hid__service__freebsd.h b/devel/electron7/files/patch-services_device_hid_hid__service__freebsd.h
new file mode 100644
index 000000000000..a17dede195f5
--- /dev/null
+++ b/devel/electron7/files/patch-services_device_hid_hid__service__freebsd.h
@@ -0,0 +1,51 @@
+--- services/device/hid/hid_service_freebsd.h.orig 2019-12-16 13:33:58 UTC
++++ services/device/hid/hid_service_freebsd.h
+@@ -0,0 +1,48 @@
++// Copyright 2014 The Chromium Authors. All rights reserved.
++// Use of this source code is governed by a BSD-style license that can be
++// found in the LICENSE file.
++
++#ifndef DEVICE_HID_HID_SERVICE_FREEBSD_H_
++#define DEVICE_HID_HID_SERVICE_FREEBSD_H_
++
++#include <string>
++
++#include "base/macros.h"
++#include "base/memory/ref_counted.h"
++#include "base/memory/weak_ptr.h"
++#include "base/timer/timer.h"
++#include "services/device/hid/hid_service.h"
++#include "net/base/io_buffer.h"
++
++namespace device {
++
++class HidServiceFreeBSD : public HidService {
++ public:
++ HidServiceFreeBSD();
++ ~HidServiceFreeBSD() override;
++
++ void Connect(const std::string& device_guid,
++ const ConnectCallback& connect) override;
++ base::WeakPtr<HidService> GetWeakPtr() override;
++
++ private:
++ struct ConnectParams;
++ class BlockingTaskHelper;
++
++ static void OpenOnBlockingThread(std::unique_ptr<ConnectParams> params);
++ static void FinishOpen(std::unique_ptr<ConnectParams> params);
++ static void CreateConnection(std::unique_ptr<ConnectParams> params);
++
++ const scoped_refptr<base::SequencedTaskRunner> task_runner_;
++ const scoped_refptr<base::SequencedTaskRunner> blocking_task_runner_;
++ // |helper_| lives on the sequence |blocking_task_runner_| posts to and holds
++ // a weak reference back to the service that owns it.
++ std::unique_ptr<BlockingTaskHelper> helper_;
++ base::WeakPtrFactory<HidServiceFreeBSD> weak_factory_;
++
++ DISALLOW_COPY_AND_ASSIGN(HidServiceFreeBSD);
++};
++
++} // namespace device
++
++#endif // DEVICE_HID_HID_SERVICE_FREEBSD_H_
diff --git a/devel/electron7/files/patch-services_device_serial_BUILD.gn b/devel/electron7/files/patch-services_device_serial_BUILD.gn
new file mode 100644
index 000000000000..d81c6b6e869e
--- /dev/null
+++ b/devel/electron7/files/patch-services_device_serial_BUILD.gn
@@ -0,0 +1,11 @@
+--- services/device/serial/BUILD.gn.orig 2019-12-12 12:39:56 UTC
++++ services/device/serial/BUILD.gn
+@@ -4,7 +4,7 @@
+
+ import("//build/config/features.gni")
+
+-if (is_win || (is_linux && use_udev) || is_mac) {
++if (is_win || (is_linux && use_udev) || is_mac || is_bsd) {
+ config("platform_support") {
+ visibility = [ ":serial" ]
+ if (is_win) {
diff --git a/devel/electron7/files/patch-services_device_serial_serial__io__handler__posix.cc b/devel/electron7/files/patch-services_device_serial_serial__io__handler__posix.cc
new file mode 100644
index 000000000000..25259eb98776
--- /dev/null
+++ b/devel/electron7/files/patch-services_device_serial_serial__io__handler__posix.cc
@@ -0,0 +1,11 @@
+--- services/device/serial/serial_io_handler_posix.cc.orig 2019-12-12 12:39:56 UTC
++++ services/device/serial/serial_io_handler_posix.cc
+@@ -66,7 +66,7 @@ bool BitrateToSpeedConstant(int bitrate, speed_t* spee
+ BITRATE_TO_SPEED_CASE(9600)
+ BITRATE_TO_SPEED_CASE(19200)
+ BITRATE_TO_SPEED_CASE(38400)
+-#if !defined(OS_MACOSX)
++#if !defined(OS_MACOSX) && !defined(OS_BSD)
+ BITRATE_TO_SPEED_CASE(57600)
+ BITRATE_TO_SPEED_CASE(115200)
+ BITRATE_TO_SPEED_CASE(230400)
diff --git a/devel/electron7/files/patch-services_device_time__zone__monitor_time__zone__monitor.cc b/devel/electron7/files/patch-services_device_time__zone__monitor_time__zone__monitor.cc
new file mode 100644
index 000000000000..164a4cfe837a
--- /dev/null
+++ b/devel/electron7/files/patch-services_device_time__zone__monitor_time__zone__monitor.cc
@@ -0,0 +1,20 @@
+--- services/device/time_zone_monitor/time_zone_monitor.cc.orig 2019-12-12 12:39:56 UTC
++++ services/device/time_zone_monitor/time_zone_monitor.cc
+@@ -29,7 +29,7 @@ void TimeZoneMonitor::Bind(device::mojom::TimeZoneMoni
+
+ void TimeZoneMonitor::NotifyClients() {
+ DCHECK(thread_checker_.CalledOnValidThread());
+-#if defined(OS_CHROMEOS) || (defined(OS_LINUX) && defined(IS_CHROMECAST))
++#if defined(OS_CHROMEOS) || ((defined(OS_BSD) || defined(OS_LINUX)) && defined(IS_CHROMECAST))
+ // On CrOS (and Chromecast), ICU's default tz is already set to a new zone. No
+ // need to redetect it with detectHostTimeZone().
+ std::unique_ptr<icu::TimeZone> new_zone(icu::TimeZone::createDefault());
+@@ -41,7 +41,7 @@ void TimeZoneMonitor::NotifyClients() {
+ #else
+ std::unique_ptr<icu::TimeZone> new_zone(icu::TimeZone::detectHostTimeZone());
+ #endif
+-#if defined(OS_LINUX) && !defined(IS_CHROMECAST)
++#if (defined(OS_LINUX) && !defined(IS_CHROMECAST)) || defined(OS_BSD)
+ // We get here multiple times on Linux per a single tz change, but
+ // want to update the ICU default zone and notify renderer only once.
+ std::unique_ptr<icu::TimeZone> current_zone(icu::TimeZone::createDefault());
diff --git a/devel/electron7/files/patch-services_device_time__zone__monitor_time__zone__monitor__linux.cc b/devel/electron7/files/patch-services_device_time__zone__monitor_time__zone__monitor__linux.cc
new file mode 100644
index 000000000000..98e784ee1bd9
--- /dev/null
+++ b/devel/electron7/files/patch-services_device_time__zone__monitor_time__zone__monitor__linux.cc
@@ -0,0 +1,14 @@
+--- services/device/time_zone_monitor/time_zone_monitor_linux.cc.orig 2019-12-12 12:39:56 UTC
++++ services/device/time_zone_monitor/time_zone_monitor_linux.cc
+@@ -104,7 +104,11 @@ class TimeZoneMonitorLinuxImpl
+ // false positives are harmless, assuming the false positive rate is
+ // reasonable.
+ const char* const kFilesToWatch[] = {
++#if defined(OS_BSD)
++ "/etc/localtime",
++#else
+ "/etc/localtime", "/etc/timezone", "/etc/TZ",
++#endif
+ };
+ for (size_t index = 0; index < base::size(kFilesToWatch); ++index) {
+ file_path_watchers_.push_back(std::make_unique<base::FilePathWatcher>());
diff --git a/devel/electron7/files/patch-services_device_usb_BUILD.gn b/devel/electron7/files/patch-services_device_usb_BUILD.gn
new file mode 100644
index 000000000000..a07e255326f3
--- /dev/null
+++ b/devel/electron7/files/patch-services_device_usb_BUILD.gn
@@ -0,0 +1,11 @@
+--- services/device/usb/BUILD.gn.orig 2019-12-12 12:39:56 UTC
++++ services/device/usb/BUILD.gn
+@@ -110,7 +110,7 @@ static_library("usb") {
+ ]
+ }
+
+- if (is_android || is_chromeos || is_linux) {
++ if ((is_android || is_chromeos || is_linux) && !is_bsd) {
+ sources += [
+ "usb_device_handle_usbfs.cc",
+ "usb_device_handle_usbfs.h",
diff --git a/devel/electron7/files/patch-services_network_BUILD.gn b/devel/electron7/files/patch-services_network_BUILD.gn
new file mode 100644
index 000000000000..b1331b78036b
--- /dev/null
+++ b/devel/electron7/files/patch-services_network_BUILD.gn
@@ -0,0 +1,10 @@
+--- services/network/BUILD.gn.orig 2019-12-12 12:39:57 UTC
++++ services/network/BUILD.gn
+@@ -261,7 +261,6 @@ jumbo_component("network_service") {
+
+ if (is_linux) {
+ deps += [
+- "//sandbox/linux:sandbox_services",
+ "//services/service_manager/sandbox:sandbox",
+ ]
+ }
diff --git a/devel/electron7/files/patch-services_network_network__context.cc b/devel/electron7/files/patch-services_network_network__context.cc
new file mode 100644
index 000000000000..489bd879b484
--- /dev/null
+++ b/devel/electron7/files/patch-services_network_network__context.cc
@@ -0,0 +1,11 @@
+--- services/network/network_context.cc.orig 2019-12-16 13:32:59 UTC
++++ services/network/network_context.cc
+@@ -1875,7 +1875,7 @@ URLRequestContextOwner NetworkContext::MakeURLRequestC
+
+ net::CookieCryptoDelegate* crypto_delegate = nullptr;
+ if (params_->enable_encrypted_cookies) {
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) && !defined(IS_CHROMECAST)
++#if (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS) && !defined(IS_CHROMECAST)
+ DCHECK(network_service_->os_crypt_config_set())
+ << "NetworkService::SetCryptConfig must be called before creating a "
+ "NetworkContext with encrypted cookies.";
diff --git a/devel/electron7/files/patch-services_network_network__sandbox__hook__linux.cc b/devel/electron7/files/patch-services_network_network__sandbox__hook__linux.cc
new file mode 100644
index 000000000000..f0dae93d1efa
--- /dev/null
+++ b/devel/electron7/files/patch-services_network_network__sandbox__hook__linux.cc
@@ -0,0 +1,18 @@
+--- services/network/network_sandbox_hook_linux.cc.orig 2019-12-12 12:39:57 UTC
++++ services/network/network_sandbox_hook_linux.cc
+@@ -14,6 +14,7 @@ using sandbox::syscall_broker::MakeBrokerCommandSet;
+ namespace network {
+
+ bool NetworkPreSandboxHook(service_manager::SandboxLinux::Options options) {
++#if !defined(OS_BSD)
+ auto* instance = service_manager::SandboxLinux::GetInstance();
+
+ // TODO(tsepez): remove universal permission under filesytem root.
+@@ -32,6 +33,7 @@ bool NetworkPreSandboxHook(service_manager::SandboxLin
+ service_manager::SandboxLinux::PreSandboxHook(), options);
+
+ instance->EngageNamespaceSandboxIfPossible();
++#endif // defined(OS_BSD)
+ return true;
+ }
+
diff --git a/devel/electron7/files/patch-services_network_network__service.cc b/devel/electron7/files/patch-services_network_network__service.cc
new file mode 100644
index 000000000000..ad988e10f967
--- /dev/null
+++ b/devel/electron7/files/patch-services_network_network__service.cc
@@ -0,0 +1,20 @@
+--- services/network/network_service.cc.orig 2019-12-12 12:39:57 UTC
++++ services/network/network_service.cc
+@@ -62,7 +62,7 @@
+ #include "third_party/boringssl/src/include/openssl/cpu.h"
+ #endif
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) && !defined(IS_CHROMECAST)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS) && !defined(IS_CHROMECAST)) || defined(OS_BSD)
+ #include "components/os_crypt/key_storage_config_linux.h"
+ #endif
+
+@@ -596,7 +596,7 @@ void NetworkService::OnCertDBChanged() {
+ net::CertDatabase::GetInstance()->NotifyObserversCertDBChanged();
+ }
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ void NetworkService::SetCryptConfig(mojom::CryptConfigPtr crypt_config) {
+ #if !defined(IS_CHROMECAST)
+ DCHECK(!os_crypt_config_set_);
diff --git a/devel/electron7/files/patch-services_network_network__service.h b/devel/electron7/files/patch-services_network_network__service.h
new file mode 100644
index 000000000000..7da1308fc79b
--- /dev/null
+++ b/devel/electron7/files/patch-services_network_network__service.h
@@ -0,0 +1,11 @@
+--- services/network/network_service.h.orig 2019-12-12 12:39:57 UTC
++++ services/network/network_service.h
+@@ -152,7 +152,7 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) NetworkService
+ mojom::NetworkService::GetNetworkListCallback callback) override;
+ void UpdateCRLSet(base::span<const uint8_t> crl_set) override;
+ void OnCertDBChanged() override;
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ void SetCryptConfig(mojom::CryptConfigPtr crypt_config) override;
+ #endif
+ #if defined(OS_MACOSX) && !defined(OS_IOS)
diff --git a/devel/electron7/files/patch-services_resource__coordinator_memory__instrumentation_queued__request__dispatcher.cc b/devel/electron7/files/patch-services_resource__coordinator_memory__instrumentation_queued__request__dispatcher.cc
new file mode 100644
index 000000000000..13407d526127
--- /dev/null
+++ b/devel/electron7/files/patch-services_resource__coordinator_memory__instrumentation_queued__request__dispatcher.cc
@@ -0,0 +1,20 @@
+--- services/resource_coordinator/memory_instrumentation/queued_request_dispatcher.cc.orig 2019-12-12 12:39:57 UTC
++++ services/resource_coordinator/memory_instrumentation/queued_request_dispatcher.cc
+@@ -43,7 +43,7 @@ namespace {
+ uint32_t CalculatePrivateFootprintKb(const mojom::RawOSMemDump& os_dump,
+ uint32_t shared_resident_kb) {
+ DCHECK(os_dump.platform_private_footprint);
+-#if defined(OS_LINUX) || defined(OS_ANDROID)
++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
+ uint64_t rss_anon_bytes = os_dump.platform_private_footprint->rss_anon_bytes;
+ uint64_t vm_swap_bytes = os_dump.platform_private_footprint->vm_swap_bytes;
+ return (rss_anon_bytes + vm_swap_bytes) / 1024;
+@@ -82,7 +82,7 @@ memory_instrumentation::mojom::OSMemDumpPtr CreatePubl
+ os_dump->is_peak_rss_resettable = internal_os_dump.is_peak_rss_resettable;
+ os_dump->private_footprint_kb =
+ CalculatePrivateFootprintKb(internal_os_dump, shared_resident_kb);
+-#if defined(OS_LINUX) || defined(OS_ANDROID)
++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
+ os_dump->private_footprint_swap_kb =
+ internal_os_dump.platform_private_footprint->vm_swap_bytes / 1024;
+ #endif
diff --git a/devel/electron7/files/patch-services_resource__coordinator_public_cpp_memory__instrumentation_os__metrics.h b/devel/electron7/files/patch-services_resource__coordinator_public_cpp_memory__instrumentation_os__metrics.h
new file mode 100644
index 000000000000..8e6f6ca5984e
--- /dev/null
+++ b/devel/electron7/files/patch-services_resource__coordinator_public_cpp_memory__instrumentation_os__metrics.h
@@ -0,0 +1,32 @@
+--- services/resource_coordinator/public/cpp/memory_instrumentation/os_metrics.h.orig 2019-12-12 12:39:57 UTC
++++ services/resource_coordinator/public/cpp/memory_instrumentation/os_metrics.h
+@@ -28,9 +28,9 @@ class COMPONENT_EXPORT(
+ mojom::RawOSMemDump*);
+ static std::vector<mojom::VmRegionPtr> GetProcessMemoryMaps(base::ProcessId);
+
+-#if defined(OS_LINUX) || defined(OS_ANDROID)
++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
+ static void SetProcSmapsForTesting(FILE*);
+-#endif // defined(OS_LINUX) || defined(OS_ANDROID)
++#endif // defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
+
+ private:
+ FRIEND_TEST_ALL_PREFIXES(OSMetricsTest, ParseProcSmaps);
+@@ -44,7 +44,7 @@ class COMPONENT_EXPORT(
+ static std::vector<mojom::VmRegionPtr> GetProcessModules(base::ProcessId);
+ #endif
+
+-#if defined(OS_LINUX) || defined(OS_ANDROID)
++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
+ // Provides information on the dump state of resident pages.
+ enum class MappedAndResidentPagesDumpState {
+ // Access to /proc/<pid>/pagemap can be denied for android devices running
+@@ -68,7 +68,7 @@ class COMPONENT_EXPORT(
+ // TODO(chiniforooshan): move to /base/process/process_metrics_linux.cc after
+ // making sure that peak RSS is useful.
+ static size_t GetPeakResidentSetSize(base::ProcessId pid);
+-#endif // defined(OS_LINUX) || defined(OS_ANDROID)
++#endif // defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
+ };
+
+ } // namespace memory_instrumentation
diff --git a/devel/electron7/files/patch-services_resource__coordinator_public_cpp_memory__instrumentation_os__metrics__linux.cc b/devel/electron7/files/patch-services_resource__coordinator_public_cpp_memory__instrumentation_os__metrics__linux.cc
new file mode 100644
index 000000000000..89c86e73f3cf
--- /dev/null
+++ b/devel/electron7/files/patch-services_resource__coordinator_public_cpp_memory__instrumentation_os__metrics__linux.cc
@@ -0,0 +1,103 @@
+--- services/resource_coordinator/public/cpp/memory_instrumentation/os_metrics_linux.cc.orig 2019-12-12 12:39:57 UTC
++++ services/resource_coordinator/public/cpp/memory_instrumentation/os_metrics_linux.cc
+@@ -22,8 +22,10 @@
+ #include "build/build_config.h"
+ #include "services/resource_coordinator/public/cpp/memory_instrumentation/os_metrics.h"
+
++#if !defined(OS_BSD)
+ // Symbol with virtual address of the start of ELF header of the current binary.
+ extern char __ehdr_start;
++#endif
+
+ namespace memory_instrumentation {
+
+@@ -86,6 +88,7 @@ struct ModuleData {
+
+ ModuleData GetMainModuleData() {
+ ModuleData module_data;
++#if !defined(OS_BSD)
+ Dl_info dl_info;
+ if (dladdr(&__ehdr_start, &dl_info)) {
+ base::debug::ElfBuildIdBuffer build_id;
+@@ -96,6 +99,7 @@ ModuleData GetMainModuleData() {
+ module_data.build_id = std::string(build_id, build_id_length);
+ }
+ }
++#endif
+ return module_data;
+ }
+
+@@ -143,14 +147,14 @@ bool ParseSmapsHeader(const char* header_line,
+ // Build ID is needed to symbolize heap profiles, and is generated only on
+ // official builds. Build ID is only added for the current library (chrome)
+ // since it is racy to read other libraries which can be unmapped any time.
+-#if defined(OFFICIAL_BUILD)
++#if defined(OFFICIAL_BUILD) && !defined(OS_BSD)
+ if (!region->mapped_file.empty() &&
+ base::StartsWith(main_module_data.path, region->mapped_file,
+ base::CompareCase::SENSITIVE) &&
+ !main_module_data.build_id.empty()) {
+ region->module_debugid = main_module_data.build_id;
+ }
+-#endif // defined(OFFICIAL_BUILD)
++#endif // defined(OFFICIAL_BUILD) && !defined(OS_BSD)
+
+ return res;
+ }
+@@ -239,6 +243,7 @@ bool OSMetrics::FillOSMemoryDump(base::ProcessId pid,
+ mojom::RawOSMemDump* dump) {
+ // TODO(chiniforooshan): There is no need to read both /statm and /status
+ // files. Refactor to get everything from /status using ProcessMetric.
++#if !defined(OS_BSD)
+ auto statm_file = GetProcPidDir(pid).Append("statm");
+ auto autoclose = base::ScopedFD(open(statm_file.value().c_str(), O_RDONLY));
+ int statm_fd = autoclose.get();
+@@ -253,6 +258,10 @@ bool OSMetrics::FillOSMemoryDump(base::ProcessId pid,
+
+ if (!success)
+ return false;
++#else
++ uint64_t resident_pages = 0;
++ uint64_t shared_pages = 0;
++#endif
+
+ auto process_metrics = CreateProcessMetrics(pid);
+
+@@ -293,6 +302,10 @@ bool OSMetrics::FillOSMemoryDump(base::ProcessId pid,
+
+ // static
+ std::vector<VmRegionPtr> OSMetrics::GetProcessMemoryMaps(base::ProcessId pid) {
++#if defined(OS_BSD)
++ NOTIMPLEMENTED();
++ return std::vector<VmRegionPtr>();
++#else
+ std::vector<VmRegionPtr> maps;
+ uint32_t res = 0;
+ if (g_proc_smaps_for_testing) {
+@@ -310,6 +323,7 @@ std::vector<VmRegionPtr> OSMetrics::GetProcessMemoryMa
+ return std::vector<VmRegionPtr>();
+
+ return maps;
++#endif
+ }
+
+ // static
+@@ -317,6 +331,10 @@ OSMetrics::MappedAndResidentPagesDumpState OSMetrics::
+ const size_t start_address,
+ const size_t end_address,
+ std::vector<uint8_t>* accessed_pages_bitmap) {
++#if defined(OS_BSD)
++ NOTIMPLEMENTED();
++ return OSMetrics::MappedAndResidentPagesDumpState::kFailure;
++#else
+ const char* kPagemap = "/proc/self/pagemap";
+
+ base::ScopedFILE pagemap_file(fopen(kPagemap, "r"));
+@@ -358,6 +376,7 @@ OSMetrics::MappedAndResidentPagesDumpState OSMetrics::
+ }
+ }
+ return OSMetrics::MappedAndResidentPagesDumpState::kSuccess;
++#endif
+ }
+
+ // static
diff --git a/devel/electron7/files/patch-services_service__manager_embedder_main.cc b/devel/electron7/files/patch-services_service__manager_embedder_main.cc
new file mode 100644
index 000000000000..59e18404b7d1
--- /dev/null
+++ b/devel/electron7/files/patch-services_service__manager_embedder_main.cc
@@ -0,0 +1,11 @@
+--- services/service_manager/embedder/main.cc.orig 2019-12-12 12:39:57 UTC
++++ services/service_manager/embedder/main.cc
+@@ -272,7 +272,7 @@ int Main(const MainParams& params) {
+ #endif
+ base::EnableTerminationOnOutOfMemory();
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // The various desktop environments set this environment variable that
+ // allows the dbus client library to connect directly to the bus. When this
+ // variable is not set (test environments like xvfb-run), the dbus client
diff --git a/devel/electron7/files/patch-services_service__manager_embedder_set__process__title__linux.cc b/devel/electron7/files/patch-services_service__manager_embedder_set__process__title__linux.cc
new file mode 100644
index 000000000000..8d8ce43519f4
--- /dev/null
+++ b/devel/electron7/files/patch-services_service__manager_embedder_set__process__title__linux.cc
@@ -0,0 +1,19 @@
+--- services/service_manager/embedder/set_process_title_linux.cc.orig 2019-12-12 12:39:57 UTC
++++ services/service_manager/embedder/set_process_title_linux.cc
+@@ -49,6 +49,8 @@
+ extern char** environ;
+
+ static char** g_main_argv = NULL;
++
++#if !defined(OS_FREEBSD)
+ static char* g_orig_argv0 = NULL;
+
+ void setproctitle(const char* fmt, ...) {
+@@ -101,6 +103,7 @@ void setproctitle(const char* fmt, ...) {
+ va_end(ap);
+ g_main_argv[1] = NULL;
+ }
++#endif
+
+ // A version of this built into glibc would not need this function, since
+ // it could stash the argv pointer in __libc_start_main(). But we need it.
diff --git a/devel/electron7/files/patch-services_service__manager_embedder_set__process__title__linux.h b/devel/electron7/files/patch-services_service__manager_embedder_set__process__title__linux.h
new file mode 100644
index 000000000000..040784a7b91d
--- /dev/null
+++ b/devel/electron7/files/patch-services_service__manager_embedder_set__process__title__linux.h
@@ -0,0 +1,20 @@
+--- services/service_manager/embedder/set_process_title_linux.h.orig 2019-12-12 12:39:57 UTC
++++ services/service_manager/embedder/set_process_title_linux.h
+@@ -5,6 +5,9 @@
+ #ifndef SERVICES_SERVICE_MANAGER_EMBEDDER_SET_PROCESS_TITLE_LINUX_H_
+ #define SERVICES_SERVICE_MANAGER_EMBEDDER_SET_PROCESS_TITLE_LINUX_H_
+
++#include "build/build_config.h"
++
++#if !defined(OS_FREEBSD)
+ // Set the process title that will show in "ps" and similar tools. Takes
+ // printf-style format string and arguments. After calling setproctitle()
+ // the original main() argv[] array should not be used. By default, the
+@@ -14,6 +17,7 @@
+ // This signature and naming is to be compatible with most other Unix
+ // implementations of setproctitle().
+ void setproctitle(const char* fmt, ...);
++#endif
+
+ // Initialize state needed for setproctitle() on Linux. Pass the argv pointer
+ // from main() to setproctitle_init() before calling setproctitle().
diff --git a/devel/electron7/files/patch-services_service__manager_public_cpp_service__executable_BUILD.gn b/devel/electron7/files/patch-services_service__manager_public_cpp_service__executable_BUILD.gn
new file mode 100644
index 000000000000..e304e7e4ad57
--- /dev/null
+++ b/devel/electron7/files/patch-services_service__manager_public_cpp_service__executable_BUILD.gn
@@ -0,0 +1,14 @@
+--- services/service_manager/public/cpp/service_executable/BUILD.gn.orig 2019-12-12 12:39:57 UTC
++++ services/service_manager/public/cpp/service_executable/BUILD.gn
+@@ -29,6 +29,11 @@ source_set("support") {
+ "//sandbox/linux:seccomp_bpf",
+ ]
+ }
++ if (is_bsd) {
++ deps -= [
++ "//sandbox/linux:seccomp_bpf"
++ ]
++ }
+ }
+
+ source_set("switches") {
diff --git a/devel/electron7/files/patch-services_service__manager_sandbox_BUILD.gn b/devel/electron7/files/patch-services_service__manager_sandbox_BUILD.gn
new file mode 100644
index 000000000000..9eef8e0e0bd9
--- /dev/null
+++ b/devel/electron7/files/patch-services_service__manager_sandbox_BUILD.gn
@@ -0,0 +1,11 @@
+--- services/service_manager/sandbox/BUILD.gn.orig 2019-12-12 12:39:57 UTC
++++ services/service_manager/sandbox/BUILD.gn
+@@ -28,7 +28,7 @@ component("sandbox") {
+ "//base",
+ "//sandbox:common",
+ ]
+- if (is_linux) {
++ if (is_linux && !is_bsd) {
+ sources += [
+ "linux/bpf_audio_policy_linux.cc",
+ "linux/bpf_audio_policy_linux.h",
diff --git a/devel/electron7/files/patch-services_service__manager_sandbox_sandbox__type.cc b/devel/electron7/files/patch-services_service__manager_sandbox_sandbox__type.cc
new file mode 100644
index 000000000000..5eee16fcd3b5
--- /dev/null
+++ b/devel/electron7/files/patch-services_service__manager_sandbox_sandbox__type.cc
@@ -0,0 +1,11 @@
+--- services/service_manager/sandbox/sandbox_type.cc.orig 2019-12-12 12:39:57 UTC
++++ services/service_manager/sandbox/sandbox_type.cc
+@@ -25,7 +25,7 @@ bool IsUnsandboxedSandboxType(SandboxType sandbox_type
+ service_manager::features::kXRSandbox);
+ #endif
+ case SANDBOX_TYPE_AUDIO:
+-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+ return !base::FeatureList::IsEnabled(
+ service_manager::features::kAudioServiceSandbox);
+ #else
diff --git a/devel/electron7/files/patch-services_service__manager_zygote_common_zygote__features.gni b/devel/electron7/files/patch-services_service__manager_zygote_common_zygote__features.gni
new file mode 100644
index 000000000000..60a56d856088
--- /dev/null
+++ b/devel/electron7/files/patch-services_service__manager_zygote_common_zygote__features.gni
@@ -0,0 +1,8 @@
+--- services/service_manager/zygote/common/zygote_features.gni.orig 2019-12-12 12:39:57 UTC
++++ services/service_manager/zygote/common/zygote_features.gni
+@@ -2,4 +2,4 @@
+ # Use of this source code is governed by a BSD-style license that can be
+ # found in the LICENSE file.
+
+-use_zygote_handle = is_posix && !is_android && !is_mac
++use_zygote_handle = is_posix && !is_android && !is_mac && !is_bsd
diff --git a/devel/electron7/files/patch-services_service__manager_zygote_host_zygote__host__impl__linux.cc b/devel/electron7/files/patch-services_service__manager_zygote_host_zygote__host__impl__linux.cc
new file mode 100644
index 000000000000..5c8dc8903524
--- /dev/null
+++ b/devel/electron7/files/patch-services_service__manager_zygote_host_zygote__host__impl__linux.cc
@@ -0,0 +1,40 @@
+--- services/service_manager/zygote/host/zygote_host_impl_linux.cc.orig 2019-12-12 12:39:57 UTC
++++ services/service_manager/zygote/host/zygote_host_impl_linux.cc
+@@ -72,6 +72,7 @@ ZygoteHostImpl* ZygoteHostImpl::GetInstance() {
+ }
+
+ void ZygoteHostImpl::Init(const base::CommandLine& command_line) {
++#if !defined(OS_BSD)
+ if (command_line.HasSwitch(service_manager::switches::kNoSandbox)) {
+ return;
+ }
+@@ -122,6 +123,7 @@ void ZygoteHostImpl::Init(const base::CommandLine& com
+ "you can try using --"
+ << service_manager::switches::kNoSandbox << ".";
+ }
++#endif
+ }
+
+ void ZygoteHostImpl::AddZygotePid(pid_t pid) {
+@@ -146,6 +148,7 @@ pid_t ZygoteHostImpl::LaunchZygote(
+ base::CommandLine* cmd_line,
+ base::ScopedFD* control_fd,
+ base::FileHandleMappingVector additional_remapped_fds) {
++#if !defined(OS_BSD)
+ int fds[2];
+ CHECK_EQ(0, socketpair(AF_UNIX, SOCK_SEQPACKET, 0, fds));
+ CHECK(base::UnixDomainSocket::EnableReceiveProcessId(fds[0]));
+@@ -210,9 +213,12 @@ pid_t ZygoteHostImpl::LaunchZygote(
+
+ AddZygotePid(pid);
+ return pid;
++#else
++ return 0;
++#endif
+ }
+
+-#if !defined(OS_OPENBSD)
++#if !defined(OS_BSD)
+ void ZygoteHostImpl::AdjustRendererOOMScore(base::ProcessHandle pid,
+ int score) {
+ // 1) You can't change the oom_score_adj of a non-dumpable process
diff --git a/devel/electron7/files/patch-services_service__manager_zygote_host_zygote__host__impl__linux.h b/devel/electron7/files/patch-services_service__manager_zygote_host_zygote__host__impl__linux.h
new file mode 100644
index 000000000000..9c1510332f46
--- /dev/null
+++ b/devel/electron7/files/patch-services_service__manager_zygote_host_zygote__host__impl__linux.h
@@ -0,0 +1,13 @@
+--- services/service_manager/zygote/host/zygote_host_impl_linux.h.orig 2019-12-12 12:39:57 UTC
++++ services/service_manager/zygote/host/zygote_host_impl_linux.h
+@@ -44,8 +44,10 @@ class COMPONENT_EXPORT(SERVICE_MANAGER_ZYGOTE) ZygoteH
+ base::ScopedFD* control_fd,
+ base::FileHandleMappingVector additional_remapped_fds);
+
++#if !defined(OS_BSD)
+ void AdjustRendererOOMScore(base::ProcessHandle process_handle,
+ int score) override;
++#endif
+ bool HasZygote() { return !zygote_pids_.empty(); }
+
+ private:
diff --git a/devel/electron7/files/patch-services_service__manager_zygote_zygote__host__linux.h b/devel/electron7/files/patch-services_service__manager_zygote_zygote__host__linux.h
new file mode 100644
index 000000000000..f20609940717
--- /dev/null
+++ b/devel/electron7/files/patch-services_service__manager_zygote_zygote__host__linux.h
@@ -0,0 +1,16 @@
+--- services/service_manager/zygote/zygote_host_linux.h.orig 2019-12-12 12:39:57 UTC
++++ services/service_manager/zygote/zygote_host_linux.h
+@@ -30,11 +30,13 @@ class ZygoteHost {
+ // after the first render has been forked.
+ virtual int GetRendererSandboxStatus() const = 0;
+
++#if !defined(OS_BSD)
+ // Adjust the OOM score of the given renderer's PID. The allowed
+ // range for the score is [0, 1000], where higher values are more
+ // likely to be killed by the OOM killer.
+ virtual void AdjustRendererOOMScore(base::ProcessHandle process_handle,
+ int score) = 0;
++#endif
+ };
+
+ } // namespace service_manager
diff --git a/devel/electron7/files/patch-services_service__manager_zygote_zygote__linux.cc b/devel/electron7/files/patch-services_service__manager_zygote_zygote__linux.cc
new file mode 100644
index 000000000000..09fef74c4e22
--- /dev/null
+++ b/devel/electron7/files/patch-services_service__manager_zygote_zygote__linux.cc
@@ -0,0 +1,15 @@
+--- services/service_manager/zygote/zygote_linux.cc.orig 2019-12-12 12:39:57 UTC
++++ services/service_manager/zygote/zygote_linux.cc
+@@ -1,6 +1,7 @@
+ // Copyright (c) 2012 The Chromium Authors. All rights reserved.
+ // Use of this source code is governed by a BSD-style license that can be
+ // found in the LICENSE file.
++#if 0
+
+ #include "services/service_manager/zygote/zygote_linux.h"
+
+@@ -657,3 +658,4 @@ bool Zygote::HandleGetSandboxStatus(int fd, base::Pick
+ }
+
+ } // namespace service_manager
++#endif
diff --git a/devel/electron7/files/patch-services_service__manager_zygote_zygote__main__linux.cc b/devel/electron7/files/patch-services_service__manager_zygote_zygote__main__linux.cc
new file mode 100644
index 000000000000..4b71263bc678
--- /dev/null
+++ b/devel/electron7/files/patch-services_service__manager_zygote_zygote__main__linux.cc
@@ -0,0 +1,48 @@
+--- services/service_manager/zygote/zygote_main_linux.cc.orig 2019-12-12 12:39:57 UTC
++++ services/service_manager/zygote/zygote_main_linux.cc
+@@ -11,7 +11,9 @@
+ #include <stddef.h>
+ #include <stdint.h>
+ #include <string.h>
++#if !defined(OS_BSD)
+ #include <sys/prctl.h>
++#endif
+ #include <sys/socket.h>
+ #include <sys/types.h>
+ #include <unistd.h>
+@@ -101,6 +103,7 @@ static bool CreateInitProcessReaper(
+ // created through the setuid sandbox.
+ static bool EnterSuidSandbox(sandbox::SetuidSandboxClient* setuid_sandbox,
+ base::OnceClosure post_fork_parent_callback) {
++#if !defined(OS_BSD)
+ DCHECK(setuid_sandbox);
+ DCHECK(setuid_sandbox->IsSuidSandboxChild());
+
+@@ -133,6 +136,9 @@ static bool EnterSuidSandbox(sandbox::SetuidSandboxCli
+
+ CHECK(service_manager::SandboxDebugHandling::SetDumpableStatusAndHandlers());
+ return true;
++#else
++ return false;
++#endif
+ }
+
+ static void DropAllCapabilities(int proc_fd) {
+@@ -178,6 +184,7 @@ static void EnterLayerOneSandbox(service_manager::Sand
+
+ bool ZygoteMain(
+ std::vector<std::unique_ptr<ZygoteForkDelegate>> fork_delegates) {
++#if !defined(OS_BSD)
+ sandbox::SetAmZygoteOrRenderer(true, GetSandboxFD());
+
+ auto* linux_sandbox = service_manager::SandboxLinux::GetInstance();
+@@ -240,6 +247,9 @@ bool ZygoteMain(
+
+ // This function call can return multiple times, once per fork().
+ return zygote.ProcessRequests();
++#else
++ return false;
++#endif
+ }
+
+ } // namespace service_manager
diff --git a/devel/electron7/files/patch-services_video__capture_broadcasting__receiver.cc b/devel/electron7/files/patch-services_video__capture_broadcasting__receiver.cc
new file mode 100644
index 000000000000..37ec8bd3fb3e
--- /dev/null
+++ b/devel/electron7/files/patch-services_video__capture_broadcasting__receiver.cc
@@ -0,0 +1,20 @@
+--- services/video_capture/broadcasting_receiver.cc.orig 2019-12-12 12:39:57 UTC
++++ services/video_capture/broadcasting_receiver.cc
+@@ -40,7 +40,7 @@ void CloneSharedBufferHandle(const mojo::ScopedSharedB
+ void CloneSharedBufferToRawFileDescriptorHandle(
+ const mojo::ScopedSharedBufferHandle& source,
+ media::mojom::VideoBufferHandlePtr* target) {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // |source| is unwrapped to a |PlatformSharedMemoryRegion|, from whence a file
+ // descriptor can be extracted which is then mojo-wrapped.
+ base::subtle::PlatformSharedMemoryRegion platform_region =
+@@ -178,7 +178,7 @@ void BroadcastingReceiver::BufferContext::
+ ConvertRawFileDescriptorToSharedBuffer() {
+ DCHECK(buffer_handle_->is_shared_memory_via_raw_file_descriptor());
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // The conversion unwraps the descriptor from its mojo handle to the raw file
+ // descriptor (ie, an int). This is used to create a
+ // PlatformSharedMemoryRegion which is then wrapped as a
diff --git a/devel/electron7/files/patch-skia_ext_SkMemory__new__handler.cpp b/devel/electron7/files/patch-skia_ext_SkMemory__new__handler.cpp
new file mode 100644
index 000000000000..9ed3fa42f341
--- /dev/null
+++ b/devel/electron7/files/patch-skia_ext_SkMemory__new__handler.cpp
@@ -0,0 +1,20 @@
+--- skia/ext/SkMemory_new_handler.cpp.orig 2019-12-12 12:39:57 UTC
++++ skia/ext/SkMemory_new_handler.cpp
+@@ -77,7 +77,7 @@ static void* malloc_nothrow(size_t size) {
+ // TODO(b.kelemen): we should always use UncheckedMalloc but currently it
+ // doesn't work as intended everywhere.
+ void* result;
+-#if defined(OS_IOS)
++#if defined(OS_IOS) || defined(OS_BSD)
+ result = malloc(size);
+ #else
+ // It's the responsibility of the caller to check the return value.
+@@ -97,7 +97,7 @@ static void* calloc_nothrow(size_t size) {
+ // TODO(b.kelemen): we should always use UncheckedCalloc but currently it
+ // doesn't work as intended everywhere.
+ void* result;
+-#if defined(OS_IOS)
++#if defined(OS_IOS) || defined(OS_BSD)
+ result = calloc(1, size);
+ #else
+ // It's the responsibility of the caller to check the return value.
diff --git a/devel/electron7/files/patch-third__party_angle_BUILD.gn b/devel/electron7/files/patch-third__party_angle_BUILD.gn
new file mode 100644
index 000000000000..7d60240c5cf5
--- /dev/null
+++ b/devel/electron7/files/patch-third__party_angle_BUILD.gn
@@ -0,0 +1,21 @@
+--- third_party/angle/BUILD.gn.orig 2019-12-12 12:42:33 UTC
++++ third_party/angle/BUILD.gn
+@@ -357,6 +357,7 @@ angle_static_library("angle_gpu_info_util") {
+ "X11",
+ "Xi",
+ "Xext",
++ "GL",
+ ]
+ }
+ }
+@@ -1080,10 +1081,6 @@ foreach(is_shared_library,
+
+ if (is_linux) {
+ sources += util_linux_sources
+- libs += [
+- "rt",
+- "dl",
+- ]
+ }
+
+ if (is_mac) {
diff --git a/devel/electron7/files/patch-third__party_angle_src_gpu__info__util_SystemInfo__internal.h b/devel/electron7/files/patch-third__party_angle_src_gpu__info__util_SystemInfo__internal.h
new file mode 100644
index 000000000000..fe3253369cce
--- /dev/null
+++ b/devel/electron7/files/patch-third__party_angle_src_gpu__info__util_SystemInfo__internal.h
@@ -0,0 +1,16 @@
+--- third_party/angle/src/gpu_info_util/SystemInfo_internal.h.orig 2019-12-12 12:42:33 UTC
++++ third_party/angle/src/gpu_info_util/SystemInfo_internal.h
+@@ -14,8 +14,13 @@
+ namespace angle
+ {
+
++bool CollectMesaCardInfo(std::vector<GPUDeviceInfo> *devices);
++
+ // Defined in SystemInfo_libpci when GPU_INFO_USE_LIBPCI is defined.
+ bool GetPCIDevicesWithLibPCI(std::vector<GPUDeviceInfo> *devices);
++#if defined(__FreeBSD__)
++bool GetPCIDevicesFreeBSD(std::vector<GPUDeviceInfo> *devices);
++#endif
+ // Defined in SystemInfo_x11 when GPU_INFO_USE_X11 is defined.
+ bool GetNvidiaDriverVersionWithXNVCtrl(std::string *version);
+
diff --git a/devel/electron7/files/patch-third__party_angle_src_gpu__info__util_SystemInfo__libpci.cpp b/devel/electron7/files/patch-third__party_angle_src_gpu__info__util_SystemInfo__libpci.cpp
new file mode 100644
index 000000000000..39c6d842af2d
--- /dev/null
+++ b/devel/electron7/files/patch-third__party_angle_src_gpu__info__util_SystemInfo__libpci.cpp
@@ -0,0 +1,90 @@
+--- third_party/angle/src/gpu_info_util/SystemInfo_libpci.cpp.orig 2019-12-12 12:42:33 UTC
++++ third_party/angle/src/gpu_info_util/SystemInfo_libpci.cpp
+@@ -12,6 +12,11 @@
+ #include <pci/pci.h>
+ #include <unistd.h>
+
++#if defined(__FreeBSD__)
++#include <fcntl.h>
++#include <sys/pciio.h>
++#endif
++
+ #include "common/angleutils.h"
+ #include "common/debug.h"
+
+@@ -82,6 +87,75 @@ struct LibPCI : private angle::NonCopyable
+ };
+
+ } // anonymous namespace
++
++#if defined(__FreeBSD__)
++// Adds an entry per PCI GPU found and fills the device and vendor ID.
++bool GetPCIDevicesFreeBSD(std::vector<GPUDeviceInfo> *devices)
++{
++ int fd;
++ struct pci_conf_io conf;
++ struct pci_conf *matches;
++ uint32_t offset = 0;
++
++ fd = open("/dev/pci", O_RDONLY);
++ if (fd < 0)
++ return false;
++
++ matches = new struct pci_conf[32];
++ conf.generation = 0;
++ do {
++ conf.pat_buf_len = 0;
++ conf.num_patterns = 0;
++ conf.patterns = NULL;
++ conf.match_buf_len = 32 * sizeof(struct pci_conf);
++ conf.num_matches = 32;
++ conf.matches = matches;
++ conf.offset = offset;
++ conf.status = PCI_GETCONF_ERROR;
++ if (ioctl(fd, PCIOCGETCONF, &conf) < 0) {
++ if (errno == ENODEV)
++ break;
++ }
++ /* PCI_GETCONF_LIST_CHANGED would require us to start over. */
++ if (conf.status == PCI_GETCONF_ERROR || conf.status == PCI_GETCONF_LIST_CHANGED) {
++ break;
++ }
++
++ for (unsigned int i = 0; i < conf.num_matches; i++) {
++ uint16_t device_class = (matches[i].pc_class << 8) | matches[i].pc_subclass;
++
++ // Skip non-GPU devices
++ switch (device_class)
++ {
++ case PCI_CLASS_DISPLAY_VGA:
++ case PCI_CLASS_DISPLAY_XGA:
++ case PCI_CLASS_DISPLAY_3D:
++ break;
++ default:
++ continue;
++ }
++
++ // Skip unknown devices
++ if (matches[i].pc_vendor == 0 || matches[i].pc_device == 0) {
++ continue;
++ }
++
++ GPUDeviceInfo info;
++ info.vendorId = matches[i].pc_vendor;
++ info.deviceId = matches[i].pc_device;
++
++ devices->push_back(info);
++ }
++ offset += conf.num_matches;
++ } while (conf.status == PCI_GETCONF_MORE_DEVS);
++
++ delete[] matches;
++
++ close(fd);
++
++ return true;
++}
++#endif
+
+ // Adds an entry per PCI GPU found and fills the device and vendor ID.
+ bool GetPCIDevicesWithLibPCI(std::vector<GPUDeviceInfo> *devices)
diff --git a/devel/electron7/files/patch-third__party_angle_src_gpu__info__util_SystemInfo__linux.cpp b/devel/electron7/files/patch-third__party_angle_src_gpu__info__util_SystemInfo__linux.cpp
new file mode 100644
index 000000000000..a8185d95756b
--- /dev/null
+++ b/devel/electron7/files/patch-third__party_angle_src_gpu__info__util_SystemInfo__linux.cpp
@@ -0,0 +1,21 @@
+--- third_party/angle/src/gpu_info_util/SystemInfo_linux.cpp.orig 2019-12-12 12:42:33 UTC
++++ third_party/angle/src/gpu_info_util/SystemInfo_linux.cpp
+@@ -71,10 +71,18 @@ bool GetPCIDevicesWithLibPCI(std::vector<GPUDeviceInfo
+
+ bool GetSystemInfo(SystemInfo *info)
+ {
++#if defined(__FreeBSD__)
++ if (!CollectMesaCardInfo(&(info->gpus)))
++ {
++ if (!GetPCIDevicesFreeBSD(&(info->gpus)))
++ return false;
++ }
++#else
+ if (!GetPCIDevicesWithLibPCI(&(info->gpus)))
+ {
+ return false;
+ }
++#endif
+
+ if (info->gpus.size() == 0)
+ {
diff --git a/devel/electron7/files/patch-third__party_angle_src_gpu__info__util_SystemInfo__x11.cpp b/devel/electron7/files/patch-third__party_angle_src_gpu__info__util_SystemInfo__x11.cpp
new file mode 100644
index 000000000000..475974198c59
--- /dev/null
+++ b/devel/electron7/files/patch-third__party_angle_src_gpu__info__util_SystemInfo__x11.cpp
@@ -0,0 +1,55 @@
+--- third_party/angle/src/gpu_info_util/SystemInfo_x11.cpp.orig 2019-12-12 12:42:33 UTC
++++ third_party/angle/src/gpu_info_util/SystemInfo_x11.cpp
+@@ -8,6 +8,8 @@
+
+ #include "gpu_info_util/SystemInfo_internal.h"
+
++#include <GL/glx.h>
++#include <GL/glxext.h>
+ #include <X11/Xlib.h>
+
+ #include "common/debug.h"
+@@ -18,8 +20,43 @@
+ # error SystemInfo_x11.cpp compiled without GPU_INFO_USE_X11
+ #endif
+
++#define GLX_RENDERER_VENDOR_ID_MESA 0x8183
++#define GLX_RENDERER_DEVICE_ID_MESA 0x8184
++
+ namespace angle
+ {
++
++bool CollectMesaCardInfo(std::vector<GPUDeviceInfo> *devices)
++{
++
++ unsigned int vid[3], did[3];
++
++ Display *display = XOpenDisplay(NULL);
++ if (!display) {
++ return false;
++ }
++
++ PFNGLXQUERYRENDERERINTEGERMESAPROC queryInteger =
++ (PFNGLXQUERYRENDERERINTEGERMESAPROC) glXGetProcAddressARB((const GLubyte *)
++ "glXQueryRendererIntegerMESA");
++
++ if (!queryInteger)
++ return false;
++
++ bool vendor_ret =
++ queryInteger(display, 0, 0, GLX_RENDERER_VENDOR_ID_MESA, vid);
++ bool device_ret =
++ queryInteger(display, 0, 0, GLX_RENDERER_DEVICE_ID_MESA, did);
++
++ if (vendor_ret && device_ret) {
++ GPUDeviceInfo info;
++ info.vendorId = vid[0];
++ info.deviceId = did[0];
++ devices->push_back(info);
++ }
++
++ return true;
++}
+
+ bool GetNvidiaDriverVersionWithXNVCtrl(std::string *version)
+ {
diff --git a/devel/electron7/files/patch-third__party_angle_src_libANGLE_Display.cpp b/devel/electron7/files/patch-third__party_angle_src_libANGLE_Display.cpp
new file mode 100644
index 000000000000..8c5e890a7d5e
--- /dev/null
+++ b/devel/electron7/files/patch-third__party_angle_src_libANGLE_Display.cpp
@@ -0,0 +1,20 @@
+--- third_party/angle/src/libANGLE/Display.cpp.orig 2019-12-12 12:42:33 UTC
++++ third_party/angle/src/libANGLE/Display.cpp
+@@ -68,7 +68,7 @@
+ #if defined(ANGLE_ENABLE_VULKAN)
+ # if defined(ANGLE_PLATFORM_WINDOWS)
+ # include "libANGLE/renderer/vulkan/win32/DisplayVkWin32.h"
+-# elif defined(ANGLE_PLATFORM_LINUX)
++# elif defined(ANGLE_PLATFORM_POSIX)
+ # include "libANGLE/renderer/vulkan/xcb/DisplayVkXcb.h"
+ # elif defined(ANGLE_PLATFORM_ANDROID)
+ # include "libANGLE/renderer/vulkan/android/DisplayVkAndroid.h"
+@@ -268,7 +268,7 @@ rx::DisplayImpl *CreateDisplayFromAttribs(const Attrib
+ #if defined(ANGLE_ENABLE_VULKAN)
+ # if defined(ANGLE_PLATFORM_WINDOWS)
+ impl = new rx::DisplayVkWin32(state);
+-# elif defined(ANGLE_PLATFORM_LINUX)
++# elif defined(ANGLE_PLATFORM_POSIX)
+ impl = new rx::DisplayVkXcb(state);
+ # elif defined(ANGLE_PLATFORM_ANDROID)
+ impl = new rx::DisplayVkAndroid(state);
diff --git a/devel/electron7/files/patch-third__party_angle_src_libANGLE_renderer_driver__utils.h b/devel/electron7/files/patch-third__party_angle_src_libANGLE_renderer_driver__utils.h
new file mode 100644
index 000000000000..677d71b7fcc7
--- /dev/null
+++ b/devel/electron7/files/patch-third__party_angle_src_libANGLE_renderer_driver__utils.h
@@ -0,0 +1,11 @@
+--- third_party/angle/src/libANGLE/renderer/driver_utils.h.orig 2019-12-12 12:42:33 UTC
++++ third_party/angle/src/libANGLE/renderer/driver_utils.h
+@@ -114,7 +114,7 @@ inline bool IsWindows()
+
+ inline bool IsLinux()
+ {
+-#if defined(ANGLE_PLATFORM_LINUX)
++#if defined(ANGLE_PLATFORM_POSIX)
+ return true;
+ #else
+ return false;
diff --git a/devel/electron7/files/patch-third__party_angle_third__party_vulkan-loader_src_loader_loader.c b/devel/electron7/files/patch-third__party_angle_third__party_vulkan-loader_src_loader_loader.c
new file mode 100644
index 000000000000..d0ba7cf43afb
--- /dev/null
+++ b/devel/electron7/files/patch-third__party_angle_third__party_vulkan-loader_src_loader_loader.c
@@ -0,0 +1,11 @@
+--- third_party/angle/third_party/vulkan-loader/src/loader/loader.c.orig 2019-12-12 12:46:28 UTC
++++ third_party/angle/third_party/vulkan-loader/src/loader/loader.c
+@@ -229,7 +229,7 @@ void *loader_device_heap_realloc(const struct loader_d
+ }
+
+ // Environment variables
+-#if defined(__linux__) || defined(__APPLE__)
++#if defined(__linux__) || defined(__APPLE__) || defined(__FreeBSD__)
+
+ static inline char *loader_getenv(const char *name, const struct loader_instance *inst) {
+ // No allocation of memory necessary for Linux, but we should at least touch
diff --git a/devel/electron7/files/patch-third__party_angle_third__party_vulkan-loader_src_loader_vk__loader__platform.h b/devel/electron7/files/patch-third__party_angle_third__party_vulkan-loader_src_loader_vk__loader__platform.h
new file mode 100644
index 000000000000..1d5d2c881051
--- /dev/null
+++ b/devel/electron7/files/patch-third__party_angle_third__party_vulkan-loader_src_loader_vk__loader__platform.h
@@ -0,0 +1,11 @@
+--- third_party/angle/third_party/vulkan-loader/src/loader/vk_loader_platform.h.orig 2019-12-12 12:46:28 UTC
++++ third_party/angle/third_party/vulkan-loader/src/loader/vk_loader_platform.h
+@@ -31,7 +31,7 @@
+ #include "vulkan/vk_platform.h"
+ #include "vulkan/vk_sdk_platform.h"
+
+-#if defined(__linux__) || defined(__APPLE__)
++#if defined(__linux__) || defined(__APPLE__) || defined(__FreeBSD__)
+ /* Linux-specific common code: */
+
+ // Headers:
diff --git a/devel/electron7/files/patch-third__party_angle_third__party_vulkan-validation-layers_src_layers_vk__loader__platform.h b/devel/electron7/files/patch-third__party_angle_third__party_vulkan-validation-layers_src_layers_vk__loader__platform.h
new file mode 100644
index 000000000000..2341b367d900
--- /dev/null
+++ b/devel/electron7/files/patch-third__party_angle_third__party_vulkan-validation-layers_src_layers_vk__loader__platform.h
@@ -0,0 +1,11 @@
+--- third_party/angle/third_party/vulkan-validation-layers/src/layers/vk_loader_platform.h.orig 2019-12-12 12:47:10 UTC
++++ third_party/angle/third_party/vulkan-validation-layers/src/layers/vk_loader_platform.h
+@@ -31,7 +31,7 @@
+ #include "vulkan/vk_platform.h"
+ #include "vulkan/vk_sdk_platform.h"
+
+-#if defined(__linux__) || defined(__APPLE__)
++#if defined(__linux__) || defined(__APPLE__) || defined(__FreeBSD__)
+ /* Linux-specific common code: */
+
+ // Headers:
diff --git a/devel/electron7/files/patch-third__party_blink_renderer_BUILD.gn b/devel/electron7/files/patch-third__party_blink_renderer_BUILD.gn
new file mode 100644
index 000000000000..37e293bf1328
--- /dev/null
+++ b/devel/electron7/files/patch-third__party_blink_renderer_BUILD.gn
@@ -0,0 +1,13 @@
+--- third_party/blink/renderer/BUILD.gn.orig 2019-12-12 12:40:04 UTC
++++ third_party/blink/renderer/BUILD.gn
+@@ -45,8 +45,8 @@ config("inside_blink") {
+ "-Wconversion",
+ "-Wno-float-conversion",
+ "-Wno-sign-conversion",
+- "-Wno-implicit-float-conversion",
+- "-Wno-implicit-int-conversion",
++# "-Wno-implicit-float-conversion",
++# "-Wno-implicit-int-conversion",
+ ]
+ }
+ }
diff --git a/devel/electron7/files/patch-third__party_blink_renderer_core_editing_editing__behavior.cc b/devel/electron7/files/patch-third__party_blink_renderer_core_editing_editing__behavior.cc
new file mode 100644
index 000000000000..e2d996610bda
--- /dev/null
+++ b/devel/electron7/files/patch-third__party_blink_renderer_core_editing_editing__behavior.cc
@@ -0,0 +1,11 @@
+--- third_party/blink/renderer/core/editing/editing_behavior.cc.orig 2019-12-12 12:40:05 UTC
++++ third_party/blink/renderer/core/editing/editing_behavior.cc
+@@ -270,7 +270,7 @@ bool EditingBehavior::ShouldInsertCharacter(const Keyb
+ // unexpected behaviour
+ if (ch < ' ')
+ return false;
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // According to XKB map no keyboard combinations with ctrl key are mapped to
+ // printable characters, however we need the filter as the DomKey/text could
+ // contain printable characters.
diff --git a/devel/electron7/files/patch-third__party_blink_renderer_core_html_canvas_canvas__async__blob__creator.cc b/devel/electron7/files/patch-third__party_blink_renderer_core_html_canvas_canvas__async__blob__creator.cc
new file mode 100644
index 000000000000..df66f55aaa0f
--- /dev/null
+++ b/devel/electron7/files/patch-third__party_blink_renderer_core_html_canvas_canvas__async__blob__creator.cc
@@ -0,0 +1,11 @@
+--- third_party/blink/renderer/core/html/canvas/canvas_async_blob_creator.cc.orig 2019-12-12 12:40:06 UTC
++++ third_party/blink/renderer/core/html/canvas/canvas_async_blob_creator.cc
+@@ -40,7 +40,7 @@ constexpr base::TimeDelta kEncodeRowSlackBeforeDeadlin
+ base::TimeDelta::FromMicroseconds(100);
+
+ /* The value is based on user statistics on Nov 2017. */
+-#if (defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN))
++#if (defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN)) || defined(OS_BSD)
+ const double kIdleTaskStartTimeoutDelayMs = 1000.0;
+ #else
+ const double kIdleTaskStartTimeoutDelayMs = 4000.0; // For ChromeOS, Mobile
diff --git a/devel/electron7/files/patch-third__party_blink_renderer_core_html_forms_internal__popup__menu.cc b/devel/electron7/files/patch-third__party_blink_renderer_core_html_forms_internal__popup__menu.cc
new file mode 100644
index 000000000000..eab73f1c0dde
--- /dev/null
+++ b/devel/electron7/files/patch-third__party_blink_renderer_core_html_forms_internal__popup__menu.cc
@@ -0,0 +1,11 @@
+--- third_party/blink/renderer/core/html/forms/internal_popup_menu.cc.orig 2019-12-12 12:40:06 UTC
++++ third_party/blink/renderer/core/html/forms/internal_popup_menu.cc
+@@ -121,7 +121,7 @@ class InternalPopupMenu::ItemIterationContext {
+ is_in_group_(false),
+ buffer_(buffer) {
+ DCHECK(buffer_);
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // On other platforms, the <option> background color is the same as the
+ // <select> background color. On Linux, that makes the <option>
+ // background color very dark, so by default, try to use a lighter
diff --git a/devel/electron7/files/patch-third__party_blink_renderer_core_inspector_inspector__memory__agent.cc b/devel/electron7/files/patch-third__party_blink_renderer_core_inspector_inspector__memory__agent.cc
new file mode 100644
index 000000000000..086923ca839d
--- /dev/null
+++ b/devel/electron7/files/patch-third__party_blink_renderer_core_inspector_inspector__memory__agent.cc
@@ -0,0 +1,11 @@
+--- third_party/blink/renderer/core/inspector/inspector_memory_agent.cc.orig 2019-12-12 12:40:07 UTC
++++ third_party/blink/renderer/core/inspector/inspector_memory_agent.cc
+@@ -184,7 +184,7 @@ InspectorMemoryAgent::GetSamplingProfileById(uint32_t
+
+ Vector<String> InspectorMemoryAgent::Symbolize(
+ const WebVector<void*>& addresses) {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // TODO(alph): Move symbolization to the client.
+ Vector<void*> addresses_to_symbolize;
+ for (size_t i = 0; i < addresses.size(); i++) {
diff --git a/devel/electron7/files/patch-third__party_blink_renderer_core_layout_layout__view.cc b/devel/electron7/files/patch-third__party_blink_renderer_core_layout_layout__view.cc
new file mode 100644
index 000000000000..2be6d91ed788
--- /dev/null
+++ b/devel/electron7/files/patch-third__party_blink_renderer_core_layout_layout__view.cc
@@ -0,0 +1,20 @@
+--- third_party/blink/renderer/core/layout/layout_view.cc.orig 2019-12-12 12:40:07 UTC
++++ third_party/blink/renderer/core/layout/layout_view.cc
+@@ -58,7 +58,7 @@
+ #include "third_party/blink/renderer/platform/instrumentation/tracing/traced_value.h"
+ #include "third_party/blink/renderer/platform/runtime_enabled_features.h"
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ #include "third_party/blink/renderer/platform/fonts/font_cache.h"
+ #endif
+
+@@ -323,7 +323,7 @@ void LayoutView::UpdateLayout() {
+ DCHECK(!layout_state_);
+ LayoutState root_layout_state(*this);
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ // The font code in FontPlatformData does not have a direct connection to the
+ // document, the frame or anything from which we could retrieve the device
+ // scale factor. After using zoom for DSF, the GraphicsContext does only ever
diff --git a/devel/electron7/files/patch-third__party_blink_renderer_core_paint_paint__layer.cc b/devel/electron7/files/patch-third__party_blink_renderer_core_paint_paint__layer.cc
new file mode 100644
index 000000000000..9ac000c5146f
--- /dev/null
+++ b/devel/electron7/files/patch-third__party_blink_renderer_core_paint_paint__layer.cc
@@ -0,0 +1,11 @@
+--- third_party/blink/renderer/core/paint/paint_layer.cc.orig 2019-12-12 12:40:07 UTC
++++ third_party/blink/renderer/core/paint/paint_layer.cc
+@@ -104,7 +104,7 @@ namespace {
+ static CompositingQueryMode g_compositing_query_mode =
+ kCompositingQueriesAreOnlyAllowedInCertainDocumentLifecyclePhases;
+
+-#ifdef OS_LINUX
++#if defined(OS_LINUX) || defined(OS_BSD)
+ struct SameSizeAsPaintLayer : DisplayItemClient {
+ // The bit fields may fit into the machine word of DisplayItemClient which
+ // has only 8-bit data.
diff --git a/devel/electron7/files/patch-third__party_blink_renderer_core_scroll_scrollbar__theme__aura.cc b/devel/electron7/files/patch-third__party_blink_renderer_core_scroll_scrollbar__theme__aura.cc
new file mode 100644
index 000000000000..f80c8ba1d950
--- /dev/null
+++ b/devel/electron7/files/patch-third__party_blink_renderer_core_scroll_scrollbar__theme__aura.cc
@@ -0,0 +1,20 @@
+--- third_party/blink/renderer/core/scroll/scrollbar_theme_aura.cc.orig 2019-12-12 12:40:07 UTC
++++ third_party/blink/renderer/core/scroll/scrollbar_theme_aura.cc
+@@ -338,7 +338,7 @@ ScrollbarPart ScrollbarThemeAura::InvalidateOnThumbPos
+
+ bool ScrollbarThemeAura::ShouldCenterOnThumb(const Scrollbar& scrollbar,
+ const WebMouseEvent& event) {
+-#if (defined(OS_LINUX) && !defined(OS_CHROMEOS))
++#if ((defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS))
+ if (event.button == WebPointerProperties::Button::kMiddle)
+ return true;
+ #endif
+@@ -353,7 +353,7 @@ bool ScrollbarThemeAura::ShouldSnapBackToDragOrigin(
+ // Disable snapback on desktop Linux to better integrate with the desktop
+ // behavior. Typically, Linux apps do not implement scrollbar snapback (this is
+ // true for at least GTK and QT apps).
+-#if (defined(OS_LINUX) && !defined(OS_CHROMEOS))
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ return false;
+ #endif
+
diff --git a/devel/electron7/files/patch-third__party_blink_renderer_modules_mediastream_processed__local__audio__source.cc b/devel/electron7/files/patch-third__party_blink_renderer_modules_mediastream_processed__local__audio__source.cc
new file mode 100644
index 000000000000..0516a9781a08
--- /dev/null
+++ b/devel/electron7/files/patch-third__party_blink_renderer_modules_mediastream_processed__local__audio__source.cc
@@ -0,0 +1,20 @@
+--- third_party/blink/renderer/modules/mediastream/processed_local_audio_source.cc.orig 2019-12-12 12:40:10 UTC
++++ third_party/blink/renderer/modules/mediastream/processed_local_audio_source.cc
+@@ -84,7 +84,7 @@ void LogAudioProcesingProperties(
+ } // namespace
+
+ bool IsApmInAudioServiceEnabled() {
+-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+ return base::FeatureList::IsEnabled(features::kWebRtcApmInAudioService);
+ #else
+ return false;
+@@ -427,7 +427,7 @@ void ProcessedLocalAudioSource::CaptureUsingProcessor(
+ bool key_pressed) {
+ #if defined(OS_WIN) || defined(OS_MACOSX)
+ DCHECK_LE(volume, 1.0);
+-#elif (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_OPENBSD)
++#elif (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ // We have a special situation on Linux where the microphone volume can be
+ // "higher than maximum". The input volume slider in the sound preference
+ // allows the user to set a scaling that is higher than 100%. It means that
diff --git a/devel/electron7/files/patch-third__party_blink_renderer_platform_BUILD.gn b/devel/electron7/files/patch-third__party_blink_renderer_platform_BUILD.gn
new file mode 100644
index 000000000000..562003418988
--- /dev/null
+++ b/devel/electron7/files/patch-third__party_blink_renderer_platform_BUILD.gn
@@ -0,0 +1,10 @@
+--- third_party/blink/renderer/platform/BUILD.gn.orig 2019-12-16 13:32:58 UTC
++++ third_party/blink/renderer/platform/BUILD.gn
+@@ -103,6 +103,7 @@ executable("character_data_generator") {
+ "//build/win:default_exe_manifest",
+ "//third_party/icu",
+ ]
++ libs = [ "cxxrt" ]
+ }
+
+ # This isn't strictly necessary since we can just add the deps to "platform",
diff --git a/devel/electron7/files/patch-third__party_blink_renderer_platform_fonts_font__cache.cc b/devel/electron7/files/patch-third__party_blink_renderer_platform_fonts_font__cache.cc
new file mode 100644
index 000000000000..8910470867b3
--- /dev/null
+++ b/devel/electron7/files/patch-third__party_blink_renderer_platform_fonts_font__cache.cc
@@ -0,0 +1,20 @@
+--- third_party/blink/renderer/platform/fonts/font_cache.cc.orig 2019-12-12 12:40:10 UTC
++++ third_party/blink/renderer/platform/fonts/font_cache.cc
+@@ -76,7 +76,7 @@ static const char kColorEmojiLocale[] = "und-Zsye";
+
+ SkFontMgr* FontCache::static_font_manager_ = nullptr;
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ float FontCache::device_scale_factor_ = 1.0;
+ #endif
+
+@@ -115,7 +115,7 @@ FontCache::FontCache()
+ FontPlatformData* FontCache::SystemFontPlatformData(
+ const FontDescription& font_description) {
+ const AtomicString& family = FontCache::SystemFontFamily();
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ if (family.IsEmpty() || family == font_family_names::kSystemUi)
+ return nullptr;
+ #else
diff --git a/devel/electron7/files/patch-third__party_blink_renderer_platform_fonts_font__cache.h b/devel/electron7/files/patch-third__party_blink_renderer_platform_fonts_font__cache.h
new file mode 100644
index 000000000000..d9bdec704f2e
--- /dev/null
+++ b/devel/electron7/files/patch-third__party_blink_renderer_platform_fonts_font__cache.h
@@ -0,0 +1,53 @@
+--- third_party/blink/renderer/platform/fonts/font_cache.h.orig 2019-12-12 12:40:10 UTC
++++ third_party/blink/renderer/platform/fonts/font_cache.h
+@@ -158,7 +158,7 @@ class PLATFORM_EXPORT FontCache {
+ sk_sp<SkFontMgr> FontManager() { return font_manager_; }
+ static void SetFontManager(sk_sp<SkFontMgr>);
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ // These are needed for calling QueryRenderStyleForStrike, since
+ // gfx::GetFontRenderParams makes distinctions based on DSF.
+ static float DeviceScaleFactor() { return device_scale_factor_; }
+@@ -233,7 +233,7 @@ class PLATFORM_EXPORT FontCache {
+ const FontDescription&);
+ #endif // defined(OS_ANDROID)
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ struct PlatformFallbackFont {
+ String name;
+ std::string filename;
+@@ -245,7 +245,7 @@ class PLATFORM_EXPORT FontCache {
+ static void GetFontForCharacter(UChar32,
+ const char* preferred_locale,
+ PlatformFallbackFont*);
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+
+ scoped_refptr<SimpleFontData> FontDataFromFontPlatformData(
+ const FontPlatformData*,
+@@ -317,12 +317,12 @@ class PLATFORM_EXPORT FontCache {
+ const FontFaceCreationParams&,
+ std::string& name);
+
+-#if defined(OS_ANDROID) || defined(OS_LINUX)
++#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_BSD)
+ static AtomicString GetFamilyNameForCharacter(SkFontMgr*,
+ UChar32,
+ const FontDescription&,
+ FontFallbackPriority);
+-#endif // defined(OS_ANDROID) || defined(OS_LINUX)
++#endif // defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_BSD)
+
+ scoped_refptr<SimpleFontData> FallbackOnStandardFontStyle(
+ const FontDescription&,
+@@ -355,7 +355,7 @@ class PLATFORM_EXPORT FontCache {
+ mojom::blink::DWriteFontProxyPtr service_;
+ #endif // defined(OS_WIN)
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ static float device_scale_factor_;
+ #endif
+
diff --git a/devel/electron7/files/patch-third__party_blink_renderer_platform_fonts_font__description.cc b/devel/electron7/files/patch-third__party_blink_renderer_platform_fonts_font__description.cc
new file mode 100644
index 000000000000..18b2299dd559
--- /dev/null
+++ b/devel/electron7/files/patch-third__party_blink_renderer_platform_fonts_font__description.cc
@@ -0,0 +1,20 @@
+--- third_party/blink/renderer/platform/fonts/font_description.cc.orig 2019-12-12 12:40:11 UTC
++++ third_party/blink/renderer/platform/fonts/font_description.cc
+@@ -38,7 +38,7 @@
+ #include "third_party/blink/renderer/platform/wtf/text/string_hash.h"
+ #include "third_party/blink/renderer/platform/wtf/text/string_hasher.h"
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ #include "third_party/blink/renderer/platform/fonts/font_cache.h"
+ #endif
+
+@@ -223,7 +223,7 @@ FontCacheKey FontDescription::CacheKey(
+ static_cast<unsigned>(fields_.orientation_) << 1 | // bit 2-3
+ static_cast<unsigned>(fields_.subpixel_text_position_); // bit 1
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ float device_scale_factor_for_key = FontCache::DeviceScaleFactor();
+ #else
+ float device_scale_factor_for_key = 1.0f;
diff --git a/devel/electron7/files/patch-third__party_blink_renderer_platform_fonts_font__metrics.cc b/devel/electron7/files/patch-third__party_blink_renderer_platform_fonts_font__metrics.cc
new file mode 100644
index 000000000000..4aa49ef22065
--- /dev/null
+++ b/devel/electron7/files/patch-third__party_blink_renderer_platform_fonts_font__metrics.cc
@@ -0,0 +1,29 @@
+--- third_party/blink/renderer/platform/fonts/font_metrics.cc.orig 2019-12-12 12:40:11 UTC
++++ third_party/blink/renderer/platform/fonts/font_metrics.cc
+@@ -38,7 +38,7 @@
+
+ namespace blink {
+
+-#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_FUCHSIA)
++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_FUCHSIA) || defined(OS_BSD)
+ // This is the largest VDMX table which we'll try to load and parse.
+ static const size_t kMaxVDMXTableSize = 1024 * 1024; // 1 MB
+ #endif
+@@ -60,7 +60,7 @@ void FontMetrics::AscentDescentWithHacks(
+ int vdmx_ascent = 0, vdmx_descent = 0;
+ bool is_vdmx_valid = false;
+
+-#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_FUCHSIA)
++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_FUCHSIA) || defined(OS_BSD)
+ // Manually digging up VDMX metrics is only applicable when bytecode hinting
+ // using FreeType. With DirectWrite or CoreText, no bytecode hinting is ever
+ // done. This code should be pushed into FreeType (hinted font metrics).
+@@ -106,7 +106,7 @@ void FontMetrics::AscentDescentWithHacks(
+ visual_overflow_inflation_for_ascent = 1;
+ if (descent < metrics.fDescent) {
+ visual_overflow_inflation_for_descent = 1;
+-#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_FUCHSIA)
++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_FUCHSIA) || defined(OS_BSD)
+ // When subpixel positioning is enabled, if the descent is rounded down,
+ // the descent part of the glyph may be truncated when displayed in a
+ // 'overflow: hidden' container. To avoid that, borrow 1 unit from the
diff --git a/devel/electron7/files/patch-third__party_blink_renderer_platform_fonts_font__unique__name__lookup.cc b/devel/electron7/files/patch-third__party_blink_renderer_platform_fonts_font__unique__name__lookup.cc
new file mode 100644
index 000000000000..e677fc7670c7
--- /dev/null
+++ b/devel/electron7/files/patch-third__party_blink_renderer_platform_fonts_font__unique__name__lookup.cc
@@ -0,0 +1,20 @@
+--- third_party/blink/renderer/platform/fonts/font_unique_name_lookup.cc.orig 2019-12-12 12:40:11 UTC
++++ third_party/blink/renderer/platform/fonts/font_unique_name_lookup.cc
+@@ -8,7 +8,7 @@
+ #if defined(OS_ANDROID)
+ #include "third_party/blink/public/mojom/font_unique_name_lookup/font_unique_name_lookup.mojom-blink.h"
+ #include "third_party/blink/renderer/platform/fonts/android/font_unique_name_lookup_android.h"
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ #include "third_party/blink/renderer/platform/fonts/linux/font_unique_name_lookup_linux.h"
+ #elif defined(OS_WIN)
+ #include "third_party/blink/renderer/platform/fonts/win/font_unique_name_lookup_win.h"
+@@ -23,7 +23,7 @@ std::unique_ptr<FontUniqueNameLookup>
+ FontUniqueNameLookup::GetPlatformUniqueNameLookup() {
+ #if defined(OS_ANDROID)
+ return std::make_unique<FontUniqueNameLookupAndroid>();
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ return std::make_unique<FontUniqueNameLookupLinux>();
+ #elif defined(OS_WIN)
+ return std::make_unique<FontUniqueNameLookupWin>();
diff --git a/devel/electron7/files/patch-third__party_blink_renderer_platform_fonts_skia_font__cache__skia.cc b/devel/electron7/files/patch-third__party_blink_renderer_platform_fonts_skia_font__cache__skia.cc
new file mode 100644
index 000000000000..1394d43062cc
--- /dev/null
+++ b/devel/electron7/files/patch-third__party_blink_renderer_platform_fonts_skia_font__cache__skia.cc
@@ -0,0 +1,38 @@
+--- third_party/blink/renderer/platform/fonts/skia/font_cache_skia.cc.orig 2019-12-12 12:40:11 UTC
++++ third_party/blink/renderer/platform/fonts/skia/font_cache_skia.cc
+@@ -59,7 +59,7 @@ AtomicString ToAtomicString(const SkString& str) {
+ return AtomicString::FromUTF8(str.c_str(), str.size());
+ }
+
+-#if defined(OS_ANDROID) || defined(OS_LINUX)
++#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_BSD)
+ // This function is called on android or when we are emulating android fonts on
+ // linux and the embedder has overriden the default fontManager with
+ // WebFontRendering::setSkiaFontMgr.
+@@ -82,7 +82,7 @@ AtomicString FontCache::GetFamilyNameForCharacter(
+ typeface->getFamilyName(&skia_family_name);
+ return ToAtomicString(skia_family_name);
+ }
+-#endif // defined(OS_ANDROID) || defined(OS_LINUX)
++#endif // defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_BSD)
+
+ void FontCache::PlatformInit() {}
+
+@@ -227,7 +227,7 @@ sk_sp<SkTypeface> FontCache::CreateTypeface(
+ }
+ #endif
+
+-#if defined(OS_LINUX) || defined(OS_WIN)
++#if defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD)
+ // On linux if the fontManager has been overridden then we should be calling
+ // the embedder provided font Manager rather than calling
+ // SkTypeface::CreateFromName which may redirect the call to the default font
+@@ -254,7 +254,7 @@ std::unique_ptr<FontPlatformData> FontCache::CreateFon
+ std::string name;
+
+ sk_sp<SkTypeface> typeface;
+-#if defined(OS_ANDROID) || defined(OS_LINUX)
++#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_BSD)
+ if (alternate_name == AlternateFontName::kLocalUniqueFace &&
+ RuntimeEnabledFeatures::FontSrcLocalMatchingEnabled()) {
+ typeface = CreateTypefaceFromUniqueName(creation_params);
diff --git a/devel/electron7/files/patch-third__party_blink_renderer_platform_wtf_container__annotations.h b/devel/electron7/files/patch-third__party_blink_renderer_platform_wtf_container__annotations.h
new file mode 100644
index 000000000000..48d0cc24aef7
--- /dev/null
+++ b/devel/electron7/files/patch-third__party_blink_renderer_platform_wtf_container__annotations.h
@@ -0,0 +1,27 @@
+--- third_party/blink/renderer/platform/wtf/container_annotations.h.orig 2019-12-12 12:40:12 UTC
++++ third_party/blink/renderer/platform/wtf/container_annotations.h
+@@ -10,7 +10,7 @@
+
+ // TODO(ochang): Remove the ARCH_CPU_X86_64 condition to enable this for X86
+ // once the crashes there have been fixed: http://crbug.com/461406
+-#if defined(ADDRESS_SANITIZER) && defined(OS_LINUX) && defined(ARCH_CPU_X86_64)
++#if defined(ADDRESS_SANITIZER) && (defined(OS_LINUX) || defined(OS_BSD)) && defined(ARCH_CPU_X86_64)
+ #define ANNOTATE_CONTIGUOUS_CONTAINER
+ #define ANNOTATE_NEW_BUFFER(buffer, capacity, newSize) \
+ if (buffer) { \
+@@ -35,13 +35,13 @@
+ ANNOTATE_NEW_BUFFER(buffer, newCapacity, bufferSize);
+ // Annotations require buffers to begin on an 8-byte boundary.
+
+-#else // ADDRESS_SANITIZER && OS_LINUX && ARCH_CPU_X86_64
++#else // ADDRESS_SANITIZER && (OS_LINUX || OS_BSD) && ARCH_CPU_X86_64
+
+ #define ANNOTATE_NEW_BUFFER(buffer, capacity, newSize)
+ #define ANNOTATE_DELETE_BUFFER(buffer, capacity, oldSize)
+ #define ANNOTATE_CHANGE_SIZE(buffer, capacity, oldSize, newSize)
+ #define ANNOTATE_CHANGE_CAPACITY(buffer, oldCapacity, bufferSize, newCapacity)
+
+-#endif // ADDRESS_SANITIZER && OS_LINUX && ARCH_CPU_X86_64
++#endif // ADDRESS_SANITIZER && (OS_LINUX || OS_BSD) && ARCH_CPU_X86_64
+
+ #endif // THIRD_PARTY_BLINK_RENDERER_PLATFORM_WTF_CONTAINER_ANNOTATIONS_H_
diff --git a/devel/electron7/files/patch-third__party_blink_renderer_platform_wtf_stack__util.cc b/devel/electron7/files/patch-third__party_blink_renderer_platform_wtf_stack__util.cc
new file mode 100644
index 000000000000..28cf17a4ddb6
--- /dev/null
+++ b/devel/electron7/files/patch-third__party_blink_renderer_platform_wtf_stack__util.cc
@@ -0,0 +1,14 @@
+--- third_party/blink/renderer/platform/wtf/stack_util.cc.orig 2019-12-12 12:40:12 UTC
++++ third_party/blink/renderer/platform/wtf/stack_util.cc
+@@ -17,6 +17,11 @@
+ extern "C" void* __libc_stack_end; // NOLINT
+ #endif
+
++#if defined(OS_FREEBSD)
++#include <sys/signal.h>
++#include <pthread_np.h>
++#endif
++
+ namespace WTF {
+
+ size_t GetUnderestimatedStackSize() {
diff --git a/devel/electron7/files/patch-third__party_blink_renderer_platform_wtf_threading__pthreads.cc b/devel/electron7/files/patch-third__party_blink_renderer_platform_wtf_threading__pthreads.cc
new file mode 100644
index 000000000000..37dd5a0ed6b8
--- /dev/null
+++ b/devel/electron7/files/patch-third__party_blink_renderer_platform_wtf_threading__pthreads.cc
@@ -0,0 +1,22 @@
+--- third_party/blink/renderer/platform/wtf/threading_pthreads.cc.orig 2019-12-12 12:40:12 UTC
++++ third_party/blink/renderer/platform/wtf/threading_pthreads.cc
+@@ -51,12 +51,17 @@
+ #include <objc/objc-auto.h>
+ #endif
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include <sys/syscall.h>
+ #endif
+
+-#if defined(OS_LINUX) || defined(OS_ANDROID)
++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
+ #include <unistd.h>
++#endif
++
++#if defined(OS_BSD)
++#include <sys/signal.h>
++#include <pthread_np.h>
+ #endif
+
+ namespace WTF {
diff --git a/devel/electron7/files/patch-third__party_boringssl_BUILD.gn b/devel/electron7/files/patch-third__party_boringssl_BUILD.gn
new file mode 100644
index 000000000000..a84374cdcc82
--- /dev/null
+++ b/devel/electron7/files/patch-third__party_boringssl_BUILD.gn
@@ -0,0 +1,36 @@
+--- third_party/boringssl/BUILD.gn.orig 2019-12-16 13:32:58 UTC
++++ third_party/boringssl/BUILD.gn
+@@ -87,7 +87,7 @@ if (is_win && !is_msan && current_cpu != "arm64") {
+ } else if (current_cpu == "x64") {
+ if (is_mac) {
+ sources += crypto_sources_mac_x86_64
+- } else if (is_linux || is_android) {
++ } else if (is_linux || is_bsd || is_android) {
+ sources += crypto_sources_linux_x86_64
+ } else {
+ public_configs = [ ":no_asm_config" ]
+@@ -95,13 +95,13 @@ if (is_win && !is_msan && current_cpu != "arm64") {
+ } else if (current_cpu == "x86") {
+ if (is_mac) {
+ sources += crypto_sources_mac_x86
+- } else if (is_linux || is_android) {
++ } else if (is_linux || is_bsd || is_android) {
+ sources += crypto_sources_linux_x86
+ } else {
+ public_configs = [ ":no_asm_config" ]
+ }
+ } else if (current_cpu == "arm") {
+- if (is_linux || is_android) {
++ if (is_linux || is_bsd || is_android) {
+ sources += crypto_sources_linux_arm
+ } else if (is_ios) {
+ sources += crypto_sources_ios_arm
+@@ -109,7 +109,7 @@ if (is_win && !is_msan && current_cpu != "arm64") {
+ public_configs = [ ":no_asm_config" ]
+ }
+ } else if (current_cpu == "arm64") {
+- if (is_linux || is_android) {
++ if (is_linux || is_bsd || is_android) {
+ sources += crypto_sources_linux_aarch64
+ } else if (is_ios) {
+ sources += crypto_sources_ios_aarch64
diff --git a/devel/electron7/files/patch-third__party_boringssl_src_crypto_cpu-aarch64-linux.c b/devel/electron7/files/patch-third__party_boringssl_src_crypto_cpu-aarch64-linux.c
new file mode 100644
index 000000000000..485a6bd106e5
--- /dev/null
+++ b/devel/electron7/files/patch-third__party_boringssl_src_crypto_cpu-aarch64-linux.c
@@ -0,0 +1,63 @@
+--- third_party/boringssl/src/crypto/cpu-aarch64-linux.c.orig 2019-12-12 12:42:34 UTC
++++ third_party/boringssl/src/crypto/cpu-aarch64-linux.c
+@@ -14,49 +14,35 @@
+
+ #include <openssl/cpu.h>
+
+-#if defined(OPENSSL_AARCH64) && defined(OPENSSL_LINUX) && \
+- !defined(OPENSSL_STATIC_ARMCAP)
++#if defined(OPENSSL_AARCH64)
+
+-#include <sys/auxv.h>
+-
+ #include <openssl/arm_arch.h>
+
+ #include "internal.h"
+
+-
+ extern uint32_t OPENSSL_armcap_P;
+
++#include <sys/types.h>
++#include <machine/armreg.h>
++
+ void OPENSSL_cpuid_setup(void) {
+- unsigned long hwcap = getauxval(AT_HWCAP);
++ uint64_t id_aa64isar0;
+
+- // See /usr/include/asm/hwcap.h on an aarch64 installation for the source of
+- // these values.
+- static const unsigned long kNEON = 1 << 1;
+- static const unsigned long kAES = 1 << 3;
+- static const unsigned long kPMULL = 1 << 4;
+- static const unsigned long kSHA1 = 1 << 5;
+- static const unsigned long kSHA256 = 1 << 6;
++ id_aa64isar0 = READ_SPECIALREG(ID_AA64ISAR0_EL1);
+
+- if ((hwcap & kNEON) == 0) {
+- // Matching OpenSSL, if NEON is missing, don't report other features
+- // either.
+- return;
+- }
+-
+ OPENSSL_armcap_P |= ARMV7_NEON;
+
+- if (hwcap & kAES) {
++ if (ID_AA64ISAR0_AES(id_aa64isar0) >= ID_AA64ISAR0_AES_BASE) {
+ OPENSSL_armcap_P |= ARMV8_AES;
+ }
+- if (hwcap & kPMULL) {
++ if (ID_AA64ISAR0_AES(id_aa64isar0) == ID_AA64ISAR0_AES_PMULL) {
+ OPENSSL_armcap_P |= ARMV8_PMULL;
+ }
+- if (hwcap & kSHA1) {
++ if (ID_AA64ISAR0_SHA1(id_aa64isar0) == ID_AA64ISAR0_SHA1_BASE) {
+ OPENSSL_armcap_P |= ARMV8_SHA1;
+ }
+- if (hwcap & kSHA256) {
++ if(ID_AA64ISAR0_SHA2(id_aa64isar0) >= ID_AA64ISAR0_SHA2_BASE) {
+ OPENSSL_armcap_P |= ARMV8_SHA256;
+ }
+ }
+-
+-#endif // OPENSSL_AARCH64 && !OPENSSL_STATIC_ARMCAP
++#endif // OPENSSL_AARCH64
diff --git a/devel/electron7/files/patch-third__party_boringssl_src_crypto_ex__data.c b/devel/electron7/files/patch-third__party_boringssl_src_crypto_ex__data.c
new file mode 100644
index 000000000000..a3c2508fb4e8
--- /dev/null
+++ b/devel/electron7/files/patch-third__party_boringssl_src_crypto_ex__data.c
@@ -0,0 +1,13 @@
+--- third_party/boringssl/src/crypto/ex_data.c.orig 2019-12-12 12:42:34 UTC
++++ third_party/boringssl/src/crypto/ex_data.c
+@@ -186,7 +186,9 @@ int CRYPTO_set_ex_data(CRYPTO_EX_DATA *ad, int index,
+ }
+ }
+
+- sk_void_set(ad->sk, index, val);
++ // expression result unused; should this cast be to 'void'?
++ // seems it should, feel free to investigate those #def
++ (void) sk_void_set(ad->sk, index, val);
+ return 1;
+ }
+
diff --git a/devel/electron7/files/patch-third__party_breakpad_breakpad_src_common_simple__string__dictionary.h b/devel/electron7/files/patch-third__party_breakpad_breakpad_src_common_simple__string__dictionary.h
new file mode 100644
index 000000000000..fcc0a6e1e883
--- /dev/null
+++ b/devel/electron7/files/patch-third__party_breakpad_breakpad_src_common_simple__string__dictionary.h
@@ -0,0 +1,11 @@
+--- third_party/breakpad/breakpad/src/common/simple_string_dictionary.h.orig 2019-12-12 12:42:09 UTC
++++ third_party/breakpad/breakpad/src/common/simple_string_dictionary.h
+@@ -33,7 +33,7 @@
+ #include <assert.h>
+ #include <string.h>
+
+-#include "common/basictypes.h"
++#include "third_party/breakpad/breakpad/src/common/basictypes.h"
+
+ namespace google_breakpad {
+
diff --git a/devel/electron7/files/patch-third__party_cacheinvalidation_src_google_cacheinvalidation_include_types.h b/devel/electron7/files/patch-third__party_cacheinvalidation_src_google_cacheinvalidation_include_types.h
new file mode 100644
index 000000000000..3b358696584a
--- /dev/null
+++ b/devel/electron7/files/patch-third__party_cacheinvalidation_src_google_cacheinvalidation_include_types.h
@@ -0,0 +1,11 @@
+--- third_party/cacheinvalidation/src/google/cacheinvalidation/include/types.h.orig 2019-12-12 12:41:24 UTC
++++ third_party/cacheinvalidation/src/google/cacheinvalidation/include/types.h
+@@ -334,6 +334,8 @@ class Status {
+ */
+ PERMANENT_FAILURE
+ };
++
++ Status() : code_(SUCCESS), message_() {}
+
+ /* Creates a new Status object given the code and message. */
+ Status(Code code, const string& message) : code_(code), message_(message) {}
diff --git a/devel/electron7/files/patch-third__party_crashpad_crashpad_build_crashpad__buildconfig.gni b/devel/electron7/files/patch-third__party_crashpad_crashpad_build_crashpad__buildconfig.gni
new file mode 100644
index 000000000000..1b797b14ae05
--- /dev/null
+++ b/devel/electron7/files/patch-third__party_crashpad_crashpad_build_crashpad__buildconfig.gni
@@ -0,0 +1,11 @@
+--- third_party/crashpad/crashpad/build/crashpad_buildconfig.gni.orig 2019-12-12 12:41:24 UTC
++++ third_party/crashpad/crashpad/build/crashpad_buildconfig.gni
+@@ -38,7 +38,7 @@ crashpad_is_standalone = crashpad_dependencies == "sta
+ if (crashpad_is_in_chromium) {
+ crashpad_is_mac = is_mac
+ crashpad_is_win = is_win
+- crashpad_is_linux = is_linux
++ crashpad_is_linux = is_linux && !is_bsd
+ crashpad_is_android = is_android
+ crashpad_is_fuchsia = is_fuchsia
+
diff --git a/devel/electron7/files/patch-third__party_crashpad_crashpad_client_BUILD.gn b/devel/electron7/files/patch-third__party_crashpad_crashpad_client_BUILD.gn
new file mode 100644
index 000000000000..9bd18891ed0d
--- /dev/null
+++ b/devel/electron7/files/patch-third__party_crashpad_crashpad_client_BUILD.gn
@@ -0,0 +1,15 @@
+--- third_party/crashpad/crashpad/client/BUILD.gn.orig 2019-12-12 12:41:24 UTC
++++ third_party/crashpad/crashpad/client/BUILD.gn
+@@ -71,6 +71,12 @@ static_library("client") {
+ sources += [ "crashpad_client_fuchsia.cc" ]
+ }
+
++ if (crashpad_is_posix) {
++ sources += [
++ "crashpad_client_posix.cc",
++ ]
++ }
++
+ if (crashpad_is_linux || crashpad_is_android || crashpad_is_fuchsia) {
+ sources += [ "crash_report_database_generic.cc" ]
+ }
diff --git a/devel/electron7/files/patch-third__party_crashpad_crashpad_client_crashpad__client__posix.cc b/devel/electron7/files/patch-third__party_crashpad_crashpad_client_crashpad__client__posix.cc
new file mode 100644
index 000000000000..1f511dca2400
--- /dev/null
+++ b/devel/electron7/files/patch-third__party_crashpad_crashpad_client_crashpad__client__posix.cc
@@ -0,0 +1,41 @@
+--- third_party/crashpad/crashpad/client/crashpad_client_posix.cc.orig 2019-12-16 13:33:59 UTC
++++ third_party/crashpad/crashpad/client/crashpad_client_posix.cc
+@@ -0,0 +1,38 @@
++// Copyright 2017 The Crashpad Authors. All rights reserved.
++//
++// Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0
++//
++// 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.
++
++#include "client/crashpad_client.h"
++
++#include "base/logging.h"
++
++namespace crashpad {
++
++CrashpadClient::CrashpadClient() {}
++
++CrashpadClient::~CrashpadClient() {}
++
++bool CrashpadClient::StartHandler(
++ const base::FilePath& handler,
++ const base::FilePath& database,
++ const base::FilePath& metrics_dir,
++ const std::string& url,
++ const std::map<std::string, std::string>& annotations,
++ const std::vector<std::string>& arguments,
++ bool restartable,
++ bool asynchronous_start) {
++ NOTREACHED(); // TODO(scottmg): https://crashpad.chromium.org/bug/196
++ return false;
++}
++
++} // namespace crashpad
diff --git a/devel/electron7/files/patch-third__party_crashpad_crashpad_util_misc_address__types.h b/devel/electron7/files/patch-third__party_crashpad_crashpad_util_misc_address__types.h
new file mode 100644
index 000000000000..94f41872c065
--- /dev/null
+++ b/devel/electron7/files/patch-third__party_crashpad_crashpad_util_misc_address__types.h
@@ -0,0 +1,20 @@
+--- third_party/crashpad/crashpad/util/misc/address_types.h.orig 2019-12-12 12:41:25 UTC
++++ third_party/crashpad/crashpad/util/misc/address_types.h
+@@ -25,7 +25,7 @@
+ #include <mach/mach_types.h>
+ #elif defined(OS_WIN)
+ #include "util/win/address_types.h"
+-#elif defined(OS_LINUX) || defined(OS_ANDROID)
++#elif defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
+ #include "util/linux/address_types.h"
+ #elif defined(OS_FUCHSIA)
+ #include <zircon/types.h>
+@@ -55,7 +55,7 @@ using VMSize = mach_vm_size_t;
+ using VMAddress = WinVMAddress;
+ using VMSize = WinVMSize;
+
+-#elif defined(OS_LINUX) || defined(OS_ANDROID)
++#elif defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
+
+ using VMAddress = LinuxVMAddress;
+ using VMSize = LinuxVMSize;
diff --git a/devel/electron7/files/patch-third__party_crashpad_crashpad_util_misc_capture__context.h b/devel/electron7/files/patch-third__party_crashpad_crashpad_util_misc_capture__context.h
new file mode 100644
index 000000000000..17829de781ae
--- /dev/null
+++ b/devel/electron7/files/patch-third__party_crashpad_crashpad_util_misc_capture__context.h
@@ -0,0 +1,20 @@
+--- third_party/crashpad/crashpad/util/misc/capture_context.h.orig 2019-12-12 12:41:25 UTC
++++ third_party/crashpad/crashpad/util/misc/capture_context.h
+@@ -21,7 +21,7 @@
+ #include <mach/mach.h>
+ #elif defined(OS_WIN)
+ #include <windows.h>
+-#elif defined(OS_LINUX) || defined(OS_ANDROID)
++#elif defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
+ #include <ucontext.h>
+ #elif defined(OS_FUCHSIA)
+ #include <signal.h>
+@@ -35,7 +35,7 @@ using NativeCPUContext = x86_thread_state;
+ #endif
+ #elif defined(OS_WIN)
+ using NativeCPUContext = CONTEXT;
+-#elif defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_FUCHSIA)
++#elif defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_FUCHSIA) || defined(OS_BSD)
+ using NativeCPUContext = ucontext_t;
+ #endif // OS_MACOSX
+
diff --git a/devel/electron7/files/patch-third__party_crashpad_crashpad_util_misc_metrics.cc b/devel/electron7/files/patch-third__party_crashpad_crashpad_util_misc_metrics.cc
new file mode 100644
index 000000000000..909a11dbb516
--- /dev/null
+++ b/devel/electron7/files/patch-third__party_crashpad_crashpad_util_misc_metrics.cc
@@ -0,0 +1,11 @@
+--- third_party/crashpad/crashpad/util/misc/metrics.cc.orig 2019-12-12 12:41:25 UTC
++++ third_party/crashpad/crashpad/util/misc/metrics.cc
+@@ -25,7 +25,7 @@
+ #define METRICS_OS_NAME "Win"
+ #elif defined(OS_ANDROID)
+ #define METRICS_OS_NAME "Android"
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ #define METRICS_OS_NAME "Linux"
+ #elif defined(OS_FUCHSIA)
+ #define METRICS_OS_NAME "Fuchsia"
diff --git a/devel/electron7/files/patch-third__party_crashpad_crashpad_util_misc_uuid.cc b/devel/electron7/files/patch-third__party_crashpad_crashpad_util_misc_uuid.cc
new file mode 100644
index 000000000000..a985d0968c53
--- /dev/null
+++ b/devel/electron7/files/patch-third__party_crashpad_crashpad_util_misc_uuid.cc
@@ -0,0 +1,11 @@
+--- third_party/crashpad/crashpad/util/misc/uuid.cc.orig 2019-12-12 12:41:25 UTC
++++ third_party/crashpad/crashpad/util/misc/uuid.cc
+@@ -95,7 +95,7 @@ bool UUID::InitializeWithNew() {
+ InitializeFromBytes(uuid);
+ return true;
+ #elif defined(OS_WIN) || defined(OS_LINUX) || defined(OS_ANDROID) || \
+- defined(OS_FUCHSIA)
++ defined(OS_FUCHSIA) || defined(OS_BSD)
+ // Linux, Android, and Fuchsia do not provide a UUID generator in a
+ // widely-available system library. On Linux and Android, uuid_generate()
+ // from libuuid is not available everywhere.
diff --git a/devel/electron7/files/patch-third__party_crashpad_crashpad_util_posix_close__multiple.cc b/devel/electron7/files/patch-third__party_crashpad_crashpad_util_posix_close__multiple.cc
new file mode 100644
index 000000000000..ecc7a7be524d
--- /dev/null
+++ b/devel/electron7/files/patch-third__party_crashpad_crashpad_util_posix_close__multiple.cc
@@ -0,0 +1,29 @@
+--- third_party/crashpad/crashpad/util/posix/close_multiple.cc.orig 2019-12-12 12:41:25 UTC
++++ third_party/crashpad/crashpad/util/posix/close_multiple.cc
+@@ -31,7 +31,7 @@
+ #include "util/file/directory_reader.h"
+ #include "util/misc/implicit_cast.h"
+
+-#if defined(OS_MACOSX)
++#if defined(OS_MACOSX) || defined(OS_BSD)
+ #include <sys/sysctl.h>
+ #endif
+
+@@ -72,7 +72,7 @@ void CloseNowOrOnExec(int fd, bool ebadf_ok) {
+ // This is an advantage over looping over all possible file descriptors, because
+ // no attempt needs to be made to close file descriptors that are not open.
+ bool CloseMultipleNowOrOnExecUsingFDDir(int min_fd, int preserve_fd) {
+-#if defined(OS_MACOSX)
++#if defined(OS_MACOSX) || defined(OS_BSD)
+ static constexpr char kFDDir[] = "/dev/fd";
+ #elif defined(OS_LINUX) || defined(OS_ANDROID)
+ static constexpr char kFDDir[] = "/proc/self/fd";
+@@ -146,7 +146,7 @@ void CloseMultipleNowOrOnExec(int fd, int preserve_fd)
+ // while the system is running, but it’s still a better upper bound than the
+ // current RLIMIT_NOFILE value.
+
+-#if defined(OS_MACOSX)
++#if defined(OS_MACOSX) || defined(OS_BSD)
+ // See 10.11.6 xnu-3248.60.10/bsd/kern/kern_resource.c maxfilesperproc,
+ // referenced by dosetrlimit().
+ int oid[] = {CTL_KERN, KERN_MAXFILESPERPROC};
diff --git a/devel/electron7/files/patch-third__party_crashpad_crashpad_util_posix_drop__privileges.cc b/devel/electron7/files/patch-third__party_crashpad_crashpad_util_posix_drop__privileges.cc
new file mode 100644
index 000000000000..6bcb086785b0
--- /dev/null
+++ b/devel/electron7/files/patch-third__party_crashpad_crashpad_util_posix_drop__privileges.cc
@@ -0,0 +1,11 @@
+--- third_party/crashpad/crashpad/util/posix/drop_privileges.cc.orig 2019-12-12 12:41:25 UTC
++++ third_party/crashpad/crashpad/util/posix/drop_privileges.cc
+@@ -23,7 +23,7 @@ void DropPrivileges() {
+ gid_t gid = getgid();
+ uid_t uid = getuid();
+
+-#if defined(OS_MACOSX)
++#if defined(OS_MACOSX) || defined(OS_BSD)
+ // Based on the POSIX.1-2008 2013 edition documentation for setreuid() and
+ // setregid(), setreuid() and setregid() alone should be sufficient to drop
+ // privileges. The standard specifies that the saved ID should be set to the
diff --git a/devel/electron7/files/patch-third__party_crashpad_crashpad_util_posix_signals.cc b/devel/electron7/files/patch-third__party_crashpad_crashpad_util_posix_signals.cc
new file mode 100644
index 000000000000..1027720f413a
--- /dev/null
+++ b/devel/electron7/files/patch-third__party_crashpad_crashpad_util_posix_signals.cc
@@ -0,0 +1,40 @@
+--- third_party/crashpad/crashpad/util/posix/signals.cc.orig 2019-12-12 12:41:25 UTC
++++ third_party/crashpad/crashpad/util/posix/signals.cc
+@@ -45,10 +45,10 @@ constexpr int kCrashSignals[] = {
+ #if defined(SIGEMT)
+ SIGEMT,
+ #endif // defined(SIGEMT)
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ SIGXCPU,
+ SIGXFSZ,
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+ };
+
+ // These are the non-core-generating but terminating signals.
+@@ -85,9 +85,9 @@ constexpr int kTerminateSignals[] = {
+ SIGXCPU,
+ SIGXFSZ,
+ #endif // defined(OS_MACOSX)
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ SIGIO,
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+ };
+
+ bool InstallHandlers(const std::vector<int>& signals,
+@@ -216,8 +216,12 @@ bool Signals::WillSignalReraiseAutonomously(const sigi
+ // remains. See 10.12.3 xnu-3789.41.3/bsd/kern/kern_sig.c
+ // psignal_internal().
+ (code > 0 &&
++#if defined(SI_ASYNCIO)
+ code != SI_ASYNCIO &&
++#endif
++#if defined(SI_MESGQ)
+ code != SI_MESGQ &&
++#endif
+ code != SI_QUEUE &&
+ code != SI_TIMER &&
+ code != SI_USER &&
diff --git a/devel/electron7/files/patch-third__party_crashpad_crashpad_util_posix_symbolic__constants__posix.cc b/devel/electron7/files/patch-third__party_crashpad_crashpad_util_posix_symbolic__constants__posix.cc
new file mode 100644
index 000000000000..ffe93ab63dd6
--- /dev/null
+++ b/devel/electron7/files/patch-third__party_crashpad_crashpad_util_posix_symbolic__constants__posix.cc
@@ -0,0 +1,20 @@
+--- third_party/crashpad/crashpad/util/posix/symbolic_constants_posix.cc.orig 2019-12-12 12:41:25 UTC
++++ third_party/crashpad/crashpad/util/posix/symbolic_constants_posix.cc
+@@ -64,7 +64,7 @@ constexpr const char* kSignalNames[] = {
+ "INFO",
+ "USR1",
+ "USR2",
+-#elif defined(OS_LINUX) || defined(OS_ANDROID)
++#elif defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
+ #if defined(ARCH_CPU_MIPS_FAMILY)
+ "HUP",
+ "INT",
+@@ -135,7 +135,7 @@ constexpr const char* kSignalNames[] = {
+ #endif // defined(ARCH_CPU_MIPS_FAMILY)
+ #endif
+ };
+-#if defined(OS_LINUX) || defined(OS_ANDROID)
++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
+ // NSIG is 64 to account for real-time signals.
+ static_assert(base::size(kSignalNames) == 32, "kSignalNames length");
+ #else
diff --git a/devel/electron7/files/patch-third__party_crc32c_src_src_crc32c__arm64__linux__check.h b/devel/electron7/files/patch-third__party_crc32c_src_src_crc32c__arm64__linux__check.h
new file mode 100644
index 000000000000..6b85f039df52
--- /dev/null
+++ b/devel/electron7/files/patch-third__party_crc32c_src_src_crc32c__arm64__linux__check.h
@@ -0,0 +1,53 @@
+--- third_party/crc32c/src/src/crc32c_arm64_linux_check.h.orig 2019-12-12 12:42:05 UTC
++++ third_party/crc32c/src/src/crc32c_arm64_linux_check.h
+@@ -7,8 +7,6 @@
+ #ifndef CRC32C_CRC32C_ARM_LINUX_CHECK_H_
+ #define CRC32C_CRC32C_ARM_LINUX_CHECK_H_
+
+-// X86-specific code checking for the availability of SSE4.2 instructions.
+-
+ #include <cstddef>
+ #include <cstdint>
+
+@@ -16,30 +14,19 @@
+
+ #if HAVE_ARM64_CRC32C
+
+-#if HAVE_STRONG_GETAUXVAL
+-#include <sys/auxv.h>
+-#elif HAVE_WEAK_GETAUXVAL
+-// getauxval() is not available on Android until API level 20. Link it as a weak
+-// symbol.
+-extern "C" unsigned long getauxval(unsigned long type) __attribute__((weak));
+-
+-#define AT_HWCAP 16
+-#endif // HAVE_STRONG_GETAUXVAL || HAVE_WEAK_GETAUXVAL
+-
++#include <machine/armreg.h>
++#include <sys/types.h>
+ namespace crc32c {
+
+-inline bool CanUseArm64Linux() {
+-#if HAVE_STRONG_GETAUXVAL || HAVE_WEAK_GETAUXVAL
+- // From 'arch/arm64/include/uapi/asm/hwcap.h' in Linux kernel source code.
+- constexpr unsigned long kHWCAP_PMULL = 1 << 4;
+- constexpr unsigned long kHWCAP_CRC32 = 1 << 7;
+- unsigned long hwcap = (&getauxval != nullptr) ? getauxval(AT_HWCAP) : 0;
+- return (hwcap & (kHWCAP_PMULL | kHWCAP_CRC32)) ==
+- (kHWCAP_PMULL | kHWCAP_CRC32);
+-#else
+- return false;
+-#endif // HAVE_STRONG_GETAUXVAL || HAVE_WEAK_GETAUXVAL
+-}
++ inline bool CanUseArm64Linux() {
++ uint64_t id_aa64isar0;
++
++ id_aa64isar0 = READ_SPECIALREG(ID_AA64ISAR0_EL1);
++ if ((ID_AA64ISAR0_AES(id_aa64isar0) == ID_AA64ISAR0_AES_PMULL) && \
++ (ID_AA64ISAR0_CRC32(id_aa64isar0) == ID_AA64ISAR0_CRC32_BASE))
++ return true;
++ return false;
++ }
+
+ } // namespace crc32c
+
diff --git a/devel/electron7/files/patch-third__party_electron__node_deps_uv_BUILD.gn b/devel/electron7/files/patch-third__party_electron__node_deps_uv_BUILD.gn
new file mode 100644
index 000000000000..0583582d7282
--- /dev/null
+++ b/devel/electron7/files/patch-third__party_electron__node_deps_uv_BUILD.gn
@@ -0,0 +1,45 @@
+--- third_party/electron_node/deps/uv/BUILD.gn.orig 2019-12-16 13:32:59 UTC
++++ third_party/electron_node/deps/uv/BUILD.gn
+@@ -3,7 +3,7 @@ config("libuv_config") {
+
+ defines = []
+
+- if (is_linux) {
++ if (is_linux && !is_bsd) {
+ defines += [ "_POSIX_C_SOURCE=200112" ]
+ }
+ if (!is_win) {
+@@ -147,7 +147,7 @@ static_library("uv") {
+ libs += [ "m" ]
+ ldflags += [ "-pthread" ]
+ }
+- if (is_mac || is_linux) {
++ if (is_mac || (is_linux && !is_bsd)) {
+ sources += [ "src/unix/proctitle.c" ]
+ }
+ if (is_mac) {
+@@ -161,7 +161,7 @@ static_library("uv") {
+ "_DARWIN_UNLIMITED_SELECT=1",
+ ]
+ }
+- if (is_linux) {
++ if (is_linux && !is_bsd) {
+ defines += [ "_GNU_SOURCE" ]
+ sources += [
+ "src/unix/linux-core.c",
+@@ -180,6 +180,15 @@ static_library("uv") {
+ sources += [
+ "src/unix/bsd-ifaddrs.c",
+ "src/unix/kqueue.c",
++ ]
++ }
++ if (is_bsd) {
++ sources += [
++ "src/unix/bsd-ifaddrs.c",
++ "src/unix/bsd-proctitle.c",
++ "src/unix/freebsd.c",
++ "src/unix/kqueue.c",
++ "src/unix/posix-hrtime.c",
+ ]
+ }
+ }
diff --git a/devel/electron7/files/patch-third__party_ffmpeg_libavutil_mem.c b/devel/electron7/files/patch-third__party_ffmpeg_libavutil_mem.c
new file mode 100644
index 000000000000..400d671d2418
--- /dev/null
+++ b/devel/electron7/files/patch-third__party_ffmpeg_libavutil_mem.c
@@ -0,0 +1,12 @@
+--- third_party/ffmpeg/libavutil/mem.c.orig 2019-12-12 12:45:07 UTC
++++ third_party/ffmpeg/libavutil/mem.c
+@@ -32,9 +32,6 @@
+ #include <stdint.h>
+ #include <stdlib.h>
+ #include <string.h>
+-#if HAVE_MALLOC_H
+-#include <malloc.h>
+-#endif
+
+ #include "avassert.h"
+ #include "avutil.h"
diff --git a/devel/electron7/files/patch-third__party_glslang_src_glslang_Include_PoolAlloc.h b/devel/electron7/files/patch-third__party_glslang_src_glslang_Include_PoolAlloc.h
new file mode 100644
index 000000000000..724235baa372
--- /dev/null
+++ b/devel/electron7/files/patch-third__party_glslang_src_glslang_Include_PoolAlloc.h
@@ -0,0 +1,10 @@
+--- third_party/glslang/src/glslang/Include/PoolAlloc.h.orig 2020-03-15 10:41:44 UTC
++++ third_party/glslang/src/glslang/Include/PoolAlloc.h
+@@ -304,7 +304,6 @@ class pool_allocator { (public)
+ size_type max_size() const { return static_cast<size_type>(-1) / sizeof(T); }
+ size_type max_size(int size) const { return static_cast<size_type>(-1) / size; }
+
+- void setAllocator(TPoolAllocator* a) { allocator = *a; }
+ TPoolAllocator& getAllocator() const { return allocator; }
+
+ protected:
diff --git a/devel/electron7/files/patch-third__party_googletest_src_googletest_src_gtest-port.cc b/devel/electron7/files/patch-third__party_googletest_src_googletest_src_gtest-port.cc
new file mode 100644
index 000000000000..379f1def0585
--- /dev/null
+++ b/devel/electron7/files/patch-third__party_googletest_src_googletest_src_gtest-port.cc
@@ -0,0 +1,43 @@
+--- third_party/googletest/src/googletest/src/gtest-port.cc.orig 2019-12-12 12:42:45 UTC
++++ third_party/googletest/src/googletest/src/gtest-port.cc
+@@ -63,6 +63,11 @@
+ # endif
+ #endif
+
++#if GTEST_OS_FREEBSD
++#include <sys/sysctl.h>
++#include <sys/user.h>
++#endif
++
+ #if GTEST_OS_QNX
+ # include <devctl.h>
+ # include <fcntl.h>
+@@ -137,6 +142,28 @@ size_t GetThreadCount() {
+ } else {
+ return 0;
+ }
++}
++
++#elif GTEST_OS_FREEBSD
++
++#define KP_NLWP(kp) (kp.ki_numthreads)
++
++// Return the number of threads running in the process, or 0 to indicate that
++// we cannot detect it.
++size_t GetThreadCount() {
++ int mib[] = {
++ CTL_KERN,
++ KERN_PROC,
++ KERN_PROC_PID,
++ getpid(),
++ };
++ u_int miblen = sizeof(mib) / sizeof(mib[0]);
++ struct kinfo_proc(info);
++ size_t size = sizeof(info);
++ if (sysctl(mib, miblen, &info, &size, NULL, 0)) {
++ return 0;
++ }
++ return KP_NLWP(info);
+ }
+
+ #elif GTEST_OS_DRAGONFLY || GTEST_OS_FREEBSD || GTEST_OS_GNU_KFREEBSD || \
diff --git a/devel/electron7/files/patch-third__party_googletest_src_googletest_src_gtest.cc b/devel/electron7/files/patch-third__party_googletest_src_googletest_src_gtest.cc
new file mode 100644
index 000000000000..f14d48901ac2
--- /dev/null
+++ b/devel/electron7/files/patch-third__party_googletest_src_googletest_src_gtest.cc
@@ -0,0 +1,10 @@
+--- third_party/googletest/src/googletest/src/gtest.cc.orig 2019-12-12 12:42:45 UTC
++++ third_party/googletest/src/googletest/src/gtest.cc
+@@ -114,6 +114,7 @@
+
+ #if GTEST_CAN_STREAM_RESULTS_
+ # include <arpa/inet.h> // NOLINT
++# include <sys/socket.h> // NOLINT
+ # include <netdb.h> // NOLINT
+ # include <sys/socket.h> // NOLINT
+ # include <sys/types.h> // NOLINT
diff --git a/devel/electron7/files/patch-third__party_leveldatabase_env__chromium.cc b/devel/electron7/files/patch-third__party_leveldatabase_env__chromium.cc
new file mode 100644
index 000000000000..707e9d329387
--- /dev/null
+++ b/devel/electron7/files/patch-third__party_leveldatabase_env__chromium.cc
@@ -0,0 +1,14 @@
+--- third_party/leveldatabase/env_chromium.cc.orig 2019-12-12 12:41:26 UTC
++++ third_party/leveldatabase/env_chromium.cc
+@@ -40,7 +40,11 @@
+ #include "third_party/leveldatabase/leveldb_chrome.h"
+ #include "third_party/leveldatabase/leveldb_features.h"
+ #include "third_party/leveldatabase/src/include/leveldb/options.h"
++#if defined(OS_BSD)
++#include <re2/re2.h>
++#else
+ #include "third_party/re2/src/re2/re2.h"
++#endif
+
+ #if defined(OS_WIN)
+ #undef DeleteFile
diff --git a/devel/electron7/files/patch-third__party_libXNVCtrl_NVCtrl.c b/devel/electron7/files/patch-third__party_libXNVCtrl_NVCtrl.c
new file mode 100644
index 000000000000..fb69699d2d29
--- /dev/null
+++ b/devel/electron7/files/patch-third__party_libXNVCtrl_NVCtrl.c
@@ -0,0 +1,25 @@
+--- third_party/libXNVCtrl/NVCtrl.c.orig 2019-12-12 12:41:26 UTC
++++ third_party/libXNVCtrl/NVCtrl.c
+@@ -27,10 +27,6 @@
+ * libXNVCtrl library properly protects the Display connection.
+ */
+
+-#if !defined(XTHREADS)
+-#define XTHREADS
+-#endif /* XTHREADS */
+-
+ #define NEED_EVENTS
+ #define NEED_REPLIES
+ #include <stdint.h>
+@@ -39,6 +35,11 @@
+ #include <X11/Xutil.h>
+ #include <X11/extensions/Xext.h>
+ #include <X11/extensions/extutil.h>
++
++#if !defined(XTHREADS)
++#define XTHREADS
++#endif /* XTHREADS */
++
+ #include "NVCtrlLib.h"
+ #include "nv_control.h"
+
diff --git a/devel/electron7/files/patch-third__party_libphonenumber_dist_cpp_src_phonenumbers_base_memory_singleton.h b/devel/electron7/files/patch-third__party_libphonenumber_dist_cpp_src_phonenumbers_base_memory_singleton.h
new file mode 100644
index 000000000000..6a68a2f7812f
--- /dev/null
+++ b/devel/electron7/files/patch-third__party_libphonenumber_dist_cpp_src_phonenumbers_base_memory_singleton.h
@@ -0,0 +1,11 @@
+--- third_party/libphonenumber/dist/cpp/src/phonenumbers/base/memory/singleton.h.orig 2019-12-12 12:44:12 UTC
++++ third_party/libphonenumber/dist/cpp/src/phonenumbers/base/memory/singleton.h
+@@ -56,7 +56,7 @@ template <class T> boost::once_flag Singleton<T>::flag
+ #include "phonenumbers/base/logging.h"
+ #include "phonenumbers/base/thread_checker.h"
+
+-#if !defined(__linux__) && !defined(__APPLE__)
++#if !defined(__linux__) && !defined(__APPLE__) && !defined(__FreeBSD__) && !defined(__OpenBSD__)
+
+ namespace i18n {
+ namespace phonenumbers {
diff --git a/devel/electron7/files/patch-third__party_libphonenumber_dist_cpp_src_phonenumbers_base_synchronization_lock.h b/devel/electron7/files/patch-third__party_libphonenumber_dist_cpp_src_phonenumbers_base_synchronization_lock.h
new file mode 100644
index 000000000000..52f23551f4ca
--- /dev/null
+++ b/devel/electron7/files/patch-third__party_libphonenumber_dist_cpp_src_phonenumbers_base_synchronization_lock.h
@@ -0,0 +1,11 @@
+--- third_party/libphonenumber/dist/cpp/src/phonenumbers/base/synchronization/lock.h.orig 2019-12-12 12:44:12 UTC
++++ third_party/libphonenumber/dist/cpp/src/phonenumbers/base/synchronization/lock.h
+@@ -63,7 +63,7 @@ class Lock { (private)
+ // Dummy lock implementation on non-POSIX platforms. If you are running on a
+ // different platform and care about thread-safety, please compile with
+ // -DI18N_PHONENUMBERS_USE_BOOST.
+-#elif !defined(__linux__) && !defined(__APPLE__)
++#elif !defined(__linux__) && !defined(__APPLE__) && !defined(__FreeBSD__)
+
+ namespace i18n {
+ namespace phonenumbers {
diff --git a/devel/electron7/files/patch-third__party_libphonenumber_dist_cpp_src_phonenumbers_base_thread__checker.h b/devel/electron7/files/patch-third__party_libphonenumber_dist_cpp_src_phonenumbers_base_thread__checker.h
new file mode 100644
index 000000000000..840ee8df9c19
--- /dev/null
+++ b/devel/electron7/files/patch-third__party_libphonenumber_dist_cpp_src_phonenumbers_base_thread__checker.h
@@ -0,0 +1,19 @@
+--- third_party/libphonenumber/dist/cpp/src/phonenumbers/base/thread_checker.h.orig 2019-12-12 12:44:12 UTC
++++ third_party/libphonenumber/dist/cpp/src/phonenumbers/base/thread_checker.h
+@@ -23,6 +23,7 @@
+ // user of the library know that it can't be used in a thread-safe manner when
+ // it is not depending on Boost.
+ #if !defined(__linux__) && !defined(__APPLE__) && \
++ !defined(__FreeBSD__) && !defined(__OpenBSD__) && \
+ !defined(I18N_PHONENUMBERS_NO_THREAD_SAFETY)
+ #error Building without Boost, please provide \
+ -DI18N_PHONENUMBERS_NO_THREAD_SAFETY
+@@ -31,7 +32,7 @@
+ #endif
+
+ #if !defined(NDEBUG) && !defined(I18N_PHONENUMBERS_USE_BOOST) && \
+- (defined(__linux__) || defined(__apple__))
++ (defined(__linux__) || defined(__apple__)) || defined(__FreeBSD__) || defined(__OpenBSD__)
+
+ #include <pthread.h>
+
diff --git a/devel/electron7/files/patch-third__party_libyuv_include_libyuv_row.h b/devel/electron7/files/patch-third__party_libyuv_include_libyuv_row.h
new file mode 100644
index 000000000000..2502ea5a3286
--- /dev/null
+++ b/devel/electron7/files/patch-third__party_libyuv_include_libyuv_row.h
@@ -0,0 +1,37 @@
+--- third_party/libyuv/include/libyuv/row.h.orig 2019-12-12 12:44:25 UTC
++++ third_party/libyuv/include/libyuv/row.h
+@@ -157,10 +157,14 @@ extern "C" {
+ #define HAS_ARGBSHADEROW_SSE2
+ #define HAS_ARGBSUBTRACTROW_SSE2
+ #define HAS_ARGBUNATTENUATEROW_SSE2
++#if !(defined(__i386__) && defined(__GNUC__))
+ #define HAS_BLENDPLANEROW_SSSE3
++#endif
+ #define HAS_COMPUTECUMULATIVESUMROW_SSE2
+ #define HAS_CUMULATIVESUMTOAVERAGEROW_SSE2
++#if !(defined(__i386__) && defined(__GNUC__))
+ #define HAS_INTERPOLATEROW_SSSE3
++#endif
+ #define HAS_RGBCOLORTABLEROW_X86
+ #define HAS_SOBELROW_SSE2
+ #define HAS_SOBELTOPLANEROW_SSE2
+@@ -206,7 +210,9 @@ extern "C" {
+ #define HAS_I422TORGB565ROW_AVX2
+ #define HAS_I422TORGBAROW_AVX2
+ #define HAS_I444TOARGBROW_AVX2
++#if !(defined(__i386__) && defined(__GNUC__))
+ #define HAS_INTERPOLATEROW_AVX2
++#endif
+ #define HAS_J422TOARGBROW_AVX2
+ #define HAS_MERGEUVROW_AVX2
+ #define HAS_MIRRORROW_AVX2
+@@ -231,7 +237,9 @@ extern "C" {
+ #define HAS_ARGBMULTIPLYROW_AVX2
+ #define HAS_ARGBSUBTRACTROW_AVX2
+ #define HAS_ARGBUNATTENUATEROW_AVX2
++#if !(defined(__i386__) && defined(__GNUC__))
+ #define HAS_BLENDPLANEROW_AVX2
++#endif
+
+ #if defined(__x86_64__) || !defined(__pic__) || defined(__clang__) || \
+ defined(_MSC_VER)
diff --git a/devel/electron7/files/patch-third__party_nasm_config_config-linux.h b/devel/electron7/files/patch-third__party_nasm_config_config-linux.h
new file mode 100644
index 000000000000..b9e5a73aaeac
--- /dev/null
+++ b/devel/electron7/files/patch-third__party_nasm_config_config-linux.h
@@ -0,0 +1,29 @@
+--- third_party/nasm/config/config-linux.h.orig 2019-12-12 12:44:42 UTC
++++ third_party/nasm/config/config-linux.h
+@@ -117,7 +117,7 @@
+ #define HAVE_ACCESS 1
+
+ /* Define to 1 if you have the `canonicalize_file_name' function. */
+-#define HAVE_CANONICALIZE_FILE_NAME 1
++/* #undef HAVE_CANONICALIZE_FILE_NAME */
+
+ /* Define to 1 if you have the `cpu_to_le16' intrinsic function. */
+ /* #undef HAVE_CPU_TO_LE16 */
+@@ -161,7 +161,7 @@
+ #define HAVE_DECL_STRSEP 1
+
+ /* Define to 1 if you have the <endian.h> header file. */
+-#define HAVE_ENDIAN_H 1
++/* #undef HAVE_ENDIAN_H */
+
+ /* Define to 1 if you have the `faccessat' function. */
+ #define HAVE_FACCESSAT 1
+@@ -322,7 +322,7 @@
+ #define HAVE_SYSCONF 1
+
+ /* Define to 1 if you have the <sys/endian.h> header file. */
+-/* #undef HAVE_SYS_ENDIAN_H */
++#define HAVE_SYS_ENDIAN_H 1
+
+ /* Define to 1 if you have the <sys/mman.h> header file. */
+ #define HAVE_SYS_MMAN_H 1
diff --git a/devel/electron7/files/patch-third__party_node_node.py b/devel/electron7/files/patch-third__party_node_node.py
new file mode 100644
index 000000000000..b7fb2d36184f
--- /dev/null
+++ b/devel/electron7/files/patch-third__party_node_node.py
@@ -0,0 +1,10 @@
+--- third_party/node/node.py.orig 2019-12-12 12:41:28 UTC
++++ third_party/node/node.py
+@@ -12,6 +12,7 @@ import sys
+ def GetBinaryPath():
+ return os_path.join(os_path.dirname(__file__), *{
+ 'Darwin': ('mac', 'node-darwin-x64', 'bin', 'node'),
++ 'FreeBSD': ('freebsd', 'node-freebsd-x64', 'bin', 'node'),
+ 'Linux': ('linux', 'node-linux-x64', 'bin', 'node'),
+ 'Windows': ('win', 'node.exe'),
+ }[platform.system()])
diff --git a/devel/electron7/files/patch-third__party_pdfium_core_fxcrt_cfx__datetime.cpp b/devel/electron7/files/patch-third__party_pdfium_core_fxcrt_cfx__datetime.cpp
new file mode 100644
index 000000000000..f3357fca38f9
--- /dev/null
+++ b/devel/electron7/files/patch-third__party_pdfium_core_fxcrt_cfx__datetime.cpp
@@ -0,0 +1,11 @@
+--- third_party/pdfium/core/fxcrt/cfx_datetime.cpp.orig 2019-12-12 12:45:42 UTC
++++ third_party/pdfium/core/fxcrt/cfx_datetime.cpp
+@@ -9,7 +9,7 @@
+ #include "build/build_config.h"
+ #include "core/fxcrt/fx_system.h"
+
+-#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_MACOSX) || \
++#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) || \
+ defined(OS_ASMJS) || defined(__wasm__)
+ #include <sys/time.h>
+ #include <time.h>
diff --git a/devel/electron7/files/patch-third__party_pdfium_core_fxcrt_fx__system.h b/devel/electron7/files/patch-third__party_pdfium_core_fxcrt_fx__system.h
new file mode 100644
index 000000000000..dc30a0a00982
--- /dev/null
+++ b/devel/electron7/files/patch-third__party_pdfium_core_fxcrt_fx__system.h
@@ -0,0 +1,11 @@
+--- third_party/pdfium/core/fxcrt/fx_system.h.orig 2019-12-12 12:45:42 UTC
++++ third_party/pdfium/core/fxcrt/fx_system.h
+@@ -26,7 +26,7 @@
+ #define _FX_PLATFORM_ _FX_PLATFORM_WINDOWS_
+ #elif defined(_WIN64)
+ #define _FX_PLATFORM_ _FX_PLATFORM_WINDOWS_
+-#elif defined(__linux__)
++#elif defined(__linux__) || defined(__FreeBSD__)
+ #define _FX_PLATFORM_ _FX_PLATFORM_LINUX_
+ #elif defined(__APPLE__)
+ #define _FX_PLATFORM_ _FX_PLATFORM_APPLE_
diff --git a/devel/electron7/files/patch-third__party_pdfium_core_fxge_fx__ge__linux.cpp b/devel/electron7/files/patch-third__party_pdfium_core_fxge_fx__ge__linux.cpp
new file mode 100644
index 000000000000..7bb94cc7e9ea
--- /dev/null
+++ b/devel/electron7/files/patch-third__party_pdfium_core_fxge_fx__ge__linux.cpp
@@ -0,0 +1,14 @@
+--- third_party/pdfium/core/fxge/fx_ge_linux.cpp.orig 2019-12-12 12:45:42 UTC
++++ third_party/pdfium/core/fxge/fx_ge_linux.cpp
+@@ -151,9 +151,8 @@ std::unique_ptr<SystemFontInfoIface> SystemFontInfoIfa
+ const char** pUserPaths) {
+ auto pInfo = pdfium::MakeUnique<CFX_LinuxFontInfo>();
+ if (!pInfo->ParseFontCfg(pUserPaths)) {
+- pInfo->AddPath("/usr/share/fonts");
+- pInfo->AddPath("/usr/share/X11/fonts/Type1");
+- pInfo->AddPath("/usr/share/X11/fonts/TTF");
++ pInfo->AddPath("/usr/local/share/fonts/Type1");
++ pInfo->AddPath("/usr/local/share/fonts/TTF");
+ pInfo->AddPath("/usr/local/share/fonts");
+ }
+ return std::move(pInfo);
diff --git a/devel/electron7/files/patch-third__party_pdfium_fxjs_cjs__publicmethods.cpp b/devel/electron7/files/patch-third__party_pdfium_fxjs_cjs__publicmethods.cpp
new file mode 100644
index 000000000000..75912d3d058b
--- /dev/null
+++ b/devel/electron7/files/patch-third__party_pdfium_fxjs_cjs__publicmethods.cpp
@@ -0,0 +1,106 @@
+--- third_party/pdfium/fxjs/cjs_publicmethods.cpp.orig 2019-12-12 12:45:42 UTC
++++ third_party/pdfium/fxjs/cjs_publicmethods.cpp
+@@ -86,6 +86,103 @@ constexpr const wchar_t* kDateFormats[] = {L"m/d",
+ constexpr const wchar_t* kTimeFormats[] = {L"HH:MM", L"h:MM tt", L"HH:MM:ss",
+ L"h:MM:ss tt"};
+
++#if defined(__FreeBSD__)
++/*
++ * cvt.c - IEEE floating point formatting routines for FreeBSD
++ * from GNU libc-4.6.27
++ */
++
++/*
++ * ap_ecvt converts to decimal
++ * the number of digits is specified by ndigit
++ * decpt is set to the position of the decimal point
++ * sign is set to 0 for positive, 1 for negative
++ */
++
++#define NDIG 80
++
++static char *
++ ap_cvt(double arg, int ndigits, int *decpt, int *sign, int eflag)
++{
++ register int r2;
++ double fi, fj;
++ register char *p, *p1;
++ static char buf[NDIG];
++
++ if (ndigits >= NDIG - 1)
++ ndigits = NDIG - 2;
++ r2 = 0;
++ *sign = 0;
++ p = &buf[0];
++ if (arg < 0) {
++ *sign = 1;
++ arg = -arg;
++ }
++ arg = modf(arg, &fi);
++ p1 = &buf[NDIG];
++ /*
++ * Do integer part
++ */
++ if (fi != 0) {
++ p1 = &buf[NDIG];
++ while (fi != 0) {
++ fj = modf(fi / 10, &fi);
++ *--p1 = (int) ((fj + .03) * 10) + '0';
++ r2++;
++ }
++ while (p1 < &buf[NDIG])
++ *p++ = *p1++;
++ }
++ else if (arg > 0) {
++ while ((fj = arg * 10) < 1) {
++ arg = fj;
++ r2--;
++ }
++ }
++ p1 = &buf[ndigits];
++ if (eflag == 0)
++ p1 += r2;
++ *decpt = r2;
++ if (p1 < &buf[0]) {
++ buf[0] = '\0';
++ return (buf);
++ }
++ while (p <= p1 && p < &buf[NDIG]) {
++ arg *= 10;
++ arg = modf(arg, &fj);
++ *p++ = (int) fj + '0';
++ }
++ if (p1 >= &buf[NDIG]) {
++ buf[NDIG - 1] = '\0';
++ return (buf);
++ }
++ p = p1;
++ *p1 += 5;
++ while (*p1 > '9') {
++ *p1 = '0';
++ if (p1 > buf)
++ ++ * --p1;
++ else {
++ *p1 = '1';
++ (*decpt)++;
++ if (eflag == 0) {
++ if (p > buf)
++ *p = '0';
++ p++;
++ }
++ }
++ }
++ *p = '\0';
++ return (buf);
++}
++
++static char *
++ fcvt(double arg, int ndigits, int *decpt, int *sign)
++{
++ return (ap_cvt(arg, ndigits, decpt, sign, 0));
++}
++#endif // defined(__FreeBSD__)
++
+ template <typename T>
+ T StrTrim(const T& str) {
+ T result = str;
diff --git a/devel/electron7/files/patch-third__party_pdfium_fxjs_fx__date__helpers.cpp b/devel/electron7/files/patch-third__party_pdfium_fxjs_fx__date__helpers.cpp
new file mode 100644
index 000000000000..54ae18d64e91
--- /dev/null
+++ b/devel/electron7/files/patch-third__party_pdfium_fxjs_fx__date__helpers.cpp
@@ -0,0 +1,22 @@
+--- third_party/pdfium/fxjs/fx_date_helpers.cpp.orig 2019-12-12 12:45:42 UTC
++++ third_party/pdfium/fxjs/fx_date_helpers.cpp
+@@ -35,6 +35,11 @@ double GetLocalTZA() {
+ return 0;
+ time_t t = 0;
+ FXSYS_time(&t);
++#ifdef __FreeBSD__
++ struct tm lt;
++ localtime_r(&t, &lt);
++ return (double)(-(lt.tm_gmtoff * 1000));
++#else
+ FXSYS_localtime(&t);
+ #if defined(OS_WIN)
+ // In gcc 'timezone' is a global variable declared in time.h. In VC++, that
+@@ -43,6 +48,7 @@ double GetLocalTZA() {
+ _get_timezone(&timezone);
+ #endif
+ return (double)(-(timezone * 1000));
++#endif // __FreeBSD__
+ }
+
+ int GetDaylightSavingTA(double d) {
diff --git a/devel/electron7/files/patch-third__party_pdfium_third__party_base_allocator_partition__allocator_page__allocator.cc b/devel/electron7/files/patch-third__party_pdfium_third__party_base_allocator_partition__allocator_page__allocator.cc
new file mode 100644
index 000000000000..9e491eab217f
--- /dev/null
+++ b/devel/electron7/files/patch-third__party_pdfium_third__party_base_allocator_partition__allocator_page__allocator.cc
@@ -0,0 +1,11 @@
+--- third_party/pdfium/third_party/base/allocator/partition_allocator/page_allocator.cc.orig 2019-12-12 12:45:42 UTC
++++ third_party/pdfium/third_party/base/allocator/partition_allocator/page_allocator.cc
+@@ -117,7 +117,7 @@ void* AllocPages(void* address,
+ uintptr_t align_base_mask = ~align_offset_mask;
+ DCHECK(!(reinterpret_cast<uintptr_t>(address) & align_offset_mask));
+
+-#if defined(OS_LINUX) && defined(ARCH_CPU_64_BITS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && defined(ARCH_CPU_64_BITS)
+ // On 64 bit Linux, we may need to adjust the address space limit for
+ // guarded allocations.
+ if (length >= kMinimumGuardedMemorySize) {
diff --git a/devel/electron7/files/patch-third__party_pdfium_third__party_base_allocator_partition__allocator_page__allocator__internals__posix.h b/devel/electron7/files/patch-third__party_pdfium_third__party_base_allocator_partition__allocator_page__allocator__internals__posix.h
new file mode 100644
index 000000000000..d371ff909c84
--- /dev/null
+++ b/devel/electron7/files/patch-third__party_pdfium_third__party_base_allocator_partition__allocator_page__allocator__internals__posix.h
@@ -0,0 +1,38 @@
+--- third_party/pdfium/third_party/base/allocator/partition_allocator/page_allocator_internals_posix.h.orig 2019-12-12 12:45:42 UTC
++++ third_party/pdfium/third_party/base/allocator/partition_allocator/page_allocator_internals_posix.h
+@@ -13,7 +13,7 @@
+ #if defined(OS_MACOSX)
+ #include <mach/mach.h>
+ #endif
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include <sys/resource.h>
+
+ #include <algorithm>
+@@ -48,7 +48,7 @@ int GetAccessFlags(PageAccessibilityConfiguration acce
+ }
+ }
+
+-#if defined(OS_LINUX) && defined(ARCH_CPU_64_BITS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && defined(ARCH_CPU_64_BITS)
+
+ // Multiple guarded memory regions may exceed the process address space limit.
+ // This function will raise or lower the limit by |amount|.
+@@ -68,7 +68,7 @@ bool AdjustAddressSpaceLimit(int64_t amount) {
+ // schemes that reduce that to 4 GiB.
+ constexpr size_t kMinimumGuardedMemorySize = 1ULL << 32; // 4 GiB
+
+-#endif // defined(OS_LINUX) && defined(ARCH_CPU_64_BITS)
++#endif // (defined(OS_LINUX) || defined(OS_BSD)) && defined(ARCH_CPU_64_BITS)
+
+ void* SystemAllocPagesInternal(void* hint,
+ size_t length,
+@@ -134,7 +134,7 @@ void SetSystemPagesAccessInternal(
+ void FreePagesInternal(void* address, size_t length) {
+ CHECK(!munmap(address, length));
+
+-#if defined(OS_LINUX) && defined(ARCH_CPU_64_BITS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && defined(ARCH_CPU_64_BITS)
+ // Restore the address space limit.
+ if (length >= kMinimumGuardedMemorySize) {
+ CHECK(AdjustAddressSpaceLimit(-base::checked_cast<int64_t>(length)));
diff --git a/devel/electron7/files/patch-third__party_pdfium_xfa_fgas_font_cfx__fontsourceenum__file.cpp b/devel/electron7/files/patch-third__party_pdfium_xfa_fgas_font_cfx__fontsourceenum__file.cpp
new file mode 100644
index 000000000000..5004fde0f523
--- /dev/null
+++ b/devel/electron7/files/patch-third__party_pdfium_xfa_fgas_font_cfx__fontsourceenum__file.cpp
@@ -0,0 +1,14 @@
+--- third_party/pdfium/xfa/fgas/font/cfx_fontsourceenum_file.cpp.orig 2019-12-12 12:45:42 UTC
++++ third_party/pdfium/xfa/fgas/font/cfx_fontsourceenum_file.cpp
+@@ -16,9 +16,8 @@ constexpr char kFolderSeparator = '/';
+
+ constexpr const char* kFontFolders[] = {
+ #if _FX_PLATFORM_ == _FX_PLATFORM_LINUX_
+- "/usr/share/fonts",
+- "/usr/share/X11/fonts/Type1",
+- "/usr/share/X11/fonts/TTF",
++ "/usr/local/share/fonts/Type1",
++ "/usr/local/share/fonts/TTF",
+ "/usr/local/share/fonts",
+ #elif defined(OS_MACOSX)
+ "~/Library/Fonts",
diff --git a/devel/electron7/files/patch-third__party_perfetto_include_perfetto_base_build__config.h b/devel/electron7/files/patch-third__party_perfetto_include_perfetto_base_build__config.h
new file mode 100644
index 000000000000..15a9eaa6557c
--- /dev/null
+++ b/devel/electron7/files/patch-third__party_perfetto_include_perfetto_base_build__config.h
@@ -0,0 +1,51 @@
+--- third_party/perfetto/include/perfetto/base/build_config.h.orig 2019-12-12 12:45:20 UTC
++++ third_party/perfetto/include/perfetto/base/build_config.h
+@@ -40,6 +40,7 @@
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_ANDROID() 1
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_MACOSX() 0
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_LINUX() 0
++#define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_FREEBSD() 0
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_WIN() 0
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_WASM() 0
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_FUCHSIA() 0
+@@ -47,13 +48,15 @@
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_ANDROID() 0
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_MACOSX() 1
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_LINUX() 0
++#define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_FREEBSD() 0
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_WIN() 0
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_WASM() 0
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_FUCHSIA() 0
+-#elif defined(__linux__)
++#elif defined(__linux__) || defined(__FreeBSD__)
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_ANDROID() 0
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_MACOSX() 0
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_LINUX() 1
++#define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_FREEBSD() 1
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_WIN() 0
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_WASM() 0
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_FUCHSIA() 0
+@@ -61,6 +64,7 @@
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_ANDROID() 0
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_MACOSX() 0
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_LINUX() 0
++#define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_FREEBSD() 0
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_WIN() 1
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_WASM() 0
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_FUCHSIA() 0
+@@ -68,6 +72,7 @@
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_ANDROID() 0
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_MACOSX() 0
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_LINUX() 0
++#define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_FREEBSD() 0
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_WIN() 0
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_WASM() 1
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_FUCHSIA() 0
+@@ -75,6 +80,7 @@
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_ANDROID() 0
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_MACOSX() 0
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_LINUX() 0
++#define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_FREEBSD() 0
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_WIN() 0
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_WASM() 0
+ #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_FUCHSIA() 1
diff --git a/devel/electron7/files/patch-third__party_perfetto_include_perfetto_base_time.h b/devel/electron7/files/patch-third__party_perfetto_include_perfetto_base_time.h
new file mode 100644
index 000000000000..af36634fb8b4
--- /dev/null
+++ b/devel/electron7/files/patch-third__party_perfetto_include_perfetto_base_time.h
@@ -0,0 +1,20 @@
+--- third_party/perfetto/include/perfetto/base/time.h.orig 2019-12-12 12:45:20 UTC
++++ third_party/perfetto/include/perfetto/base/time.h
+@@ -123,6 +123,9 @@ inline TimeNanos GetTimeInternalNs(clockid_t clk_id) {
+ // Return ns from boot. Conversely to GetWallTimeNs, this clock counts also time
+ // during suspend (when supported).
+ inline TimeNanos GetBootTimeNs() {
++#if PERFETTO_BUILDFLAG(PERFETTO_OS_FREEBSD)
++ return GetTimeInternalNs(kWallTimeClockSource);
++#else
+ // Determine if CLOCK_BOOTTIME is available on the first call.
+ static const clockid_t kBootTimeClockSource = [] {
+ struct timespec ts = {};
+@@ -130,6 +133,7 @@ inline TimeNanos GetBootTimeNs() {
+ return res == 0 ? CLOCK_BOOTTIME : kWallTimeClockSource;
+ }();
+ return GetTimeInternalNs(kBootTimeClockSource);
++#endif
+ }
+
+ inline TimeNanos GetWallTimeNs() {
diff --git a/devel/electron7/files/patch-third__party_perfetto_include_perfetto_ext_base_event__fd.h b/devel/electron7/files/patch-third__party_perfetto_include_perfetto_ext_base_event__fd.h
new file mode 100644
index 000000000000..a906912e1840
--- /dev/null
+++ b/devel/electron7/files/patch-third__party_perfetto_include_perfetto_ext_base_event__fd.h
@@ -0,0 +1,13 @@
+--- third_party/perfetto/include/perfetto/ext/base/event_fd.h.orig 2019-12-12 12:45:20 UTC
++++ third_party/perfetto/include/perfetto/ext/base/event_fd.h
+@@ -20,8 +20,8 @@
+ #include "perfetto/base/build_config.h"
+ #include "perfetto/ext/base/scoped_file.h"
+
+-#if PERFETTO_BUILDFLAG(PERFETTO_OS_LINUX) || \
+- PERFETTO_BUILDFLAG(PERFETTO_OS_ANDROID)
++#if !PERFETTO_BUILDFLAG(PERFETTO_OS_FREEBSD) && (PERFETTO_BUILDFLAG(PERFETTO_OS_LINUX) || \
++ PERFETTO_BUILDFLAG(PERFETTO_OS_ANDROID))
+ #define PERFETTO_USE_EVENTFD() 1
+ #else
+ #define PERFETTO_USE_EVENTFD() 0
diff --git a/devel/electron7/files/patch-third__party_perfetto_include_perfetto_ext_base_thread__utils.h b/devel/electron7/files/patch-third__party_perfetto_include_perfetto_ext_base_thread__utils.h
new file mode 100644
index 000000000000..dc0275e84a42
--- /dev/null
+++ b/devel/electron7/files/patch-third__party_perfetto_include_perfetto_ext_base_thread__utils.h
@@ -0,0 +1,24 @@
+--- third_party/perfetto/include/perfetto/ext/base/thread_utils.h.orig 2019-12-12 12:45:20 UTC
++++ third_party/perfetto/include/perfetto/ext/base/thread_utils.h
+@@ -33,6 +33,9 @@
+ #include <sys/types.h>
+ #include <unistd.h>
+ #endif
++#if PERFETTO_BUILDFLAG(PERFETTO_OS_FREEBSD)
++#include <pthread_np.h>
++#endif
+
+ namespace perfetto {
+ namespace base {
+@@ -41,6 +44,11 @@ namespace base {
+ using PlatformThreadID = pid_t;
+ inline PlatformThreadID GetThreadId() {
+ return gettid();
++}
++#elif PERFETTO_BUILDFLAG(PERFETTO_OS_FREEBSD)
++using PlatformThreadID = int;
++inline PlatformThreadID GetThreadId() {
++ return pthread_getthreadid_np();
+ }
+ #elif PERFETTO_BUILDFLAG(PERFETTO_OS_LINUX)
+ using PlatformThreadID = pid_t;
diff --git a/devel/electron7/files/patch-third__party_perfetto_src_base_unix__socket.cc b/devel/electron7/files/patch-third__party_perfetto_src_base_unix__socket.cc
new file mode 100644
index 000000000000..e26169ba9912
--- /dev/null
+++ b/devel/electron7/files/patch-third__party_perfetto_src_base_unix__socket.cc
@@ -0,0 +1,12 @@
+--- third_party/perfetto/src/base/unix_socket.cc.orig 2019-12-12 12:45:21 UTC
++++ third_party/perfetto/src/base/unix_socket.cc
+@@ -523,7 +523,8 @@ void UnixSocket::DoConnect(const std::string& socket_n
+
+ void UnixSocket::ReadPeerCredentials() {
+ #if PERFETTO_BUILDFLAG(PERFETTO_OS_LINUX) || \
+- PERFETTO_BUILDFLAG(PERFETTO_OS_ANDROID)
++ PERFETTO_BUILDFLAG(PERFETTO_OS_ANDROID) || \
++ PERFETTO_BUILDFLAG(PERFETTO_OS_FREEBSD)
+ struct ucred user_cred;
+ socklen_t len = sizeof(user_cred);
+ int fd = sock_raw_.fd();
diff --git a/devel/electron7/files/patch-third__party_perfetto_src_tracing_core_tracing__service__impl.cc b/devel/electron7/files/patch-third__party_perfetto_src_tracing_core_tracing__service__impl.cc
new file mode 100644
index 000000000000..c3348c188572
--- /dev/null
+++ b/devel/electron7/files/patch-third__party_perfetto_src_tracing_core_tracing__service__impl.cc
@@ -0,0 +1,12 @@
+--- third_party/perfetto/src/tracing/core/tracing_service_impl.cc.orig 2019-12-12 12:45:21 UTC
++++ third_party/perfetto/src/tracing/core/tracing_service_impl.cc
+@@ -2180,7 +2180,8 @@ void TracingServiceImpl::SnapshotClocks(std::vector<Tr
+ protos::ClockSnapshot* clock_snapshot = packet.mutable_clock_snapshot();
+
+ #if !PERFETTO_BUILDFLAG(PERFETTO_OS_MACOSX) && \
+- !PERFETTO_BUILDFLAG(PERFETTO_OS_WIN)
++ !PERFETTO_BUILDFLAG(PERFETTO_OS_WIN) && \
++ !PERFETTO_BUILDFLAG(PERFETTO_OS_FREEBSD)
+ struct {
+ clockid_t id;
+ protos::ClockSnapshot::Clock::BuiltinClocks type;
diff --git a/devel/electron7/files/patch-third__party_perfetto_src_tracing_core_virtual__destructors.cc b/devel/electron7/files/patch-third__party_perfetto_src_tracing_core_virtual__destructors.cc
new file mode 100644
index 000000000000..1285cc6324b9
--- /dev/null
+++ b/devel/electron7/files/patch-third__party_perfetto_src_tracing_core_virtual__destructors.cc
@@ -0,0 +1,28 @@
+Backport of:
+
+From 46f0abc66c1d78c60a0415c5cb46852ef3bfa9bb Mon Sep 17 00:00:00 2001
+From: Nico Weber <thakis@chromium.org>
+Date: Sat, 8 Feb 2020 21:26:53 -0500
+Subject: [PATCH] Fix compile error emitted by trunk clang
+
+../../third_party/perfetto/src/tracing/core/virtual_destructors.cc:33:35:
+error: destructor cannot be declared using a type alias
+ 'perfetto::TracingService::ConsumerEndpoint' (aka
+ 'perfetto::ConsumerEndpoint') of the class name
+TracingService::ConsumerEndpoint::~ConsumerEndpoint() = default;
+
+Bug: chromium:1050372
+
+--- third_party/perfetto/src/tracing/core/virtual_destructors.cc.orig 2020-08-24 19:11:33 UTC
++++ third_party/perfetto/src/tracing/core/virtual_destructors.cc
+@@ -30,8 +30,8 @@ namespace perfetto {
+ Consumer::~Consumer() = default;
+ Producer::~Producer() = default;
+ TracingService::~TracingService() = default;
+-TracingService::ConsumerEndpoint::~ConsumerEndpoint() = default;
+-TracingService::ProducerEndpoint::~ProducerEndpoint() = default;
++ConsumerEndpoint::~ConsumerEndpoint() = default;
++ProducerEndpoint::~ProducerEndpoint() = default;
+ SharedMemory::~SharedMemory() = default;
+ SharedMemory::Factory::~Factory() = default;
+ SharedMemoryArbiter::~SharedMemoryArbiter() = default;
diff --git a/devel/electron7/files/patch-third__party_protobuf_src_google_protobuf_stubs_platform__macros.h b/devel/electron7/files/patch-third__party_protobuf_src_google_protobuf_stubs_platform__macros.h
new file mode 100644
index 000000000000..713a26758b77
--- /dev/null
+++ b/devel/electron7/files/patch-third__party_protobuf_src_google_protobuf_stubs_platform__macros.h
@@ -0,0 +1,11 @@
+--- third_party/protobuf/src/google/protobuf/stubs/platform_macros.h.orig 2019-12-12 12:41:29 UTC
++++ third_party/protobuf/src/google/protobuf/stubs/platform_macros.h
+@@ -118,7 +118,7 @@ GOOGLE_PROTOBUF_PLATFORM_ERROR
+
+ #undef GOOGLE_PROTOBUF_PLATFORM_ERROR
+
+-#if defined(GOOGLE_PROTOBUF_OS_ANDROID) || defined(GOOGLE_PROTOBUF_OS_IPHONE) || defined(__OpenBSD__)
++#if defined(GOOGLE_PROTOBUF_OS_ANDROID) || defined(GOOGLE_PROTOBUF_OS_IPHONE) || defined(__FreeBSD__)
+ // Android ndk does not support the __thread keyword very well yet. Here
+ // we use pthread_key_create()/pthread_getspecific()/... methods for
+ // TLS support on android.
diff --git a/devel/electron7/files/patch-third__party_sfntly_src_cpp_src_sfntly_table_core_cmap__table.cc b/devel/electron7/files/patch-third__party_sfntly_src_cpp_src_sfntly_table_core_cmap__table.cc
new file mode 100644
index 000000000000..76a4c02e74bf
--- /dev/null
+++ b/devel/electron7/files/patch-third__party_sfntly_src_cpp_src_sfntly_table_core_cmap__table.cc
@@ -0,0 +1,47 @@
+--- third_party/sfntly/src/cpp/src/sfntly/table/core/cmap_table.cc.orig 2019-12-12 12:45:26 UTC
++++ third_party/sfntly/src/cpp/src/sfntly/table/core/cmap_table.cc
+@@ -439,7 +439,7 @@ CMapTable::CMapFormat0::Builder::Builder(
+ }
+
+ CMapTable::CMapFormat0::Builder::Builder(const CMapId& cmap_id)
+- : CMap::Builder(reinterpret_cast<ReadableFontData*>(NULL),
++ : CMap::Builder(static_cast<ReadableFontData*>(NULL),
+ CMapFormat::kFormat0,
+ cmap_id) {
+ }
+@@ -563,7 +563,7 @@ CMapTable::CMapFormat2::Builder::Builder(WritableFontD
+ : CMapTable::CMap::Builder(data ? down_cast<WritableFontData*>(
+ data->Slice(offset, data->ReadUShort(
+ offset + Offset::kFormat0Length)))
+- : reinterpret_cast<WritableFontData*>(NULL),
++ : static_cast<WritableFontData*>(NULL),
+ CMapFormat::kFormat2, cmap_id) {
+ // TODO(arthurhsu): FIXIT: heavy lifting and leak, need fix.
+ }
+@@ -574,7 +574,7 @@ CMapTable::CMapFormat2::Builder::Builder(ReadableFontD
+ : CMapTable::CMap::Builder(data ? down_cast<ReadableFontData*>(
+ data->Slice(offset, data->ReadUShort(
+ offset + Offset::kFormat0Length)))
+- : reinterpret_cast<ReadableFontData*>(NULL),
++ : static_cast<ReadableFontData*>(NULL),
+ CMapFormat::kFormat2, cmap_id) {
+ // TODO(arthurhsu): FIXIT: heavy lifting and leak, need fix.
+ }
+@@ -958,7 +958,7 @@ CMapTable::CMapFormat4::Builder::Builder(WritableFontD
+ CMapTable::CMapFormat4::Builder::Builder(SegmentList* segments,
+ std::vector<int32_t>* glyph_id_array,
+ const CMapId& cmap_id)
+- : CMap::Builder(reinterpret_cast<ReadableFontData*>(NULL),
++ : CMap::Builder(static_cast<ReadableFontData*>(NULL),
+ CMapFormat::kFormat4, cmap_id),
+ segments_(segments->begin(), segments->end()),
+ glyph_id_array_(glyph_id_array->begin(), glyph_id_array->end()) {
+@@ -966,7 +966,7 @@ CMapTable::CMapFormat4::Builder::Builder(SegmentList*
+ }
+
+ CMapTable::CMapFormat4::Builder::Builder(const CMapId& cmap_id)
+- : CMap::Builder(reinterpret_cast<ReadableFontData*>(NULL),
++ : CMap::Builder(static_cast<ReadableFontData*>(NULL),
+ CMapFormat::kFormat4, cmap_id) {
+ }
+
diff --git a/devel/electron7/files/patch-third__party_skia_src_core_SkCpu.cpp b/devel/electron7/files/patch-third__party_skia_src_core_SkCpu.cpp
new file mode 100644
index 000000000000..7deff4b09aea
--- /dev/null
+++ b/devel/electron7/files/patch-third__party_skia_src_core_SkCpu.cpp
@@ -0,0 +1,19 @@
+--- third_party/skia/src/core/SkCpu.cpp.orig 2019-12-12 12:48:52 UTC
++++ third_party/skia/src/core/SkCpu.cpp
+@@ -76,6 +76,8 @@
+ #include <sys/auxv.h>
+
+ static uint32_t read_cpu_features() {
++return 0;
++#if 0
+ const uint32_t kHWCAP_CRC32 = (1<< 7),
+ kHWCAP_ASIMDHP = (1<<10);
+
+@@ -112,6 +114,7 @@
+ }
+ }
+ return features;
++#endif
+ }
+
+ #elif defined(SK_CPU_ARM32) && __has_include(<sys/auxv.h>) && \
diff --git a/devel/electron7/files/patch-third__party_skia_src_gpu_GrAutoLocaleSetter.h b/devel/electron7/files/patch-third__party_skia_src_gpu_GrAutoLocaleSetter.h
new file mode 100644
index 000000000000..835970f35f75
--- /dev/null
+++ b/devel/electron7/files/patch-third__party_skia_src_gpu_GrAutoLocaleSetter.h
@@ -0,0 +1,11 @@
+--- third_party/skia/src/gpu/GrAutoLocaleSetter.h.orig 2019-12-12 12:48:52 UTC
++++ third_party/skia/src/gpu/GrAutoLocaleSetter.h
+@@ -27,7 +27,7 @@
+ #define HAVE_XLOCALE 0
+ #endif
+
+-#if defined(SK_BUILD_FOR_ANDROID) || defined(__UCLIBC__) || defined(_NEWLIB_VERSION)
++#if defined(SK_BUILD_FOR_ANDROID) || defined(__UCLIBC__) || defined(_NEWLIB_VERSION) || defined(__FreeBSD__)
+ #define HAVE_LOCALE_T 0
+ #else
+ #define HAVE_LOCALE_T 1
diff --git a/devel/electron7/files/patch-third__party_skia_src_images_SkJpegEncoder.cpp b/devel/electron7/files/patch-third__party_skia_src_images_SkJpegEncoder.cpp
new file mode 100644
index 000000000000..44f222c2152a
--- /dev/null
+++ b/devel/electron7/files/patch-third__party_skia_src_images_SkJpegEncoder.cpp
@@ -0,0 +1,41 @@
+--- third_party/skia/src/images/SkJpegEncoder.cpp.orig 2019-12-12 12:48:52 UTC
++++ third_party/skia/src/images/SkJpegEncoder.cpp
+@@ -76,9 +76,14 @@ bool SkJpegEncoderMgr::setParams(const SkImageInfo& sr
+ return (transform_scanline_proc) nullptr;
+ };
+
++#ifdef JCS_EXTENSIONS
+ J_COLOR_SPACE jpegColorType = JCS_EXT_RGBA;
++#else
++ J_COLOR_SPACE jpegColorType = JCS_RGB;
++#endif
+ int numComponents = 0;
+ switch (srcInfo.colorType()) {
++#ifdef JCS_EXTENSIONS
+ case kRGBA_8888_SkColorType:
+ fProc = chooseProc8888();
+ jpegColorType = JCS_EXT_RGBA;
+@@ -89,6 +94,7 @@ bool SkJpegEncoderMgr::setParams(const SkImageInfo& sr
+ jpegColorType = JCS_EXT_BGRA;
+ numComponents = 4;
+ break;
++#endif
+ case kRGB_565_SkColorType:
+ fProc = transform_scanline_565;
+ jpegColorType = JCS_RGB;
+@@ -108,6 +114,7 @@ bool SkJpegEncoderMgr::setParams(const SkImageInfo& sr
+ jpegColorType = JCS_GRAYSCALE;
+ numComponents = 1;
+ break;
++#ifdef JCS_EXTENSIONS
+ case kRGBA_F16_SkColorType:
+ if (kUnpremul_SkAlphaType == srcInfo.alphaType() &&
+ options.fAlphaOption == SkJpegEncoder::AlphaOption::kBlendOnBlack) {
+@@ -118,6 +125,7 @@ bool SkJpegEncoderMgr::setParams(const SkImageInfo& sr
+ jpegColorType = JCS_EXT_RGBA;
+ numComponents = 4;
+ break;
++#endif
+ default:
+ return false;
+ }
diff --git a/devel/electron7/files/patch-third__party_skia_src_ports_SkOSFile__stdio.cpp b/devel/electron7/files/patch-third__party_skia_src_ports_SkOSFile__stdio.cpp
new file mode 100644
index 000000000000..12794c4f46f9
--- /dev/null
+++ b/devel/electron7/files/patch-third__party_skia_src_ports_SkOSFile__stdio.cpp
@@ -0,0 +1,11 @@
+--- third_party/skia/src/ports/SkOSFile_stdio.cpp.orig 2019-12-12 12:48:52 UTC
++++ third_party/skia/src/ports/SkOSFile_stdio.cpp
+@@ -129,7 +129,7 @@ void sk_fflush(FILE* f) {
+
+ void sk_fsync(FILE* f) {
+ #if !defined(_WIN32) && !defined(SK_BUILD_FOR_ANDROID) && !defined(__UCLIBC__) \
+- && !defined(_NEWLIB_VERSION)
++ && !defined(_NEWLIB_VERSION) && !defined(__FreeBSD__)
+ int fd = fileno(f);
+ fsync(fd);
+ #endif
diff --git a/devel/electron7/files/patch-third__party_skia_src_sksl_SkSLString.h b/devel/electron7/files/patch-third__party_skia_src_sksl_SkSLString.h
new file mode 100644
index 000000000000..5e4ceaa8026d
--- /dev/null
+++ b/devel/electron7/files/patch-third__party_skia_src_sksl_SkSLString.h
@@ -0,0 +1,11 @@
+--- third_party/skia/src/sksl/SkSLString.h.orig 2019-12-12 12:48:52 UTC
++++ third_party/skia/src/sksl/SkSLString.h
+@@ -13,6 +13,8 @@
+ #include <stdarg.h>
+ #include <string>
+
++#include <stdarg.h>
++
+ namespace SkSL {
+
+ // Represents a (not necessarily null-terminated) slice of a string.
diff --git a/devel/electron7/files/patch-third__party_skia_third__party_vulkanmemoryallocator_include_vk__mem__alloc.h b/devel/electron7/files/patch-third__party_skia_third__party_vulkanmemoryallocator_include_vk__mem__alloc.h
new file mode 100644
index 000000000000..c9dfc1b13d77
--- /dev/null
+++ b/devel/electron7/files/patch-third__party_skia_third__party_vulkanmemoryallocator_include_vk__mem__alloc.h
@@ -0,0 +1,11 @@
+--- third_party/skia/third_party/vulkanmemoryallocator/include/vk_mem_alloc.h.orig 2019-12-16 13:32:58 UTC
++++ third_party/skia/third_party/vulkanmemoryallocator/include/vk_mem_alloc.h
+@@ -2232,7 +2232,7 @@ remove them if not needed.
+ #include <mutex> // for std::mutex
+ #include <atomic> // for std::atomic
+
+-#if !defined(_WIN32) && !defined(__APPLE__)
++#if !defined(_WIN32) && !defined(__APPLE__) && !defined(__FreeBSD__)
+ #include <malloc.h> // for aligned_alloc()
+ #endif
+
diff --git a/devel/electron7/files/patch-third__party_snappy_src_snappy.h b/devel/electron7/files/patch-third__party_snappy_src_snappy.h
new file mode 100644
index 000000000000..d3617b9b3f0a
--- /dev/null
+++ b/devel/electron7/files/patch-third__party_snappy_src_snappy.h
@@ -0,0 +1,20 @@
+--- third_party/snappy/src/snappy.h.orig 2019-12-12 12:45:20 UTC
++++ third_party/snappy/src/snappy.h
+@@ -73,7 +73,7 @@ namespace snappy {
+ // Original contents of *output are lost.
+ //
+ // REQUIRES: "input[]" is not an alias of "*output".
+- size_t Compress(const char* input, size_t input_length, string* output);
++ size_t Compress(const char* input, size_t input_length, std::string* output);
+
+ // Decompresses "compressed[0,compressed_length-1]" to "*uncompressed".
+ // Original contents of "*uncompressed" are lost.
+@@ -82,7 +82,7 @@ namespace snappy {
+ //
+ // returns false if the message is corrupted and could not be decompressed
+ bool Uncompress(const char* compressed, size_t compressed_length,
+- string* uncompressed);
++ std::string* uncompressed);
+
+ // Decompresses "compressed" to "*uncompressed".
+ //
diff --git a/devel/electron7/files/patch-third__party_sqlite_BUILD.gn b/devel/electron7/files/patch-third__party_sqlite_BUILD.gn
new file mode 100644
index 000000000000..7dbef3ccd4e7
--- /dev/null
+++ b/devel/electron7/files/patch-third__party_sqlite_BUILD.gn
@@ -0,0 +1,11 @@
+--- third_party/sqlite/BUILD.gn.orig 2019-12-12 12:41:29 UTC
++++ third_party/sqlite/BUILD.gn
+@@ -262,7 +262,7 @@ config("sqlite_warnings") {
+ ]
+ }
+ }
+- if (is_linux) {
++ if (is_linux && !is_bsd) {
+ cflags += [
+ # SQLite doesn't believe in compiler warnings, preferring testing.
+ # http://www.sqlite.org/faq.html#q17
diff --git a/devel/electron7/files/patch-third__party_swiftshader_BUILD.gn b/devel/electron7/files/patch-third__party_swiftshader_BUILD.gn
new file mode 100644
index 000000000000..60af70848dfe
--- /dev/null
+++ b/devel/electron7/files/patch-third__party_swiftshader_BUILD.gn
@@ -0,0 +1,24 @@
+--- third_party/swiftshader/BUILD.gn.orig 2019-12-12 12:49:31 UTC
++++ third_party/swiftshader/BUILD.gn
+@@ -135,9 +135,6 @@ config("swiftshader_config") {
+ ldflags = [ "-Wl,--gc-sections" ]
+
+ if (target_cpu == "mipsel") {
+- ldflags += [
+- "-Wl,--hash-style=sysv",
+- ]
+ if (mips_arch_variant == "r1") {
+ ldflags += [
+ "-mips32",
+@@ -149,11 +146,8 @@ config("swiftshader_config") {
+ }
+ } else if (target_cpu == "mips64el") {
+ ldflags += [
+- "-Wl,--hash-style=sysv",
+ "-mips64r2",
+ ]
+- } else {
+- ldflags += [ "-Wl,--hash-style=both" ]
+ }
+
+ # A bug in the gold linker prevents using ICF on 32-bit (crbug.com/729532)
diff --git a/devel/electron7/files/patch-third__party_swiftshader_src_Common_Configurator.cpp b/devel/electron7/files/patch-third__party_swiftshader_src_Common_Configurator.cpp
new file mode 100644
index 000000000000..b1d5c20f2cf3
--- /dev/null
+++ b/devel/electron7/files/patch-third__party_swiftshader_src_Common_Configurator.cpp
@@ -0,0 +1,12 @@
+--- third_party/swiftshader/src/Common/Configurator.cpp.orig 2019-12-12 12:49:31 UTC
++++ third_party/swiftshader/src/Common/Configurator.cpp
+@@ -42,6 +42,9 @@ namespace sw
+
+ bool Configurator::readFile()
+ {
++#if defined(__FreeBSD__)
++ return false;
++#endif
+ #if defined(__unix__)
+ if(access(path.c_str(), R_OK) != 0)
+ {
diff --git a/devel/electron7/files/patch-third__party_swiftshader_src_Common_MutexLock.hpp b/devel/electron7/files/patch-third__party_swiftshader_src_Common_MutexLock.hpp
new file mode 100644
index 000000000000..ed4ad6e1d51b
--- /dev/null
+++ b/devel/electron7/files/patch-third__party_swiftshader_src_Common_MutexLock.hpp
@@ -0,0 +1,11 @@
+--- third_party/swiftshader/src/Common/MutexLock.hpp.orig 2019-12-12 12:49:31 UTC
++++ third_party/swiftshader/src/Common/MutexLock.hpp
+@@ -17,7 +17,7 @@
+
+ #include "Thread.hpp"
+
+-#if defined(__linux__)
++#if defined(__linux__) || defined(__FreeBSD__)
+ // Use a pthread mutex on Linux. Since many processes may use SwiftShader
+ // at the same time it's best to just have the scheduler overhead.
+ #include <pthread.h>
diff --git a/devel/electron7/files/patch-third__party_swiftshader_src_Common_SharedLibrary.hpp b/devel/electron7/files/patch-third__party_swiftshader_src_Common_SharedLibrary.hpp
new file mode 100644
index 000000000000..48df18d82191
--- /dev/null
+++ b/devel/electron7/files/patch-third__party_swiftshader_src_Common_SharedLibrary.hpp
@@ -0,0 +1,11 @@
+--- third_party/swiftshader/src/Common/SharedLibrary.hpp.orig 2019-12-12 12:49:31 UTC
++++ third_party/swiftshader/src/Common/SharedLibrary.hpp
+@@ -97,7 +97,7 @@ void *loadLibrary(const std::string &libraryDirectory,
+
+ inline void *getLibraryHandle(const char *path)
+ {
+- #ifdef __ANDROID__
++ #if defined( __ANDROID__) || defined(__FreeBSD__)
+ // bionic doesn't support RTLD_NOLOAD before L
+ return dlopen(path, RTLD_NOW | RTLD_LOCAL);
+ #else
diff --git a/devel/electron7/files/patch-third__party_swiftshader_src_Main_SwiftConfig.cpp b/devel/electron7/files/patch-third__party_swiftshader_src_Main_SwiftConfig.cpp
new file mode 100644
index 000000000000..13de23727460
--- /dev/null
+++ b/devel/electron7/files/patch-third__party_swiftshader_src_Main_SwiftConfig.cpp
@@ -0,0 +1,14 @@
+--- third_party/swiftshader/src/Main/SwiftConfig.cpp.orig 2019-12-12 12:49:31 UTC
++++ third_party/swiftshader/src/Main/SwiftConfig.cpp
+@@ -764,7 +764,11 @@ namespace sw
+ struct stat status;
+ int lastModified = ini.getInteger("LastModified", "Time", 0);
+
++#if !defined(__FreeBSD__)
+ bool noConfig = stat("SwiftShader.ini", &status) != 0;
++#else
++ bool noConfig = false;
++#endif
+ newConfig = !noConfig && abs((int)status.st_mtime - lastModified) > 1;
+
+ if(disableServerOverride)
diff --git a/devel/electron7/files/patch-third__party_swiftshader_src_OpenGL_libEGL_Display.cpp b/devel/electron7/files/patch-third__party_swiftshader_src_OpenGL_libEGL_Display.cpp
new file mode 100644
index 000000000000..7e6d401f3967
--- /dev/null
+++ b/devel/electron7/files/patch-third__party_swiftshader_src_OpenGL_libEGL_Display.cpp
@@ -0,0 +1,20 @@
+--- third_party/swiftshader/src/OpenGL/libEGL/Display.cpp.orig 2019-12-12 12:49:31 UTC
++++ third_party/swiftshader/src/OpenGL/libEGL/Display.cpp
+@@ -690,7 +690,7 @@ bool Display::isValidWindow(EGLNativeWindowType window
+ return status != 0;
+ }
+ return false;
+- #elif defined(__linux__)
++ #elif defined(__linux__) || defined(__FreeBSD__)
+ return false; // Non X11 linux is headless only
+ #elif defined(__APPLE__)
+ return sw::OSX::IsValidWindow(window);
+@@ -868,7 +868,7 @@ sw::Format Display::getDisplayFormat() const
+ {
+ return sw::FORMAT_X8R8G8B8;
+ }
+- #elif defined(__linux__) // Non X11 linux is headless only
++ #elif defined(__linux__) || defined(__FreeBSD__) // Non X11 linux is headless only
+ return sw::FORMAT_A8B8G8R8;
+ #elif defined(__APPLE__)
+ return sw::FORMAT_A8B8G8R8;
diff --git a/devel/electron7/files/patch-third__party_swiftshader_src_OpenGL_libEGL_Surface.cpp b/devel/electron7/files/patch-third__party_swiftshader_src_OpenGL_libEGL_Surface.cpp
new file mode 100644
index 000000000000..9925224ebfea
--- /dev/null
+++ b/devel/electron7/files/patch-third__party_swiftshader_src_OpenGL_libEGL_Surface.cpp
@@ -0,0 +1,11 @@
+--- third_party/swiftshader/src/OpenGL/libEGL/Surface.cpp.orig 2019-12-12 12:49:31 UTC
++++ third_party/swiftshader/src/OpenGL/libEGL/Surface.cpp
+@@ -362,7 +362,7 @@ bool WindowSurface::checkForResize()
+
+ int windowWidth = windowAttributes.width;
+ int windowHeight = windowAttributes.height;
+- #elif defined(__linux__)
++ #elif defined(__linux__) || defined(__FreeBSD__)
+ // Non X11 linux is headless only
+ int windowWidth = 100;
+ int windowHeight = 100;
diff --git a/devel/electron7/files/patch-third__party_swiftshader_src_OpenGL_libEGL_libEGL.cpp b/devel/electron7/files/patch-third__party_swiftshader_src_OpenGL_libEGL_libEGL.cpp
new file mode 100644
index 000000000000..38b9267803ef
--- /dev/null
+++ b/devel/electron7/files/patch-third__party_swiftshader_src_OpenGL_libEGL_libEGL.cpp
@@ -0,0 +1,29 @@
+--- third_party/swiftshader/src/OpenGL/libEGL/libEGL.cpp.orig 2019-12-12 12:49:31 UTC
++++ third_party/swiftshader/src/OpenGL/libEGL/libEGL.cpp
+@@ -148,7 +148,7 @@ EGLDisplay GetDisplay(EGLNativeDisplayType display_id)
+ // FIXME: Check if display_id is the default display
+ }
+
+- #if defined(__linux__) && !defined(__ANDROID__)
++ #if (defined(__linux__) || defined(__FreeBSD)) && !defined(__ANDROID__)
+ #if defined(USE_X11)
+ if(!libX11)
+ #endif // Non X11 linux is headless only
+@@ -207,7 +207,7 @@ const char *QueryString(EGLDisplay dpy, EGLint name)
+ {
+ return success(
+ "EGL_KHR_client_get_all_proc_addresses "
+-#if defined(__linux__) && !defined(__ANDROID__)
++#if (defined(__linux__) || defined(__FreeBSD__)) && !defined(__ANDROID__)
+ "EGL_KHR_platform_gbm "
+ #endif
+ #if defined(USE_X11)
+@@ -1243,7 +1243,7 @@ EGLDisplay GetPlatformDisplay(EGLenum platform, void *
+ {
+ TRACE("(EGLenum platform = 0x%X, void *native_display = %p, const EGLAttrib *attrib_list = %p)", platform, native_display, attrib_list);
+
+- #if defined(__linux__) && !defined(__ANDROID__)
++ #if (defined(__linux__) || defined(__FreeBSD__)) && !defined(__ANDROID__)
+ switch(platform)
+ {
+ #if defined(USE_X11)
diff --git a/devel/electron7/files/patch-third__party_swiftshader_src_OpenGL_libEGL_libEGL.hpp b/devel/electron7/files/patch-third__party_swiftshader_src_OpenGL_libEGL_libEGL.hpp
new file mode 100644
index 000000000000..36cac2d25c6e
--- /dev/null
+++ b/devel/electron7/files/patch-third__party_swiftshader_src_OpenGL_libEGL_libEGL.hpp
@@ -0,0 +1,11 @@
+--- third_party/swiftshader/src/OpenGL/libEGL/libEGL.hpp.orig 2019-12-12 12:49:31 UTC
++++ third_party/swiftshader/src/OpenGL/libEGL/libEGL.hpp
+@@ -100,7 +100,7 @@ class LibEGL (private)
+ #endif
+ #elif defined(__ANDROID__)
+ const char *libEGL_lib[] = {"libEGL_swiftshader.so", "libEGL_swiftshader.so"};
+- #elif defined(__linux__)
++ #elif defined(__linux__) || defined(__FreeBSD__)
+ #if defined(__LP64__)
+ const char *libEGL_lib[] = {"lib64EGL_translator.so", "libEGL.so.1", "libEGL.so"};
+ #else
diff --git a/devel/electron7/files/patch-third__party_swiftshader_src_OpenGL_libGLES__CM_libGLES__CM.hpp b/devel/electron7/files/patch-third__party_swiftshader_src_OpenGL_libGLES__CM_libGLES__CM.hpp
new file mode 100644
index 000000000000..27d4c8b722b5
--- /dev/null
+++ b/devel/electron7/files/patch-third__party_swiftshader_src_OpenGL_libGLES__CM_libGLES__CM.hpp
@@ -0,0 +1,11 @@
+--- third_party/swiftshader/src/OpenGL/libGLES_CM/libGLES_CM.hpp.orig 2019-12-12 12:49:31 UTC
++++ third_party/swiftshader/src/OpenGL/libGLES_CM/libGLES_CM.hpp
+@@ -261,7 +261,7 @@ class LibGLES_CM (private)
+ #endif
+ #elif defined(__ANDROID__)
+ const char *libGLES_CM_lib[] = {"libGLESv1_CM_swiftshader.so", "libGLESv1_CM_swiftshader.so"};
+- #elif defined(__linux__)
++ #elif defined(__linux__) || defined(__FreeBSD__)
+ #if defined(__LP64__)
+ const char *libGLES_CM_lib[] = {"lib64GLES_CM_translator.so", "libGLES_CM.so.1", "libGLES_CM.so"};
+ #else
diff --git a/devel/electron7/files/patch-third__party_swiftshader_src_OpenGL_libGLESv2_libGLESv2.hpp b/devel/electron7/files/patch-third__party_swiftshader_src_OpenGL_libGLESv2_libGLESv2.hpp
new file mode 100644
index 000000000000..bba11ce1d173
--- /dev/null
+++ b/devel/electron7/files/patch-third__party_swiftshader_src_OpenGL_libGLESv2_libGLESv2.hpp
@@ -0,0 +1,11 @@
+--- third_party/swiftshader/src/OpenGL/libGLESv2/libGLESv2.hpp.orig 2019-12-12 12:49:31 UTC
++++ third_party/swiftshader/src/OpenGL/libGLESv2/libGLESv2.hpp
+@@ -286,7 +286,7 @@ class LibGLESv2 (private)
+ #endif
+ #elif defined(__ANDROID__)
+ const char *libGLESv2_lib[] = {"libGLESv2_swiftshader.so", "libGLESv2_swiftshader.so"};
+- #elif defined(__linux__)
++ #elif defined(__linux__) || defined(__FreeBSD__)
+ #if defined(__LP64__)
+ const char *libGLESv2_lib[] = {"lib64GLES_V2_translator.so", "libGLESv2.so.2", "libGLESv2.so"};
+ #else
diff --git a/devel/electron7/files/patch-third__party_swiftshader_src_Yarn_Thread.cpp b/devel/electron7/files/patch-third__party_swiftshader_src_Yarn_Thread.cpp
new file mode 100644
index 000000000000..7d3a7c11ea59
--- /dev/null
+++ b/devel/electron7/files/patch-third__party_swiftshader_src_Yarn_Thread.cpp
@@ -0,0 +1,22 @@
+--- third_party/swiftshader/src/Yarn/Thread.cpp.orig 2019-12-12 12:49:31 UTC
++++ third_party/swiftshader/src/Yarn/Thread.cpp
+@@ -27,6 +27,10 @@
+ # include <pthread.h>
+ # include <mach/thread_act.h>
+ # include <unistd.h>
++#elif defined(__FreeBSD__)
++# include <pthread.h>
++# include <pthread_np.h>
++# include <unistd.h>
+ #else
+ # include <pthread.h>
+ # include <unistd.h>
+@@ -88,6 +92,8 @@ void Thread::setName(const char* fmt, ...)
+
+ #if defined(__APPLE__)
+ pthread_setname_np(name);
++#elif defined(__FreeBSD__)
++ pthread_set_name_np(pthread_self(), name);
+ #elif !defined(__Fuchsia__)
+ pthread_setname_np(pthread_self(), name);
+ #endif
diff --git a/devel/electron7/files/patch-third__party_swiftshader_third__party_llvm-7.0_configs_linux_include_llvm_Config_config.h b/devel/electron7/files/patch-third__party_swiftshader_third__party_llvm-7.0_configs_linux_include_llvm_Config_config.h
new file mode 100644
index 000000000000..c5454f4862aa
--- /dev/null
+++ b/devel/electron7/files/patch-third__party_swiftshader_third__party_llvm-7.0_configs_linux_include_llvm_Config_config.h
@@ -0,0 +1,152 @@
+--- third_party/swiftshader/third_party/llvm-7.0/configs/linux/include/llvm/Config/config.h.orig 2019-12-12 12:49:33 UTC
++++ third_party/swiftshader/third_party/llvm-7.0/configs/linux/include/llvm/Config/config.h
+@@ -8,15 +8,15 @@
+ #define BUG_REPORT_URL "https://bugs.llvm.org/"
+
+ /* Define to 1 to enable backtraces, and to 0 otherwise. */
+-/* #undef ENABLE_BACKTRACES */
++#define ENABLE_BACKTRACES 1
+
+ /* Define to 1 to enable crash overrides, and to 0 otherwise. */
+-/* #undef ENABLE_CRASH_OVERRIDES */
++#define ENABLE_CRASH_OVERRIDES 1
+
+ /* Define to 1 if you have the `backtrace' function. */
+-/* #undef HAVE_BACKTRACE */
++#define HAVE_BACKTRACE TRUE
+
+-/* #undef BACKTRACE_HEADER */
++#define BACKTRACE_HEADER <execinfo.h>
+
+ /* Define to 1 if you have the <CrashReporterClient.h> header file. */
+ /* #undef HAVE_CRASHREPORTERCLIENT_H */
+@@ -26,7 +26,7 @@
+
+ /* Define to 1 if you have the declaration of `arc4random', and to 0 if you
+ don't. */
+-#define HAVE_DECL_ARC4RANDOM 0
++#define HAVE_DECL_ARC4RANDOM 1
+
+ /* Define to 1 if you have the declaration of `FE_ALL_EXCEPT', and to 0 if you
+ don't. */
+@@ -50,7 +50,7 @@
+ #define HAVE_DLOPEN 1
+
+ /* Define if dladdr() is available on this platform. */
+-/* #undef HAVE_DLADDR */
++#define HAVE_DLADDR 1
+
+ /* Define to 1 if you have the <errno.h> header file. */
+ #define HAVE_ERRNO_H 1
+@@ -89,7 +89,7 @@
+ #define HAVE_ISATTY 1
+
+ /* Define to 1 if you have the `edit' library (-ledit). */
+-/* #undef HAVE_LIBEDIT */
++#define HAVE_LIBEDIT 1
+
+ /* Define to 1 if you have the `pfm' library (-lpfm). */
+ /* #undef HAVE_LIBPFM */
+@@ -107,25 +107,25 @@
+ /* #undef HAVE_PTHREAD_SETNAME_NP */
+
+ /* Define to 1 if you have the `z' library (-lz). */
+-/* #undef HAVE_LIBZ */
++#define HAVE_LIBZ 1
+
+ /* Define to 1 if you have the <link.h> header file. */
+ #define HAVE_LINK_H 1
+
+ /* Define to 1 if you have the `lseek64' function. */
+-#define HAVE_LSEEK64 1
++/* #undef HAVE_LSEEK64 */
+
+ /* Define to 1 if you have the <mach/mach.h> header file. */
+ /* #undef HAVE_MACH_MACH_H */
+
+ /* Define to 1 if you have the `mallctl' function. */
+-/* #undef HAVE_MALLCTL */
++#define HAVE_MALLCTL 1
+
+ /* Define to 1 if you have the `mallinfo' function. */
+-#define HAVE_MALLINFO 1
++/* #undef HAVE_MALLINFO */
+
+ /* Define to 1 if you have the <malloc.h> header file. */
+-#define HAVE_MALLOC_H 1
++/* #undef HAVE_MALLOC_H */
+
+ /* Define to 1 if you have the <malloc/malloc.h> header file. */
+ /* #undef HAVE_MALLOC_MALLOC_H */
+@@ -137,7 +137,7 @@
+ #define HAVE_POSIX_FALLOCATE 1
+
+ /* Define to 1 if you have the `posix_spawn' function. */
+-/* #undef HAVE_POSIX_SPAWN */
++#define HAVE_POSIX_SPAWN 1
+
+ /* Define to 1 if you have the `pread' function. */
+ #define HAVE_PREAD 1
+@@ -158,16 +158,16 @@
+ #define HAVE_REALPATH 1
+
+ /* Define to 1 if you have the `sbrk' function. */
+-#define HAVE_SBRK 1
++/* #undef HAVE_SBRK */
+
+ /* Define to 1 if you have the `setenv' function. */
+ #define HAVE_SETENV 1
+
+ /* Define to 1 if you have the `sched_getaffinity' function. */
+-#define HAVE_SCHED_GETAFFINITY 1
++/* #undef HAVE_SCHED_GETAFFINITY */
+
+ /* Define to 1 if you have the `CPU_COUNT' macro. */
+-#define HAVE_CPU_COUNT 1
++/* #undef HAVE_CPU_COUNT */
+
+ /* Define to 1 if you have the `setrlimit' function. */
+ #define HAVE_SETRLIMIT 1
+@@ -209,13 +209,13 @@
+ #define HAVE_SYS_TYPES_H 1
+
+ /* Define if the setupterm() function is supported this platform. */
+-/* #undef HAVE_TERMINFO */
++#define HAVE_TERMINFO 1
+
+ /* Define if the xar_open() function is supported this platform. */
+ /* #undef HAVE_LIBXAR */
+
+ /* Define to 1 if you have the <termios.h> header file. */
+-/* #undef HAVE_TERMIOS_H */
++#define HAVE_TERMIOS_H 1
+
+ /* Define to 1 if you have the <unistd.h> header file. */
+ #define HAVE_UNISTD_H 1
+@@ -224,7 +224,7 @@
+ /* #undef HAVE_VALGRIND_VALGRIND_H */
+
+ /* Define to 1 if you have the <zlib.h> header file. */
+-/* #undef HAVE_ZLIB_H */
++#define HAVE_ZLIB_H 1
+
+ /* Have host's _alloca */
+ /* #undef HAVE__ALLOCA */
+@@ -298,7 +298,7 @@
+ #elif defined(__arm__)
+ #define LLVM_DEFAULT_TARGET_TRIPLE "armv7-linux-gnueabihf"
+ #elif defined(__aarch64__)
+-#define LLVM_DEFAULT_TARGET_TRIPLE "aarch64-linux-gnu"
++#define LLVM_DEFAULT_TARGET_TRIPLE "aarch64-portbld-freebsd"
+ #elif defined(__mips__)
+ #define LLVM_DEFAULT_TARGET_TRIPLE "mipsel-linux-gnu"
+ #elif defined(__mips64)
+@@ -310,7 +310,7 @@
+ #endif
+
+ /* Define if zlib compression is available */
+-#define LLVM_ENABLE_ZLIB 0
++#define LLVM_ENABLE_ZLIB 1
+
+ /* Define if overriding target triple is enabled */
+ /* #undef LLVM_TARGET_TRIPLE_ENV */
diff --git a/devel/electron7/files/patch-third__party_swiftshader_third__party_llvm-7.0_configs_linux_include_llvm_Config_llvm-config.h b/devel/electron7/files/patch-third__party_swiftshader_third__party_llvm-7.0_configs_linux_include_llvm_Config_llvm-config.h
new file mode 100644
index 000000000000..7d2e6f4ad95c
--- /dev/null
+++ b/devel/electron7/files/patch-third__party_swiftshader_third__party_llvm-7.0_configs_linux_include_llvm_Config_llvm-config.h
@@ -0,0 +1,20 @@
+--- third_party/swiftshader/third_party/llvm-7.0/configs/linux/include/llvm/Config/llvm-config.h.orig 2019-12-12 12:49:33 UTC
++++ third_party/swiftshader/third_party/llvm-7.0/configs/linux/include/llvm/Config/llvm-config.h
+@@ -38,7 +38,7 @@
+ #elif defined(__arm__)
+ #define LLVM_DEFAULT_TARGET_TRIPLE "armv7-linux-gnueabihf"
+ #elif defined(__aarch64__)
+-#define LLVM_DEFAULT_TARGET_TRIPLE "aarch64-linux-gnu"
++#define LLVM_DEFAULT_TARGET_TRIPLE "aarch64-portbld-freebsd"
+ #elif defined(__mips__)
+ #define LLVM_DEFAULT_TARGET_TRIPLE "mipsel-linux-gnu"
+ #elif defined(__mips64)
+@@ -63,7 +63,7 @@
+ #elif defined(__arm__)
+ #define LLVM_HOST_TRIPLE "armv7-linux-gnueabihf"
+ #elif defined(__aarch64__)
+-#define LLVM_HOST_TRIPLE "aarch64-linux-gnu"
++#define LLVM_HOST_TRIPLE "aarch64-portbld-freebsd"
+ #elif defined(__mips__)
+ #define LLVM_HOST_TRIPLE "mipsel-linux-gnu"
+ #elif defined(__mips64)
diff --git a/devel/electron7/files/patch-third__party_swiftshader_third__party_llvm-subzero_build_Linux_include_llvm_Config_config.h b/devel/electron7/files/patch-third__party_swiftshader_third__party_llvm-subzero_build_Linux_include_llvm_Config_config.h
new file mode 100644
index 000000000000..408032f9cc86
--- /dev/null
+++ b/devel/electron7/files/patch-third__party_swiftshader_third__party_llvm-subzero_build_Linux_include_llvm_Config_config.h
@@ -0,0 +1,29 @@
+--- third_party/swiftshader/third_party/llvm-subzero/build/Linux/include/llvm/Config/config.h.orig 2019-12-12 12:49:40 UTC
++++ third_party/swiftshader/third_party/llvm-subzero/build/Linux/include/llvm/Config/config.h
+@@ -121,7 +121,7 @@
+ #define HAVE_LINK_H 1
+
+ /* Define to 1 if you have the `lseek64' function. */
+-#define HAVE_LSEEK64 1
++/* #undef HAVE_LSEEK64 */
+
+ /* Define to 1 if you have the <mach/mach.h> header file. */
+ /* #undef HAVE_MACH_MACH_H */
+@@ -130,7 +130,7 @@
+ /* #undef HAVE_MALLCTL */
+
+ /* Define to 1 if you have the `mallinfo' function. */
+-#define HAVE_MALLINFO 1
++/* #undef HAVE_MALLINFO */
+
+ /* Define to 1 if you have the <malloc.h> header file. */
+ #define HAVE_MALLOC_H 1
+@@ -154,7 +154,7 @@
+ /* #undef HAVE_NDIR_H */
+
+ /* Define to 1 if you have the `posix_fallocate' function. */
+-#define HAVE_POSIX_FALLOCATE 1
++/* #undef HAVE_POSIX_FALLOCATE */
+
+ /* Define to 1 if you have the `posix_spawn' function. */
+ #define HAVE_POSIX_SPAWN 1
diff --git a/devel/electron7/files/patch-third__party_swiftshader_third__party_llvm-subzero_lib_Support_Unix_Process.inc b/devel/electron7/files/patch-third__party_swiftshader_third__party_llvm-subzero_lib_Support_Unix_Process.inc
new file mode 100644
index 000000000000..b56ee49a92e8
--- /dev/null
+++ b/devel/electron7/files/patch-third__party_swiftshader_third__party_llvm-subzero_lib_Support_Unix_Process.inc
@@ -0,0 +1,11 @@
+--- third_party/swiftshader/third_party/llvm-subzero/lib/Support/Unix/Process.inc.orig 2019-12-12 12:49:40 UTC
++++ third_party/swiftshader/third_party/llvm-subzero/lib/Support/Unix/Process.inc
+@@ -35,7 +35,7 @@
+ // DragonFlyBSD, OpenBSD, and Bitrig have deprecated <malloc.h> for
+ // <stdlib.h> instead. Unix.h includes this for us already.
+ #if defined(HAVE_MALLOC_H) && !defined(__DragonFly__) && \
+- !defined(__OpenBSD__) && !defined(__Bitrig__)
++ !defined(__FreeBSD__) && !defined(__OpenBSD__) && !defined(__Bitrig__)
+ #include <malloc.h>
+ #endif
+ #if defined(HAVE_MALLCTL)
diff --git a/devel/electron7/files/patch-third__party_usrsctp_BUILD.gn b/devel/electron7/files/patch-third__party_usrsctp_BUILD.gn
new file mode 100644
index 000000000000..cd3a9cc29411
--- /dev/null
+++ b/devel/electron7/files/patch-third__party_usrsctp_BUILD.gn
@@ -0,0 +1,20 @@
+--- third_party/usrsctp/BUILD.gn.orig 2019-12-12 12:41:30 UTC
++++ third_party/usrsctp/BUILD.gn
+@@ -116,11 +116,16 @@ static_library("usrsctp") {
+ "-UINET6",
+ ]
+
+- if (is_linux || is_android) {
++ if ((is_linux && !is_bsd) || is_android ) {
+ defines += [
+ "__Userspace_os_Linux",
+ "_GNU_SOURCE",
+ ]
++ } else if (is_bsd) {
++ defines += [
++ "__Userspace_os_FreeBSD",
++ ]
++ cflags += [ "-U__FreeBSD__" ]
+ } else if (is_mac || is_ios) {
+ defines += [
+ "HAVE_SA_LEN",
diff --git a/devel/electron7/files/patch-third__party_webrtc_BUILD.gn b/devel/electron7/files/patch-third__party_webrtc_BUILD.gn
new file mode 100644
index 000000000000..ddb639c49bd7
--- /dev/null
+++ b/devel/electron7/files/patch-third__party_webrtc_BUILD.gn
@@ -0,0 +1,12 @@
+--- third_party/webrtc/BUILD.gn.orig 2019-12-12 12:47:07 UTC
++++ third_party/webrtc/BUILD.gn
+@@ -160,6 +160,9 @@ config("common_inherited_config") {
+ if (is_linux) {
+ defines += [ "WEBRTC_LINUX" ]
+ }
++ if (is_bsd) {
++ defines += [ "WEBRTC_BSD" ]
++ }
+ if (is_mac) {
+ defines += [ "WEBRTC_MAC" ]
+ }
diff --git a/devel/electron7/files/patch-third__party_webrtc_modules_audio__device_BUILD.gn b/devel/electron7/files/patch-third__party_webrtc_modules_audio__device_BUILD.gn
new file mode 100644
index 000000000000..55738efa8191
--- /dev/null
+++ b/devel/electron7/files/patch-third__party_webrtc_modules_audio__device_BUILD.gn
@@ -0,0 +1,11 @@
+--- third_party/webrtc/modules/audio_device/BUILD.gn.orig 2019-12-12 12:47:07 UTC
++++ third_party/webrtc/modules/audio_device/BUILD.gn
+@@ -265,7 +265,7 @@ rtc_source_set("audio_device_impl") {
+ if (rtc_use_dummy_audio_file_devices) {
+ defines += [ "WEBRTC_DUMMY_FILE_DEVICES" ]
+ } else {
+- if (is_linux) {
++ if (is_linux && !is_bsd) {
+ sources += [
+ "linux/alsasymboltable_linux.cc",
+ "linux/alsasymboltable_linux.h",
diff --git a/devel/electron7/files/patch-third__party_webrtc_modules_rtp__rtcp_source_forward__error__correction.cc b/devel/electron7/files/patch-third__party_webrtc_modules_rtp__rtcp_source_forward__error__correction.cc
new file mode 100644
index 000000000000..792186d8771c
--- /dev/null
+++ b/devel/electron7/files/patch-third__party_webrtc_modules_rtp__rtcp_source_forward__error__correction.cc
@@ -0,0 +1,10 @@
+--- third_party/webrtc/modules/rtp_rtcp/source/forward_error_correction.cc.orig 2019-12-12 12:47:08 UTC
++++ third_party/webrtc/modules/rtp_rtcp/source/forward_error_correction.cc
+@@ -13,6 +13,7 @@
+ #include <string.h>
+
+ #include <algorithm>
++#include <cstdlib>
+ #include <utility>
+
+ #include "absl/algorithm/container.h"
diff --git a/devel/electron7/files/patch-third__party_webrtc_rtc__base_byte__order.h b/devel/electron7/files/patch-third__party_webrtc_rtc__base_byte__order.h
new file mode 100644
index 000000000000..76cb6dfb66b1
--- /dev/null
+++ b/devel/electron7/files/patch-third__party_webrtc_rtc__base_byte__order.h
@@ -0,0 +1,11 @@
+--- third_party/webrtc/rtc_base/byte_order.h.orig 2019-12-12 12:47:08 UTC
++++ third_party/webrtc/rtc_base/byte_order.h
+@@ -89,7 +89,7 @@
+ #endif // defined(WEBRTC_ARCH_LITTLE_ENDIAN)
+
+ #elif defined(WEBRTC_POSIX)
+-#include <endian.h>
++#include <sys/endian.h>
+ #else
+ #error "Missing byte order functions for this arch."
+ #endif // defined(WEBRTC_MAC)
diff --git a/devel/electron7/files/patch-third__party_webrtc_rtc__base_ifaddrs__converter.h b/devel/electron7/files/patch-third__party_webrtc_rtc__base_ifaddrs__converter.h
new file mode 100644
index 000000000000..f7b6695e6a08
--- /dev/null
+++ b/devel/electron7/files/patch-third__party_webrtc_rtc__base_ifaddrs__converter.h
@@ -0,0 +1,11 @@
+--- third_party/webrtc/rtc_base/ifaddrs_converter.h.orig 2019-12-12 12:47:08 UTC
++++ third_party/webrtc/rtc_base/ifaddrs_converter.h
+@@ -14,6 +14,8 @@
+ #if defined(WEBRTC_ANDROID)
+ #include "rtc_base/ifaddrs_android.h"
+ #else
++#include <sys/types.h>
++#include <sys/socket.h>
+ #include <ifaddrs.h>
+ #endif // WEBRTC_ANDROID
+
diff --git a/devel/electron7/files/patch-third__party_webrtc_rtc__base_ip__address.cc b/devel/electron7/files/patch-third__party_webrtc_rtc__base_ip__address.cc
new file mode 100644
index 000000000000..1025f5b120c5
--- /dev/null
+++ b/devel/electron7/files/patch-third__party_webrtc_rtc__base_ip__address.cc
@@ -0,0 +1,12 @@
+--- third_party/webrtc/rtc_base/ip_address.cc.orig 2019-12-12 12:47:08 UTC
++++ third_party/webrtc/rtc_base/ip_address.cc
+@@ -11,6 +11,9 @@
+ #if defined(WEBRTC_POSIX)
+ #include <netinet/in.h>
+ #include <sys/socket.h>
++#if defined(WEBRTC_BSD)
++#include <sys/types.h>
++#endif
+ #ifdef OPENBSD
+ #include <netinet/in_systm.h>
+ #endif
diff --git a/devel/electron7/files/patch-third__party_webrtc_rtc__base_ip__address.h b/devel/electron7/files/patch-third__party_webrtc_rtc__base_ip__address.h
new file mode 100644
index 000000000000..7fbecea60f0b
--- /dev/null
+++ b/devel/electron7/files/patch-third__party_webrtc_rtc__base_ip__address.h
@@ -0,0 +1,13 @@
+--- third_party/webrtc/rtc_base/ip_address.h.orig 2019-12-12 12:47:08 UTC
++++ third_party/webrtc/rtc_base/ip_address.h
+@@ -17,6 +17,10 @@
+ #include <netinet/in.h>
+ #include <sys/socket.h>
+ #endif
++#if defined(WEBRTC_BSD)
++#include <sys/types.h>
++#include <sys/socket.h>
++#endif
+ #if defined(WEBRTC_WIN)
+ #include <winsock2.h>
+ #include <ws2tcpip.h>
diff --git a/devel/electron7/files/patch-third__party_webrtc_rtc__base_network.cc b/devel/electron7/files/patch-third__party_webrtc_rtc__base_network.cc
new file mode 100644
index 000000000000..c8c558d63e5f
--- /dev/null
+++ b/devel/electron7/files/patch-third__party_webrtc_rtc__base_network.cc
@@ -0,0 +1,29 @@
+--- third_party/webrtc/rtc_base/network.cc.orig 2019-12-12 12:47:08 UTC
++++ third_party/webrtc/rtc_base/network.cc
+@@ -14,7 +14,7 @@
+ // linux/if.h can't be included at the same time as the posix sys/if.h, and
+ // it's transitively required by linux/route.h, so include that version on
+ // linux instead of the standard posix one.
+-#if defined(WEBRTC_LINUX)
++#if defined(WEBRTC_LINUX) && !defined(WEBRTC_BSD)
+ #include <linux/if.h>
+ #include <linux/route.h>
+ #elif !defined(__native_client__)
+@@ -765,7 +765,7 @@ bool BasicNetworkManager::CreateNetworks(bool include_
+ }
+ #endif // WEBRTC_WIN
+
+-#if defined(WEBRTC_LINUX)
++#if defined(WEBRTC_LINUX) && !defined(WEBRTC_BSD)
+ bool IsDefaultRoute(const std::string& network_name) {
+ FILE* f = fopen("/proc/net/route", "r");
+ if (!f) {
+@@ -808,7 +808,7 @@ bool BasicNetworkManager::IsIgnoredNetwork(const Netwo
+ strncmp(network.name().c_str(), "vboxnet", 7) == 0) {
+ return true;
+ }
+-#if defined(WEBRTC_LINUX)
++#if defined(WEBRTC_LINUX) && !defined(WEBRTC_BSD)
+ // Make sure this is a default route, if we're ignoring non-defaults.
+ if (ignore_non_default_routes_ && !IsDefaultRoute(network.name())) {
+ return true;
diff --git a/devel/electron7/files/patch-third__party_webrtc_rtc__base_network.h b/devel/electron7/files/patch-third__party_webrtc_rtc__base_network.h
new file mode 100644
index 000000000000..38bf6fd0d229
--- /dev/null
+++ b/devel/electron7/files/patch-third__party_webrtc_rtc__base_network.h
@@ -0,0 +1,13 @@
+--- third_party/webrtc/rtc_base/network.h.orig 2019-12-12 12:47:08 UTC
++++ third_party/webrtc/rtc_base/network.h
+@@ -25,6 +25,10 @@
+ #include "rtc_base/network_monitor.h"
+ #include "rtc_base/third_party/sigslot/sigslot.h"
+
++#if defined(WEBRTC_BSD)
++#include <sys/types.h>
++#endif
++
+ #if defined(WEBRTC_POSIX)
+ struct ifaddrs;
+ #endif // defined(WEBRTC_POSIX)
diff --git a/devel/electron7/files/patch-third__party_webrtc_rtc__base_physical__socket__server.cc b/devel/electron7/files/patch-third__party_webrtc_rtc__base_physical__socket__server.cc
new file mode 100644
index 000000000000..3fcc613f8cab
--- /dev/null
+++ b/devel/electron7/files/patch-third__party_webrtc_rtc__base_physical__socket__server.cc
@@ -0,0 +1,65 @@
+--- third_party/webrtc/rtc_base/physical_socket_server.cc.orig 2019-12-12 12:47:08 UTC
++++ third_party/webrtc/rtc_base/physical_socket_server.cc
+@@ -51,7 +51,7 @@
+ #include "rtc_base/null_socket_server.h"
+ #include "rtc_base/time_utils.h"
+
+-#if defined(WEBRTC_LINUX)
++#if defined(WEBRTC_LINUX) && !defined(WEBRTC_BSD)
+ #include <linux/sockios.h>
+ #endif
+
+@@ -70,7 +70,7 @@ typedef void* SockOptArg;
+
+ #endif // WEBRTC_POSIX
+
+-#if defined(WEBRTC_POSIX) && !defined(WEBRTC_MAC) && !defined(__native_client__)
++#if defined(WEBRTC_POSIX) && !defined(WEBRTC_MAC) && !defined(WEBRTC_BSD) && !defined(__native_client__)
+
+ int64_t GetSocketRecvTimestamp(int socket) {
+ struct timeval tv_ioctl;
+@@ -290,7 +290,7 @@ int PhysicalSocket::GetOption(Option opt, int* value)
+ socklen_t optlen = sizeof(*value);
+ int ret = ::getsockopt(s_, slevel, sopt, (SockOptArg)value, &optlen);
+ if (ret != -1 && opt == OPT_DONTFRAGMENT) {
+-#if defined(WEBRTC_LINUX) && !defined(WEBRTC_ANDROID)
++#if defined(WEBRTC_LINUX) && !defined(WEBRTC_ANDROID) && !defined(WEBRTC_BSD)
+ *value = (*value != IP_PMTUDISC_DONT) ? 1 : 0;
+ #endif
+ }
+@@ -303,7 +303,7 @@ int PhysicalSocket::SetOption(Option opt, int value) {
+ if (TranslateOption(opt, &slevel, &sopt) == -1)
+ return -1;
+ if (opt == OPT_DONTFRAGMENT) {
+-#if defined(WEBRTC_LINUX) && !defined(WEBRTC_ANDROID)
++#if defined(WEBRTC_LINUX) && !defined(WEBRTC_ANDROID) && !defined(WEBRTC_BSD)
+ value = (value) ? IP_PMTUDISC_DO : IP_PMTUDISC_DONT;
+ #endif
+ }
+@@ -313,7 +313,7 @@ int PhysicalSocket::SetOption(Option opt, int value) {
+ int PhysicalSocket::Send(const void* pv, size_t cb) {
+ int sent = DoSend(
+ s_, reinterpret_cast<const char*>(pv), static_cast<int>(cb),
+-#if defined(WEBRTC_LINUX) && !defined(WEBRTC_ANDROID)
++#if defined(WEBRTC_LINUX) && !defined(WEBRTC_ANDROID) && !defined(WEBRTC_BSD)
+ // Suppress SIGPIPE. Without this, attempting to send on a socket whose
+ // other end is closed will result in a SIGPIPE signal being raised to
+ // our process, which by default will terminate the process, which we
+@@ -342,7 +342,7 @@ int PhysicalSocket::SendTo(const void* buffer,
+ size_t len = addr.ToSockAddrStorage(&saddr);
+ int sent =
+ DoSendTo(s_, static_cast<const char*>(buffer), static_cast<int>(length),
+-#if defined(WEBRTC_LINUX) && !defined(WEBRTC_ANDROID)
++#if defined(WEBRTC_LINUX) && !defined(WEBRTC_ANDROID) && !defined(WEBRTC_BSD)
+ // Suppress SIGPIPE. See above for explanation.
+ MSG_NOSIGNAL,
+ #else
+@@ -533,7 +533,7 @@ int PhysicalSocket::TranslateOption(Option opt, int* s
+ *slevel = IPPROTO_IP;
+ *sopt = IP_DONTFRAGMENT;
+ break;
+-#elif defined(WEBRTC_MAC) || defined(BSD) || defined(__native_client__)
++#elif defined(WEBRTC_MAC) || defined(WEBRTC_BSD) || defined(__native_client__)
+ RTC_LOG(LS_WARNING) << "Socket::OPT_DONTFRAGMENT not supported.";
+ return -1;
+ #elif defined(WEBRTC_POSIX)
diff --git a/devel/electron7/files/patch-third__party_webrtc_rtc__base_physical__socket__server.h b/devel/electron7/files/patch-third__party_webrtc_rtc__base_physical__socket__server.h
new file mode 100644
index 000000000000..e9d7a4be41e2
--- /dev/null
+++ b/devel/electron7/files/patch-third__party_webrtc_rtc__base_physical__socket__server.h
@@ -0,0 +1,11 @@
+--- third_party/webrtc/rtc_base/physical_socket_server.h.orig 2019-12-12 12:47:08 UTC
++++ third_party/webrtc/rtc_base/physical_socket_server.h
+@@ -11,7 +11,7 @@
+ #ifndef RTC_BASE_PHYSICAL_SOCKET_SERVER_H_
+ #define RTC_BASE_PHYSICAL_SOCKET_SERVER_H_
+
+-#if defined(WEBRTC_POSIX) && defined(WEBRTC_LINUX)
++#if defined(WEBRTC_POSIX) && defined(WEBRTC_LINUX) && !defined(WEBRTC_BSD)
+ #include <sys/epoll.h>
+ #define WEBRTC_USE_EPOLL 1
+ #endif
diff --git a/devel/electron7/files/patch-third__party_webrtc_rtc__base_platform__thread__types.cc b/devel/electron7/files/patch-third__party_webrtc_rtc__base_platform__thread__types.cc
new file mode 100644
index 000000000000..7c74302467a0
--- /dev/null
+++ b/devel/electron7/files/patch-third__party_webrtc_rtc__base_platform__thread__types.cc
@@ -0,0 +1,39 @@
+--- third_party/webrtc/rtc_base/platform_thread_types.cc.orig 2019-12-12 12:47:08 UTC
++++ third_party/webrtc/rtc_base/platform_thread_types.cc
+@@ -11,7 +11,11 @@
+ #include "rtc_base/platform_thread_types.h"
+
+ #if defined(WEBRTC_LINUX)
++#if !defined(__FreeBSD__)
+ #include <sys/prctl.h>
++#else
++#include <pthread_np.h>
++#endif
+ #include <sys/syscall.h>
+ #endif
+
+@@ -27,6 +31,8 @@ PlatformThreadId CurrentThreadId() {
+ return gettid();
+ #elif defined(WEBRTC_FUCHSIA)
+ return zx_thread_self();
++#elif defined(__FreeBSD__)
++ return pthread_getthreadid_np();
+ #elif defined(WEBRTC_LINUX)
+ return syscall(__NR_gettid);
+ #elif defined(__EMSCRIPTEN__)
+@@ -57,6 +63,7 @@ bool IsThreadRefEqual(const PlatformThreadRef& a, cons
+ }
+
+ void SetCurrentThreadName(const char* name) {
++#if !defined(__FreeBSD__)
+ #if defined(WEBRTC_WIN)
+ struct {
+ DWORD dwType;
+@@ -74,6 +81,7 @@ void SetCurrentThreadName(const char* name) {
+ prctl(PR_SET_NAME, reinterpret_cast<unsigned long>(name)); // NOLINT
+ #elif defined(WEBRTC_MAC) || defined(WEBRTC_IOS)
+ pthread_setname_np(name);
++#endif
+ #endif
+ }
+
diff --git a/devel/electron7/files/patch-third__party_webrtc_system__wrappers_BUILD.gn b/devel/electron7/files/patch-third__party_webrtc_system__wrappers_BUILD.gn
new file mode 100644
index 000000000000..ffe43faa90db
--- /dev/null
+++ b/devel/electron7/files/patch-third__party_webrtc_system__wrappers_BUILD.gn
@@ -0,0 +1,11 @@
+--- third_party/webrtc/system_wrappers/BUILD.gn.orig 2019-12-12 12:47:08 UTC
++++ third_party/webrtc/system_wrappers/BUILD.gn
+@@ -58,8 +58,6 @@ rtc_static_library("system_wrappers") {
+ if (!build_with_chromium) {
+ deps += [ ":cpu_features_linux" ]
+ }
+-
+- libs += [ "rt" ]
+ }
+
+ if (is_win) {
diff --git a/devel/electron7/files/patch-third__party_zlib_arm__features.c b/devel/electron7/files/patch-third__party_zlib_arm__features.c
new file mode 100644
index 000000000000..8ad23b22059f
--- /dev/null
+++ b/devel/electron7/files/patch-third__party_zlib_arm__features.c
@@ -0,0 +1,46 @@
+--- third_party/zlib/arm_features.c.orig 2019-12-12 12:41:30 UTC
++++ third_party/zlib/arm_features.c
+@@ -16,6 +16,10 @@ int ZLIB_INTERNAL arm_cpu_enable_pmull = 0;
+ #include <pthread.h>
+ #endif
+
++#if defined(__FreeBSD__)
++#include <machine/armreg.h>
++#include <sys/types.h>
++#else
+ #if defined(ARMV8_OS_ANDROID)
+ #include <cpu-features.h>
+ #elif defined(ARMV8_OS_LINUX)
+@@ -30,6 +34,7 @@ int ZLIB_INTERNAL arm_cpu_enable_pmull = 0;
+ #else
+ #error arm_features.c ARM feature detection in not defined for your platform
+ #endif
++#endif
+
+ static void _arm_check_features(void);
+
+@@ -68,14 +73,24 @@ static void _arm_check_features(void)
+ arm_cpu_enable_crc32 = !!(features & ANDROID_CPU_ARM_FEATURE_CRC32);
+ arm_cpu_enable_pmull = !!(features & ANDROID_CPU_ARM_FEATURE_PMULL);
+ #elif defined(ARMV8_OS_LINUX) && defined(__aarch64__)
++#if defined(__FreeBSD__)
++ uint64_t id_aa64isar0 = READ_SPECIALREG(ID_AA64ISAR0_EL1);
++ if (ID_AA64ISAR0_AES(id_aa64isar0) == ID_AA64ISAR0_AES_PMULL)
++ arm_cpu_enable_pmull = 1;
++ if (ID_AA64ISAR0_CRC32(id_aa64isar0) == ID_AA64ISAR0_CRC32_BASE)
++ arm_cpu_enable_crc32 = 1;
++#else
+ unsigned long features = getauxval(AT_HWCAP);
+ arm_cpu_enable_crc32 = !!(features & HWCAP_CRC32);
+ arm_cpu_enable_pmull = !!(features & HWCAP_PMULL);
++#endif
+ #elif defined(ARMV8_OS_LINUX) && (defined(__ARM_NEON) || defined(__ARM_NEON__))
++#if !defined(__FreeBSD__)
+ /* Query HWCAP2 for ARMV8-A SoCs running in aarch32 mode */
+ unsigned long features = getauxval(AT_HWCAP2);
+ arm_cpu_enable_crc32 = !!(features & HWCAP2_CRC32);
+ arm_cpu_enable_pmull = !!(features & HWCAP2_PMULL);
++#endif
+ #elif defined(ARMV8_OS_FUCHSIA)
+ uint32_t features;
+ zx_status_t rc = zx_system_get_features(ZX_FEATURE_KIND_CPU, &features);
diff --git a/devel/electron7/files/patch-tools_gn_base_files_file__posix.cc b/devel/electron7/files/patch-tools_gn_base_files_file__posix.cc
new file mode 100644
index 000000000000..35ce975a61ae
--- /dev/null
+++ b/devel/electron7/files/patch-tools_gn_base_files_file__posix.cc
@@ -0,0 +1,11 @@
+--- tools/gn/base/files/file_posix.cc.orig 2019-11-19 01:42:28 UTC
++++ tools/gn/base/files/file_posix.cc
+@@ -414,7 +414,7 @@ void File::DoInitialize(const FilePath& path, uint32_t
+ bool File::Flush() {
+ DCHECK(IsValid());
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ return !HANDLE_EINTR(fdatasync(file_.get()));
+ #else
+ return !HANDLE_EINTR(fsync(file_.get()));
diff --git a/devel/electron7/files/patch-tools_gn_base_files_file__util.h b/devel/electron7/files/patch-tools_gn_base_files_file__util.h
new file mode 100644
index 000000000000..bab519a2739e
--- /dev/null
+++ b/devel/electron7/files/patch-tools_gn_base_files_file__util.h
@@ -0,0 +1,11 @@
+--- tools/gn/base/files/file_util.h.orig 2019-11-19 01:42:28 UTC
++++ tools/gn/base/files/file_util.h
+@@ -361,7 +361,7 @@ bool VerifyPathControlledByAdmin(const base::FilePath&
+ // the directory |path|, in the number of FilePath::CharType, or -1 on failure.
+ int GetMaximumPathComponentLength(const base::FilePath& path);
+
+-#if defined(OS_LINUX) || defined(OS_AIX)
++#if defined(OS_LINUX) || defined(OS_AIX) || defined(OS_BSD)
+ // Broad categories of file systems as returned by statfs() on Linux.
+ enum FileSystemType {
+ FILE_SYSTEM_UNKNOWN, // statfs failed.
diff --git a/devel/electron7/files/patch-tools_gn_base_files_file__util__posix.cc b/devel/electron7/files/patch-tools_gn_base_files_file__util__posix.cc
new file mode 100644
index 000000000000..ec799cd0755b
--- /dev/null
+++ b/devel/electron7/files/patch-tools_gn_base_files_file__util__posix.cc
@@ -0,0 +1,11 @@
+--- tools/gn/base/files/file_util_posix.cc.orig 2019-11-19 01:42:28 UTC
++++ tools/gn/base/files/file_util_posix.cc
+@@ -254,7 +254,7 @@ bool ReplaceFile(const FilePath& from_path,
+ #endif // !defined(OS_NACL_NONSFI)
+
+ bool CreateLocalNonBlockingPipe(int fds[2]) {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ return pipe2(fds, O_CLOEXEC | O_NONBLOCK) == 0;
+ #else
+ int raw_fds[2];
diff --git a/devel/electron7/files/patch-tools_gn_base_files_scoped__file.cc b/devel/electron7/files/patch-tools_gn_base_files_scoped__file.cc
new file mode 100644
index 000000000000..739eb82e5b4f
--- /dev/null
+++ b/devel/electron7/files/patch-tools_gn_base_files_scoped__file.cc
@@ -0,0 +1,11 @@
+--- tools/gn/base/files/scoped_file.cc.orig 2019-11-19 01:42:28 UTC
++++ tools/gn/base/files/scoped_file.cc
+@@ -30,7 +30,7 @@ void ScopedFDCloseTraits::Free(int fd) {
+ // a single open directory would bypass the entire security model.
+ int ret = IGNORE_EINTR(close(fd));
+
+-#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_FUCHSIA) || \
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_FUCHSIA) || defined(OS_BSD) || \
+ defined(OS_ANDROID)
+ // NB: Some file descriptors can return errors from close() e.g. network
+ // filesystems such as NFS and Linux input devices. On Linux, macOS, and
diff --git a/devel/electron7/files/patch-tools_gn_build_gen.py b/devel/electron7/files/patch-tools_gn_build_gen.py
new file mode 100644
index 000000000000..4df2695bcab4
--- /dev/null
+++ b/devel/electron7/files/patch-tools_gn_build_gen.py
@@ -0,0 +1,24 @@
+--- tools/gn/build/gen.py.orig 2019-11-19 01:42:28 UTC
++++ tools/gn/build/gen.py
+@@ -69,6 +69,9 @@ class Platform(object):
+ def is_aix(self):
+ return self._platform == 'aix'
+
++ def is_freebsd(self):
++ return self._platform == 'freebsd'
++
+ def is_posix(self):
+ return self._platform in ['linux', 'freebsd', 'darwin', 'aix', 'openbsd']
+
+@@ -337,6 +340,11 @@ def WriteGNNinja(path, platform, host, options):
+ elif platform.is_aix():
+ cflags_cc.append('-maix64')
+ ldflags.append('-maix64')
++ elif platform.is_freebsd():
++ cflags.extend(['-Wno-deprecated-register', '-Wno-parentheses-equality'])
++ ldflags.extend(['-pthread'])
++ libs.extend(['-lexecinfo', '-lkvm', '-lutil'])
++ include_dirs += ['/usr/local/include']
+
+ if platform.is_posix():
+ ldflags.append('-pthread')
diff --git a/devel/electron7/files/patch-tools_gn_tools_gn_exec__process.cc b/devel/electron7/files/patch-tools_gn_tools_gn_exec__process.cc
new file mode 100644
index 000000000000..e2b3bd573597
--- /dev/null
+++ b/devel/electron7/files/patch-tools_gn_tools_gn_exec__process.cc
@@ -0,0 +1,13 @@
+--- tools/gn/tools/gn/exec_process.cc.orig 2019-11-19 01:42:28 UTC
++++ tools/gn/tools/gn/exec_process.cc
+@@ -29,6 +29,10 @@
+ #include "base/posix/file_descriptor_shuffle.h"
+ #endif
+
++#if defined(OS_BSD)
++#include <signal.h>
++#endif
++
+ namespace internal {
+
+ #if defined(OS_WIN)
diff --git a/devel/electron7/files/patch-tools_gn_util_sys__info.cc b/devel/electron7/files/patch-tools_gn_util_sys__info.cc
new file mode 100644
index 000000000000..d07ef0747819
--- /dev/null
+++ b/devel/electron7/files/patch-tools_gn_util_sys__info.cc
@@ -0,0 +1,11 @@
+--- tools/gn/util/sys_info.cc.orig 2019-11-19 01:42:28 UTC
++++ tools/gn/util/sys_info.cc
+@@ -28,6 +28,8 @@ std::string OperatingSystemArchitecture() {
+ arch = "x86";
+ } else if (arch == "amd64") {
+ arch = "x86_64";
++ } else if (arch == "arm64") {
++ arch = "aarch64";
+ } else if (std::string(info.sysname) == "AIX") {
+ arch = "ppc64";
+ }
diff --git a/devel/electron7/files/patch-tools_json__schema__compiler_feature__compiler.py b/devel/electron7/files/patch-tools_json__schema__compiler_feature__compiler.py
new file mode 100644
index 000000000000..b86523146be3
--- /dev/null
+++ b/devel/electron7/files/patch-tools_json__schema__compiler_feature__compiler.py
@@ -0,0 +1,10 @@
+--- tools/json_schema_compiler/feature_compiler.py.orig 2019-12-12 12:41:31 UTC
++++ tools/json_schema_compiler/feature_compiler.py
+@@ -215,6 +215,7 @@ FEATURE_GRAMMAR = (
+ 'enum_map': {
+ 'chromeos': 'Feature::CHROMEOS_PLATFORM',
+ 'linux': 'Feature::LINUX_PLATFORM',
++ 'bsd': 'Feature::LINUX_PLATFORM',
+ 'mac': 'Feature::MACOSX_PLATFORM',
+ 'win': 'Feature::WIN_PLATFORM',
+ }
diff --git a/devel/electron7/files/patch-tools_json__schema__compiler_model.py b/devel/electron7/files/patch-tools_json__schema__compiler_model.py
new file mode 100644
index 000000000000..094c070bac34
--- /dev/null
+++ b/devel/electron7/files/patch-tools_json__schema__compiler_model.py
@@ -0,0 +1,11 @@
+--- tools/json_schema_compiler/model.py.orig 2019-12-12 12:41:31 UTC
++++ tools/json_schema_compiler/model.py
+@@ -603,7 +603,7 @@ class Platforms(object):
+ """
+ CHROMEOS = _PlatformInfo("chromeos")
+ CHROMEOS_TOUCH = _PlatformInfo("chromeos_touch")
+- LINUX = _PlatformInfo("linux")
++ LINUX = _PlatformInfo("bsd")
+ MAC = _PlatformInfo("mac")
+ WIN = _PlatformInfo("win")
+
diff --git a/devel/electron7/files/patch-tools_perf_chrome__telemetry__build_BUILD.gn b/devel/electron7/files/patch-tools_perf_chrome__telemetry__build_BUILD.gn
new file mode 100644
index 000000000000..90b8c6e5c084
--- /dev/null
+++ b/devel/electron7/files/patch-tools_perf_chrome__telemetry__build_BUILD.gn
@@ -0,0 +1,11 @@
+--- tools/perf/chrome_telemetry_build/BUILD.gn.orig 2019-12-12 12:41:31 UTC
++++ tools/perf/chrome_telemetry_build/BUILD.gn
+@@ -43,7 +43,7 @@ group("telemetry_chrome_test") {
+ data_deps += [ "//chrome:reorder_imports" ]
+ }
+
+- if (is_linux) {
++ if (is_linux && !is_bsd) {
+ data_deps += [ "//third_party/breakpad:dump_syms($host_toolchain)" ]
+ }
+
diff --git a/devel/electron7/files/patch-tools_variations_fieldtrial__to__struct.py b/devel/electron7/files/patch-tools_variations_fieldtrial__to__struct.py
new file mode 100644
index 000000000000..502ea1b7451e
--- /dev/null
+++ b/devel/electron7/files/patch-tools_variations_fieldtrial__to__struct.py
@@ -0,0 +1,10 @@
+--- tools/variations/fieldtrial_to_struct.py.orig 2019-12-12 12:41:32 UTC
++++ tools/variations/fieldtrial_to_struct.py
+@@ -33,6 +33,7 @@ finally:
+ _platforms = [
+ 'android',
+ 'android_webview',
++ 'freebsd',
+ 'chromeos',
+ 'fuchsia',
+ 'ios',
diff --git a/devel/electron7/files/patch-ui_base_dragdrop_os__exchange__data__provider__factory.cc b/devel/electron7/files/patch-ui_base_dragdrop_os__exchange__data__provider__factory.cc
new file mode 100644
index 000000000000..aa7730768404
--- /dev/null
+++ b/devel/electron7/files/patch-ui_base_dragdrop_os__exchange__data__provider__factory.cc
@@ -0,0 +1,20 @@
+--- ui/base/dragdrop/os_exchange_data_provider_factory.cc.orig 2019-12-12 12:41:32 UTC
++++ ui/base/dragdrop/os_exchange_data_provider_factory.cc
+@@ -8,7 +8,7 @@
+
+ #if defined(USE_X11)
+ #include "ui/base/dragdrop/os_exchange_data_provider_aurax11.h"
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ #include "ui/base/dragdrop/os_exchange_data_provider_aura.h"
+ #elif defined(OS_MACOSX)
+ #include "ui/base/dragdrop/os_exchange_data_provider_builder_mac.h"
+@@ -23,7 +23,7 @@ std::unique_ptr<OSExchangeData::Provider>
+ OSExchangeDataProviderFactory::CreateProvider() {
+ #if defined(USE_X11)
+ return std::make_unique<OSExchangeDataProviderAuraX11>();
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ return std::make_unique<OSExchangeDataProviderAura>();
+ #elif defined(OS_MACOSX)
+ return ui::BuildOSExchangeDataProviderMac();
diff --git a/devel/electron7/files/patch-ui_base_ime_init_input__method__initializer.cc b/devel/electron7/files/patch-ui_base_ime_init_input__method__initializer.cc
new file mode 100644
index 000000000000..fb2893327cef
--- /dev/null
+++ b/devel/electron7/files/patch-ui_base_ime_init_input__method__initializer.cc
@@ -0,0 +1,38 @@
+--- ui/base/ime/init/input_method_initializer.cc.orig 2019-12-12 12:41:32 UTC
++++ ui/base/ime/init/input_method_initializer.cc
+@@ -8,7 +8,7 @@
+
+ #if defined(OS_CHROMEOS)
+ #include "ui/base/ime/ime_bridge.h"
+-#elif defined(USE_AURA) && defined(OS_LINUX)
++#elif defined(USE_AURA) && (defined(OS_LINUX) || defined(OS_BSD))
+ #include "base/logging.h"
+ #include "ui/base/ime/linux/fake_input_method_context_factory.h"
+ #elif defined(OS_WIN)
+@@ -18,7 +18,7 @@
+
+ namespace {
+
+-#if !defined(OS_CHROMEOS) && defined(USE_AURA) && defined(OS_LINUX)
++#if !defined(OS_CHROMEOS) && defined(USE_AURA) && (defined(OS_LINUX) || defined(OS_BSD))
+ const ui::LinuxInputMethodContextFactory*
+ g_linux_input_method_context_factory_for_testing;
+ #endif
+@@ -46,7 +46,7 @@ void ShutdownInputMethod() {
+ void InitializeInputMethodForTesting() {
+ #if defined(OS_CHROMEOS)
+ IMEBridge::Initialize();
+-#elif defined(USE_AURA) && defined(OS_LINUX)
++#elif defined(USE_AURA) && (defined(OS_LINUX) || defined(OS_BSD))
+ if (!g_linux_input_method_context_factory_for_testing)
+ g_linux_input_method_context_factory_for_testing =
+ new FakeInputMethodContextFactory();
+@@ -67,7 +67,7 @@ void InitializeInputMethodForTesting() {
+ void ShutdownInputMethodForTesting() {
+ #if defined(OS_CHROMEOS)
+ IMEBridge::Shutdown();
+-#elif defined(USE_AURA) && defined(OS_LINUX)
++#elif defined(USE_AURA) && (defined(OS_LINUX) || defined(OS_BSD))
+ const LinuxInputMethodContextFactory* factory =
+ LinuxInputMethodContextFactory::instance();
+ CHECK(!factory || factory == g_linux_input_method_context_factory_for_testing)
diff --git a/devel/electron7/files/patch-ui_base_resource_resource__bundle.cc b/devel/electron7/files/patch-ui_base_resource_resource__bundle.cc
new file mode 100644
index 000000000000..2204c2412d1f
--- /dev/null
+++ b/devel/electron7/files/patch-ui_base_resource_resource__bundle.cc
@@ -0,0 +1,20 @@
+--- ui/base/resource/resource_bundle.cc.orig 2019-12-12 12:41:32 UTC
++++ ui/base/resource/resource_bundle.cc
+@@ -793,7 +793,7 @@ void ResourceBundle::ReloadFonts() {
+ }
+
+ ScaleFactor ResourceBundle::GetMaxScaleFactor() const {
+-#if defined(OS_WIN) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD)
+ return max_scale_factor_;
+ #else
+ return GetSupportedScaleFactors().back();
+@@ -846,7 +846,7 @@ void ResourceBundle::InitSharedInstance(Delegate* dele
+ // On platforms other than iOS, 100P is always a supported scale factor.
+ // For Windows we have a separate case in this function.
+ supported_scale_factors.push_back(SCALE_FACTOR_100P);
+-#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_WIN)
++#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD)
+ supported_scale_factors.push_back(SCALE_FACTOR_200P);
+ #endif
+ #endif
diff --git a/devel/electron7/files/patch-ui_base_resource_resource__bundle__freebsd.cc b/devel/electron7/files/patch-ui_base_resource_resource__bundle__freebsd.cc
new file mode 100644
index 000000000000..fb72fd3ba490
--- /dev/null
+++ b/devel/electron7/files/patch-ui_base_resource_resource__bundle__freebsd.cc
@@ -0,0 +1,24 @@
+--- ui/base/resource/resource_bundle_freebsd.cc.orig 2019-12-16 13:34:00 UTC
++++ ui/base/resource/resource_bundle_freebsd.cc
+@@ -0,0 +1,21 @@
++// Copyright 2017 The Chromium Authors. All rights reserved.
++// Use of this source code is governed by a BSD-style license that can be
++// found in the LICENSE file.
++
++#include "ui/base/resource/resource_bundle.h"
++
++#include "base/logging.h"
++#include "base/macros.h"
++#include "ui/gfx/image/image.h"
++
++namespace ui {
++
++void ResourceBundle::LoadCommonResources() {
++ LoadChromeResources();
++}
++
++gfx::Image& ResourceBundle::GetNativeImageNamed(int resource_id) {
++ return GetImageNamed(resource_id);
++}
++
++} // namespace ui
diff --git a/devel/electron7/files/patch-ui_base_ui__base__features.cc b/devel/electron7/files/patch-ui_base_ui__base__features.cc
new file mode 100644
index 000000000000..317ee577cc95
--- /dev/null
+++ b/devel/electron7/files/patch-ui_base_ui__base__features.cc
@@ -0,0 +1,20 @@
+--- ui/base/ui_base_features.cc.orig 2019-12-12 12:41:32 UTC
++++ ui/base/ui_base_features.cc
+@@ -112,7 +112,7 @@ const base::Feature kEnableAutomaticUiAdjustmentsForTo
+ "EnableAutomaticUiAdjustmentsForTouch", base::FEATURE_ENABLED_BY_DEFAULT};
+ #endif // defined(OS_WIN) || defined(OS_CHROMEOS)
+
+-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+ // Enables stylus appearing as touch when in contact with digitizer.
+ const base::Feature kDirectManipulationStylus = {
+ "DirectManipulationStylus",
+@@ -122,7 +122,7 @@ const base::Feature kDirectManipulationStylus = {
+ base::FEATURE_DISABLED_BY_DEFAULT
+ #endif
+ };
+-#endif // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
++#endif // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+
+ const base::Feature kFormControlsRefresh = {"FormControlsRefresh",
+ base::FEATURE_DISABLED_BY_DEFAULT};
diff --git a/devel/electron7/files/patch-ui_base_ui__base__features.h b/devel/electron7/files/patch-ui_base_ui__base__features.h
new file mode 100644
index 000000000000..66d15c546dc7
--- /dev/null
+++ b/devel/electron7/files/patch-ui_base_ui__base__features.h
@@ -0,0 +1,15 @@
+--- ui/base/ui_base_features.h.orig 2019-12-12 12:41:32 UTC
++++ ui/base/ui_base_features.h
+@@ -61,10 +61,10 @@ COMPONENT_EXPORT(UI_BASE_FEATURES)
+ extern const base::Feature kEnableAutomaticUiAdjustmentsForTouch;
+ #endif // defined(OS_WIN) || defined(OS_CHROMEOS)
+
+-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+ COMPONENT_EXPORT(UI_BASE_FEATURES)
+ extern const base::Feature kDirectManipulationStylus;
+-#endif // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
++#endif // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+
+ // Used to enable the new controls UI.
+ COMPONENT_EXPORT(UI_BASE_FEATURES)
diff --git a/devel/electron7/files/patch-ui_base_webui_web__ui__util.cc b/devel/electron7/files/patch-ui_base_webui_web__ui__util.cc
new file mode 100644
index 000000000000..e6a199110353
--- /dev/null
+++ b/devel/electron7/files/patch-ui_base_webui_web__ui__util.cc
@@ -0,0 +1,11 @@
+--- ui/base/webui/web_ui_util.cc.orig 2019-12-12 12:41:32 UTC
++++ ui/base/webui/web_ui_util.cc
+@@ -215,7 +215,7 @@ std::string GetFontFamily() {
+
+ // TODO(dnicoara) Remove Ozone check when PlatformFont support is introduced
+ // into Ozone: crbug.com/320050
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) && !defined(USE_OZONE)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS) && !defined(USE_OZONE)
+ font_family = ui::ResourceBundle::GetSharedInstance().GetFont(
+ ui::ResourceBundle::BaseFont).GetFontName() + ", " + font_family;
+ #endif
diff --git a/devel/electron7/files/patch-ui_events_devices_x11_device__data__manager__x11.cc b/devel/electron7/files/patch-ui_events_devices_x11_device__data__manager__x11.cc
new file mode 100644
index 000000000000..8e124046da3e
--- /dev/null
+++ b/devel/electron7/files/patch-ui_events_devices_x11_device__data__manager__x11.cc
@@ -0,0 +1,19 @@
+--- ui/events/devices/x11/device_data_manager_x11.cc.orig 2019-12-12 12:41:33 UTC
++++ ui/events/devices/x11/device_data_manager_x11.cc
+@@ -826,6 +826,8 @@ void DeviceDataManagerX11::SetDisabledKeyboardAllowedK
+ }
+
+ void DeviceDataManagerX11::DisableDevice(int deviceid) {
++ NOTIMPLEMENTED();
++#if !defined(OS_BSD)
+ blocked_devices_.set(deviceid, true);
+ // TODO(rsadam@): Support blocking touchscreen devices.
+ std::vector<InputDevice> keyboards = GetKeyboardDevices();
+@@ -836,6 +838,7 @@ void DeviceDataManagerX11::DisableDevice(int deviceid)
+ keyboards.erase(it);
+ DeviceDataManager::OnKeyboardDevicesUpdated(keyboards);
+ }
++#endif
+ }
+
+ void DeviceDataManagerX11::EnableDevice(int deviceid) {
diff --git a/devel/electron7/files/patch-ui_events_event__switches.cc b/devel/electron7/files/patch-ui_events_event__switches.cc
new file mode 100644
index 000000000000..43fd9584c009
--- /dev/null
+++ b/devel/electron7/files/patch-ui_events_event__switches.cc
@@ -0,0 +1,11 @@
+--- ui/events/event_switches.cc.orig 2019-12-12 12:41:33 UTC
++++ ui/events/event_switches.cc
+@@ -14,7 +14,7 @@ namespace switches {
+ const char kCompensateForUnstablePinchZoom[] =
+ "compensate-for-unstable-pinch-zoom";
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_FREEBSD)
+ // Tells chrome to interpret events from these devices as touch events. Only
+ // available with XInput 2 (i.e. X server 1.8 or above). The id's of the
+ // devices can be retrieved from 'xinput list'.
diff --git a/devel/electron7/files/patch-ui_events_event__switches.h b/devel/electron7/files/patch-ui_events_event__switches.h
new file mode 100644
index 000000000000..13342e5ec96a
--- /dev/null
+++ b/devel/electron7/files/patch-ui_events_event__switches.h
@@ -0,0 +1,11 @@
+--- ui/events/event_switches.h.orig 2019-12-12 12:41:33 UTC
++++ ui/events/event_switches.h
+@@ -13,7 +13,7 @@ namespace switches {
+
+ EVENTS_BASE_EXPORT extern const char kCompensateForUnstablePinchZoom[];
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_FREEBSD)
+ EVENTS_BASE_EXPORT extern const char kTouchDevices[];
+ EVENTS_BASE_EXPORT extern const char kPenDevices[];
+ #endif
diff --git a/devel/electron7/files/patch-ui_events_keycodes_dom_keycode__converter.cc b/devel/electron7/files/patch-ui_events_keycodes_dom_keycode__converter.cc
new file mode 100644
index 000000000000..93d655ec0397
--- /dev/null
+++ b/devel/electron7/files/patch-ui_events_keycodes_dom_keycode__converter.cc
@@ -0,0 +1,11 @@
+--- ui/events/keycodes/dom/keycode_converter.cc.orig 2019-12-12 12:41:33 UTC
++++ ui/events/keycodes/dom/keycode_converter.cc
+@@ -19,7 +19,7 @@ namespace {
+ // and DOM Level 3 |code| strings.
+ #if defined(OS_WIN)
+ #define USB_KEYMAP(usb, evdev, xkb, win, mac, code, id) {usb, win, code}
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ #define USB_KEYMAP(usb, evdev, xkb, win, mac, code, id) {usb, xkb, code}
+ #elif defined(OS_MACOSX)
+ #define USB_KEYMAP(usb, evdev, xkb, win, mac, code, id) {usb, mac, code}
diff --git a/devel/electron7/files/patch-ui_gfx_BUILD.gn b/devel/electron7/files/patch-ui_gfx_BUILD.gn
new file mode 100644
index 000000000000..4aa1e4192e86
--- /dev/null
+++ b/devel/electron7/files/patch-ui_gfx_BUILD.gn
@@ -0,0 +1,11 @@
+--- ui/gfx/BUILD.gn.orig 2019-12-12 12:41:33 UTC
++++ ui/gfx/BUILD.gn
+@@ -573,7 +573,7 @@ jumbo_source_set("memory_buffer_sources") {
+ deps += [ "//build/config/linux/libdrm" ]
+ }
+
+- if (is_linux || is_android) {
++ if ((is_linux || is_android) && !is_bsd) {
+ deps += [ "//third_party/libsync" ]
+ }
+
diff --git a/devel/electron7/files/patch-ui_gfx_canvas__skia.cc b/devel/electron7/files/patch-ui_gfx_canvas__skia.cc
new file mode 100644
index 000000000000..6a862a52d27c
--- /dev/null
+++ b/devel/electron7/files/patch-ui_gfx_canvas__skia.cc
@@ -0,0 +1,11 @@
+--- ui/gfx/canvas_skia.cc.orig 2019-12-12 12:41:33 UTC
++++ ui/gfx/canvas_skia.cc
+@@ -209,7 +209,7 @@ void Canvas::DrawStringRectWithFlags(const base::strin
+ Range range = StripAcceleratorChars(flags, &adjusted_text);
+ bool elide_text = ((flags & NO_ELLIPSIS) == 0);
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // On Linux, eliding really means fading the end of the string. But only
+ // for LTR text. RTL text is still elided (on the left) with "...".
+ if (elide_text) {
diff --git a/devel/electron7/files/patch-ui_gfx_codec_jpeg__codec.cc b/devel/electron7/files/patch-ui_gfx_codec_jpeg__codec.cc
new file mode 100644
index 000000000000..2e0009805120
--- /dev/null
+++ b/devel/electron7/files/patch-ui_gfx_codec_jpeg__codec.cc
@@ -0,0 +1,20 @@
+--- ui/gfx/codec/jpeg_codec.cc.orig 2019-12-12 12:41:33 UTC
++++ ui/gfx/codec/jpeg_codec.cc
+@@ -207,6 +207,7 @@ bool JPEGCodec::Decode(const unsigned char* input, siz
+ case JCS_GRAYSCALE:
+ case JCS_RGB:
+ case JCS_YCbCr:
++#ifdef JCS_EXTENSIONS
+ // Choose an output colorspace and return if it is an unsupported one.
+ // Same as JPEGCodec::Encode(), libjpeg-turbo supports all input formats
+ // used by Chromium (i.e. RGBA and BGRA) and we just map the input
+@@ -223,6 +224,9 @@ bool JPEGCodec::Decode(const unsigned char* input, siz
+ NOTREACHED() << "Invalid pixel format";
+ return false;
+ }
++#else
++ cinfo.out_color_space = JCS_RGB;
++#endif
+ break;
+ case JCS_CMYK:
+ case JCS_YCCK:
diff --git a/devel/electron7/files/patch-ui_gfx_font__fallback__linux.cc b/devel/electron7/files/patch-ui_gfx_font__fallback__linux.cc
new file mode 100644
index 000000000000..d3666711042f
--- /dev/null
+++ b/devel/electron7/files/patch-ui_gfx_font__fallback__linux.cc
@@ -0,0 +1,13 @@
+--- ui/gfx/font_fallback_linux.cc.orig 2019-12-12 12:41:33 UTC
++++ ui/gfx/font_fallback_linux.cc
+@@ -18,6 +18,10 @@
+ #include "base/trace_event/trace_event.h"
+ #include "ui/gfx/font.h"
+
++#if defined(OS_BSD)
++#include <unistd.h>
++#endif
++
+ namespace gfx {
+
+ namespace {
diff --git a/devel/electron7/files/patch-ui_gfx_font__list.cc b/devel/electron7/files/patch-ui_gfx_font__list.cc
new file mode 100644
index 000000000000..731b3dff4cce
--- /dev/null
+++ b/devel/electron7/files/patch-ui_gfx_font__list.cc
@@ -0,0 +1,11 @@
+--- ui/gfx/font_list.cc.orig 2019-12-12 12:41:33 UTC
++++ ui/gfx/font_list.cc
+@@ -24,7 +24,7 @@ base::LazyInstance<scoped_refptr<gfx::FontListImpl>>::
+ bool g_default_impl_initialized = false;
+
+ bool IsFontFamilyAvailable(const std::string& family, SkFontMgr* fontManager) {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ return !!fontManager->legacyMakeTypeface(family.c_str(), SkFontStyle());
+ #else
+ sk_sp<SkFontStyleSet> set(fontManager->matchFamily(family.c_str()));
diff --git a/devel/electron7/files/patch-ui_gfx_font__render__params.h b/devel/electron7/files/patch-ui_gfx_font__render__params.h
new file mode 100644
index 000000000000..1317f7c22576
--- /dev/null
+++ b/devel/electron7/files/patch-ui_gfx_font__render__params.h
@@ -0,0 +1,18 @@
+--- ui/gfx/font_render_params.h.orig 2019-12-12 12:41:33 UTC
++++ ui/gfx/font_render_params.h
+@@ -111,13 +111,13 @@ GFX_EXPORT FontRenderParams GetFontRenderParams(
+ const FontRenderParamsQuery& query,
+ std::string* family_out);
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Clears GetFontRenderParams()'s cache. Intended to be called by tests that are
+ // changing Fontconfig's configuration.
+ GFX_EXPORT void ClearFontRenderParamsCacheForTest();
+ #endif
+
+-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_ANDROID) || \
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD) || \
+ defined(OS_FUCHSIA)
+ // Gets the device scale factor to query the FontRenderParams.
+ GFX_EXPORT float GetFontRenderParamsDeviceScaleFactor();
diff --git a/devel/electron7/files/patch-ui_gfx_gpu__memory__buffer.h b/devel/electron7/files/patch-ui_gfx_gpu__memory__buffer.h
new file mode 100644
index 000000000000..862187caa75c
--- /dev/null
+++ b/devel/electron7/files/patch-ui_gfx_gpu__memory__buffer.h
@@ -0,0 +1,20 @@
+--- ui/gfx/gpu_memory_buffer.h.orig 2019-12-12 12:41:33 UTC
++++ ui/gfx/gpu_memory_buffer.h
+@@ -16,7 +16,7 @@
+ #include "ui/gfx/geometry/rect.h"
+ #include "ui/gfx/gfx_export.h"
+
+-#if defined(USE_OZONE) || defined(OS_LINUX)
++#if defined(USE_OZONE) || defined(OS_LINUX) || defined(OS_BSD)
+ #include "ui/gfx/native_pixmap_handle.h"
+ #elif defined(OS_MACOSX) && !defined(OS_IOS)
+ #include "ui/gfx/mac/io_surface.h"
+@@ -65,7 +65,7 @@ struct GFX_EXPORT GpuMemoryBufferHandle {
+ base::UnsafeSharedMemoryRegion region;
+ uint32_t offset;
+ int32_t stride;
+-#if defined(OS_LINUX) || defined(OS_FUCHSIA)
++#if defined(OS_LINUX) || defined(OS_FUCHSIA) || defined(OS_BSD)
+ NativePixmapHandle native_pixmap_handle;
+ #elif defined(OS_MACOSX) && !defined(OS_IOS)
+ ScopedRefCountedIOSurfaceMachPort mach_port;
diff --git a/devel/electron7/files/patch-ui_gfx_ipc_gfx__param__traits__macros.h b/devel/electron7/files/patch-ui_gfx_ipc_gfx__param__traits__macros.h
new file mode 100644
index 000000000000..c82572504f52
--- /dev/null
+++ b/devel/electron7/files/patch-ui_gfx_ipc_gfx__param__traits__macros.h
@@ -0,0 +1,44 @@
+--- ui/gfx/ipc/gfx_param_traits_macros.h.orig 2019-12-12 12:41:33 UTC
++++ ui/gfx/ipc/gfx_param_traits_macros.h
+@@ -18,7 +18,7 @@
+ #include "ui/gfx/selection_bound.h"
+ #include "ui/gfx/swap_result.h"
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include "ui/gfx/native_pixmap_handle.h"
+ #endif
+
+@@ -51,7 +51,7 @@ IPC_STRUCT_TRAITS_BEGIN(gfx::GpuMemoryBufferHandle)
+ IPC_STRUCT_TRAITS_MEMBER(region)
+ IPC_STRUCT_TRAITS_MEMBER(offset)
+ IPC_STRUCT_TRAITS_MEMBER(stride)
+-#if defined(OS_LINUX) || defined(OS_FUCHSIA)
++#if defined(OS_LINUX) || defined(OS_FUCHSIA) || defined(OS_BSD)
+ IPC_STRUCT_TRAITS_MEMBER(native_pixmap_handle)
+ #elif defined(OS_MACOSX)
+ IPC_STRUCT_TRAITS_MEMBER(mach_port)
+@@ -66,12 +66,12 @@ IPC_STRUCT_TRAITS_BEGIN(gfx::GpuMemoryBufferId)
+ IPC_STRUCT_TRAITS_MEMBER(id)
+ IPC_STRUCT_TRAITS_END()
+
+-#if defined(OS_LINUX) || defined(OS_FUCHSIA)
++#if defined(OS_LINUX) || defined(OS_FUCHSIA) || defined(OS_BSD)
+ IPC_STRUCT_TRAITS_BEGIN(gfx::NativePixmapPlane)
+ IPC_STRUCT_TRAITS_MEMBER(stride)
+ IPC_STRUCT_TRAITS_MEMBER(offset)
+ IPC_STRUCT_TRAITS_MEMBER(size)
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ IPC_STRUCT_TRAITS_MEMBER(fd)
+ #elif defined(OS_FUCHSIA)
+ IPC_STRUCT_TRAITS_MEMBER(vmo)
+@@ -80,7 +80,7 @@ IPC_STRUCT_TRAITS_END()
+
+ IPC_STRUCT_TRAITS_BEGIN(gfx::NativePixmapHandle)
+ IPC_STRUCT_TRAITS_MEMBER(planes)
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ IPC_STRUCT_TRAITS_MEMBER(modifier)
+ #endif
+ #if defined(OS_FUCHSIA)
diff --git a/devel/electron7/files/patch-ui_gfx_linux_client__native__pixmap__dmabuf.cc b/devel/electron7/files/patch-ui_gfx_linux_client__native__pixmap__dmabuf.cc
new file mode 100644
index 000000000000..ed32953c4d40
--- /dev/null
+++ b/devel/electron7/files/patch-ui_gfx_linux_client__native__pixmap__dmabuf.cc
@@ -0,0 +1,25 @@
+--- ui/gfx/linux/client_native_pixmap_dmabuf.cc.orig 2019-12-12 12:41:33 UTC
++++ ui/gfx/linux/client_native_pixmap_dmabuf.cc
+@@ -5,7 +5,9 @@
+ #include "ui/gfx/linux/client_native_pixmap_dmabuf.h"
+
+ #include <fcntl.h>
++#if !defined(__FreeBSD__)
+ #include <linux/version.h>
++#endif
+ #include <stddef.h>
+ #include <sys/ioctl.h>
+ #include <sys/mman.h>
+@@ -24,11 +26,7 @@
+ #include "build/build_config.h"
+ #include "ui/gfx/switches.h"
+
+-#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 11, 0)
+-#include <linux/dma-buf.h>
+-#else
+-#include <linux/types.h>
+-
++#if defined(__FreeBSD__)
+ struct dma_buf_sync {
+ __u64 flags;
+ };
diff --git a/devel/electron7/files/patch-ui_gfx_mojom_buffer__types__mojom__traits.cc b/devel/electron7/files/patch-ui_gfx_mojom_buffer__types__mojom__traits.cc
new file mode 100644
index 000000000000..b1015d553180
--- /dev/null
+++ b/devel/electron7/files/patch-ui_gfx_mojom_buffer__types__mojom__traits.cc
@@ -0,0 +1,75 @@
+--- ui/gfx/mojom/buffer_types_mojom_traits.cc.orig 2019-12-12 12:41:33 UTC
++++ ui/gfx/mojom/buffer_types_mojom_traits.cc
+@@ -24,15 +24,15 @@ bool StructTraits<gfx::mojom::BufferUsageAndFormatData
+ return data.ReadUsage(&out->usage) && data.ReadFormat(&out->format);
+ }
+
+-#if defined(OS_LINUX) || defined(USE_OZONE)
++#if defined(OS_LINUX) || defined(OS_BSD) || defined(USE_OZONE)
+ mojo::ScopedHandle StructTraits<
+ gfx::mojom::NativePixmapPlaneDataView,
+ gfx::NativePixmapPlane>::buffer_handle(gfx::NativePixmapPlane& plane) {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ return mojo::WrapPlatformFile(plane.fd.release());
+ #elif defined(OS_FUCHSIA)
+ return mojo::WrapPlatformHandle(mojo::PlatformHandle(std::move(plane.vmo)));
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+ }
+
+ bool StructTraits<
+@@ -45,7 +45,7 @@ bool StructTraits<
+
+ mojo::PlatformHandle handle =
+ mojo::UnwrapPlatformHandle(data.TakeBufferHandle());
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ if (!handle.is_fd())
+ return false;
+ out->fd = handle.TakeFD();
+@@ -53,7 +53,7 @@ bool StructTraits<
+ if (!handle.is_handle())
+ return false;
+ out->vmo = zx::vmo(handle.TakeHandle());
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+
+ return true;
+ }
+@@ -62,7 +62,7 @@ bool StructTraits<
+ gfx::mojom::NativePixmapHandleDataView,
+ gfx::NativePixmapHandle>::Read(gfx::mojom::NativePixmapHandleDataView data,
+ gfx::NativePixmapHandle* out) {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ out->modifier = data.modifier();
+ #endif
+
+@@ -75,7 +75,7 @@ bool StructTraits<
+
+ return data.ReadPlanes(&out->planes);
+ }
+-#endif // defined(OS_LINUX) || defined(USE_OZONE)
++#endif // defined(OS_LINUX) || defined(OS_BSD) || defined(USE_OZONE)
+
+ gfx::mojom::GpuMemoryBufferPlatformHandlePtr StructTraits<
+ gfx::mojom::GpuMemoryBufferHandleDataView,
+@@ -88,7 +88,7 @@ gfx::mojom::GpuMemoryBufferPlatformHandlePtr StructTra
+ return gfx::mojom::GpuMemoryBufferPlatformHandle::NewSharedMemoryHandle(
+ std::move(handle.region));
+ case gfx::NATIVE_PIXMAP:
+-#if defined(OS_LINUX) || defined(USE_OZONE)
++#if defined(OS_LINUX) || defined(OS_BSD) || defined(USE_OZONE)
+ return gfx::mojom::GpuMemoryBufferPlatformHandle::NewNativePixmapHandle(
+ std::move(handle.native_pixmap_handle));
+ #else
+@@ -164,7 +164,7 @@ bool StructTraits<gfx::mojom::GpuMemoryBufferHandleDat
+ out->type = gfx::SHARED_MEMORY_BUFFER;
+ out->region = std::move(platform_handle->get_shared_memory_handle());
+ return true;
+-#if defined(OS_LINUX) || defined(USE_OZONE)
++#if defined(OS_LINUX) || defined(OS_BSD) || defined(USE_OZONE)
+ case gfx::mojom::GpuMemoryBufferPlatformHandleDataView::Tag::
+ NATIVE_PIXMAP_HANDLE:
+ out->type = gfx::NATIVE_PIXMAP;
diff --git a/devel/electron7/files/patch-ui_gfx_mojom_buffer__types__mojom__traits.h b/devel/electron7/files/patch-ui_gfx_mojom_buffer__types__mojom__traits.h
new file mode 100644
index 000000000000..34977aa1ae74
--- /dev/null
+++ b/devel/electron7/files/patch-ui_gfx_mojom_buffer__types__mojom__traits.h
@@ -0,0 +1,29 @@
+--- ui/gfx/mojom/buffer_types_mojom_traits.h.orig 2019-12-12 12:41:33 UTC
++++ ui/gfx/mojom/buffer_types_mojom_traits.h
+@@ -191,7 +191,7 @@ struct StructTraits<gfx::mojom::GpuMemoryBufferIdDataV
+ }
+ };
+
+-#if defined(OS_LINUX) || defined(USE_OZONE)
++#if defined(OS_LINUX) || defined(OS_BSD) || defined(USE_OZONE)
+ template <>
+ struct StructTraits<gfx::mojom::NativePixmapPlaneDataView,
+ gfx::NativePixmapPlane> {
+@@ -217,7 +217,7 @@ struct StructTraits<gfx::mojom::NativePixmapHandleData
+ return pixmap_handle.planes;
+ }
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ static uint64_t modifier(const gfx::NativePixmapHandle& pixmap_handle) {
+ return pixmap_handle.modifier;
+ }
+@@ -241,7 +241,7 @@ struct StructTraits<gfx::mojom::NativePixmapHandleData
+ static bool Read(gfx::mojom::NativePixmapHandleDataView data,
+ gfx::NativePixmapHandle* out);
+ };
+-#endif // defined(OS_LINUX) || defined(USE_OZONE)
++#endif // defined(OS_LINUX) || defined(OS_BSD) || defined(USE_OZONE)
+
+ template <>
+ struct StructTraits<gfx::mojom::GpuMemoryBufferHandleDataView,
diff --git a/devel/electron7/files/patch-ui_gfx_native__pixmap__handle.cc b/devel/electron7/files/patch-ui_gfx_native__pixmap__handle.cc
new file mode 100644
index 000000000000..f3252359196f
--- /dev/null
+++ b/devel/electron7/files/patch-ui_gfx_native__pixmap__handle.cc
@@ -0,0 +1,56 @@
+--- ui/gfx/native_pixmap_handle.cc.orig 2019-12-12 12:41:33 UTC
++++ ui/gfx/native_pixmap_handle.cc
+@@ -8,7 +8,7 @@
+
+ #include "build/build_config.h"
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include <drm_fourcc.h>
+ #include "base/posix/eintr_wrapper.h"
+ #endif
+@@ -20,7 +20,7 @@
+
+ namespace gfx {
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ static_assert(NativePixmapHandle::kNoModifier == DRM_FORMAT_MOD_INVALID,
+ "gfx::NativePixmapHandle::kNoModifier should be an alias for"
+ "DRM_FORMAT_MOD_INVALID");
+@@ -31,7 +31,7 @@ NativePixmapPlane::NativePixmapPlane() : stride(0), of
+ NativePixmapPlane::NativePixmapPlane(int stride,
+ int offset,
+ uint64_t size
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ ,
+ base::ScopedFD fd
+ #elif defined(OS_FUCHSIA)
+@@ -42,7 +42,7 @@ NativePixmapPlane::NativePixmapPlane(int stride,
+ : stride(stride),
+ offset(offset),
+ size(size)
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ ,
+ fd(std::move(fd))
+ #elif defined(OS_FUCHSIA)
+@@ -70,7 +70,7 @@ NativePixmapHandle& NativePixmapHandle::operator=(Nati
+ NativePixmapHandle CloneHandleForIPC(const NativePixmapHandle& handle) {
+ NativePixmapHandle clone;
+ for (auto& plane : handle.planes) {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ DCHECK(plane.fd.is_valid());
+ base::ScopedFD fd_dup(HANDLE_EINTR(dup(plane.fd.get())));
+ if (!fd_dup.is_valid()) {
+@@ -96,7 +96,7 @@ NativePixmapHandle CloneHandleForIPC(const NativePixma
+ #endif
+ }
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ clone.modifier = handle.modifier;
+ #endif
+
diff --git a/devel/electron7/files/patch-ui_gfx_native__pixmap__handle.h b/devel/electron7/files/patch-ui_gfx_native__pixmap__handle.h
new file mode 100644
index 000000000000..aabb1b730db1
--- /dev/null
+++ b/devel/electron7/files/patch-ui_gfx_native__pixmap__handle.h
@@ -0,0 +1,38 @@
+--- ui/gfx/native_pixmap_handle.h.orig 2019-12-12 12:41:33 UTC
++++ ui/gfx/native_pixmap_handle.h
+@@ -15,7 +15,7 @@
+ #include "build/build_config.h"
+ #include "ui/gfx/gfx_export.h"
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include "base/files/scoped_file.h"
+ #endif
+
+@@ -32,7 +32,7 @@ struct GFX_EXPORT NativePixmapPlane {
+ NativePixmapPlane(int stride,
+ int offset,
+ uint64_t size
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ ,
+ base::ScopedFD fd
+ #elif defined(OS_FUCHSIA)
+@@ -53,7 +53,7 @@ struct GFX_EXPORT NativePixmapPlane {
+ // This is necessary to map the buffers.
+ uint64_t size;
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // File descriptor for the underlying memory object (usually dmabuf).
+ base::ScopedFD fd;
+ #elif defined(OS_FUCHSIA)
+@@ -82,7 +82,7 @@ struct GFX_EXPORT NativePixmapHandle {
+
+ std::vector<NativePixmapPlane> planes;
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // The modifier is retrieved from GBM library and passed to EGL driver.
+ // Generally it's platform specific, and we don't need to modify it in
+ // Chromium code. Also one per plane per entry.
diff --git a/devel/electron7/files/patch-ui_gfx_render__text.cc b/devel/electron7/files/patch-ui_gfx_render__text.cc
new file mode 100644
index 000000000000..4e7cf78ce704
--- /dev/null
+++ b/devel/electron7/files/patch-ui_gfx_render__text.cc
@@ -0,0 +1,46 @@
+--- ui/gfx/render_text.cc.orig 2019-12-12 12:41:33 UTC
++++ ui/gfx/render_text.cc
+@@ -983,32 +983,33 @@ void RenderText::SetDisplayOffset(int horizontal_offse
+ const int extra_content = GetContentWidth() - display_rect_.width();
+ const int cursor_width = cursor_enabled_ ? 1 : 0;
+
+- int min_offset = 0;
+- int max_offset = 0;
++ // avoid collisions with vm_map.h on FreeBSD --cmt
++ int _min_offset = 0;
++ int _max_offset = 0;
+ if (extra_content > 0) {
+ switch (GetCurrentHorizontalAlignment()) {
+ case ALIGN_LEFT:
+- min_offset = -extra_content;
++ _min_offset = -extra_content;
+ break;
+ case ALIGN_RIGHT:
+- max_offset = extra_content;
++ _max_offset = extra_content;
+ break;
+ case ALIGN_CENTER:
+ // The extra space reserved for cursor at the end of the text is ignored
+ // when centering text. So, to calculate the valid range for offset, we
+ // exclude that extra space, calculate the range, and add it back to the
+ // range (if cursor is enabled).
+- min_offset = -(extra_content - cursor_width + 1) / 2 - cursor_width;
+- max_offset = (extra_content - cursor_width) / 2;
++ _min_offset = -(extra_content - cursor_width + 1) / 2 - cursor_width;
++ _max_offset = (extra_content - cursor_width) / 2;
+ break;
+ default:
+ break;
+ }
+ }
+- if (horizontal_offset < min_offset)
+- horizontal_offset = min_offset;
+- else if (horizontal_offset > max_offset)
+- horizontal_offset = max_offset;
++ if (horizontal_offset < _min_offset)
++ horizontal_offset = _min_offset;
++ else if (horizontal_offset > _max_offset)
++ horizontal_offset = _max_offset;
+
+ cached_bounds_and_offset_valid_ = true;
+ display_offset_.set_x(horizontal_offset);
diff --git a/devel/electron7/files/patch-ui_gl_BUILD.gn b/devel/electron7/files/patch-ui_gl_BUILD.gn
new file mode 100644
index 000000000000..c1d1f8184361
--- /dev/null
+++ b/devel/electron7/files/patch-ui_gl_BUILD.gn
@@ -0,0 +1,11 @@
+--- ui/gl/BUILD.gn.orig 2019-12-12 12:41:33 UTC
++++ ui/gl/BUILD.gn
+@@ -219,7 +219,7 @@ jumbo_component("gl") {
+ ]
+ }
+
+- if (is_posix && !is_fuchsia && !is_mac) {
++ if (is_posix && !is_fuchsia && !is_mac && !is_bsd) {
+ # Windows has USE_EGL but doesn't support base::FileDescriptor.
+ # libsync isn't supported or needed on MacOSX.
+ # Fuchsia is excluded due to a libsync dependency and because it's
diff --git a/devel/electron7/files/patch-ui_gl_generate__bindings.py b/devel/electron7/files/patch-ui_gl_generate__bindings.py
new file mode 100644
index 000000000000..3bb0eadf2985
--- /dev/null
+++ b/devel/electron7/files/patch-ui_gl_generate__bindings.py
@@ -0,0 +1,12 @@
+--- ui/gl/generate_bindings.py.orig 2019-12-12 12:41:33 UTC
++++ ui/gl/generate_bindings.py
+@@ -2721,6 +2721,9 @@ GLX_FUNCTIONS = [
+ 'arguments':
+ 'Display* dpy, GLXDrawable drawable, int32_t* numerator, '
+ 'int32_t* denominator' },
++{ 'return_type': '__GLXextFuncPtr',
++ 'names': ['glXGetProcAddressARB'],
++ 'arguments': 'const GLubyte* procName', },
+ { 'return_type': 'void',
+ 'names': ['glXGetSelectedEvent'],
+ 'arguments': 'Display* dpy, GLXDrawable drawable, unsigned long* mask', },
diff --git a/devel/electron7/files/patch-ui_gl_gl__bindings__api__autogen__glx.h b/devel/electron7/files/patch-ui_gl_gl__bindings__api__autogen__glx.h
new file mode 100644
index 000000000000..ef4381970a40
--- /dev/null
+++ b/devel/electron7/files/patch-ui_gl_gl__bindings__api__autogen__glx.h
@@ -0,0 +1,10 @@
+--- ui/gl/gl_bindings_api_autogen_glx.h.orig 2019-12-12 12:41:33 UTC
++++ ui/gl/gl_bindings_api_autogen_glx.h
+@@ -88,6 +88,7 @@ bool glXGetMscRateOMLFn(Display* dpy,
+ GLXDrawable drawable,
+ int32_t* numerator,
+ int32_t* denominator) override;
++__GLXextFuncPtr glXGetProcAddressARBFn(const GLubyte* procName) override;
+ void glXGetSelectedEventFn(Display* dpy,
+ GLXDrawable drawable,
+ unsigned long* mask) override;
diff --git a/devel/electron7/files/patch-ui_gl_gl__bindings__autogen__glx.cc b/devel/electron7/files/patch-ui_gl_gl__bindings__autogen__glx.cc
new file mode 100644
index 000000000000..f968993103ec
--- /dev/null
+++ b/devel/electron7/files/patch-ui_gl_gl__bindings__autogen__glx.cc
@@ -0,0 +1,61 @@
+--- ui/gl/gl_bindings_autogen_glx.cc.orig 2019-12-12 12:41:33 UTC
++++ ui/gl/gl_bindings_autogen_glx.cc
+@@ -115,6 +115,8 @@ void DriverGLX::InitializeExtensionBindings() {
+
+ ext.b_GLX_ARB_create_context =
+ gfx::HasExtension(extensions, "GLX_ARB_create_context");
++ ext.b_GLX_ARB_get_proc_address =
++ gfx::HasExtension(extensions, "GLX_ARB_get_proc_address");
+ ext.b_GLX_EXT_swap_control =
+ gfx::HasExtension(extensions, "GLX_EXT_swap_control");
+ ext.b_GLX_EXT_texture_from_pixmap =
+@@ -145,6 +147,11 @@ void DriverGLX::InitializeExtensionBindings() {
+ GetGLProcAddress("glXCreateContextAttribsARB"));
+ }
+
++ if (ext.b_GLX_ARB_get_proc_address) {
++ fn.glXGetProcAddressARBFn = reinterpret_cast<glXGetProcAddressARBProc>(
++ GetGLProcAddress("glXGetProcAddressARB"));
++ }
++
+ if (ext.b_GLX_SGIX_fbconfig) {
+ fn.glXGetFBConfigFromVisualSGIXFn =
+ reinterpret_cast<glXGetFBConfigFromVisualSGIXProc>(
+@@ -346,6 +353,10 @@ bool GLXApiBase::glXGetMscRateOMLFn(Display* dpy,
+ return driver_->fn.glXGetMscRateOMLFn(dpy, drawable, numerator, denominator);
+ }
+
++__GLXextFuncPtr GLXApiBase::glXGetProcAddressARBFn(const GLubyte* procName) {
++ return driver_->fn.glXGetProcAddressARBFn(procName);
++}
++
+ void GLXApiBase::glXGetSelectedEventFn(Display* dpy,
+ GLXDrawable drawable,
+ unsigned long* mask) {
+@@ -646,6 +657,11 @@ bool TraceGLXApi::glXGetMscRateOMLFn(Display* dpy,
+ return glx_api_->glXGetMscRateOMLFn(dpy, drawable, numerator, denominator);
+ }
+
++__GLXextFuncPtr TraceGLXApi::glXGetProcAddressARBFn(const GLubyte* procName) {
++ TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glXGetProcAddressARB")
++ return glx_api_->glXGetProcAddressARBFn(procName);
++}
++
+ void TraceGLXApi::glXGetSelectedEventFn(Display* dpy,
+ GLXDrawable drawable,
+ unsigned long* mask) {
+@@ -1068,6 +1084,14 @@ bool DebugGLXApi::glXGetMscRateOMLFn(Display* dpy,
+ << static_cast<const void*>(denominator) << ")");
+ bool result =
+ glx_api_->glXGetMscRateOMLFn(dpy, drawable, numerator, denominator);
++ GL_SERVICE_LOG("GL_RESULT: " << result);
++ return result;
++}
++
++__GLXextFuncPtr DebugGLXApi::glXGetProcAddressARBFn(const GLubyte* procName) {
++ GL_SERVICE_LOG("glXGetProcAddressARB"
++ << "(" << static_cast<const void*>(procName) << ")");
++ __GLXextFuncPtr result = glx_api_->glXGetProcAddressARBFn(procName);
+ GL_SERVICE_LOG("GL_RESULT: " << result);
+ return result;
+ }
diff --git a/devel/electron7/files/patch-ui_gl_gl__bindings__autogen__glx.h b/devel/electron7/files/patch-ui_gl_gl__bindings__autogen__glx.h
new file mode 100644
index 000000000000..65f88f7a2673
--- /dev/null
+++ b/devel/electron7/files/patch-ui_gl_gl__bindings__autogen__glx.h
@@ -0,0 +1,43 @@
+--- ui/gl/gl_bindings_autogen_glx.h.orig 2019-12-12 12:41:33 UTC
++++ ui/gl/gl_bindings_autogen_glx.h
+@@ -104,6 +104,8 @@ typedef bool(GL_BINDING_CALL* glXGetMscRateOMLProc)(Di
+ GLXDrawable drawable,
+ int32_t* numerator,
+ int32_t* denominator);
++typedef __GLXextFuncPtr(GL_BINDING_CALL* glXGetProcAddressARBProc)(
++ const GLubyte* procName);
+ typedef void(GL_BINDING_CALL* glXGetSelectedEventProc)(Display* dpy,
+ GLXDrawable drawable,
+ unsigned long* mask);
+@@ -166,6 +168,7 @@ typedef void(GL_BINDING_CALL* glXWaitXProc)(void);
+
+ struct ExtensionsGLX {
+ bool b_GLX_ARB_create_context;
++ bool b_GLX_ARB_get_proc_address;
+ bool b_GLX_EXT_swap_control;
+ bool b_GLX_EXT_texture_from_pixmap;
+ bool b_GLX_MESA_copy_sub_buffer;
+@@ -203,6 +206,7 @@ struct ProcsGLX {
+ glXGetFBConfigFromVisualSGIXProc glXGetFBConfigFromVisualSGIXFn;
+ glXGetFBConfigsProc glXGetFBConfigsFn;
+ glXGetMscRateOMLProc glXGetMscRateOMLFn;
++ glXGetProcAddressARBProc glXGetProcAddressARBFn;
+ glXGetSelectedEventProc glXGetSelectedEventFn;
+ glXGetSyncValuesOMLProc glXGetSyncValuesOMLFn;
+ glXGetVisualFromFBConfigProc glXGetVisualFromFBConfigFn;
+@@ -310,6 +314,7 @@ class GL_EXPORT GLXApi {
+ GLXDrawable drawable,
+ int32_t* numerator,
+ int32_t* denominator) = 0;
++ virtual __GLXextFuncPtr glXGetProcAddressARBFn(const GLubyte* procName) = 0;
+ virtual void glXGetSelectedEventFn(Display* dpy,
+ GLXDrawable drawable,
+ unsigned long* mask) = 0;
+@@ -394,6 +399,7 @@ class GL_EXPORT GLXApi {
+ ::gl::g_current_glx_context->glXGetFBConfigFromVisualSGIXFn
+ #define glXGetFBConfigs ::gl::g_current_glx_context->glXGetFBConfigsFn
+ #define glXGetMscRateOML ::gl::g_current_glx_context->glXGetMscRateOMLFn
++#define glXGetProcAddressARB ::gl::g_current_glx_context->glXGetProcAddressARBFn
+ #define glXGetSelectedEvent ::gl::g_current_glx_context->glXGetSelectedEventFn
+ #define glXGetSyncValuesOML ::gl::g_current_glx_context->glXGetSyncValuesOMLFn
+ #define glXGetVisualFromFBConfig \
diff --git a/devel/electron7/files/patch-ui_gl_gl__fence.cc b/devel/electron7/files/patch-ui_gl_gl__fence.cc
new file mode 100644
index 000000000000..940defa10e60
--- /dev/null
+++ b/devel/electron7/files/patch-ui_gl_gl__fence.cc
@@ -0,0 +1,11 @@
+--- ui/gl/gl_fence.cc.orig 2019-12-12 12:41:33 UTC
++++ ui/gl/gl_fence.cc
+@@ -18,7 +18,7 @@
+ #include "ui/gl/gl_fence_apple.h"
+ #endif
+
+-#if defined(USE_EGL) && defined(OS_POSIX) && !defined(OS_MACOSX)
++#if defined(USE_EGL) && defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_FREEBSD)
+ #define USE_GL_FENCE_ANDROID_NATIVE_FENCE_SYNC
+ #include "ui/gl/gl_fence_android_native_fence_sync.h"
+ #include "ui/gl/gl_surface_egl.h"
diff --git a/devel/electron7/files/patch-ui_gl_gl__surface__glx.cc b/devel/electron7/files/patch-ui_gl_gl__surface__glx.cc
new file mode 100644
index 000000000000..2c7d2cc20714
--- /dev/null
+++ b/devel/electron7/files/patch-ui_gl_gl__surface__glx.cc
@@ -0,0 +1,14 @@
+--- ui/gl/gl_surface_glx.cc.orig 2019-12-12 12:41:33 UTC
++++ ui/gl/gl_surface_glx.cc
+@@ -461,7 +461,10 @@ bool GLSurfaceGLX::InitializeOneOff() {
+ return false;
+ }
+
+- const auto& visual_info = gl::GLVisualPickerGLX::GetInstance()->rgba_visual();
++ const auto& visual_info =
++ ui::IsCompositingManagerPresent()
++ ? gl::GLVisualPickerGLX::GetInstance()->rgba_visual()
++ : gl::GLVisualPickerGLX::GetInstance()->system_visual();
+ g_visual = visual_info.visual;
+ g_depth = visual_info.depth;
+ g_colormap =
diff --git a/devel/electron7/files/patch-ui_gl_sync__control__vsync__provider.cc b/devel/electron7/files/patch-ui_gl_sync__control__vsync__provider.cc
new file mode 100644
index 000000000000..c22f087d93dc
--- /dev/null
+++ b/devel/electron7/files/patch-ui_gl_sync__control__vsync__provider.cc
@@ -0,0 +1,43 @@
+--- ui/gl/sync_control_vsync_provider.cc.orig 2019-12-12 12:41:33 UTC
++++ ui/gl/sync_control_vsync_provider.cc
+@@ -11,7 +11,7 @@
+ #include "base/trace_event/trace_event.h"
+ #include "build/build_config.h"
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // These constants define a reasonable range for a calculated refresh interval.
+ // Calculating refreshes out of this range will be considered a fatal error.
+ const int64_t kMinVsyncIntervalUs = base::Time::kMicrosecondsPerSecond / 400;
+@@ -26,7 +26,7 @@ const double kRelativeIntervalDifferenceThreshold = 0.
+ namespace gl {
+
+ SyncControlVSyncProvider::SyncControlVSyncProvider() : gfx::VSyncProvider() {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // On platforms where we can't get an accurate reading on the refresh
+ // rate we fall back to the assumption that we're displaying 60 frames
+ // per second.
+@@ -48,7 +48,7 @@ bool SyncControlVSyncProvider::GetVSyncParametersIfAva
+ base::TimeTicks* timebase_out,
+ base::TimeDelta* interval_out) {
+ TRACE_EVENT0("gpu", "SyncControlVSyncProvider::GetVSyncParameters");
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // The actual clock used for the system time returned by glXGetSyncValuesOML
+ // is unspecified. In practice, the clock used is likely to be either
+ // CLOCK_REALTIME or CLOCK_MONOTONIC, so we compare the returned time to the
+@@ -156,11 +156,11 @@ bool SyncControlVSyncProvider::GetVSyncParametersIfAva
+ return true;
+ #else
+ return false;
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+ }
+
+ bool SyncControlVSyncProvider::SupportGetVSyncParametersIfAvailable() const {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ return true;
+ #else
+ return false;
diff --git a/devel/electron7/files/patch-ui_gl_sync__control__vsync__provider.h b/devel/electron7/files/patch-ui_gl_sync__control__vsync__provider.h
new file mode 100644
index 000000000000..d30d8348da19
--- /dev/null
+++ b/devel/electron7/files/patch-ui_gl_sync__control__vsync__provider.h
@@ -0,0 +1,34 @@
+--- ui/gl/sync_control_vsync_provider.h.orig 2019-12-12 12:41:33 UTC
++++ ui/gl/sync_control_vsync_provider.h
+@@ -26,11 +26,11 @@ class SyncControlVSyncProvider : public gfx::VSyncProv
+ bool SupportGetVSyncParametersIfAvailable() const override;
+
+ static constexpr bool IsSupported() {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ return true;
+ #else
+ return false;
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+ }
+
+ protected:
+@@ -41,7 +41,7 @@ class SyncControlVSyncProvider : public gfx::VSyncProv
+ virtual bool GetMscRate(int32_t* numerator, int32_t* denominator) = 0;
+
+ private:
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ base::TimeTicks last_timebase_;
+ uint64_t last_media_stream_counter_ = 0;
+ base::TimeDelta last_good_interval_;
+@@ -52,7 +52,7 @@ class SyncControlVSyncProvider : public gfx::VSyncProv
+ // from configuration change (monitor reconfiguration, moving windows
+ // between monitors, suspend and resume, etc.).
+ base::queue<base::TimeDelta> last_computed_intervals_;
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+
+ DISALLOW_COPY_AND_ASSIGN(SyncControlVSyncProvider);
+ };
diff --git a/devel/electron7/files/patch-ui_message__center_public_cpp_message__center__constants.h b/devel/electron7/files/patch-ui_message__center_public_cpp_message__center__constants.h
new file mode 100644
index 000000000000..3d41512f5e73
--- /dev/null
+++ b/devel/electron7/files/patch-ui_message__center_public_cpp_message__center__constants.h
@@ -0,0 +1,11 @@
+--- ui/message_center/public/cpp/message_center_constants.h.orig 2019-12-12 12:41:33 UTC
++++ ui/message_center/public/cpp/message_center_constants.h
+@@ -105,7 +105,7 @@ const int kButtonHorizontalPadding = 16; // In DIPs.
+ const int kButtonIconTopPadding = 11; // In DIPs.
+ const int kButtonIconToTitlePadding = 16; // In DIPs.
+
+-#if !defined(OS_LINUX) || defined(USE_AURA)
++#if (!defined(OS_LINUX) && !defined(OS_BSD)) || defined(USE_AURA)
+ constexpr SkColor kButtonSeparatorColor = SkColorSetRGB(234, 234, 234);
+ constexpr SkColor kHoveredButtonBackgroundColor = SkColorSetRGB(243, 243, 243);
+ #endif
diff --git a/devel/electron7/files/patch-ui_message__center_views_message__popup__view.cc b/devel/electron7/files/patch-ui_message__center_views_message__popup__view.cc
new file mode 100644
index 000000000000..3acd3c58c215
--- /dev/null
+++ b/devel/electron7/files/patch-ui_message__center_views_message__popup__view.cc
@@ -0,0 +1,11 @@
+--- ui/message_center/views/message_popup_view.cc.orig 2019-12-12 12:41:33 UTC
++++ ui/message_center/views/message_popup_view.cc
+@@ -106,7 +106,7 @@ void MessagePopupView::AutoCollapse() {
+ void MessagePopupView::Show() {
+ views::Widget::InitParams params(views::Widget::InitParams::TYPE_POPUP);
+ params.z_order = ui::ZOrderLevel::kFloatingWindow;
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ // Make the widget explicitly activatable as TYPE_POPUP is not activatable by
+ // default but we need focus for the inline reply textarea.
+ params.activatable = views::Widget::InitParams::ACTIVATABLE_YES;
diff --git a/devel/electron7/files/patch-ui_native__theme_native__theme.h b/devel/electron7/files/patch-ui_native__theme_native__theme.h
new file mode 100644
index 000000000000..ffbdbdf79e6a
--- /dev/null
+++ b/devel/electron7/files/patch-ui_native__theme_native__theme.h
@@ -0,0 +1,11 @@
+--- ui/native_theme/native_theme.h.orig 2019-12-16 13:32:59 UTC
++++ ui/native_theme/native_theme.h
+@@ -49,7 +49,7 @@ class NATIVE_THEME_EXPORT NativeTheme {
+ // The part to be painted / sized.
+ enum Part {
+ kCheckbox,
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ kFrameTopArea,
+ #endif
+ kInnerSpinButton,
diff --git a/devel/electron7/files/patch-ui_native__theme_native__theme__base.cc b/devel/electron7/files/patch-ui_native__theme_native__theme__base.cc
new file mode 100644
index 000000000000..f6863af54c40
--- /dev/null
+++ b/devel/electron7/files/patch-ui_native__theme_native__theme__base.cc
@@ -0,0 +1,11 @@
+--- ui/native_theme/native_theme_base.cc.orig 2019-12-12 12:41:33 UTC
++++ ui/native_theme/native_theme_base.cc
+@@ -177,7 +177,7 @@ void NativeThemeBase::Paint(cc::PaintCanvas* canvas,
+ case kCheckbox:
+ PaintCheckbox(canvas, state, rect, extra.button, color_scheme);
+ break;
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ case kFrameTopArea:
+ PaintFrameTopArea(canvas, state, rect, extra.frame_top_area,
+ color_scheme);
diff --git a/devel/electron7/files/patch-ui_platform__window_platform__window__delegate.h b/devel/electron7/files/patch-ui_platform__window_platform__window__delegate.h
new file mode 100644
index 000000000000..eed22a4cd59e
--- /dev/null
+++ b/devel/electron7/files/patch-ui_platform__window_platform__window__delegate.h
@@ -0,0 +1,20 @@
+--- ui/platform_window/platform_window_delegate.h.orig 2019-12-12 12:41:33 UTC
++++ ui/platform_window/platform_window_delegate.h
+@@ -9,7 +9,7 @@
+
+ // By default, PlatformWindowDelegateBase is used. However, different platforms
+ // should specify what delegate they would like to use if needed.
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include "ui/platform_window/platform_window_delegate_linux.h"
+ #else
+ #include "ui/platform_window/platform_window_delegate_base.h"
+@@ -17,7 +17,7 @@
+
+ namespace ui {
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ using PlatformWindowDelegate = PlatformWindowDelegateLinux;
+ #else
+ using PlatformWindowDelegate = PlatformWindowDelegateBase;
diff --git a/devel/electron7/files/patch-ui_platform__window_platform__window__init__properties.h b/devel/electron7/files/patch-ui_platform__window_platform__window__init__properties.h
new file mode 100644
index 000000000000..ef081500be7d
--- /dev/null
+++ b/devel/electron7/files/patch-ui_platform__window_platform__window__init__properties.h
@@ -0,0 +1,11 @@
+--- ui/platform_window/platform_window_init_properties.h.orig 2019-12-12 12:41:33 UTC
++++ ui/platform_window/platform_window_init_properties.h
+@@ -73,7 +73,7 @@ struct PlatformWindowInitProperties {
+ bool remove_standard_frame = false;
+ std::string workspace;
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ bool prefer_dark_theme = false;
+ gfx::ImageSkia* icon = nullptr;
+ base::Optional<int> background_color;
diff --git a/devel/electron7/files/patch-ui_strings_app__locale__settings.grd b/devel/electron7/files/patch-ui_strings_app__locale__settings.grd
new file mode 100644
index 000000000000..5dbd62a2b76b
--- /dev/null
+++ b/devel/electron7/files/patch-ui_strings_app__locale__settings.grd
@@ -0,0 +1,11 @@
+--- ui/strings/app_locale_settings.grd.orig 2019-12-12 12:41:33 UTC
++++ ui/strings/app_locale_settings.grd
+@@ -187,7 +187,7 @@
+ 75%
+ </message>
+ </if>
+- <if expr="(is_linux or is_android or is_bsd) and not chromeos">
++ <if expr="is_posix and not chromeos">
+ <!-- The font used in Web UI (e.g. History). Note that these are only
+ backups. We try to use the system font if possible. -->
+ <message name="IDS_WEB_FONT_FAMILY" use_name_for_id="true">
diff --git a/devel/electron7/files/patch-ui_views_bubble_bubble__dialog__delegate__view.cc b/devel/electron7/files/patch-ui_views_bubble_bubble__dialog__delegate__view.cc
new file mode 100644
index 000000000000..74b5870d34f3
--- /dev/null
+++ b/devel/electron7/files/patch-ui_views_bubble_bubble__dialog__delegate__view.cc
@@ -0,0 +1,11 @@
+--- ui/views/bubble/bubble_dialog_delegate_view.cc.orig 2019-12-12 12:41:34 UTC
++++ ui/views/bubble/bubble_dialog_delegate_view.cc
+@@ -135,7 +135,7 @@ Widget* BubbleDialogDelegateView::CreateBubble(
+ bubble_delegate->SetAnchorView(bubble_delegate->GetAnchorView());
+ Widget* bubble_widget = CreateBubbleWidget(bubble_delegate);
+
+-#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_MACOSX)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_MACOSX) || defined(OS_BSD)
+ // Linux clips bubble windows that extend outside their parent window bounds.
+ // Mac never adjusts.
+ bubble_delegate->set_adjust_if_offscreen(false);
diff --git a/devel/electron7/files/patch-ui_views_controls_label.cc b/devel/electron7/files/patch-ui_views_controls_label.cc
new file mode 100644
index 000000000000..3c605b50a36f
--- /dev/null
+++ b/devel/electron7/files/patch-ui_views_controls_label.cc
@@ -0,0 +1,20 @@
+--- ui/views/controls/label.cc.orig 2019-12-12 12:41:34 UTC
++++ ui/views/controls/label.cc
+@@ -691,7 +691,7 @@ bool Label::OnMousePressed(const ui::MouseEvent& event
+ GetFocusManager()->SetFocusedView(this);
+ }
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ if (event.IsOnlyMiddleMouseButton() && GetFocusManager() && !had_focus)
+ GetFocusManager()->SetFocusedView(this);
+ #endif
+@@ -876,7 +876,7 @@ bool Label::PasteSelectionClipboard() {
+ }
+
+ void Label::UpdateSelectionClipboard() {
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ if (!GetObscured()) {
+ ui::ScopedClipboardWriter(ui::ClipboardBuffer::kSelection)
+ .WriteText(GetSelectedText());
diff --git a/devel/electron7/files/patch-ui_views_controls_textfield_textfield.cc b/devel/electron7/files/patch-ui_views_controls_textfield_textfield.cc
new file mode 100644
index 000000000000..b60805ed368c
--- /dev/null
+++ b/devel/electron7/files/patch-ui_views_controls_textfield_textfield.cc
@@ -0,0 +1,73 @@
+--- ui/views/controls/textfield/textfield.cc.orig 2019-12-12 12:41:35 UTC
++++ ui/views/controls/textfield/textfield.cc
+@@ -60,7 +60,7 @@
+ #include "base/win/win_util.h"
+ #endif
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ #include "base/strings/utf_string_conversions.h"
+ #include "ui/base/ime/linux/text_edit_command_auralinux.h"
+ #include "ui/base/ime/linux/text_edit_key_bindings_delegate_auralinux.h"
+@@ -178,14 +178,14 @@ ui::TextEditCommand GetCommandForKeyEvent(const ui::Ke
+ case ui::VKEY_BACK:
+ if (!control)
+ return ui::TextEditCommand::DELETE_BACKWARD;
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Only erase by line break on Linux and ChromeOS.
+ if (shift)
+ return ui::TextEditCommand::DELETE_TO_BEGINNING_OF_LINE;
+ #endif
+ return ui::TextEditCommand::DELETE_WORD_BACKWARD;
+ case ui::VKEY_DELETE:
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Only erase by line break on Linux and ChromeOS.
+ if (shift && control)
+ return ui::TextEditCommand::DELETE_TO_END_OF_LINE;
+@@ -253,7 +253,7 @@ bool IsControlKeyModifier(int flags) {
+ // Control-modified key combination, but we cannot extend it to other platforms
+ // as Control has different meanings and behaviors.
+ // https://crrev.com/2580483002/#msg46
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ return flags & ui::EF_CONTROL_DOWN;
+ #else
+ return false;
+@@ -725,7 +725,7 @@ bool Textfield::OnMousePressed(const ui::MouseEvent& e
+ #endif
+ }
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ if (!handled && !had_focus && event.IsOnlyMiddleMouseButton())
+ RequestFocusWithPointer(ui::EventPointerType::POINTER_TYPE_MOUSE);
+ #endif
+@@ -771,7 +771,7 @@ bool Textfield::OnKeyPressed(const ui::KeyEvent& event
+ if (!textfield)
+ return handled;
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ ui::TextEditKeyBindingsDelegateAuraLinux* delegate =
+ ui::GetTextEditKeyBindingsDelegate();
+ std::vector<ui::TextEditCommandAuraLinux> commands;
+@@ -918,7 +918,7 @@ void Textfield::AboutToRequestFocusFromTabTraversal(bo
+ }
+
+ bool Textfield::SkipDefaultKeyEventProcessing(const ui::KeyEvent& event) {
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ // Skip any accelerator handling that conflicts with custom keybindings.
+ ui::TextEditKeyBindingsDelegateAuraLinux* delegate =
+ ui::GetTextEditKeyBindingsDelegate();
+@@ -2170,7 +2170,7 @@ bool Textfield::PasteSelectionClipboard() {
+ }
+
+ void Textfield::UpdateSelectionClipboard() {
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ if (text_input_type_ != ui::TEXT_INPUT_TYPE_PASSWORD) {
+ ui::ScopedClipboardWriter(ui::ClipboardBuffer::kSelection)
+ .WriteText(GetSelectedText());
diff --git a/devel/electron7/files/patch-ui_views_corewm_tooltip__aura.cc b/devel/electron7/files/patch-ui_views_corewm_tooltip__aura.cc
new file mode 100644
index 000000000000..1dbfc5e92be4
--- /dev/null
+++ b/devel/electron7/files/patch-ui_views_corewm_tooltip__aura.cc
@@ -0,0 +1,11 @@
+--- ui/views/corewm/tooltip_aura.cc.orig 2019-12-12 12:41:35 UTC
++++ ui/views/corewm/tooltip_aura.cc
+@@ -42,7 +42,7 @@ constexpr int kVerticalPaddingBottom = 5;
+
+ // TODO(varkha): Update if native widget can be transparent on Linux.
+ bool CanUseTranslucentTooltipWidget() {
+-#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_WIN)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_WIN) || defined(OS_BSD)
+ return false;
+ #else
+ return true;
diff --git a/devel/electron7/files/patch-ui_views_examples_widget__example.cc b/devel/electron7/files/patch-ui_views_examples_widget__example.cc
new file mode 100644
index 000000000000..7ab749b1fd3c
--- /dev/null
+++ b/devel/electron7/files/patch-ui_views_examples_widget__example.cc
@@ -0,0 +1,11 @@
+--- ui/views/examples/widget_example.cc.orig 2019-12-12 12:41:35 UTC
++++ ui/views/examples/widget_example.cc
+@@ -79,7 +79,7 @@ void WidgetExample::CreateExampleView(View* container)
+ BuildButton(container, "Popup widget", POPUP);
+ BuildButton(container, "Dialog widget", DIALOG);
+ BuildButton(container, "Modal Dialog", MODAL_DIALOG);
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Windows does not support TYPE_CONTROL top-level widgets.
+ BuildButton(container, "Child widget", CHILD);
+ #endif
diff --git a/devel/electron7/files/patch-ui_views_selection__controller.cc b/devel/electron7/files/patch-ui_views_selection__controller.cc
new file mode 100644
index 000000000000..ca5b047efbad
--- /dev/null
+++ b/devel/electron7/files/patch-ui_views_selection__controller.cc
@@ -0,0 +1,11 @@
+--- ui/views/selection_controller.cc.orig 2019-12-12 12:41:35 UTC
++++ ui/views/selection_controller.cc
+@@ -21,7 +21,7 @@ SelectionController::SelectionController(SelectionCont
+ delegate_(delegate),
+ handles_selection_clipboard_(false) {
+ // On Linux, update the selection clipboard on a text selection.
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ set_handles_selection_clipboard(true);
+ #endif
+
diff --git a/devel/electron7/files/patch-ui_views_style_platform__style.cc b/devel/electron7/files/patch-ui_views_style_platform__style.cc
new file mode 100644
index 000000000000..6bb6078457e0
--- /dev/null
+++ b/devel/electron7/files/patch-ui_views_style_platform__style.cc
@@ -0,0 +1,11 @@
+--- ui/views/style/platform_style.cc.orig 2019-12-12 12:41:35 UTC
++++ ui/views/style/platform_style.cc
+@@ -17,7 +17,7 @@
+
+ #if defined(OS_CHROMEOS)
+ #include "ui/views/controls/scrollbar/overlay_scroll_bar.h"
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ #define DESKTOP_LINUX
+ #endif
+
diff --git a/devel/electron7/files/patch-ui_views_views__delegate.cc b/devel/electron7/files/patch-ui_views_views__delegate.cc
new file mode 100644
index 000000000000..40b97fe478dd
--- /dev/null
+++ b/devel/electron7/files/patch-ui_views_views__delegate.cc
@@ -0,0 +1,11 @@
+--- ui/views/views_delegate.cc.orig 2019-12-12 12:41:35 UTC
++++ ui/views/views_delegate.cc
+@@ -85,7 +85,7 @@ HICON ViewsDelegate::GetSmallWindowIcon() const {
+ bool ViewsDelegate::IsWindowInMetro(gfx::NativeWindow window) const {
+ return false;
+ }
+-#elif defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#elif (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_FREEBSD)
+ gfx::ImageSkia* ViewsDelegate::GetDefaultWindowIcon() const {
+ return nullptr;
+ }
diff --git a/devel/electron7/files/patch-ui_views_views__delegate.h b/devel/electron7/files/patch-ui_views_views__delegate.h
new file mode 100644
index 000000000000..b5e396ae5290
--- /dev/null
+++ b/devel/electron7/files/patch-ui_views_views__delegate.h
@@ -0,0 +1,11 @@
+--- ui/views/views_delegate.h.orig 2019-12-12 12:41:35 UTC
++++ ui/views/views_delegate.h
+@@ -130,7 +130,7 @@ class VIEWS_EXPORT ViewsDelegate {
+ // Returns true if the window passed in is in the Windows 8 metro
+ // environment.
+ virtual bool IsWindowInMetro(gfx::NativeWindow window) const;
+-#elif defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#elif defined(OS_LINUX) && !defined(OS_CHROMEOS) || defined(OS_FREEBSD)
+ virtual gfx::ImageSkia* GetDefaultWindowIcon() const;
+ #endif
+
diff --git a/devel/electron7/files/patch-ui_views_widget_desktop__aura_desktop__window__tree__host__platform.cc b/devel/electron7/files/patch-ui_views_widget_desktop__aura_desktop__window__tree__host__platform.cc
new file mode 100644
index 000000000000..0ae9b122b2c8
--- /dev/null
+++ b/devel/electron7/files/patch-ui_views_widget_desktop__aura_desktop__window__tree__host__platform.cc
@@ -0,0 +1,20 @@
+--- ui/views/widget/desktop_aura/desktop_window_tree_host_platform.cc.orig 2019-12-16 13:32:59 UTC
++++ ui/views/widget/desktop_aura/desktop_window_tree_host_platform.cc
+@@ -143,7 +143,7 @@ void DesktopWindowTreeHostPlatform::OnNativeWidgetCrea
+ Widget::InitParams::TYPE_WINDOW &&
+ !params.remove_standard_frame);
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Setup a non_client_window_event_filter, which handles resize/move, double
+ // click and other events.
+ DCHECK(!non_client_window_event_filter_);
+@@ -699,7 +699,7 @@ void DesktopWindowTreeHostPlatform::Relayout() {
+ }
+
+ void DesktopWindowTreeHostPlatform::RemoveNonClientEventFilter() {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ if (!non_client_window_event_filter_)
+ return;
+
diff --git a/devel/electron7/files/patch-ui_views_widget_desktop__aura_desktop__window__tree__host__platform.h b/devel/electron7/files/patch-ui_views_widget_desktop__aura_desktop__window__tree__host__platform.h
new file mode 100644
index 000000000000..2500bbd0a8a7
--- /dev/null
+++ b/devel/electron7/files/patch-ui_views_widget_desktop__aura_desktop__window__tree__host__platform.h
@@ -0,0 +1,11 @@
+--- ui/views/widget/desktop_aura/desktop_window_tree_host_platform.h.orig 2019-12-16 13:32:59 UTC
++++ ui/views/widget/desktop_aura/desktop_window_tree_host_platform.h
+@@ -146,7 +146,7 @@ class VIEWS_EXPORT DesktopWindowTreeHostPlatform
+ DesktopWindowTreeHostPlatform* window_parent_ = nullptr;
+ std::set<DesktopWindowTreeHostPlatform*> window_children_;
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // A handler for events intended for non client area.
+ std::unique_ptr<WindowEventFilter> non_client_window_event_filter_;
+ #endif
diff --git a/devel/electron7/files/patch-ui_views_window_custom__frame__view.cc b/devel/electron7/files/patch-ui_views_window_custom__frame__view.cc
new file mode 100644
index 000000000000..9f0e140a6f6a
--- /dev/null
+++ b/devel/electron7/files/patch-ui_views_window_custom__frame__view.cc
@@ -0,0 +1,11 @@
+--- ui/views/window/custom_frame_view.cc.orig 2019-12-12 12:41:35 UTC
++++ ui/views/window/custom_frame_view.cc
+@@ -287,7 +287,7 @@ int CustomFrameView::NonClientTopBorderHeight() const
+ int CustomFrameView::CaptionButtonY() const {
+ // Maximized buttons start at window top so that even if their images aren't
+ // drawn flush with the screen edge, they still obey Fitts' Law.
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if defined(OS_LINUX) && !defined(OS_CHROMEOS) || defined(OS_BSD)
+ return FrameBorderThickness();
+ #else
+ return frame_->IsMaximized() ? FrameBorderThickness() : kFrameShadowThickness;
diff --git a/devel/electron7/files/patch-ui_views_window_dialog__delegate.cc b/devel/electron7/files/patch-ui_views_window_dialog__delegate.cc
new file mode 100644
index 000000000000..d63c8e0bdb2d
--- /dev/null
+++ b/devel/electron7/files/patch-ui_views_window_dialog__delegate.cc
@@ -0,0 +1,11 @@
+--- ui/views/window/dialog_delegate.cc.orig 2019-12-12 12:41:35 UTC
++++ ui/views/window/dialog_delegate.cc
+@@ -53,7 +53,7 @@ Widget* DialogDelegate::CreateDialogWidget(WidgetDeleg
+
+ // static
+ bool DialogDelegate::CanSupportCustomFrame(gfx::NativeView parent) {
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ // The new style doesn't support unparented dialogs on Linux desktop.
+ return parent != nullptr;
+ #elif defined(OS_WIN)
diff --git a/devel/electron7/files/patch-ui_views_window_frame__background.cc b/devel/electron7/files/patch-ui_views_window_frame__background.cc
new file mode 100644
index 000000000000..d3b6a0c007f7
--- /dev/null
+++ b/devel/electron7/files/patch-ui_views_window_frame__background.cc
@@ -0,0 +1,11 @@
+--- ui/views/window/frame_background.cc.orig 2019-12-12 12:41:35 UTC
++++ ui/views/window/frame_background.cc
+@@ -106,7 +106,7 @@ void FrameBackground::PaintMaximized(gfx::Canvas* canv
+ const View* view) const {
+ // Fill the top with the frame color first so we have a constant background
+ // for areas not covered by the theme image.
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ auto* native_theme = view->GetNativeTheme();
+ ui::NativeTheme::ExtraParams params;
+ params.frame_top_area.use_custom_frame = use_custom_frame_;
diff --git a/devel/electron7/files/patch-ui_webui_resources_js_cr.js b/devel/electron7/files/patch-ui_webui_resources_js_cr.js
new file mode 100644
index 000000000000..457a55e00eb9
--- /dev/null
+++ b/devel/electron7/files/patch-ui_webui_resources_js_cr.js
@@ -0,0 +1,14 @@
+--- ui/webui/resources/js/cr.js.orig 2019-12-12 12:41:35 UTC
++++ ui/webui/resources/js/cr.js
+@@ -436,6 +436,11 @@ var cr = cr || function(global) {
+ get doc() {
+ return document;
+ },
++
++ /** Whether this is on *BSD. */
++ get isBSD() {
++ return /BSD/.test(navigator.userAgent);
++ },
+
+ /** Whether we are using a Mac or not. */
+ get isMac() {
diff --git a/devel/electron7/files/patch-ui_webui_resources_js_icon.js b/devel/electron7/files/patch-ui_webui_resources_js_icon.js
new file mode 100644
index 000000000000..2cedab81d0b9
--- /dev/null
+++ b/devel/electron7/files/patch-ui_webui_resources_js_icon.js
@@ -0,0 +1,11 @@
+--- ui/webui/resources/js/icon.js.orig 2019-12-12 12:41:35 UTC
++++ ui/webui/resources/js/icon.js
+@@ -16,7 +16,7 @@ cr.define('cr.icon', function() {
+ // supports SCALE_FACTOR_100P on all non-iOS platforms.
+ supportedScaleFactors.push(1);
+ }
+- if (cr.isMac || cr.isChromeOS || cr.isWindows || cr.isLinux) {
++ if (cr.isMac || cr.isChromeOS || cr.isWindows || cr.isLinux || cr.isBSD) {
+ // All desktop platforms support zooming which also updates the renderer's
+ // device scale factors (a.k.a devicePixelRatio), and these platforms have
+ // high DPI assets for 2x. Let the renderer pick the closest image for
diff --git a/devel/electron7/files/patch-v8_BUILD.gn b/devel/electron7/files/patch-v8_BUILD.gn
new file mode 100644
index 000000000000..c476c1943f95
--- /dev/null
+++ b/devel/electron7/files/patch-v8_BUILD.gn
@@ -0,0 +1,32 @@
+--- v8/BUILD.gn.orig 2019-12-16 13:32:59 UTC
++++ v8/BUILD.gn
+@@ -3592,7 +3592,7 @@ v8_component("v8_libbase") {
+ }
+ }
+
+- if (is_linux) {
++ if (is_linux && !is_bsd) {
+ sources += [
+ "src/base/debug/stack_trace_posix.cc",
+ "src/base/platform/platform-linux.cc",
+@@ -3612,6 +3612,12 @@ v8_component("v8_libbase") {
+ "dl",
+ "rt",
+ ]
++ } else if (is_bsd) {
++ sources += [
++ "src/base/debug/stack_trace_posix.cc",
++ "src/base/platform/platform-freebsd.cc",
++ ]
++ libs = [ "rt", "execinfo" ]
+ } else if (is_android) {
+ if (current_toolchain == host_toolchain) {
+ libs = [
+@@ -3862,6 +3868,7 @@ if (v8_use_snapshot && current_toolchain == v8_snapsho
+ "src/snapshot/embedded/platform-embedded-file-writer-win.h",
+ "src/snapshot/mksnapshot.cc",
+ ]
++ libs = ["execinfo"]
+
+ configs = [ ":internal_config" ]
+
diff --git a/devel/electron7/files/patch-v8_src_api_api.cc b/devel/electron7/files/patch-v8_src_api_api.cc
new file mode 100644
index 000000000000..2b6e04d44cc5
--- /dev/null
+++ b/devel/electron7/files/patch-v8_src_api_api.cc
@@ -0,0 +1,20 @@
+--- v8/src/api/api.cc.orig 2019-12-16 13:32:59 UTC
++++ v8/src/api/api.cc
+@@ -111,7 +111,7 @@
+ #include "src/wasm/wasm-result.h"
+ #include "src/wasm/wasm-serialization.h"
+
+-#if V8_OS_LINUX || V8_OS_MACOSX
++#if V8_OS_LINUX || V8_OS_MACOSX || V8_OS_OPENBSD || V8_OS_FREEBSD
+ #include <signal.h>
+ #include "include/v8-wasm-trap-handler-posix.h"
+ #include "src/trap-handler/handler-inside-posix.h"
+@@ -5645,7 +5645,7 @@ bool v8::V8::Initialize() {
+ return true;
+ }
+
+-#if V8_OS_LINUX || V8_OS_MACOSX
++#if V8_OS_LINUX || V8_OS_MACOSX || V8_OS_OPENBSD || V8_OS_FREEBSD
+ bool TryHandleWebAssemblyTrapPosix(int sig_code, siginfo_t* info,
+ void* context) {
+ #if V8_TARGET_ARCH_X64 && !V8_OS_ANDROID
diff --git a/devel/electron7/files/patch-v8_src_base_cpu.cc b/devel/electron7/files/patch-v8_src_base_cpu.cc
new file mode 100644
index 000000000000..47b503fc50c9
--- /dev/null
+++ b/devel/electron7/files/patch-v8_src_base_cpu.cc
@@ -0,0 +1,18 @@
+--- v8/src/base/cpu.cc.orig 2019-12-12 12:51:12 UTC
++++ v8/src/base/cpu.cc
+@@ -424,6 +424,7 @@ CPU::CPU()
+
+ #if V8_OS_LINUX
+
++#if V8_OS_LINUX
+ CPUInfo cpu_info;
+
+ // Extract implementor from the "CPU implementer" field.
+@@ -457,6 +458,7 @@ CPU::CPU()
+ }
+ delete[] part;
+ }
++#endif
+
+ // Extract architecture from the "CPU Architecture" field.
+ // The list is well-known, unlike the the output of
diff --git a/devel/electron7/files/patch-v8_src_base_platform_platform-posix.cc b/devel/electron7/files/patch-v8_src_base_platform_platform-posix.cc
new file mode 100644
index 000000000000..55e51d5bfcff
--- /dev/null
+++ b/devel/electron7/files/patch-v8_src_base_platform_platform-posix.cc
@@ -0,0 +1,24 @@
+--- v8/src/base/platform/platform-posix.cc.orig 2019-12-12 12:51:12 UTC
++++ v8/src/base/platform/platform-posix.cc
+@@ -382,7 +382,7 @@ bool OS::DiscardSystemPages(void* address, size_t size
+
+ // static
+ bool OS::HasLazyCommits() {
+-#if V8_OS_AIX || V8_OS_LINUX || V8_OS_MACOSX
++#if V8_OS_AIX || V8_OS_LINUX || V8_OS_MACOSX || V8_OS_FREEBSD
+ return true;
+ #else
+ // TODO(bbudge) Return true for all POSIX platforms.
+@@ -513,6 +513,12 @@ int OS::GetCurrentThreadId() {
+ return static_cast<int>(syscall(__NR_gettid));
+ #elif V8_OS_ANDROID
+ return static_cast<int>(gettid());
++#elif V8_OS_DRAGONFLYBSD || defined(__DragonFly__)
++ return static_cast<int>(lwp_gettid());
++#elif V8_OS_FREEBSD
++ return static_cast<int>(pthread_getthreadid_np());
++#elif V8_OS_NETBSD
++ return static_cast<int>(_lwp_self());
+ #elif V8_OS_AIX
+ return static_cast<int>(thread_self());
+ #elif V8_OS_FUCHSIA
diff --git a/devel/electron7/files/patch-v8_src_trap-handler_handler-inside-posix.cc b/devel/electron7/files/patch-v8_src_trap-handler_handler-inside-posix.cc
new file mode 100644
index 000000000000..115fcb98328a
--- /dev/null
+++ b/devel/electron7/files/patch-v8_src_trap-handler_handler-inside-posix.cc
@@ -0,0 +1,20 @@
+--- v8/src/trap-handler/handler-inside-posix.cc.orig 2019-12-12 12:51:13 UTC
++++ v8/src/trap-handler/handler-inside-posix.cc
+@@ -27,7 +27,7 @@
+
+ #include <signal.h>
+
+-#ifdef V8_OS_LINUX
++#if defined(V8_OS_LINUX) || defined(V8_OS_FREEBSD)
+ #include <ucontext.h>
+ #elif V8_OS_MACOSX
+ #include <sys/ucontext.h>
+@@ -112,6 +112,8 @@ bool TryHandleSignal(int signum, siginfo_t* info, void
+ auto* context_rip = &uc->uc_mcontext.gregs[REG_RIP];
+ #elif V8_OS_MACOSX
+ auto* context_rip = &uc->uc_mcontext->__ss.__rip;
++#elif V8_OS_FREEBSD
++ auto* context_rip = &uc->uc_mcontext.mc_rip;
+ #else
+ #error Unsupported platform
+ #endif
diff --git a/devel/electron7/files/patch-v8_src_trap-handler_handler-inside-posix.h b/devel/electron7/files/patch-v8_src_trap-handler_handler-inside-posix.h
new file mode 100644
index 000000000000..98de30648e8b
--- /dev/null
+++ b/devel/electron7/files/patch-v8_src_trap-handler_handler-inside-posix.h
@@ -0,0 +1,11 @@
+--- v8/src/trap-handler/handler-inside-posix.h.orig 2019-12-12 12:51:13 UTC
++++ v8/src/trap-handler/handler-inside-posix.h
+@@ -12,7 +12,7 @@ namespace v8 {
+ namespace internal {
+ namespace trap_handler {
+
+-#if V8_OS_LINUX
++#if defined(V8_OS_LINUX) || defined(V8_OS_FREEBSD)
+ constexpr int kOobSignal = SIGSEGV;
+ #elif V8_OS_MACOSX
+ constexpr int kOobSignal = SIGBUS;
diff --git a/devel/electron7/files/patch-v8_src_trap-handler_trap-handler.h b/devel/electron7/files/patch-v8_src_trap-handler_trap-handler.h
new file mode 100644
index 000000000000..1a7e61db8c14
--- /dev/null
+++ b/devel/electron7/files/patch-v8_src_trap-handler_trap-handler.h
@@ -0,0 +1,11 @@
+--- v8/src/trap-handler/trap-handler.h.orig 2019-12-12 12:51:13 UTC
++++ v8/src/trap-handler/trap-handler.h
+@@ -23,6 +23,8 @@ namespace trap_handler {
+ #define V8_TRAP_HANDLER_SUPPORTED true
+ #elif V8_TARGET_ARCH_X64 && V8_OS_MACOSX
+ #define V8_TRAP_HANDLER_SUPPORTED true
++#elif V8_TARGET_ARCH_X64 && V8_OS_FREEBSD
++#define V8_TRAP_HANDLER_SUPPORTED true
+ #else
+ #define V8_TRAP_HANDLER_SUPPORTED false
+ #endif
diff --git a/devel/electron7/files/patch-weblayer_browser_browser__main__parts__impl.cc b/devel/electron7/files/patch-weblayer_browser_browser__main__parts__impl.cc
new file mode 100644
index 000000000000..f2da67a7eadc
--- /dev/null
+++ b/devel/electron7/files/patch-weblayer_browser_browser__main__parts__impl.cc
@@ -0,0 +1,20 @@
+--- weblayer/browser/browser_main_parts_impl.cc.orig 2019-12-12 12:41:35 UTC
++++ weblayer/browser/browser_main_parts_impl.cc
+@@ -34,7 +34,7 @@
+ #if defined(USE_AURA) && defined(USE_X11)
+ #include "ui/events/devices/x11/touch_factory_x11.h" // nogncheck
+ #endif
+-#if !defined(OS_CHROMEOS) && defined(USE_AURA) && defined(OS_LINUX)
++#if !defined(OS_CHROMEOS) && defined(USE_AURA) && (defined(OS_LINUX) || defined(OS_BSD))
+ #include "ui/base/ime/init/input_method_initializer.h"
+ #endif
+
+@@ -70,7 +70,7 @@ int BrowserMainPartsImpl::PreEarlyInitialization() {
+ #if defined(USE_X11)
+ ui::SetDefaultX11ErrorHandlers();
+ #endif
+-#if defined(USE_AURA) && defined(OS_LINUX)
++#if defined(USE_AURA) && (defined(OS_LINUX) || defined(OS_BSD))
+ ui::InitializeInputMethodForTesting();
+ #endif
+ #if defined(OS_ANDROID)
diff --git a/devel/electron7/files/patch-weblayer_shell_app_shell__main.cc b/devel/electron7/files/patch-weblayer_shell_app_shell__main.cc
new file mode 100644
index 000000000000..424c888bdd4c
--- /dev/null
+++ b/devel/electron7/files/patch-weblayer_shell_app_shell__main.cc
@@ -0,0 +1,20 @@
+--- weblayer/shell/app/shell_main.cc.orig 2019-12-12 12:41:35 UTC
++++ weblayer/shell/app/shell_main.cc
+@@ -18,7 +18,7 @@
+
+ #if defined(OS_WIN)
+ #include "base/base_paths_win.h"
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ #include "base/nix/xdg_util.h"
+ #endif
+
+@@ -65,7 +65,7 @@ class MainDelegateImpl : public weblayer::MainDelegate
+ #if defined(OS_WIN)
+ CHECK(base::PathService::Get(base::DIR_LOCAL_APP_DATA, &path));
+ path = path.AppendASCII("web_shell");
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ std::unique_ptr<base::Environment> env(base::Environment::Create());
+ base::FilePath config_dir(base::nix::GetXDGDirectory(
+ env.get(), base::nix::kXdgConfigHomeEnvVar, base::nix::kDotConfigDir));
diff --git a/devel/electron7/files/yarn.lock b/devel/electron7/files/yarn.lock
new file mode 100644
index 000000000000..7f42dbf3f1e5
--- /dev/null
+++ b/devel/electron7/files/yarn.lock
@@ -0,0 +1,7925 @@
+# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
+# yarn lockfile v1
+
+
+"@babel/code-frame@^7.0.0":
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0.tgz#06e2ab19bdb535385559aabb5ba59729482800f8"
+ integrity sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA==
+ dependencies:
+ "@babel/highlight" "^7.0.0"
+
+"@babel/highlight@^7.0.0":
+ version "7.5.0"
+ resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.5.0.tgz#56d11312bd9248fa619591d02472be6e8cb32540"
+ integrity sha512-7dV4eu9gBxoM0dAnj/BCFDW9LFU0zvTrkq0ugM7pnHEgguOEeOz1so2ZghEdzviYzQEED0r4EAgpsBChKy1TRQ==
+ dependencies:
+ chalk "^2.0.0"
+ esutils "^2.0.2"
+ js-tokens "^4.0.0"
+
+"@babel/runtime@^7.0.0":
+ version "7.5.2"
+ resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.5.2.tgz#98f584f4d03be5d8142c77107ffaedee4d5956f1"
+ integrity sha512-9M29wrrP7//JBGX70+IrDuD1w4iOYhUGpJNMQJVNAXue+cFeFlMTqBECouIziXPUphlgrfjcfiEpGX4t0WGK4g==
+ dependencies:
+ regenerator-runtime "^0.13.2"
+
+"@electron/docs-parser@^0.4.1", "@electron/docs-parser@^0.4.2":
+ version "0.4.2"
+ resolved "https://registry.yarnpkg.com/@electron/docs-parser/-/docs-parser-0.4.2.tgz#1d5feb0376363435b2f6833b60271ee90c26f952"
+ integrity sha512-BdEW2So0Qg7lxIET9q84DceavC1v/EyYF9PXU8vRRiwFebGPyEaJS4uqxhStAxmZslQAT4JjQc9jTd12IbG6BQ==
+ dependencies:
+ "@types/markdown-it" "^0.0.7"
+ chai "^4.2.0"
+ chalk "^2.4.2"
+ fs-extra "^7.0.1"
+ lodash.camelcase "^4.3.0"
+ markdown-it "^8.4.2"
+ minimist "^1.2.0"
+ ora "^3.4.0"
+ pretty-ms "^5.0.0"
+
+"@electron/typescript-definitions@^8.6.4":
+ version "8.6.4"
+ resolved "https://registry.yarnpkg.com/@electron/typescript-definitions/-/typescript-definitions-8.6.4.tgz#d4727c825afcebf6ff00a7d18416878288cac632"
+ integrity sha512-Fb4o56fikSE3id61U0MbPVBPcweVw8YwzO+JtT9aOorJR4baJZGmpsGxuaHeLSGv+D0Zd5XiWk13cEM/nv9fFw==
+ dependencies:
+ "@electron/docs-parser" "^0.4.1"
+ "@types/node" "^11.13.7"
+ chalk "^2.4.2"
+ colors "^1.1.2"
+ debug "^4.1.1"
+ electron-docs "^3.0.2"
+ fs-extra "^7.0.1"
+ lodash "^4.17.11"
+ minimist "^1.2.0"
+ mkdirp "^0.5.1"
+ ora "^3.4.0"
+ pretty-ms "^5.0.0"
+ typescript "^3.4.5"
+
+"@mrmlnc/readdir-enhanced@^2.2.1":
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz#524af240d1a360527b730475ecfa1344aa540dde"
+ integrity sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==
+ dependencies:
+ call-me-maybe "^1.0.1"
+ glob-to-regexp "^0.3.0"
+
+"@nodelib/fs.stat@^1.1.2":
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz#2b5a3ab3f918cca48a8c754c08168e3f03eba61b"
+ integrity sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==
+
+"@octokit/endpoint@^5.1.0":
+ version "5.2.1"
+ resolved "https://registry.yarnpkg.com/@octokit/endpoint/-/endpoint-5.2.1.tgz#e5ef98bc4a41fad62b17e71af1a1710f6076b8df"
+ integrity sha512-GoUsRSRhtbCQugRY8eDWg5BnsczUZNq00qArrP7tKPHFmvz2KzJ8DoEq6IAQhLGwAOBHbZQ/Zml3DiaEKAWwkA==
+ dependencies:
+ deepmerge "4.0.0"
+ is-plain-object "^3.0.0"
+ universal-user-agent "^2.1.0"
+ url-template "^2.0.8"
+
+"@octokit/request-error@^1.0.1", "@octokit/request-error@^1.0.2":
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/@octokit/request-error/-/request-error-1.0.4.tgz#15e1dc22123ba4a9a4391914d80ec1e5303a23be"
+ integrity sha512-L4JaJDXn8SGT+5G0uX79rZLv0MNJmfGa4vb4vy1NnpjSnWDLJRy6m90udGwvMmavwsStgbv2QNkPzzTCMmL+ig==
+ dependencies:
+ deprecation "^2.0.0"
+ once "^1.4.0"
+
+"@octokit/request@^4.0.1":
+ version "4.1.1"
+ resolved "https://registry.yarnpkg.com/@octokit/request/-/request-4.1.1.tgz#614262214f48417b4d3b14e047d09a9c8e2f7a09"
+ integrity sha512-LOyL0i3oxRo418EXRSJNk/3Q4I0/NKawTn6H/CQp+wnrG1UFLGu080gSsgnWobhPo5BpUNgSQ5BRk5FOOJhD1Q==
+ dependencies:
+ "@octokit/endpoint" "^5.1.0"
+ "@octokit/request-error" "^1.0.1"
+ deprecation "^2.0.0"
+ is-plain-object "^3.0.0"
+ node-fetch "^2.3.0"
+ once "^1.4.0"
+ universal-user-agent "^2.1.0"
+
+"@octokit/rest@^16.3.2":
+ version "16.28.2"
+ resolved "https://registry.yarnpkg.com/@octokit/rest/-/rest-16.28.2.tgz#3fc3b8700046ab29ab1e2a4bdf49f89e94f7ba27"
+ integrity sha512-csuYiHvJ1P/GFDadVn0QhwO83R1+YREjcwCY7ZIezB6aJTRIEidJZj+R7gAkUhT687cqYb4cXTZsDVu9F+Fmug==
+ dependencies:
+ "@octokit/request" "^4.0.1"
+ "@octokit/request-error" "^1.0.2"
+ atob-lite "^2.0.0"
+ before-after-hook "^1.4.0"
+ btoa-lite "^1.0.0"
+ deprecation "^2.0.0"
+ lodash.get "^4.4.2"
+ lodash.set "^4.3.2"
+ lodash.uniq "^4.5.0"
+ octokit-pagination-methods "^1.1.0"
+ once "^1.4.0"
+ universal-user-agent "^2.0.0"
+ url-template "^2.0.8"
+
+"@primer/octicons@^9.1.1":
+ version "9.1.1"
+ resolved "https://registry.yarnpkg.com/@primer/octicons/-/octicons-9.1.1.tgz#a72a59e8ec77521cc2eefb36c345f780a61c79fb"
+ integrity sha512-7EGM0+Kx39bIgaYr9bTCzFvBCxm+fqh/YJIoSns8zfCwss32ZJ2GDP3024UH709VQtM5cKFU4JcIYPHyGdSfIg==
+ dependencies:
+ object-assign "^4.1.1"
+
+"@samverschueren/stream-to-observable@^0.3.0":
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/@samverschueren/stream-to-observable/-/stream-to-observable-0.3.0.tgz#ecdf48d532c58ea477acfcab80348424f8d0662f"
+ integrity sha512-MI4Xx6LHs4Webyvi6EbspgyAb4D2Q2VtnCQ1blOJcoLS6mVa8lNN2rkIy1CVxfTUpoyIbCTkXES1rLXztFD1lg==
+ dependencies:
+ any-observable "^0.3.0"
+
+"@types/anymatch@*":
+ version "1.3.1"
+ resolved "https://registry.yarnpkg.com/@types/anymatch/-/anymatch-1.3.1.tgz#336badc1beecb9dacc38bea2cf32adf627a8421a"
+ integrity sha512-/+CRPXpBDpo2RK9C68N3b2cOvO0Cf5B9aPijHsoDQTHivnGSObdOF2BRQOYjojWTDy6nQvMjmqRXIxH55VjxxA==
+
+"@types/body-parser@*":
+ version "1.17.0"
+ resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.17.0.tgz#9f5c9d9bd04bb54be32d5eb9fc0d8c974e6cf58c"
+ integrity sha512-a2+YeUjPkztKJu5aIF2yArYFQQp8d51wZ7DavSHjFuY1mqVgidGyzEQ41JIVNy82fXj8yPgy2vJmfIywgESW6w==
+ dependencies:
+ "@types/connect" "*"
+ "@types/node" "*"
+
+"@types/chai-as-promised@^7.1.0":
+ version "7.1.0"
+ resolved "https://registry.yarnpkg.com/@types/chai-as-promised/-/chai-as-promised-7.1.0.tgz#010b04cde78eacfb6e72bfddb3e58fe23c2e78b9"
+ integrity sha512-MFiW54UOSt+f2bRw8J7LgQeIvE/9b4oGvwU7XW30S9QGAiHGnU/fmiOprsyMkdmH2rl8xSPc0/yrQw8juXU6bQ==
+ dependencies:
+ "@types/chai" "*"
+
+"@types/chai@*", "@types/chai@^4.1.7":
+ version "4.1.7"
+ resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.1.7.tgz#1b8e33b61a8c09cbe1f85133071baa0dbf9fa71a"
+ integrity sha512-2Y8uPt0/jwjhQ6EiluT0XCri1Dbplr0ZxfFXUz+ye13gaqE8u5gL5ppao1JrUYr9cIip5S6MvQzBS7Kke7U9VA==
+
+"@types/connect@*":
+ version "3.4.32"
+ resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.32.tgz#aa0e9616b9435ccad02bc52b5b454ffc2c70ba28"
+ integrity sha512-4r8qa0quOvh7lGD0pre62CAb1oni1OO6ecJLGCezTmhQ8Fz50Arx9RUszryR8KlgK6avuSXvviL6yWyViQABOg==
+ dependencies:
+ "@types/node" "*"
+
+"@types/eslint-visitor-keys@^1.0.0":
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/@types/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#1ee30d79544ca84d68d4b3cdb0af4f205663dd2d"
+ integrity sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag==
+
+"@types/express-serve-static-core@*":
+ version "4.16.7"
+ resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.16.7.tgz#50ba6f8a691c08a3dd9fa7fba25ef3133d298049"
+ integrity sha512-847KvL8Q1y3TtFLRTXcVakErLJQgdpFSaq+k043xefz9raEf0C7HalpSY7OW5PyjCnY8P7bPW5t/Co9qqp+USg==
+ dependencies:
+ "@types/node" "*"
+ "@types/range-parser" "*"
+
+"@types/express@^4.16.1":
+ version "4.17.0"
+ resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.0.tgz#49eaedb209582a86f12ed9b725160f12d04ef287"
+ integrity sha512-CjaMu57cjgjuZbh9DpkloeGxV45CnMGlVd+XpG7Gm9QgVrd7KFq+X4HY0vM+2v0bczS48Wg7bvnMY5TN+Xmcfw==
+ dependencies:
+ "@types/body-parser" "*"
+ "@types/express-serve-static-core" "*"
+ "@types/serve-static" "*"
+
+"@types/fs-extra@^5.0.5":
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/@types/fs-extra/-/fs-extra-5.1.0.tgz#2a325ef97901504a3828718c390d34b8426a10a1"
+ integrity sha512-AInn5+UBFIK9FK5xc9yP5e3TQSPNNgjHByqYcj9g5elVBnDQcQL7PlO1CIRy2gWlbwK7UPYqi7vRvFA44dCmYQ==
+ dependencies:
+ "@types/node" "*"
+
+"@types/linkify-it@*":
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/@types/linkify-it/-/linkify-it-2.1.0.tgz#ea3dd64c4805597311790b61e872cbd1ed2cd806"
+ integrity sha512-Q7DYAOi9O/+cLLhdaSvKdaumWyHbm7HAk/bFwwyTuU0arR5yyCeW5GOoqt4tJTpDRxhpx9Q8kQL6vMpuw9hDSw==
+
+"@types/markdown-it@^0.0.7":
+ version "0.0.7"
+ resolved "https://registry.yarnpkg.com/@types/markdown-it/-/markdown-it-0.0.7.tgz#75070485a3d8ad11e7deb8287f4430be15bf4d39"
+ integrity sha512-WyL6pa76ollQFQNEaLVa41ZUUvDvPY+qAUmlsphnrpL6I9p1m868b26FyeoOmo7X3/Ta/S9WKXcEYXUSHnxoVQ==
+ dependencies:
+ "@types/linkify-it" "*"
+
+"@types/mime@*":
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/@types/mime/-/mime-2.0.1.tgz#dc488842312a7f075149312905b5e3c0b054c79d"
+ integrity sha512-FwI9gX75FgVBJ7ywgnq/P7tw+/o1GUbtP0KzbtusLigAOgIgNISRK0ZPl4qertvXSIE8YbsVJueQ90cDt9YYyw==
+
+"@types/mocha@^5.2.6":
+ version "5.2.7"
+ resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-5.2.7.tgz#315d570ccb56c53452ff8638738df60726d5b6ea"
+ integrity sha512-NYrtPht0wGzhwe9+/idPaBB+TqkY9AhTvOLMkThm0IoEfLaiVQZwBwyJ5puCkO3AUCWrmcoePjp2mbFocKy4SQ==
+
+"@types/node@*", "@types/node@^12.0.10":
+ version "12.6.1"
+ resolved "https://registry.yarnpkg.com/@types/node/-/node-12.6.1.tgz#d5544f6de0aae03eefbb63d5120f6c8be0691946"
+ integrity sha512-rp7La3m845mSESCgsJePNL/JQyhkOJA6G4vcwvVgkDAwHhGdq5GCumxmPjEk1MZf+8p5ZQAUE7tqgQRQTXN7uQ==
+
+"@types/node@^11.13.7":
+ version "11.13.18"
+ resolved "https://registry.yarnpkg.com/@types/node/-/node-11.13.18.tgz#758ec2bf26339d3cc83da22676b64777d0c2befe"
+ integrity sha512-sMHdXLccscaxI+Hlzz58yLQue3lQyXP+6aQniDRi5oju3n0123kcjhicVGF20WF7cHiwJ2vxMbXc4skOclosoA==
+
+"@types/normalize-package-data@^2.4.0":
+ version "2.4.0"
+ resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz#e486d0d97396d79beedd0a6e33f4534ff6b4973e"
+ integrity sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA==
+
+"@types/range-parser@*":
+ version "1.2.3"
+ resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.3.tgz#7ee330ba7caafb98090bece86a5ee44115904c2c"
+ integrity sha512-ewFXqrQHlFsgc09MK5jP5iR7vumV/BYayNC6PgJO2LPe8vrnNFyjQjSppfEngITi0qvfKtzFvgKymGheFM9UOA==
+
+"@types/semver@^6.0.1":
+ version "6.0.1"
+ resolved "https://registry.yarnpkg.com/@types/semver/-/semver-6.0.1.tgz#a984b405c702fa5a7ec6abc56b37f2ba35ef5af6"
+ integrity sha512-ffCdcrEE5h8DqVxinQjo+2d1q+FV5z7iNtPofw3JsrltSoSVlOGaW0rY8XxtO9XukdTn8TaCGWmk2VFGhI70mg==
+
+"@types/serve-static@*":
+ version "1.13.2"
+ resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.13.2.tgz#f5ac4d7a6420a99a6a45af4719f4dcd8cd907a48"
+ integrity sha512-/BZ4QRLpH/bNYgZgwhKEh+5AsboDBcUdlBYgzoLX0fpj3Y2gp6EApyOlM3bK53wQS/OE1SrdSYBAbux2D1528Q==
+ dependencies:
+ "@types/express-serve-static-core" "*"
+ "@types/mime" "*"
+
+"@types/split@^1.0.0":
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/@types/split/-/split-1.0.0.tgz#24f7c35707450b002f203383228f5a2bc1e6c228"
+ integrity sha512-pm9S1mkr+av0j7D6pFyqhBxXDbnbO9gqj4nb8DtGtCewvj0XhIv089SSwXrjrIizT1UquO8/h83hCut0pa3u8A==
+ dependencies:
+ "@types/node" "*"
+ "@types/through" "*"
+
+"@types/tapable@*":
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/@types/tapable/-/tapable-1.0.4.tgz#b4ffc7dc97b498c969b360a41eee247f82616370"
+ integrity sha512-78AdXtlhpCHT0K3EytMpn4JNxaf5tbqbLcbIRoQIHzpTIyjpxLQKRoxU55ujBXAtg3Nl2h/XWvfDa9dsMOd0pQ==
+
+"@types/through@*":
+ version "0.0.29"
+ resolved "https://registry.yarnpkg.com/@types/through/-/through-0.0.29.tgz#72943aac922e179339c651fa34a4428a4d722f93"
+ integrity sha512-9a7C5VHh+1BKblaYiq+7Tfc+EOmjMdZaD1MYtkQjSoxgB69tBjW98ry6SKsi4zEIWztLOMRuL87A3bdT/Fc/4w==
+ dependencies:
+ "@types/node" "*"
+
+"@types/uglify-js@*":
+ version "3.0.4"
+ resolved "https://registry.yarnpkg.com/@types/uglify-js/-/uglify-js-3.0.4.tgz#96beae23df6f561862a830b4288a49e86baac082"
+ integrity sha512-SudIN9TRJ+v8g5pTG8RRCqfqTMNqgWCKKd3vtynhGzkIIjxaicNAMuY5TRadJ6tzDu3Dotf3ngaMILtmOdmWEQ==
+ dependencies:
+ source-map "^0.6.1"
+
+"@types/unist@^2.0.2":
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/@types/unist/-/unist-2.0.3.tgz#9c088679876f374eb5983f150d4787aa6fb32d7e"
+ integrity sha512-FvUupuM3rlRsRtCN+fDudtmytGO6iHJuuRKS1Ss0pG5z8oX0diNEw94UEL7hgDbpN94rgaK5R7sWm6RrSkZuAQ==
+
+"@types/webpack-env@^1.13.9":
+ version "1.13.9"
+ resolved "https://registry.yarnpkg.com/@types/webpack-env/-/webpack-env-1.13.9.tgz#a67287861c928ebf4159a908d1fb1a2a34d4097a"
+ integrity sha512-p8zp5xqkly3g4cCmo2mKOHI9+Z/kObmDj0BmjbDDJQlgDTiEGTbm17MEwTAusV6XceCy+bNw9q/ZHXHyKo3zkg==
+
+"@types/webpack@^4.4.32":
+ version "4.4.34"
+ resolved "https://registry.yarnpkg.com/@types/webpack/-/webpack-4.4.34.tgz#e5f88b9a795da11683b4ec4a07d1c2b023b19810"
+ integrity sha512-GnEBgjHsfO1M7DIQ0dAupSofcmDItE3Zsu3reK8SQpl/6N0rtUQxUmQzVFAS5ou/FGjsYKjXAWfItLZ0kNFTfQ==
+ dependencies:
+ "@types/anymatch" "*"
+ "@types/node" "*"
+ "@types/tapable" "*"
+ "@types/uglify-js" "*"
+ source-map "^0.6.0"
+
+"@typescript-eslint/eslint-plugin@^1.4.2":
+ version "1.11.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-1.11.0.tgz#870f752c520db04db6d3668af7479026a6f2fb9a"
+ integrity sha512-mXv9ccCou89C8/4avKHuPB2WkSZyY/XcTQUXd5LFZAcLw1I3mWYVjUu6eS9Ja0QkP/ClolbcW9tb3Ov/pMdcqw==
+ dependencies:
+ "@typescript-eslint/experimental-utils" "1.11.0"
+ eslint-utils "^1.3.1"
+ functional-red-black-tree "^1.0.1"
+ regexpp "^2.0.1"
+ tsutils "^3.7.0"
+
+"@typescript-eslint/experimental-utils@1.11.0":
+ version "1.11.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-1.11.0.tgz#594abe47091cbeabac1d6f9cfed06d0ad99eb7e3"
+ integrity sha512-7LbfaqF6B8oa8cp/315zxKk8FFzosRzzhF8Kn/ZRsRsnpm7Qcu25cR/9RnAQo5utZ2KIWVgaALr+ZmcbG47ruw==
+ dependencies:
+ "@typescript-eslint/typescript-estree" "1.11.0"
+ eslint-scope "^4.0.0"
+
+"@typescript-eslint/parser@^1.4.2":
+ version "1.11.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-1.11.0.tgz#2f6d4f7e64eeb1e7c25b422f8df14d0c9e508e36"
+ integrity sha512-5xBExyXaxVyczrZvbRKEXvaTUFFq7gIM9BynXukXZE0zF3IQP/FxF4mPmmh3gJ9egafZFqByCpPTFm3dk4SY7Q==
+ dependencies:
+ "@types/eslint-visitor-keys" "^1.0.0"
+ "@typescript-eslint/experimental-utils" "1.11.0"
+ "@typescript-eslint/typescript-estree" "1.11.0"
+ eslint-visitor-keys "^1.0.0"
+
+"@typescript-eslint/typescript-estree@1.11.0":
+ version "1.11.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-1.11.0.tgz#b7b5782aab22e4b3b6d84633652c9f41e62d37d5"
+ integrity sha512-fquUHF5tAx1sM2OeRCC7wVxFd1iMELWMGCzOSmJ3pLzArj9+kRixdlC4d5MncuzXpjEqc6045p3KwM0o/3FuUA==
+ dependencies:
+ lodash.unescape "4.0.1"
+ semver "5.5.0"
+
+"@webassemblyjs/ast@1.8.5":
+ version "1.8.5"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.8.5.tgz#51b1c5fe6576a34953bf4b253df9f0d490d9e359"
+ integrity sha512-aJMfngIZ65+t71C3y2nBBg5FFG0Okt9m0XEgWZ7Ywgn1oMAT8cNwx00Uv1cQyHtidq0Xn94R4TAywO+LCQ+ZAQ==
+ dependencies:
+ "@webassemblyjs/helper-module-context" "1.8.5"
+ "@webassemblyjs/helper-wasm-bytecode" "1.8.5"
+ "@webassemblyjs/wast-parser" "1.8.5"
+
+"@webassemblyjs/floating-point-hex-parser@1.8.5":
+ version "1.8.5"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.8.5.tgz#1ba926a2923613edce496fd5b02e8ce8a5f49721"
+ integrity sha512-9p+79WHru1oqBh9ewP9zW95E3XAo+90oth7S5Re3eQnECGq59ly1Ri5tsIipKGpiStHsUYmY3zMLqtk3gTcOtQ==
+
+"@webassemblyjs/helper-api-error@1.8.5":
+ version "1.8.5"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.8.5.tgz#c49dad22f645227c5edb610bdb9697f1aab721f7"
+ integrity sha512-Za/tnzsvnqdaSPOUXHyKJ2XI7PDX64kWtURyGiJJZKVEdFOsdKUCPTNEVFZq3zJ2R0G5wc2PZ5gvdTRFgm81zA==
+
+"@webassemblyjs/helper-buffer@1.8.5":
+ version "1.8.5"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.8.5.tgz#fea93e429863dd5e4338555f42292385a653f204"
+ integrity sha512-Ri2R8nOS0U6G49Q86goFIPNgjyl6+oE1abW1pS84BuhP1Qcr5JqMwRFT3Ah3ADDDYGEgGs1iyb1DGX+kAi/c/Q==
+
+"@webassemblyjs/helper-code-frame@1.8.5":
+ version "1.8.5"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.8.5.tgz#9a740ff48e3faa3022b1dff54423df9aa293c25e"
+ integrity sha512-VQAadSubZIhNpH46IR3yWO4kZZjMxN1opDrzePLdVKAZ+DFjkGD/rf4v1jap744uPVU6yjL/smZbRIIJTOUnKQ==
+ dependencies:
+ "@webassemblyjs/wast-printer" "1.8.5"
+
+"@webassemblyjs/helper-fsm@1.8.5":
+ version "1.8.5"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.8.5.tgz#ba0b7d3b3f7e4733da6059c9332275d860702452"
+ integrity sha512-kRuX/saORcg8se/ft6Q2UbRpZwP4y7YrWsLXPbbmtepKr22i8Z4O3V5QE9DbZK908dh5Xya4Un57SDIKwB9eow==
+
+"@webassemblyjs/helper-module-context@1.8.5":
+ version "1.8.5"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.8.5.tgz#def4b9927b0101dc8cbbd8d1edb5b7b9c82eb245"
+ integrity sha512-/O1B236mN7UNEU4t9X7Pj38i4VoU8CcMHyy3l2cV/kIF4U5KoHXDVqcDuOs1ltkac90IM4vZdHc52t1x8Yfs3g==
+ dependencies:
+ "@webassemblyjs/ast" "1.8.5"
+ mamacro "^0.0.3"
+
+"@webassemblyjs/helper-wasm-bytecode@1.8.5":
+ version "1.8.5"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.8.5.tgz#537a750eddf5c1e932f3744206551c91c1b93e61"
+ integrity sha512-Cu4YMYG3Ddl72CbmpjU/wbP6SACcOPVbHN1dI4VJNJVgFwaKf1ppeFJrwydOG3NDHxVGuCfPlLZNyEdIYlQ6QQ==
+
+"@webassemblyjs/helper-wasm-section@1.8.5":
+ version "1.8.5"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.8.5.tgz#74ca6a6bcbe19e50a3b6b462847e69503e6bfcbf"
+ integrity sha512-VV083zwR+VTrIWWtgIUpqfvVdK4ff38loRmrdDBgBT8ADXYsEZ5mPQ4Nde90N3UYatHdYoDIFb7oHzMncI02tA==
+ dependencies:
+ "@webassemblyjs/ast" "1.8.5"
+ "@webassemblyjs/helper-buffer" "1.8.5"
+ "@webassemblyjs/helper-wasm-bytecode" "1.8.5"
+ "@webassemblyjs/wasm-gen" "1.8.5"
+
+"@webassemblyjs/ieee754@1.8.5":
+ version "1.8.5"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.8.5.tgz#712329dbef240f36bf57bd2f7b8fb9bf4154421e"
+ integrity sha512-aaCvQYrvKbY/n6wKHb/ylAJr27GglahUO89CcGXMItrOBqRarUMxWLJgxm9PJNuKULwN5n1csT9bYoMeZOGF3g==
+ dependencies:
+ "@xtuc/ieee754" "^1.2.0"
+
+"@webassemblyjs/leb128@1.8.5":
+ version "1.8.5"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.8.5.tgz#044edeb34ea679f3e04cd4fd9824d5e35767ae10"
+ integrity sha512-plYUuUwleLIziknvlP8VpTgO4kqNaH57Y3JnNa6DLpu/sGcP6hbVdfdX5aHAV716pQBKrfuU26BJK29qY37J7A==
+ dependencies:
+ "@xtuc/long" "4.2.2"
+
+"@webassemblyjs/utf8@1.8.5":
+ version "1.8.5"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.8.5.tgz#a8bf3b5d8ffe986c7c1e373ccbdc2a0915f0cedc"
+ integrity sha512-U7zgftmQriw37tfD934UNInokz6yTmn29inT2cAetAsaU9YeVCveWEwhKL1Mg4yS7q//NGdzy79nlXh3bT8Kjw==
+
+"@webassemblyjs/wasm-edit@1.8.5":
+ version "1.8.5"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.8.5.tgz#962da12aa5acc1c131c81c4232991c82ce56e01a"
+ integrity sha512-A41EMy8MWw5yvqj7MQzkDjU29K7UJq1VrX2vWLzfpRHt3ISftOXqrtojn7nlPsZ9Ijhp5NwuODuycSvfAO/26Q==
+ dependencies:
+ "@webassemblyjs/ast" "1.8.5"
+ "@webassemblyjs/helper-buffer" "1.8.5"
+ "@webassemblyjs/helper-wasm-bytecode" "1.8.5"
+ "@webassemblyjs/helper-wasm-section" "1.8.5"
+ "@webassemblyjs/wasm-gen" "1.8.5"
+ "@webassemblyjs/wasm-opt" "1.8.5"
+ "@webassemblyjs/wasm-parser" "1.8.5"
+ "@webassemblyjs/wast-printer" "1.8.5"
+
+"@webassemblyjs/wasm-gen@1.8.5":
+ version "1.8.5"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.8.5.tgz#54840766c2c1002eb64ed1abe720aded714f98bc"
+ integrity sha512-BCZBT0LURC0CXDzj5FXSc2FPTsxwp3nWcqXQdOZE4U7h7i8FqtFK5Egia6f9raQLpEKT1VL7zr4r3+QX6zArWg==
+ dependencies:
+ "@webassemblyjs/ast" "1.8.5"
+ "@webassemblyjs/helper-wasm-bytecode" "1.8.5"
+ "@webassemblyjs/ieee754" "1.8.5"
+ "@webassemblyjs/leb128" "1.8.5"
+ "@webassemblyjs/utf8" "1.8.5"
+
+"@webassemblyjs/wasm-opt@1.8.5":
+ version "1.8.5"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.8.5.tgz#b24d9f6ba50394af1349f510afa8ffcb8a63d264"
+ integrity sha512-HKo2mO/Uh9A6ojzu7cjslGaHaUU14LdLbGEKqTR7PBKwT6LdPtLLh9fPY33rmr5wcOMrsWDbbdCHq4hQUdd37Q==
+ dependencies:
+ "@webassemblyjs/ast" "1.8.5"
+ "@webassemblyjs/helper-buffer" "1.8.5"
+ "@webassemblyjs/wasm-gen" "1.8.5"
+ "@webassemblyjs/wasm-parser" "1.8.5"
+
+"@webassemblyjs/wasm-parser@1.8.5":
+ version "1.8.5"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.8.5.tgz#21576f0ec88b91427357b8536383668ef7c66b8d"
+ integrity sha512-pi0SYE9T6tfcMkthwcgCpL0cM9nRYr6/6fjgDtL6q/ZqKHdMWvxitRi5JcZ7RI4SNJJYnYNaWy5UUrHQy998lw==
+ dependencies:
+ "@webassemblyjs/ast" "1.8.5"
+ "@webassemblyjs/helper-api-error" "1.8.5"
+ "@webassemblyjs/helper-wasm-bytecode" "1.8.5"
+ "@webassemblyjs/ieee754" "1.8.5"
+ "@webassemblyjs/leb128" "1.8.5"
+ "@webassemblyjs/utf8" "1.8.5"
+
+"@webassemblyjs/wast-parser@1.8.5":
+ version "1.8.5"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.8.5.tgz#e10eecd542d0e7bd394f6827c49f3df6d4eefb8c"
+ integrity sha512-daXC1FyKWHF1i11obK086QRlsMsY4+tIOKgBqI1lxAnkp9xe9YMcgOxm9kLe+ttjs5aWV2KKE1TWJCN57/Btsg==
+ dependencies:
+ "@webassemblyjs/ast" "1.8.5"
+ "@webassemblyjs/floating-point-hex-parser" "1.8.5"
+ "@webassemblyjs/helper-api-error" "1.8.5"
+ "@webassemblyjs/helper-code-frame" "1.8.5"
+ "@webassemblyjs/helper-fsm" "1.8.5"
+ "@xtuc/long" "4.2.2"
+
+"@webassemblyjs/wast-printer@1.8.5":
+ version "1.8.5"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.8.5.tgz#114bbc481fd10ca0e23b3560fa812748b0bae5bc"
+ integrity sha512-w0U0pD4EhlnvRyeJzBqaVSJAo9w/ce7/WPogeXLzGkO6hzhr4GnQIZ4W4uUt5b9ooAaXPtnXlj0gzsXEOUNYMg==
+ dependencies:
+ "@webassemblyjs/ast" "1.8.5"
+ "@webassemblyjs/wast-parser" "1.8.5"
+ "@xtuc/long" "4.2.2"
+
+"@xtuc/ieee754@^1.2.0":
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790"
+ integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==
+
+"@xtuc/long@4.2.2":
+ version "4.2.2"
+ resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d"
+ integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==
+
+abbrev@1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8"
+ integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==
+
+accepts@~1.3.7:
+ version "1.3.7"
+ resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd"
+ integrity sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==
+ dependencies:
+ mime-types "~2.1.24"
+ negotiator "0.6.2"
+
+acorn-jsx@^5.0.0:
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.0.1.tgz#32a064fd925429216a09b141102bfdd185fae40e"
+ integrity sha512-HJ7CfNHrfJLlNTzIEUTj43LNWGkqpRLxm3YjAlcD0ACydk9XynzYsCBHxut+iqt+1aBXkx9UP/w/ZqMr13XIzg==
+
+acorn@^6.0.2, acorn@^6.0.7, acorn@^6.2.0:
+ version "6.2.0"
+ resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.2.0.tgz#67f0da2fc339d6cfb5d6fb244fd449f33cd8bbe3"
+ integrity sha512-8oe72N3WPMjA+2zVG71Ia0nXZ8DpQH+QyyHO+p06jT8eg8FGG3FbcUIi8KziHlAfheJQZeoqbvq1mQSQHXKYLw==
+
+ajv-errors@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.1.tgz#f35986aceb91afadec4102fbd85014950cefa64d"
+ integrity sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==
+
+ajv-keywords@^3.0.0, ajv-keywords@^3.1.0:
+ version "3.4.1"
+ resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.4.1.tgz#ef916e271c64ac12171fd8384eaae6b2345854da"
+ integrity sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ==
+
+ajv@^6.0.1, ajv@^6.1.0, ajv@^6.5.0, ajv@^6.5.5, ajv@^6.9.1:
+ version "6.10.1"
+ resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.10.1.tgz#ebf8d3af22552df9dd049bfbe50cc2390e823593"
+ integrity sha512-w1YQaVGNC6t2UCPjEawK/vo/dG8OOrVtUmhBT1uJJYxbl5kU2Tj3v6LGqBcsysN1yhuCStJCCA3GqdvKY8sqXQ==
+ dependencies:
+ fast-deep-equal "^2.0.1"
+ fast-json-stable-stringify "^2.0.0"
+ json-schema-traverse "^0.4.1"
+ uri-js "^4.2.2"
+
+ansi-escapes@^3.0.0, ansi-escapes@^3.2.0:
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b"
+ integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==
+
+ansi-regex@^2.0.0:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df"
+ integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8=
+
+ansi-regex@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998"
+ integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=
+
+ansi-regex@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997"
+ integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==
+
+ansi-styles@^2.2.1:
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe"
+ integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=
+
+ansi-styles@^3.2.0, ansi-styles@^3.2.1:
+ version "3.2.1"
+ resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d"
+ integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==
+ dependencies:
+ color-convert "^1.9.0"
+
+any-observable@^0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/any-observable/-/any-observable-0.3.0.tgz#af933475e5806a67d0d7df090dd5e8bef65d119b"
+ integrity sha512-/FQM1EDkTsf63Ub2C6O7GuYFDsSXUwsaZDurV0np41ocwq0jthUAYCmhBX9f+KwlaCgIuWyr/4WlUQUBfKfZog==
+
+anymatch@^1.3.0:
+ version "1.3.2"
+ resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-1.3.2.tgz#553dcb8f91e3c889845dfdba34c77721b90b9d7a"
+ integrity sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==
+ dependencies:
+ micromatch "^2.1.5"
+ normalize-path "^2.0.0"
+
+anymatch@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb"
+ integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==
+ dependencies:
+ micromatch "^3.1.4"
+ normalize-path "^2.1.1"
+
+anymatch@^3.0.2:
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.0.3.tgz#2fb624fe0e84bccab00afee3d0006ed310f22f09"
+ integrity sha512-c6IvoeBECQlMVuYUjSwimnhmztImpErfxJzWZhIQinIvQWoGOnB0dLIgifbPHQt5heS6mNlaZG16f06H3C8t1g==
+ dependencies:
+ normalize-path "^3.0.0"
+ picomatch "^2.0.4"
+
+aproba@^1.0.3, aproba@^1.1.1:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a"
+ integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==
+
+are-we-there-yet@~1.1.2:
+ version "1.1.5"
+ resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21"
+ integrity sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==
+ dependencies:
+ delegates "^1.0.0"
+ readable-stream "^2.0.6"
+
+argparse@^1.0.7:
+ version "1.0.10"
+ resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911"
+ integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==
+ dependencies:
+ sprintf-js "~1.0.2"
+
+arr-diff@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf"
+ integrity sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=
+ dependencies:
+ arr-flatten "^1.0.1"
+
+arr-diff@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520"
+ integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=
+
+arr-flatten@^1.0.1, arr-flatten@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1"
+ integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==
+
+arr-union@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4"
+ integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=
+
+array-find-index@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1"
+ integrity sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=
+
+array-flatten@1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2"
+ integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=
+
+array-includes@^3.0.3:
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.0.3.tgz#184b48f62d92d7452bb31b323165c7f8bd02266d"
+ integrity sha1-GEtI9i2S10UrsxsyMWXH+L0CJm0=
+ dependencies:
+ define-properties "^1.1.2"
+ es-abstract "^1.7.0"
+
+array-union@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39"
+ integrity sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=
+ dependencies:
+ array-uniq "^1.0.1"
+
+array-uniq@^1.0.1:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6"
+ integrity sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=
+
+array-unique@^0.2.1:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53"
+ integrity sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=
+
+array-unique@^0.3.2:
+ version "0.3.2"
+ resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428"
+ integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=
+
+arrify@^1.0.0, arrify@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d"
+ integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=
+
+asar@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/asar/-/asar-1.0.0.tgz#5624ffa1369aa929871dfc036de02c20871bdc2e"
+ integrity sha512-MBiDU5cDr9UWuY2F0zq2fZlnyRq1aOPmJGMas22Qa14K1odpRXL3xkMHPN3uw2hAK5mD89Q+/KidOUtpi4V0Cg==
+ dependencies:
+ chromium-pickle-js "^0.2.0"
+ commander "^2.19.0"
+ cuint "^0.2.2"
+ glob "^7.1.3"
+ minimatch "^3.0.4"
+ mkdirp "^0.5.1"
+ pify "^4.0.1"
+ tmp-promise "^1.0.5"
+
+asn1.js@^4.0.0:
+ version "4.10.1"
+ resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.10.1.tgz#b9c2bf5805f1e64aadeed6df3a2bfafb5a73f5a0"
+ integrity sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==
+ dependencies:
+ bn.js "^4.0.0"
+ inherits "^2.0.1"
+ minimalistic-assert "^1.0.0"
+
+asn1@~0.2.3:
+ version "0.2.4"
+ resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136"
+ integrity sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==
+ dependencies:
+ safer-buffer "~2.1.0"
+
+assert-plus@1.0.0, assert-plus@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525"
+ integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=
+
+assert@^1.1.1:
+ version "1.5.0"
+ resolved "https://registry.yarnpkg.com/assert/-/assert-1.5.0.tgz#55c109aaf6e0aefdb3dc4b71240c70bf574b18eb"
+ integrity sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==
+ dependencies:
+ object-assign "^4.1.1"
+ util "0.10.3"
+
+assertion-error@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.1.0.tgz#e60b6b0e8f301bd97e5375215bda406c85118c0b"
+ integrity sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==
+
+assign-symbols@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367"
+ integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=
+
+astral-regex@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9"
+ integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==
+
+async-each@^1.0.0, async-each@^1.0.1:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf"
+ integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==
+
+asynckit@^0.4.0:
+ version "0.4.0"
+ resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
+ integrity sha1-x57Zf380y48robyXkLzDZkdLS3k=
+
+atob-lite@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/atob-lite/-/atob-lite-2.0.0.tgz#0fef5ad46f1bd7a8502c65727f0367d5ee43d696"
+ integrity sha1-D+9a1G8b16hQLGVyfwNn1e5D1pY=
+
+atob@^2.1.1:
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9"
+ integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==
+
+aws-sign2@~0.7.0:
+ version "0.7.0"
+ resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8"
+ integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=
+
+aws4@^1.8.0:
+ version "1.8.0"
+ resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.8.0.tgz#f0e003d9ca9e7f59c7a508945d7b2ef9a04a542f"
+ integrity sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==
+
+babel-code-frame@^6.26.0:
+ version "6.26.0"
+ resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b"
+ integrity sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=
+ dependencies:
+ chalk "^1.1.3"
+ esutils "^2.0.2"
+ js-tokens "^3.0.2"
+
+bail@^1.0.0:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/bail/-/bail-1.0.4.tgz#7181b66d508aa3055d3f6c13f0a0c720641dde9b"
+ integrity sha512-S8vuDB4w6YpRhICUDET3guPlQpaJl7od94tpZ0Fvnyp+MKW/HyDTcRDck+29C9g+d/qQHnddRH3+94kZdrW0Ww==
+
+balanced-match@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767"
+ integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c=
+
+base64-js@^1.0.2:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.0.tgz#cab1e6118f051095e58b5281aea8c1cd22bfc0e3"
+ integrity sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw==
+
+base@^0.11.1:
+ version "0.11.2"
+ resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f"
+ integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==
+ dependencies:
+ cache-base "^1.0.1"
+ class-utils "^0.3.5"
+ component-emitter "^1.2.1"
+ define-property "^1.0.0"
+ isobject "^3.0.1"
+ mixin-deep "^1.2.0"
+ pascalcase "^0.1.1"
+
+bcrypt-pbkdf@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e"
+ integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=
+ dependencies:
+ tweetnacl "^0.14.3"
+
+before-after-hook@^1.4.0:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/before-after-hook/-/before-after-hook-1.4.0.tgz#2b6bf23dca4f32e628fd2747c10a37c74a4b484d"
+ integrity sha512-l5r9ir56nda3qu14nAXIlyq1MmUSs0meCIaFAh8HwkFwP1F8eToOuS3ah2VAHHcY04jaYD7FpJC5JTXHYRbkzg==
+
+big.js@^5.2.2:
+ version "5.2.2"
+ resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328"
+ integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==
+
+binary-extensions@^1.0.0:
+ version "1.13.1"
+ resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65"
+ integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==
+
+bl@^1.0.0:
+ version "1.2.2"
+ resolved "https://registry.yarnpkg.com/bl/-/bl-1.2.2.tgz#a160911717103c07410cef63ef51b397c025af9c"
+ integrity sha512-e8tQYnZodmebYDWGH7KMRvtzKXaJHx3BbilrgZCfvyLUYdKpK1t5PSPmpkny/SgiTSCnjfLW7v5rlONXVFkQEA==
+ dependencies:
+ readable-stream "^2.3.5"
+ safe-buffer "^5.1.1"
+
+bluebird@^3.5.0, bluebird@^3.5.5:
+ version "3.5.5"
+ resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.5.tgz#a8d0afd73251effbbd5fe384a77d73003c17a71f"
+ integrity sha512-5am6HnnfN+urzt4yfg7IgTbotDjIT/u8AJpEt0sIU9FtXfVeezXAPKswrG+xKUCOYAINpSdgZVDU6QFh+cuH3w==
+
+bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0:
+ version "4.11.8"
+ resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f"
+ integrity sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==
+
+body-parser@1.19.0:
+ version "1.19.0"
+ resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.0.tgz#96b2709e57c9c4e09a6fd66a8fd979844f69f08a"
+ integrity sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==
+ dependencies:
+ bytes "3.1.0"
+ content-type "~1.0.4"
+ debug "2.6.9"
+ depd "~1.1.2"
+ http-errors "1.7.2"
+ iconv-lite "0.4.24"
+ on-finished "~2.3.0"
+ qs "6.7.0"
+ raw-body "2.4.0"
+ type-is "~1.6.17"
+
+brace-expansion@^1.1.7:
+ version "1.1.11"
+ resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
+ integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==
+ dependencies:
+ balanced-match "^1.0.0"
+ concat-map "0.0.1"
+
+braces@^1.8.2:
+ version "1.8.5"
+ resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7"
+ integrity sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=
+ dependencies:
+ expand-range "^1.8.1"
+ preserve "^0.2.0"
+ repeat-element "^1.1.2"
+
+braces@^2.3.1, braces@^2.3.2:
+ version "2.3.2"
+ resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729"
+ integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==
+ dependencies:
+ arr-flatten "^1.1.0"
+ array-unique "^0.3.2"
+ extend-shallow "^2.0.1"
+ fill-range "^4.0.0"
+ isobject "^3.0.1"
+ repeat-element "^1.1.2"
+ snapdragon "^0.8.1"
+ snapdragon-node "^2.0.1"
+ split-string "^3.0.2"
+ to-regex "^3.0.1"
+
+braces@^3.0.1:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107"
+ integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==
+ dependencies:
+ fill-range "^7.0.1"
+
+brorand@^1.0.1:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f"
+ integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=
+
+browserify-aes@^1.0.0, browserify-aes@^1.0.4:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48"
+ integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==
+ dependencies:
+ buffer-xor "^1.0.3"
+ cipher-base "^1.0.0"
+ create-hash "^1.1.0"
+ evp_bytestokey "^1.0.3"
+ inherits "^2.0.1"
+ safe-buffer "^5.0.1"
+
+browserify-cipher@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0"
+ integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==
+ dependencies:
+ browserify-aes "^1.0.4"
+ browserify-des "^1.0.0"
+ evp_bytestokey "^1.0.0"
+
+browserify-des@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c"
+ integrity sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==
+ dependencies:
+ cipher-base "^1.0.1"
+ des.js "^1.0.0"
+ inherits "^2.0.1"
+ safe-buffer "^5.1.2"
+
+browserify-rsa@^4.0.0:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.0.1.tgz#21e0abfaf6f2029cf2fafb133567a701d4135524"
+ integrity sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=
+ dependencies:
+ bn.js "^4.1.0"
+ randombytes "^2.0.1"
+
+browserify-sign@^4.0.0:
+ version "4.0.4"
+ resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.0.4.tgz#aa4eb68e5d7b658baa6bf6a57e630cbd7a93d298"
+ integrity sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=
+ dependencies:
+ bn.js "^4.1.1"
+ browserify-rsa "^4.0.0"
+ create-hash "^1.1.0"
+ create-hmac "^1.1.2"
+ elliptic "^6.0.0"
+ inherits "^2.0.1"
+ parse-asn1 "^5.0.0"
+
+browserify-zlib@^0.1.4:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.1.4.tgz#bb35f8a519f600e0fa6b8485241c979d0141fb2d"
+ integrity sha1-uzX4pRn2AOD6a4SFJByXnQFB+y0=
+ dependencies:
+ pako "~0.2.0"
+
+browserify-zlib@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f"
+ integrity sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==
+ dependencies:
+ pako "~1.0.5"
+
+btoa-lite@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/btoa-lite/-/btoa-lite-1.0.0.tgz#337766da15801210fdd956c22e9c6891ab9d0337"
+ integrity sha1-M3dm2hWAEhD92VbCLpxokaudAzc=
+
+buffer-alloc-unsafe@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz#bd7dc26ae2972d0eda253be061dba992349c19f0"
+ integrity sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==
+
+buffer-alloc@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/buffer-alloc/-/buffer-alloc-1.2.0.tgz#890dd90d923a873e08e10e5fd51a57e5b7cce0ec"
+ integrity sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==
+ dependencies:
+ buffer-alloc-unsafe "^1.1.0"
+ buffer-fill "^1.0.0"
+
+buffer-fill@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/buffer-fill/-/buffer-fill-1.0.0.tgz#f8f78b76789888ef39f205cd637f68e702122b2c"
+ integrity sha1-+PeLdniYiO858gXNY39o5wISKyw=
+
+buffer-from@^1.0.0, buffer-from@^1.1.0:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef"
+ integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==
+
+buffer-xor@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9"
+ integrity sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=
+
+buffer@^4.3.0:
+ version "4.9.1"
+ resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.1.tgz#6d1bb601b07a4efced97094132093027c95bc298"
+ integrity sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=
+ dependencies:
+ base64-js "^1.0.2"
+ ieee754 "^1.1.4"
+ isarray "^1.0.0"
+
+builtin-status-codes@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8"
+ integrity sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=
+
+bytes@3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6"
+ integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==
+
+cacache@^11.3.2:
+ version "11.3.3"
+ resolved "https://registry.yarnpkg.com/cacache/-/cacache-11.3.3.tgz#8bd29df8c6a718a6ebd2d010da4d7972ae3bbadc"
+ integrity sha512-p8WcneCytvzPxhDvYp31PD039vi77I12W+/KfR9S8AZbaiARFBCpsPJS+9uhWfeBfeAtW7o/4vt3MUqLkbY6nA==
+ dependencies:
+ bluebird "^3.5.5"
+ chownr "^1.1.1"
+ figgy-pudding "^3.5.1"
+ glob "^7.1.4"
+ graceful-fs "^4.1.15"
+ lru-cache "^5.1.1"
+ mississippi "^3.0.0"
+ mkdirp "^0.5.1"
+ move-concurrently "^1.0.1"
+ promise-inflight "^1.0.1"
+ rimraf "^2.6.3"
+ ssri "^6.0.1"
+ unique-filename "^1.1.1"
+ y18n "^4.0.0"
+
+cache-base@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2"
+ integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==
+ dependencies:
+ collection-visit "^1.0.0"
+ component-emitter "^1.2.1"
+ get-value "^2.0.6"
+ has-value "^1.0.0"
+ isobject "^3.0.1"
+ set-value "^2.0.0"
+ to-object-path "^0.3.0"
+ union-value "^1.0.0"
+ unset-value "^1.0.0"
+
+call-me-maybe@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.1.tgz#26d208ea89e37b5cbde60250a15f031c16a4d66b"
+ integrity sha1-JtII6onje1y95gJQoV8DHBak1ms=
+
+caller-callsite@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/caller-callsite/-/caller-callsite-2.0.0.tgz#847e0fce0a223750a9a027c54b33731ad3154134"
+ integrity sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=
+ dependencies:
+ callsites "^2.0.0"
+
+caller-path@^0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-0.1.0.tgz#94085ef63581ecd3daa92444a8fe94e82577751f"
+ integrity sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=
+ dependencies:
+ callsites "^0.2.0"
+
+caller-path@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-2.0.0.tgz#468f83044e369ab2010fac5f06ceee15bb2cb1f4"
+ integrity sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=
+ dependencies:
+ caller-callsite "^2.0.0"
+
+callsites@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/callsites/-/callsites-0.2.0.tgz#afab96262910a7f33c19a5775825c69f34e350ca"
+ integrity sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=
+
+callsites@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50"
+ integrity sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=
+
+callsites@^3.0.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73"
+ integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==
+
+camelcase-keys@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7"
+ integrity sha1-MIvur/3ygRkFHvodkyITyRuPkuc=
+ dependencies:
+ camelcase "^2.0.0"
+ map-obj "^1.0.0"
+
+camelcase@^2.0.0:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f"
+ integrity sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=
+
+camelcase@^4.0.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd"
+ integrity sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=
+
+camelcase@^5.0.0:
+ version "5.3.1"
+ resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320"
+ integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==
+
+capture-stack-trace@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/capture-stack-trace/-/capture-stack-trace-1.0.1.tgz#a6c0bbe1f38f3aa0b92238ecb6ff42c344d4135d"
+ integrity sha512-mYQLZnx5Qt1JgB1WEiMCf2647plpGeQ2NMR/5L0HNZzGQo4fuSPnK+wjfPnKZV0aiJDgzmWqqkV/g7JD+DW0qw==
+
+caseless@~0.12.0:
+ version "0.12.0"
+ resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc"
+ integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=
+
+ccount@^1.0.0:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/ccount/-/ccount-1.0.4.tgz#9cf2de494ca84060a2a8d2854edd6dfb0445f386"
+ integrity sha512-fpZ81yYfzentuieinmGnphk0pLkOTMm6MZdVqwd77ROvhko6iujLNGrHH5E7utq3ygWklwfmwuG+A7P+NpqT6w==
+
+chai@^4.2.0:
+ version "4.2.0"
+ resolved "https://registry.yarnpkg.com/chai/-/chai-4.2.0.tgz#760aa72cf20e3795e84b12877ce0e83737aa29e5"
+ integrity sha512-XQU3bhBukrOsQCuwZndwGcCVQHyZi53fQ6Ys1Fym7E4olpIqqZZhhoFJoaKVvV17lWQoXYwgWN2nF5crA8J2jw==
+ dependencies:
+ assertion-error "^1.1.0"
+ check-error "^1.0.2"
+ deep-eql "^3.0.1"
+ get-func-name "^2.0.0"
+ pathval "^1.1.0"
+ type-detect "^4.0.5"
+
+chalk@2.4.2, chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.0, chalk@^2.3.1, chalk@^2.4.1, chalk@^2.4.2:
+ version "2.4.2"
+ resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424"
+ integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==
+ dependencies:
+ ansi-styles "^3.2.1"
+ escape-string-regexp "^1.0.5"
+ supports-color "^5.3.0"
+
+chalk@^1.0.0, chalk@^1.1.1, chalk@^1.1.3:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98"
+ integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=
+ dependencies:
+ ansi-styles "^2.2.1"
+ escape-string-regexp "^1.0.2"
+ has-ansi "^2.0.0"
+ strip-ansi "^3.0.0"
+ supports-color "^2.0.0"
+
+character-entities-html4@^1.0.0:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/character-entities-html4/-/character-entities-html4-1.1.3.tgz#5ce6e01618e47048ac22f34f7f39db5c6fd679ef"
+ integrity sha512-SwnyZ7jQBCRHELk9zf2CN5AnGEc2nA+uKMZLHvcqhpPprjkYhiLn0DywMHgN5ttFZuITMATbh68M6VIVKwJbcg==
+
+character-entities-legacy@^1.0.0:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/character-entities-legacy/-/character-entities-legacy-1.1.3.tgz#3c729991d9293da0ede6dddcaf1f2ce1009ee8b4"
+ integrity sha512-YAxUpPoPwxYFsslbdKkhrGnXAtXoHNgYjlBM3WMXkWGTl5RsY3QmOyhwAgL8Nxm9l5LBThXGawxKPn68y6/fww==
+
+character-entities@^1.0.0:
+ version "1.2.3"
+ resolved "https://registry.yarnpkg.com/character-entities/-/character-entities-1.2.3.tgz#bbed4a52fe7ef98cc713c6d80d9faa26916d54e6"
+ integrity sha512-yB4oYSAa9yLcGyTbB4ItFwHw43QHdH129IJ5R+WvxOkWlyFnR5FAaBNnUq4mcxsTVZGh28bHoeTHMKXH1wZf3w==
+
+character-reference-invalid@^1.0.0:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/character-reference-invalid/-/character-reference-invalid-1.1.3.tgz#1647f4f726638d3ea4a750cf5d1975c1c7919a85"
+ integrity sha512-VOq6PRzQBam/8Jm6XBGk2fNEnHXAdGd6go0rtd4weAGECBamHDwwCQSOT12TACIYUZegUXnV6xBXqUssijtxIg==
+
+chardet@^0.4.0:
+ version "0.4.2"
+ resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.4.2.tgz#b5473b33dc97c424e5d98dc87d55d4d8a29c8bf2"
+ integrity sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I=
+
+chardet@^0.7.0:
+ version "0.7.0"
+ resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e"
+ integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==
+
+check-error@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.2.tgz#574d312edd88bb5dd8912e9286dd6c0aed4aac82"
+ integrity sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=
+
+check-for-leaks@^1.2.1:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/check-for-leaks/-/check-for-leaks-1.2.1.tgz#4ac108ee3f8e6b99f5ad36f6b98cba1d7f4816d0"
+ integrity sha512-9OdOSRZY6N0w5JCdJpqsC5MkD6EPGYpHmhtf4l5nl3DRETDZshP6C1EGN/vVhHDTY6AsOK3NhdFfrMe3NWZl7g==
+ dependencies:
+ anymatch "^3.0.2"
+ minimist "^1.2.0"
+ parse-gitignore "^0.4.0"
+ walk-sync "^0.3.2"
+
+checksum@^0.1.1:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/checksum/-/checksum-0.1.1.tgz#dc6527d4c90be8560dbd1ed4cecf3297d528e9e9"
+ integrity sha1-3GUn1MkL6FYNvR7Uzs8yl9Uo6ek=
+ dependencies:
+ optimist "~0.3.5"
+
+chokidar@^1.5.1:
+ version "1.7.0"
+ resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.7.0.tgz#798e689778151c8076b4b360e5edd28cda2bb468"
+ integrity sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=
+ dependencies:
+ anymatch "^1.3.0"
+ async-each "^1.0.0"
+ glob-parent "^2.0.0"
+ inherits "^2.0.1"
+ is-binary-path "^1.0.0"
+ is-glob "^2.0.0"
+ path-is-absolute "^1.0.0"
+ readdirp "^2.0.0"
+ optionalDependencies:
+ fsevents "^1.0.0"
+
+chokidar@^2.0.2:
+ version "2.1.6"
+ resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.6.tgz#b6cad653a929e244ce8a834244164d241fa954c5"
+ integrity sha512-V2jUo67OKkc6ySiRpJrjlpJKl9kDuG+Xb8VgsGzb+aEouhgS1D0weyPU4lEzdAcsCAvrih2J2BqyXqHWvVLw5g==
+ dependencies:
+ anymatch "^2.0.0"
+ async-each "^1.0.1"
+ braces "^2.3.2"
+ glob-parent "^3.1.0"
+ inherits "^2.0.3"
+ is-binary-path "^1.0.0"
+ is-glob "^4.0.0"
+ normalize-path "^3.0.0"
+ path-is-absolute "^1.0.0"
+ readdirp "^2.2.1"
+ upath "^1.1.1"
+ optionalDependencies:
+ fsevents "^1.2.7"
+
+chownr@^1.0.1, chownr@^1.1.1:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.2.tgz#a18f1e0b269c8a6a5d3c86eb298beb14c3dd7bf6"
+ integrity sha512-GkfeAQh+QNy3wquu9oIZr6SS5x7wGdSgNQvD10X3r+AZr1Oys22HW8kAmDMvNg2+Dm0TeGaEuO8gFwdBXxwO8A==
+
+chrome-trace-event@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz#234090ee97c7d4ad1a2c4beae27505deffc608a4"
+ integrity sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ==
+ dependencies:
+ tslib "^1.9.0"
+
+chromium-pickle-js@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/chromium-pickle-js/-/chromium-pickle-js-0.2.0.tgz#04a106672c18b085ab774d983dfa3ea138f22205"
+ integrity sha1-BKEGZywYsIWrd02YPfo+oTjyIgU=
+
+ci-info@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46"
+ integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==
+
+cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de"
+ integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==
+ dependencies:
+ inherits "^2.0.1"
+ safe-buffer "^5.0.1"
+
+circular-json@^0.3.1:
+ version "0.3.3"
+ resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.3.3.tgz#815c99ea84f6809529d2f45791bdf82711352d66"
+ integrity sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==
+
+class-utils@^0.3.5:
+ version "0.3.6"
+ resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463"
+ integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==
+ dependencies:
+ arr-union "^3.1.0"
+ define-property "^0.2.5"
+ isobject "^3.0.0"
+ static-extend "^0.1.1"
+
+cli-cursor@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-1.0.2.tgz#64da3f7d56a54412e59794bd62dc35295e8f2987"
+ integrity sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=
+ dependencies:
+ restore-cursor "^1.0.1"
+
+cli-cursor@^2.0.0, cli-cursor@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5"
+ integrity sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=
+ dependencies:
+ restore-cursor "^2.0.0"
+
+cli-spinners@^0.1.2:
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-0.1.2.tgz#bb764d88e185fb9e1e6a2a1f19772318f605e31c"
+ integrity sha1-u3ZNiOGF+54eaiofGXcjGPYF4xw=
+
+cli-spinners@^2.0.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.2.0.tgz#e8b988d9206c692302d8ee834e7a85c0144d8f77"
+ integrity sha512-tgU3fKwzYjiLEQgPMD9Jt+JjHVL9kW93FiIMX/l7rivvOD4/LL0Mf7gda3+4U2KJBloybwgj5KEoQgGRioMiKQ==
+
+cli-truncate@^0.2.1:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-0.2.1.tgz#9f15cfbb0705005369216c626ac7d05ab90dd574"
+ integrity sha1-nxXPuwcFAFNpIWxiasfQWrkN1XQ=
+ dependencies:
+ slice-ansi "0.0.4"
+ string-width "^1.0.1"
+
+cli-width@^2.0.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639"
+ integrity sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=
+
+cliui@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5"
+ integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==
+ dependencies:
+ string-width "^3.1.0"
+ strip-ansi "^5.2.0"
+ wrap-ansi "^5.1.0"
+
+clone@^1.0.2:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e"
+ integrity sha1-2jCcwmPfFZlMaIypAheco8fNfH4=
+
+co@3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/co/-/co-3.1.0.tgz#4ea54ea5a08938153185e15210c68d9092bc1b78"
+ integrity sha1-TqVOpaCJOBUxheFSEMaNkJK8G3g=
+
+code-point-at@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77"
+ integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=
+
+collapse-white-space@^1.0.2:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/collapse-white-space/-/collapse-white-space-1.0.5.tgz#c2495b699ab1ed380d29a1091e01063e75dbbe3a"
+ integrity sha512-703bOOmytCYAX9cXYqoikYIx6twmFCXsnzRQheBcTG3nzKYBR4P/+wkYeH+Mvj7qUz8zZDtdyzbxfnEi/kYzRQ==
+
+collection-visit@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0"
+ integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=
+ dependencies:
+ map-visit "^1.0.0"
+ object-visit "^1.0.0"
+
+color-convert@^1.9.0:
+ version "1.9.3"
+ resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8"
+ integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==
+ dependencies:
+ color-name "1.1.3"
+
+color-name@1.1.3:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25"
+ integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=
+
+colors@^1.1.2:
+ version "1.3.3"
+ resolved "https://registry.yarnpkg.com/colors/-/colors-1.3.3.tgz#39e005d546afe01e01f9c4ca8fa50f686a01205d"
+ integrity sha512-mmGt/1pZqYRjMxB1axhTo16/snVZ5krrKkcmMeVKxzECMMXoCgnvTPp10QgHfcbQZw8Dq2jMNG6je4JlWU0gWg==
+
+combined-stream@^1.0.6, combined-stream@~1.0.6:
+ version "1.0.8"
+ resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f"
+ integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==
+ dependencies:
+ delayed-stream "~1.0.0"
+
+commander@^2.14.1, commander@^2.18.0, commander@^2.19.0, commander@^2.20.0, commander@^2.9.0:
+ version "2.20.0"
+ resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.0.tgz#d58bb2b5c1ee8f87b0d340027e9e94e222c5a422"
+ integrity sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==
+
+commondir@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b"
+ integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=
+
+component-emitter@^1.2.1:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0"
+ integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==
+
+concat-map@0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
+ integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=
+
+concat-stream@^1.5.0, concat-stream@^1.5.1:
+ version "1.6.2"
+ resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34"
+ integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==
+ dependencies:
+ buffer-from "^1.0.0"
+ inherits "^2.0.3"
+ readable-stream "^2.2.2"
+ typedarray "^0.0.6"
+
+console-browserify@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.1.0.tgz#f0241c45730a9fc6323b206dbf38edc741d0bb10"
+ integrity sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=
+ dependencies:
+ date-now "^0.1.4"
+
+console-control-strings@^1.0.0, console-control-strings@~1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e"
+ integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=
+
+constants-browserify@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75"
+ integrity sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=
+
+contains-path@^0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/contains-path/-/contains-path-0.1.0.tgz#fe8cf184ff6670b6baef01a9d4861a5cbec4120a"
+ integrity sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=
+
+content-disposition@0.5.3:
+ version "0.5.3"
+ resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.3.tgz#e130caf7e7279087c5616c2007d0485698984fbd"
+ integrity sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==
+ dependencies:
+ safe-buffer "5.1.2"
+
+content-type@~1.0.4:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b"
+ integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==
+
+cookie-signature@1.0.6:
+ version "1.0.6"
+ resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c"
+ integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw=
+
+cookie@0.4.0:
+ version "0.4.0"
+ resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.0.tgz#beb437e7022b3b6d49019d088665303ebe9c14ba"
+ integrity sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==
+
+copy-concurrently@^1.0.0:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz#92297398cae34937fcafd6ec8139c18051f0b5e0"
+ integrity sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==
+ dependencies:
+ aproba "^1.1.1"
+ fs-write-stream-atomic "^1.0.8"
+ iferr "^0.1.5"
+ mkdirp "^0.5.1"
+ rimraf "^2.5.4"
+ run-queue "^1.0.0"
+
+copy-descriptor@^0.1.0:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d"
+ integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=
+
+core-util-is@1.0.2, core-util-is@~1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
+ integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=
+
+cosmiconfig@^5.2.0:
+ version "5.2.1"
+ resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.2.1.tgz#040f726809c591e77a17c0a3626ca45b4f168b1a"
+ integrity sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==
+ dependencies:
+ import-fresh "^2.0.0"
+ is-directory "^0.3.1"
+ js-yaml "^3.13.1"
+ parse-json "^4.0.0"
+
+create-ecdh@^4.0.0:
+ version "4.0.3"
+ resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.3.tgz#c9111b6f33045c4697f144787f9254cdc77c45ff"
+ integrity sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==
+ dependencies:
+ bn.js "^4.1.0"
+ elliptic "^6.0.0"
+
+create-error-class@^3.0.0:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/create-error-class/-/create-error-class-3.0.2.tgz#06be7abef947a3f14a30fd610671d401bca8b7b6"
+ integrity sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=
+ dependencies:
+ capture-stack-trace "^1.0.0"
+
+create-hash@^1.1.0, create-hash@^1.1.2:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196"
+ integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==
+ dependencies:
+ cipher-base "^1.0.1"
+ inherits "^2.0.1"
+ md5.js "^1.3.4"
+ ripemd160 "^2.0.1"
+ sha.js "^2.4.0"
+
+create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4:
+ version "1.1.7"
+ resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff"
+ integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==
+ dependencies:
+ cipher-base "^1.0.3"
+ create-hash "^1.1.0"
+ inherits "^2.0.1"
+ ripemd160 "^2.0.0"
+ safe-buffer "^5.0.1"
+ sha.js "^2.4.8"
+
+cross-spawn@6.0.5, cross-spawn@^6.0.0, cross-spawn@^6.0.5:
+ version "6.0.5"
+ resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4"
+ integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==
+ dependencies:
+ nice-try "^1.0.4"
+ path-key "^2.0.1"
+ semver "^5.5.0"
+ shebang-command "^1.2.0"
+ which "^1.2.9"
+
+crypto-browserify@^3.11.0:
+ version "3.12.0"
+ resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec"
+ integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==
+ dependencies:
+ browserify-cipher "^1.0.0"
+ browserify-sign "^4.0.0"
+ create-ecdh "^4.0.0"
+ create-hash "^1.1.0"
+ create-hmac "^1.1.0"
+ diffie-hellman "^5.0.0"
+ inherits "^2.0.1"
+ pbkdf2 "^3.0.3"
+ public-encrypt "^4.0.0"
+ randombytes "^2.0.0"
+ randomfill "^1.0.3"
+
+cuint@^0.2.2:
+ version "0.2.2"
+ resolved "https://registry.yarnpkg.com/cuint/-/cuint-0.2.2.tgz#408086d409550c2631155619e9fa7bcadc3b991b"
+ integrity sha1-QICG1AlVDCYxFVYZ6fp7ytw7mRs=
+
+currently-unhandled@^0.4.1:
+ version "0.4.1"
+ resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea"
+ integrity sha1-mI3zP+qxke95mmE2nddsF635V+o=
+ dependencies:
+ array-find-index "^1.0.1"
+
+cyclist@~0.2.2:
+ version "0.2.2"
+ resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-0.2.2.tgz#1b33792e11e914a2fd6d6ed6447464444e5fa640"
+ integrity sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA=
+
+dashdash@^1.12.0:
+ version "1.14.1"
+ resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0"
+ integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=
+ dependencies:
+ assert-plus "^1.0.0"
+
+date-fns@^1.27.2:
+ version "1.30.1"
+ resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-1.30.1.tgz#2e71bf0b119153dbb4cc4e88d9ea5acfb50dc05c"
+ integrity sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw==
+
+date-now@^0.1.4:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b"
+ integrity sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=
+
+debug-log@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/debug-log/-/debug-log-1.0.1.tgz#2307632d4c04382b8df8a32f70b895046d52745f"
+ integrity sha1-IwdjLUwEOCuN+KMvcLiVBG1SdF8=
+
+debug@2.6.9, debug@^2.1.3, debug@^2.2.0, debug@^2.3.3, debug@^2.6.8, debug@^2.6.9:
+ version "2.6.9"
+ resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
+ integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==
+ dependencies:
+ ms "2.0.0"
+
+debug@^3.1.0, debug@^3.2.6:
+ version "3.2.6"
+ resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b"
+ integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==
+ dependencies:
+ ms "^2.1.1"
+
+debug@^4.0.1, debug@^4.1.1:
+ version "4.1.1"
+ resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791"
+ integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==
+ dependencies:
+ ms "^2.1.1"
+
+decamelize@^1.1.2, decamelize@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290"
+ integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=
+
+decode-uri-component@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545"
+ integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=
+
+dedent@^0.7.0:
+ version "0.7.0"
+ resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c"
+ integrity sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=
+
+deep-eql@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-3.0.1.tgz#dfc9404400ad1c8fe023e7da1df1c147c4b444df"
+ integrity sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==
+ dependencies:
+ type-detect "^4.0.0"
+
+deep-extend@^0.6.0:
+ version "0.6.0"
+ resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac"
+ integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==
+
+deep-is@~0.1.3:
+ version "0.1.3"
+ resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34"
+ integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=
+
+deepmerge@4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.0.0.tgz#3e3110ca29205f120d7cb064960a39c3d2087c09"
+ integrity sha512-YZ1rOP5+kHor4hMAH+HRQnBQHg+wvS1un1hAOuIcxcBy0hzcUf6Jg2a1w65kpoOUnurOfZbERwjI1TfZxNjcww==
+
+defaults@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d"
+ integrity sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=
+ dependencies:
+ clone "^1.0.2"
+
+define-properties@^1.1.2:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1"
+ integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==
+ dependencies:
+ object-keys "^1.0.12"
+
+define-property@^0.2.5:
+ version "0.2.5"
+ resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116"
+ integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=
+ dependencies:
+ is-descriptor "^0.1.0"
+
+define-property@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6"
+ integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY=
+ dependencies:
+ is-descriptor "^1.0.0"
+
+define-property@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d"
+ integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==
+ dependencies:
+ is-descriptor "^1.0.2"
+ isobject "^3.0.1"
+
+deglob@^2.1.0:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/deglob/-/deglob-2.1.1.tgz#d268e168727799862e8eac07042e165957c1f3be"
+ integrity sha512-2kjwuGGonL7gWE1XU4Fv79+vVzpoQCl0V+boMwWtOQJV2AGDabCwez++nB1Nli/8BabAfZQ/UuHPlp6AymKdWw==
+ dependencies:
+ find-root "^1.0.0"
+ glob "^7.0.5"
+ ignore "^3.0.9"
+ pkg-config "^1.1.0"
+ run-parallel "^1.1.2"
+ uniq "^1.0.1"
+
+del@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/del/-/del-3.0.0.tgz#53ecf699ffcbcb39637691ab13baf160819766e5"
+ integrity sha1-U+z2mf/LyzljdpGrE7rxYIGXZuU=
+ dependencies:
+ globby "^6.1.0"
+ is-path-cwd "^1.0.0"
+ is-path-in-cwd "^1.0.0"
+ p-map "^1.1.1"
+ pify "^3.0.0"
+ rimraf "^2.2.8"
+
+delayed-stream@~1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
+ integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk=
+
+delegates@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a"
+ integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=
+
+depd@~1.1.2:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9"
+ integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=
+
+deprecation@^2.0.0:
+ version "2.3.1"
+ resolved "https://registry.yarnpkg.com/deprecation/-/deprecation-2.3.1.tgz#6368cbdb40abf3373b525ac87e4a260c3a700919"
+ integrity sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==
+
+des.js@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.0.tgz#c074d2e2aa6a8a9a07dbd61f9a15c2cd83ec8ecc"
+ integrity sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=
+ dependencies:
+ inherits "^2.0.1"
+ minimalistic-assert "^1.0.0"
+
+destroy@~1.0.4:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80"
+ integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=
+
+detect-file@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/detect-file/-/detect-file-1.0.0.tgz#f0d66d03672a825cb1b73bdb3fe62310c8e552b7"
+ integrity sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=
+
+detect-libc@^1.0.2:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b"
+ integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=
+
+diff@^3.1.0:
+ version "3.5.0"
+ resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12"
+ integrity sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==
+
+diffie-hellman@^5.0.0:
+ version "5.0.3"
+ resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875"
+ integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==
+ dependencies:
+ bn.js "^4.1.0"
+ miller-rabin "^4.0.0"
+ randombytes "^2.0.0"
+
+dir-glob@2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-2.0.0.tgz#0b205d2b6aef98238ca286598a8204d29d0a0034"
+ integrity sha512-37qirFDz8cA5fimp9feo43fSuRo2gHwaIn6dXL8Ber1dGwUosDrGZeCCXq57WnIqE4aQ+u3eQZzsk1yOzhdwag==
+ dependencies:
+ arrify "^1.0.1"
+ path-type "^3.0.0"
+
+doctrine@1.5.0:
+ version "1.5.0"
+ resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa"
+ integrity sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=
+ dependencies:
+ esutils "^2.0.2"
+ isarray "^1.0.0"
+
+doctrine@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d"
+ integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==
+ dependencies:
+ esutils "^2.0.2"
+
+doctrine@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961"
+ integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==
+ dependencies:
+ esutils "^2.0.2"
+
+domain-browser@^1.1.1:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda"
+ integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==
+
+dotenv-safe@^4.0.4:
+ version "4.0.4"
+ resolved "https://registry.yarnpkg.com/dotenv-safe/-/dotenv-safe-4.0.4.tgz#8b0e7ced8e70b1d3c5d874ef9420e406f39425b3"
+ integrity sha1-iw587Y5wsdPF2HTvlCDkBvOUJbM=
+ dependencies:
+ dotenv "^4.0.0"
+
+dotenv@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-4.0.0.tgz#864ef1379aced55ce6f95debecdce179f7a0cd1d"
+ integrity sha1-hk7xN5rO1Vzm+V3r7NzhefegzR0=
+
+dugite@^1.45.0:
+ version "1.87.0"
+ resolved "https://registry.yarnpkg.com/dugite/-/dugite-1.87.0.tgz#ba42c25401420a92c6c8f0c71823ac54124b4b65"
+ integrity sha512-+aW2Ql3yw1AEO8Z8nVbjOAEzsinMJMmAg4uf5lzTewFUAHd0danuMPXMP9uMuGuUYN/LQtt4kR2XLuWoD8wRSQ==
+ dependencies:
+ checksum "^0.1.1"
+ mkdirp "^0.5.1"
+ progress "^2.0.3"
+ request "^2.88.0"
+ rimraf "^2.5.4"
+ tar "^4.4.7"
+
+duplexer3@^0.1.4:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2"
+ integrity sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=
+
+duplexer@~0.1.1:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1"
+ integrity sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=
+
+duplexify@^3.4.2, duplexify@^3.5.0, duplexify@^3.6.0:
+ version "3.7.1"
+ resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309"
+ integrity sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==
+ dependencies:
+ end-of-stream "^1.0.0"
+ inherits "^2.0.1"
+ readable-stream "^2.0.0"
+ stream-shift "^1.0.0"
+
+ecc-jsbn@~0.1.1:
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9"
+ integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=
+ dependencies:
+ jsbn "~0.1.0"
+ safer-buffer "^2.1.0"
+
+ee-first@1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
+ integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=
+
+electron-docs@^3.0.2:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/electron-docs/-/electron-docs-3.0.2.tgz#340d57e6c0dbf86a97249fd451dff6221021754a"
+ integrity sha1-NA1X5sDb+GqXJJ/UUd/2IhAhdUo=
+ dependencies:
+ got "^6.3.0"
+ gunzip-maybe "^1.3.1"
+ node-dir "^0.1.12"
+ ora "^0.2.3"
+ path-exists "^3.0.0"
+ pify "^2.3.0"
+ semver "^5.1.0"
+ tar-fs "^1.13.0"
+
+elegant-spinner@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/elegant-spinner/-/elegant-spinner-1.0.1.tgz#db043521c95d7e303fd8f345bedc3349cfb0729e"
+ integrity sha1-2wQ1IcldfjA/2PNFvtwzSc+wcp4=
+
+elliptic@^6.0.0:
+ version "6.5.0"
+ resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.0.tgz#2b8ed4c891b7de3200e14412a5b8248c7af505ca"
+ integrity sha512-eFOJTMyCYb7xtE/caJ6JJu+bhi67WCYNbkGSknu20pmM8Ke/bqOfdnZWxyoGN26JgfxTbXrsCkEw4KheCT/KGg==
+ dependencies:
+ bn.js "^4.4.0"
+ brorand "^1.0.1"
+ hash.js "^1.0.0"
+ hmac-drbg "^1.0.0"
+ inherits "^2.0.1"
+ minimalistic-assert "^1.0.0"
+ minimalistic-crypto-utils "^1.0.0"
+
+emoji-regex@^7.0.1:
+ version "7.0.3"
+ resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156"
+ integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==
+
+emojis-list@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389"
+ integrity sha1-TapNnbAPmBmIDHn6RXrlsJof04k=
+
+encodeurl@~1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59"
+ integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=
+
+end-of-stream@^1.0.0, end-of-stream@^1.1.0:
+ version "1.4.1"
+ resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.1.tgz#ed29634d19baba463b6ce6b80a37213eab71ec43"
+ integrity sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==
+ dependencies:
+ once "^1.4.0"
+
+enhanced-resolve@4.1.0, enhanced-resolve@^4.0.0, enhanced-resolve@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz#41c7e0bfdfe74ac1ffe1e57ad6a5c6c9f3742a7f"
+ integrity sha512-F/7vkyTtyc/llOIn8oWclcB25KdRaiPBpZYDgJHgh/UHtpgT2p2eldQgtQnLtUvfMKPKxbRaQM/hHkvLHt1Vng==
+ dependencies:
+ graceful-fs "^4.1.2"
+ memory-fs "^0.4.0"
+ tapable "^1.0.0"
+
+ensure-posix-path@^1.0.0:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/ensure-posix-path/-/ensure-posix-path-1.1.1.tgz#3c62bdb19fa4681544289edb2b382adc029179ce"
+ integrity sha512-VWU0/zXzVbeJNXvME/5EmLuEj2TauvoaTz6aFYK1Z92JCBlDlZ3Gu0tuGR42kpW1754ywTs+QB0g5TP0oj9Zaw==
+
+entities@~1.1.1:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.2.tgz#bdfa735299664dfafd34529ed4f8522a275fea56"
+ integrity sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==
+
+errno@^0.1.3, errno@~0.1.7:
+ version "0.1.7"
+ resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.7.tgz#4684d71779ad39af177e3f007996f7c67c852618"
+ integrity sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==
+ dependencies:
+ prr "~1.0.1"
+
+error-ex@^1.2.0, error-ex@^1.3.1:
+ version "1.3.2"
+ resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf"
+ integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==
+ dependencies:
+ is-arrayish "^0.2.1"
+
+es-abstract@^1.7.0:
+ version "1.13.0"
+ resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.13.0.tgz#ac86145fdd5099d8dd49558ccba2eaf9b88e24e9"
+ integrity sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg==
+ dependencies:
+ es-to-primitive "^1.2.0"
+ function-bind "^1.1.1"
+ has "^1.0.3"
+ is-callable "^1.1.4"
+ is-regex "^1.0.4"
+ object-keys "^1.0.12"
+
+es-to-primitive@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.0.tgz#edf72478033456e8dda8ef09e00ad9650707f377"
+ integrity sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==
+ dependencies:
+ is-callable "^1.1.4"
+ is-date-object "^1.0.1"
+ is-symbol "^1.0.2"
+
+es6-object-assign@^1.0.3:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/es6-object-assign/-/es6-object-assign-1.1.0.tgz#c2c3582656247c39ea107cb1e6652b6f9f24523c"
+ integrity sha1-wsNYJlYkfDnqEHyx5mUrb58kUjw=
+
+escape-html@~1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988"
+ integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=
+
+escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.4, escape-string-regexp@^1.0.5:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
+ integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=
+
+eslint-config-standard-jsx@6.0.2:
+ version "6.0.2"
+ resolved "https://registry.yarnpkg.com/eslint-config-standard-jsx/-/eslint-config-standard-jsx-6.0.2.tgz#90c9aa16ac2c4f8970c13fc7efc608bacd02da70"
+ integrity sha512-D+YWAoXw+2GIdbMBRAzWwr1ZtvnSf4n4yL0gKGg7ShUOGXkSOLerI17K4F6LdQMJPNMoWYqepzQD/fKY+tXNSg==
+
+eslint-config-standard@12.0.0, eslint-config-standard@^12.0.0:
+ version "12.0.0"
+ resolved "https://registry.yarnpkg.com/eslint-config-standard/-/eslint-config-standard-12.0.0.tgz#638b4c65db0bd5a41319f96bba1f15ddad2107d9"
+ integrity sha512-COUz8FnXhqFitYj4DTqHzidjIL/t4mumGZto5c7DrBpvWoie+Sn3P4sLEzUGeYhRElWuFEf8K1S1EfvD1vixCQ==
+
+eslint-import-resolver-node@^0.3.1, eslint-import-resolver-node@^0.3.2:
+ version "0.3.2"
+ resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.2.tgz#58f15fb839b8d0576ca980413476aab2472db66a"
+ integrity sha512-sfmTqJfPSizWu4aymbPr4Iidp5yKm8yDkHp+Ir3YiTHiiDfxh69mOUsmiqW6RZ9zRXFaF64GtYmN7e+8GHBv6Q==
+ dependencies:
+ debug "^2.6.9"
+ resolve "^1.5.0"
+
+eslint-module-utils@^2.2.0, eslint-module-utils@^2.4.0:
+ version "2.4.0"
+ resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.4.0.tgz#8b93499e9b00eab80ccb6614e69f03678e84e09a"
+ integrity sha512-14tltLm38Eu3zS+mt0KvILC3q8jyIAH518MlG+HO0p+yK885Lb1UHTY/UgR91eOyGdmxAPb+OLoW4znqIT6Ndw==
+ dependencies:
+ debug "^2.6.8"
+ pkg-dir "^2.0.0"
+
+eslint-plugin-es@^1.3.1:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-es/-/eslint-plugin-es-1.4.0.tgz#475f65bb20c993fc10e8c8fe77d1d60068072da6"
+ integrity sha512-XfFmgFdIUDgvaRAlaXUkxrRg5JSADoRC8IkKLc/cISeR3yHVMefFHQZpcyXXEUUPHfy5DwviBcrfqlyqEwlQVw==
+ dependencies:
+ eslint-utils "^1.3.0"
+ regexpp "^2.0.1"
+
+eslint-plugin-import@^2.17.2:
+ version "2.18.0"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.18.0.tgz#7a5ba8d32622fb35eb9c8db195c2090bd18a3678"
+ integrity sha512-PZpAEC4gj/6DEMMoU2Df01C5c50r7zdGIN52Yfi7CvvWaYssG7Jt5R9nFG5gmqodxNOz9vQS87xk6Izdtpdrig==
+ dependencies:
+ array-includes "^3.0.3"
+ contains-path "^0.1.0"
+ debug "^2.6.9"
+ doctrine "1.5.0"
+ eslint-import-resolver-node "^0.3.2"
+ eslint-module-utils "^2.4.0"
+ has "^1.0.3"
+ lodash "^4.17.11"
+ minimatch "^3.0.4"
+ read-pkg-up "^2.0.0"
+ resolve "^1.11.0"
+
+eslint-plugin-import@~2.14.0:
+ version "2.14.0"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.14.0.tgz#6b17626d2e3e6ad52cfce8807a845d15e22111a8"
+ integrity sha512-FpuRtniD/AY6sXByma2Wr0TXvXJ4nA/2/04VPlfpmUDPOpOY264x+ILiwnrk/k4RINgDAyFZByxqPUbSQ5YE7g==
+ dependencies:
+ contains-path "^0.1.0"
+ debug "^2.6.8"
+ doctrine "1.5.0"
+ eslint-import-resolver-node "^0.3.1"
+ eslint-module-utils "^2.2.0"
+ has "^1.0.1"
+ lodash "^4.17.4"
+ minimatch "^3.0.3"
+ read-pkg-up "^2.0.0"
+ resolve "^1.6.0"
+
+eslint-plugin-mocha@^5.2.0:
+ version "5.3.0"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-mocha/-/eslint-plugin-mocha-5.3.0.tgz#cf3eb18ae0e44e433aef7159637095a7cb19b15b"
+ integrity sha512-3uwlJVLijjEmBeNyH60nzqgA1gacUWLUmcKV8PIGNvj1kwP/CTgAWQHn2ayyJVwziX+KETkr9opNwT1qD/RZ5A==
+ dependencies:
+ ramda "^0.26.1"
+
+eslint-plugin-node@^8.0.1:
+ version "8.0.1"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-node/-/eslint-plugin-node-8.0.1.tgz#55ae3560022863d141fa7a11799532340a685964"
+ integrity sha512-ZjOjbjEi6jd82rIpFSgagv4CHWzG9xsQAVp1ZPlhRnnYxcTgENUVBvhYmkQ7GvT1QFijUSo69RaiOJKhMu6i8w==
+ dependencies:
+ eslint-plugin-es "^1.3.1"
+ eslint-utils "^1.3.1"
+ ignore "^5.0.2"
+ minimatch "^3.0.4"
+ resolve "^1.8.1"
+ semver "^5.5.0"
+
+eslint-plugin-node@~7.0.1:
+ version "7.0.1"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-node/-/eslint-plugin-node-7.0.1.tgz#a6e054e50199b2edd85518b89b4e7b323c9f36db"
+ integrity sha512-lfVw3TEqThwq0j2Ba/Ckn2ABdwmL5dkOgAux1rvOk6CO7A6yGyPI2+zIxN6FyNkp1X1X/BSvKOceD6mBWSj4Yw==
+ dependencies:
+ eslint-plugin-es "^1.3.1"
+ eslint-utils "^1.3.1"
+ ignore "^4.0.2"
+ minimatch "^3.0.4"
+ resolve "^1.8.1"
+ semver "^5.5.0"
+
+eslint-plugin-promise@~4.0.0:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-4.0.1.tgz#2d074b653f35a23d1ba89d8e976a985117d1c6a2"
+ integrity sha512-Si16O0+Hqz1gDHsys6RtFRrW7cCTB6P7p3OJmKp3Y3dxpQE2qwOA7d3xnV+0mBmrPoi0RBnxlCKvqu70te6wjg==
+
+eslint-plugin-react@~7.11.1:
+ version "7.11.1"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.11.1.tgz#c01a7af6f17519457d6116aa94fc6d2ccad5443c"
+ integrity sha512-cVVyMadRyW7qsIUh3FHp3u6QHNhOgVrLQYdQEB1bPWBsgbNCHdFAeNMquBMCcZJu59eNthX053L70l7gRt4SCw==
+ dependencies:
+ array-includes "^3.0.3"
+ doctrine "^2.1.0"
+ has "^1.0.3"
+ jsx-ast-utils "^2.0.1"
+ prop-types "^15.6.2"
+
+eslint-plugin-standard@^4.0.0, eslint-plugin-standard@~4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-standard/-/eslint-plugin-standard-4.0.0.tgz#f845b45109c99cd90e77796940a344546c8f6b5c"
+ integrity sha512-OwxJkR6TQiYMmt1EsNRMe5qG3GsbjlcOhbGUBY4LtavF9DsLaTcoR+j2Tdjqi23oUwKNUqX7qcn5fPStafMdlA==
+
+eslint-plugin-typescript@^0.14.0:
+ version "0.14.0"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-typescript/-/eslint-plugin-typescript-0.14.0.tgz#068549c3f4c7f3f85d88d398c29fa96bf500884c"
+ integrity sha512-2u1WnnDF2mkWWgU1lFQ2RjypUlmRoBEvQN02y9u+IL12mjWlkKFGEBnVsjs9Y8190bfPQCvWly1c2rYYUSOxWw==
+ dependencies:
+ requireindex "~1.1.0"
+
+eslint-scope@^4.0.0, eslint-scope@^4.0.3:
+ version "4.0.3"
+ resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848"
+ integrity sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==
+ dependencies:
+ esrecurse "^4.1.0"
+ estraverse "^4.1.1"
+
+eslint-utils@^1.3.0, eslint-utils@^1.3.1:
+ version "1.3.1"
+ resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-1.3.1.tgz#9a851ba89ee7c460346f97cf8939c7298827e512"
+ integrity sha512-Z7YjnIldX+2XMcjr7ZkgEsOj/bREONV60qYeB/bjMAqqqZ4zxKyWX+BOUkdmRmA9riiIPVvo5x86m5elviOk0Q==
+
+eslint-visitor-keys@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#3f3180fb2e291017716acb4c9d6d5b5c34a6a81d"
+ integrity sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ==
+
+eslint@^5.13.0:
+ version "5.16.0"
+ resolved "https://registry.yarnpkg.com/eslint/-/eslint-5.16.0.tgz#a1e3ac1aae4a3fbd8296fcf8f7ab7314cbb6abea"
+ integrity sha512-S3Rz11i7c8AA5JPv7xAH+dOyq/Cu/VXHiHXBPOU1k/JAM5dXqQPt3qcrhpHSorXmrpu2g0gkIBVXAqCpzfoZIg==
+ dependencies:
+ "@babel/code-frame" "^7.0.0"
+ ajv "^6.9.1"
+ chalk "^2.1.0"
+ cross-spawn "^6.0.5"
+ debug "^4.0.1"
+ doctrine "^3.0.0"
+ eslint-scope "^4.0.3"
+ eslint-utils "^1.3.1"
+ eslint-visitor-keys "^1.0.0"
+ espree "^5.0.1"
+ esquery "^1.0.1"
+ esutils "^2.0.2"
+ file-entry-cache "^5.0.1"
+ functional-red-black-tree "^1.0.1"
+ glob "^7.1.2"
+ globals "^11.7.0"
+ ignore "^4.0.6"
+ import-fresh "^3.0.0"
+ imurmurhash "^0.1.4"
+ inquirer "^6.2.2"
+ js-yaml "^3.13.0"
+ json-stable-stringify-without-jsonify "^1.0.1"
+ levn "^0.3.0"
+ lodash "^4.17.11"
+ minimatch "^3.0.4"
+ mkdirp "^0.5.1"
+ natural-compare "^1.4.0"
+ optionator "^0.8.2"
+ path-is-inside "^1.0.2"
+ progress "^2.0.0"
+ regexpp "^2.0.1"
+ semver "^5.5.1"
+ strip-ansi "^4.0.0"
+ strip-json-comments "^2.0.1"
+ table "^5.2.3"
+ text-table "^0.2.0"
+
+eslint@~5.4.0:
+ version "5.4.0"
+ resolved "https://registry.yarnpkg.com/eslint/-/eslint-5.4.0.tgz#d068ec03006bb9e06b429dc85f7e46c1b69fac62"
+ integrity sha512-UIpL91XGex3qtL6qwyCQJar2j3osKxK9e3ano3OcGEIRM4oWIpCkDg9x95AXEC2wMs7PnxzOkPZ2gq+tsMS9yg==
+ dependencies:
+ ajv "^6.5.0"
+ babel-code-frame "^6.26.0"
+ chalk "^2.1.0"
+ cross-spawn "^6.0.5"
+ debug "^3.1.0"
+ doctrine "^2.1.0"
+ eslint-scope "^4.0.0"
+ eslint-utils "^1.3.1"
+ eslint-visitor-keys "^1.0.0"
+ espree "^4.0.0"
+ esquery "^1.0.1"
+ esutils "^2.0.2"
+ file-entry-cache "^2.0.0"
+ functional-red-black-tree "^1.0.1"
+ glob "^7.1.2"
+ globals "^11.7.0"
+ ignore "^4.0.2"
+ imurmurhash "^0.1.4"
+ inquirer "^5.2.0"
+ is-resolvable "^1.1.0"
+ js-yaml "^3.11.0"
+ json-stable-stringify-without-jsonify "^1.0.1"
+ levn "^0.3.0"
+ lodash "^4.17.5"
+ minimatch "^3.0.4"
+ mkdirp "^0.5.1"
+ natural-compare "^1.4.0"
+ optionator "^0.8.2"
+ path-is-inside "^1.0.2"
+ pluralize "^7.0.0"
+ progress "^2.0.0"
+ regexpp "^2.0.0"
+ require-uncached "^1.0.3"
+ semver "^5.5.0"
+ strip-ansi "^4.0.0"
+ strip-json-comments "^2.0.1"
+ table "^4.0.3"
+ text-table "^0.2.0"
+
+espree@^4.0.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/espree/-/espree-4.1.0.tgz#728d5451e0fd156c04384a7ad89ed51ff54eb25f"
+ integrity sha512-I5BycZW6FCVIub93TeVY1s7vjhP9CY6cXCznIRfiig7nRviKZYdRnj/sHEWC6A7WE9RDWOFq9+7OsWSYz8qv2w==
+ dependencies:
+ acorn "^6.0.2"
+ acorn-jsx "^5.0.0"
+ eslint-visitor-keys "^1.0.0"
+
+espree@^5.0.1:
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/espree/-/espree-5.0.1.tgz#5d6526fa4fc7f0788a5cf75b15f30323e2f81f7a"
+ integrity sha512-qWAZcWh4XE/RwzLJejfcofscgMc9CamR6Tn1+XRXNzrvUSSbiAjGOI/fggztjIi7y9VLPqnICMIPiGyr8JaZ0A==
+ dependencies:
+ acorn "^6.0.7"
+ acorn-jsx "^5.0.0"
+ eslint-visitor-keys "^1.0.0"
+
+esprima@^4.0.0:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71"
+ integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==
+
+esquery@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.0.1.tgz#406c51658b1f5991a5f9b62b1dc25b00e3e5c708"
+ integrity sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==
+ dependencies:
+ estraverse "^4.0.0"
+
+esrecurse@^4.1.0:
+ version "4.2.1"
+ resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.1.tgz#007a3b9fdbc2b3bb87e4879ea19c92fdbd3942cf"
+ integrity sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==
+ dependencies:
+ estraverse "^4.1.0"
+
+estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1:
+ version "4.2.0"
+ resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13"
+ integrity sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=
+
+esutils@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b"
+ integrity sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=
+
+etag@~1.8.1:
+ version "1.8.1"
+ resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887"
+ integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=
+
+events-to-array@^1.0.1:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/events-to-array/-/events-to-array-1.1.2.tgz#2d41f563e1fe400ed4962fe1a4d5c6a7539df7f6"
+ integrity sha1-LUH1Y+H+QA7Uli/hpNXGp1Od9/Y=
+
+events@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/events/-/events-3.0.0.tgz#9a0a0dfaf62893d92b875b8f2698ca4114973e88"
+ integrity sha512-Dc381HFWJzEOhQ+d8pkNon++bk9h6cdAoAj4iE6Q4y6xgTzySWXlKn05/TVNpjnfRqi/X0EpJEJohPjNI3zpVA==
+
+evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02"
+ integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==
+ dependencies:
+ md5.js "^1.3.4"
+ safe-buffer "^5.1.1"
+
+execa@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8"
+ integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==
+ dependencies:
+ cross-spawn "^6.0.0"
+ get-stream "^4.0.0"
+ is-stream "^1.1.0"
+ npm-run-path "^2.0.0"
+ p-finally "^1.0.0"
+ signal-exit "^3.0.0"
+ strip-eof "^1.0.0"
+
+exit-hook@^1.0.0:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/exit-hook/-/exit-hook-1.1.1.tgz#f05ca233b48c05d54fff07765df8507e95c02ff8"
+ integrity sha1-8FyiM7SMBdVP/wd2XfhQfpXAL/g=
+
+expand-brackets@^0.1.4:
+ version "0.1.5"
+ resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b"
+ integrity sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=
+ dependencies:
+ is-posix-bracket "^0.1.0"
+
+expand-brackets@^2.1.4:
+ version "2.1.4"
+ resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622"
+ integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI=
+ dependencies:
+ debug "^2.3.3"
+ define-property "^0.2.5"
+ extend-shallow "^2.0.1"
+ posix-character-classes "^0.1.0"
+ regex-not "^1.0.0"
+ snapdragon "^0.8.1"
+ to-regex "^3.0.1"
+
+expand-range@^1.8.1:
+ version "1.8.2"
+ resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337"
+ integrity sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=
+ dependencies:
+ fill-range "^2.1.0"
+
+expand-tilde@^2.0.0, expand-tilde@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-2.0.2.tgz#97e801aa052df02454de46b02bf621642cdc8502"
+ integrity sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=
+ dependencies:
+ homedir-polyfill "^1.0.1"
+
+express@^4.16.4:
+ version "4.17.1"
+ resolved "https://registry.yarnpkg.com/express/-/express-4.17.1.tgz#4491fc38605cf51f8629d39c2b5d026f98a4c134"
+ integrity sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==
+ dependencies:
+ accepts "~1.3.7"
+ array-flatten "1.1.1"
+ body-parser "1.19.0"
+ content-disposition "0.5.3"
+ content-type "~1.0.4"
+ cookie "0.4.0"
+ cookie-signature "1.0.6"
+ debug "2.6.9"
+ depd "~1.1.2"
+ encodeurl "~1.0.2"
+ escape-html "~1.0.3"
+ etag "~1.8.1"
+ finalhandler "~1.1.2"
+ fresh "0.5.2"
+ merge-descriptors "1.0.1"
+ methods "~1.1.2"
+ on-finished "~2.3.0"
+ parseurl "~1.3.3"
+ path-to-regexp "0.1.7"
+ proxy-addr "~2.0.5"
+ qs "6.7.0"
+ range-parser "~1.2.1"
+ safe-buffer "5.1.2"
+ send "0.17.1"
+ serve-static "1.14.1"
+ setprototypeof "1.1.1"
+ statuses "~1.5.0"
+ type-is "~1.6.18"
+ utils-merge "1.0.1"
+ vary "~1.1.2"
+
+extend-shallow@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f"
+ integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=
+ dependencies:
+ is-extendable "^0.1.0"
+
+extend-shallow@^3.0.0, extend-shallow@^3.0.2:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8"
+ integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=
+ dependencies:
+ assign-symbols "^1.0.0"
+ is-extendable "^1.0.1"
+
+extend@^3.0.0, extend@~3.0.2:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa"
+ integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==
+
+external-editor@^2.1.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-2.2.0.tgz#045511cfd8d133f3846673d1047c154e214ad3d5"
+ integrity sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A==
+ dependencies:
+ chardet "^0.4.0"
+ iconv-lite "^0.4.17"
+ tmp "^0.0.33"
+
+external-editor@^3.0.3:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495"
+ integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==
+ dependencies:
+ chardet "^0.7.0"
+ iconv-lite "^0.4.24"
+ tmp "^0.0.33"
+
+extglob@^0.3.1:
+ version "0.3.2"
+ resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1"
+ integrity sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=
+ dependencies:
+ is-extglob "^1.0.0"
+
+extglob@^2.0.4:
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543"
+ integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==
+ dependencies:
+ array-unique "^0.3.2"
+ define-property "^1.0.0"
+ expand-brackets "^2.1.4"
+ extend-shallow "^2.0.1"
+ fragment-cache "^0.2.1"
+ regex-not "^1.0.0"
+ snapdragon "^0.8.1"
+ to-regex "^3.0.1"
+
+extsprintf@1.3.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05"
+ integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=
+
+extsprintf@^1.2.0:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f"
+ integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8=
+
+fast-deep-equal@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49"
+ integrity sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=
+
+fast-glob@^2.0.2:
+ version "2.2.7"
+ resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-2.2.7.tgz#6953857c3afa475fff92ee6015d52da70a4cd39d"
+ integrity sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw==
+ dependencies:
+ "@mrmlnc/readdir-enhanced" "^2.2.1"
+ "@nodelib/fs.stat" "^1.1.2"
+ glob-parent "^3.1.0"
+ is-glob "^4.0.0"
+ merge2 "^1.2.3"
+ micromatch "^3.1.10"
+
+fast-json-stable-stringify@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2"
+ integrity sha1-1RQsDK7msRifh9OnYREGT4bIu/I=
+
+fast-levenshtein@~2.0.4:
+ version "2.0.6"
+ resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917"
+ integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=
+
+fault@^1.0.0:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/fault/-/fault-1.0.3.tgz#4da88cf979b6b792b4e13c7ec836767725170b7e"
+ integrity sha512-sfFuP4X0hzrbGKjAUNXYvNqsZ5F6ohx/dZ9I0KQud/aiZNwg263r5L9yGB0clvXHCkzXh5W3t7RSHchggYIFmA==
+ dependencies:
+ format "^0.2.2"
+
+figgy-pudding@^3.5.1:
+ version "3.5.1"
+ resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.1.tgz#862470112901c727a0e495a80744bd5baa1d6790"
+ integrity sha512-vNKxJHTEKNThjfrdJwHc7brvM6eVevuO5nTj6ez8ZQ1qbXTvGthucRF7S4vf2cr71QVnT70V34v0S1DyQsti0w==
+
+figures@^1.7.0:
+ version "1.7.0"
+ resolved "https://registry.yarnpkg.com/figures/-/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e"
+ integrity sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=
+ dependencies:
+ escape-string-regexp "^1.0.5"
+ object-assign "^4.1.0"
+
+figures@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962"
+ integrity sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=
+ dependencies:
+ escape-string-regexp "^1.0.5"
+
+file-entry-cache@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-2.0.0.tgz#c392990c3e684783d838b8c84a45d8a048458361"
+ integrity sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=
+ dependencies:
+ flat-cache "^1.2.1"
+ object-assign "^4.0.1"
+
+file-entry-cache@^5.0.1:
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-5.0.1.tgz#ca0f6efa6dd3d561333fb14515065c2fafdf439c"
+ integrity sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==
+ dependencies:
+ flat-cache "^2.0.1"
+
+filename-regex@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26"
+ integrity sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=
+
+fill-range@^2.1.0:
+ version "2.2.4"
+ resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.4.tgz#eb1e773abb056dcd8df2bfdf6af59b8b3a936565"
+ integrity sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==
+ dependencies:
+ is-number "^2.1.0"
+ isobject "^2.0.0"
+ randomatic "^3.0.0"
+ repeat-element "^1.1.2"
+ repeat-string "^1.5.2"
+
+fill-range@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7"
+ integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=
+ dependencies:
+ extend-shallow "^2.0.1"
+ is-number "^3.0.0"
+ repeat-string "^1.6.1"
+ to-regex-range "^2.1.0"
+
+fill-range@^7.0.1:
+ version "7.0.1"
+ resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40"
+ integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==
+ dependencies:
+ to-regex-range "^5.0.1"
+
+finalhandler@~1.1.2:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d"
+ integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==
+ dependencies:
+ debug "2.6.9"
+ encodeurl "~1.0.2"
+ escape-html "~1.0.3"
+ on-finished "~2.3.0"
+ parseurl "~1.3.3"
+ statuses "~1.5.0"
+ unpipe "~1.0.0"
+
+find-cache-dir@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7"
+ integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==
+ dependencies:
+ commondir "^1.0.1"
+ make-dir "^2.0.0"
+ pkg-dir "^3.0.0"
+
+find-root@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/find-root/-/find-root-1.1.0.tgz#abcfc8ba76f708c42a97b3d685b7e9450bfb9ce4"
+ integrity sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==
+
+find-up@^1.0.0:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f"
+ integrity sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=
+ dependencies:
+ path-exists "^2.0.0"
+ pinkie-promise "^2.0.0"
+
+find-up@^2.0.0, find-up@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7"
+ integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c=
+ dependencies:
+ locate-path "^2.0.0"
+
+find-up@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73"
+ integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==
+ dependencies:
+ locate-path "^3.0.0"
+
+find-up@^4.0.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19"
+ integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==
+ dependencies:
+ locate-path "^5.0.0"
+ path-exists "^4.0.0"
+
+findup-sync@3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-3.0.0.tgz#17b108f9ee512dfb7a5c7f3c8b27ea9e1a9c08d1"
+ integrity sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg==
+ dependencies:
+ detect-file "^1.0.0"
+ is-glob "^4.0.0"
+ micromatch "^3.0.4"
+ resolve-dir "^1.0.1"
+
+flat-cache@^1.2.1:
+ version "1.3.4"
+ resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-1.3.4.tgz#2c2ef77525cc2929007dfffa1dd314aa9c9dee6f"
+ integrity sha512-VwyB3Lkgacfik2vhqR4uv2rvebqmDvFu4jlN/C1RzWoJEo8I7z4Q404oiqYCkq41mni8EzQnm95emU9seckwtg==
+ dependencies:
+ circular-json "^0.3.1"
+ graceful-fs "^4.1.2"
+ rimraf "~2.6.2"
+ write "^0.2.1"
+
+flat-cache@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-2.0.1.tgz#5d296d6f04bda44a4630a301413bdbc2ec085ec0"
+ integrity sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==
+ dependencies:
+ flatted "^2.0.0"
+ rimraf "2.6.3"
+ write "1.0.3"
+
+flatted@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.1.tgz#69e57caa8f0eacbc281d2e2cb458d46fdb449e08"
+ integrity sha512-a1hQMktqW9Nmqr5aktAux3JMNqaucxGcjtjWnZLHX7yyPCmlSV3M54nGYbqT8K+0GhF3NBgmJCc3ma+WOgX8Jg==
+
+flush-write-stream@^1.0.0:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.1.1.tgz#8dd7d873a1babc207d94ead0c2e0e44276ebf2e8"
+ integrity sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==
+ dependencies:
+ inherits "^2.0.3"
+ readable-stream "^2.3.6"
+
+fn-name@^2.0.1, fn-name@~2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/fn-name/-/fn-name-2.0.1.tgz#5214d7537a4d06a4a301c0cc262feb84188002e7"
+ integrity sha1-UhTXU3pNBqSjAcDMJi/rhBiAAuc=
+
+folder-hash@^2.1.1:
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/folder-hash/-/folder-hash-2.1.2.tgz#7109f9cd0cbca271936d1b5544b156d6571e6cfd"
+ integrity sha512-PmMwEZyNN96EMshf7sek4OIB7ADNsHOJ7VIw7pO0PBI0BNfEsi7U8U56TBjjqqwQ0WuBv8se0HEfmbw5b/Rk+w==
+ dependencies:
+ debug "^3.1.0"
+ graceful-fs "~4.1.11"
+ minimatch "~3.0.4"
+
+for-in@^1.0.1, for-in@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80"
+ integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=
+
+for-own@^0.1.4:
+ version "0.1.5"
+ resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce"
+ integrity sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=
+ dependencies:
+ for-in "^1.0.1"
+
+forever-agent@~0.6.1:
+ version "0.6.1"
+ resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91"
+ integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=
+
+form-data@~2.3.2:
+ version "2.3.3"
+ resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6"
+ integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==
+ dependencies:
+ asynckit "^0.4.0"
+ combined-stream "^1.0.6"
+ mime-types "^2.1.12"
+
+format@^0.2.2:
+ version "0.2.2"
+ resolved "https://registry.yarnpkg.com/format/-/format-0.2.2.tgz#d6170107e9efdc4ed30c9dc39016df942b5cb58b"
+ integrity sha1-1hcBB+nv3E7TDJ3DkBbflCtctYs=
+
+forwarded@~0.1.2:
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84"
+ integrity sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=
+
+fragment-cache@^0.2.1:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19"
+ integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=
+ dependencies:
+ map-cache "^0.2.2"
+
+fresh@0.5.2:
+ version "0.5.2"
+ resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7"
+ integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=
+
+from2@^2.1.0:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af"
+ integrity sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=
+ dependencies:
+ inherits "^2.0.1"
+ readable-stream "^2.0.0"
+
+fs-constants@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad"
+ integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==
+
+fs-extra@^7.0.1:
+ version "7.0.1"
+ resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9"
+ integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==
+ dependencies:
+ graceful-fs "^4.1.2"
+ jsonfile "^4.0.0"
+ universalify "^0.1.0"
+
+fs-minipass@^1.2.5:
+ version "1.2.6"
+ resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.6.tgz#2c5cc30ded81282bfe8a0d7c7c1853ddeb102c07"
+ integrity sha512-crhvyXcMejjv3Z5d2Fa9sf5xLYVCF5O1c71QxbVnbLsmYMBEvDAftewesN/HhY03YRoA7zOMxjNGrF5svGaaeQ==
+ dependencies:
+ minipass "^2.2.1"
+
+fs-write-stream-atomic@^1.0.8:
+ version "1.0.10"
+ resolved "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9"
+ integrity sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=
+ dependencies:
+ graceful-fs "^4.1.2"
+ iferr "^0.1.5"
+ imurmurhash "^0.1.4"
+ readable-stream "1 || 2"
+
+fs.realpath@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
+ integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8=
+
+fsevents@^1.0.0, fsevents@^1.2.7:
+ version "1.2.9"
+ resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.9.tgz#3f5ed66583ccd6f400b5a00db6f7e861363e388f"
+ integrity sha512-oeyj2H3EjjonWcFjD5NvZNE9Rqe4UW+nQBU2HNeKw0koVLEFIhtyETyAakeAM3de7Z/SW5kcA+fZUait9EApnw==
+ dependencies:
+ nan "^2.12.1"
+ node-pre-gyp "^0.12.0"
+
+function-bind@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
+ integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==
+
+functional-red-black-tree@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327"
+ integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=
+
+g-status@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/g-status/-/g-status-2.0.2.tgz#270fd32119e8fc9496f066fe5fe88e0a6bc78b97"
+ integrity sha512-kQoE9qH+T1AHKgSSD0Hkv98bobE90ILQcXAF4wvGgsr7uFqNvwmh8j+Lq3l0RVt3E3HjSbv2B9biEGcEtpHLCA==
+ dependencies:
+ arrify "^1.0.1"
+ matcher "^1.0.0"
+ simple-git "^1.85.0"
+
+gauge@~2.7.3:
+ version "2.7.4"
+ resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7"
+ integrity sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=
+ dependencies:
+ aproba "^1.0.3"
+ console-control-strings "^1.0.0"
+ has-unicode "^2.0.0"
+ object-assign "^4.1.0"
+ signal-exit "^3.0.0"
+ string-width "^1.0.1"
+ strip-ansi "^3.0.1"
+ wide-align "^1.1.0"
+
+get-caller-file@^2.0.1:
+ version "2.0.5"
+ resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e"
+ integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==
+
+get-func-name@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.0.tgz#ead774abee72e20409433a066366023dd6887a41"
+ integrity sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=
+
+get-own-enumerable-property-symbols@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.0.tgz#b877b49a5c16aefac3655f2ed2ea5b684df8d203"
+ integrity sha512-CIJYJC4GGF06TakLg8z4GQKvDsx9EMspVxOYih7LerEL/WosUnFIww45CGfxfeKHqlg3twgUrYRT1O3WQqjGCg==
+
+get-stdin@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe"
+ integrity sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=
+
+get-stdin@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-6.0.0.tgz#9e09bf712b360ab9225e812048f71fde9c89657b"
+ integrity sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==
+
+get-stdin@^7.0.0:
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-7.0.0.tgz#8d5de98f15171a125c5e516643c7a6d0ea8a96f6"
+ integrity sha512-zRKcywvrXlXsA0v0i9Io4KDRaAw7+a1ZpjRwl9Wox8PFlVCCHra7E9c4kqXCoCM9nR5tBkaTTZRBoCm60bFqTQ==
+
+get-stream@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14"
+ integrity sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=
+
+get-stream@^4.0.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5"
+ integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==
+ dependencies:
+ pump "^3.0.0"
+
+get-value@^2.0.3, get-value@^2.0.6:
+ version "2.0.6"
+ resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28"
+ integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=
+
+getpass@^0.1.1:
+ version "0.1.7"
+ resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa"
+ integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=
+ dependencies:
+ assert-plus "^1.0.0"
+
+glob-base@^0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4"
+ integrity sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=
+ dependencies:
+ glob-parent "^2.0.0"
+ is-glob "^2.0.0"
+
+glob-parent@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28"
+ integrity sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=
+ dependencies:
+ is-glob "^2.0.0"
+
+glob-parent@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae"
+ integrity sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=
+ dependencies:
+ is-glob "^3.1.0"
+ path-dirname "^1.0.0"
+
+glob-to-regexp@^0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz#8c5a1494d2066c570cc3bfe4496175acc4d502ab"
+ integrity sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=
+
+glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4:
+ version "7.1.4"
+ resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.4.tgz#aa608a2f6c577ad357e1ae5a5c26d9a8d1969255"
+ integrity sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==
+ dependencies:
+ fs.realpath "^1.0.0"
+ inflight "^1.0.4"
+ inherits "2"
+ minimatch "^3.0.4"
+ once "^1.3.0"
+ path-is-absolute "^1.0.0"
+
+global-modules@2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-2.0.0.tgz#997605ad2345f27f51539bea26574421215c7780"
+ integrity sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==
+ dependencies:
+ global-prefix "^3.0.0"
+
+global-modules@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-1.0.0.tgz#6d770f0eb523ac78164d72b5e71a8877265cc3ea"
+ integrity sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==
+ dependencies:
+ global-prefix "^1.0.1"
+ is-windows "^1.0.1"
+ resolve-dir "^1.0.0"
+
+global-prefix@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-1.0.2.tgz#dbf743c6c14992593c655568cb66ed32c0122ebe"
+ integrity sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=
+ dependencies:
+ expand-tilde "^2.0.2"
+ homedir-polyfill "^1.0.1"
+ ini "^1.3.4"
+ is-windows "^1.0.1"
+ which "^1.2.14"
+
+global-prefix@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-3.0.0.tgz#fc85f73064df69f50421f47f883fe5b913ba9b97"
+ integrity sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==
+ dependencies:
+ ini "^1.3.5"
+ kind-of "^6.0.2"
+ which "^1.3.1"
+
+globals@^11.7.0:
+ version "11.12.0"
+ resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e"
+ integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==
+
+globby@^6.1.0:
+ version "6.1.0"
+ resolved "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c"
+ integrity sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=
+ dependencies:
+ array-union "^1.0.1"
+ glob "^7.0.3"
+ object-assign "^4.0.1"
+ pify "^2.0.0"
+ pinkie-promise "^2.0.0"
+
+globby@^8.0.1:
+ version "8.0.2"
+ resolved "https://registry.yarnpkg.com/globby/-/globby-8.0.2.tgz#5697619ccd95c5275dbb2d6faa42087c1a941d8d"
+ integrity sha512-yTzMmKygLp8RUpG1Ymu2VXPSJQZjNAZPD4ywgYEaG7e4tBJeUQBO8OpXrf1RCNcEs5alsoJYPAMiIHP0cmeC7w==
+ dependencies:
+ array-union "^1.0.1"
+ dir-glob "2.0.0"
+ fast-glob "^2.0.2"
+ glob "^7.1.2"
+ ignore "^3.3.5"
+ pify "^3.0.0"
+ slash "^1.0.0"
+
+got@^6.3.0:
+ version "6.7.1"
+ resolved "https://registry.yarnpkg.com/got/-/got-6.7.1.tgz#240cd05785a9a18e561dc1b44b41c763ef1e8db0"
+ integrity sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA=
+ dependencies:
+ create-error-class "^3.0.0"
+ duplexer3 "^0.1.4"
+ get-stream "^3.0.0"
+ is-redirect "^1.0.0"
+ is-retry-allowed "^1.0.0"
+ is-stream "^1.0.0"
+ lowercase-keys "^1.0.0"
+ safe-buffer "^5.0.1"
+ timed-out "^4.0.0"
+ unzip-response "^2.0.1"
+ url-parse-lax "^1.0.0"
+
+graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.1.9:
+ version "4.2.0"
+ resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.0.tgz#8d8fdc73977cb04104721cb53666c1ca64cd328b"
+ integrity sha512-jpSvDPV4Cq/bgtpndIWbI5hmYxhQGHPC4d4cqBPb4DLniCfhJokdXhwhaDuLBGLQdvvRum/UiX6ECVIPvDXqdg==
+
+graceful-fs@~4.1.11:
+ version "4.1.15"
+ resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.15.tgz#ffb703e1066e8a0eeaa4c8b80ba9253eeefbfb00"
+ integrity sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==
+
+gunzip-maybe@^1.3.1:
+ version "1.4.1"
+ resolved "https://registry.yarnpkg.com/gunzip-maybe/-/gunzip-maybe-1.4.1.tgz#39c72ed89d1b49ba708e18776500488902a52027"
+ integrity sha512-qtutIKMthNJJgeHQS7kZ9FqDq59/Wn0G2HYCRNjpup7yKfVI6/eqwpmroyZGFoCYaG+sW6psNVb4zoLADHpp2g==
+ dependencies:
+ browserify-zlib "^0.1.4"
+ is-deflate "^1.0.0"
+ is-gzip "^1.0.0"
+ peek-stream "^1.1.0"
+ pumpify "^1.3.3"
+ through2 "^2.0.3"
+
+har-schema@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92"
+ integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=
+
+har-validator@~5.1.0:
+ version "5.1.3"
+ resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.3.tgz#1ef89ebd3e4996557675eed9893110dc350fa080"
+ integrity sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==
+ dependencies:
+ ajv "^6.5.5"
+ har-schema "^2.0.0"
+
+has-ansi@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91"
+ integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=
+ dependencies:
+ ansi-regex "^2.0.0"
+
+has-flag@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-2.0.0.tgz#e8207af1cc7b30d446cc70b734b5e8be18f88d51"
+ integrity sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=
+
+has-flag@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd"
+ integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0=
+
+has-symbols@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.0.tgz#ba1a8f1af2a0fc39650f5c850367704122063b44"
+ integrity sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=
+
+has-unicode@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9"
+ integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=
+
+has-value@^0.3.1:
+ version "0.3.1"
+ resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f"
+ integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=
+ dependencies:
+ get-value "^2.0.3"
+ has-values "^0.1.4"
+ isobject "^2.0.0"
+
+has-value@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177"
+ integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=
+ dependencies:
+ get-value "^2.0.6"
+ has-values "^1.0.0"
+ isobject "^3.0.0"
+
+has-values@^0.1.4:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771"
+ integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E=
+
+has-values@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f"
+ integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=
+ dependencies:
+ is-number "^3.0.0"
+ kind-of "^4.0.0"
+
+has@^1.0.1, has@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796"
+ integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==
+ dependencies:
+ function-bind "^1.1.1"
+
+hash-base@^3.0.0:
+ version "3.0.4"
+ resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.0.4.tgz#5fc8686847ecd73499403319a6b0a3f3f6ae4918"
+ integrity sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=
+ dependencies:
+ inherits "^2.0.1"
+ safe-buffer "^5.0.1"
+
+hash.js@^1.0.0, hash.js@^1.0.3:
+ version "1.1.7"
+ resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42"
+ integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==
+ dependencies:
+ inherits "^2.0.3"
+ minimalistic-assert "^1.0.1"
+
+hmac-drbg@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1"
+ integrity sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=
+ dependencies:
+ hash.js "^1.0.3"
+ minimalistic-assert "^1.0.0"
+ minimalistic-crypto-utils "^1.0.1"
+
+homedir-polyfill@^1.0.1:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz#743298cef4e5af3e194161fbadcc2151d3a058e8"
+ integrity sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==
+ dependencies:
+ parse-passwd "^1.0.0"
+
+hosted-git-info@^2.1.4:
+ version "2.7.1"
+ resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.7.1.tgz#97f236977bd6e125408930ff6de3eec6281ec047"
+ integrity sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==
+
+http-errors@1.7.2:
+ version "1.7.2"
+ resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.2.tgz#4f5029cf13239f31036e5b2e55292bcfbcc85c8f"
+ integrity sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==
+ dependencies:
+ depd "~1.1.2"
+ inherits "2.0.3"
+ setprototypeof "1.1.1"
+ statuses ">= 1.5.0 < 2"
+ toidentifier "1.0.0"
+
+http-errors@~1.7.2:
+ version "1.7.3"
+ resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.3.tgz#6c619e4f9c60308c38519498c14fbb10aacebb06"
+ integrity sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw==
+ dependencies:
+ depd "~1.1.2"
+ inherits "2.0.4"
+ setprototypeof "1.1.1"
+ statuses ">= 1.5.0 < 2"
+ toidentifier "1.0.0"
+
+http-signature@~1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1"
+ integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=
+ dependencies:
+ assert-plus "^1.0.0"
+ jsprim "^1.2.2"
+ sshpk "^1.7.0"
+
+https-browserify@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73"
+ integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=
+
+husky@^2.2.0:
+ version "2.7.0"
+ resolved "https://registry.yarnpkg.com/husky/-/husky-2.7.0.tgz#c0a9a6a3b51146224e11bba0b46bba546e461d05"
+ integrity sha512-LIi8zzT6PyFpcYKdvWRCn/8X+6SuG2TgYYMrM6ckEYhlp44UcEduVymZGIZNLiwOUjrEud+78w/AsAiqJA/kRg==
+ dependencies:
+ cosmiconfig "^5.2.0"
+ execa "^1.0.0"
+ find-up "^3.0.0"
+ get-stdin "^7.0.0"
+ is-ci "^2.0.0"
+ pkg-dir "^4.1.0"
+ please-upgrade-node "^3.1.1"
+ read-pkg "^5.1.1"
+ run-node "^1.0.0"
+ slash "^3.0.0"
+
+iconv-lite@0.4.24, iconv-lite@^0.4.17, iconv-lite@^0.4.24, iconv-lite@^0.4.4:
+ version "0.4.24"
+ resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b"
+ integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==
+ dependencies:
+ safer-buffer ">= 2.1.2 < 3"
+
+ieee754@^1.1.4:
+ version "1.1.13"
+ resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84"
+ integrity sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==
+
+iferr@^0.1.5:
+ version "0.1.5"
+ resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501"
+ integrity sha1-xg7taebY/bazEEofy8ocGS3FtQE=
+
+ignore-walk@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.1.tgz#a83e62e7d272ac0e3b551aaa82831a19b69f82f8"
+ integrity sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ==
+ dependencies:
+ minimatch "^3.0.4"
+
+ignore@^3.0.9, ignore@^3.2.0, ignore@^3.3.5:
+ version "3.3.10"
+ resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043"
+ integrity sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==
+
+ignore@^4.0.2, ignore@^4.0.6:
+ version "4.0.6"
+ resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc"
+ integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==
+
+ignore@^5.0.2:
+ version "5.1.2"
+ resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.2.tgz#e28e584d43ad7e92f96995019cc43b9e1ac49558"
+ integrity sha512-vdqWBp7MyzdmHkkRWV5nY+PfGRbYbahfuvsBCh277tq+w9zyNi7h5CYJCK0kmzti9kU+O/cB7sE8HvKv6aXAKQ==
+
+import-fresh@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-2.0.0.tgz#d81355c15612d386c61f9ddd3922d4304822a546"
+ integrity sha1-2BNVwVYS04bGH53dOSLUMEgipUY=
+ dependencies:
+ caller-path "^2.0.0"
+ resolve-from "^3.0.0"
+
+import-fresh@^3.0.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.1.0.tgz#6d33fa1dcef6df930fae003446f33415af905118"
+ integrity sha512-PpuksHKGt8rXfWEr9m9EHIpgyyaltBy8+eF6GJM0QCAxMgxCfucMF3mjecK2QsJr0amJW7gTqh5/wht0z2UhEQ==
+ dependencies:
+ parent-module "^1.0.0"
+ resolve-from "^4.0.0"
+
+import-local@2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/import-local/-/import-local-2.0.0.tgz#55070be38a5993cf18ef6db7e961f5bee5c5a09d"
+ integrity sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==
+ dependencies:
+ pkg-dir "^3.0.0"
+ resolve-cwd "^2.0.0"
+
+imurmurhash@^0.1.4:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea"
+ integrity sha1-khi5srkoojixPcT7a21XbyMUU+o=
+
+indent-string@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80"
+ integrity sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=
+ dependencies:
+ repeating "^2.0.0"
+
+indent-string@^3.0.0:
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-3.2.0.tgz#4a5fd6d27cc332f37e5419a504dbb837105c9289"
+ integrity sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=
+
+inflight@^1.0.4:
+ version "1.0.6"
+ resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
+ integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=
+ dependencies:
+ once "^1.3.0"
+ wrappy "1"
+
+inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.1, inherits@~2.0.3:
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
+ integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
+
+inherits@2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1"
+ integrity sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=
+
+inherits@2.0.3:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
+ integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=
+
+ini@^1.3.4, ini@^1.3.5, ini@~1.3.0:
+ version "1.3.5"
+ resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927"
+ integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==
+
+inquirer@^5.2.0:
+ version "5.2.0"
+ resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-5.2.0.tgz#db350c2b73daca77ff1243962e9f22f099685726"
+ integrity sha512-E9BmnJbAKLPGonz0HeWHtbKf+EeSP93paWO3ZYoUpq/aowXvYGjjCSuashhXPpzbArIjBbji39THkxTz9ZeEUQ==
+ dependencies:
+ ansi-escapes "^3.0.0"
+ chalk "^2.0.0"
+ cli-cursor "^2.1.0"
+ cli-width "^2.0.0"
+ external-editor "^2.1.0"
+ figures "^2.0.0"
+ lodash "^4.3.0"
+ mute-stream "0.0.7"
+ run-async "^2.2.0"
+ rxjs "^5.5.2"
+ string-width "^2.1.0"
+ strip-ansi "^4.0.0"
+ through "^2.3.6"
+
+inquirer@^6.2.2:
+ version "6.4.1"
+ resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.4.1.tgz#7bd9e5ab0567cd23b41b0180b68e0cfa82fc3c0b"
+ integrity sha512-/Jw+qPZx4EDYsaT6uz7F4GJRNFMRdKNeUZw3ZnKV8lyuUgz/YWRCSUAJMZSVhSq4Ec0R2oYnyi6b3d4JXcL5Nw==
+ dependencies:
+ ansi-escapes "^3.2.0"
+ chalk "^2.4.2"
+ cli-cursor "^2.1.0"
+ cli-width "^2.0.0"
+ external-editor "^3.0.3"
+ figures "^2.0.0"
+ lodash "^4.17.11"
+ mute-stream "0.0.7"
+ run-async "^2.2.0"
+ rxjs "^6.4.0"
+ string-width "^2.1.0"
+ strip-ansi "^5.1.0"
+ through "^2.3.6"
+
+interpret@1.2.0, interpret@^1.0.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.2.0.tgz#d5061a6224be58e8083985f5014d844359576296"
+ integrity sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw==
+
+invert-kv@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-2.0.0.tgz#7393f5afa59ec9ff5f67a27620d11c226e3eec02"
+ integrity sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==
+
+ipaddr.js@1.9.0:
+ version "1.9.0"
+ resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.0.tgz#37df74e430a0e47550fe54a2defe30d8acd95f65"
+ integrity sha512-M4Sjn6N/+O6/IXSJseKqHoFc+5FdGJ22sXqnjTpdZweHK64MzEPAyQZyEU3R/KRv2GLoa7nNtg/C2Ev6m7z+eA==
+
+irregular-plurals@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/irregular-plurals/-/irregular-plurals-2.0.0.tgz#39d40f05b00f656d0b7fa471230dd3b714af2872"
+ integrity sha512-Y75zBYLkh0lJ9qxeHlMjQ7bSbyiSqNW/UOPWDmzC7cXskL1hekSITh1Oc6JV0XCWWZ9DE8VYSB71xocLk3gmGw==
+
+is-accessor-descriptor@^0.1.6:
+ version "0.1.6"
+ resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6"
+ integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=
+ dependencies:
+ kind-of "^3.0.2"
+
+is-accessor-descriptor@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656"
+ integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==
+ dependencies:
+ kind-of "^6.0.0"
+
+is-alphabetical@^1.0.0:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/is-alphabetical/-/is-alphabetical-1.0.3.tgz#eb04cc47219a8895d8450ace4715abff2258a1f8"
+ integrity sha512-eEMa6MKpHFzw38eKm56iNNi6GJ7lf6aLLio7Kr23sJPAECscgRtZvOBYybejWDQ2bM949Y++61PY+udzj5QMLA==
+
+is-alphanumeric@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-alphanumeric/-/is-alphanumeric-1.0.0.tgz#4a9cef71daf4c001c1d81d63d140cf53fd6889f4"
+ integrity sha1-Spzvcdr0wAHB2B1j0UDPU/1oifQ=
+
+is-alphanumerical@^1.0.0:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/is-alphanumerical/-/is-alphanumerical-1.0.3.tgz#57ae21c374277b3defe0274c640a5704b8f6657c"
+ integrity sha512-A1IGAPO5AW9vSh7omxIlOGwIqEvpW/TA+DksVOPM5ODuxKlZS09+TEM1E3275lJqO2oJ38vDpeAL3DCIiHE6eA==
+ dependencies:
+ is-alphabetical "^1.0.0"
+ is-decimal "^1.0.0"
+
+is-arrayish@^0.2.1:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d"
+ integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=
+
+is-binary-path@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898"
+ integrity sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=
+ dependencies:
+ binary-extensions "^1.0.0"
+
+is-buffer@^1.1.4, is-buffer@^1.1.5:
+ version "1.1.6"
+ resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be"
+ integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==
+
+is-callable@^1.1.4:
+ version "1.1.4"
+ resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.4.tgz#1e1adf219e1eeb684d691f9d6a05ff0d30a24d75"
+ integrity sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==
+
+is-ci@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c"
+ integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==
+ dependencies:
+ ci-info "^2.0.0"
+
+is-data-descriptor@^0.1.4:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56"
+ integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=
+ dependencies:
+ kind-of "^3.0.2"
+
+is-data-descriptor@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7"
+ integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==
+ dependencies:
+ kind-of "^6.0.0"
+
+is-date-object@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16"
+ integrity sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=
+
+is-decimal@^1.0.0:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/is-decimal/-/is-decimal-1.0.3.tgz#381068759b9dc807d8c0dc0bfbae2b68e1da48b7"
+ integrity sha512-bvLSwoDg2q6Gf+E2LEPiklHZxxiSi3XAh4Mav65mKqTfCO1HM3uBs24TjEH8iJX3bbDdLXKJXBTmGzuTUuAEjQ==
+
+is-deflate@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-deflate/-/is-deflate-1.0.0.tgz#c862901c3c161fb09dac7cdc7e784f80e98f2f14"
+ integrity sha1-yGKQHDwWH7CdrHzcfnhPgOmPLxQ=
+
+is-descriptor@^0.1.0:
+ version "0.1.6"
+ resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca"
+ integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==
+ dependencies:
+ is-accessor-descriptor "^0.1.6"
+ is-data-descriptor "^0.1.4"
+ kind-of "^5.0.0"
+
+is-descriptor@^1.0.0, is-descriptor@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec"
+ integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==
+ dependencies:
+ is-accessor-descriptor "^1.0.0"
+ is-data-descriptor "^1.0.0"
+ kind-of "^6.0.2"
+
+is-directory@^0.3.1:
+ version "0.3.1"
+ resolved "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1"
+ integrity sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=
+
+is-dotfile@^1.0.0:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.3.tgz#a6a2f32ffd2dfb04f5ca25ecd0f6b83cf798a1e1"
+ integrity sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=
+
+is-empty@^1.0.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/is-empty/-/is-empty-1.2.0.tgz#de9bb5b278738a05a0b09a57e1fb4d4a341a9f6b"
+ integrity sha1-3pu1snhzigWgsJpX4ftNSjQan2s=
+
+is-equal-shallow@^0.1.3:
+ version "0.1.3"
+ resolved "https://registry.yarnpkg.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534"
+ integrity sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=
+ dependencies:
+ is-primitive "^2.0.0"
+
+is-extendable@^0.1.0, is-extendable@^0.1.1:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89"
+ integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=
+
+is-extendable@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4"
+ integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==
+ dependencies:
+ is-plain-object "^2.0.4"
+
+is-extglob@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0"
+ integrity sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=
+
+is-extglob@^2.1.0, is-extglob@^2.1.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
+ integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=
+
+is-finite@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa"
+ integrity sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=
+ dependencies:
+ number-is-nan "^1.0.0"
+
+is-fullwidth-code-point@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb"
+ integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs=
+ dependencies:
+ number-is-nan "^1.0.0"
+
+is-fullwidth-code-point@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f"
+ integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=
+
+is-glob@^2.0.0, is-glob@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863"
+ integrity sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=
+ dependencies:
+ is-extglob "^1.0.0"
+
+is-glob@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a"
+ integrity sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=
+ dependencies:
+ is-extglob "^2.1.0"
+
+is-glob@^4.0.0:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc"
+ integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==
+ dependencies:
+ is-extglob "^2.1.1"
+
+is-gzip@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-gzip/-/is-gzip-1.0.0.tgz#6ca8b07b99c77998025900e555ced8ed80879a83"
+ integrity sha1-bKiwe5nHeZgCWQDlVc7Y7YCHmoM=
+
+is-hexadecimal@^1.0.0:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/is-hexadecimal/-/is-hexadecimal-1.0.3.tgz#e8a426a69b6d31470d3a33a47bb825cda02506ee"
+ integrity sha512-zxQ9//Q3D/34poZf8fiy3m3XVpbQc7ren15iKqrTtLPwkPD/t3Scy9Imp63FujULGxuK0ZlCwoo5xNpktFgbOA==
+
+is-hidden@^1.0.1:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/is-hidden/-/is-hidden-1.1.2.tgz#6497d48ec5affc7da0f11a3c0dadceb6752e8edd"
+ integrity sha512-kytBeNVW2QTIqZdJBDKIjP+EkUTzDT07rsc111w/gxqR6wK3ODkOswcpxgED6HU6t7fEhOxqojVZ2a2kU9rj+A==
+
+is-number@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f"
+ integrity sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=
+ dependencies:
+ kind-of "^3.0.2"
+
+is-number@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195"
+ integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=
+ dependencies:
+ kind-of "^3.0.2"
+
+is-number@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/is-number/-/is-number-4.0.0.tgz#0026e37f5454d73e356dfe6564699867c6a7f0ff"
+ integrity sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==
+
+is-number@^7.0.0:
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b"
+ integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
+
+is-obj@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f"
+ integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8=
+
+is-object@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/is-object/-/is-object-1.0.1.tgz#8952688c5ec2ffd6b03ecc85e769e02903083470"
+ integrity sha1-iVJojF7C/9awPsyF52ngKQMINHA=
+
+is-observable@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/is-observable/-/is-observable-1.1.0.tgz#b3e986c8f44de950867cab5403f5a3465005975e"
+ integrity sha512-NqCa4Sa2d+u7BWc6CukaObG3Fh+CU9bvixbpcXYhy2VvYS7vVGIdAgnIS5Ks3A/cqk4rebLJ9s8zBstT2aKnIA==
+ dependencies:
+ symbol-observable "^1.1.0"
+
+is-path-cwd@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-1.0.0.tgz#d225ec23132e89edd38fda767472e62e65f1106d"
+ integrity sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=
+
+is-path-in-cwd@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz#5ac48b345ef675339bd6c7a48a912110b241cf52"
+ integrity sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ==
+ dependencies:
+ is-path-inside "^1.0.0"
+
+is-path-inside@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-1.0.1.tgz#8ef5b7de50437a3fdca6b4e865ef7aa55cb48036"
+ integrity sha1-jvW33lBDej/cprToZe96pVy0gDY=
+ dependencies:
+ path-is-inside "^1.0.1"
+
+is-plain-obj@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e"
+ integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4=
+
+is-plain-object@^2.0.3, is-plain-object@^2.0.4:
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677"
+ integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==
+ dependencies:
+ isobject "^3.0.1"
+
+is-plain-object@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-3.0.0.tgz#47bfc5da1b5d50d64110806c199359482e75a928"
+ integrity sha512-tZIpofR+P05k8Aocp7UI/2UTa9lTJSebCXpFFoR9aibpokDj/uXBsJ8luUu0tTVYKkMU6URDUuOfJZ7koewXvg==
+ dependencies:
+ isobject "^4.0.0"
+
+is-posix-bracket@^0.1.0:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4"
+ integrity sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=
+
+is-primitive@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575"
+ integrity sha1-IHurkWOEmcB7Kt8kCkGochADRXU=
+
+is-promise@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa"
+ integrity sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=
+
+is-redirect@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-redirect/-/is-redirect-1.0.0.tgz#1d03dded53bd8db0f30c26e4f95d36fc7c87dc24"
+ integrity sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ=
+
+is-regex@^1.0.4:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491"
+ integrity sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=
+ dependencies:
+ has "^1.0.1"
+
+is-regexp@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069"
+ integrity sha1-/S2INUXEa6xaYz57mgnof6LLUGk=
+
+is-resolvable@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88"
+ integrity sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==
+
+is-retry-allowed@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz#11a060568b67339444033d0125a61a20d564fb34"
+ integrity sha1-EaBgVotnM5REAz0BJaYaINVk+zQ=
+
+is-stream@^1.0.0, is-stream@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44"
+ integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ=
+
+is-symbol@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.2.tgz#a055f6ae57192caee329e7a860118b497a950f38"
+ integrity sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==
+ dependencies:
+ has-symbols "^1.0.0"
+
+is-typedarray@~1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a"
+ integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=
+
+is-utf8@^0.2.0:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72"
+ integrity sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=
+
+is-whitespace-character@^1.0.0:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/is-whitespace-character/-/is-whitespace-character-1.0.3.tgz#b3ad9546d916d7d3ffa78204bca0c26b56257fac"
+ integrity sha512-SNPgMLz9JzPccD3nPctcj8sZlX9DAMJSKH8bP7Z6bohCwuNgX8xbWr1eTAYXX9Vpi/aSn8Y1akL9WgM3t43YNQ==
+
+is-windows@^1.0.1, is-windows@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d"
+ integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==
+
+is-word-character@^1.0.0:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/is-word-character/-/is-word-character-1.0.3.tgz#264d15541cbad0ba833d3992c34e6b40873b08aa"
+ integrity sha512-0wfcrFgOOOBdgRNT9H33xe6Zi6yhX/uoc4U8NBZGeQQB0ctU1dnlNTyL9JM2646bHDTpsDm1Brb3VPoCIMrd/A==
+
+is-wsl@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d"
+ integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=
+
+isarray@0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf"
+ integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=
+
+isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
+ integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=
+
+isexe@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
+ integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=
+
+isobject@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89"
+ integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=
+ dependencies:
+ isarray "1.0.0"
+
+isobject@^3.0.0, isobject@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df"
+ integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8=
+
+isobject@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/isobject/-/isobject-4.0.0.tgz#3f1c9155e73b192022a80819bacd0343711697b0"
+ integrity sha512-S/2fF5wH8SJA/kmwr6HYhK/RI/OkhD84k8ntalo0iJjZikgq1XFvR5M8NPT1x5F7fBwCG3qHfnzeP/Vh/ZxCUA==
+
+isstream@~0.1.2:
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a"
+ integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=
+
+"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"
+ integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==
+
+js-tokens@^3.0.2:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b"
+ integrity sha1-mGbfOVECEw449/mWvOtlRDIJwls=
+
+js-yaml@^3.11.0, js-yaml@^3.13.0, js-yaml@^3.13.1, js-yaml@^3.2.7, js-yaml@^3.6.1:
+ version "3.13.1"
+ resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847"
+ integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==
+ dependencies:
+ argparse "^1.0.7"
+ esprima "^4.0.0"
+
+jsbn@~0.1.0:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513"
+ integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM=
+
+json-parse-better-errors@^1.0.1, json-parse-better-errors@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9"
+ integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==
+
+json-schema-traverse@^0.4.1:
+ version "0.4.1"
+ resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660"
+ integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==
+
+json-schema@0.2.3:
+ version "0.2.3"
+ resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13"
+ integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=
+
+json-stable-stringify-without-jsonify@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651"
+ integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=
+
+json-stringify-safe@~5.0.1:
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb"
+ integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=
+
+json5@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe"
+ integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==
+ dependencies:
+ minimist "^1.2.0"
+
+jsonfile@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb"
+ integrity sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=
+ optionalDependencies:
+ graceful-fs "^4.1.6"
+
+jsprim@^1.2.2:
+ version "1.4.1"
+ resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2"
+ integrity sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=
+ dependencies:
+ assert-plus "1.0.0"
+ extsprintf "1.3.0"
+ json-schema "0.2.3"
+ verror "1.10.0"
+
+jsx-ast-utils@^2.0.1:
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-2.2.1.tgz#4d4973ebf8b9d2837ee91a8208cc66f3a2776cfb"
+ integrity sha512-v3FxCcAf20DayI+uxnCuw795+oOIkVu6EnJ1+kSzhqqTZHNkTZ7B66ZgLp4oLJ/gbA64cI0B7WRoHZMSRdyVRQ==
+ dependencies:
+ array-includes "^3.0.3"
+ object.assign "^4.1.0"
+
+kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0:
+ version "3.2.2"
+ resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64"
+ integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=
+ dependencies:
+ is-buffer "^1.1.5"
+
+kind-of@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57"
+ integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc=
+ dependencies:
+ is-buffer "^1.1.5"
+
+kind-of@^5.0.0:
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d"
+ integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==
+
+kind-of@^6.0.0, kind-of@^6.0.2:
+ version "6.0.2"
+ resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051"
+ integrity sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==
+
+klaw@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/klaw/-/klaw-3.0.0.tgz#b11bec9cf2492f06756d6e809ab73a2910259146"
+ integrity sha512-0Fo5oir+O9jnXu5EefYbVK+mHMBeEVEy2cmctR1O1NECcCkPRreJKrS6Qt/j3KC2C148Dfo9i3pCmCMsdqGr0g==
+ dependencies:
+ graceful-fs "^4.1.9"
+
+lcid@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/lcid/-/lcid-2.0.0.tgz#6ef5d2df60e52f82eb228a4c373e8d1f397253cf"
+ integrity sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==
+ dependencies:
+ invert-kv "^2.0.0"
+
+levn@^0.3.0, levn@~0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee"
+ integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=
+ dependencies:
+ prelude-ls "~1.1.2"
+ type-check "~0.3.2"
+
+linkify-it@^2.0.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/linkify-it/-/linkify-it-2.2.0.tgz#e3b54697e78bf915c70a38acd78fd09e0058b1cf"
+ integrity sha512-GnAl/knGn+i1U/wjBz3akz2stz+HrHLsxMwHQGofCDfPvlf+gDKN58UtfmUquTY4/MXeE2x7k19KQmeoZi94Iw==
+ dependencies:
+ uc.micro "^1.0.1"
+
+lint-staged@^8.1.0:
+ version "8.2.1"
+ resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-8.2.1.tgz#752fcf222d9d28f323a3b80f1e668f3654ff221f"
+ integrity sha512-n0tDGR/rTCgQNwXnUf/eWIpPNddGWxC32ANTNYsj2k02iZb7Cz5ox2tytwBu+2r0zDXMEMKw7Y9OD/qsav561A==
+ dependencies:
+ chalk "^2.3.1"
+ commander "^2.14.1"
+ cosmiconfig "^5.2.0"
+ debug "^3.1.0"
+ dedent "^0.7.0"
+ del "^3.0.0"
+ execa "^1.0.0"
+ g-status "^2.0.2"
+ is-glob "^4.0.0"
+ is-windows "^1.0.2"
+ listr "^0.14.2"
+ listr-update-renderer "^0.5.0"
+ lodash "^4.17.11"
+ log-symbols "^2.2.0"
+ micromatch "^3.1.8"
+ npm-which "^3.0.1"
+ p-map "^1.1.1"
+ path-is-inside "^1.0.2"
+ pify "^3.0.0"
+ please-upgrade-node "^3.0.2"
+ staged-git-files "1.1.2"
+ string-argv "^0.0.2"
+ stringify-object "^3.2.2"
+ yup "^0.27.0"
+
+lint@^1.1.2:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/lint/-/lint-1.1.2.tgz#35ed064f322547c331358d899868664968ba371f"
+ integrity sha1-Ne0GTzIlR8MxNY2JmGhmSWi6Nx8=
+
+listr-silent-renderer@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/listr-silent-renderer/-/listr-silent-renderer-1.1.1.tgz#924b5a3757153770bf1a8e3fbf74b8bbf3f9242e"
+ integrity sha1-kktaN1cVN3C/Go4/v3S4u/P5JC4=
+
+listr-update-renderer@^0.5.0:
+ version "0.5.0"
+ resolved "https://registry.yarnpkg.com/listr-update-renderer/-/listr-update-renderer-0.5.0.tgz#4ea8368548a7b8aecb7e06d8c95cb45ae2ede6a2"
+ integrity sha512-tKRsZpKz8GSGqoI/+caPmfrypiaq+OQCbd+CovEC24uk1h952lVj5sC7SqyFUm+OaJ5HN/a1YLt5cit2FMNsFA==
+ dependencies:
+ chalk "^1.1.3"
+ cli-truncate "^0.2.1"
+ elegant-spinner "^1.0.1"
+ figures "^1.7.0"
+ indent-string "^3.0.0"
+ log-symbols "^1.0.2"
+ log-update "^2.3.0"
+ strip-ansi "^3.0.1"
+
+listr-verbose-renderer@^0.5.0:
+ version "0.5.0"
+ resolved "https://registry.yarnpkg.com/listr-verbose-renderer/-/listr-verbose-renderer-0.5.0.tgz#f1132167535ea4c1261102b9f28dac7cba1e03db"
+ integrity sha512-04PDPqSlsqIOaaaGZ+41vq5FejI9auqTInicFRndCBgE3bXG8D6W1I+mWhk+1nqbHmyhla/6BUrd5OSiHwKRXw==
+ dependencies:
+ chalk "^2.4.1"
+ cli-cursor "^2.1.0"
+ date-fns "^1.27.2"
+ figures "^2.0.0"
+
+listr@^0.14.2:
+ version "0.14.3"
+ resolved "https://registry.yarnpkg.com/listr/-/listr-0.14.3.tgz#2fea909604e434be464c50bddba0d496928fa586"
+ integrity sha512-RmAl7su35BFd/xoMamRjpIE4j3v+L28o8CT5YhAXQJm1fD+1l9ngXY8JAQRJ+tFK2i5njvi0iRUKV09vPwA0iA==
+ dependencies:
+ "@samverschueren/stream-to-observable" "^0.3.0"
+ is-observable "^1.1.0"
+ is-promise "^2.1.0"
+ is-stream "^1.1.0"
+ listr-silent-renderer "^1.1.1"
+ listr-update-renderer "^0.5.0"
+ listr-verbose-renderer "^0.5.0"
+ p-map "^2.0.0"
+ rxjs "^6.3.3"
+
+load-json-file@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0"
+ integrity sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=
+ dependencies:
+ graceful-fs "^4.1.2"
+ parse-json "^2.2.0"
+ pify "^2.0.0"
+ pinkie-promise "^2.0.0"
+ strip-bom "^2.0.0"
+
+load-json-file@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8"
+ integrity sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=
+ dependencies:
+ graceful-fs "^4.1.2"
+ parse-json "^2.2.0"
+ pify "^2.0.0"
+ strip-bom "^3.0.0"
+
+load-json-file@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b"
+ integrity sha1-L19Fq5HjMhYjT9U62rZo607AmTs=
+ dependencies:
+ graceful-fs "^4.1.2"
+ parse-json "^4.0.0"
+ pify "^3.0.0"
+ strip-bom "^3.0.0"
+
+load-plugin@^2.0.0:
+ version "2.3.1"
+ resolved "https://registry.yarnpkg.com/load-plugin/-/load-plugin-2.3.1.tgz#8024739afb4aa04de1e602e15e5b1a678c443d00"
+ integrity sha512-dYB1lbwqHgPTrruy9glukCu8Ya9vzj6TMfouCtj2H/GuJ+8syioisgKTBPxnCi6m8K8jINKfTOxOHngFkUYqHw==
+ dependencies:
+ npm-prefix "^1.2.0"
+ resolve-from "^5.0.0"
+
+loader-runner@^2.3.0:
+ version "2.4.0"
+ resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357"
+ integrity sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==
+
+loader-utils@1.2.3, loader-utils@^1.0.2, loader-utils@^1.1.0, loader-utils@^1.2.3:
+ version "1.2.3"
+ resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.2.3.tgz#1ff5dc6911c9f0a062531a4c04b609406108c2c7"
+ integrity sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==
+ dependencies:
+ big.js "^5.2.2"
+ emojis-list "^2.0.0"
+ json5 "^1.0.1"
+
+locate-path@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e"
+ integrity sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=
+ dependencies:
+ p-locate "^2.0.0"
+ path-exists "^3.0.0"
+
+locate-path@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e"
+ integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==
+ dependencies:
+ p-locate "^3.0.0"
+ path-exists "^3.0.0"
+
+locate-path@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0"
+ integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==
+ dependencies:
+ p-locate "^4.1.0"
+
+lodash.camelcase@^4.3.0:
+ version "4.3.0"
+ resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6"
+ integrity sha1-soqmKIorn8ZRA1x3EfZathkDMaY=
+
+lodash.flatten@^4.4.0:
+ version "4.4.0"
+ resolved "https://registry.yarnpkg.com/lodash.flatten/-/lodash.flatten-4.4.0.tgz#f31c22225a9632d2bbf8e4addbef240aa765a61f"
+ integrity sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=
+
+lodash.get@^4.4.2:
+ version "4.4.2"
+ resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99"
+ integrity sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=
+
+lodash.range@^3.2.0:
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/lodash.range/-/lodash.range-3.2.0.tgz#f461e588f66683f7eadeade513e38a69a565a15d"
+ integrity sha1-9GHliPZmg/fq3q3lE+OKaaVloV0=
+
+lodash.set@^4.3.2:
+ version "4.3.2"
+ resolved "https://registry.yarnpkg.com/lodash.set/-/lodash.set-4.3.2.tgz#d8757b1da807dde24816b0d6a84bea1a76230b23"
+ integrity sha1-2HV7HagH3eJIFrDWqEvqGnYjCyM=
+
+lodash.unescape@4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/lodash.unescape/-/lodash.unescape-4.0.1.tgz#bf2249886ce514cda112fae9218cdc065211fc9c"
+ integrity sha1-vyJJiGzlFM2hEvrpIYzcBlIR/Jw=
+
+lodash.uniq@^4.5.0:
+ version "4.5.0"
+ resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773"
+ integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=
+
+lodash@^4.0.0, lodash@^4.17.11:
+ version "4.17.15"
+ resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548"
+ integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==
+
+lodash@^4.17.4, lodash@^4.17.5, lodash@^4.3.0:
+ version "4.17.14"
+ resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.14.tgz#9ce487ae66c96254fe20b599f21b6816028078ba"
+ integrity sha512-mmKYbW3GLuJeX+iGP+Y7Gp1AiGHGbXHCOh/jZmrawMmsE7MS4znI3RL2FsjbqOyMayHInjOeykW7PEajUk1/xw==
+
+log-symbols@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-1.0.2.tgz#376ff7b58ea3086a0f09facc74617eca501e1a18"
+ integrity sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg=
+ dependencies:
+ chalk "^1.0.0"
+
+log-symbols@^2.2.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-2.2.0.tgz#5740e1c5d6f0dfda4ad9323b5332107ef6b4c40a"
+ integrity sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==
+ dependencies:
+ chalk "^2.0.1"
+
+log-update@^2.3.0:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/log-update/-/log-update-2.3.0.tgz#88328fd7d1ce7938b29283746f0b1bc126b24708"
+ integrity sha1-iDKP19HOeTiykoN0bwsbwSayRwg=
+ dependencies:
+ ansi-escapes "^3.0.0"
+ cli-cursor "^2.0.0"
+ wrap-ansi "^3.0.1"
+
+longest-streak@^2.0.1:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/longest-streak/-/longest-streak-2.0.3.tgz#3de7a3f47ee18e9074ded8575b5c091f5d0a4105"
+ integrity sha512-9lz5IVdpwsKLMzQi0MQ+oD9EA0mIGcWYP7jXMTZVXP8D42PwuAk+M/HBFYQoxt1G5OR8m7aSIgb1UymfWGBWEw==
+
+loose-envify@^1.4.0:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf"
+ integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==
+ dependencies:
+ js-tokens "^3.0.0 || ^4.0.0"
+
+loud-rejection@^1.0.0:
+ version "1.6.0"
+ resolved "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f"
+ integrity sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=
+ dependencies:
+ currently-unhandled "^0.4.1"
+ signal-exit "^3.0.0"
+
+lowercase-keys@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f"
+ integrity sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==
+
+lru-cache@^5.1.1:
+ version "5.1.1"
+ resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920"
+ integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==
+ dependencies:
+ yallist "^3.0.2"
+
+macos-release@^2.2.0:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/macos-release/-/macos-release-2.3.0.tgz#eb1930b036c0800adebccd5f17bc4c12de8bb71f"
+ integrity sha512-OHhSbtcviqMPt7yfw5ef5aghS2jzFVKEFyCJndQt2YpSQ9qRVSEv2axSJI1paVThEu+FFGs584h/1YhxjVqajA==
+
+make-dir@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5"
+ integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==
+ dependencies:
+ pify "^4.0.1"
+ semver "^5.6.0"
+
+make-error@^1.1.1:
+ version "1.3.5"
+ resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.5.tgz#efe4e81f6db28cadd605c70f29c831b58ef776c8"
+ integrity sha512-c3sIjNUow0+8swNwVpqoH4YCShKNFkMaw6oH1mNS2haDZQqkeZFlHS3dhoeEbKKmJB4vXpJucU6oH75aDYeE9g==
+
+mamacro@^0.0.3:
+ version "0.0.3"
+ resolved "https://registry.yarnpkg.com/mamacro/-/mamacro-0.0.3.tgz#ad2c9576197c9f1abf308d0787865bd975a3f3e4"
+ integrity sha512-qMEwh+UujcQ+kbz3T6V+wAmO2U8veoq2w+3wY8MquqwVA3jChfwY+Tk52GZKDfACEPjuZ7r2oJLejwpt8jtwTA==
+
+map-age-cleaner@^0.1.1:
+ version "0.1.3"
+ resolved "https://registry.yarnpkg.com/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz#7d583a7306434c055fe474b0f45078e6e1b4b92a"
+ integrity sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==
+ dependencies:
+ p-defer "^1.0.0"
+
+map-cache@^0.2.2:
+ version "0.2.2"
+ resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf"
+ integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=
+
+map-obj@^1.0.0, map-obj@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d"
+ integrity sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=
+
+map-visit@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f"
+ integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=
+ dependencies:
+ object-visit "^1.0.0"
+
+markdown-escapes@^1.0.0:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/markdown-escapes/-/markdown-escapes-1.0.3.tgz#6155e10416efaafab665d466ce598216375195f5"
+ integrity sha512-XUi5HJhhV5R74k8/0H2oCbCiYf/u4cO/rX8tnGkRvrqhsr5BRNU6Mg0yt/8UIx1iIS8220BNJsDb7XnILhLepw==
+
+markdown-extensions@^1.1.0:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/markdown-extensions/-/markdown-extensions-1.1.1.tgz#fea03b539faeaee9b4ef02a3769b455b189f7fc3"
+ integrity sha512-WWC0ZuMzCyDHYCasEGs4IPvLyTGftYwh6wIEOULOF0HXcqZlhwRzrK0w2VUlxWA98xnvb/jszw4ZSkJ6ADpM6Q==
+
+markdown-it@^8.4.2:
+ version "8.4.2"
+ resolved "https://registry.yarnpkg.com/markdown-it/-/markdown-it-8.4.2.tgz#386f98998dc15a37722aa7722084f4020bdd9b54"
+ integrity sha512-GcRz3AWTqSUphY3vsUqQSFMbgR38a4Lh3GWlHRh/7MRwz8mcu9n2IO7HOh+bXHrR9kOPDl5RNCaEsrneb+xhHQ==
+ dependencies:
+ argparse "^1.0.7"
+ entities "~1.1.1"
+ linkify-it "^2.0.0"
+ mdurl "^1.0.1"
+ uc.micro "^1.0.5"
+
+markdown-table@^1.1.0:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/markdown-table/-/markdown-table-1.1.3.tgz#9fcb69bcfdb8717bfd0398c6ec2d93036ef8de60"
+ integrity sha512-1RUZVgQlpJSPWYbFSpmudq5nHY1doEIv89gBtF0s4gW1GF2XorxcA/70M5vq7rLv0a6mhOUccRsqkwhwLCIQ2Q==
+
+matcher-collection@^1.0.0:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/matcher-collection/-/matcher-collection-1.1.2.tgz#1076f506f10ca85897b53d14ef54f90a5c426838"
+ integrity sha512-YQ/teqaOIIfUHedRam08PB3NK7Mjct6BvzRnJmpGDm8uFXpNr1sbY4yuflI5JcEs6COpYA0FpRQhSDBf1tT95g==
+ dependencies:
+ minimatch "^3.0.2"
+
+matcher@^1.0.0:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/matcher/-/matcher-1.1.1.tgz#51d8301e138f840982b338b116bb0c09af62c1c2"
+ integrity sha512-+BmqxWIubKTRKNWx/ahnCkk3mG8m7OturVlqq6HiojGJTd5hVYbgZm6WzcYPCoB+KBT4Vd6R7WSRG2OADNaCjg==
+ dependencies:
+ escape-string-regexp "^1.0.4"
+
+math-random@^1.0.1:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/math-random/-/math-random-1.0.4.tgz#5dd6943c938548267016d4e34f057583080c514c"
+ integrity sha512-rUxjysqif/BZQH2yhd5Aaq7vXMSx9NdEsQcyA07uEzIvxgI7zIr33gGsh+RU0/XjmQpCW7RsVof1vlkvQVCK5A==
+
+md5.js@^1.3.4:
+ version "1.3.5"
+ resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f"
+ integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==
+ dependencies:
+ hash-base "^3.0.0"
+ inherits "^2.0.1"
+ safe-buffer "^5.1.2"
+
+mdast-comment-marker@^1.0.0:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/mdast-comment-marker/-/mdast-comment-marker-1.1.1.tgz#9c9c18e1ed57feafc1965d92b028f37c3c8da70d"
+ integrity sha512-TWZDaUtPLwKX1pzDIY48MkSUQRDwX/HqbTB4m3iYdL/zosi/Z6Xqfdv0C0hNVKvzrPjZENrpWDt4p4odeVO0Iw==
+
+mdast-util-compact@^1.0.0:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/mdast-util-compact/-/mdast-util-compact-1.0.3.tgz#98a25cc8a7865761a41477b3a87d1dcef0b1e79d"
+ integrity sha512-nRiU5GpNy62rZppDKbLwhhtw5DXoFMqw9UNZFmlPsNaQCZ//WLjGKUwWMdJrUH+Se7UvtO2gXtAMe0g/N+eI5w==
+ dependencies:
+ unist-util-visit "^1.1.0"
+
+mdast-util-heading-style@^1.0.2:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/mdast-util-heading-style/-/mdast-util-heading-style-1.0.5.tgz#81b2e60d76754198687db0e8f044e42376db0426"
+ integrity sha512-8zQkb3IUwiwOdUw6jIhnwM6DPyib+mgzQuHAe7j2Hy1rIarU4VUxe472bp9oktqULW3xqZE+Kz6OD4Gi7IA3vw==
+
+mdast-util-to-string@^1.0.2:
+ version "1.0.6"
+ resolved "https://registry.yarnpkg.com/mdast-util-to-string/-/mdast-util-to-string-1.0.6.tgz#7d85421021343b33de1552fc71cb8e5b4ae7536d"
+ integrity sha512-868pp48gUPmZIhfKrLbaDneuzGiw3OTDjHc5M1kAepR2CWBJ+HpEsm252K4aXdiP5coVZaJPOqGtVU6Po8xnXg==
+
+mdurl@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/mdurl/-/mdurl-1.0.1.tgz#fe85b2ec75a59037f2adfec100fd6c601761152e"
+ integrity sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4=
+
+media-typer@0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748"
+ integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=
+
+mem@^4.0.0:
+ version "4.3.0"
+ resolved "https://registry.yarnpkg.com/mem/-/mem-4.3.0.tgz#461af497bc4ae09608cdb2e60eefb69bff744178"
+ integrity sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==
+ dependencies:
+ map-age-cleaner "^0.1.1"
+ mimic-fn "^2.0.0"
+ p-is-promise "^2.0.0"
+
+memory-fs@^0.4.0, memory-fs@~0.4.1:
+ version "0.4.1"
+ resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552"
+ integrity sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=
+ dependencies:
+ errno "^0.1.3"
+ readable-stream "^2.0.1"
+
+meow@^3.1.0:
+ version "3.7.0"
+ resolved "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb"
+ integrity sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=
+ dependencies:
+ camelcase-keys "^2.0.0"
+ decamelize "^1.1.2"
+ loud-rejection "^1.0.0"
+ map-obj "^1.0.1"
+ minimist "^1.1.3"
+ normalize-package-data "^2.3.4"
+ object-assign "^4.0.1"
+ read-pkg-up "^1.0.1"
+ redent "^1.0.0"
+ trim-newlines "^1.0.0"
+
+merge-descriptors@1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61"
+ integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=
+
+merge2@^1.2.3:
+ version "1.2.3"
+ resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.2.3.tgz#7ee99dbd69bb6481689253f018488a1b902b0ed5"
+ integrity sha512-gdUU1Fwj5ep4kplwcmftruWofEFt6lfpkkr3h860CXbAB9c3hGb55EOL2ali0Td5oebvW0E1+3Sr+Ur7XfKpRA==
+
+methods@~1.1.2:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee"
+ integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=
+
+micromatch@^2.1.5:
+ version "2.3.11"
+ resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565"
+ integrity sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=
+ dependencies:
+ arr-diff "^2.0.0"
+ array-unique "^0.2.1"
+ braces "^1.8.2"
+ expand-brackets "^0.1.4"
+ extglob "^0.3.1"
+ filename-regex "^2.0.0"
+ is-extglob "^1.0.0"
+ is-glob "^2.0.1"
+ kind-of "^3.0.2"
+ normalize-path "^2.0.1"
+ object.omit "^2.0.0"
+ parse-glob "^3.0.4"
+ regex-cache "^0.4.2"
+
+micromatch@^3.0.4, micromatch@^3.1.10, micromatch@^3.1.4, micromatch@^3.1.8:
+ version "3.1.10"
+ resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23"
+ integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==
+ dependencies:
+ arr-diff "^4.0.0"
+ array-unique "^0.3.2"
+ braces "^2.3.1"
+ define-property "^2.0.2"
+ extend-shallow "^3.0.2"
+ extglob "^2.0.4"
+ fragment-cache "^0.2.1"
+ kind-of "^6.0.2"
+ nanomatch "^1.2.9"
+ object.pick "^1.3.0"
+ regex-not "^1.0.0"
+ snapdragon "^0.8.1"
+ to-regex "^3.0.2"
+
+micromatch@^4.0.0:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.2.tgz#4fcb0999bf9fbc2fcbdd212f6d629b9a56c39259"
+ integrity sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==
+ dependencies:
+ braces "^3.0.1"
+ picomatch "^2.0.5"
+
+miller-rabin@^4.0.0:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d"
+ integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==
+ dependencies:
+ bn.js "^4.0.0"
+ brorand "^1.0.1"
+
+mime-db@1.40.0:
+ version "1.40.0"
+ resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.40.0.tgz#a65057e998db090f732a68f6c276d387d4126c32"
+ integrity sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA==
+
+mime-types@^2.1.12, mime-types@~2.1.19, mime-types@~2.1.24:
+ version "2.1.24"
+ resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.24.tgz#b6f8d0b3e951efb77dedeca194cff6d16f676f81"
+ integrity sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==
+ dependencies:
+ mime-db "1.40.0"
+
+mime@1.6.0:
+ version "1.6.0"
+ resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1"
+ integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==
+
+mimic-fn@^1.0.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022"
+ integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==
+
+mimic-fn@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b"
+ integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==
+
+minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7"
+ integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==
+
+minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a"
+ integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=
+
+minimatch@^3.0.2, minimatch@^3.0.3, minimatch@^3.0.4, minimatch@~3.0.4:
+ version "3.0.4"
+ resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
+ integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==
+ dependencies:
+ brace-expansion "^1.1.7"
+
+minimist@0.0.8:
+ version "0.0.8"
+ resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d"
+ integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=
+
+minimist@^1.1.0, minimist@^1.1.3, minimist@^1.2.0, minimist@~1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284"
+ integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=
+
+minipass@^2.2.1, minipass@^2.3.5:
+ version "2.3.5"
+ resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.3.5.tgz#cacebe492022497f656b0f0f51e2682a9ed2d848"
+ integrity sha512-Gi1W4k059gyRbyVUZQ4mEqLm0YIUiGYfvxhF6SIlk3ui1WVxMTGfGdQ2SInh3PDrRTVvPKgULkpJtT4RH10+VA==
+ dependencies:
+ safe-buffer "^5.1.2"
+ yallist "^3.0.0"
+
+minizlib@^1.2.1:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.2.1.tgz#dd27ea6136243c7c880684e8672bb3a45fd9b614"
+ integrity sha512-7+4oTUOWKg7AuL3vloEWekXY2/D20cevzsrNT2kGWm+39J9hGTCBv8VI5Pm5lXZ/o3/mdR4f8rflAPhnQb8mPA==
+ dependencies:
+ minipass "^2.2.1"
+
+mississippi@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-3.0.0.tgz#ea0a3291f97e0b5e8776b363d5f0a12d94c67022"
+ integrity sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==
+ dependencies:
+ concat-stream "^1.5.0"
+ duplexify "^3.4.2"
+ end-of-stream "^1.1.0"
+ flush-write-stream "^1.0.0"
+ from2 "^2.1.0"
+ parallel-transform "^1.1.0"
+ pump "^3.0.0"
+ pumpify "^1.3.3"
+ stream-each "^1.1.0"
+ through2 "^2.0.0"
+
+mixin-deep@^1.2.0:
+ version "1.3.2"
+ resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566"
+ integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==
+ dependencies:
+ for-in "^1.0.2"
+ is-extendable "^1.0.1"
+
+mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0:
+ version "0.5.1"
+ resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903"
+ integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=
+ dependencies:
+ minimist "0.0.8"
+
+move-concurrently@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92"
+ integrity sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=
+ dependencies:
+ aproba "^1.1.1"
+ copy-concurrently "^1.0.0"
+ fs-write-stream-atomic "^1.0.8"
+ mkdirp "^0.5.1"
+ rimraf "^2.5.4"
+ run-queue "^1.0.3"
+
+ms@2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
+ integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=
+
+ms@2.1.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a"
+ integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==
+
+ms@^2.1.1:
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
+ integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
+
+mute-stream@0.0.7:
+ version "0.0.7"
+ resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab"
+ integrity sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=
+
+nan@^2.12.1:
+ version "2.14.0"
+ resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.0.tgz#7818f722027b2459a86f0295d434d1fc2336c52c"
+ integrity sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==
+
+nanomatch@^1.2.9:
+ version "1.2.13"
+ resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119"
+ integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==
+ dependencies:
+ arr-diff "^4.0.0"
+ array-unique "^0.3.2"
+ define-property "^2.0.2"
+ extend-shallow "^3.0.2"
+ fragment-cache "^0.2.1"
+ is-windows "^1.0.2"
+ kind-of "^6.0.2"
+ object.pick "^1.3.0"
+ regex-not "^1.0.0"
+ snapdragon "^0.8.1"
+ to-regex "^3.0.1"
+
+natural-compare@^1.4.0:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"
+ integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=
+
+needle@^2.2.1:
+ version "2.4.0"
+ resolved "https://registry.yarnpkg.com/needle/-/needle-2.4.0.tgz#6833e74975c444642590e15a750288c5f939b57c"
+ integrity sha512-4Hnwzr3mi5L97hMYeNl8wRW/Onhy4nUKR/lVemJ8gJedxxUyBLm9kkrDColJvoSfwi0jCNhD+xCdOtiGDQiRZg==
+ dependencies:
+ debug "^3.2.6"
+ iconv-lite "^0.4.4"
+ sax "^1.2.4"
+
+negotiator@0.6.2:
+ version "0.6.2"
+ resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb"
+ integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==
+
+neo-async@^2.5.0:
+ version "2.6.1"
+ resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.1.tgz#ac27ada66167fa8849a6addd837f6b189ad2081c"
+ integrity sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==
+
+nice-try@^1.0.4:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366"
+ integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==
+
+node-dir@^0.1.12:
+ version "0.1.17"
+ resolved "https://registry.yarnpkg.com/node-dir/-/node-dir-0.1.17.tgz#5f5665d93351335caabef8f1c554516cf5f1e4e5"
+ integrity sha1-X1Zl2TNRM1yqvvjxxVRRbPXx5OU=
+ dependencies:
+ minimatch "^3.0.2"
+
+node-fetch@^2.3.0:
+ version "2.6.0"
+ resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.0.tgz#e633456386d4aa55863f676a7ab0daa8fdecb0fd"
+ integrity sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA==
+
+node-libs-browser@^2.0.0:
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.2.1.tgz#b64f513d18338625f90346d27b0d235e631f6425"
+ integrity sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==
+ dependencies:
+ assert "^1.1.1"
+ browserify-zlib "^0.2.0"
+ buffer "^4.3.0"
+ console-browserify "^1.1.0"
+ constants-browserify "^1.0.0"
+ crypto-browserify "^3.11.0"
+ domain-browser "^1.1.1"
+ events "^3.0.0"
+ https-browserify "^1.0.0"
+ os-browserify "^0.3.0"
+ path-browserify "0.0.1"
+ process "^0.11.10"
+ punycode "^1.2.4"
+ querystring-es3 "^0.2.0"
+ readable-stream "^2.3.3"
+ stream-browserify "^2.0.1"
+ stream-http "^2.7.2"
+ string_decoder "^1.0.0"
+ timers-browserify "^2.0.4"
+ tty-browserify "0.0.0"
+ url "^0.11.0"
+ util "^0.11.0"
+ vm-browserify "^1.0.1"
+
+node-pre-gyp@^0.12.0:
+ version "0.12.0"
+ resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.12.0.tgz#39ba4bb1439da030295f899e3b520b7785766149"
+ integrity sha512-4KghwV8vH5k+g2ylT+sLTjy5wmUOb9vPhnM8NHvRf9dHmnW/CndrFXy2aRPaPST6dugXSdHXfeaHQm77PIz/1A==
+ dependencies:
+ detect-libc "^1.0.2"
+ mkdirp "^0.5.1"
+ needle "^2.2.1"
+ nopt "^4.0.1"
+ npm-packlist "^1.1.6"
+ npmlog "^4.0.2"
+ rc "^1.2.7"
+ rimraf "^2.6.1"
+ semver "^5.3.0"
+ tar "^4"
+
+nopt@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d"
+ integrity sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=
+ dependencies:
+ abbrev "1"
+ osenv "^0.1.4"
+
+normalize-package-data@^2.3.2, normalize-package-data@^2.3.4, normalize-package-data@^2.5.0:
+ version "2.5.0"
+ resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8"
+ integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==
+ dependencies:
+ hosted-git-info "^2.1.4"
+ resolve "^1.10.0"
+ semver "2 || 3 || 4 || 5"
+ validate-npm-package-license "^3.0.1"
+
+normalize-path@^2.0.0, normalize-path@^2.0.1, normalize-path@^2.1.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9"
+ integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=
+ dependencies:
+ remove-trailing-separator "^1.0.1"
+
+normalize-path@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65"
+ integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==
+
+npm-bundled@^1.0.1:
+ version "1.0.6"
+ resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.0.6.tgz#e7ba9aadcef962bb61248f91721cd932b3fe6bdd"
+ integrity sha512-8/JCaftHwbd//k6y2rEWp6k1wxVfpFzB6t1p825+cUb7Ym2XQfhwIC5KwhrvzZRJu+LtDE585zVaS32+CGtf0g==
+
+npm-packlist@^1.1.6:
+ version "1.4.4"
+ resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.4.4.tgz#866224233850ac534b63d1a6e76050092b5d2f44"
+ integrity sha512-zTLo8UcVYtDU3gdeaFu2Xu0n0EvelfHDGuqtNIn5RO7yQj4H1TqNdBc/yZjxnWA0PVB8D3Woyp0i5B43JwQ6Vw==
+ dependencies:
+ ignore-walk "^3.0.1"
+ npm-bundled "^1.0.1"
+
+npm-path@^2.0.2:
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/npm-path/-/npm-path-2.0.4.tgz#c641347a5ff9d6a09e4d9bce5580c4f505278e64"
+ integrity sha512-IFsj0R9C7ZdR5cP+ET342q77uSRdtWOlWpih5eC+lu29tIDbNEgDbzgVJ5UFvYHWhxDZ5TFkJafFioO0pPQjCw==
+ dependencies:
+ which "^1.2.10"
+
+npm-prefix@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/npm-prefix/-/npm-prefix-1.2.0.tgz#e619455f7074ba54cc66d6d0d37dd9f1be6bcbc0"
+ integrity sha1-5hlFX3B0ulTMZtbQ033Z8b5ry8A=
+ dependencies:
+ rc "^1.1.0"
+ shellsubstitute "^1.1.0"
+ untildify "^2.1.0"
+
+npm-run-path@^2.0.0:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f"
+ integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=
+ dependencies:
+ path-key "^2.0.0"
+
+npm-which@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/npm-which/-/npm-which-3.0.1.tgz#9225f26ec3a285c209cae67c3b11a6b4ab7140aa"
+ integrity sha1-kiXybsOihcIJyuZ8OxGmtKtxQKo=
+ dependencies:
+ commander "^2.9.0"
+ npm-path "^2.0.2"
+ which "^1.2.10"
+
+npmlog@^4.0.2:
+ version "4.1.2"
+ resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b"
+ integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==
+ dependencies:
+ are-we-there-yet "~1.1.2"
+ console-control-strings "~1.1.0"
+ gauge "~2.7.3"
+ set-blocking "~2.0.0"
+
+nugget@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/nugget/-/nugget-2.0.1.tgz#201095a487e1ad36081b3432fa3cada4f8d071b0"
+ integrity sha1-IBCVpIfhrTYIGzQy+jytpPjQcbA=
+ dependencies:
+ debug "^2.1.3"
+ minimist "^1.1.0"
+ pretty-bytes "^1.0.2"
+ progress-stream "^1.1.0"
+ request "^2.45.0"
+ single-line-log "^1.1.2"
+ throttleit "0.0.2"
+
+number-is-nan@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d"
+ integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=
+
+oauth-sign@~0.9.0:
+ version "0.9.0"
+ resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455"
+ integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==
+
+object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1:
+ version "4.1.1"
+ resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
+ integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=
+
+object-copy@^0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c"
+ integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw=
+ dependencies:
+ copy-descriptor "^0.1.0"
+ define-property "^0.2.5"
+ kind-of "^3.0.3"
+
+object-keys@^1.0.11, object-keys@^1.0.12:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e"
+ integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==
+
+object-keys@~0.4.0:
+ version "0.4.0"
+ resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-0.4.0.tgz#28a6aae7428dd2c3a92f3d95f21335dd204e0336"
+ integrity sha1-KKaq50KN0sOpLz2V8hM13SBOAzY=
+
+object-visit@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb"
+ integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=
+ dependencies:
+ isobject "^3.0.0"
+
+object.assign@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da"
+ integrity sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==
+ dependencies:
+ define-properties "^1.1.2"
+ function-bind "^1.1.1"
+ has-symbols "^1.0.0"
+ object-keys "^1.0.11"
+
+object.omit@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa"
+ integrity sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=
+ dependencies:
+ for-own "^0.1.4"
+ is-extendable "^0.1.1"
+
+object.pick@^1.3.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747"
+ integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=
+ dependencies:
+ isobject "^3.0.1"
+
+octokit-pagination-methods@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/octokit-pagination-methods/-/octokit-pagination-methods-1.1.0.tgz#cf472edc9d551055f9ef73f6e42b4dbb4c80bea4"
+ integrity sha512-fZ4qZdQ2nxJvtcasX7Ghl+WlWS/d9IgnBIwFZXVNNZUmzpno91SX5bc5vuxiuKoCtK78XxGGNuSCrDC7xYB3OQ==
+
+on-finished@~2.3.0:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947"
+ integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=
+ dependencies:
+ ee-first "1.1.1"
+
+once@^1.3.0, once@^1.3.1, once@^1.4.0:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
+ integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E=
+ dependencies:
+ wrappy "1"
+
+onetime@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/onetime/-/onetime-1.1.0.tgz#a1f7838f8314c516f05ecefcbc4ccfe04b4ed789"
+ integrity sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=
+
+onetime@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4"
+ integrity sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=
+ dependencies:
+ mimic-fn "^1.0.0"
+
+optimist@~0.3.5:
+ version "0.3.7"
+ resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.3.7.tgz#c90941ad59e4273328923074d2cf2e7cbc6ec0d9"
+ integrity sha1-yQlBrVnkJzMokjB00s8ufLxuwNk=
+ dependencies:
+ wordwrap "~0.0.2"
+
+optionator@^0.8.2:
+ version "0.8.2"
+ resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64"
+ integrity sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=
+ dependencies:
+ deep-is "~0.1.3"
+ fast-levenshtein "~2.0.4"
+ levn "~0.3.0"
+ prelude-ls "~1.1.2"
+ type-check "~0.3.2"
+ wordwrap "~1.0.0"
+
+ora@^0.2.3:
+ version "0.2.3"
+ resolved "https://registry.yarnpkg.com/ora/-/ora-0.2.3.tgz#37527d220adcd53c39b73571d754156d5db657a4"
+ integrity sha1-N1J9Igrc1Tw5tzVx11QVbV22V6Q=
+ dependencies:
+ chalk "^1.1.1"
+ cli-cursor "^1.0.2"
+ cli-spinners "^0.1.2"
+ object-assign "^4.0.1"
+
+ora@^3.0.0, ora@^3.4.0:
+ version "3.4.0"
+ resolved "https://registry.yarnpkg.com/ora/-/ora-3.4.0.tgz#bf0752491059a3ef3ed4c85097531de9fdbcd318"
+ integrity sha512-eNwHudNbO1folBP3JsZ19v9azXWtQZjICdr3Q0TDPIaeBQ3mXLrh54wM+er0+hSp+dWKf+Z8KM58CYzEyIYxYg==
+ dependencies:
+ chalk "^2.4.2"
+ cli-cursor "^2.1.0"
+ cli-spinners "^2.0.0"
+ log-symbols "^2.2.0"
+ strip-ansi "^5.2.0"
+ wcwidth "^1.0.1"
+
+os-browserify@^0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27"
+ integrity sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=
+
+os-homedir@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3"
+ integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M=
+
+os-locale@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-3.1.0.tgz#a802a6ee17f24c10483ab9935719cef4ed16bf1a"
+ integrity sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==
+ dependencies:
+ execa "^1.0.0"
+ lcid "^2.0.0"
+ mem "^4.0.0"
+
+os-name@^3.0.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/os-name/-/os-name-3.1.0.tgz#dec19d966296e1cd62d701a5a66ee1ddeae70801"
+ integrity sha512-h8L+8aNjNcMpo/mAIBPn5PXCM16iyPGjHNWo6U1YO8sJTMHtEtyczI6QJnLoplswm6goopQkqc7OAnjhWcugVg==
+ dependencies:
+ macos-release "^2.2.0"
+ windows-release "^3.1.0"
+
+os-tmpdir@^1.0.0, os-tmpdir@~1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274"
+ integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=
+
+osenv@^0.1.4:
+ version "0.1.5"
+ resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410"
+ integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==
+ dependencies:
+ os-homedir "^1.0.0"
+ os-tmpdir "^1.0.0"
+
+p-defer@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c"
+ integrity sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=
+
+p-finally@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae"
+ integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=
+
+p-is-promise@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-2.1.0.tgz#918cebaea248a62cf7ffab8e3bca8c5f882fc42e"
+ integrity sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==
+
+p-limit@^1.1.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8"
+ integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==
+ dependencies:
+ p-try "^1.0.0"
+
+p-limit@^2.0.0, p-limit@^2.2.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.2.0.tgz#417c9941e6027a9abcba5092dd2904e255b5fbc2"
+ integrity sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==
+ dependencies:
+ p-try "^2.0.0"
+
+p-locate@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43"
+ integrity sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=
+ dependencies:
+ p-limit "^1.1.0"
+
+p-locate@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4"
+ integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==
+ dependencies:
+ p-limit "^2.0.0"
+
+p-locate@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07"
+ integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==
+ dependencies:
+ p-limit "^2.2.0"
+
+p-map@^1.1.1:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/p-map/-/p-map-1.2.0.tgz#e4e94f311eabbc8633a1e79908165fca26241b6b"
+ integrity sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA==
+
+p-map@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/p-map/-/p-map-2.1.0.tgz#310928feef9c9ecc65b68b17693018a665cea175"
+ integrity sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==
+
+p-try@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3"
+ integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=
+
+p-try@^2.0.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6"
+ integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==
+
+pako@~0.2.0:
+ version "0.2.9"
+ resolved "https://registry.yarnpkg.com/pako/-/pako-0.2.9.tgz#f3f7522f4ef782348da8161bad9ecfd51bf83a75"
+ integrity sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU=
+
+pako@~1.0.5:
+ version "1.0.10"
+ resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.10.tgz#4328badb5086a426aa90f541977d4955da5c9732"
+ integrity sha512-0DTvPVU3ed8+HNXOu5Bs+o//Mbdj9VNQMUOe9oKCwh8l0GNwpTDMKCWbRjgtD291AWnkAgkqA/LOnQS8AmS1tw==
+
+parallel-transform@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/parallel-transform/-/parallel-transform-1.1.0.tgz#d410f065b05da23081fcd10f28854c29bda33b06"
+ integrity sha1-1BDwZbBdojCB/NEPKIVMKb2jOwY=
+ dependencies:
+ cyclist "~0.2.2"
+ inherits "^2.0.3"
+ readable-stream "^2.1.5"
+
+parent-module@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2"
+ integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==
+ dependencies:
+ callsites "^3.0.0"
+
+parse-asn1@^5.0.0:
+ version "5.1.4"
+ resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.4.tgz#37f6628f823fbdeb2273b4d540434a22f3ef1fcc"
+ integrity sha512-Qs5duJcuvNExRfFZ99HDD3z4mAi3r9Wl/FOjEOijlxwCZs7E7mW2vjTpgQ4J8LpTF8x5v+1Vn5UQFejmWT11aw==
+ dependencies:
+ asn1.js "^4.0.0"
+ browserify-aes "^1.0.0"
+ create-hash "^1.1.0"
+ evp_bytestokey "^1.0.0"
+ pbkdf2 "^3.0.3"
+ safe-buffer "^5.1.1"
+
+parse-entities@^1.0.2:
+ version "1.2.2"
+ resolved "https://registry.yarnpkg.com/parse-entities/-/parse-entities-1.2.2.tgz#c31bf0f653b6661354f8973559cb86dd1d5edf50"
+ integrity sha512-NzfpbxW/NPrzZ/yYSoQxyqUZMZXIdCfE0OIN4ESsnptHJECoUk3FZktxNuzQf4tjt5UEopnxpYJbvYuxIFDdsg==
+ dependencies:
+ character-entities "^1.0.0"
+ character-entities-legacy "^1.0.0"
+ character-reference-invalid "^1.0.0"
+ is-alphanumerical "^1.0.0"
+ is-decimal "^1.0.0"
+ is-hexadecimal "^1.0.0"
+
+parse-gitignore@^0.4.0:
+ version "0.4.0"
+ resolved "https://registry.yarnpkg.com/parse-gitignore/-/parse-gitignore-0.4.0.tgz#abf702e4b900524fff7902b683862857b63f93fe"
+ integrity sha1-q/cC5LkAUk//eQK2g4YoV7Y/k/4=
+ dependencies:
+ array-unique "^0.3.2"
+ is-glob "^3.1.0"
+
+parse-glob@^3.0.4:
+ version "3.0.4"
+ resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c"
+ integrity sha1-ssN2z7EfNVE7rdFz7wu246OIORw=
+ dependencies:
+ glob-base "^0.3.0"
+ is-dotfile "^1.0.0"
+ is-extglob "^1.0.0"
+ is-glob "^2.0.0"
+
+parse-json@^2.2.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9"
+ integrity sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=
+ dependencies:
+ error-ex "^1.2.0"
+
+parse-json@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0"
+ integrity sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=
+ dependencies:
+ error-ex "^1.3.1"
+ json-parse-better-errors "^1.0.1"
+
+parse-ms@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/parse-ms/-/parse-ms-2.1.0.tgz#348565a753d4391fa524029956b172cb7753097d"
+ integrity sha512-kHt7kzLoS9VBZfUsiKjv43mr91ea+U05EyKkEtqp7vNbHxmaVuEqN7XxeEVnGrMtYOAxGrDElSi96K7EgO1zCA==
+
+parse-passwd@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6"
+ integrity sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=
+
+parseurl@~1.3.3:
+ version "1.3.3"
+ resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4"
+ integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==
+
+pascalcase@^0.1.1:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14"
+ integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=
+
+path-browserify@0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.1.tgz#e6c4ddd7ed3aa27c68a20cc4e50e1a4ee83bbc4a"
+ integrity sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==
+
+path-dirname@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0"
+ integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=
+
+path-exists@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b"
+ integrity sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=
+ dependencies:
+ pinkie-promise "^2.0.0"
+
+path-exists@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515"
+ integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=
+
+path-exists@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3"
+ integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==
+
+path-is-absolute@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
+ integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18=
+
+path-is-inside@^1.0.1, path-is-inside@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53"
+ integrity sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=
+
+path-key@^2.0.0, path-key@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40"
+ integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=
+
+path-parse@^1.0.6:
+ version "1.0.6"
+ resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c"
+ integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==
+
+path-to-regexp@0.1.7:
+ version "0.1.7"
+ resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c"
+ integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=
+
+path-type@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441"
+ integrity sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=
+ dependencies:
+ graceful-fs "^4.1.2"
+ pify "^2.0.0"
+ pinkie-promise "^2.0.0"
+
+path-type@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73"
+ integrity sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=
+ dependencies:
+ pify "^2.0.0"
+
+path-type@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f"
+ integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==
+ dependencies:
+ pify "^3.0.0"
+
+pathval@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/pathval/-/pathval-1.1.0.tgz#b942e6d4bde653005ef6b71361def8727d0645e0"
+ integrity sha1-uULm1L3mUwBe9rcTYd74cn0GReA=
+
+pbkdf2@^3.0.3:
+ version "3.0.17"
+ resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.17.tgz#976c206530617b14ebb32114239f7b09336e93a6"
+ integrity sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA==
+ dependencies:
+ create-hash "^1.1.2"
+ create-hmac "^1.1.4"
+ ripemd160 "^2.0.1"
+ safe-buffer "^5.0.1"
+ sha.js "^2.4.8"
+
+peek-stream@^1.1.0:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/peek-stream/-/peek-stream-1.1.3.tgz#3b35d84b7ccbbd262fff31dc10da56856ead6d67"
+ integrity sha512-FhJ+YbOSBb9/rIl2ZeE/QHEsWn7PqNYt8ARAY3kIgNGOk13g9FGyIY6JIl/xB/3TFRVoTv5as0l11weORrTekA==
+ dependencies:
+ buffer-from "^1.0.0"
+ duplexify "^3.5.0"
+ through2 "^2.0.3"
+
+performance-now@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b"
+ integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=
+
+picomatch@^2.0.4, picomatch@^2.0.5:
+ version "2.0.7"
+ resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.0.7.tgz#514169d8c7cd0bdbeecc8a2609e34a7163de69f6"
+ integrity sha512-oLHIdio3tZ0qH76NybpeneBhYVj0QFTfXEFTc/B3zKQspYfYYkWYgFsmzo+4kvId/bQRcNkVeguI3y+CD22BtA==
+
+pify@^2.0.0, pify@^2.3.0:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c"
+ integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw=
+
+pify@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176"
+ integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=
+
+pify@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231"
+ integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==
+
+pinkie-promise@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa"
+ integrity sha1-ITXW36ejWMBprJsXh3YogihFD/o=
+ dependencies:
+ pinkie "^2.0.0"
+
+pinkie@^2.0.0:
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870"
+ integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA=
+
+pkg-conf@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/pkg-conf/-/pkg-conf-2.1.0.tgz#2126514ca6f2abfebd168596df18ba57867f0058"
+ integrity sha1-ISZRTKbyq/69FoWW3xi6V4Z/AFg=
+ dependencies:
+ find-up "^2.0.0"
+ load-json-file "^4.0.0"
+
+pkg-config@^1.1.0:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/pkg-config/-/pkg-config-1.1.1.tgz#557ef22d73da3c8837107766c52eadabde298fe4"
+ integrity sha1-VX7yLXPaPIg3EHdmxS6tq94pj+Q=
+ dependencies:
+ debug-log "^1.0.0"
+ find-root "^1.0.0"
+ xtend "^4.0.1"
+
+pkg-dir@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b"
+ integrity sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=
+ dependencies:
+ find-up "^2.1.0"
+
+pkg-dir@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3"
+ integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==
+ dependencies:
+ find-up "^3.0.0"
+
+pkg-dir@^4.1.0:
+ version "4.2.0"
+ resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3"
+ integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==
+ dependencies:
+ find-up "^4.0.0"
+
+please-upgrade-node@^3.0.2, please-upgrade-node@^3.1.1:
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/please-upgrade-node/-/please-upgrade-node-3.1.1.tgz#ed320051dfcc5024fae696712c8288993595e8ac"
+ integrity sha512-KY1uHnQ2NlQHqIJQpnh/i54rKkuxCEBx+voJIS/Mvb+L2iYd2NMotwduhKTMjfC1uKoX3VXOxLjIYG66dfJTVQ==
+ dependencies:
+ semver-compare "^1.0.0"
+
+plur@^3.0.0:
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/plur/-/plur-3.1.1.tgz#60267967866a8d811504fe58f2faaba237546a5b"
+ integrity sha512-t1Ax8KUvV3FFII8ltczPn2tJdjqbd1sIzu6t4JL7nQ3EyeL/lTrj5PWKb06ic5/6XYDr65rQ4uzQEGN70/6X5w==
+ dependencies:
+ irregular-plurals "^2.0.0"
+
+pluralize@^7.0.0:
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-7.0.0.tgz#298b89df8b93b0221dbf421ad2b1b1ea23fc6777"
+ integrity sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==
+
+posix-character-classes@^0.1.0:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab"
+ integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=
+
+pre-flight@^1.1.0:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/pre-flight/-/pre-flight-1.1.1.tgz#482fb1649fb400616a86b2706b11591f5cc8402d"
+ integrity sha512-glqyc2Hh3K+sYeSsVs+HhjyUVf8j6xwuFej0yjYjRYfSnOK8P3Na9GznkoPn48fR+9kTOfkocYIWrtWktp4AqA==
+ dependencies:
+ colors "^1.1.2"
+ commander "^2.9.0"
+ semver "^5.1.0"
+
+prelude-ls@~1.1.2:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54"
+ integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=
+
+prepend-http@^1.0.1:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc"
+ integrity sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=
+
+preserve@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b"
+ integrity sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=
+
+pretty-bytes@^1.0.2:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-1.0.4.tgz#0a22e8210609ad35542f8c8d5d2159aff0751c84"
+ integrity sha1-CiLoIQYJrTVUL4yNXSFZr/B1HIQ=
+ dependencies:
+ get-stdin "^4.0.1"
+ meow "^3.1.0"
+
+pretty-ms@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/pretty-ms/-/pretty-ms-5.0.0.tgz#6133a8f55804b208e4728f6aa7bf01085e951e24"
+ integrity sha512-94VRYjL9k33RzfKiGokPBPpsmloBYSf5Ri+Pq19zlsEcUKFob+admeXr5eFDRuPjFmEOcjJvPGdillYOJyvZ7Q==
+ dependencies:
+ parse-ms "^2.1.0"
+
+process-nextick-args@~2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2"
+ integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==
+
+process@^0.11.10, process@~0.11.0:
+ version "0.11.10"
+ resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182"
+ integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI=
+
+progress-stream@^1.1.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/progress-stream/-/progress-stream-1.2.0.tgz#2cd3cfea33ba3a89c9c121ec3347abe9ab125f77"
+ integrity sha1-LNPP6jO6OonJwSHsM0er6asSX3c=
+ dependencies:
+ speedometer "~0.1.2"
+ through2 "~0.2.3"
+
+progress@^2.0.0, progress@^2.0.3:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8"
+ integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==
+
+promise-inflight@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3"
+ integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM=
+
+prop-types@^15.6.2:
+ version "15.7.2"
+ resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5"
+ integrity sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==
+ dependencies:
+ loose-envify "^1.4.0"
+ object-assign "^4.1.1"
+ react-is "^16.8.1"
+
+property-expr@^1.5.0:
+ version "1.5.1"
+ resolved "https://registry.yarnpkg.com/property-expr/-/property-expr-1.5.1.tgz#22e8706894a0c8e28d58735804f6ba3a3673314f"
+ integrity sha512-CGuc0VUTGthpJXL36ydB6jnbyOf/rAHFvmVrJlH+Rg0DqqLFQGAP6hIaxD/G0OAmBJPhXDHuEJigrp0e0wFV6g==
+
+proxy-addr@~2.0.5:
+ version "2.0.5"
+ resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.5.tgz#34cbd64a2d81f4b1fd21e76f9f06c8a45299ee34"
+ integrity sha512-t/7RxHXPH6cJtP0pRG6smSr9QJidhB+3kXu0KgXnbGYMgzEnUxRQ4/LDdfOwZEMyIh3/xHb8PX3t+lfL9z+YVQ==
+ dependencies:
+ forwarded "~0.1.2"
+ ipaddr.js "1.9.0"
+
+prr@~1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476"
+ integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY=
+
+psl@^1.1.24:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/psl/-/psl-1.2.0.tgz#df12b5b1b3a30f51c329eacbdef98f3a6e136dc6"
+ integrity sha512-GEn74ZffufCmkDDLNcl3uuyF/aSD6exEyh1v/ZSdAomB82t6G9hzJVRx0jBmLDW+VfZqks3aScmMw9DszwUalA==
+
+public-encrypt@^4.0.0:
+ version "4.0.3"
+ resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0"
+ integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==
+ dependencies:
+ bn.js "^4.1.0"
+ browserify-rsa "^4.0.0"
+ create-hash "^1.1.0"
+ parse-asn1 "^5.0.0"
+ randombytes "^2.0.1"
+ safe-buffer "^5.1.2"
+
+pump@^1.0.0:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/pump/-/pump-1.0.3.tgz#5dfe8311c33bbf6fc18261f9f34702c47c08a954"
+ integrity sha512-8k0JupWme55+9tCVE+FS5ULT3K6AbgqrGa58lTT49RpyfwwcGedHqaC5LlQNdEAumn/wFsu6aPwkuPMioy8kqw==
+ dependencies:
+ end-of-stream "^1.1.0"
+ once "^1.3.1"
+
+pump@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909"
+ integrity sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==
+ dependencies:
+ end-of-stream "^1.1.0"
+ once "^1.3.1"
+
+pump@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64"
+ integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==
+ dependencies:
+ end-of-stream "^1.1.0"
+ once "^1.3.1"
+
+pumpify@^1.3.3:
+ version "1.5.1"
+ resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.5.1.tgz#36513be246ab27570b1a374a5ce278bfd74370ce"
+ integrity sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==
+ dependencies:
+ duplexify "^3.6.0"
+ inherits "^2.0.3"
+ pump "^2.0.0"
+
+punycode@1.3.2:
+ version "1.3.2"
+ resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d"
+ integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=
+
+punycode@^1.2.4, punycode@^1.4.1:
+ version "1.4.1"
+ resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e"
+ integrity sha1-wNWmOycYgArY4esPpSachN1BhF4=
+
+punycode@^2.1.0:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec"
+ integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==
+
+qs@6.7.0:
+ version "6.7.0"
+ resolved "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc"
+ integrity sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==
+
+qs@~6.5.2:
+ version "6.5.2"
+ resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36"
+ integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==
+
+querystring-es3@^0.2.0:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73"
+ integrity sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=
+
+querystring@0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620"
+ integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=
+
+ramda@^0.26.1:
+ version "0.26.1"
+ resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.26.1.tgz#8d41351eb8111c55353617fc3bbffad8e4d35d06"
+ integrity sha512-hLWjpy7EnsDBb0p+Z3B7rPi3GDeRG5ZtiI33kJhTt+ORCd38AbAIjB/9zRIUoeTbE/AVX5ZkU7m6bznsvrf8eQ==
+
+randomatic@^3.0.0:
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-3.1.1.tgz#b776efc59375984e36c537b2f51a1f0aff0da1ed"
+ integrity sha512-TuDE5KxZ0J461RVjrJZCJc+J+zCkTb1MbH9AQUq68sMhOMcy9jLcb3BrZKgp9q9Ncltdg4QVqWrH02W2EFFVYw==
+ dependencies:
+ is-number "^4.0.0"
+ kind-of "^6.0.0"
+ math-random "^1.0.1"
+
+randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a"
+ integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==
+ dependencies:
+ safe-buffer "^5.1.0"
+
+randomfill@^1.0.3:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458"
+ integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==
+ dependencies:
+ randombytes "^2.0.5"
+ safe-buffer "^5.1.0"
+
+range-parser@~1.2.1:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031"
+ integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==
+
+raw-body@2.4.0:
+ version "2.4.0"
+ resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.0.tgz#a1ce6fb9c9bc356ca52e89256ab59059e13d0332"
+ integrity sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==
+ dependencies:
+ bytes "3.1.0"
+ http-errors "1.7.2"
+ iconv-lite "0.4.24"
+ unpipe "1.0.0"
+
+rc@^1.1.0, rc@^1.2.7:
+ version "1.2.8"
+ resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed"
+ integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==
+ dependencies:
+ deep-extend "^0.6.0"
+ ini "~1.3.0"
+ minimist "^1.2.0"
+ strip-json-comments "~2.0.1"
+
+react-is@^16.8.1:
+ version "16.8.6"
+ resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.8.6.tgz#5bbc1e2d29141c9fbdfed456343fe2bc430a6a16"
+ integrity sha512-aUk3bHfZ2bRSVFFbbeVS4i+lNPZr3/WM5jT2J5omUVV1zzcs1nAaf3l51ctA5FFvCRbhrH0bdAsRRQddFJZPtA==
+
+read-pkg-up@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02"
+ integrity sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=
+ dependencies:
+ find-up "^1.0.0"
+ read-pkg "^1.0.0"
+
+read-pkg-up@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be"
+ integrity sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=
+ dependencies:
+ find-up "^2.0.0"
+ read-pkg "^2.0.0"
+
+read-pkg@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28"
+ integrity sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=
+ dependencies:
+ load-json-file "^1.0.0"
+ normalize-package-data "^2.3.2"
+ path-type "^1.0.0"
+
+read-pkg@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8"
+ integrity sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=
+ dependencies:
+ load-json-file "^2.0.0"
+ normalize-package-data "^2.3.2"
+ path-type "^2.0.0"
+
+read-pkg@^5.1.1:
+ version "5.1.1"
+ resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-5.1.1.tgz#5cf234dde7a405c90c88a519ab73c467e9cb83f5"
+ integrity sha512-dFcTLQi6BZ+aFUaICg7er+/usEoqFdQxiEBsEMNGoipenihtxxtdrQuBXvyANCEI8VuUIVYFgeHGx9sLLvim4w==
+ dependencies:
+ "@types/normalize-package-data" "^2.4.0"
+ normalize-package-data "^2.5.0"
+ parse-json "^4.0.0"
+ type-fest "^0.4.1"
+
+"readable-stream@1 || 2", readable-stream@^2, readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.0, readable-stream@^2.3.3, readable-stream@^2.3.5, readable-stream@^2.3.6, readable-stream@~2.3.6:
+ version "2.3.6"
+ resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf"
+ integrity sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==
+ dependencies:
+ core-util-is "~1.0.0"
+ inherits "~2.0.3"
+ isarray "~1.0.0"
+ process-nextick-args "~2.0.0"
+ safe-buffer "~5.1.1"
+ string_decoder "~1.1.1"
+ util-deprecate "~1.0.1"
+
+readable-stream@~1.1.9:
+ version "1.1.14"
+ resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9"
+ integrity sha1-fPTFTvZI44EwhMY23SB54WbAgdk=
+ dependencies:
+ core-util-is "~1.0.0"
+ inherits "~2.0.1"
+ isarray "0.0.1"
+ string_decoder "~0.10.x"
+
+readdirp@^2.0.0, readdirp@^2.2.1:
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525"
+ integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==
+ dependencies:
+ graceful-fs "^4.1.11"
+ micromatch "^3.1.10"
+ readable-stream "^2.0.2"
+
+rechoir@^0.6.2:
+ version "0.6.2"
+ resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384"
+ integrity sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=
+ dependencies:
+ resolve "^1.1.6"
+
+redent@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/redent/-/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde"
+ integrity sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=
+ dependencies:
+ indent-string "^2.1.0"
+ strip-indent "^1.0.1"
+
+regenerator-runtime@^0.13.2:
+ version "0.13.2"
+ resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.2.tgz#32e59c9a6fb9b1a4aff09b4930ca2d4477343447"
+ integrity sha512-S/TQAZJO+D3m9xeN1WTI8dLKBBiRgXBlTJvbWjCThHWZj9EvHK70Ff50/tYj2J/fvBY6JtFVwRuazHN2E7M9BA==
+
+regex-cache@^0.4.2:
+ version "0.4.4"
+ resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.4.tgz#75bdc58a2a1496cec48a12835bc54c8d562336dd"
+ integrity sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==
+ dependencies:
+ is-equal-shallow "^0.1.3"
+
+regex-not@^1.0.0, regex-not@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c"
+ integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==
+ dependencies:
+ extend-shallow "^3.0.2"
+ safe-regex "^1.1.0"
+
+regexpp@^2.0.0, regexpp@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-2.0.1.tgz#8d19d31cf632482b589049f8281f93dbcba4d07f"
+ integrity sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==
+
+remark-cli@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/remark-cli/-/remark-cli-4.0.0.tgz#bb84c14ffeb6f5b658eff4dfbb77cdd7775bab73"
+ integrity sha512-q5GMjGypUS4rTZb3WfMQcGpClSC38A9Ogg1h/HB2GLsqypDetmAfy0X+tuJ6JeyCPVOXXCDgsDCQq4QPqKmxBA==
+ dependencies:
+ markdown-extensions "^1.1.0"
+ remark "^8.0.0"
+ unified-args "^4.0.0"
+
+remark-lint-blockquote-indentation@^1.0.0:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/remark-lint-blockquote-indentation/-/remark-lint-blockquote-indentation-1.0.3.tgz#9c35235dd0e904ad6c085e9f66d94b3f13968d1f"
+ integrity sha512-qK4C1l2VmeOVWEAkDYP0CaDtSFoaEBEo5l4oyz1kTkY7YB0Jh7llW2KjuhJz5IzMLmloKJzIyGwlu/odcwaHpg==
+ dependencies:
+ mdast-util-to-string "^1.0.2"
+ plur "^3.0.0"
+ unified-lint-rule "^1.0.0"
+ unist-util-generated "^1.1.0"
+ unist-util-position "^3.0.0"
+ unist-util-visit "^1.1.1"
+
+remark-lint-code-block-style@^1.0.0:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/remark-lint-code-block-style/-/remark-lint-code-block-style-1.0.3.tgz#236d8a5558041decf2b275e9d9eb5868950375ec"
+ integrity sha512-DL+rudnd9ILP5YXm74tLpMzfWZLqziX7NwIwUhqRefaOyWwxgPPy7hbT59FJqcFc6E/zvDz+Oq4nR1BSV5kEdw==
+ dependencies:
+ unified-lint-rule "^1.0.0"
+ unist-util-generated "^1.1.0"
+ unist-util-position "^3.0.0"
+ unist-util-visit "^1.1.1"
+
+remark-lint-definition-case@^1.0.0:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/remark-lint-definition-case/-/remark-lint-definition-case-1.0.4.tgz#54d2a112794f1a070a5e8aa7c8090e8ae9aa3e11"
+ integrity sha512-ebl8vYOab9iy1Mr29Wo/9CmqcYGRjCfBievIZts08efrxIElWz+jB8/n7C17fh8k0djiiS/Of6W+bfRD+kMXLA==
+ dependencies:
+ unified-lint-rule "^1.0.0"
+ unist-util-generated "^1.1.0"
+ unist-util-position "^3.0.0"
+ unist-util-visit "^1.4.0"
+
+remark-lint-definition-spacing@^1.0.0:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/remark-lint-definition-spacing/-/remark-lint-definition-spacing-1.0.4.tgz#c322ff110c168449d8217773a23352c4174ffeba"
+ integrity sha512-UderghITmru72OXB5ErCFhVsY7up2wK/m1bUD3E2dm/TFn73/7WpykENt5UirCDT/aeyoHYl8QXUVL20rAc3XQ==
+ dependencies:
+ unified-lint-rule "^1.0.0"
+ unist-util-generated "^1.1.0"
+ unist-util-position "^3.0.0"
+ unist-util-visit "^1.4.0"
+
+remark-lint-emphasis-marker@^1.0.0:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/remark-lint-emphasis-marker/-/remark-lint-emphasis-marker-1.0.3.tgz#6dc4e7df13e5092c1222110f826f68b4b3920550"
+ integrity sha512-ea2tEVyhZvYxwj6AHsW2qzgEDLljcnzq5taZ3FJFL0KMZYZHfWaIU90H43jrW4seGEtmaP1bmoqJaTavJ2x5Jw==
+ dependencies:
+ unified-lint-rule "^1.0.0"
+ unist-util-generated "^1.1.0"
+ unist-util-position "^3.0.0"
+ unist-util-visit "^1.1.1"
+
+remark-lint-fenced-code-flag@^1.0.0:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/remark-lint-fenced-code-flag/-/remark-lint-fenced-code-flag-1.0.3.tgz#349caf7c6dd153d0b6ffb57cbcc67c8277569d2a"
+ integrity sha512-X8Oi6dhfqV9NI3cVg29myvT/NATDHVgRGCpnNz76w7VXwzhBvQtJr1MxZzuPxfWLox+ARCXF2rY9n9hbYFHYTg==
+ dependencies:
+ unified-lint-rule "^1.0.0"
+ unist-util-generated "^1.1.0"
+ unist-util-position "^3.0.0"
+ unist-util-visit "^1.1.1"
+
+remark-lint-fenced-code-marker@^1.0.0:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/remark-lint-fenced-code-marker/-/remark-lint-fenced-code-marker-1.0.3.tgz#9df1d16d535856f41b3c17a7d309385475cbec04"
+ integrity sha512-JKnojSQ8JkwpIpbNm6wtKEfx8iiv8QIwNHFM06iTCHExMhXa4pJ3wb5M5f0wsWNHtoND3lrw6AcVPoZxEPnflg==
+ dependencies:
+ unified-lint-rule "^1.0.0"
+ unist-util-generated "^1.1.0"
+ unist-util-position "^3.0.0"
+ unist-util-visit "^1.1.1"
+
+remark-lint-file-extension@^1.0.0:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/remark-lint-file-extension/-/remark-lint-file-extension-1.0.3.tgz#a7fc78fbf041e513c618b2cca0f2160ee37daa13"
+ integrity sha512-P5gzsxKmuAVPN7Kq1W0f8Ss0cFKfu+OlezYJWXf+5qOa+9Y5GqHEUOobPnsmNFZrVMiM7JoqJN2C9ZjrUx3N6Q==
+ dependencies:
+ unified-lint-rule "^1.0.0"
+
+remark-lint-final-definition@^1.0.0:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/remark-lint-final-definition/-/remark-lint-final-definition-1.0.3.tgz#4fd7bbf5a028f6e32645460965099689485508ae"
+ integrity sha512-QhbBYy99enfQDeUTElioCHrhgg+SgjMNRlru7/JlOguOufP6wn7AXgn2EVTrLZRoByY0VsNS2jCayXxUTzQ8KA==
+ dependencies:
+ unified-lint-rule "^1.0.0"
+ unist-util-generated "^1.1.0"
+ unist-util-position "^3.0.0"
+ unist-util-visit "^1.1.1"
+
+remark-lint-hard-break-spaces@^1.0.0:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/remark-lint-hard-break-spaces/-/remark-lint-hard-break-spaces-1.0.4.tgz#200e1dae849a6bc2f8fdb3b843faf23c70942530"
+ integrity sha512-YM82UpgliZCZhGNmFxEe7ArfhqR5CplFf2bc0k0+8w3rKWKx7EJcGMar2NK410tIi40gGeWtH/pIEypPJFCCiA==
+ dependencies:
+ unified-lint-rule "^1.0.0"
+ unist-util-generated "^1.1.0"
+ unist-util-position "^3.0.0"
+ unist-util-visit "^1.1.1"
+
+remark-lint-heading-increment@^1.0.0:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/remark-lint-heading-increment/-/remark-lint-heading-increment-1.0.3.tgz#44ca296b50e182c2c4a59604b8026911be3977de"
+ integrity sha512-/KL4/7D2pNxP07KKgktjcIUS+ga8pYI2k9Q/V91pMfyfSC+RYuCGOLFVJSKV0Affr/4Eqnfhw+gJ9X2HAanNuw==
+ dependencies:
+ unified-lint-rule "^1.0.0"
+ unist-util-generated "^1.1.0"
+ unist-util-visit "^1.1.1"
+
+remark-lint-heading-style@^1.0.0:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/remark-lint-heading-style/-/remark-lint-heading-style-1.0.3.tgz#de7377996cb9c7e501ec1ba7b7767709a68b824b"
+ integrity sha512-ZUhMav0HHUxo5gzLqxQsOf2ZpP/I3m6EEK8q25/kqpCYnwm1uRJ5CQ40PDQx46pmKtVibIMzDmraYovxNG3ovw==
+ dependencies:
+ mdast-util-heading-style "^1.0.2"
+ unified-lint-rule "^1.0.0"
+ unist-util-generated "^1.1.0"
+ unist-util-visit "^1.1.1"
+
+remark-lint-link-title-style@^1.0.0:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/remark-lint-link-title-style/-/remark-lint-link-title-style-1.0.4.tgz#eaca24b6eb1ee62b66a237ea54e532ed2aaaafec"
+ integrity sha512-61/uH3zDTiozLJqgxp6rHGnVKTChC3UjL3Q0KQDBpprEOL4qLYjTn4fFKscVz776d0uUX6jczrW+GT4AFVOUgg==
+ dependencies:
+ unified-lint-rule "^1.0.0"
+ unist-util-generated "^1.1.0"
+ unist-util-position "^3.0.0"
+ unist-util-visit "^1.1.1"
+ vfile-location "^2.0.1"
+
+remark-lint-list-item-content-indent@^1.0.0:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/remark-lint-list-item-content-indent/-/remark-lint-list-item-content-indent-1.0.3.tgz#e62012ef361fedaca42a764b8389023df4212eca"
+ integrity sha512-ZSIGJG2/6jd1xj/xEoDlkcJBf2Ksw8U6vIGJO0IFIA3BLCbJm2EMWJxto2cfzRvXoACmAaxTJMqW8qatPExa4w==
+ dependencies:
+ plur "^3.0.0"
+ unified-lint-rule "^1.0.0"
+ unist-util-generated "^1.1.0"
+ unist-util-position "^3.0.0"
+ unist-util-visit "^1.1.1"
+
+remark-lint-list-item-indent@^1.0.0:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/remark-lint-list-item-indent/-/remark-lint-list-item-indent-1.0.4.tgz#7a1ef6283f9a928f4940e02ec37099935f2783e6"
+ integrity sha512-Sv0gVH6qP1/nFpbJuyyguB9sAD2o42StD2WbEZeUcEexXwRO4u/YaX0Pm5pMtCiEHyN+qyL6ShKBQMtgol9BeA==
+ dependencies:
+ plur "^3.0.0"
+ unified-lint-rule "^1.0.0"
+ unist-util-generated "^1.1.0"
+ unist-util-position "^3.0.0"
+ unist-util-visit "^1.1.1"
+
+remark-lint-list-item-spacing@^1.0.0:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/remark-lint-list-item-spacing/-/remark-lint-list-item-spacing-1.1.3.tgz#5989bd2450fb4bbd5e8f8007887dc5ca56ad2e5f"
+ integrity sha512-QzDY0Qfk6m+Az0kmxP57OfswIH1WRdd6SIpQLaUEgsTlsbrJOiO0sJYkkOlFPsyJIfp7SV/FCbr+aYCbHF+kRQ==
+ dependencies:
+ unified-lint-rule "^1.0.0"
+ unist-util-generated "^1.1.0"
+ unist-util-position "^3.0.0"
+ unist-util-visit "^1.1.1"
+
+remark-lint-maximum-heading-length@^1.0.0:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/remark-lint-maximum-heading-length/-/remark-lint-maximum-heading-length-1.0.3.tgz#e235190e9991567254f9ce1104e15dad8e332b13"
+ integrity sha512-ybcDpR5VHBjtjzdry7AdSjLFwslPo6rdhIJK2+WfHgfeEjIYnlz1uMvp1Z98QMmjpB5JSN83Kzg5fH8/B7poUw==
+ dependencies:
+ mdast-util-to-string "^1.0.2"
+ unified-lint-rule "^1.0.0"
+ unist-util-generated "^1.1.0"
+ unist-util-visit "^1.1.1"
+
+remark-lint-maximum-line-length@^1.0.0:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/remark-lint-maximum-line-length/-/remark-lint-maximum-line-length-1.2.1.tgz#1030991d9af3c935731168a0a12ecb1db2d2b2b6"
+ integrity sha512-CSxX1qc+rAqixk8eBrI+yBsUmD8YGfOezFeJWjJRuUaoOvs67oqCIU+I2HbwcUYY8/KnDxF1MCp+uCM0RkjKKw==
+ dependencies:
+ unified-lint-rule "^1.0.0"
+ unist-util-generated "^1.1.0"
+ unist-util-position "^3.0.0"
+ unist-util-visit "^1.4.0"
+
+remark-lint-no-auto-link-without-protocol@^1.0.0:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/remark-lint-no-auto-link-without-protocol/-/remark-lint-no-auto-link-without-protocol-1.0.3.tgz#f97aed92af24e6c07023a7a7dc2c147f7eb7927f"
+ integrity sha512-k+hg2mXnO4Q9WV+UShPLen5oThvFxcRVWkx2hviVd/nu3eiszBKH3o38csBwjeJoMG3l2ZhdUW8dlOBhq8670Q==
+ dependencies:
+ mdast-util-to-string "^1.0.2"
+ unified-lint-rule "^1.0.0"
+ unist-util-generated "^1.1.0"
+ unist-util-position "^3.0.0"
+ unist-util-visit "^1.1.1"
+
+remark-lint-no-blockquote-without-marker@^2.0.0:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/remark-lint-no-blockquote-without-marker/-/remark-lint-no-blockquote-without-marker-2.0.3.tgz#7eb431fcb742412e3bc66faa7f58531245ad952f"
+ integrity sha512-faDzKrA6aKidsRXG6gcIlCO8TexLxIxe+n9B3mdnl8mhZGgE0FfWTkIWVMj0IYps/xVsVMf45KxhXgc1wU9kwg==
+ dependencies:
+ unified-lint-rule "^1.0.0"
+ unist-util-generated "^1.1.0"
+ unist-util-position "^3.0.0"
+ unist-util-visit "^1.1.1"
+ vfile-location "^2.0.1"
+
+remark-lint-no-consecutive-blank-lines@^1.0.0:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/remark-lint-no-consecutive-blank-lines/-/remark-lint-no-consecutive-blank-lines-1.0.3.tgz#4fa3b2cf2939c978a3fe7978f726f6142e7dd567"
+ integrity sha512-2Ef7fPxrfLditA7sTo2Qfqd+xwh/luWl8GzILE5vcWIxLDqKk3dTLJkB5nP+7Cr4kqWJAwXnRkEDd77ehrRV3A==
+ dependencies:
+ plur "^3.0.0"
+ unified-lint-rule "^1.0.0"
+ unist-util-generated "^1.1.0"
+ unist-util-position "^3.0.0"
+ unist-util-visit "^1.1.1"
+
+remark-lint-no-duplicate-headings@^1.0.0:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/remark-lint-no-duplicate-headings/-/remark-lint-no-duplicate-headings-1.0.4.tgz#52ac1479b6de83d5607b8d07e8ef3401d5078424"
+ integrity sha512-QuPw+VG502Ctpd/jBjnBYuRXTg0ToP3D+dd3TYds4TRcdgaEFYTZfQ5zjK6XrxLMg0Hn9/WpXr4UqTlV4YZupA==
+ dependencies:
+ mdast-util-to-string "^1.0.2"
+ unified-lint-rule "^1.0.0"
+ unist-util-generated "^1.1.0"
+ unist-util-position "^3.0.0"
+ unist-util-stringify-position "^2.0.0"
+ unist-util-visit "^1.1.1"
+
+remark-lint-no-emphasis-as-heading@^1.0.0:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/remark-lint-no-emphasis-as-heading/-/remark-lint-no-emphasis-as-heading-1.0.3.tgz#9d837d4c5635a784ef0e983cfb402da15672050d"
+ integrity sha512-HEmyeyKciUz95+CgpAH98RPR73jq5u5CZb2FOMSqgNl9B6FZXqVpq9F3txPqUw3nAqFYOAEnfiaoRgcqtioh0Q==
+ dependencies:
+ unified-lint-rule "^1.0.0"
+ unist-util-generated "^1.1.0"
+ unist-util-visit "^1.1.1"
+
+remark-lint-no-file-name-articles@^1.0.0:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/remark-lint-no-file-name-articles/-/remark-lint-no-file-name-articles-1.0.3.tgz#c712d06a24e24b0c4c3666cf3084a0052a2c2c17"
+ integrity sha512-YZDJDKUWZEmhrO6tHB0u0K0K2qJKxyg/kryr14OaRMvWLS62RgMn97sXPZ38XOSN7mOcCnl0k7/bClghJXx0sg==
+ dependencies:
+ unified-lint-rule "^1.0.0"
+
+remark-lint-no-file-name-consecutive-dashes@^1.0.0:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/remark-lint-no-file-name-consecutive-dashes/-/remark-lint-no-file-name-consecutive-dashes-1.0.3.tgz#6a96ddf60e18dcdb004533733f3ccbfd8ab076ae"
+ integrity sha512-7f4vyXn/ca5lAguWWC3eu5hi8oZ7etX7aQlnTSgQZeslnJCbVJm6V6prFJKAzrqbBzMicUXr5pZLBDoXyTvHHw==
+ dependencies:
+ unified-lint-rule "^1.0.0"
+
+remark-lint-no-file-name-irregular-characters@^1.0.0:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/remark-lint-no-file-name-irregular-characters/-/remark-lint-no-file-name-irregular-characters-1.0.3.tgz#6dcd8b51e00e10094585918cb8e7fc999df776c3"
+ integrity sha512-b4xIy1Yi8qZpM2vnMN+6gEujagPGxUBAs1judv6xJQngkl5d5zT8VQZsYsTGHku4NWHjjh3b7vK5mr0/yp4JSg==
+ dependencies:
+ unified-lint-rule "^1.0.0"
+
+remark-lint-no-file-name-mixed-case@^1.0.0:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/remark-lint-no-file-name-mixed-case/-/remark-lint-no-file-name-mixed-case-1.0.3.tgz#0ebe5eedd0191507d27ad6ac5eed1778cb33c2de"
+ integrity sha512-d7rJ4c8CzDbEbGafw2lllOY8k7pvnsO77t8cV4PHFylwQ3hmCdTHLuDvK87G3DaWCeKclp0PMyamfOgJWKMkPA==
+ dependencies:
+ unified-lint-rule "^1.0.0"
+
+remark-lint-no-file-name-outer-dashes@^1.0.0:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/remark-lint-no-file-name-outer-dashes/-/remark-lint-no-file-name-outer-dashes-1.0.4.tgz#c6e22a5cc64df4e12fc31712a927e8039854a666"
+ integrity sha512-+bZvvme2Bm3Vp5L2iKuvGHYVmHKrTkkRt8JqJPGepuhvBvT4Q7+CgfKyMtC/hIjyl+IcuJQ2H0qPRzdicjy1wQ==
+ dependencies:
+ unified-lint-rule "^1.0.0"
+
+remark-lint-no-heading-punctuation@^1.0.0:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/remark-lint-no-heading-punctuation/-/remark-lint-no-heading-punctuation-1.0.3.tgz#7357b0b6e668bb6b32338fe280cde9fe4388b547"
+ integrity sha512-JQD05RjLS99ePBQ4Bed1uWsQTlIMBTcGgIgF6jFXSCEqhwnrIUDwk6S3MG1RZsKd3TLw2xuT/i+POpfBc2+1kQ==
+ dependencies:
+ mdast-util-to-string "^1.0.2"
+ unified-lint-rule "^1.0.0"
+ unist-util-generated "^1.1.0"
+ unist-util-visit "^1.1.1"
+
+remark-lint-no-inline-padding@^1.0.0:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/remark-lint-no-inline-padding/-/remark-lint-no-inline-padding-1.0.4.tgz#eedb4ca2691d30f3f05b4e5e33967bd64a34daa4"
+ integrity sha512-u5rgbDkcfVv645YxxOwoGBBJbsHEwWm/XqnO8EhfKTxkfKOF4ZItG7Ajhj89EDaeXMkvCcB/avBl4bj50eJH3g==
+ dependencies:
+ mdast-util-to-string "^1.0.2"
+ unified-lint-rule "^1.0.0"
+ unist-util-generated "^1.1.0"
+ unist-util-visit "^1.4.0"
+
+remark-lint-no-literal-urls@^1.0.0:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/remark-lint-no-literal-urls/-/remark-lint-no-literal-urls-1.0.3.tgz#1b5374e416d1b595ee1902587dc37f34c0d6244a"
+ integrity sha512-H5quyMzl2kaewK+jYD1FI0G1SIinIsIp4DEyOUwIR+vYUoKwo0B4vvW0cmPpD1dgqqxHYx0B2B0JQQKFVWzGiw==
+ dependencies:
+ mdast-util-to-string "^1.0.2"
+ unified-lint-rule "^1.0.0"
+ unist-util-generated "^1.1.0"
+ unist-util-position "^3.0.0"
+ unist-util-visit "^1.1.1"
+
+remark-lint-no-multiple-toplevel-headings@^1.0.0:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/remark-lint-no-multiple-toplevel-headings/-/remark-lint-no-multiple-toplevel-headings-1.0.4.tgz#0cfd8575e5576d7678802eac56fda894afee3817"
+ integrity sha512-0wDddx6htN5sL9/rofesiQF0oEgwN5224UmueiDx0ZUlYrn6VS0/SS0X3WWxtXmyeqlExfWF3D/g89tNs7dcjw==
+ dependencies:
+ unified-lint-rule "^1.0.0"
+ unist-util-generated "^1.1.0"
+ unist-util-position "^3.0.0"
+ unist-util-stringify-position "^2.0.0"
+ unist-util-visit "^1.1.1"
+
+remark-lint-no-shell-dollars@^1.0.0:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/remark-lint-no-shell-dollars/-/remark-lint-no-shell-dollars-1.0.3.tgz#07e99fc3843c665440f9a1d894ee518b2ad23958"
+ integrity sha512-fT3lQMTjEkPryL+63qDP1NfrohP3tG5i3SkNWSSR4VLU6OSsSSXlHGQGjo0ag//+EPKHB5/9frB/YQ0gDEPRGQ==
+ dependencies:
+ unified-lint-rule "^1.0.0"
+ unist-util-generated "^1.1.0"
+ unist-util-visit "^1.1.1"
+
+remark-lint-no-shortcut-reference-image@^1.0.0:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/remark-lint-no-shortcut-reference-image/-/remark-lint-no-shortcut-reference-image-1.0.3.tgz#ab4fa15fd8aff251cb8db1f3aed4853e293aff41"
+ integrity sha512-CGm27X54kXp/5ehXejDTsZjqzK4uIhLGcrFzN3k/KjdwunQouEY92AARGrLSEuJ1hQx0bJsmnvr/hvQyWAfNJg==
+ dependencies:
+ unified-lint-rule "^1.0.0"
+ unist-util-generated "^1.1.0"
+ unist-util-visit "^1.1.1"
+
+remark-lint-no-shortcut-reference-link@^1.0.0:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/remark-lint-no-shortcut-reference-link/-/remark-lint-no-shortcut-reference-link-1.0.4.tgz#92af34b939c0341eacdb2fc2ede855f742dc1779"
+ integrity sha512-FXdMJYqspZBhPlxYqfVgVluVXjxStg0RHJzqrk8G9wS8fCS62AE3reoaoiCahwoH1tfKcA+poktbKqDAmZo7Jg==
+ dependencies:
+ unified-lint-rule "^1.0.0"
+ unist-util-generated "^1.1.0"
+ unist-util-visit "^1.1.1"
+
+remark-lint-no-table-indentation@^1.0.0:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/remark-lint-no-table-indentation/-/remark-lint-no-table-indentation-1.0.4.tgz#6681a26198ee86c4fbbba382a42254125bc5807b"
+ integrity sha512-H4VGHcg1k8sTIbwazFYLNbDqpPR+M0aHHKDf+93b/xyd27Dp0ODQrMnQbls1Cls5qOAQnwAQbx+75wcpFxP3OQ==
+ dependencies:
+ unified-lint-rule "^1.0.0"
+ unist-util-generated "^1.1.0"
+ unist-util-position "^3.0.0"
+ unist-util-visit "^1.4.0"
+
+remark-lint-ordered-list-marker-style@^1.0.0:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/remark-lint-ordered-list-marker-style/-/remark-lint-ordered-list-marker-style-1.0.3.tgz#3fc6b9e254a641036e275269254365c42b7c62a1"
+ integrity sha512-24TmW1eUa/2JlwprZg9jJ8LKLxNGKnlKiI5YOhN4taUp2yv8daqlV9vR54yfn/ZZQh6EQvbIX0jeVY9NYgQUtw==
+ dependencies:
+ unified-lint-rule "^1.0.0"
+ unist-util-generated "^1.1.0"
+ unist-util-position "^3.0.0"
+ unist-util-visit "^1.1.1"
+
+remark-lint-ordered-list-marker-value@^1.0.0:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/remark-lint-ordered-list-marker-value/-/remark-lint-ordered-list-marker-value-1.0.3.tgz#417afe3849b9926e06f8a6f62445541c63f0e97f"
+ integrity sha512-WQ9yLD8cI9DSk/CE+APKUT6ZeXp0/RzOnsYqzMxEa8n1QHSqRSF7hVEiisqNTG9+gV64OEE66e+m4c7RVSUADw==
+ dependencies:
+ unified-lint-rule "^1.0.0"
+ unist-util-generated "^1.1.0"
+ unist-util-position "^3.0.0"
+ unist-util-visit "^1.1.1"
+
+remark-lint-rule-style@^1.0.0:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/remark-lint-rule-style/-/remark-lint-rule-style-1.0.3.tgz#859aef4d2e2180ecf9db56360497372b90a04aab"
+ integrity sha512-SJe7IFORYRdo8JUhMSdcTktVAUVNVp36YYl1ZD9CfHqQHWlFD+3vWYzJXOZfog/i+CyWf7Yi0WVYmQes+167dA==
+ dependencies:
+ unified-lint-rule "^1.0.0"
+ unist-util-generated "^1.1.0"
+ unist-util-position "^3.0.0"
+ unist-util-visit "^1.1.1"
+
+remark-lint-strong-marker@^1.0.0:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/remark-lint-strong-marker/-/remark-lint-strong-marker-1.0.3.tgz#028e05b046ef260e8d40b342900061f1d09c8131"
+ integrity sha512-PFkH282dCwfRsVEw9IxbYbaZBY4UcTuT2SN+lA3R0cBeocWnOySVw8YEm4sv9JfV8BLcQA5gc4tj66/U3KCScw==
+ dependencies:
+ unified-lint-rule "^1.0.0"
+ unist-util-generated "^1.1.0"
+ unist-util-position "^3.0.0"
+ unist-util-visit "^1.1.1"
+
+remark-lint-table-cell-padding@^1.0.0:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/remark-lint-table-cell-padding/-/remark-lint-table-cell-padding-1.0.4.tgz#be2b020a3985c414abb59cc5d88fda1993f8f2e8"
+ integrity sha512-AQWWtV1yca1PN27QaFRJbBK6Ro/bopv1XnVKxj/iMebhOU2D2FBJ8rXmMZXVMC3G9OB2WSzGgqH3nP6QY12LoA==
+ dependencies:
+ unified-lint-rule "^1.0.0"
+ unist-util-generated "^1.1.0"
+ unist-util-position "^3.0.0"
+ unist-util-visit "^1.4.0"
+
+remark-lint-table-pipe-alignment@^1.0.0:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/remark-lint-table-pipe-alignment/-/remark-lint-table-pipe-alignment-1.0.3.tgz#8c6d0c93e417706a4083dc7fa279c537d4ed886c"
+ integrity sha512-5fhEMcKqNjK6S/y7cVG0+iVqhmhXFW+awIuN7vOBhmDbZ3HF9rCCy20XiHoaG6FzrPJ+zfkjK/QZAbq2Vf58HA==
+ dependencies:
+ unified-lint-rule "^1.0.0"
+ unist-util-generated "^1.1.0"
+ unist-util-position "^3.0.0"
+ unist-util-visit "^1.1.1"
+
+remark-lint-table-pipes@^1.0.0:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/remark-lint-table-pipes/-/remark-lint-table-pipes-1.0.3.tgz#e34f91de4371f98c5e16701bd2302928468cbd8a"
+ integrity sha512-K9NnGZp6i0m/CaOH7ZT4Ymt2seyiRPcBIlNMMGXBm6gpy34KJDDxYqsNUrh+j7dR+Zg4rYAQLnr3BiSHvj+rbQ==
+ dependencies:
+ unified-lint-rule "^1.0.0"
+ unist-util-generated "^1.1.0"
+ unist-util-position "^3.0.0"
+ unist-util-visit "^1.1.1"
+
+remark-lint-unordered-list-marker-style@^1.0.0:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/remark-lint-unordered-list-marker-style/-/remark-lint-unordered-list-marker-style-1.0.3.tgz#72f9ec8cd54950753593b3b727fd28e48fa197d5"
+ integrity sha512-0nn/Yscy5ImO4fqByrk/Ua02UwGx8LRu+0kdCbkVz4IxPO5qxTEfyccUQZR71zTdMJp1d2OeqyD9XtMaO4X7Ww==
+ dependencies:
+ unified-lint-rule "^1.0.0"
+ unist-util-generated "^1.1.0"
+ unist-util-position "^3.0.0"
+ unist-util-visit "^1.1.1"
+
+remark-lint@^6.0.0:
+ version "6.0.5"
+ resolved "https://registry.yarnpkg.com/remark-lint/-/remark-lint-6.0.5.tgz#fbb864d56bf83d2e5d23ea7e346ca5e36710fda3"
+ integrity sha512-o1I3ddm+KNsTxk60wWGI+p2yU1jB1gcm8jo2Sy6VhJ4ab2TrQIp1oQbp5xeLoFXYSh/NAqCpKjHkCM/BYpkFdQ==
+ dependencies:
+ remark-message-control "^4.0.0"
+
+remark-message-control@^4.0.0:
+ version "4.2.0"
+ resolved "https://registry.yarnpkg.com/remark-message-control/-/remark-message-control-4.2.0.tgz#184c4a69ce6c4c707a5633fa35b0ce3dbf81f22c"
+ integrity sha512-WXH2t5ljTyhsXlK1zPBLF3iPHbXl58R94phPMreS1xcHWBZJt6Oiu8RtNjy1poZFb3PqKnbYLJeR/CWcZ1bTFw==
+ dependencies:
+ mdast-comment-marker "^1.0.0"
+ unified-message-control "^1.0.0"
+ xtend "^4.0.1"
+
+remark-parse@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/remark-parse/-/remark-parse-4.0.0.tgz#99f1f049afac80382366e2e0d0bd55429dd45d8b"
+ integrity sha512-XZgICP2gJ1MHU7+vQaRM+VA9HEL3X253uwUM/BGgx3iv6TH2B3bF3B8q00DKcyP9YrJV+/7WOWEWBFF/u8cIsw==
+ dependencies:
+ collapse-white-space "^1.0.2"
+ is-alphabetical "^1.0.0"
+ is-decimal "^1.0.0"
+ is-whitespace-character "^1.0.0"
+ is-word-character "^1.0.0"
+ markdown-escapes "^1.0.0"
+ parse-entities "^1.0.2"
+ repeat-string "^1.5.4"
+ state-toggle "^1.0.0"
+ trim "0.0.1"
+ trim-trailing-lines "^1.0.0"
+ unherit "^1.0.4"
+ unist-util-remove-position "^1.0.0"
+ vfile-location "^2.0.0"
+ xtend "^4.0.1"
+
+remark-preset-lint-markdown-style-guide@^2.1.1:
+ version "2.1.3"
+ resolved "https://registry.yarnpkg.com/remark-preset-lint-markdown-style-guide/-/remark-preset-lint-markdown-style-guide-2.1.3.tgz#2d2e6a162cc18976a2be93f4ebd45835f2ff6c14"
+ integrity sha512-H/jSoLvTY8abUcB+7/062I2oHevlHcHdrfRMP2RMh19QA1wmARgNEn3tZfdBXFq1TpzhevGgb6VwSdOjdU8NOQ==
+ dependencies:
+ remark-lint "^6.0.0"
+ remark-lint-blockquote-indentation "^1.0.0"
+ remark-lint-code-block-style "^1.0.0"
+ remark-lint-definition-case "^1.0.0"
+ remark-lint-definition-spacing "^1.0.0"
+ remark-lint-emphasis-marker "^1.0.0"
+ remark-lint-fenced-code-flag "^1.0.0"
+ remark-lint-fenced-code-marker "^1.0.0"
+ remark-lint-file-extension "^1.0.0"
+ remark-lint-final-definition "^1.0.0"
+ remark-lint-hard-break-spaces "^1.0.0"
+ remark-lint-heading-increment "^1.0.0"
+ remark-lint-heading-style "^1.0.0"
+ remark-lint-link-title-style "^1.0.0"
+ remark-lint-list-item-content-indent "^1.0.0"
+ remark-lint-list-item-indent "^1.0.0"
+ remark-lint-list-item-spacing "^1.0.0"
+ remark-lint-maximum-heading-length "^1.0.0"
+ remark-lint-maximum-line-length "^1.0.0"
+ remark-lint-no-auto-link-without-protocol "^1.0.0"
+ remark-lint-no-blockquote-without-marker "^2.0.0"
+ remark-lint-no-consecutive-blank-lines "^1.0.0"
+ remark-lint-no-duplicate-headings "^1.0.0"
+ remark-lint-no-emphasis-as-heading "^1.0.0"
+ remark-lint-no-file-name-articles "^1.0.0"
+ remark-lint-no-file-name-consecutive-dashes "^1.0.0"
+ remark-lint-no-file-name-irregular-characters "^1.0.0"
+ remark-lint-no-file-name-mixed-case "^1.0.0"
+ remark-lint-no-file-name-outer-dashes "^1.0.0"
+ remark-lint-no-heading-punctuation "^1.0.0"
+ remark-lint-no-inline-padding "^1.0.0"
+ remark-lint-no-literal-urls "^1.0.0"
+ remark-lint-no-multiple-toplevel-headings "^1.0.0"
+ remark-lint-no-shell-dollars "^1.0.0"
+ remark-lint-no-shortcut-reference-image "^1.0.0"
+ remark-lint-no-shortcut-reference-link "^1.0.0"
+ remark-lint-no-table-indentation "^1.0.0"
+ remark-lint-ordered-list-marker-style "^1.0.0"
+ remark-lint-ordered-list-marker-value "^1.0.0"
+ remark-lint-rule-style "^1.0.0"
+ remark-lint-strong-marker "^1.0.0"
+ remark-lint-table-cell-padding "^1.0.0"
+ remark-lint-table-pipe-alignment "^1.0.0"
+ remark-lint-table-pipes "^1.0.0"
+ remark-lint-unordered-list-marker-style "^1.0.0"
+
+remark-stringify@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/remark-stringify/-/remark-stringify-4.0.0.tgz#4431884c0418f112da44991b4e356cfe37facd87"
+ integrity sha512-xLuyKTnuQer3ke9hkU38SUYLiTmS078QOnoFavztmbt/pAJtNSkNtFgR0U//uCcmG0qnyxao+PDuatQav46F1w==
+ dependencies:
+ ccount "^1.0.0"
+ is-alphanumeric "^1.0.0"
+ is-decimal "^1.0.0"
+ is-whitespace-character "^1.0.0"
+ longest-streak "^2.0.1"
+ markdown-escapes "^1.0.0"
+ markdown-table "^1.1.0"
+ mdast-util-compact "^1.0.0"
+ parse-entities "^1.0.2"
+ repeat-string "^1.5.4"
+ state-toggle "^1.0.0"
+ stringify-entities "^1.0.1"
+ unherit "^1.0.4"
+ xtend "^4.0.1"
+
+remark@^8.0.0:
+ version "8.0.0"
+ resolved "https://registry.yarnpkg.com/remark/-/remark-8.0.0.tgz#287b6df2fe1190e263c1d15e486d3fa835594d6d"
+ integrity sha512-K0PTsaZvJlXTl9DN6qYlvjTkqSZBFELhROZMrblm2rB+085flN84nz4g/BscKRMqDvhzlK1oQ/xnWQumdeNZYw==
+ dependencies:
+ remark-parse "^4.0.0"
+ remark-stringify "^4.0.0"
+ unified "^6.0.0"
+
+remove-trailing-separator@^1.0.1:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef"
+ integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8=
+
+repeat-element@^1.1.2:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce"
+ integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==
+
+repeat-string@^1.5.0, repeat-string@^1.5.2, repeat-string@^1.5.4, repeat-string@^1.6.1:
+ version "1.6.1"
+ resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637"
+ integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc=
+
+repeating@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda"
+ integrity sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=
+ dependencies:
+ is-finite "^1.0.0"
+
+replace-ext@1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-1.0.0.tgz#de63128373fcbf7c3ccfa4de5a480c45a67958eb"
+ integrity sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=
+
+request@^2.45.0, request@^2.88.0:
+ version "2.88.0"
+ resolved "https://registry.yarnpkg.com/request/-/request-2.88.0.tgz#9c2fca4f7d35b592efe57c7f0a55e81052124fef"
+ integrity sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==
+ dependencies:
+ aws-sign2 "~0.7.0"
+ aws4 "^1.8.0"
+ caseless "~0.12.0"
+ combined-stream "~1.0.6"
+ extend "~3.0.2"
+ forever-agent "~0.6.1"
+ form-data "~2.3.2"
+ har-validator "~5.1.0"
+ http-signature "~1.2.0"
+ is-typedarray "~1.0.0"
+ isstream "~0.1.2"
+ json-stringify-safe "~5.0.1"
+ mime-types "~2.1.19"
+ oauth-sign "~0.9.0"
+ performance-now "^2.1.0"
+ qs "~6.5.2"
+ safe-buffer "^5.1.2"
+ tough-cookie "~2.4.3"
+ tunnel-agent "^0.6.0"
+ uuid "^3.3.2"
+
+require-directory@^2.1.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42"
+ integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I=
+
+require-main-filename@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b"
+ integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==
+
+require-uncached@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/require-uncached/-/require-uncached-1.0.3.tgz#4e0d56d6c9662fd31e43011c4b95aa49955421d3"
+ integrity sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM=
+ dependencies:
+ caller-path "^0.1.0"
+ resolve-from "^1.0.0"
+
+requireindex@~1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/requireindex/-/requireindex-1.1.0.tgz#e5404b81557ef75db6e49c5a72004893fe03e162"
+ integrity sha1-5UBLgVV+91225JxacgBIk/4D4WI=
+
+resolve-cwd@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz#00a9f7387556e27038eae232caa372a6a59b665a"
+ integrity sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=
+ dependencies:
+ resolve-from "^3.0.0"
+
+resolve-dir@^1.0.0, resolve-dir@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/resolve-dir/-/resolve-dir-1.0.1.tgz#79a40644c362be82f26effe739c9bb5382046f43"
+ integrity sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=
+ dependencies:
+ expand-tilde "^2.0.0"
+ global-modules "^1.0.0"
+
+resolve-from@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-1.0.1.tgz#26cbfe935d1aeeeabb29bc3fe5aeb01e93d44226"
+ integrity sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY=
+
+resolve-from@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748"
+ integrity sha1-six699nWiBvItuZTM17rywoYh0g=
+
+resolve-from@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6"
+ integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==
+
+resolve-from@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69"
+ integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==
+
+resolve-url@^0.2.1:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a"
+ integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=
+
+resolve@^1.1.6, resolve@^1.10.0, resolve@^1.11.0, resolve@^1.5.0, resolve@^1.6.0, resolve@^1.8.1:
+ version "1.11.1"
+ resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.11.1.tgz#ea10d8110376982fef578df8fc30b9ac30a07a3e"
+ integrity sha512-vIpgF6wfuJOZI7KKKSP+HmiKggadPQAdsp5HiC1mvqnfp0gF1vdwgBWZIdrVft9pgqoMFQN+R7BSWZiBxx+BBw==
+ dependencies:
+ path-parse "^1.0.6"
+
+restore-cursor@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-1.0.1.tgz#34661f46886327fed2991479152252df92daa541"
+ integrity sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=
+ dependencies:
+ exit-hook "^1.0.0"
+ onetime "^1.0.0"
+
+restore-cursor@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf"
+ integrity sha1-n37ih/gv0ybU/RYpI9YhKe7g368=
+ dependencies:
+ onetime "^2.0.0"
+ signal-exit "^3.0.2"
+
+ret@~0.1.10:
+ version "0.1.15"
+ resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc"
+ integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==
+
+rimraf@2.6.3, rimraf@^2.2.8, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.3, rimraf@~2.6.2:
+ version "2.6.3"
+ resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab"
+ integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==
+ dependencies:
+ glob "^7.1.3"
+
+rimraf@~2.2.6:
+ version "2.2.8"
+ resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.2.8.tgz#e439be2aaee327321952730f99a8929e4fc50582"
+ integrity sha1-5Dm+Kq7jJzIZUnMPmaiSnk/FBYI=
+
+ripemd160@^2.0.0, ripemd160@^2.0.1:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c"
+ integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==
+ dependencies:
+ hash-base "^3.0.0"
+ inherits "^2.0.1"
+
+run-async@^2.2.0:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0"
+ integrity sha1-A3GrSuC91yDUFm19/aZP96RFpsA=
+ dependencies:
+ is-promise "^2.1.0"
+
+run-node@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/run-node/-/run-node-1.0.0.tgz#46b50b946a2aa2d4947ae1d886e9856fd9cabe5e"
+ integrity sha512-kc120TBlQ3mih1LSzdAJXo4xn/GWS2ec0l3S+syHDXP9uRr0JAT8Qd3mdMuyjqCzeZktgP3try92cEgf9Nks8A==
+
+run-parallel@^1.1.2:
+ version "1.1.9"
+ resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.1.9.tgz#c9dd3a7cf9f4b2c4b6244e173a6ed866e61dd679"
+ integrity sha512-DEqnSRTDw/Tc3FXf49zedI638Z9onwUotBMiUFKmrO2sdFKIbXamXGQ3Axd4qgphxKB4kw/qP1w5kTxnfU1B9Q==
+
+run-queue@^1.0.0, run-queue@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/run-queue/-/run-queue-1.0.3.tgz#e848396f057d223f24386924618e25694161ec47"
+ integrity sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=
+ dependencies:
+ aproba "^1.1.1"
+
+rxjs@^5.5.2:
+ version "5.5.12"
+ resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-5.5.12.tgz#6fa61b8a77c3d793dbaf270bee2f43f652d741cc"
+ integrity sha512-xx2itnL5sBbqeeiVgNPVuQQ1nC8Jp2WfNJhXWHmElW9YmrpS9UVnNzhP3EH3HFqexO5Tlp8GhYY+WEcqcVMvGw==
+ dependencies:
+ symbol-observable "1.0.1"
+
+rxjs@^6.3.3, rxjs@^6.4.0:
+ version "6.5.2"
+ resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.5.2.tgz#2e35ce815cd46d84d02a209fb4e5921e051dbec7"
+ integrity sha512-HUb7j3kvb7p7eCUHE3FqjoDsC1xfZQ4AHFWfTKSpZ+sAhhz5X1WX0ZuUqWbzB2QhSLp3DoLUG+hMdEDKqWo2Zg==
+ dependencies:
+ tslib "^1.9.0"
+
+safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1:
+ version "5.1.2"
+ resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
+ integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==
+
+safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2:
+ version "5.2.0"
+ resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.0.tgz#b74daec49b1148f88c64b68d49b1e815c1f2f519"
+ integrity sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==
+
+safe-regex@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e"
+ integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4=
+ dependencies:
+ ret "~0.1.10"
+
+"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0:
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
+ integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
+
+sax@^1.2.4:
+ version "1.2.4"
+ resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9"
+ integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==
+
+schema-utils@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-1.0.0.tgz#0b79a93204d7b600d4b2850d1f66c2a34951c770"
+ integrity sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==
+ dependencies:
+ ajv "^6.1.0"
+ ajv-errors "^1.0.0"
+ ajv-keywords "^3.1.0"
+
+semver-compare@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/semver-compare/-/semver-compare-1.0.0.tgz#0dee216a1c941ab37e9efb1788f6afc5ff5537fc"
+ integrity sha1-De4hahyUGrN+nvsXiPavxf9VN/w=
+
+"semver@2 || 3 || 4 || 5", semver@^5.1.0, semver@^5.3.0, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0:
+ version "5.7.0"
+ resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.0.tgz#790a7cf6fea5459bac96110b29b60412dc8ff96b"
+ integrity sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==
+
+semver@5.5.0:
+ version "5.5.0"
+ resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.0.tgz#dc4bbc7a6ca9d916dee5d43516f0092b58f7b8ab"
+ integrity sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==
+
+semver@^6.0.0:
+ version "6.2.0"
+ resolved "https://registry.yarnpkg.com/semver/-/semver-6.2.0.tgz#4d813d9590aaf8a9192693d6c85b9344de5901db"
+ integrity sha512-jdFC1VdUGT/2Scgbimf7FSx9iJLXoqfglSF+gJeuNWVpiE37OIbc1jywR/GJyFdz3mnkz2/id0L0J/cr0izR5A==
+
+send@0.17.1:
+ version "0.17.1"
+ resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8"
+ integrity sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==
+ dependencies:
+ debug "2.6.9"
+ depd "~1.1.2"
+ destroy "~1.0.4"
+ encodeurl "~1.0.2"
+ escape-html "~1.0.3"
+ etag "~1.8.1"
+ fresh "0.5.2"
+ http-errors "~1.7.2"
+ mime "1.6.0"
+ ms "2.1.1"
+ on-finished "~2.3.0"
+ range-parser "~1.2.1"
+ statuses "~1.5.0"
+
+serialize-javascript@^1.7.0:
+ version "1.7.0"
+ resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-1.7.0.tgz#d6e0dfb2a3832a8c94468e6eb1db97e55a192a65"
+ integrity sha512-ke8UG8ulpFOxO8f8gRYabHQe/ZntKlcig2Mp+8+URDP1D8vJZ0KUt7LYo07q25Z/+JVSgpr/cui9PIp5H6/+nA==
+
+serve-static@1.14.1:
+ version "1.14.1"
+ resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.14.1.tgz#666e636dc4f010f7ef29970a88a674320898b2f9"
+ integrity sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==
+ dependencies:
+ encodeurl "~1.0.2"
+ escape-html "~1.0.3"
+ parseurl "~1.3.3"
+ send "0.17.1"
+
+set-blocking@^2.0.0, set-blocking@~2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7"
+ integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc=
+
+set-value@^2.0.0, set-value@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b"
+ integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==
+ dependencies:
+ extend-shallow "^2.0.1"
+ is-extendable "^0.1.1"
+ is-plain-object "^2.0.3"
+ split-string "^3.0.1"
+
+setimmediate@^1.0.4:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285"
+ integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=
+
+setprototypeof@1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683"
+ integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==
+
+sha.js@^2.4.0, sha.js@^2.4.8:
+ version "2.4.11"
+ resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7"
+ integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==
+ dependencies:
+ inherits "^2.0.1"
+ safe-buffer "^5.0.1"
+
+shebang-command@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea"
+ integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=
+ dependencies:
+ shebang-regex "^1.0.0"
+
+shebang-regex@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3"
+ integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=
+
+shelljs@^0.8.1:
+ version "0.8.3"
+ resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.8.3.tgz#a7f3319520ebf09ee81275b2368adb286659b097"
+ integrity sha512-fc0BKlAWiLpwZljmOvAOTE/gXawtCoNrP5oaY7KIaQbbyHeQVg01pSEuEGvGh3HEdBU4baCD7wQBwADmM/7f7A==
+ dependencies:
+ glob "^7.0.0"
+ interpret "^1.0.0"
+ rechoir "^0.6.2"
+
+shellsubstitute@^1.1.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/shellsubstitute/-/shellsubstitute-1.2.0.tgz#e4f702a50c518b0f6fe98451890d705af29b6b70"
+ integrity sha1-5PcCpQxRiw9v6YRRiQ1wWvKba3A=
+
+shx@^0.3.2:
+ version "0.3.2"
+ resolved "https://registry.yarnpkg.com/shx/-/shx-0.3.2.tgz#40501ce14eb5e0cbcac7ddbd4b325563aad8c123"
+ integrity sha512-aS0mWtW3T2sHAenrSrip2XGv39O9dXIFUqxAEWHEOS1ePtGIBavdPJY1kE2IHl14V/4iCbUiNDPGdyYTtmhSoA==
+ dependencies:
+ es6-object-assign "^1.0.3"
+ minimist "^1.2.0"
+ shelljs "^0.8.1"
+
+signal-exit@^3.0.0, signal-exit@^3.0.2:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d"
+ integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=
+
+simple-git@^1.85.0:
+ version "1.118.0"
+ resolved "https://registry.yarnpkg.com/simple-git/-/simple-git-1.118.0.tgz#6e31d50672c58abdbdb0410fadfdb1db29bd71bd"
+ integrity sha512-0CaCfxdR7ula3EuOkrVFKBiqt7LcvMPfXgIdUhSwjC4A+OaO8yEPGjdO/kWY7ew9uYP9KEoH+dvslOOm7eVzkA==
+ dependencies:
+ debug "^4.0.1"
+
+single-line-log@^1.1.2:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/single-line-log/-/single-line-log-1.1.2.tgz#c2f83f273a3e1a16edb0995661da0ed5ef033364"
+ integrity sha1-wvg/Jzo+GhbtsJlWYdoO1e8DM2Q=
+ dependencies:
+ string-width "^1.0.1"
+
+slash@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55"
+ integrity sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=
+
+slash@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634"
+ integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==
+
+slice-ansi@0.0.4:
+ version "0.0.4"
+ resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-0.0.4.tgz#edbf8903f66f7ce2f8eafd6ceed65e264c831b35"
+ integrity sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU=
+
+slice-ansi@1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-1.0.0.tgz#044f1a49d8842ff307aad6b505ed178bd950134d"
+ integrity sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg==
+ dependencies:
+ is-fullwidth-code-point "^2.0.0"
+
+slice-ansi@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.1.0.tgz#cacd7693461a637a5788d92a7dd4fba068e81636"
+ integrity sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==
+ dependencies:
+ ansi-styles "^3.2.0"
+ astral-regex "^1.0.0"
+ is-fullwidth-code-point "^2.0.0"
+
+sliced@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/sliced/-/sliced-1.0.1.tgz#0b3a662b5d04c3177b1926bea82b03f837a2ef41"
+ integrity sha1-CzpmK10Ewxd7GSa+qCsD+Dei70E=
+
+snapdragon-node@^2.0.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b"
+ integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==
+ dependencies:
+ define-property "^1.0.0"
+ isobject "^3.0.0"
+ snapdragon-util "^3.0.1"
+
+snapdragon-util@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2"
+ integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==
+ dependencies:
+ kind-of "^3.2.0"
+
+snapdragon@^0.8.1:
+ version "0.8.2"
+ resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d"
+ integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==
+ dependencies:
+ base "^0.11.1"
+ debug "^2.2.0"
+ define-property "^0.2.5"
+ extend-shallow "^2.0.1"
+ map-cache "^0.2.2"
+ source-map "^0.5.6"
+ source-map-resolve "^0.5.0"
+ use "^3.1.0"
+
+source-list-map@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34"
+ integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==
+
+source-map-resolve@^0.5.0:
+ version "0.5.2"
+ resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.2.tgz#72e2cc34095543e43b2c62b2c4c10d4a9054f259"
+ integrity sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==
+ dependencies:
+ atob "^2.1.1"
+ decode-uri-component "^0.2.0"
+ resolve-url "^0.2.1"
+ source-map-url "^0.4.0"
+ urix "^0.1.0"
+
+source-map-support@^0.5.6, source-map-support@~0.5.12:
+ version "0.5.12"
+ resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.12.tgz#b4f3b10d51857a5af0138d3ce8003b201613d599"
+ integrity sha512-4h2Pbvyy15EE02G+JOZpUCmqWJuqrs+sEkzewTm++BPi7Hvn/HwcqLAcNxYAyI0x13CpPPn+kMjl+hplXMHITQ==
+ dependencies:
+ buffer-from "^1.0.0"
+ source-map "^0.6.0"
+
+source-map-url@^0.4.0:
+ version "0.4.0"
+ resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3"
+ integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=
+
+source-map@^0.5.6:
+ version "0.5.7"
+ resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc"
+ integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=
+
+source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1:
+ version "0.6.1"
+ resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
+ integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
+
+spdx-correct@^3.0.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.0.tgz#fb83e504445268f154b074e218c87c003cd31df4"
+ integrity sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==
+ dependencies:
+ spdx-expression-parse "^3.0.0"
+ spdx-license-ids "^3.0.0"
+
+spdx-exceptions@^2.1.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz#2ea450aee74f2a89bfb94519c07fcd6f41322977"
+ integrity sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==
+
+spdx-expression-parse@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz#99e119b7a5da00e05491c9fa338b7904823b41d0"
+ integrity sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==
+ dependencies:
+ spdx-exceptions "^2.1.0"
+ spdx-license-ids "^3.0.0"
+
+spdx-license-ids@^3.0.0:
+ version "3.0.4"
+ resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.4.tgz#75ecd1a88de8c184ef015eafb51b5b48bfd11bb1"
+ integrity sha512-7j8LYJLeY/Yb6ACbQ7F76qy5jHkp0U6jgBfJsk97bwWlVUnUWsAgpyaCvo17h0/RQGnQ036tVDomiwoI4pDkQA==
+
+speedometer@~0.1.2:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/speedometer/-/speedometer-0.1.4.tgz#9876dbd2a169d3115402d48e6ea6329c8816a50d"
+ integrity sha1-mHbb0qFp0xFUAtSObqYynIgWpQ0=
+
+split-string@^3.0.1, split-string@^3.0.2:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2"
+ integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==
+ dependencies:
+ extend-shallow "^3.0.0"
+
+sprintf-js@~1.0.2:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c"
+ integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=
+
+sshpk@^1.7.0:
+ version "1.16.1"
+ resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877"
+ integrity sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==
+ dependencies:
+ asn1 "~0.2.3"
+ assert-plus "^1.0.0"
+ bcrypt-pbkdf "^1.0.0"
+ dashdash "^1.12.0"
+ ecc-jsbn "~0.1.1"
+ getpass "^0.1.1"
+ jsbn "~0.1.0"
+ safer-buffer "^2.0.2"
+ tweetnacl "~0.14.0"
+
+ssri@^6.0.1:
+ version "6.0.1"
+ resolved "https://registry.yarnpkg.com/ssri/-/ssri-6.0.1.tgz#2a3c41b28dd45b62b63676ecb74001265ae9edd8"
+ integrity sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==
+ dependencies:
+ figgy-pudding "^3.5.1"
+
+staged-git-files@1.1.2:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/staged-git-files/-/staged-git-files-1.1.2.tgz#4326d33886dc9ecfa29a6193bf511ba90a46454b"
+ integrity sha512-0Eyrk6uXW6tg9PYkhi/V/J4zHp33aNyi2hOCmhFLqLTIhbgqWn5jlSzI+IU0VqrZq6+DbHcabQl/WP6P3BG0QA==
+
+standard-engine@~9.0.0:
+ version "9.0.0"
+ resolved "https://registry.yarnpkg.com/standard-engine/-/standard-engine-9.0.0.tgz#d3a3d74c4c1b91f51a1e66362465261ca7610316"
+ integrity sha512-ZfNfCWZ2Xq67VNvKMPiVMKHnMdvxYzvZkf1AH8/cw2NLDBm5LRsxMqvEJpsjLI/dUosZ3Z1d6JlHDp5rAvvk2w==
+ dependencies:
+ deglob "^2.1.0"
+ get-stdin "^6.0.0"
+ minimist "^1.1.0"
+ pkg-conf "^2.0.0"
+
+standard-markdown@^5.0.0:
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/standard-markdown/-/standard-markdown-5.0.1.tgz#39598c611bfe03b2d4313df792f365544959a592"
+ integrity sha512-rvbuTqF4zJX3yxgHhRB6o0uGq+V87Dbzk8QeBy9dyb9RdBWL4OG3nCpxfEnM0KHjycMCSMK36r60k/MGThERdA==
+ dependencies:
+ commander "^2.18.0"
+ globby "^8.0.1"
+ lodash.flatten "^4.4.0"
+ lodash.range "^3.2.0"
+ ora "^3.0.0"
+ standard "^12.0.1"
+
+standard@^12.0.1:
+ version "12.0.1"
+ resolved "https://registry.yarnpkg.com/standard/-/standard-12.0.1.tgz#0fc5a8aa6c34c546c5562aae644242b24dae2e61"
+ integrity sha512-UqdHjh87OG2gUrNCSM4QRLF5n9h3TFPwrCNyVlkqu31Hej0L/rc8hzKqVvkb2W3x0WMq7PzZdkLfEcBhVOR6lg==
+ dependencies:
+ eslint "~5.4.0"
+ eslint-config-standard "12.0.0"
+ eslint-config-standard-jsx "6.0.2"
+ eslint-plugin-import "~2.14.0"
+ eslint-plugin-node "~7.0.1"
+ eslint-plugin-promise "~4.0.0"
+ eslint-plugin-react "~7.11.1"
+ eslint-plugin-standard "~4.0.0"
+ standard-engine "~9.0.0"
+
+state-toggle@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/state-toggle/-/state-toggle-1.0.2.tgz#75e93a61944116b4959d665c8db2d243631d6ddc"
+ integrity sha512-8LpelPGR0qQM4PnfLiplOQNJcIN1/r2Gy0xKB2zKnIW2YzPMt2sR4I/+gtPjhN7Svh9kw+zqEg2SFwpBO9iNiw==
+
+static-extend@^0.1.1:
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6"
+ integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=
+ dependencies:
+ define-property "^0.2.5"
+ object-copy "^0.1.0"
+
+"statuses@>= 1.5.0 < 2", statuses@~1.5.0:
+ version "1.5.0"
+ resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c"
+ integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=
+
+stream-browserify@^2.0.1:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.2.tgz#87521d38a44aa7ee91ce1cd2a47df0cb49dd660b"
+ integrity sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==
+ dependencies:
+ inherits "~2.0.1"
+ readable-stream "^2.0.2"
+
+stream-each@^1.1.0:
+ version "1.2.3"
+ resolved "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.3.tgz#ebe27a0c389b04fbcc233642952e10731afa9bae"
+ integrity sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==
+ dependencies:
+ end-of-stream "^1.1.0"
+ stream-shift "^1.0.0"
+
+stream-http@^2.7.2:
+ version "2.8.3"
+ resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.3.tgz#b2d242469288a5a27ec4fe8933acf623de6514fc"
+ integrity sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==
+ dependencies:
+ builtin-status-codes "^3.0.0"
+ inherits "^2.0.1"
+ readable-stream "^2.3.6"
+ to-arraybuffer "^1.0.0"
+ xtend "^4.0.0"
+
+stream-shift@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.0.tgz#d5c752825e5367e786f78e18e445ea223a155952"
+ integrity sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=
+
+string-argv@^0.0.2:
+ version "0.0.2"
+ resolved "https://registry.yarnpkg.com/string-argv/-/string-argv-0.0.2.tgz#dac30408690c21f3c3630a3ff3a05877bdcbd736"
+ integrity sha1-2sMECGkMIfPDYwo/86BYd73L1zY=
+
+string-width@^1.0.0, string-width@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3"
+ integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=
+ dependencies:
+ code-point-at "^1.0.0"
+ is-fullwidth-code-point "^1.0.0"
+ strip-ansi "^3.0.0"
+
+"string-width@^1.0.2 || 2", string-width@^2.1.0, string-width@^2.1.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e"
+ integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==
+ dependencies:
+ is-fullwidth-code-point "^2.0.0"
+ strip-ansi "^4.0.0"
+
+string-width@^3.0.0, string-width@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961"
+ integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==
+ dependencies:
+ emoji-regex "^7.0.1"
+ is-fullwidth-code-point "^2.0.0"
+ strip-ansi "^5.1.0"
+
+string_decoder@^1.0.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.2.0.tgz#fe86e738b19544afe70469243b2a1ee9240eae8d"
+ integrity sha512-6YqyX6ZWEYguAxgZzHGL7SsCeGx3V2TtOTqZz1xSTSWnqsbWwbptafNyvf/ACquZUXV3DANr5BDIwNYe1mN42w==
+ dependencies:
+ safe-buffer "~5.1.0"
+
+string_decoder@~0.10.x:
+ version "0.10.31"
+ resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94"
+ integrity sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=
+
+string_decoder@~1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8"
+ integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==
+ dependencies:
+ safe-buffer "~5.1.0"
+
+stringify-entities@^1.0.1:
+ version "1.3.2"
+ resolved "https://registry.yarnpkg.com/stringify-entities/-/stringify-entities-1.3.2.tgz#a98417e5471fd227b3e45d3db1861c11caf668f7"
+ integrity sha512-nrBAQClJAPN2p+uGCVJRPIPakKeKWZ9GtBCmormE7pWOSlHat7+x5A8gx85M7HM5Dt0BP3pP5RhVW77WdbJJ3A==
+ dependencies:
+ character-entities-html4 "^1.0.0"
+ character-entities-legacy "^1.0.0"
+ is-alphanumerical "^1.0.0"
+ is-hexadecimal "^1.0.0"
+
+stringify-object@^3.2.2:
+ version "3.3.0"
+ resolved "https://registry.yarnpkg.com/stringify-object/-/stringify-object-3.3.0.tgz#703065aefca19300d3ce88af4f5b3956d7556629"
+ integrity sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==
+ dependencies:
+ get-own-enumerable-property-symbols "^3.0.0"
+ is-obj "^1.0.1"
+ is-regexp "^1.0.0"
+
+strip-ansi@^3.0.0, strip-ansi@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf"
+ integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=
+ dependencies:
+ ansi-regex "^2.0.0"
+
+strip-ansi@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f"
+ integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8=
+ dependencies:
+ ansi-regex "^3.0.0"
+
+strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0:
+ version "5.2.0"
+ resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae"
+ integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==
+ dependencies:
+ ansi-regex "^4.1.0"
+
+strip-bom@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e"
+ integrity sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=
+ dependencies:
+ is-utf8 "^0.2.0"
+
+strip-bom@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3"
+ integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=
+
+strip-eof@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf"
+ integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=
+
+strip-indent@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-1.0.1.tgz#0c7962a6adefa7bbd4ac366460a638552ae1a0a2"
+ integrity sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=
+ dependencies:
+ get-stdin "^4.0.1"
+
+strip-json-comments@^2.0.1, strip-json-comments@~2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a"
+ integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo=
+
+sumchecker@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/sumchecker/-/sumchecker-2.0.2.tgz#0f42c10e5d05da5d42eea3e56c3399a37d6c5b3e"
+ integrity sha1-D0LBDl0F2l1C7qPlbDOZo31sWz4=
+ dependencies:
+ debug "^2.2.0"
+
+supports-color@6.1.0:
+ version "6.1.0"
+ resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3"
+ integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==
+ dependencies:
+ has-flag "^3.0.0"
+
+supports-color@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7"
+ integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=
+
+supports-color@^4.1.0:
+ version "4.5.0"
+ resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.5.0.tgz#be7a0de484dec5c5cddf8b3d59125044912f635b"
+ integrity sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=
+ dependencies:
+ has-flag "^2.0.0"
+
+supports-color@^5.3.0:
+ version "5.5.0"
+ resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f"
+ integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==
+ dependencies:
+ has-flag "^3.0.0"
+
+symbol-observable@1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.0.1.tgz#8340fc4702c3122df5d22288f88283f513d3fdd4"
+ integrity sha1-g0D8RwLDEi310iKI+IKD9RPT/dQ=
+
+symbol-observable@^1.1.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804"
+ integrity sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==
+
+synchronous-promise@^2.0.6:
+ version "2.0.9"
+ resolved "https://registry.yarnpkg.com/synchronous-promise/-/synchronous-promise-2.0.9.tgz#b83db98e9e7ae826bf9c8261fd8ac859126c780a"
+ integrity sha512-LO95GIW16x69LuND1nuuwM4pjgFGupg7pZ/4lU86AmchPKrhk0o2tpMU2unXRrqo81iAFe1YJ0nAGEVwsrZAgg==
+
+table@^4.0.3:
+ version "4.0.3"
+ resolved "https://registry.yarnpkg.com/table/-/table-4.0.3.tgz#00b5e2b602f1794b9acaf9ca908a76386a7813bc"
+ integrity sha512-S7rnFITmBH1EnyKcvxBh1LjYeQMmnZtCXSEbHcH6S0NoKit24ZuFO/T1vDcLdYsLQkM188PVVhQmzKIuThNkKg==
+ dependencies:
+ ajv "^6.0.1"
+ ajv-keywords "^3.0.0"
+ chalk "^2.1.0"
+ lodash "^4.17.4"
+ slice-ansi "1.0.0"
+ string-width "^2.1.1"
+
+table@^5.2.3:
+ version "5.4.1"
+ resolved "https://registry.yarnpkg.com/table/-/table-5.4.1.tgz#0691ae2ebe8259858efb63e550b6d5f9300171e8"
+ integrity sha512-E6CK1/pZe2N75rGZQotFOdmzWQ1AILtgYbMAbAjvms0S1l5IDB47zG3nCnFGB/w+7nB3vKofbLXCH7HPBo864w==
+ dependencies:
+ ajv "^6.9.1"
+ lodash "^4.17.11"
+ slice-ansi "^2.1.0"
+ string-width "^3.0.0"
+
+tap-parser@~1.2.2:
+ version "1.2.2"
+ resolved "https://registry.yarnpkg.com/tap-parser/-/tap-parser-1.2.2.tgz#5e2f6970611f079c7cf857de1dc7aa1b480de7a5"
+ integrity sha1-Xi9pcGEfB5x8+FfeHceqG0gN56U=
+ dependencies:
+ events-to-array "^1.0.1"
+ inherits "~2.0.1"
+ js-yaml "^3.2.7"
+ optionalDependencies:
+ readable-stream "^2"
+
+tap-xunit@^2.4.1:
+ version "2.4.1"
+ resolved "https://registry.yarnpkg.com/tap-xunit/-/tap-xunit-2.4.1.tgz#9823797b676ae5017f4e380bd70abb893b8e120e"
+ integrity sha512-qcZStDtjjYjMKAo7QNiCtOW256g3tuSyCSe5kNJniG1Q2oeOExJq4vm8CwboHZURpkXAHvtqMl4TVL7mcbMVVA==
+ dependencies:
+ duplexer "~0.1.1"
+ minimist "~1.2.0"
+ tap-parser "~1.2.2"
+ through2 "~2.0.0"
+ xmlbuilder "~4.2.0"
+ xtend "~4.0.0"
+
+tapable@^1.0.0, tapable@^1.1.0:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2"
+ integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==
+
+tar-fs@^1.13.0:
+ version "1.16.3"
+ resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-1.16.3.tgz#966a628841da2c4010406a82167cbd5e0c72d509"
+ integrity sha512-NvCeXpYx7OsmOh8zIOP/ebG55zZmxLE0etfWRbWok+q2Qo8x/vOR/IJT1taADXPe+jsiu9axDb3X4B+iIgNlKw==
+ dependencies:
+ chownr "^1.0.1"
+ mkdirp "^0.5.1"
+ pump "^1.0.0"
+ tar-stream "^1.1.2"
+
+tar-stream@^1.1.2:
+ version "1.6.2"
+ resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-1.6.2.tgz#8ea55dab37972253d9a9af90fdcd559ae435c555"
+ integrity sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A==
+ dependencies:
+ bl "^1.0.0"
+ buffer-alloc "^1.2.0"
+ end-of-stream "^1.0.0"
+ fs-constants "^1.0.0"
+ readable-stream "^2.3.0"
+ to-buffer "^1.1.1"
+ xtend "^4.0.0"
+
+tar@^4, tar@^4.4.7:
+ version "4.4.10"
+ resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.10.tgz#946b2810b9a5e0b26140cf78bea6b0b0d689eba1"
+ integrity sha512-g2SVs5QIxvo6OLp0GudTqEf05maawKUxXru104iaayWA09551tFCTI8f1Asb4lPfkBr91k07iL4c11XO3/b0tA==
+ dependencies:
+ chownr "^1.1.1"
+ fs-minipass "^1.2.5"
+ minipass "^2.3.5"
+ minizlib "^1.2.1"
+ mkdirp "^0.5.0"
+ safe-buffer "^5.1.2"
+ yallist "^3.0.3"
+
+temp@^0.8.3:
+ version "0.8.3"
+ resolved "https://registry.yarnpkg.com/temp/-/temp-0.8.3.tgz#e0c6bc4d26b903124410e4fed81103014dfc1f59"
+ integrity sha1-4Ma8TSa5AxJEEOT+2BEDAU38H1k=
+ dependencies:
+ os-tmpdir "^1.0.0"
+ rimraf "~2.2.6"
+
+terser-webpack-plugin@^1.1.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.3.0.tgz#69aa22426299f4b5b3775cbed8cb2c5d419aa1d4"
+ integrity sha512-W2YWmxPjjkUcOWa4pBEv4OP4er1aeQJlSo2UhtCFQCuRXEHjOFscO8VyWHj9JLlA0RzQb8Y2/Ta78XZvT54uGg==
+ dependencies:
+ cacache "^11.3.2"
+ find-cache-dir "^2.0.0"
+ is-wsl "^1.1.0"
+ loader-utils "^1.2.3"
+ schema-utils "^1.0.0"
+ serialize-javascript "^1.7.0"
+ source-map "^0.6.1"
+ terser "^4.0.0"
+ webpack-sources "^1.3.0"
+ worker-farm "^1.7.0"
+
+terser@^4.0.0:
+ version "4.1.2"
+ resolved "https://registry.yarnpkg.com/terser/-/terser-4.1.2.tgz#b2656c8a506f7ce805a3f300a2ff48db022fa391"
+ integrity sha512-jvNoEQSPXJdssFwqPSgWjsOrb+ELoE+ILpHPKXC83tIxOlh2U75F1KuB2luLD/3a6/7K3Vw5pDn+hvu0C4AzSw==
+ dependencies:
+ commander "^2.20.0"
+ source-map "~0.6.1"
+ source-map-support "~0.5.12"
+
+text-table@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4"
+ integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=
+
+throttleit@0.0.2:
+ version "0.0.2"
+ resolved "https://registry.yarnpkg.com/throttleit/-/throttleit-0.0.2.tgz#cfedf88e60c00dd9697b61fdd2a8343a9b680eaf"
+ integrity sha1-z+34jmDADdlpe2H90qg0OptoDq8=
+
+through2@^2.0.0, through2@^2.0.3, through2@~2.0.0:
+ version "2.0.5"
+ resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd"
+ integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==
+ dependencies:
+ readable-stream "~2.3.6"
+ xtend "~4.0.1"
+
+through2@~0.2.3:
+ version "0.2.3"
+ resolved "https://registry.yarnpkg.com/through2/-/through2-0.2.3.tgz#eb3284da4ea311b6cc8ace3653748a52abf25a3f"
+ integrity sha1-6zKE2k6jEbbMis42U3SKUqvyWj8=
+ dependencies:
+ readable-stream "~1.1.9"
+ xtend "~2.1.1"
+
+through@^2.3.6:
+ version "2.3.8"
+ resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5"
+ integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=
+
+timed-out@^4.0.0:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f"
+ integrity sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=
+
+timers-browserify@1.4.2:
+ version "1.4.2"
+ resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-1.4.2.tgz#c9c58b575be8407375cb5e2462dacee74359f41d"
+ integrity sha1-ycWLV1voQHN1y14kYtrO50NZ9B0=
+ dependencies:
+ process "~0.11.0"
+
+timers-browserify@^2.0.4:
+ version "2.0.10"
+ resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.10.tgz#1d28e3d2aadf1d5a5996c4e9f95601cd053480ae"
+ integrity sha512-YvC1SV1XdOUaL6gx5CoGroT3Gu49pK9+TZ38ErPldOWW4j49GI1HKs9DV+KGq/w6y+LZ72W1c8cKz2vzY+qpzg==
+ dependencies:
+ setimmediate "^1.0.4"
+
+tmp-promise@^1.0.5:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/tmp-promise/-/tmp-promise-1.1.0.tgz#bb924d239029157b9bc1d506a6aa341f8b13e64c"
+ integrity sha512-8+Ah9aB1IRXCnIOxXZ0uFozV1nMU5xiu7hhFVUSxZ3bYu+psD4TzagCzVbexUCgNNGJnsmNDQlS4nG3mTyoNkw==
+ dependencies:
+ bluebird "^3.5.0"
+ tmp "0.1.0"
+
+tmp@0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.1.0.tgz#ee434a4e22543082e294ba6201dcc6eafefa2877"
+ integrity sha512-J7Z2K08jbGcdA1kkQpJSqLF6T0tdQqpR2pnSUXsIchbPdTI9v3e85cLW0d6WDhwuAleOV71j2xWs8qMPfK7nKw==
+ dependencies:
+ rimraf "^2.6.3"
+
+tmp@^0.0.33:
+ version "0.0.33"
+ resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9"
+ integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==
+ dependencies:
+ os-tmpdir "~1.0.2"
+
+to-arraybuffer@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43"
+ integrity sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=
+
+to-buffer@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/to-buffer/-/to-buffer-1.1.1.tgz#493bd48f62d7c43fcded313a03dcadb2e1213a80"
+ integrity sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg==
+
+to-object-path@^0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af"
+ integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=
+ dependencies:
+ kind-of "^3.0.2"
+
+to-regex-range@^2.1.0:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38"
+ integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=
+ dependencies:
+ is-number "^3.0.0"
+ repeat-string "^1.6.1"
+
+to-regex-range@^5.0.1:
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4"
+ integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==
+ dependencies:
+ is-number "^7.0.0"
+
+to-regex@^3.0.1, to-regex@^3.0.2:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce"
+ integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==
+ dependencies:
+ define-property "^2.0.2"
+ extend-shallow "^3.0.2"
+ regex-not "^1.0.2"
+ safe-regex "^1.1.0"
+
+to-vfile@^2.0.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/to-vfile/-/to-vfile-2.2.0.tgz#342d1705e6df526d569b1fc8bfa29f1f36d6c416"
+ integrity sha512-saGC8/lWdGrEoBMLUtgzhRHWAkQMP8gdldA3MOAUhBwTGEb1RSMVcflHGSx4ZJsdEZ9o1qDBCPp47LCPrbZWow==
+ dependencies:
+ is-buffer "^1.1.4"
+ vfile "^2.0.0"
+ x-is-function "^1.0.4"
+
+toidentifier@1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553"
+ integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==
+
+toposort@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/toposort/-/toposort-2.0.2.tgz#ae21768175d1559d48bef35420b2f4962f09c330"
+ integrity sha1-riF2gXXRVZ1IvvNUILL0li8JwzA=
+
+tough-cookie@~2.4.3:
+ version "2.4.3"
+ resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.4.3.tgz#53f36da3f47783b0925afa06ff9f3b165280f781"
+ integrity sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==
+ dependencies:
+ psl "^1.1.24"
+ punycode "^1.4.1"
+
+trim-newlines@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613"
+ integrity sha1-WIeWa7WCpFA6QetST301ARgVphM=
+
+trim-trailing-lines@^1.0.0:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/trim-trailing-lines/-/trim-trailing-lines-1.1.2.tgz#d2f1e153161152e9f02fabc670fb40bec2ea2e3a"
+ integrity sha512-MUjYItdrqqj2zpcHFTkMa9WAv4JHTI6gnRQGPFLrt5L9a6tRMiDnIqYl8JBvu2d2Tc3lWJKQwlGCp0K8AvCM+Q==
+
+trim@0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/trim/-/trim-0.0.1.tgz#5858547f6b290757ee95cccc666fb50084c460dd"
+ integrity sha1-WFhUf2spB1fulczMZm+1AITEYN0=
+
+trough@^1.0.0:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/trough/-/trough-1.0.4.tgz#3b52b1f13924f460c3fbfd0df69b587dbcbc762e"
+ integrity sha512-tdzBRDGWcI1OpPVmChbdSKhvSVurznZ8X36AYURAcl+0o2ldlCY2XPzyXNNxwJwwyIU+rIglTCG4kxtNKBQH7Q==
+
+ts-loader@^6.0.2:
+ version "6.0.4"
+ resolved "https://registry.yarnpkg.com/ts-loader/-/ts-loader-6.0.4.tgz#bc331ad91a887a60632d94c9f79448666f2c4b63"
+ integrity sha512-p2zJYe7OtwR+49kv4gs7v4dMrfYD1IPpOtqiSPCbe8oR+4zEBtdHwzM7A7M91F+suReqgzZrlClk4LRSSp882g==
+ dependencies:
+ chalk "^2.3.0"
+ enhanced-resolve "^4.0.0"
+ loader-utils "^1.0.2"
+ micromatch "^4.0.0"
+ semver "^6.0.0"
+
+ts-node@^6.0.3:
+ version "6.2.0"
+ resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-6.2.0.tgz#65a0ae2acce319ea4fd7ac8d7c9f1f90c5da6baf"
+ integrity sha512-ZNT+OEGfUNVMGkpIaDJJ44Zq3Yr0bkU/ugN1PHbU+/01Z7UV1fsELRiTx1KuQNvQ1A3pGh3y25iYF6jXgxV21A==
+ dependencies:
+ arrify "^1.0.0"
+ buffer-from "^1.1.0"
+ diff "^3.1.0"
+ make-error "^1.1.1"
+ minimist "^1.2.0"
+ mkdirp "^0.5.1"
+ source-map-support "^0.5.6"
+ yn "^2.0.0"
+
+tslib@^1.8.1, tslib@^1.9.0:
+ version "1.10.0"
+ resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.10.0.tgz#c3c19f95973fb0a62973fb09d90d961ee43e5c8a"
+ integrity sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==
+
+tsutils@^3.7.0:
+ version "3.14.0"
+ resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.14.0.tgz#bf8d5a7bae5369331fa0f2b0a5a10bd7f7396c77"
+ integrity sha512-SmzGbB0l+8I0QwsPgjooFRaRvHLBLNYM8SeQ0k6rtNDru5sCGeLJcZdwilNndN+GysuFjF5EIYgN8GfFG6UeUw==
+ dependencies:
+ tslib "^1.8.1"
+
+tty-browserify@0.0.0:
+ version "0.0.0"
+ resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6"
+ integrity sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=
+
+tunnel-agent@^0.6.0:
+ version "0.6.0"
+ resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd"
+ integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=
+ dependencies:
+ safe-buffer "^5.0.1"
+
+tweetnacl@^0.14.3, tweetnacl@~0.14.0:
+ version "0.14.5"
+ resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64"
+ integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=
+
+type-check@~0.3.2:
+ version "0.3.2"
+ resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72"
+ integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=
+ dependencies:
+ prelude-ls "~1.1.2"
+
+type-detect@^4.0.0, type-detect@^4.0.5:
+ version "4.0.8"
+ resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c"
+ integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==
+
+type-fest@^0.4.1:
+ version "0.4.1"
+ resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.4.1.tgz#8bdf77743385d8a4f13ba95f610f5ccd68c728f8"
+ integrity sha512-IwzA/LSfD2vC1/YDYMv/zHP4rDF1usCwllsDpbolT3D4fUepIO7f9K70jjmUewU/LmGUKJcwcVtDCpnKk4BPMw==
+
+type-is@~1.6.17, type-is@~1.6.18:
+ version "1.6.18"
+ resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131"
+ integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==
+ dependencies:
+ media-typer "0.3.0"
+ mime-types "~2.1.24"
+
+typedarray@^0.0.6:
+ version "0.0.6"
+ resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"
+ integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=
+
+typescript@^3.4.5, typescript@^3.5.2:
+ version "3.5.3"
+ resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.5.3.tgz#c830f657f93f1ea846819e929092f5fe5983e977"
+ integrity sha512-ACzBtm/PhXBDId6a6sDJfroT2pOWt/oOnk4/dElG5G33ZL776N3Y6/6bKZJBFpd+b05F3Ct9qDjMeJmRWtE2/g==
+
+uc.micro@^1.0.1, uc.micro@^1.0.5:
+ version "1.0.6"
+ resolved "https://registry.yarnpkg.com/uc.micro/-/uc.micro-1.0.6.tgz#9c411a802a409a91fc6cf74081baba34b24499ac"
+ integrity sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==
+
+unherit@^1.0.4:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/unherit/-/unherit-1.1.2.tgz#14f1f397253ee4ec95cec167762e77df83678449"
+ integrity sha512-W3tMnpaMG7ZY6xe/moK04U9fBhi6wEiCYHUW5Mop/wQHf12+79EQGwxYejNdhEz2mkqkBlGwm7pxmgBKMVUj0w==
+ dependencies:
+ inherits "^2.0.1"
+ xtend "^4.0.1"
+
+unified-args@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/unified-args/-/unified-args-4.0.0.tgz#8d9b9b8ad347beb37f430562a62c4d361b42220f"
+ integrity sha1-jZubitNHvrN/QwVipixNNhtCIg8=
+ dependencies:
+ camelcase "^4.0.0"
+ chalk "^2.0.0"
+ chokidar "^1.5.1"
+ minimist "^1.2.0"
+ text-table "^0.2.0"
+ unified-engine "^4.0.0"
+
+unified-engine@^4.0.0:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/unified-engine/-/unified-engine-4.0.1.tgz#9692aa97fd5c4ec36889779e12514bef8e863fc3"
+ integrity sha1-lpKql/1cTsNoiXeeElFL746GP8M=
+ dependencies:
+ concat-stream "^1.5.1"
+ debug "^2.2.0"
+ fault "^1.0.0"
+ fn-name "^2.0.1"
+ glob "^7.0.3"
+ ignore "^3.2.0"
+ is-empty "^1.0.0"
+ is-hidden "^1.0.1"
+ is-object "^1.0.1"
+ js-yaml "^3.6.1"
+ load-plugin "^2.0.0"
+ parse-json "^2.2.0"
+ to-vfile "^2.0.0"
+ trough "^1.0.0"
+ vfile-reporter "^4.0.0"
+ vfile-statistics "^1.1.0"
+ x-is-function "^1.0.4"
+ x-is-string "^0.1.0"
+ xtend "^4.0.1"
+
+unified-lint-rule@^1.0.0:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/unified-lint-rule/-/unified-lint-rule-1.0.4.tgz#be432d316db7ad801166041727b023ba18963e24"
+ integrity sha512-q9wY6S+d38xRAuWQVOMjBQYi7zGyKkY23ciNafB8JFVmDroyKjtytXHCg94JnhBCXrNqpfojo3+8D+gmF4zxJQ==
+ dependencies:
+ wrapped "^1.0.1"
+
+unified-message-control@^1.0.0:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/unified-message-control/-/unified-message-control-1.0.4.tgz#a5e02c07112f78c6687b83a10392c2fba86dc09b"
+ integrity sha512-e1dEtN4Z/TvLn/qHm+xeZpzqhJTtfZusFErk336kkZVpqrJYiV9ptxq+SbRPFMlN0OkjDYHmVJ929KYjsMTo3g==
+ dependencies:
+ trim "0.0.1"
+ unist-util-visit "^1.0.0"
+ vfile-location "^2.0.0"
+
+unified@^6.0.0:
+ version "6.2.0"
+ resolved "https://registry.yarnpkg.com/unified/-/unified-6.2.0.tgz#7fbd630f719126d67d40c644b7e3f617035f6dba"
+ integrity sha512-1k+KPhlVtqmG99RaTbAv/usu85fcSRu3wY8X+vnsEhIxNP5VbVIDiXnLqyKIG+UMdyTg0ZX9EI6k2AfjJkHPtA==
+ dependencies:
+ bail "^1.0.0"
+ extend "^3.0.0"
+ is-plain-obj "^1.1.0"
+ trough "^1.0.0"
+ vfile "^2.0.0"
+ x-is-string "^0.1.0"
+
+union-value@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847"
+ integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==
+ dependencies:
+ arr-union "^3.1.0"
+ get-value "^2.0.6"
+ is-extendable "^0.1.1"
+ set-value "^2.0.1"
+
+uniq@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff"
+ integrity sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=
+
+unique-filename@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230"
+ integrity sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==
+ dependencies:
+ unique-slug "^2.0.0"
+
+unique-slug@^2.0.0:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.2.tgz#baabce91083fc64e945b0f3ad613e264f7cd4e6c"
+ integrity sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==
+ dependencies:
+ imurmurhash "^0.1.4"
+
+unist-util-generated@^1.1.0:
+ version "1.1.4"
+ resolved "https://registry.yarnpkg.com/unist-util-generated/-/unist-util-generated-1.1.4.tgz#2261c033d9fc23fae41872cdb7663746e972c1a7"
+ integrity sha512-SA7Sys3h3X4AlVnxHdvN/qYdr4R38HzihoEVY2Q2BZu8NHWDnw5OGcC/tXWjQfd4iG+M6qRFNIRGqJmp2ez4Ww==
+
+unist-util-is@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/unist-util-is/-/unist-util-is-3.0.0.tgz#d9e84381c2468e82629e4a5be9d7d05a2dd324cd"
+ integrity sha512-sVZZX3+kspVNmLWBPAB6r+7D9ZgAFPNWm66f7YNb420RlQSbn+n8rG8dGZSkrER7ZIXGQYNm5pqC3v3HopH24A==
+
+unist-util-position@^3.0.0:
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/unist-util-position/-/unist-util-position-3.0.3.tgz#fff942b879538b242096c148153826664b1ca373"
+ integrity sha512-28EpCBYFvnMeq9y/4w6pbnFmCUfzlsc41NJui5c51hOFjBA1fejcwc+5W4z2+0ECVbScG3dURS3JTVqwenzqZw==
+
+unist-util-remove-position@^1.0.0:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/unist-util-remove-position/-/unist-util-remove-position-1.1.3.tgz#d91aa8b89b30cb38bad2924da11072faa64fd972"
+ integrity sha512-CtszTlOjP2sBGYc2zcKA/CvNdTdEs3ozbiJ63IPBxh8iZg42SCCb8m04f8z2+V1aSk5a7BxbZKEdoDjadmBkWA==
+ dependencies:
+ unist-util-visit "^1.1.0"
+
+unist-util-stringify-position@^1.0.0, unist-util-stringify-position@^1.1.1:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/unist-util-stringify-position/-/unist-util-stringify-position-1.1.2.tgz#3f37fcf351279dcbca7480ab5889bb8a832ee1c6"
+ integrity sha512-pNCVrk64LZv1kElr0N1wPiHEUoXNVFERp+mlTg/s9R5Lwg87f9bM/3sQB99w+N9D/qnM9ar3+AKDBwo/gm/iQQ==
+
+unist-util-stringify-position@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/unist-util-stringify-position/-/unist-util-stringify-position-2.0.1.tgz#de2a2bc8d3febfa606652673a91455b6a36fb9f3"
+ integrity sha512-Zqlf6+FRI39Bah8Q6ZnNGrEHUhwJOkHde2MHVk96lLyftfJJckaPslKgzhVcviXj8KcE9UJM9F+a4JEiBUTYgA==
+ dependencies:
+ "@types/unist" "^2.0.2"
+
+unist-util-visit-parents@^2.0.0:
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/unist-util-visit-parents/-/unist-util-visit-parents-2.1.2.tgz#25e43e55312166f3348cae6743588781d112c1e9"
+ integrity sha512-DyN5vD4NE3aSeB+PXYNKxzGsfocxp6asDc2XXE3b0ekO2BaRUpBicbbUygfSvYfUz1IkmjFR1YF7dPklraMZ2g==
+ dependencies:
+ unist-util-is "^3.0.0"
+
+unist-util-visit@^1.0.0, unist-util-visit@^1.1.0, unist-util-visit@^1.1.1, unist-util-visit@^1.4.0:
+ version "1.4.1"
+ resolved "https://registry.yarnpkg.com/unist-util-visit/-/unist-util-visit-1.4.1.tgz#4724aaa8486e6ee6e26d7ff3c8685960d560b1e3"
+ integrity sha512-AvGNk7Bb//EmJZyhtRUnNMEpId/AZ5Ph/KUpTI09WHQuDZHKovQ1oEv3mfmKpWKtoMzyMC4GLBm1Zy5k12fjIw==
+ dependencies:
+ unist-util-visit-parents "^2.0.0"
+
+universal-user-agent@^2.0.0, universal-user-agent@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/universal-user-agent/-/universal-user-agent-2.1.0.tgz#5abfbcc036a1ba490cb941f8fd68c46d3669e8e4"
+ integrity sha512-8itiX7G05Tu3mGDTdNY2fB4KJ8MgZLS54RdG6PkkfwMAavrXu1mV/lls/GABx9O3Rw4PnTtasxrvbMQoBYY92Q==
+ dependencies:
+ os-name "^3.0.0"
+
+universalify@^0.1.0:
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66"
+ integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==
+
+unpipe@1.0.0, unpipe@~1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec"
+ integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=
+
+unset-value@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559"
+ integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=
+ dependencies:
+ has-value "^0.3.1"
+ isobject "^3.0.0"
+
+untildify@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/untildify/-/untildify-2.1.0.tgz#17eb2807987f76952e9c0485fc311d06a826a2e0"
+ integrity sha1-F+soB5h/dpUunASF/DEdBqgmouA=
+ dependencies:
+ os-homedir "^1.0.0"
+
+unzip-response@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/unzip-response/-/unzip-response-2.0.1.tgz#d2f0f737d16b0615e72a6935ed04214572d56f97"
+ integrity sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c=
+
+upath@^1.1.1:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/upath/-/upath-1.1.2.tgz#3db658600edaeeccbe6db5e684d67ee8c2acd068"
+ integrity sha512-kXpym8nmDmlCBr7nKdIx8P2jNBa+pBpIUFRnKJ4dr8htyYGJFokkr2ZvERRtUN+9SY+JqXouNgUPtv6JQva/2Q==
+
+uri-js@^4.2.2:
+ version "4.2.2"
+ resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0"
+ integrity sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==
+ dependencies:
+ punycode "^2.1.0"
+
+urix@^0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72"
+ integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=
+
+url-parse-lax@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-1.0.0.tgz#7af8f303645e9bd79a272e7a14ac68bc0609da73"
+ integrity sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=
+ dependencies:
+ prepend-http "^1.0.1"
+
+url-template@^2.0.8:
+ version "2.0.8"
+ resolved "https://registry.yarnpkg.com/url-template/-/url-template-2.0.8.tgz#fc565a3cccbff7730c775f5641f9555791439f21"
+ integrity sha1-/FZaPMy/93MMd19WQflVV5FDnyE=
+
+url@^0.11.0:
+ version "0.11.0"
+ resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1"
+ integrity sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=
+ dependencies:
+ punycode "1.3.2"
+ querystring "0.2.0"
+
+use@^3.1.0:
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f"
+ integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==
+
+util-deprecate@~1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
+ integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=
+
+util@0.10.3:
+ version "0.10.3"
+ resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9"
+ integrity sha1-evsa/lCAUkZInj23/g7TeTNqwPk=
+ dependencies:
+ inherits "2.0.1"
+
+util@^0.11.0:
+ version "0.11.1"
+ resolved "https://registry.yarnpkg.com/util/-/util-0.11.1.tgz#3236733720ec64bb27f6e26f421aaa2e1b588d61"
+ integrity sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==
+ dependencies:
+ inherits "2.0.3"
+
+utils-merge@1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713"
+ integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=
+
+uuid@^3.3.2:
+ version "3.3.2"
+ resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131"
+ integrity sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==
+
+v8-compile-cache@2.0.3:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.0.3.tgz#00f7494d2ae2b688cfe2899df6ed2c54bef91dbe"
+ integrity sha512-CNmdbwQMBjwr9Gsmohvm0pbL954tJrNzf6gWL3K+QMQf00PF7ERGrEiLgjuU3mKreLC2MeGhUsNV9ybTbLgd3w==
+
+validate-npm-package-license@^3.0.1:
+ version "3.0.4"
+ resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a"
+ integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==
+ dependencies:
+ spdx-correct "^3.0.0"
+ spdx-expression-parse "^3.0.0"
+
+vary@~1.1.2:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc"
+ integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=
+
+verror@1.10.0:
+ version "1.10.0"
+ resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400"
+ integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=
+ dependencies:
+ assert-plus "^1.0.0"
+ core-util-is "1.0.2"
+ extsprintf "^1.2.0"
+
+vfile-location@^2.0.0, vfile-location@^2.0.1:
+ version "2.0.5"
+ resolved "https://registry.yarnpkg.com/vfile-location/-/vfile-location-2.0.5.tgz#c83eb02f8040228a8d2b3f10e485be3e3433e0a2"
+ integrity sha512-Pa1ey0OzYBkLPxPZI3d9E+S4BmvfVwNAAXrrqGbwTVXWaX2p9kM1zZ+n35UtVM06shmWKH4RPRN8KI80qE3wNQ==
+
+vfile-message@^1.0.0:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/vfile-message/-/vfile-message-1.1.1.tgz#5833ae078a1dfa2d96e9647886cd32993ab313e1"
+ integrity sha512-1WmsopSGhWt5laNir+633LszXvZ+Z/lxveBf6yhGsqnQIhlhzooZae7zV6YVM1Sdkw68dtAW3ow0pOdPANugvA==
+ dependencies:
+ unist-util-stringify-position "^1.1.1"
+
+vfile-reporter@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/vfile-reporter/-/vfile-reporter-4.0.0.tgz#ea6f0ae1342f4841573985e05f941736f27de9da"
+ integrity sha1-6m8K4TQvSEFXOYXgX5QXNvJ96do=
+ dependencies:
+ repeat-string "^1.5.0"
+ string-width "^1.0.0"
+ supports-color "^4.1.0"
+ unist-util-stringify-position "^1.0.0"
+ vfile-statistics "^1.1.0"
+
+vfile-statistics@^1.1.0:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/vfile-statistics/-/vfile-statistics-1.1.3.tgz#e9c87071997fbcb4243764d2c3805e0bb0820c60"
+ integrity sha512-CstaK/ebTz1W3Qp41Bt9Lj/2DmumFsCwC2sKahDNSPh0mPh7/UyMLCoU8ZBX34CRU0d61B4W41yIFsV0NKMZeA==
+
+vfile@^2.0.0:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/vfile/-/vfile-2.3.0.tgz#e62d8e72b20e83c324bc6c67278ee272488bf84a"
+ integrity sha512-ASt4mBUHcTpMKD/l5Q+WJXNtshlWxOogYyGYYrg4lt/vuRjC1EFQtlAofL5VmtVNIZJzWYFJjzGWZ0Gw8pzW1w==
+ dependencies:
+ is-buffer "^1.1.4"
+ replace-ext "1.0.0"
+ unist-util-stringify-position "^1.0.0"
+ vfile-message "^1.0.0"
+
+vm-browserify@^1.0.1:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.0.tgz#bd76d6a23323e2ca8ffa12028dc04559c75f9019"
+ integrity sha512-iq+S7vZJE60yejDYM0ek6zg308+UZsdtPExWP9VZoCFCz1zkJoXFnAX7aZfd/ZwrkidzdUZL0C/ryW+JwAiIGw==
+
+walk-sync@^0.3.2:
+ version "0.3.4"
+ resolved "https://registry.yarnpkg.com/walk-sync/-/walk-sync-0.3.4.tgz#cf78486cc567d3a96b5b2237c6108017a5ffb9a4"
+ integrity sha512-ttGcuHA/OBnN2pcM6johpYlEms7XpO5/fyKIr48541xXedan4roO8cS1Q2S/zbbjGH/BarYDAMeS2Mi9HE5Tig==
+ dependencies:
+ ensure-posix-path "^1.0.0"
+ matcher-collection "^1.0.0"
+
+watchpack@^1.5.0:
+ version "1.6.0"
+ resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.6.0.tgz#4bc12c2ebe8aa277a71f1d3f14d685c7b446cd00"
+ integrity sha512-i6dHe3EyLjMmDlU1/bGQpEw25XSjkJULPuAVKCbNRefQVq48yXKUpwg538F7AZTf9kyr57zj++pQFltUa5H7yA==
+ dependencies:
+ chokidar "^2.0.2"
+ graceful-fs "^4.1.2"
+ neo-async "^2.5.0"
+
+wcwidth@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8"
+ integrity sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=
+ dependencies:
+ defaults "^1.0.3"
+
+webpack-cli@^3.3.2:
+ version "3.3.5"
+ resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-3.3.5.tgz#f4d1238a66a2843d9cebf189835ea22142e72767"
+ integrity sha512-w0j/s42c5UhchwTmV/45MLQnTVwRoaUTu9fM5LuyOd/8lFoCNCELDogFoecx5NzRUndO0yD/gF2b02XKMnmAWQ==
+ dependencies:
+ chalk "2.4.2"
+ cross-spawn "6.0.5"
+ enhanced-resolve "4.1.0"
+ findup-sync "3.0.0"
+ global-modules "2.0.0"
+ import-local "2.0.0"
+ interpret "1.2.0"
+ loader-utils "1.2.3"
+ supports-color "6.1.0"
+ v8-compile-cache "2.0.3"
+ yargs "13.2.4"
+
+webpack-sources@^1.3.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.3.0.tgz#2a28dcb9f1f45fe960d8f1493252b5ee6530fa85"
+ integrity sha512-OiVgSrbGu7NEnEvQJJgdSFPl2qWKkWq5lHMhgiToIiN9w34EBnjYzSYs+VbL5KoYiLNtFFa7BZIKxRED3I32pA==
+ dependencies:
+ source-list-map "^2.0.0"
+ source-map "~0.6.1"
+
+webpack@^4.32.2:
+ version "4.35.3"
+ resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.35.3.tgz#66bc35ef215a7b75e8790f84d560013ffecf0ca3"
+ integrity sha512-xggQPwr9ILlXzz61lHzjvgoqGU08v5+Wnut19Uv3GaTtzN4xBTcwnobodrXE142EL1tOiS5WVEButooGzcQzTA==
+ dependencies:
+ "@webassemblyjs/ast" "1.8.5"
+ "@webassemblyjs/helper-module-context" "1.8.5"
+ "@webassemblyjs/wasm-edit" "1.8.5"
+ "@webassemblyjs/wasm-parser" "1.8.5"
+ acorn "^6.2.0"
+ ajv "^6.1.0"
+ ajv-keywords "^3.1.0"
+ chrome-trace-event "^1.0.0"
+ enhanced-resolve "^4.1.0"
+ eslint-scope "^4.0.0"
+ json-parse-better-errors "^1.0.2"
+ loader-runner "^2.3.0"
+ loader-utils "^1.1.0"
+ memory-fs "~0.4.1"
+ micromatch "^3.1.8"
+ mkdirp "~0.5.0"
+ neo-async "^2.5.0"
+ node-libs-browser "^2.0.0"
+ schema-utils "^1.0.0"
+ tapable "^1.1.0"
+ terser-webpack-plugin "^1.1.0"
+ watchpack "^1.5.0"
+ webpack-sources "^1.3.0"
+
+which-module@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a"
+ integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=
+
+which@^1.2.10, which@^1.2.14, which@^1.2.9, which@^1.3.1:
+ version "1.3.1"
+ resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a"
+ integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==
+ dependencies:
+ isexe "^2.0.0"
+
+wide-align@^1.1.0:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457"
+ integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==
+ dependencies:
+ string-width "^1.0.2 || 2"
+
+windows-release@^3.1.0:
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/windows-release/-/windows-release-3.2.0.tgz#8122dad5afc303d833422380680a79cdfa91785f"
+ integrity sha512-QTlz2hKLrdqukrsapKsINzqMgOUpQW268eJ0OaOpJN32h272waxR9fkB9VoWRtK7uKHG5EHJcTXQBD8XZVJkFA==
+ dependencies:
+ execa "^1.0.0"
+
+wordwrap@~0.0.2:
+ version "0.0.3"
+ resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107"
+ integrity sha1-o9XabNXAvAAI03I0u68b7WMFkQc=
+
+wordwrap@~1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb"
+ integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=
+
+worker-farm@^1.7.0:
+ version "1.7.0"
+ resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.7.0.tgz#26a94c5391bbca926152002f69b84a4bf772e5a8"
+ integrity sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==
+ dependencies:
+ errno "~0.1.7"
+
+wrap-ansi@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-3.0.1.tgz#288a04d87eda5c286e060dfe8f135ce8d007f8ba"
+ integrity sha1-KIoE2H7aXChuBg3+jxNc6NAH+Lo=
+ dependencies:
+ string-width "^2.1.1"
+ strip-ansi "^4.0.0"
+
+wrap-ansi@^5.1.0:
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09"
+ integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==
+ dependencies:
+ ansi-styles "^3.2.0"
+ string-width "^3.0.0"
+ strip-ansi "^5.0.0"
+
+wrapped@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/wrapped/-/wrapped-1.0.1.tgz#c783d9d807b273e9b01e851680a938c87c907242"
+ integrity sha1-x4PZ2Aeyc+mwHoUWgKk4yHyQckI=
+ dependencies:
+ co "3.1.0"
+ sliced "^1.0.1"
+
+wrappy@1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
+ integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=
+
+write@1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/write/-/write-1.0.3.tgz#0800e14523b923a387e415123c865616aae0f5c3"
+ integrity sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==
+ dependencies:
+ mkdirp "^0.5.1"
+
+write@^0.2.1:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/write/-/write-0.2.1.tgz#5fc03828e264cea3fe91455476f7a3c566cb0757"
+ integrity sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=
+ dependencies:
+ mkdirp "^0.5.1"
+
+x-is-function@^1.0.4:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/x-is-function/-/x-is-function-1.0.4.tgz#5d294dc3d268cbdd062580e0c5df77a391d1fa1e"
+ integrity sha1-XSlNw9Joy90GJYDgxd93o5HR+h4=
+
+x-is-string@^0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/x-is-string/-/x-is-string-0.1.0.tgz#474b50865af3a49a9c4657f05acd145458f77d82"
+ integrity sha1-R0tQhlrzpJqcRlfwWs0UVFj3fYI=
+
+xmlbuilder@~4.2.0:
+ version "4.2.1"
+ resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-4.2.1.tgz#aa58a3041a066f90eaa16c2f5389ff19f3f461a5"
+ integrity sha1-qlijBBoGb5DqoWwvU4n/GfP0YaU=
+ dependencies:
+ lodash "^4.0.0"
+
+xtend@^4.0.0, xtend@^4.0.1, xtend@~4.0.0, xtend@~4.0.1:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54"
+ integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==
+
+xtend@~2.1.1:
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/xtend/-/xtend-2.1.2.tgz#6efecc2a4dad8e6962c4901b337ce7ba87b5d28b"
+ integrity sha1-bv7MKk2tjmlixJAbM3znuoe10os=
+ dependencies:
+ object-keys "~0.4.0"
+
+y18n@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b"
+ integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==
+
+yallist@^3.0.0, yallist@^3.0.2, yallist@^3.0.3:
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.3.tgz#b4b049e314be545e3ce802236d6cd22cd91c3de9"
+ integrity sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==
+
+yargs-parser@^13.1.0:
+ version "13.1.1"
+ resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.1.tgz#d26058532aa06d365fe091f6a1fc06b2f7e5eca0"
+ integrity sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ==
+ dependencies:
+ camelcase "^5.0.0"
+ decamelize "^1.2.0"
+
+yargs@13.2.4:
+ version "13.2.4"
+ resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.2.4.tgz#0b562b794016eb9651b98bd37acf364aa5d6dc83"
+ integrity sha512-HG/DWAJa1PAnHT9JAhNa8AbAv3FPaiLzioSjCcmuXXhP8MlpHO5vwls4g4j6n30Z74GVQj8Xa62dWVx1QCGklg==
+ dependencies:
+ cliui "^5.0.0"
+ find-up "^3.0.0"
+ get-caller-file "^2.0.1"
+ os-locale "^3.1.0"
+ require-directory "^2.1.1"
+ require-main-filename "^2.0.0"
+ set-blocking "^2.0.0"
+ string-width "^3.0.0"
+ which-module "^2.0.0"
+ y18n "^4.0.0"
+ yargs-parser "^13.1.0"
+
+yn@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/yn/-/yn-2.0.0.tgz#e5adabc8acf408f6385fc76495684c88e6af689a"
+ integrity sha1-5a2ryKz0CPY4X8dklWhMiOavaJo=
+
+yup@^0.27.0:
+ version "0.27.0"
+ resolved "https://registry.yarnpkg.com/yup/-/yup-0.27.0.tgz#f8cb198c8e7dd2124beddc2457571329096b06e7"
+ integrity sha512-v1yFnE4+u9za42gG/b/081E7uNW9mUj3qtkmelLbW5YPROZzSH/KUUyJu9Wt8vxFJcT9otL/eZopS0YK1L5yPQ==
+ dependencies:
+ "@babel/runtime" "^7.0.0"
+ fn-name "~2.0.1"
+ lodash "^4.17.11"
+ property-expr "^1.5.0"
+ synchronous-promise "^2.0.6"
+ toposort "^2.0.2"
diff --git a/devel/electron7/pkg-descr b/devel/electron7/pkg-descr
new file mode 100644
index 000000000000..bb5485e9e735
--- /dev/null
+++ b/devel/electron7/pkg-descr
@@ -0,0 +1,10 @@
+Build cross platform desktop apps with JavaScript, HTML, and CSS.
+
+It's easier than you think.
+
+If you can build a website, you can build a desktop app. Electron is a
+framework for creating native applications with web technologies like
+JavaScript, HTML, and CSS. It takes care of the hard parts so you can
+focus on the core of your application.
+
+WWW: https://electronjs.org/
diff --git a/devel/electron7/pkg-plist b/devel/electron7/pkg-plist
new file mode 100644
index 000000000000..21acc5a9a433
--- /dev/null
+++ b/devel/electron7/pkg-plist
@@ -0,0 +1,124 @@
+bin/electron%%ELECTRON_VER_MAJOR%%
+%%DATADIR%%/LICENSE
+%%DATADIR%%/LICENSES.chromium.html
+%%DATADIR%%/chrome_100_percent.pak
+%%DATADIR%%/chrome_200_percent.pak
+%%DRIVER%%%%DATADIR%%/chromedriver
+%%DATADIR%%/electron
+%%DATADIR%%/icudtl.dat
+%%DATADIR%%/libEGL.so
+%%DATADIR%%/libGLESv2.so
+%%DATADIR%%/locales/am.pak
+%%DATADIR%%/locales/ar.pak
+%%DATADIR%%/locales/bg.pak
+%%DATADIR%%/locales/bn.pak
+%%DATADIR%%/locales/ca.pak
+%%DATADIR%%/locales/cs.pak
+%%DATADIR%%/locales/da.pak
+%%DATADIR%%/locales/de.pak
+%%DATADIR%%/locales/el.pak
+%%DATADIR%%/locales/en-GB.pak
+%%DATADIR%%/locales/en-US.pak
+%%DATADIR%%/locales/es-419.pak
+%%DATADIR%%/locales/es.pak
+%%DATADIR%%/locales/et.pak
+%%DATADIR%%/locales/fa.pak
+%%DATADIR%%/locales/fi.pak
+%%DATADIR%%/locales/fil.pak
+%%DATADIR%%/locales/fr.pak
+%%DATADIR%%/locales/gu.pak
+%%DATADIR%%/locales/he.pak
+%%DATADIR%%/locales/hi.pak
+%%DATADIR%%/locales/hr.pak
+%%DATADIR%%/locales/hu.pak
+%%DATADIR%%/locales/id.pak
+%%DATADIR%%/locales/it.pak
+%%DATADIR%%/locales/ja.pak
+%%DATADIR%%/locales/kn.pak
+%%DATADIR%%/locales/ko.pak
+%%DATADIR%%/locales/lt.pak
+%%DATADIR%%/locales/lv.pak
+%%DATADIR%%/locales/ml.pak
+%%DATADIR%%/locales/mr.pak
+%%DATADIR%%/locales/ms.pak
+%%DATADIR%%/locales/nb.pak
+%%DATADIR%%/locales/nl.pak
+%%DATADIR%%/locales/pl.pak
+%%DATADIR%%/locales/pt-BR.pak
+%%DATADIR%%/locales/pt-PT.pak
+%%DATADIR%%/locales/ro.pak
+%%DATADIR%%/locales/ru.pak
+%%DATADIR%%/locales/sk.pak
+%%DATADIR%%/locales/sl.pak
+%%DATADIR%%/locales/sr.pak
+%%DATADIR%%/locales/sv.pak
+%%DATADIR%%/locales/sw.pak
+%%DATADIR%%/locales/ta.pak
+%%DATADIR%%/locales/te.pak
+%%DATADIR%%/locales/th.pak
+%%DATADIR%%/locales/tr.pak
+%%DATADIR%%/locales/uk.pak
+%%DATADIR%%/locales/vi.pak
+%%DATADIR%%/locales/zh-CN.pak
+%%DATADIR%%/locales/zh-TW.pak
+%%DATADIR%%/mksnapshot
+%%DATADIR%%/natives_blob.bin
+%%DATADIR%%/node_headers/include/node/common.gypi
+%%DATADIR%%/node_headers/include/node/config.gypi
+%%DATADIR%%/node_headers/include/node/js_native_api.h
+%%DATADIR%%/node_headers/include/node/js_native_api_types.h
+%%DATADIR%%/node_headers/include/node/libplatform/libplatform-export.h
+%%DATADIR%%/node_headers/include/node/libplatform/libplatform.h
+%%DATADIR%%/node_headers/include/node/libplatform/v8-tracing.h
+%%DATADIR%%/node_headers/include/node/node.h
+%%DATADIR%%/node_headers/include/node/node_api.h
+%%DATADIR%%/node_headers/include/node/node_api_types.h
+%%DATADIR%%/node_headers/include/node/node_buffer.h
+%%DATADIR%%/node_headers/include/node/node_object_wrap.h
+%%DATADIR%%/node_headers/include/node/node_version.h
+%%DATADIR%%/node_headers/include/node/uv.h
+%%DATADIR%%/node_headers/include/node/uv/aix.h
+%%DATADIR%%/node_headers/include/node/uv/android-ifaddrs.h
+%%DATADIR%%/node_headers/include/node/uv/bsd.h
+%%DATADIR%%/node_headers/include/node/uv/darwin.h
+%%DATADIR%%/node_headers/include/node/uv/errno.h
+%%DATADIR%%/node_headers/include/node/uv/linux.h
+%%DATADIR%%/node_headers/include/node/uv/os390.h
+%%DATADIR%%/node_headers/include/node/uv/posix.h
+%%DATADIR%%/node_headers/include/node/uv/stdint-msvc2008.h
+%%DATADIR%%/node_headers/include/node/uv/sunos.h
+%%DATADIR%%/node_headers/include/node/uv/threadpool.h
+%%DATADIR%%/node_headers/include/node/uv/tree.h
+%%DATADIR%%/node_headers/include/node/uv/unix.h
+%%DATADIR%%/node_headers/include/node/uv/version.h
+%%DATADIR%%/node_headers/include/node/uv/win.h
+%%DATADIR%%/node_headers/include/node/v8-internal.h
+%%DATADIR%%/node_headers/include/node/v8-platform.h
+%%DATADIR%%/node_headers/include/node/v8-profiler.h
+%%DATADIR%%/node_headers/include/node/v8-testing.h
+%%DATADIR%%/node_headers/include/node/v8-util.h
+%%DATADIR%%/node_headers/include/node/v8-value-serializer-version.h
+%%DATADIR%%/node_headers/include/node/v8-version-string.h
+%%DATADIR%%/node_headers/include/node/v8-version.h
+%%DATADIR%%/node_headers/include/node/v8-wasm-trap-handler-posix.h
+%%DATADIR%%/node_headers/include/node/v8-wasm-trap-handler-win.h
+%%DATADIR%%/node_headers/include/node/v8.h
+%%DATADIR%%/node_headers/include/node/v8config.h
+%%DATADIR%%/node_headers/include/node/zconf.h
+%%DATADIR%%/node_headers/include/node/zlib.h
+%%DIST%%%%DATADIR%%/releases/SHASUMS256.txt
+%%DIST%%%%AMD64%%%%DATADIR%%/releases/chromedriver-v%%ELECTRON_VER%%-freebsd-x64.zip
+%%DIST%%%%I386%%%%DATADIR%%/releases/chromedriver-v%%ELECTRON_VER%%-freebsd-ia32.zip
+%%DIST%%%%AMD64%%%%DATADIR%%/releases/electron-v%%ELECTRON_VER%%-freebsd-x64.zip
+%%DIST%%%%I386%%%%DATADIR%%/releases/electron-v%%ELECTRON_VER%%-freebsd-ia32.zip
+%%DIST%%%%AMD64%%%%DATADIR%%/releases/mksnapshot-v%%ELECTRON_VER%%-freebsd-x64.zip
+%%DIST%%%%I386%%%%DATADIR%%/releases/mksnapshot-v%%ELECTRON_VER%%-freebsd-ia32.zip
+%%DATADIR%%/resources.pak
+%%DATADIR%%/resources/default_app.asar
+%%DATADIR%%/snapshot_blob.bin
+%%DATADIR%%/swiftshader/libEGL.so
+%%DATADIR%%/swiftshader/libGLESv2.so
+%%DATADIR%%/swiftshader/libvk_swiftshader.so
+%%DATADIR%%/v8_context_snapshot.bin
+%%DATADIR%%/v8_context_snapshot_generator
+%%DATADIR%%/version
diff --git a/devel/gnatpython/Makefile b/devel/gnatpython/Makefile
new file mode 100644
index 000000000000..d9750131937e
--- /dev/null
+++ b/devel/gnatpython/Makefile
@@ -0,0 +1,19 @@
+# Created by: John Marino <marino@FreeBSD.org>
+# $FreeBSD$
+
+PORTNAME= gnatpython
+PORTVERSION= ${SNAPSHOT}
+CATEGORIES= devel
+MASTER_SITES= http://downloads.dragonlace.net/src/
+
+MAINTAINER= ports@FreeBSD.org
+COMMENT= Python package used in Ada testsuites
+
+LICENSE= GPLv3+
+LICENSE_FILE= ${WRKSRC}/COPYING3
+
+SNAPSHOT= 20140224
+USES= python:2.7 tar:bzip2
+USE_PYTHON= distutils autoplist
+
+.include <bsd.port.mk>
diff --git a/devel/gnatpython/distinfo b/devel/gnatpython/distinfo
new file mode 100644
index 000000000000..9c2ef792d025
--- /dev/null
+++ b/devel/gnatpython/distinfo
@@ -0,0 +1,2 @@
+SHA256 (gnatpython-20140224.tar.bz2) = a622c790dfcdb8c7b6fb77cdef8ce3b0fe96649bf5dd422216d21bacf34e12a8
+SIZE (gnatpython-20140224.tar.bz2) = 102940
diff --git a/devel/gnatpython/files/patch-setup__helpers.py b/devel/gnatpython/files/patch-setup__helpers.py
new file mode 100644
index 000000000000..f2f2d841b2fa
--- /dev/null
+++ b/devel/gnatpython/files/patch-setup__helpers.py
@@ -0,0 +1,11 @@
+--- setup_helpers.py.orig 2015-06-21 09:00:45 UTC
++++ setup_helpers.py
+@@ -28,7 +28,7 @@ def build_scripts_gnatpython(root_dir=''
+ os.system('gcc -o %sscripts/rlimit %ssrc/rlimit/rlimit-NT.c' %
+ (root_dir, root_dir))
+ else:
+- os.system('gcc -o %sscripts/rlimit %ssrc/rlimit/rlimit.c' %
++ os.system('cc -o %sscripts/rlimit %ssrc/rlimit/rlimit.c' %
+ (root_dir, root_dir))
+
+ # Update the scripts list
diff --git a/devel/gnatpython/pkg-descr b/devel/gnatpython/pkg-descr
new file mode 100644
index 000000000000..6be9b6b2d190
--- /dev/null
+++ b/devel/gnatpython/pkg-descr
@@ -0,0 +1,5 @@
+GNATPython is a python package to ease development of testsuites and/or
+build scripts in a portable way. It is an extension to Ada which exports
+GNAT.Expect.TTY and requires the GNAT AUX compiler.
+
+WWW: https://forge.open-do.org/projects/gnatpython
diff --git a/devel/godot2-tools/Makefile b/devel/godot2-tools/Makefile
new file mode 100644
index 000000000000..6d88a455068f
--- /dev/null
+++ b/devel/godot2-tools/Makefile
@@ -0,0 +1,13 @@
+# Created by: Shane Ambler <FreeBSD@Shaneware.biz>
+# $FreeBSD$
+
+PKGNAMESUFFIX= 2-tools
+
+COMMENT= Game integrated development environment
+
+OPTIONS_EXCLUDE= #
+OPTIONS_SLAVE= TOOLS
+
+MASTERDIR= ${.CURDIR}/../godot2
+
+.include "${MASTERDIR}/Makefile"
diff --git a/devel/godot2-tools/pkg-message b/devel/godot2-tools/pkg-message
new file mode 100644
index 000000000000..7c267f80109a
--- /dev/null
+++ b/devel/godot2-tools/pkg-message
@@ -0,0 +1,11 @@
+[
+{ type: install
+ message: <<EOM
+This is the old v2 of godot and is only for compatability
+to be able to work on older projects.
+
+If you are planning any development in godot
+please install the newer v3 version in devel/godot-tools
+EOM
+}
+]
diff --git a/devel/godot2/Makefile b/devel/godot2/Makefile
new file mode 100644
index 000000000000..0bb4fc89bcae
--- /dev/null
+++ b/devel/godot2/Makefile
@@ -0,0 +1,111 @@
+# Created by: Shane Ambler <FreeBSD@Shaneware.biz>
+# $FreeBSD$
+
+PORTNAME= godot
+DISTVERSION= 2.1.6
+DISTVERSIONSUFFIX= -stable
+CATEGORIES= devel games
+PKGNAMESUFFIX?= 2
+
+MAINTAINER= FreeBSD@Shaneware.biz
+COMMENT?= Game runtime engine
+
+LICENSE= MIT CC-BY-3.0
+LICENSE_COMB= multi
+LICENSE_FILE_CC-BY-3.0= ${WRKSRC}/LOGO_LICENSE.md
+LICENSE_FILE_MIT= ${WRKSRC}/LICENSE.txt
+
+LIB_DEPENDS= libfreetype.so:print/freetype2 \
+ libpng.so:graphics/png \
+ libmpcdec.so:audio/musepack \
+ libspeex.so:audio/speex
+RUN_DEPENDS= xdg-user-dir:devel/xdg-user-dirs \
+ xdg-open:devel/xdg-utils \
+ xmessage:x11/xmessage
+
+USES= compiler:c++11-lib gl pkgconfig scons:python2 ssl xorg
+USE_XORG= x11 xcursor xi xinerama xrandr
+USE_GL= gl glu
+
+USE_GITHUB= yes
+GH_ACCOUNT= godotengine
+
+MAKE_ARGS+= platform=x11 builtin_speex=no builtin_libmpcdec=no verbose=yes
+MAKE_ARGS+= ${MAKE_ARGS_${CHOSEN_COMPILER_TYPE}}
+MAKE_ARGS_clang= use_llvm=yes
+CXXFLAGS+= -DGLEW_NO_GLU -DRTAUDIO_ENABLED -DCRIOGET_NOT_NEEDED
+CXXFLAGS_i386= ${CXXFLAGS_i386_${CHOSEN_COMPILER_TYPE}}
+CXXFLAGS_i386_gcc= -march=i586
+CXXFLAGS_aarch64= -DNO_THREADS
+CXXFLAGS_sparc64= -DNO_THREADS
+CXXFLAGS_mips= -DNO_THREADS
+CXXFLAGS_mips64= -DNO_THREADS
+LDFLAGS+= -lspeex -lmpcdec
+
+OPTIONS_DEFINE= EXAMPLES TOOLS
+OPTIONS_DEFAULT= OSS
+# Moved to devel/godot-tools
+OPTIONS_EXCLUDE?= EXAMPLES TOOLS
+OPTIONS_GROUP= AUDIO
+OPTIONS_GROUP_AUDIO= ALSA OSS PULSEAUDIO
+
+AUDIO_DESC= Audio support
+ALSA_LIB_DEPENDS= libasound.so:audio/alsa-lib
+ALSA_MAKE_ARGS= alsa=yes
+EXAMPLES_GH_PROJECT= godot-demo-projects:DEMOS
+EXAMPLES_GH_TAGNAME= 2.1.4-stable:DEMOS
+EXAMPLES_PORTEXAMPLES= *
+OSS_MAKE_ARGS= oss=yes
+PULSEAUDIO_LIB_DEPENDS= libpulse-simple.so:audio/pulseaudio
+PULSEAUDIO_MAKE_ARGS= pulseaudio=yes
+TOOLS_DESC= Include development tools (IDE)
+TOOLS_MAKE_ARGS= target=release_debug tools=yes
+TOOLS_MAKE_ARGS_OFF= target=release tools=no
+TOOLS_LDFLAGS= -lexecinfo
+TOOLS_DESKTOP_ENTRIES= "Godot-v2" "${COMMENT}" "${GODOTFILE}" \
+ "${GODOTFILE}" "Development;IDE;" ""
+TOOLS_PLIST_FILES= share/pixmaps/${GODOTFILE}.png \
+ share/pixmaps/${GODOTFILE}.svg
+
+GODOTFILE= ${PORTNAME}${PKGNAMESUFFIX}
+PLIST_FILES= bin/${GODOTFILE}
+# rename to prevent conflict with godot v3
+EXAMPLESDIR= ${PREFIX}/share/examples/godot2
+
+.ifmake makesum
+# Always include optional distfiles
+.MAKEFLAGS: WITH="${OPTIONS_DEFINE}" OPTIONS_EXCLUDE=
+.endif
+
+.include <bsd.port.pre.mk>
+
+.if ${ARCH} != aarch64 && ${ARCH} != amd64 && ${ARCH} != i386 && ${ARCH} != armv6 && ${ARCH} != armv7
+# use system libvpx on archs that break with built-in
+LIB_DEPENDS+= libvpx.so:multimedia/libvpx
+MAKE_ARGS+= builtin_libvpx=False
+.endif
+
+post-patch:
+ @${REINPLACE_CMD} -e 's|custom_build|${OPSYS}_Ports_build|' \
+ ${WRKSRC}/methods.py
+ @${REINPLACE_CMD} -e 's|/usr/bin|${PREFIX}/bin|' \
+ ${WRKSRC}/platform/x11/os_x11.cpp
+
+# The official godot binary name reflects options used to compile
+# We just want a simple name matching the portname
+# This gives us bin/godot for runtime and bin/godot-tools for the IDE
+do-install:
+ cd ${WRKSRC}/bin && ${INSTALL_PROGRAM} godot.x11* \
+ ${STAGEDIR}/${PREFIX}/bin/${GODOTFILE}
+
+do-install-EXAMPLES-on:
+ (cd ${WRKSRC_DEMOS} && ${COPYTREE_SHARE} "${PORTEXAMPLES}" \
+ ${STAGEDIR}${EXAMPLESDIR})
+
+do-install-TOOLS-on:
+ ${INSTALL_DATA} ${WRKSRC}/icon.png \
+ ${STAGEDIR}${PREFIX}/share/pixmaps/${GODOTFILE}.png
+ ${INSTALL_DATA} ${WRKSRC}/icon.svg \
+ ${STAGEDIR}${PREFIX}/share/pixmaps/${GODOTFILE}.svg
+
+.include <bsd.port.post.mk>
diff --git a/devel/godot2/distinfo b/devel/godot2/distinfo
new file mode 100644
index 000000000000..7310fd0fa8fc
--- /dev/null
+++ b/devel/godot2/distinfo
@@ -0,0 +1,5 @@
+TIMESTAMP = 1579663149
+SHA256 (godotengine-godot-2.1.6-stable_GH0.tar.gz) = 5bfc57f2ee24dccfdcefe491a3be1a07b39299f2fcfa03202b8b4c6c2dd5122b
+SIZE (godotengine-godot-2.1.6-stable_GH0.tar.gz) = 15043275
+SHA256 (godotengine-godot-demo-projects-2.1.4-stable_GH0.tar.gz) = f474381ba834d37cfce45c0130dad16d907a4ce28cde94f35c7d96a72f164d75
+SIZE (godotengine-godot-demo-projects-2.1.4-stable_GH0.tar.gz) = 20534045
diff --git a/devel/godot2/files/patch-SConstruct b/devel/godot2/files/patch-SConstruct
new file mode 100644
index 000000000000..b73a2b71f708
--- /dev/null
+++ b/devel/godot2/files/patch-SConstruct
@@ -0,0 +1,36 @@
+--- SConstruct.orig 2016-11-15 18:44:21 UTC
++++ SConstruct
+@@ -65,7 +65,7 @@ elif (os.name == "nt"):
+ if (os.getenv("VSINSTALLDIR") == None or platform_arg == "android"):
+ custom_tools = ['mingw']
+
+-env_base = Environment(tools=custom_tools)
++env_base = Environment(tools=custom_tools, ENV = os.environ)
+ if 'TERM' in os.environ:
+ env_base['ENV']['TERM'] = os.environ['TERM']
+ env_base.AppendENVPath('PATH', os.getenv('PATH'))
+@@ -272,15 +272,16 @@ if selected_platform in platform_list:
+ if env["extra_suffix"] != '':
+ env.extra_suffix += '.' + env["extra_suffix"]
+
+- CCFLAGS = env.get('CCFLAGS', '')
+- env['CCFLAGS'] = ''
+-
+- env.Append(CCFLAGS=str(CCFLAGS).split())
+-
+- CFLAGS = env.get('CFLAGS', '')
+- env['CFLAGS'] = ''
+-
++ env['CC'] = os.environ['CC']
++ env['CXX'] = os.environ['CXX']
++
++ CFLAGS = os.environ['CFLAGS']
++ env['CFLAGS'] = []
+ env.Append(CFLAGS=str(CFLAGS).split())
++
++ CCFLAGS = os.environ['CXXFLAGS']
++ env['CCFLAGS'] = []
++ env.Append(CCFLAGS=str(CCFLAGS).split())
+
+ LINKFLAGS = env.get('LINKFLAGS', '')
+ env['LINKFLAGS'] = ''
diff --git a/devel/godot2/files/patch-drivers_SCsub b/devel/godot2/files/patch-drivers_SCsub
new file mode 100644
index 000000000000..ada05634533e
--- /dev/null
+++ b/devel/godot2/files/patch-drivers_SCsub
@@ -0,0 +1,11 @@
+--- drivers/SCsub.orig 2016-11-30 21:41:21 UTC
++++ drivers/SCsub
+@@ -14,7 +14,7 @@ SConscript('windows/SCsub')
+ # Sounds drivers
+ SConscript('alsa/SCsub')
+ SConscript('pulseaudio/SCsub')
+-if (env["platform"] == "windows"):
++if (env["platform"] == "windows") or (env["platform"] == "x11"):
+ SConscript("rtaudio/SCsub")
+
+ # Graphics drivers
diff --git a/devel/godot2/files/patch-drivers_rtaudio_audio__driver__rtaudio.cpp b/devel/godot2/files/patch-drivers_rtaudio_audio__driver__rtaudio.cpp
new file mode 100644
index 000000000000..39fbefd0727f
--- /dev/null
+++ b/devel/godot2/files/patch-drivers_rtaudio_audio__driver__rtaudio.cpp
@@ -0,0 +1,18 @@
+--- drivers/rtaudio/audio_driver_rtaudio.cpp.orig 2016-08-09 07:52:15 UTC
++++ drivers/rtaudio/audio_driver_rtaudio.cpp
+@@ -35,8 +35,14 @@ const char* AudioDriverRtAudio::get_name
+
+ #ifdef OSX_ENABLED
+ return "RtAudio-OSX";
+-#elif defined(UNIX_ENABLED)
++#elif defined(UNIX_ENABLED) && (defined(ALSA_ENABLED) || defined(PULSEAUDIO_ENABLED) || defined(OSS_ENABLED))
++#if defined(OSS_ENABLED)
++ return "RtAudio-OSS";
++#elif defined(ALSA_ENABLED)
+ return "RtAudio-ALSA";
++#elif defined(PULSEAUDIO_ENABLED)
++ return "RtAudio-PulseAudio";
++#endif
+ #elif defined(WINDOWS_ENABLED)
+ return "RtAudio-DirectSound";
+ #else
diff --git a/devel/godot2/files/patch-drivers_unix_os__unix.cpp b/devel/godot2/files/patch-drivers_unix_os__unix.cpp
new file mode 100644
index 000000000000..1180857446fd
--- /dev/null
+++ b/devel/godot2/files/patch-drivers_unix_os__unix.cpp
@@ -0,0 +1,54 @@
+--- drivers/unix/os_unix.cpp.orig 2017-08-28 01:55:12 UTC
++++ drivers/unix/os_unix.cpp
+@@ -51,6 +51,7 @@
+
+ #if defined(__FreeBSD__) || defined(__OpenBSD__)
+ #include <sys/param.h>
++#include <sys/sysctl.h>
+ #endif
+ #include "globals.h"
+ #include <assert.h>
+@@ -375,17 +376,7 @@ Error OS_Unix::execute(const String &p_p
+ args.push_back((char *)cs[i].get_data()); // shitty C cast
+ args.push_back(0);
+
+-#ifdef __FreeBSD__
+- if (p_path.find("/")) {
+- // exec name contains path so use it
+- execv(p_path.utf8().get_data(), &args[0]);
+- } else {
+- // use program name and search through PATH to find it
+- execvp(getprogname(), &args[0]);
+- }
+-#else
+ execv(p_path.utf8().get_data(), &args[0]);
+-#endif
+ // still alive? something failed..
+ fprintf(stderr, "**ERROR** OS_Unix::execute - Could not create child process while executing: %s\n", p_path.utf8().get_data());
+ abort();
+@@ -499,12 +490,24 @@ String OS_Unix::get_executable_path() co
+ return OS::get_executable_path();
+ }
+ return b;
+-#elif defined(__FreeBSD__) || defined(__OpenBSD__)
++#elif defined(__OpenBSD__)
+ char resolved_path[MAXPATHLEN];
+
+ realpath(OS::get_executable_path().utf8().get_data(), resolved_path);
+
+ return String(resolved_path);
++
++#elif defined(__FreeBSD__)
++ int mib[4] = { CTL_KERN, KERN_PROC, KERN_PROC_PATHNAME, -1 };
++ char buf[MAXPATHLEN];
++ size_t len = sizeof(buf);
++ if (sysctl(mib, 4, buf, &len, NULL, 0) != 0) {
++ WARN_PRINT("Couldn't get executable path from sysctl");
++ return OS::get_executable_path();
++ }
++ String b;
++ b.parse_utf8(buf);
++ return b;
+ #elif defined(__APPLE__)
+ char temp_path[1];
+ uint32_t buff_size = 1;
diff --git a/devel/godot2/files/patch-modules_speex_audio__stream__speex.cpp b/devel/godot2/files/patch-modules_speex_audio__stream__speex.cpp
new file mode 100644
index 000000000000..9cb0eac898e6
--- /dev/null
+++ b/devel/godot2/files/patch-modules_speex_audio__stream__speex.cpp
@@ -0,0 +1,11 @@
+--- modules/speex/audio_stream_speex.cpp.orig 2017-12-28 01:20:49 UTC
++++ modules/speex/audio_stream_speex.cpp
+@@ -29,7 +29,7 @@
+ #include "audio_stream_speex.h"
+
+ #include "os/os.h"
+-#include "os_support.h"
++#include "thirdparty/speex/os_support.h"
+ #define READ_CHUNK 1024
+
+ static _FORCE_INLINE_ uint16_t le_short(uint16_t s) {
diff --git a/devel/godot2/files/patch-modules_squish_SCsub b/devel/godot2/files/patch-modules_squish_SCsub
new file mode 100644
index 000000000000..307d0a3ccb25
--- /dev/null
+++ b/devel/godot2/files/patch-modules_squish_SCsub
@@ -0,0 +1,11 @@
+--- modules/squish/SCsub.orig 2018-06-13 13:01:57 UTC
++++ modules/squish/SCsub
+@@ -23,7 +23,7 @@ if (env['builtin_squish'] != 'no'):
+ thirdparty_sources = [thirdparty_dir + file for file in thirdparty_sources]
+
+ env_squish.add_source_files(env.modules_sources, thirdparty_sources)
+- env_squish.Append(CPPPATH=[thirdparty_dir])
++ env_squish.Prepend(CPPPATH=[thirdparty_dir])
+
+ # Godot source files
+ env_squish.add_source_files(env.modules_sources, "*.cpp")
diff --git a/devel/godot2/files/patch-platform_x11_detect.py b/devel/godot2/files/patch-platform_x11_detect.py
new file mode 100644
index 000000000000..efa93447d436
--- /dev/null
+++ b/devel/godot2/files/patch-platform_x11_detect.py
@@ -0,0 +1,94 @@
+--- platform/x11/detect.py.orig 2018-07-29 00:47:52 UTC
++++ platform/x11/detect.py
+@@ -56,7 +56,9 @@ def get_opts():
+ ('use_sanitizer', 'Use llvm compiler sanitize address', 'no'),
+ ('use_leak_sanitizer', 'Use llvm compiler sanitize memory leaks', 'no'),
+ ('use_lto', 'Use link time optimization', 'no'),
+- ('pulseaudio', 'Detect & Use pulseaudio', 'yes'),
++ ('alsa','Detect & Use alsa audio','no'),
++ ('oss','Detect & Use OSS audio','no'),
++ ('pulseaudio', 'Detect & Use pulseaudio', 'no'),
+ ('udev', 'Use udev for gamepad connection callbacks', 'no'),
+ ('debug_release', 'Add debug symbols to release version', 'no'),
+ ('touch', 'Enable touch events', 'yes'),
+@@ -85,10 +87,6 @@ def configure(env):
+
+ env.Append(CPPPATH=['#platform/x11'])
+ if (env["use_llvm"] == "yes"):
+- if 'clang++' not in env['CXX']:
+- env["CC"] = "clang"
+- env["CXX"] = "clang++"
+- env["LD"] = "clang++"
+ env.Append(CPPFLAGS=['-DTYPED_METHOD_BIND'])
+ env.extra_suffix = ".llvm"
+ elif (os.system("gcc --version > /dev/null 2>&1") == 0): # GCC
+@@ -126,19 +124,14 @@ def configure(env):
+ env.Append(LINKFLAGS=['-pipe'])
+
+ if (env["target"] == "release"):
+- env.Prepend(CCFLAGS=['-Ofast'])
+- if (env["debug_release"] == "yes"):
+- env.Prepend(CCFLAGS=['-g2'])
++ pass
+
+ elif (env["target"] == "release_debug"):
+-
+- env.Prepend(CCFLAGS=['-O2', '-ffast-math', '-DDEBUG_ENABLED'])
+- if (env["debug_release"] == "yes"):
+- env.Prepend(CCFLAGS=['-g2'])
+-
++ env.Prepend(CCFLAGS=['-DDEBUG_ENABLED'])
++
+ elif (env["target"] == "debug"):
+
+- env.Prepend(CCFLAGS=['-g2', '-DDEBUG_ENABLED', '-DDEBUG_MEMORY_ENABLED'])
++ env.Prepend(CCFLAGS=['-DDEBUG_ENABLED', '-DDEBUG_MEMORY_ENABLED'])
+ env.Append(LINKFLAGS=['-rdynamic'])
+
+ env.ParseConfig('pkg-config x11 --cflags --libs')
+@@ -155,7 +148,12 @@ def configure(env):
+ env.Append(CPPFLAGS=['-DTOUCH_ENABLED'])
+
+ if (env['builtin_openssl'] == 'no'):
+- env.ParseConfig('pkg-config openssl --cflags --libs')
++ try:
++ # try to find a port installed openssl
++ env.ParseConfig('pkg-config openssl --cflags --libs')
++ except:
++ # if none found use base system openssl
++ env.ParseConfig('echo -lssl -lcrypto')
+
+ if (env['builtin_libwebp'] == 'no'):
+ env.ParseConfig('pkg-config libwebp --cflags --libs')
+@@ -200,12 +198,13 @@ def configure(env):
+ if (env['builtin_glew'] == 'no'):
+ env.ParseConfig('pkg-config glew --cflags --libs')
+
+- if os.system("pkg-config --exists alsa") == 0:
+- print("Enabling ALSA")
+- env.Append(CPPFLAGS=["-DALSA_ENABLED"])
+- env.ParseConfig('pkg-config alsa --cflags --libs')
+- else:
+- print("ALSA libraries not found, disabling driver")
++ if (env["alsa"]=="yes"):
++ if os.system("pkg-config --exists alsa")==0:
++ print("Enabling ALSA")
++ env.Append(CPPFLAGS=["-DALSA_ENABLED"])
++ env.Append(LIBS=['asound'])
++ else:
++ print("ALSA libraries not found, disabling driver")
+
+ if (platform.system() == "Linux"):
+ env.Append(CPPFLAGS=["-DJOYDEV_ENABLED"])
+@@ -220,6 +219,11 @@ def configure(env):
+ else:
+ print("libudev development libraries not found, disabling udev support")
+
++ if (env["oss"]=="yes"):
++ print("Enabling OSS Audio")
++ env.Append(CPPFLAGS=["-DOSS_ENABLED"])
++ env.Append(CCFLAGS=['-Ithirdparty/rtaudio'])
++
+ if (env["pulseaudio"] == "yes"):
+ if not os.system("pkg-config --exists libpulse-simple"):
+ print("Enabling PulseAudio")
diff --git a/devel/godot2/files/patch-thirdparty_glew_glew.c b/devel/godot2/files/patch-thirdparty_glew_glew.c
new file mode 100644
index 000000000000..3c7c2653c2c5
--- /dev/null
+++ b/devel/godot2/files/patch-thirdparty_glew_glew.c
@@ -0,0 +1,11 @@
+--- thirdparty/glew/glew.c.orig 2017-12-28 02:06:18 UTC
++++ thirdparty/glew/glew.c
+@@ -30,7 +30,7 @@
+ ** THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+-#include <GL/glew.h>
++#include "thirdparty/glew/GL/glew.h"
+
+ #if defined(_WIN32)
+ # include <GL/wglew.h>
diff --git a/devel/godot2/files/patch-thirdparty_rtaudio_RtAudio.cpp b/devel/godot2/files/patch-thirdparty_rtaudio_RtAudio.cpp
new file mode 100644
index 000000000000..02dd71439c98
--- /dev/null
+++ b/devel/godot2/files/patch-thirdparty_rtaudio_RtAudio.cpp
@@ -0,0 +1,89 @@
+--- thirdparty/rtaudio/RtAudio.cpp.orig 2016-08-09 07:52:15 UTC
++++ thirdparty/rtaudio/RtAudio.cpp
+@@ -8589,6 +8589,12 @@ bool RtApiPulse::probeDeviceOpen( unsign
+ #include <errno.h>
+ #include <math.h>
+
++#if defined(__FreeBSD__)
++#define SND_DEVICE "/dev/dsp"
++#else
++#define SND_DEVICE "/dev/mixer"
++#endif
++
+ static void *ossCallbackHandler(void * ptr);
+
+ // A structure to hold various information related to the OSS API
+@@ -8615,9 +8621,11 @@ RtApiOss :: ~RtApiOss()
+
+ unsigned int RtApiOss :: getDeviceCount( void )
+ {
+- int mixerfd = open( "/dev/mixer", O_RDWR, 0 );
++ int mixerfd = open( SND_DEVICE, O_RDWR, 0 );
+ if ( mixerfd == -1 ) {
+- errorText_ = "RtApiOss::getDeviceCount: error opening '/dev/mixer'.";
++ errorText_ = "RtApiOss::getDeviceCount: error opening '";
++ errorText_ += SND_DEVICE;
++ errorText_ += "'.";
+ error( RtAudioError::WARNING );
+ return 0;
+ }
+@@ -8639,9 +8647,11 @@ RtAudio::DeviceInfo RtApiOss :: getDevic
+ RtAudio::DeviceInfo info;
+ info.probed = false;
+
+- int mixerfd = open( "/dev/mixer", O_RDWR, 0 );
++ int mixerfd = open( SND_DEVICE, O_RDWR, 0 );
+ if ( mixerfd == -1 ) {
+- errorText_ = "RtApiOss::getDeviceInfo: error opening '/dev/mixer'.";
++ errorText_ = "RtApiOss::getDeviceInfo: error opening '";
++ errorText_ += SND_DEVICE;
++ errorText_ += "'.";
+ error( RtAudioError::WARNING );
+ return info;
+ }
+@@ -8697,8 +8707,10 @@ RtAudio::DeviceInfo RtApiOss :: getDevic
+ info.nativeFormats |= RTAUDIO_SINT8;
+ if ( mask & AFMT_S32_LE || mask & AFMT_S32_BE )
+ info.nativeFormats |= RTAUDIO_SINT32;
++#if defined(AFMT_FLOAT)
+ if ( mask & AFMT_FLOAT )
+ info.nativeFormats |= RTAUDIO_FLOAT32;
++#endif
+ if ( mask & AFMT_S24_LE || mask & AFMT_S24_BE )
+ info.nativeFormats |= RTAUDIO_SINT24;
+
+@@ -8757,9 +8769,11 @@ bool RtApiOss :: probeDeviceOpen( unsign
+ RtAudioFormat format, unsigned int *bufferSize,
+ RtAudio::StreamOptions *options )
+ {
+- int mixerfd = open( "/dev/mixer", O_RDWR, 0 );
++ int mixerfd = open( SND_DEVICE, O_RDWR, 0 );
+ if ( mixerfd == -1 ) {
+- errorText_ = "RtApiOss::probeDeviceOpen: error opening '/dev/mixer'.";
++ errorText_ = "RtApiOss::probeDeviceOpen: error opening '";
++ errorText_ += SND_DEVICE;
++ errorText_ += "'.";
+ return FAILURE;
+ }
+
+@@ -8787,7 +8801,11 @@ bool RtApiOss :: probeDeviceOpen( unsign
+ }
+
+ oss_audioinfo ainfo;
++#if defined(__FreeBSD__)
++ ainfo.dev = -1; // specify -1 to get default device
++#else
+ ainfo.dev = device;
++#endif
+ result = ioctl( mixerfd, SNDCTL_AUDIOINFO, &ainfo );
+ close( mixerfd );
+ if ( result == -1 ) {
+@@ -9025,7 +9043,7 @@ bool RtApiOss :: probeDeviceOpen( unsign
+ }
+
+ // Verify the sample rate setup worked.
+- if ( abs( srate - sampleRate ) > 100 ) {
++ if ( abs( srate - (int)sampleRate ) > 100 ) {
+ close( fd );
+ errorStream_ << "RtApiOss::probeDeviceOpen: device (" << ainfo.name << ") does not support sample rate (" << sampleRate << ").";
+ errorText_ = errorStream_.str();
diff --git a/devel/godot2/files/patch-thirdparty_rtaudio_RtAudio.h b/devel/godot2/files/patch-thirdparty_rtaudio_RtAudio.h
new file mode 100644
index 000000000000..010a8222e1a8
--- /dev/null
+++ b/devel/godot2/files/patch-thirdparty_rtaudio_RtAudio.h
@@ -0,0 +1,16 @@
+--- thirdparty/rtaudio/RtAudio.h.orig 2016-08-09 07:52:15 UTC
++++ thirdparty/rtaudio/RtAudio.h
+@@ -5,7 +5,13 @@
+ #if defined(OSX_ENABLED)
+ #define __MACOSX_CORE__
+ #elif defined(UNIX_ENABLED)
++#if defined(OSS_ENABLED)
++ #define __LINUX_OSS__
++#elif defined(ALSA_ENABLED)
+ #define __LINUX_ALSA__
++#elif defined(PULSEAUDIO_ENABLED)
++ #define __LINUX_PULSE__
++#endif
+ #elif defined(WINDOWS_ENABLED)
+ #if defined(WINRT_ENABLED)
+ #define __RTAUDIO_DUMMY__
diff --git a/devel/godot2/pkg-descr b/devel/godot2/pkg-descr
new file mode 100644
index 000000000000..0359653751fd
--- /dev/null
+++ b/devel/godot2/pkg-descr
@@ -0,0 +1,9 @@
+Godot is a multi-platform 2D and 3D game engine. It also provides a
+feature rich development environment.
+
+Easily deploy your game on IOS, android, OSX, Linux, Steam, Windows or PS3.
+
+This port installs the older v2 to support projects that
+haven't been updated for v3.0
+
+WWW: http://www.godotengine.org/
diff --git a/devel/libhid/Makefile b/devel/libhid/Makefile
new file mode 100644
index 000000000000..f75e2e3b911a
--- /dev/null
+++ b/devel/libhid/Makefile
@@ -0,0 +1,31 @@
+# Created by: ntarmos@ceid.upatras.gr
+# $FreeBSD$
+
+PORTNAME= libhid
+PORTVERSION= 0.2.16
+PORTREVISION= 4
+CATEGORIES= devel
+MASTER_SITES= https://alioth-archive.debian.org/releases/libhid/libhid/${PORTVERSION}/
+
+MAINTAINER= ntarmos@cs.uoi.gr
+COMMENT= User-space HID access library written in C
+
+LICENSE= GPLv2
+
+BUILD_DEPENDS= ${LOCALBASE}/bin/xsltproc:textproc/libxslt \
+ docbook-xsl>0:textproc/docbook-xsl \
+ ${LOCALBASE}/bin/swig:devel/swig
+
+GNU_CONFIGURE= yes
+CONFIGURE_ARGS= --without-doxygen --disable-werror
+INSTALL_TARGET= install-strip
+USES= gmake libtool pathfix python:2.7
+USE_LDCONFIG= yes
+
+EXTRA_PATCHES= ${FILESDIR}/extra-patch-usb
+
+post-patch:
+ @${REINPLACE_CMD} -e "s/required=1\.3/required=3.0/g" \
+ ${WRKSRC}/configure
+
+.include <bsd.port.mk>
diff --git a/devel/libhid/distinfo b/devel/libhid/distinfo
new file mode 100644
index 000000000000..d12a9190ef02
--- /dev/null
+++ b/devel/libhid/distinfo
@@ -0,0 +1,2 @@
+SHA256 (libhid-0.2.16.tar.gz) = f6809ab3b9c907cbb05ceba9ee6ca23a705f85fd71588518e14b3a7d9f2550e5
+SIZE (libhid-0.2.16.tar.gz) = 435245
diff --git a/devel/libhid/files/extra-patch-usb b/devel/libhid/files/extra-patch-usb
new file mode 100644
index 000000000000..af78de7e0e45
--- /dev/null
+++ b/devel/libhid/files/extra-patch-usb
@@ -0,0 +1,12 @@
+--- configure.orig 2007-04-26 04:25:25.000000000 +0400
++++ configure 2009-03-07 20:26:02.000000000 +0300
+@@ -4846,8 +4846,8 @@
+ done
+
+
+- LIBUSB_CFLAGS="`libusb-config --cflags`"
+- LIBUSB_LIBS="`libusb-config --libs`"
++ LIBUSB_CFLAGS=""
++ LIBUSB_LIBS="-lusb"
+
+
diff --git a/devel/libhid/files/patch-Makefile.in b/devel/libhid/files/patch-Makefile.in
new file mode 100644
index 000000000000..05066af6360a
--- /dev/null
+++ b/devel/libhid/files/patch-Makefile.in
@@ -0,0 +1,11 @@
+--- Makefile.in.orig 2007-07-16 13:40:13.000000000 +0300
++++ Makefile.in 2007-07-16 13:41:37.000000000 +0300
+@@ -293,7 +293,7 @@
+ README.licence
+
+ DEBIAN_VERSION = ${shell head -1 debian/changelog 2>/dev/null | sed -e '1s,.*(\([^)]*\)).*,\1,'}
+-DEBIAN_ARCH = $(shell test -x `which dpkg-architecture 2>/dev/null` && dpkg-architecture -qDEB_BUILD_ARCH 2>/dev/null || echo i386)
++DEBIAN_ARCH = i386
+ TARBALL = $(distdir).tar.gz
+ DEBDIR = .debian
+ STAMP = $(DEBDIR)/stamp
diff --git a/devel/libhid/files/patch-configure b/devel/libhid/files/patch-configure
new file mode 100644
index 000000000000..894729023634
--- /dev/null
+++ b/devel/libhid/files/patch-configure
@@ -0,0 +1,31 @@
+--- configure.orig 2007-04-26 00:25:25 UTC
++++ configure
+@@ -22433,19 +22433,6 @@ echo "${ECHO_T}$swig_version" >&6; }
+ if test -z "$available_patch" ; then
+ available_patch=0
+ fi
+- if test $available_major -ne $required_major \
+- -o $available_minor -ne $required_minor \
+- -o $available_patch -lt $required_patch ; then
+- { echo "$as_me:$LINENO: WARNING: SWIG version >= 1.3 is required. You have $swig_version. You should look at http://www.swig.org" >&5
+-echo "$as_me: WARNING: SWIG version >= 1.3 is required. You have $swig_version. You should look at http://www.swig.org" >&2;}
+- SWIG='echo "Error: SWIG version >= 1.3 is required. You have '"$swig_version"'. You should look at http://www.swig.org" ; false'
+- else
+- { echo "$as_me:$LINENO: SWIG executable is '$SWIG'" >&5
+-echo "$as_me: SWIG executable is '$SWIG'" >&6;}
+- SWIG_LIB=`$SWIG -swiglib`
+- { echo "$as_me:$LINENO: SWIG library directory is '$SWIG_LIB'" >&5
+-echo "$as_me: SWIG library directory is '$SWIG_LIB'" >&6;}
+- fi
+ else
+ { echo "$as_me:$LINENO: WARNING: cannot determine SWIG version" >&5
+ echo "$as_me: WARNING: cannot determine SWIG version" >&2;}
+@@ -22785,7 +22772,7 @@ echo $ECHO_N "checking for Python library path... $ECH
+
+ PYTHON_LDFLAGS=`$PYTHON -c "from distutils.sysconfig import *; \
+ import os; \
+- print apply(os.path.join, get_config_vars('LIBPL', 'LDLIBRARY'))"`
++ print apply(os.path.join, get_config_vars('LIBDIR', 'LDLIBRARY'))"`
+ fi
+ { echo "$as_me:$LINENO: result: $PYTHON_LDFLAGS" >&5
+ echo "${ECHO_T}$PYTHON_LDFLAGS" >&6; }
diff --git a/devel/libhid/files/patch-hidparser-hidtypes.h b/devel/libhid/files/patch-hidparser-hidtypes.h
new file mode 100644
index 000000000000..43086c0b8506
--- /dev/null
+++ b/devel/libhid/files/patch-hidparser-hidtypes.h
@@ -0,0 +1,11 @@
+--- hidparser/hidtypes.h.orig 2007-07-16 12:21:55.000000000 +0300
++++ hidparser/hidtypes.h 2007-07-16 12:22:04.000000000 +0300
+@@ -21,7 +21,7 @@
+ typedef unsigned char uchar;
+ #endif
+
+-#if HPUX || __APPLE__
++#if HPUX || __APPLE__ || __FreeBSD__
+ typedef unsigned long ulong;
+ #endif
+
diff --git a/devel/libhid/files/patch-src_hid_initialisation.c b/devel/libhid/files/patch-src_hid_initialisation.c
new file mode 100644
index 000000000000..014adf4987dd
--- /dev/null
+++ b/devel/libhid/files/patch-src_hid_initialisation.c
@@ -0,0 +1,10 @@
+--- src/hid_initialisation.c.orig 2009-03-07 20:27:43.000000000 +0300
++++ src/hid_initialisation.c 2009-03-07 20:29:25.000000000 +0300
+@@ -4,6 +4,7 @@
+ #define HID_INTERNAL
+
+ #include "config.h"
++#include <stdlib.h>
+ #include <hid.h>
+ #include <hid_helpers.h>
+
diff --git a/devel/libhid/files/patch-src_hid_opening.c b/devel/libhid/files/patch-src_hid_opening.c
new file mode 100644
index 000000000000..19b080d901ee
--- /dev/null
+++ b/devel/libhid/files/patch-src_hid_opening.c
@@ -0,0 +1,9 @@
+--- src/hid_opening.c.orig 2009-03-07 20:28:09.000000000 +0300
++++ src/hid_opening.c 2009-03-07 20:29:17.000000000 +0300
+@@ -1,5 +1,6 @@
+ #define HID_INTERNAL
+
++#include <stdlib.h>
+ #include <hid.h>
+ #include <hid_helpers.h>
+ #include <os.h>
diff --git a/devel/libhid/files/patch-src_hid_parsing.c b/devel/libhid/files/patch-src_hid_parsing.c
new file mode 100644
index 000000000000..3eccd4b712e1
--- /dev/null
+++ b/devel/libhid/files/patch-src_hid_parsing.c
@@ -0,0 +1,9 @@
+--- src/hid_parsing.c.orig 2009-03-07 20:29:35.000000000 +0300
++++ src/hid_parsing.c 2009-03-07 20:29:43.000000000 +0300
+@@ -1,5 +1,6 @@
+ #define HID_INTERNAL
+
++#include <stdlib.h>
+ #include <hid.h>
+ #include <hid_helpers.h>
+
diff --git a/devel/libhid/files/patch-test_lshid.c b/devel/libhid/files/patch-test_lshid.c
new file mode 100644
index 000000000000..2b107ca7b9a1
--- /dev/null
+++ b/devel/libhid/files/patch-test_lshid.c
@@ -0,0 +1,10 @@
+--- test/lshid.c.orig 2009-03-07 20:30:14.000000000 +0300
++++ test/lshid.c 2009-03-07 20:30:20.000000000 +0300
+@@ -23,6 +23,7 @@
+
+ #include <hid.h>
+ #include <stdio.h>
++#include <stdlib.h>
+ #include <string.h>
+
+ char *hid_id[32]; /* FIXME: 32 devices MAX */
diff --git a/devel/libhid/files/patch-test_test_libhid.c b/devel/libhid/files/patch-test_test_libhid.c
new file mode 100644
index 000000000000..dbb18830a719
--- /dev/null
+++ b/devel/libhid/files/patch-test_test_libhid.c
@@ -0,0 +1,9 @@
+--- test/test_libhid.c.orig 2009-03-07 20:29:59.000000000 +0300
++++ test/test_libhid.c 2009-03-07 20:30:05.000000000 +0300
+@@ -1,5 +1,6 @@
+ #include <hid.h>
+ #include <stdio.h>
++#include <stdlib.h>
+ #include <string.h>
+
+ bool match_serial_number(struct usb_dev_handle* usbdev, void* custom, unsigned int len)
diff --git a/devel/libhid/pkg-descr b/devel/libhid/pkg-descr
new file mode 100644
index 000000000000..4ff19da6b2a4
--- /dev/null
+++ b/devel/libhid/pkg-descr
@@ -0,0 +1,9 @@
+LibHID is a user-space HID access library written in C. It provides a
+generic and flexible way to access and interact with USB HID devices,
+much like libusb does for plain USB devices. It is based on libusb, thus
+it requires no HID support in the kernel. Furthermore, it aims to
+support all operating system supported by libusb: Linux, BSD, OS X, and
+Windows.
+
+
+WWW: http://libhid.alioth.debian.org/
diff --git a/devel/libhid/pkg-plist b/devel/libhid/pkg-plist
new file mode 100644
index 000000000000..6712d2597a88
--- /dev/null
+++ b/devel/libhid/pkg-plist
@@ -0,0 +1,23 @@
+bin/libhid-detach-device
+include/hid.h
+include/hidparser.h
+include/hidtypes.h
+lib/libhid.a
+lib/libhid.so
+lib/libhid.so.0
+lib/libhid.so.0.0.0
+libdata/pkgconfig/libhid.pc
+man/man1/libhid-detach-device.1.gz
+%%PYTHON_SITELIBDIR%%/libhid/_hid.a
+%%PYTHON_SITELIBDIR%%/libhid/_hid.so
+%%PYTHON_SITELIBDIR%%/libhid/_hid.so.0
+%%PYTHON_SITELIBDIR%%/libhid/_hid.so.0.0.0
+%%PYTHON_SITELIBDIR%%/libhid/__init__.py
+%%PYTHON_SITELIBDIR%%/libhid/__init__.pyc
+%%PYTHON_SITELIBDIR%%/libhid/__init__.pyo
+%%PYTHON_SITELIBDIR%%/libhid/hid.py
+%%PYTHON_SITELIBDIR%%/libhid/hid.pyc
+%%PYTHON_SITELIBDIR%%/libhid/hid.pyo
+%%PYTHON_SITELIBDIR%%/libhid/hidwrap.py
+%%PYTHON_SITELIBDIR%%/libhid/hidwrap.pyc
+%%PYTHON_SITELIBDIR%%/libhid/hidwrap.pyo
diff --git a/devel/libosmocore/Makefile b/devel/libosmocore/Makefile
new file mode 100644
index 000000000000..c22213d16549
--- /dev/null
+++ b/devel/libosmocore/Makefile
@@ -0,0 +1,50 @@
+# $FreeBSD$
+
+PORTNAME= libosmocore
+PORTVERSION= 1.2.0
+CATEGORIES= devel
+MASTER_SITES= http://git.osmocom.org/libosmocore/snapshot/
+
+MAINTAINER= ports@FreeBSD.org
+COMMENT= Common library for all Osmocom projects
+
+LICENSE= GPLv2
+LICENSE_FILE= ${WRKSRC}/COPYING
+
+LIB_DEPENDS= libgnutls.so:security/gnutls \
+ libpcsclite.so:devel/pcsc-lite \
+ libtalloc.so:devel/talloc
+
+USES= alias autoreconf gmake libtool pathfix pkgconfig python:2.7 \
+ shebangfix
+
+GNU_CONFIGURE= yes
+LDFLAGS+= -lexecinfo
+USE_LDCONFIG= yes
+INSTALL_TARGET= install-strip
+PORTDOCS= *
+SHEBANG_FILES= utils/conv_codes_gsm.py utils/conv_gen.py
+python_OLD_CMD= /usr/bin/python2
+
+CFLAGS+= -fcommon
+
+OPTIONS_DEFINE= DOCS DOXYGEN
+
+DOXYGEN_IMPLIES= DOCS
+DOXYGEN_BUILD_DEPENDS= dot:graphics/graphviz \
+ doxygen:devel/doxygen
+DOXYGEN_CONFIGURE_ENV_OFF= ac_cv_path_DOXYGEN=false
+
+post-patch:
+ ${ECHO_CMD} ${PORTVERSION} > ${WRKSRC}/.tarball-version
+ @${REINPLACE_CMD} -e '/#pragma GCC diagnostic/d' \
+ ${WRKSRC}/src/application.c \
+ ${WRKSRC}/src/gb/gprs_bssgp.c \
+ ${WRKSRC}/src/gb/gprs_bssgp_bss.c
+ @${REINPLACE_CMD} -e 's/python2/${PYTHON_VERSION}/' \
+ -e 's,(AM_V_GEN)python ,(AM_V_GEN)${PYTHON_VERSION} ,' \
+ ${WRKSRC}/include/Makefile.am \
+ ${WRKSRC}/src/gsm/Makefile.am \
+ ${WRKSRC}/tests/Makefile.am
+
+.include <bsd.port.mk>
diff --git a/devel/libosmocore/distinfo b/devel/libosmocore/distinfo
new file mode 100644
index 000000000000..efc51dd437c6
--- /dev/null
+++ b/devel/libosmocore/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1568838407
+SHA256 (libosmocore-1.2.0.tar.gz) = 74b8e0edb2a97eb3665f4004ed7b5c6a42c2e3f5fe29dcd5d474e7c4d1d11888
+SIZE (libosmocore-1.2.0.tar.gz) = 1234979
diff --git a/devel/libosmocore/files/patch-src_gb_gprs__ns__sns.c b/devel/libosmocore/files/patch-src_gb_gprs__ns__sns.c
new file mode 100644
index 000000000000..491952688a7e
--- /dev/null
+++ b/devel/libosmocore/files/patch-src_gb_gprs__ns__sns.c
@@ -0,0 +1,11 @@
+--- src/gb/gprs_ns_sns.c.orig 2019-05-22 09:31:16 UTC
++++ src/gb/gprs_ns_sns.c
+@@ -11,6 +11,8 @@
+ #include <netinet/in.h>
+ #include <arpa/inet.h>
+
++#include <sys/socket.h>
++
+ #include <osmocom/core/fsm.h>
+ #include <osmocom/core/msgb.h>
+ #include <osmocom/core/signal.h>
diff --git a/devel/libosmocore/files/patch-src_sockaddr__str.c b/devel/libosmocore/files/patch-src_sockaddr__str.c
new file mode 100644
index 000000000000..62010f401a11
--- /dev/null
+++ b/devel/libosmocore/files/patch-src_sockaddr__str.c
@@ -0,0 +1,11 @@
+--- src/sockaddr_str.c.orig 2019-05-22 09:18:33 UTC
++++ src/sockaddr_str.c
+@@ -38,6 +38,8 @@
+ #include <osmocom/core/utils.h>
+ #include <osmocom/core/byteswap.h>
+
++#include <sys/socket.h>
++
+ /*! \addtogroup sockaddr_str
+ *
+ * Common operations to store IP address as a char string along with a uint16_t port number.
diff --git a/devel/libosmocore/files/patch-src_timer__clockgettime.c b/devel/libosmocore/files/patch-src_timer__clockgettime.c
new file mode 100644
index 000000000000..1e24cd2ea431
--- /dev/null
+++ b/devel/libosmocore/files/patch-src_timer__clockgettime.c
@@ -0,0 +1,27 @@
+--- src/timer_clockgettime.c.orig 2019-05-07 16:36:51 UTC
++++ src/timer_clockgettime.c
+@@ -75,16 +75,16 @@ static struct fakeclock* clkid_to_fakeclock(clockid_t
+ switch(clk_id) {
+ case CLOCK_REALTIME:
+ return &realtime;
+- case CLOCK_REALTIME_COARSE:
+- return &realtime_coarse;
++// case CLOCK_REALTIME_COARSE:
++// return &realtime_coarse;
+ case CLOCK_MONOTONIC:
+ return &mono;
+- case CLOCK_MONOTONIC_COARSE:
+- return &mono_coarse;
+- case CLOCK_MONOTONIC_RAW:
+- return &mono_raw;
+- case CLOCK_BOOTTIME:
+- return &boottime;
++// case CLOCK_MONOTONIC_COARSE:
++// return &mono_coarse;
++// case CLOCK_MONOTONIC_RAW:
++// return &mono_raw;
++// case CLOCK_BOOTTIME:
++// return &boottime;
+ case CLOCK_PROCESS_CPUTIME_ID:
+ return &proc_cputime_id;
+ case CLOCK_THREAD_CPUTIME_ID:
diff --git a/devel/libosmocore/pkg-descr b/devel/libosmocore/pkg-descr
new file mode 100644
index 000000000000..7c3933fcfbc2
--- /dev/null
+++ b/devel/libosmocore/pkg-descr
@@ -0,0 +1,7 @@
+libosmocore is a library with various utility functions that were
+originally developed as part of the OpenBSC project, but which are
+of a more generic nature and thus useful to (at least) other programs
+that we develop in the sphere of Free Software / Open Source mobile
+communications.
+
+WWW: http://bb.osmocom.org/trac/wiki/libosmocore
diff --git a/devel/libosmocore/pkg-plist b/devel/libosmocore/pkg-plist
new file mode 100644
index 000000000000..b0152855ae4d
--- /dev/null
+++ b/devel/libosmocore/pkg-plist
@@ -0,0 +1,185 @@
+bin/osmo-arfcn
+bin/osmo-auc-gen
+bin/osmo-config-merge
+bin/osmo-release.sh
+include/osmo-release.mk
+include/osmocom/codec/codec.h
+include/osmocom/codec/ecu.h
+include/osmocom/codec/gsm610_bits.h
+include/osmocom/coding/gsm0503_coding.h
+include/osmocom/coding/gsm0503_interleaving.h
+include/osmocom/coding/gsm0503_mapping.h
+include/osmocom/coding/gsm0503_parity.h
+include/osmocom/coding/gsm0503_tables.h
+include/osmocom/core/application.h
+include/osmocom/core/backtrace.h
+include/osmocom/core/bit16gen.h
+include/osmocom/core/bit32gen.h
+include/osmocom/core/bit64gen.h
+include/osmocom/core/bitcomp.h
+include/osmocom/core/bits.h
+include/osmocom/core/bitvec.h
+include/osmocom/core/byteswap.h
+include/osmocom/core/conv.h
+include/osmocom/core/counter.h
+include/osmocom/core/crc16.h
+include/osmocom/core/crc16gen.h
+include/osmocom/core/crc32gen.h
+include/osmocom/core/crc64gen.h
+include/osmocom/core/crc8gen.h
+include/osmocom/core/crcgen.h
+include/osmocom/core/defs.h
+include/osmocom/core/endian.h
+include/osmocom/core/fsm.h
+include/osmocom/core/gsmtap.h
+include/osmocom/core/gsmtap_util.h
+include/osmocom/core/isdnhdlc.h
+include/osmocom/core/linuxlist.h
+include/osmocom/core/linuxrbtree.h
+include/osmocom/core/logging.h
+include/osmocom/core/loggingrb.h
+include/osmocom/core/macaddr.h
+include/osmocom/core/msgb.h
+include/osmocom/core/msgfile.h
+include/osmocom/core/panic.h
+include/osmocom/core/plugin.h
+include/osmocom/core/prbs.h
+include/osmocom/core/prim.h
+include/osmocom/core/process.h
+include/osmocom/core/rate_ctr.h
+include/osmocom/core/select.h
+include/osmocom/core/sercomm.h
+include/osmocom/core/serial.h
+include/osmocom/core/signal.h
+include/osmocom/core/sockaddr_str.h
+include/osmocom/core/socket.h
+include/osmocom/core/stat_item.h
+include/osmocom/core/statistics.h
+include/osmocom/core/stats.h
+include/osmocom/core/strrb.h
+include/osmocom/core/talloc.h
+include/osmocom/core/tdef.h
+include/osmocom/core/timer.h
+include/osmocom/core/timer_compat.h
+include/osmocom/core/use_count.h
+include/osmocom/core/utils.h
+include/osmocom/core/write_queue.h
+include/osmocom/crypt/auth.h
+include/osmocom/crypt/gprs_cipher.h
+include/osmocom/ctrl/control_cmd.h
+include/osmocom/ctrl/control_if.h
+include/osmocom/ctrl/control_vty.h
+include/osmocom/ctrl/ports.h
+include/osmocom/gprs/gprs_bssgp.h
+include/osmocom/gprs/gprs_bssgp_bss.h
+include/osmocom/gprs/gprs_msgb.h
+include/osmocom/gprs/gprs_ns.h
+include/osmocom/gprs/gprs_ns_frgre.h
+include/osmocom/gprs/gprs_rlc.h
+include/osmocom/gprs/protocol/gsm_04_60.h
+include/osmocom/gprs/protocol/gsm_08_16.h
+include/osmocom/gprs/protocol/gsm_08_18.h
+include/osmocom/gsm/a5.h
+include/osmocom/gsm/abis_nm.h
+include/osmocom/gsm/apn.h
+include/osmocom/gsm/bitvec_gsm.h
+include/osmocom/gsm/bts_features.h
+include/osmocom/gsm/cbsp.h
+include/osmocom/gsm/comp128.h
+include/osmocom/gsm/comp128v23.h
+include/osmocom/gsm/gan.h
+include/osmocom/gsm/gsm0341.h
+include/osmocom/gsm/gsm0411_smc.h
+include/osmocom/gsm/gsm0411_smr.h
+include/osmocom/gsm/gsm0411_utils.h
+include/osmocom/gsm/gsm0480.h
+include/osmocom/gsm/gsm0502.h
+include/osmocom/gsm/gsm0503.h
+include/osmocom/gsm/gsm0808.h
+include/osmocom/gsm/gsm0808_utils.h
+include/osmocom/gsm/gsm23003.h
+include/osmocom/gsm/gsm29118.h
+include/osmocom/gsm/gsm29205.h
+include/osmocom/gsm/gsm48.h
+include/osmocom/gsm/gsm48_arfcn_range_encode.h
+include/osmocom/gsm/gsm48_ie.h
+include/osmocom/gsm/gsm48_rest_octets.h
+include/osmocom/gsm/gsm_utils.h
+include/osmocom/gsm/gsup.h
+include/osmocom/gsm/gsup_sms.h
+include/osmocom/gsm/ipa.h
+include/osmocom/gsm/l1sap.h
+include/osmocom/gsm/lapd_core.h
+include/osmocom/gsm/lapdm.h
+include/osmocom/gsm/meas_rep.h
+include/osmocom/gsm/mncc.h
+include/osmocom/gsm/oap.h
+include/osmocom/gsm/oap_client.h
+include/osmocom/gsm/prim.h
+include/osmocom/gsm/protocol/gsm_03_40.h
+include/osmocom/gsm/protocol/gsm_03_41.h
+include/osmocom/gsm/protocol/gsm_04_08.h
+include/osmocom/gsm/protocol/gsm_04_08_gprs.h
+include/osmocom/gsm/protocol/gsm_04_11.h
+include/osmocom/gsm/protocol/gsm_04_12.h
+include/osmocom/gsm/protocol/gsm_04_14.h
+include/osmocom/gsm/protocol/gsm_04_80.h
+include/osmocom/gsm/protocol/gsm_08_08.h
+include/osmocom/gsm/protocol/gsm_08_58.h
+include/osmocom/gsm/protocol/gsm_09_02.h
+include/osmocom/gsm/protocol/gsm_12_21.h
+include/osmocom/gsm/protocol/gsm_23_003.h
+include/osmocom/gsm/protocol/gsm_23_041.h
+include/osmocom/gsm/protocol/gsm_29_118.h
+include/osmocom/gsm/protocol/gsm_44_318.h
+include/osmocom/gsm/protocol/gsm_48_049.h
+include/osmocom/gsm/protocol/ipaccess.h
+include/osmocom/gsm/protocol/smpp34_osmocom.h
+include/osmocom/gsm/rsl.h
+include/osmocom/gsm/rxlev_stat.h
+include/osmocom/gsm/sysinfo.h
+include/osmocom/gsm/tlv.h
+include/osmocom/sim/class_tables.h
+include/osmocom/sim/sim.h
+include/osmocom/vty/buffer.h
+include/osmocom/vty/command.h
+include/osmocom/vty/logging.h
+include/osmocom/vty/misc.h
+include/osmocom/vty/ports.h
+include/osmocom/vty/stats.h
+include/osmocom/vty/tdef_vty.h
+include/osmocom/vty/telnet_interface.h
+include/osmocom/vty/vector.h
+include/osmocom/vty/vty.h
+lib/libosmocodec.so
+lib/libosmocodec.so.0
+lib/libosmocodec.so.0.1.1
+lib/libosmocoding.so
+lib/libosmocoding.so.0
+lib/libosmocoding.so.0.1.1
+lib/libosmocore.so
+lib/libosmocore.so.12
+lib/libosmocore.so.12.2.0
+lib/libosmoctrl.so
+lib/libosmoctrl.so.0
+lib/libosmoctrl.so.0.4.0
+lib/libosmogb.so
+lib/libosmogb.so.9
+lib/libosmogb.so.9.0.1
+lib/libosmogsm.so
+lib/libosmogsm.so.13
+lib/libosmogsm.so.13.0.0
+lib/libosmosim.so
+lib/libosmosim.so.0
+lib/libosmosim.so.0.1.1
+lib/libosmovty.so
+lib/libosmovty.so.4
+lib/libosmovty.so.4.4.0
+libdata/pkgconfig/libosmocodec.pc
+libdata/pkgconfig/libosmocoding.pc
+libdata/pkgconfig/libosmocore.pc
+libdata/pkgconfig/libosmoctrl.pc
+libdata/pkgconfig/libosmogb.pc
+libdata/pkgconfig/libosmogsm.pc
+libdata/pkgconfig/libosmosim.pc
+libdata/pkgconfig/libosmovty.pc
diff --git a/devel/llvm60/Makefile b/devel/llvm60/Makefile
new file mode 100644
index 000000000000..257be275a350
--- /dev/null
+++ b/devel/llvm60/Makefile
@@ -0,0 +1,459 @@
+# $FreeBSD$
+
+PORTNAME= llvm
+DISTVERSION= 6.0.1
+PORTREVISION= 7
+CATEGORIES= devel lang
+MASTER_SITES= http://${PRE_}releases.llvm.org/${LLVM_RELEASE}/${RCDIR}
+PKGNAMESUFFIX= ${LLVM_SUFFIX}
+DISTNAME= ${PORTNAME}-${DISTVERSION}.src
+DISTFILES= ${PORTNAME}-${DISTVERSION}.src${EXTRACT_SUFX}
+
+MAINTAINER= brooks@FreeBSD.org
+COMMENT= LLVM and Clang
+
+.include "${.CURDIR}/../llvm-devel/Makefile.LICENSE"
+
+LLVM_RELEASE= ${DISTVERSION:C/rc.*//}
+LLVM_MAJOR= ${LLVM_RELEASE:C/\.[0-9]$//}
+LLVM_LIB_VER= ${LLVM_MAJOR:C/\.//}
+RCDIR= ${DISTVERSION:S/${LLVM_RELEASE}//:C|(rc.*)|\1/|}
+PRE_= ${DISTVERSION:C/.*rc.*/pre/:N*[0-9]*}
+LLVM_SUFFIX= ${LLVM_LIB_VER}
+
+LLVM_PREFIX= ${PREFIX}/llvm${LLVM_SUFFIX}
+DOCSDIR= ${PREFIX}/share/doc/${PORTNAME}${LLVM_SUFFIX}
+DATADIR= ${PREFIX}/share/${PORTNAME}${LLVM_SUFFIX}
+
+USES= cmake compiler:c++11-lib libedit perl5 tar:xz shebangfix
+_USES_PYTHON?= python:2.7,build
+USES+= ${_USES_PYTHON}
+USE_LDCONFIG= ${LLVM_PREFIX}/lib
+SHEBANG_FILES= utils/lit/lit.py utils/llvm-lit/llvm-lit.in
+
+SUB_FILES= llvm-wrapper.sh
+SUB_LIST= LLVM_PREFIX="${LLVM_PREFIX}" LLVM_SUFFIX="${LLVM_SUFFIX}"
+
+CMAKE_INSTALL_PREFIX= ${LLVM_PREFIX}
+CMAKE_ARGS= -DLLVM_BUILD_LLVM_DYLIB=ON -DLLVM_LINK_LLVM_DYLIB=ON
+CMAKE_ARGS+= -DLLVM_ENABLE_RTTI=ON
+CMAKE_ARGS+= -DLLVM_DEFAULT_TARGET_TRIPLE=${CONFIGURE_TARGET}
+CMAKE_ARGS+= -DLLVM_HOST_TRIPLE=${CONFIGURE_TARGET}
+# Following commit https://github.com/kitware/cmake/commit/956054
+# we need to either change the whole man-shuffle below, or simply
+# redefine CMAKE_INSTALL_MANDIR
+CMAKE_ARGS+= -DCMAKE_INSTALL_MANDIR:PATH="share/man"
+CMAKE_ARGS+= -DLLVM_PARALLEL_LINK_JOBS=1
+
+# Disable assertions. They should be disabled by cmake, but USES=cmake
+# overrides -DCMAKE_*_FLAGS_RELEASE.
+CFLAGS+= -DNDEBUG
+CXXFLAGS+= -DNDEBUG
+
+OPTIONS_DEFINE= CLANG DOCS EXTRAS LIT LLD LLDB
+OPTIONS_DEFINE_amd64= COMPILER_RT GOLD OPENMP
+OPTIONS_DEFINE_i386= COMPILER_RT OPENMP
+OPTIONS_DEFAULT= CLANG EXTRAS LIT LLD LLDB
+OPTIONS_DEFAULT_amd64= COMPILER_RT GOLD OPENMP
+OPTIONS_DEFAULT_i386= COMPILER_RT OPENMP
+OPTIONS_SUB= yes
+
+CLANG_DESC= Build clang
+CLANG_EXTRA_PATCHES= ${PATCHDIR}/clang
+CLANG_DISTFILES= cfe-${DISTVERSION}.src${EXTRACT_SUFX}
+CLANG_CMAKE_ON= -DCLANG_DEFAULT_OPENMP_RUNTIME=libomp
+CLANG_PORTDOCS= clang
+CLANG_USE= GNOME=libxml2
+COMPILER_RT_DESC= Sanitizer libraries
+COMPILER_RT_DISTFILES= compiler-rt-${DISTVERSION}.src${EXTRACT_SUFX}
+COMPILER_RT_PLIST_FILES=${_COMPILER_RT_LIBS:S|^|${_CRTLIBDIR}/|}
+DOCS_BUILD_DEPENDS= sphinx-build:textproc/py-sphinx
+DOCS_PORTDOCS= llvm
+DOCS_CMAKE_ON= -DLLVM_ENABLE_SPHINX=ON \
+ -DSPHINX_WARNINGS_AS_ERRORS=OFF \
+ -DLLVM_BUILD_DOCS=ON
+DOCS_PLIST_FILES= ${MAN1SRCS:S|^|man/man1/|:S|.1$|${LLVM_SUFFIX}.1.gz|}
+EXTRAS_DESC= Extra clang tools
+EXTRAS_IMPLIES= CLANG
+EXTRAS_DISTFILES= clang-tools-extra-${DISTVERSION}.src${EXTRACT_SUFX}
+GOLD_DESC= Build the LLVM Gold plugin for LTO
+GOLD_CMAKE_ON= -DLLVM_BINUTILS_INCDIR=${LOCALBASE}/include
+GOLD_BUILD_DEPENDS= ${LOCALBASE}/bin/ld.gold:devel/binutils
+LIT_DESC= Install lit and FileCheck test tools
+LIT_VARS= _USES_PYTHON=python:2.7
+LLD_DESC= Install lld, the LLVM linker
+LLD_DISTFILES= lld-${DISTVERSION}.src${EXTRACT_SUFX}
+LLD_EXTRA_PATCHES= ${PATCHDIR}/lld
+LLDB_BUILD_DEPENDS= swig:devel/swig \
+ ${PY_ENUM34}
+LLDB_DESC= Install lldb, the LLVM debugger
+LLDB_DISTFILES= lldb-${DISTVERSION}.src${EXTRACT_SUFX}
+LLDB_EXTRA_PATCHES= ${PATCHDIR}/lldb
+LLDB_IMPLIES= CLANG
+LLDB_VARS= _USES_PYTHON=python:2.7
+OPENMP_DESC= Install libomp, the LLVM OpenMP runtime library
+OPENMP_DISTFILES= openmp-${DISTVERSION}.src${EXTRACT_SUFX}
+OPENMP_EXTRA_PATCHES= ${PATCHDIR}/openmp
+
+.if defined(WITH_DEBUG)
+CMAKE_BUILD_TYPE= RelWithDebInfo
+STRIP=
+.endif
+
+_CRTLIBDIR= ${LLVM_PREFIX:S|${PREFIX}/||}/lib/clang/${LLVM_RELEASE}/lib/freebsd
+
+# Emulate USE_GITHUB's ${WRKSRC_tag} to reduce diffs to ../llvm-devel
+.for option in CLANG COMPILER_RT EXTRAS LLD LLDB OPENMP
+WRKSRC_${option:tl}= ${WRKDIR}/${${option}_DISTFILES:S/${EXTRACT_SUFX}//}
+.endfor
+
+PLIST_SUB+= LLVM_LIB_VER=${LLVM_LIB_VER} \
+ LLVM_MAJOR=${LLVM_MAJOR} \
+ LLVM_RELEASE=${LLVM_RELEASE} \
+ LLVM_SUFFIX=${LLVM_SUFFIX}
+
+COMMANDS= ${LLVM_COMMANDS}
+FIRST_COMMAND= ${COMMANDS:C/^/XXXX/1:MXXXX*:C/^XXXX//}
+
+STRIP_LIBS= BugpointPasses.so \
+ LLVMHello.so \
+ ${LIBNAME}.0 \
+ libLTO.so
+
+EXTRAS_LIBS= libclangApplyReplacements \
+ libclangChangeNamespace \
+ libclangDaemon \
+ libclangIncludeFixer \
+ libclangMove \
+ libclangQuery \
+ libclangRename \
+ libclangReorderFields \
+ libclangTidy \
+ libclangTidyGoogleModule \
+ libclangTidyLLVMModule \
+ libclangTidyMiscModule \
+ libclangTidyReadabilityModule \
+ libclangTidyUtils \
+ libfindAllSymbols \
+ libmodernizeCore
+EXTRAS_PATTERN= ${EXTRAS_COMMANDS:tW:C/ */|/g}|${EXTRAS_LIBS:tW:C/ */|/g}
+
+.include <bsd.port.options.mk>
+
+# keep in sync with /usr/src/lib/clang/clang.build.mk
+# ----------- start of sync block ------------------
+# Armv6 and armv7 uses hard float abi, unless the CPUTYPE has soft in it.
+# arm (for armv4 and armv5 CPUs) always uses the soft float ABI.
+# For all other targets, we stick with 'unknown'.
+.if ${ARCH:Marmv[67]*} && (!defined(CPUTYPE) || ${CPUTYPE:M*soft*} == "")
+TARGET_ABI= -gnueabihf
+.elif ${ARCH:Marm*}
+TARGET_ABI= -gnueabi
+.else
+TARGET_ABI=
+.endif
+
+CONFIGURE_TARGET:=${ARCH:C/amd64/x86_64/:C/arm64/aarch64/}-portbld-${OPSYS:tl}${OSREL}${TARGET_ABI}
+# ----------- end of sync block --------------------
+
+.if ${PORT_OPTIONS:MCLANG}
+COMMANDS+= ${CLANG_COMMANDS}
+MAN1SRCS+= clang.1 \
+ scan-build.1
+CLANG_PATTERN= (c-index-test|clang|scan-|Reporter.py|ScanView.py|scanview.css|sorttable.js|startfile.py|-analyzer)
+SHEBANG_FILES+= tools/clang/tools/scan-view/bin/scan-view \
+ tools/clang/tools/clang-format/git-clang-format \
+ tools/clang/tools/clang-format/clang-format-diff.py
+USES+= gnome
+.endif
+
+.if ${PORT_OPTIONS:MCOMPILER_RT}
+COMPILER_RT_PATTERN= (_blacklist.txt|sanitizer|include.xray)
+.endif
+
+.if ${PORT_OPTIONS:MEXTRAS}
+COMMANDS+= ${EXTRAS_COMMANDS}
+MAN1SRCS+= extraclangtools.1
+PORTDOCS+= clang-tools
+SHEBANG_FILES+= tools/clang/tools/extra/clang-tidy/tool/clang-tidy-diff.py \
+ tools/clang/tools/extra/clang-tidy/tool/run-clang-tidy.py \
+ tools/clang/tools/extra/include-fixer/find-all-symbols/tool/run-find-all-symbols.py
+.endif
+
+.if ${PORT_OPTIONS:MLIT}
+MAN1SRCS+= lit.1 FileCheck.1
+.endif
+
+.if ${PORT_OPTIONS:MLLD}
+COMMANDS+= ${LLD_COMMANDS}
+PORTDOCS+= lld
+.endif
+
+.if ${PORT_OPTIONS:MLLDB}
+COMMANDS+= ${LLDB_COMMANDS}
+.endif
+
+MAN1SRCS+= bugpoint.1 dsymutil.1 llc.1 lli.1 llvm-ar.1 llvm-as.1 \
+ llvm-bcanalyzer.1 llvm-build.1 llvm-config.1 llvm-cov.1 \
+ llvm-diff.1 llvm-dis.1 llvm-dwarfdump.1 \
+ llvm-extract.1 llvm-lib.1 llvm-link.1 llvm-nm.1 \
+ llvm-pdbutil.1 \
+ llvm-profdata.1 llvm-readobj.1 llvm-stress.1 llvm-symbolizer.1 \
+ opt.1 tblgen.1
+
+.include <bsd.port.pre.mk>
+.include "${.CURDIR}/Makefile.COMMANDS"
+
+.if ${ARCH} == "amd64"
+_COMPILER_RT_LIBS= \
+ libclang_rt.asan-preinit-x86_64.a \
+ libclang_rt.asan-x86_64.a \
+ libclang_rt.asan-x86_64.a.syms \
+ libclang_rt.asan-x86_64.so \
+ libclang_rt.asan_cxx-x86_64.a \
+ libclang_rt.asan_cxx-x86_64.a.syms \
+ libclang_rt.builtins-x86_64.a \
+ libclang_rt.dd-x86_64.a \
+ libclang_rt.dyndd-x86_64.so \
+ libclang_rt.lsan-x86_64.a \
+ libclang_rt.profile-x86_64.a \
+ libclang_rt.safestack-x86_64.a \
+ libclang_rt.stats-x86_64.a \
+ libclang_rt.stats_client-x86_64.a \
+ libclang_rt.tsan-x86_64.a \
+ libclang_rt.tsan-x86_64.a.syms \
+ libclang_rt.tsan_cxx-x86_64.a \
+ libclang_rt.tsan_cxx-x86_64.a.syms \
+ libclang_rt.ubsan_minimal-x86_64.a \
+ libclang_rt.ubsan_minimal-x86_64.a.syms \
+ libclang_rt.ubsan_minimal-x86_64.so \
+ libclang_rt.ubsan_standalone-x86_64.a \
+ libclang_rt.ubsan_standalone-x86_64.a.syms \
+ libclang_rt.ubsan_standalone-x86_64.so \
+ libclang_rt.ubsan_standalone_cxx-x86_64.a \
+ libclang_rt.ubsan_standalone_cxx-x86_64.a.syms
+.endif
+.if ${ARCH} == "i386"
+_COMPILER_RT_LIBS+= \
+ libclang_rt.asan-i386.a \
+ libclang_rt.asan-i386.so \
+ libclang_rt.asan-preinit-i386.a \
+ libclang_rt.asan_cxx-i386.a \
+ libclang_rt.builtins-i386.a \
+ libclang_rt.lsan-i386.a \
+ libclang_rt.profile-i386.a \
+ libclang_rt.safestack-i386.a \
+ libclang_rt.stats-i386.a \
+ libclang_rt.stats_client-i386.a \
+ libclang_rt.ubsan_minimal-i386.a \
+ libclang_rt.ubsan_minimal-i386.so \
+ libclang_rt.ubsan_standalone-i386.a \
+ libclang_rt.ubsan_standalone-i386.so \
+ libclang_rt.ubsan_standalone_cxx-i386.a
+.endif
+
+# Use lld for armv6 on clang 7 and up to avoid binutils ld issues
+# PR: 235282
+.if ${COMPILER_TYPE} == clang && ${COMPILER_VERSION} >= 70
+LDFLAGS_armv6=-fuse-ld=lld
+.endif
+
+.if ${ARCH} == "armv6"
+BUILD_DEPENDS+= ${LOCALBASE}/bin/ld:devel/binutils
+CONFIGURE_ENV+= COMPILER_PATH=${LOCALBASE}/bin
+MAKE_ENV+= COMPILER_PATH=${LOCALBASE}/bin
+.endif
+
+.if ! ${OPTIONS_DEFINE:MCOMPILER_RT}
+# Hack to disable COMPILER_RT in plist of unsupported architectures
+PLIST_SUB+= COMPILER_RT="@comment "
+.else
+.endif
+
+.if ! ${OPTIONS_DEFINE:MGOLD}
+# Hack to disable GOLD in plist of unsupported architectures
+PLIST_SUB+= GOLD="@comment "
+.else
+.endif
+
+.if ! ${OPTIONS_DEFINE:MOPENMP}
+# Hack to disable OPENMP in plist of unsupported architectures
+PLIST_SUB+= OPENMP="@comment "
+.else
+.endif
+
+post-extract-CLANG-on:
+ ${MV} ${WRKSRC_clang} ${PATCH_WRKSRC}/tools/clang
+
+post-extract-EXTRAS-on:
+ ${MV} ${WRKSRC_extras} ${PATCH_WRKSRC}/tools/clang/tools/extra
+
+post-extract-LLD-on:
+ ${MV} ${WRKSRC_lld} ${PATCH_WRKSRC}/tools/lld
+
+post-extract-LLDB-on:
+ ${MV} ${WRKSRC_lldb} ${PATCH_WRKSRC}/tools/lldb
+
+post-extract-OPENMP-on:
+ ${MV} ${WRKSRC_openmp} ${PATCH_WRKSRC}/projects/openmp
+
+post-patch:
+ ${REINPLACE_CMD} -e 's|import lit|import lit${LLVM_SUFFIX}|' \
+ -e 's|from lit|from lit${LLVM_SUFFIX}|' \
+ -e 's|lit\.|lit${LLVM_SUFFIX}.|' \
+ ${WRKSRC}/utils/lit/lit.py ${WRKSRC}/utils/lit/lit/*.py \
+ ${WRKSRC}/utils/lit/lit/formats/*.py
+ ${REINPLACE_CMD} -e 's,/usr/local/,${LOCALBASE}/,' \
+ ${WRKSRC}/CMakeLists.txt
+
+post-patch-CLANG-on:
+ ${REINPLACE_CMD} -e 's|%%LLVM_PREFIX%%|${LLVM_PREFIX}|' \
+ ${PATCH_WRKSRC}/tools/clang/lib/Driver/ToolChains/CommonArgs.cpp
+ ${REINPLACE_CMD} -e 's|%%LLVM_SUFFIX%%|${LLVM_SUFFIX}|' \
+ ${PATCH_WRKSRC}/tools/clang/tools/clang-format/clang-format.py \
+ ${PATCH_WRKSRC}/tools/clang/tools/clang-format/clang-format-sublime.py \
+ ${PATCH_WRKSRC}/tools/clang/tools/clang-format/git-clang-format
+
+post-patch-LLD-on:
+ ${REINPLACE_CMD} -e "s|'indexsidebar.html'|['indexsidebar.html']|" \
+ ${PATCH_WRKSRC}/tools/lld/docs/conf.py
+
+post-build-COMPILER_RT-on:
+ ${MKDIR} ${WRKDIR}/compiler-rt-build
+ cd ${WRKDIR}/compiler-rt-build && \
+ ${SETENV} ${CONFIGURE_ENV} ${CMAKE_BIN} ${CMAKE_ARGS} \
+ -DLLVM_CONFIG_PATH=${CONFIGURE_WRKSRC}/bin/llvm-config \
+ ${WRKSRC_compiler_rt} && \
+ ${MAKE_ENV} ${MAKE_CMD}
+
+post-install:
+ ${RM} -r ${STAGEDIR}${LLVM_PREFIX}/include/llvm/MC/MCAnalysis
+ ${INSTALL_SCRIPT} ${WRKDIR}/llvm-wrapper.sh \
+ ${STAGEDIR}${PREFIX}/bin/${FIRST_COMMAND}${LLVM_SUFFIX}
+.for command in ${COMMANDS:C/^/XXXX/1:NXXXX*}
+ ${LN} -f ${STAGEDIR}${PREFIX}/bin/${FIRST_COMMAND}${LLVM_SUFFIX} \
+ ${STAGEDIR}${PREFIX}/bin/${command}${LLVM_SUFFIX}
+.endfor
+
+post-install-DOCS-on:
+ ${MV} ${STAGEDIR}${LLVM_PREFIX}/share/doc ${STAGEDIR}${DOCSDIR}
+.for _man in ${MAN1SRCS}
+ ${MV} ${STAGEDIR}${LLVM_PREFIX}/share/man/man1/${_man} \
+ ${STAGEDIR}${MANPREFIX}/man/man1/${_man:R}${LLVM_SUFFIX}.1
+.endfor
+.if ! ${PORT_OPTIONS:MLIT}
+ ${RM} ${STAGEDIR}${LLVM_PREFIX}/share/man/man1/lit.1
+ ${RM} ${STAGEDIR}${LLVM_PREFIX}/share/man/man1/FileCheck.1
+.endif
+ ${RMDIR} ${STAGEDIR}${LLVM_PREFIX}/share/man/man1/
+ ${RMDIR} ${STAGEDIR}${LLVM_PREFIX}/share/man/
+
+.if ${PORT_OPTIONS:MCLANG}
+post-install-DOCS-off:
+ ${RM} ${STAGEDIR}${LLVM_PREFIX}/share/man/man1/scan-build.1
+ ${RMDIR} ${STAGEDIR}${LLVM_PREFIX}/share/man/man1/
+ ${RMDIR} ${STAGEDIR}${LLVM_PREFIX}/share/man/
+.endif
+
+post-install-LLD-on:
+ ${RMDIR} ${STAGEDIR}${LLVM_PREFIX}/include/llvm/BinaryFormat/WasmRelocs
+
+post-install-LLDB-on:
+ ${RMDIR} ${STAGEDIR}${LLVM_PREFIX}/include/lldb/Host/windows/getopt
+ ${RMDIR} ${STAGEDIR}${LLVM_PREFIX}/include/lldb/Host/mingw
+ ${RMDIR} ${STAGEDIR}${LLVM_PREFIX}/include/lldb/Host/msvc
+
+post-install-CLANG-on:
+ ${LN} -f ${STAGEDIR}${LLVM_PREFIX}/bin/clang \
+ ${STAGEDIR}${LLVM_PREFIX}/bin/clang-cpp
+ ${INSTALL_PROGRAM} ${WRKDIR}/.build/bin/clang-tblgen \
+ ${STAGEDIR}${LLVM_PREFIX}/bin/
+
+post-install-COMPILER_RT-on:
+ cd ${WRKDIR}/compiler-rt-build && \
+ ${MAKE_ENV} ${MAKE_CMD} ${INSTALL_TARGET}
+.if ${ARCH} == "amd64"
+ ${RM} ${STAGEDIR}${LLVM_PREFIX}/lib/freebsd/libclang_rt*i386*
+.endif
+ ${MKDIR} ${STAGEDIR}${PREFIX}/${_CRTLIBDIR}
+ ${MV} ${STAGEDIR}${LLVM_PREFIX}/lib/freebsd/* \
+ ${STAGEDIR}${PREFIX}/${_CRTLIBDIR}
+ ${RMDIR} ${STAGEDIR}${LLVM_PREFIX}/lib/freebsd
+
+post-install-LIT-on:
+ ${INSTALL_SCRIPT} ${PATCH_WRKSRC}/utils/lit/lit.py \
+ ${STAGEDIR}${LLVM_PREFIX}/bin/lit
+ ${LN} -f ${STAGEDIR}${LLVM_PREFIX}/bin/lit \
+ ${STAGEDIR}${LLVM_PREFIX}/bin/llvm-lit
+ ${LN} -f ${STAGEDIR}${LLVM_PREFIX}/bin/lit \
+ ${STAGEDIR}${PREFIX}/bin/lit${LLVM_SUFFIX}
+ ${LN} -f ${STAGEDIR}${LLVM_PREFIX}/bin/lit \
+ ${STAGEDIR}${PREFIX}/bin/llvm-lit${LLVM_SUFFIX}
+ ${MKDIR} ${STAGEDIR}${PYTHONPREFIX_SITELIBDIR}/lit${LLVM_SUFFIX}
+ ${MKDIR} ${STAGEDIR}${PYTHONPREFIX_SITELIBDIR}/lit${LLVM_SUFFIX}/formats
+ ${INSTALL_DATA} ${WRKSRC}/utils/lit/lit/*.py \
+ ${STAGEDIR}${PYTHONPREFIX_SITELIBDIR}/lit${LLVM_SUFFIX}
+ ${INSTALL_DATA} ${WRKSRC}/utils/lit/lit/formats/*.py \
+ ${STAGEDIR}${PYTHONPREFIX_SITELIBDIR}/lit${LLVM_SUFFIX}/formats
+ ${INSTALL_PROGRAM} ${WRKDIR}/.build/bin/FileCheck \
+ ${STAGEDIR}${LLVM_PREFIX}/bin/
+ ${LN} -f ${STAGEDIR}${LLVM_PREFIX}/bin/FileCheck \
+ ${STAGEDIR}${PREFIX}/bin/FileCheck${LLVM_SUFFIX}
+
+TEST_CMD= '(cd ${WRKSRC}/test; ${SETENV} ${MAKE_ENV} LD_LIBRARY_PATH=${WRKSRC}/Release/lib ${MAKE_CMD} check-local-lit)'
+do-test:
+ if [ `${ID} -u` = 0 ]; then \
+ ${CHOWN} -R nobody ${WRKSRC}/test; \
+ su -m nobody -c ${TEST_CMD}; \
+ else \
+ ${SH} -c ${TEST_CMD}; \
+ fi
+
+build-plist:
+ ${RM} ${PLIST} ${PLIST}.tmp
+ ${ECHO_CMD} "@comment >>>>> GENERATED FILE, DO NOT EDIT <<<<<" >> ${PLIST}.tmp
+ ${ECHO_CMD} "@comment Alter build-plist target and regenerate as required" >> ${PLIST}.tmp
+.for command in ${COMMANDS}
+ ${ECHO_CMD} bin/${command}%%LLVM_SUFFIX%% >> ${PLIST}.tmp
+.endfor
+.for command in ${LIT_COMMANDS}
+ ${ECHO_CMD} %%LIT%%bin/${command}%%LLVM_SUFFIX%% >> ${PLIST}.tmp
+ ${ECHO_CMD} %%LIT%%${LLVM_PREFIX:S|${PREFIX}/||:C|${LLVM_SUFFIX}|%%LLVM_SUFFIX%%|}/bin/${command} >> ${PLIST}.tmp
+.endfor
+
+ ${FIND} ${STAGEDIR}${LLVM_PREFIX} -type f -o -type l | \
+ ${GREP} -v '[/-]lit$$' | ${GREP} -v 'FileCheck$$' | \
+ ${GREP} -v man/man1 | ${SED} -e 's|${STAGEDIR}${PREFIX}/||' \
+ -e 's|${PYTHON_SITELIBDIR:C|${PREFIX}/||}|%%PYTHON_SITELIBDIR%%|' \
+ -e 's|${LLVM_RELEASE}|%%LLVM_RELEASE%%|' \
+ -e 's|release.cmake|%%CMAKE_BUILD_TYPE%%.cmake|' \
+ -e 's|${LLVM_RELEASE:C/\./\\./g}|%%LLVM_RELEASE%%|' \
+ -e 's|${LLVM_MAJOR:C/\./\\./}|%%LLVM_MAJOR%%|' \
+ -e 's|${LLVM_MAJOR:C/\.//}|%%LLVM_LIB_VER%%|' \
+ | ${SORT} >> ${PLIST}.tmp
+ ${FIND} ${STAGEDIR}${PYTHON_SITELIBDIR}/lit${LLVM_SUFFIX} -type f | \
+ ${SED} -e 's|${STAGEDIR}${PYTHON_SITELIBDIR}|%%LIT%%%%PYTHON_SITELIBDIR%%|' \
+ -e 's|${LLVM_RELEASE:C/\./\\./g}|%%LLVM_RELEASE%%|' \
+ -e 's|${LLVM_MAJOR:C/\./\\./}|%%LLVM_MAJOR%%|' \
+ -e 's|lit${LLVM_SUFFIX}|lit%%LLVM_SUFFIX%%|' | \
+ ${SORT} >> ${PLIST}.tmp
+ ${AWK} '{ \
+ if ($$0 ~ /${CLANG_PATTERN}/ && $$0 !~ /(omp.h|ompt.h|${EXTRAS_PATTERN}|libclang_rt)/) {printf "%%%%CLANG%%%%"} \
+ if ($$0 ~ /${COMPILER_RT_PATTERN}/) \
+ {printf "%%%%COMPILER_RT%%%%"} \
+ if ($$0 ~ /(${EXTRAS_PATTERN})/) {printf "%%%%EXTRAS%%%%"} \
+ if ($$0 ~ /lld|wasm-ld/ && $$0 !~ /lldb/) {printf "%%%%LLD%%%%"} \
+ if ($$0 ~ /(argdumper|lldb|six.py)/) {printf "%%%%LLDB%%%%"} \
+ if ($$0 ~ /lib.*omp|omp.h|ompt.h/) {printf "%%%%OPENMP%%%%"} \
+ if ($$0 ~ /LLVMgold/) {printf "%%%%GOLD%%%%"} \
+ if ($$0 !~ /libclang_rt/) {print}}' ${PLIST}.tmp >> ${PLIST}
+ ${ECHO_CMD} '@postexec if type ccache-update-links >/dev/null 2>&1; then ccache-update-links -v; fi' >> ${PLIST}
+ ${ECHO_CMD} '@postunexec if type ccache-update-links >/dev/null 2>&1; then ccache-update-links -v; fi' >> ${PLIST}
+ ${RM} ${PLIST}.tmp
+
+check-commands:
+.for command in ${COMMANDS}
+ test -e ${STAGEDIR}${LLVM_PREFIX}/bin/${command}
+.endfor
+
+.include <bsd.port.post.mk>
diff --git a/devel/llvm60/Makefile.COMMANDS b/devel/llvm60/Makefile.COMMANDS
new file mode 100644
index 000000000000..8ffdaacb1c29
--- /dev/null
+++ b/devel/llvm60/Makefile.COMMANDS
@@ -0,0 +1,90 @@
+# $FreeBSD$
+
+LLVM_COMMANDS= \
+ bugpoint \
+ llc \
+ lli \
+ llvm-ar \
+ llvm-as \
+ llvm-bcanalyzer \
+ llvm-cat \
+ llvm-cfi-verify \
+ llvm-config \
+ llvm-cov \
+ llvm-cvtres \
+ llvm-diff \
+ llvm-dis \
+ llvm-dlltool \
+ llvm-dwarfdump \
+ llvm-dwp \
+ llvm-extract \
+ llvm-link \
+ llvm-mc \
+ llvm-mcmarkup \
+ llvm-modextract \
+ llvm-mt \
+ llvm-nm \
+ llvm-objcopy \
+ llvm-objdump \
+ llvm-opt-report \
+ llvm-pdbutil \
+ llvm-profdata \
+ llvm-ranlib \
+ llvm-rc \
+ llvm-readelf \
+ llvm-readobj \
+ llvm-rtdyld \
+ llvm-size \
+ llvm-split \
+ llvm-stress \
+ llvm-strings \
+ llvm-symbolizer \
+ llvm-tblgen \
+ macho-dump \
+ opt \
+ sancov
+
+CLANG_COMMANDS= \
+ c-index-test \
+ clang \
+ clang++ \
+ clang-check \
+ clang-cpp \
+ clang-format \
+ clang-func-mapping \
+ clang-import-test \
+ clang-offload-bundler \
+ scan-build \
+ scan-view
+
+EXTRAS_COMMANDS= \
+ clang-apply-replacements \
+ clang-change-namespace \
+ clang-include-fixer \
+ clang-modernize \
+ clang-query \
+ clang-rename \
+ clang-reorder-fields \
+ clang-tidy \
+ clangd \
+ find-all-symbols \
+ modularize
+
+LIT_COMMANDS= \
+ FileCheck \
+ lit \
+ llvm-lit
+
+LLD_COMMANDS= \
+ ld.lld \
+ ld64.lld \
+ lld \
+ lld-link \
+ wasm-ld
+
+LLDB_COMMANDS= \
+ lldb \
+ lldb-argdumper \
+ lldb-mi \
+ lldb-server \
+ lldb-test
diff --git a/devel/llvm60/distinfo b/devel/llvm60/distinfo
new file mode 100644
index 000000000000..cf083ca19108
--- /dev/null
+++ b/devel/llvm60/distinfo
@@ -0,0 +1,15 @@
+TIMESTAMP = 1530117803
+SHA256 (llvm-6.0.1.src.tar.xz) = b6d6c324f9c71494c0ccaf3dac1f16236d970002b42bb24a6c9e1634f7d0f4e2
+SIZE (llvm-6.0.1.src.tar.xz) = 25306628
+SHA256 (cfe-6.0.1.src.tar.xz) = 7c243f1485bddfdfedada3cd402ff4792ea82362ff91fbdac2dae67c6026b667
+SIZE (cfe-6.0.1.src.tar.xz) = 11905772
+SHA256 (compiler-rt-6.0.1.src.tar.xz) = f4cd1e15e7d5cb708f9931d4844524e4904867240c306b06a4287b22ac1c99b9
+SIZE (compiler-rt-6.0.1.src.tar.xz) = 1686820
+SHA256 (clang-tools-extra-6.0.1.src.tar.xz) = 0d2e3727786437574835b75135f9e36f861932a958d8547ced7e13ebdda115f1
+SIZE (clang-tools-extra-6.0.1.src.tar.xz) = 757256
+SHA256 (lld-6.0.1.src.tar.xz) = e706745806921cea5c45700e13ebe16d834b5e3c0b7ad83bf6da1f28b0634e11
+SIZE (lld-6.0.1.src.tar.xz) = 787804
+SHA256 (lldb-6.0.1.src.tar.xz) = 6b8573841f2f7b60ffab9715c55dceff4f2a44e5a6d590ac189d20e8e7472714
+SIZE (lldb-6.0.1.src.tar.xz) = 19292420
+SHA256 (openmp-6.0.1.src.tar.xz) = 66afca2b308351b180136cf899a3b22865af1a775efaf74dc8a10c96d4721c5a
+SIZE (openmp-6.0.1.src.tar.xz) = 2048320
diff --git a/devel/llvm60/files/clang/patch-fformat_extensions.diff b/devel/llvm60/files/clang/patch-fformat_extensions.diff
new file mode 100644
index 000000000000..69093d923b6f
--- /dev/null
+++ b/devel/llvm60/files/clang/patch-fformat_extensions.diff
@@ -0,0 +1,44 @@
+diff -ruN tools/clang/include/clang/Basic/LangOptions.def tools/clang/include/clang/Basic/LangOptions.def
+--- tools/clang/include/clang/Basic/LangOptions.def 2015-07-30 22:47:41 UTC
++++ tools/clang/include/clang/Basic/LangOptions.def
+@@ -114,6 +114,7 @@
+ LANGOPT(RTTIData , 1, 1, "emit run-time type information data")
+ LANGOPT(MSBitfields , 1, 0, "Microsoft-compatible structure layout")
+ LANGOPT(Freestanding, 1, 0, "freestanding implementation")
++LANGOPT(FormatExtensions , 1, 0, "FreeBSD format extensions")
+ LANGOPT(NoBuiltin , 1, 0, "disable builtin functions")
+ LANGOPT(NoMathBuiltin , 1, 0, "disable math builtin functions")
+ LANGOPT(GNUAsm , 1, 1, "GNU-style inline assembly")
+diff -ruN tools/clang/include/clang/Driver/Options.td tools/clang/include/clang/Driver/Options.td
+--- tools/clang/include/clang/Driver/Options.td 2015-07-30 22:47:41 UTC
++++ tools/clang/include/clang/Driver/Options.td
+@@ -644,6 +644,8 @@
+
+ def ffreestanding : Flag<["-"], "ffreestanding">, Group<f_Group>, Flags<[CC1Option]>,
+ HelpText<"Assert that the compilation takes place in a freestanding environment">;
++def fformat_extensions: Flag<["-"], "fformat-extensions">, Group<f_Group>, Flags<[CC1Option]>,
++ HelpText<"Enable FreeBSD kernel specific format string extensions">;
+ def fgnu_keywords : Flag<["-"], "fgnu-keywords">, Group<f_Group>, Flags<[CC1Option]>,
+ HelpText<"Allow GNU-extension keywords regardless of language standard">;
+ def fgnu89_inline : Flag<["-"], "fgnu89-inline">, Group<f_Group>, Flags<[CC1Option]>,
+--- tools/clang/lib/Driver/ToolChains/Clang.cpp.orig 2017-09-14 19:36:28.212240000 +0100
++++ tools/clang/lib/Driver/ToolChains/Clang.cpp 2017-09-14 19:35:59.296165000 +0100
+@@ -3202,6 +3202,7 @@
+
+ // Forward -f (flag) options which we can pass directly.
+ Args.AddLastArg(CmdArgs, options::OPT_femit_all_decls);
++ Args.AddLastArg(CmdArgs, options::OPT_fformat_extensions);
+ Args.AddLastArg(CmdArgs, options::OPT_fheinous_gnu_extensions);
+ Args.AddLastArg(CmdArgs, options::OPT_fno_operator_names);
+ // Emulated TLS is enabled by default on Android and OpenBSD, and can be enabled
+diff -ruN tools/clang/lib/Frontend/CompilerInvocation.cpp tools/clang/lib/Frontend/CompilerInvocation.cpp
+--- tools/clang/lib/Frontend/CompilerInvocation.cpp 2015-07-30 22:47:41 UTC
++++ tools/clang/lib/Frontend/CompilerInvocation.cpp
+@@ -1543,6 +1543,7 @@
+ Opts.ShortWChar = Args.hasFlag(OPT_fshort_wchar, OPT_fno_short_wchar, false);
+ Opts.ShortEnums = Args.hasArg(OPT_fshort_enums);
+ Opts.Freestanding = Args.hasArg(OPT_ffreestanding);
++ Opts.FormatExtensions = Args.hasArg(OPT_fformat_extensions);
+ Opts.NoBuiltin = Args.hasArg(OPT_fno_builtin) || Opts.Freestanding;
+ Opts.NoMathBuiltin = Args.hasArg(OPT_fno_math_builtin);
+ Opts.AssumeSaneOperatorNew = !Args.hasArg(OPT_fno_assume_sane_operator_new);
diff --git a/devel/llvm60/files/clang/patch-fopenmp.diff b/devel/llvm60/files/clang/patch-fopenmp.diff
new file mode 100644
index 000000000000..18932bd0d19c
--- /dev/null
+++ b/devel/llvm60/files/clang/patch-fopenmp.diff
@@ -0,0 +1,14 @@
+--- tools/clang/lib/Driver/ToolChains/CommonArgs.cpp.orig 2017-05-10 17:18:56.000000000 +0000
++++ tools/clang/lib/Driver/ToolChains/CommonArgs.cpp 2017-05-10 23:01:17.087686000 +0000
+@@ -441,7 +441,10 @@
+
+ switch (TC.getDriver().getOpenMPRuntime(Args)) {
+ case Driver::OMPRT_OMP:
+- CmdArgs.push_back("-lomp");
++ if (TC.getTriple().getOS() != llvm::Triple::FreeBSD || TC.isCrossCompiling() || !llvm::sys::fs::exists("%%LLVM_PREFIX%%/lib/libomp.so"))
++ CmdArgs.push_back("-lomp");
++ else
++ CmdArgs.push_back("%%LLVM_PREFIX%%/lib/libomp.so");
+ break;
+ case Driver::OMPRT_GOMP:
+ CmdArgs.push_back("-lgomp");
diff --git a/devel/llvm60/files/clang/patch-head-r331066.diff b/devel/llvm60/files/clang/patch-head-r331066.diff
new file mode 100644
index 000000000000..7296a087bfb0
--- /dev/null
+++ b/devel/llvm60/files/clang/patch-head-r331066.diff
@@ -0,0 +1,40 @@
+r331066 | dim | 2018-03-16 19:04:13 +0100 (Fri, 16 Mar 2018) | 19 lines
+
+Pull in r321999 from upstream clang trunk (by Ivan A. Kosarev):
+
+ [CodeGen] Fix TBAA info for accesses to members of base classes
+
+ Resolves:
+ Bug 35724 - regression (r315984): fatal error: error in backend:
+ Broken function found (Did not see access type in access path!)
+ https://bugs.llvm.org/show_bug.cgi?id=35724
+
+ Differential Revision: https://reviews.llvm.org/D41547
+
+This fixes "Did not see access type in access path" fatal errors when
+building the devel/gdb port (version 8.1).
+
+Reported by: jbeich
+PR: 226658
+MFC after: 3 months
+X-MFC-With: r327952
+
+Index: tools/clang/lib/CodeGen/CGExpr.cpp
+===================================================================
+--- tools/clang/lib/CodeGen/CGExpr.cpp (revision 331065)
++++ tools/clang/lib/CodeGen/CGExpr.cpp (revision 331066)
+@@ -1034,8 +1034,12 @@ Address CodeGenFunction::EmitPointerWithAlignment(
+ // Derived-to-base conversions.
+ case CK_UncheckedDerivedToBase:
+ case CK_DerivedToBase: {
+- Address Addr = EmitPointerWithAlignment(CE->getSubExpr(), BaseInfo,
+- TBAAInfo);
++ // TODO: Support accesses to members of base classes in TBAA. For now, we
++ // conservatively pretend that the complete object is of the base class
++ // type.
++ if (TBAAInfo)
++ *TBAAInfo = CGM.getTBAAAccessInfo(E->getType());
++ Address Addr = EmitPointerWithAlignment(CE->getSubExpr(), BaseInfo);
+ auto Derived = CE->getSubExpr()->getType()->getPointeeCXXRecordDecl();
+ return GetAddressOfBaseClass(Addr, Derived,
+ CE->path_begin(), CE->path_end(),
diff --git a/devel/llvm60/files/clang/patch-head-r336227.diff b/devel/llvm60/files/clang/patch-head-r336227.diff
new file mode 100644
index 000000000000..fd543dc38489
--- /dev/null
+++ b/devel/llvm60/files/clang/patch-head-r336227.diff
@@ -0,0 +1,42 @@
+r336227 | dim | 2018-07-12 21:02:59 +0200 (Thu, 12 Jul 2018) | 27 lines
+
+Pull in r336008 from upstream clang trunk:
+
+ Request init/fini array on FreeBSD 12 and later
+
+ Summary:
+
+ It seems a bad idea to change the default in the middle of a release
+ branch due to possible changes in global ctor / dtor ordering between
+ .ctors and .init_array. With FreeBSD 11.0's release imminent lets
+ change the default now for FreeBSD 12 (the current development
+ stream) and later.
+
+ FreeBSD rtld has supported .init_array / .fini_array for many years.
+ As of Jan 1 2017 all supported FreeBSD releases and branches will
+ have support.
+
+ Reviewers: dim, brooks, arichardson
+
+ Reviewed By: dim, brooks, arichardson
+
+ Subscribers: bsdjhb, krytarowski, emaste, cfe-commits
+
+ Differential Revision: https://reviews.llvm.org/D24867
+
+Requested by: jhb
+MFC after: 3 days
+
+Index: tools/clang/lib/Driver/ToolChains/Gnu.cpp
+===================================================================
+--- tools/clang/lib/Driver/ToolChains/Gnu.cpp (revision 336226)
++++ tools/clang/lib/Driver/ToolChains/Gnu.cpp (revision 336227)
+@@ -2375,6 +2375,8 @@ void Generic_ELF::addClangTargetOptions(const ArgL
+ bool UseInitArrayDefault =
+ getTriple().getArch() == llvm::Triple::aarch64 ||
+ getTriple().getArch() == llvm::Triple::aarch64_be ||
++ (getTriple().getOS() == llvm::Triple::FreeBSD &&
++ getTriple().getOSMajorVersion() >= 12) ||
+ (getTriple().getOS() == llvm::Triple::Linux &&
+ ((!GCCInstallation.isValid() || !V.isOlderThan(4, 7, 0)) ||
+ getTriple().isAndroid())) ||
diff --git a/devel/llvm60/files/clang/patch-head-r338697.diff b/devel/llvm60/files/clang/patch-head-r338697.diff
new file mode 100644
index 000000000000..eb7f11e83fcf
--- /dev/null
+++ b/devel/llvm60/files/clang/patch-head-r338697.diff
@@ -0,0 +1,104 @@
+r338697 | dim | 2018-09-15 23:22:50 +0200 (Sat, 15 Sep 2018) | 21 lines
+
+Pull in r325478 from upstream clang trunk (by Ivan A. Kosarev):
+
+ [CodeGen] Initialize large arrays by copying from a global
+
+ Currently, clang compiles explicit initializers for array elements
+ into series of store instructions. For large arrays of built-in types
+ this results in bloated output code and significant amount of time
+ spent on the instruction selection phase. This patch fixes the issue
+ by initializing such arrays with global constants that store the
+ binary image of the initializer.
+
+ Differential Revision: https://reviews.llvm.org/D43181
+
+This should fix a compiler hang (and excessive memory usage) while
+building the science/rmg port.
+
+Approved by: re (kib)
+Reported by: yuri@tsoft.com
+See also: https://bugs.llvm.org/show_bug.cgi?id=38798
+MFC after: 3 days
+
+Index: tools/clang/lib/CodeGen/CGExprAgg.cpp
+===================================================================
+--- tools/clang/lib/CodeGen/CGExprAgg.cpp (revision 338696)
++++ tools/clang/lib/CodeGen/CGExprAgg.cpp (revision 338697)
+@@ -14,6 +14,7 @@
+ #include "CodeGenFunction.h"
+ #include "CGObjCRuntime.h"
+ #include "CodeGenModule.h"
++#include "ConstantEmitter.h"
+ #include "clang/AST/ASTContext.h"
+ #include "clang/AST/DeclCXX.h"
+ #include "clang/AST/DeclTemplate.h"
+@@ -85,7 +86,7 @@ class AggExprEmitter : public StmtVisitor<AggExprE
+ void EmitMoveFromReturnSlot(const Expr *E, RValue Src);
+
+ void EmitArrayInit(Address DestPtr, llvm::ArrayType *AType,
+- QualType elementType, InitListExpr *E);
++ QualType ArrayQTy, InitListExpr *E);
+
+ AggValueSlot::NeedsGCBarriers_t needsGC(QualType T) {
+ if (CGF.getLangOpts().getGC() && TypeRequiresGCollection(T))
+@@ -392,12 +393,15 @@ static bool isTrivialFiller(Expr *E) {
+
+ /// \brief Emit initialization of an array from an initializer list.
+ void AggExprEmitter::EmitArrayInit(Address DestPtr, llvm::ArrayType *AType,
+- QualType elementType, InitListExpr *E) {
++ QualType ArrayQTy, InitListExpr *E) {
+ uint64_t NumInitElements = E->getNumInits();
+
+ uint64_t NumArrayElements = AType->getNumElements();
+ assert(NumInitElements <= NumArrayElements);
+
++ QualType elementType =
++ CGF.getContext().getAsArrayType(ArrayQTy)->getElementType();
++
+ // DestPtr is an array*. Construct an elementType* by drilling
+ // down a level.
+ llvm::Value *zero = llvm::ConstantInt::get(CGF.SizeTy, 0);
+@@ -409,6 +413,29 @@ void AggExprEmitter::EmitArrayInit(Address DestPtr
+ CharUnits elementAlign =
+ DestPtr.getAlignment().alignmentOfArrayElement(elementSize);
+
++ // Consider initializing the array by copying from a global. For this to be
++ // more efficient than per-element initialization, the size of the elements
++ // with explicit initializers should be large enough.
++ if (NumInitElements * elementSize.getQuantity() > 16 &&
++ elementType.isTriviallyCopyableType(CGF.getContext())) {
++ CodeGen::CodeGenModule &CGM = CGF.CGM;
++ ConstantEmitter Emitter(CGM);
++ LangAS AS = ArrayQTy.getAddressSpace();
++ if (llvm::Constant *C = Emitter.tryEmitForInitializer(E, AS, ArrayQTy)) {
++ auto GV = new llvm::GlobalVariable(
++ CGM.getModule(), C->getType(),
++ CGM.isTypeConstant(ArrayQTy, /* ExcludeCtorDtor= */ true),
++ llvm::GlobalValue::PrivateLinkage, C, "constinit",
++ /* InsertBefore= */ nullptr, llvm::GlobalVariable::NotThreadLocal,
++ CGM.getContext().getTargetAddressSpace(AS));
++ Emitter.finalize(GV);
++ CharUnits Align = CGM.getContext().getTypeAlignInChars(ArrayQTy);
++ GV->setAlignment(Align.getQuantity());
++ EmitFinalDestCopy(ArrayQTy, CGF.MakeAddrLValue(GV, ArrayQTy, Align));
++ return;
++ }
++ }
++
+ // Exception safety requires us to destroy all the
+ // already-constructed members if an initializer throws.
+ // For that, we'll need an EH cleanup.
+@@ -1156,11 +1183,8 @@ void AggExprEmitter::VisitInitListExpr(InitListExp
+
+ // Handle initialization of an array.
+ if (E->getType()->isArrayType()) {
+- QualType elementType =
+- CGF.getContext().getAsArrayType(E->getType())->getElementType();
+-
+ auto AType = cast<llvm::ArrayType>(Dest.getAddress().getElementType());
+- EmitArrayInit(Dest.getAddress(), AType, elementType, E);
++ EmitArrayInit(Dest.getAddress(), AType, E->getType(), E);
+ return;
+ }
+
diff --git a/devel/llvm60/files/clang/patch-head-r339019.diff b/devel/llvm60/files/clang/patch-head-r339019.diff
new file mode 100644
index 000000000000..240772d184c2
--- /dev/null
+++ b/devel/llvm60/files/clang/patch-head-r339019.diff
@@ -0,0 +1,30 @@
+r339019 | emaste | 2018-09-29 22:01:23 +0200 (Sat, 29 Sep 2018) | 15 lines
+
+clang: allow ifunc resolvers to accept arguments
+
+Previously Clang required ifunc resolution functions to take no
+arguments, presumably because GCC documented ifunc resolvers as taking
+no arguments. However, GCC accepts resolvers accepting arguments, and
+our rtld passes CPU ID information (cpuid, hwcap, etc.) to ifunc
+resolvers. Just remove the check from the in-tree compiler for our in-
+tree compiler; a different (per-OS) approach may be required upstream.
+
+Reported by: mjg
+Approved by: re (rgrimes)
+MFC after: 1 week
+Relnotes: Yes
+Sponsored by: The FreeBSD Foundation
+
+Index: tools/clang/lib/CodeGen/CodeGenModule.cpp
+===================================================================
+--- tools/clang/lib/CodeGen/CodeGenModule.cpp (revision 339018)
++++ tools/clang/lib/CodeGen/CodeGenModule.cpp (revision 339019)
+@@ -321,8 +321,6 @@ void CodeGenModule::checkAliases() {
+ assert(FTy);
+ if (!FTy->getReturnType()->isPointerTy())
+ Diags.Report(Location, diag::err_ifunc_resolver_return);
+- if (FTy->getNumParams())
+- Diags.Report(Location, diag::err_ifunc_resolver_params);
+ }
+
+ llvm::Constant *Aliasee = Alias->getIndirectSymbol();
diff --git a/devel/llvm60/files/clang/patch-stable12-r342281.diff b/devel/llvm60/files/clang/patch-stable12-r342281.diff
new file mode 100644
index 000000000000..4a6e9f615889
--- /dev/null
+++ b/devel/llvm60/files/clang/patch-stable12-r342281.diff
@@ -0,0 +1,834 @@
+r342281 | dim | 2018-12-20 19:28:53 +0100 (Thu, 20 Dec 2018) | 24 lines
+
+Pull in r329671 from upstream clang trunk (by Akira Hatanaka):
+
+ [ExprConstant] Use an AST node and a version number as a key to
+ create an APValue and retrieve it from map Temporaries.
+
+ The version number is needed when a single AST node is visited
+ multiple times and is used to create APValues that are required to be
+ distinct from each other (for example, MaterializeTemporaryExprs in
+ default arguments and VarDecls in loops).
+
+ rdar://problem/36505742
+
+ Differential Revision: https://reviews.llvm.org/D42776
+
+This should fix 'Assertion failed: (Result.isUninit() && "temporary
+created multiple times"), function createTemporary' errors (if
+assertions are enabled, otherwise the compiler internal state might go
+bad), when building the graphics/rawtherapee port.
+
+Direct commit to stable/11 and stable/12, since head already has clang
+7.0.1, which includes this change.
+
+PR: 234144
+
+Index: tools/clang/include/clang/AST/APValue.h
+===================================================================
+--- tools/clang/include/clang/AST/APValue.h (revision 342280)
++++ tools/clang/include/clang/AST/APValue.h (revision 342281)
+@@ -53,7 +53,58 @@ class APValue {
+ MemberPointer,
+ AddrLabelDiff
+ };
+- typedef llvm::PointerUnion<const ValueDecl *, const Expr *> LValueBase;
++
++ class LValueBase {
++ public:
++ typedef llvm::PointerUnion<const ValueDecl *, const Expr *> PtrTy;
++
++ LValueBase() : CallIndex(0), Version(0) {}
++
++ template <class T>
++ LValueBase(T P, unsigned I = 0, unsigned V = 0)
++ : Ptr(P), CallIndex(I), Version(V) {}
++
++ template <class T>
++ bool is() const { return Ptr.is<T>(); }
++
++ template <class T>
++ T get() const { return Ptr.get<T>(); }
++
++ template <class T>
++ T dyn_cast() const { return Ptr.dyn_cast<T>(); }
++
++ void *getOpaqueValue() const;
++
++ bool isNull() const;
++
++ explicit operator bool () const;
++
++ PtrTy getPointer() const {
++ return Ptr;
++ }
++
++ unsigned getCallIndex() const {
++ return CallIndex;
++ }
++
++ void setCallIndex(unsigned Index) {
++ CallIndex = Index;
++ }
++
++ unsigned getVersion() const {
++ return Version;
++ }
++
++ bool operator==(const LValueBase &Other) const {
++ return Ptr == Other.Ptr && CallIndex == Other.CallIndex &&
++ Version == Other.Version;
++ }
++
++ private:
++ PtrTy Ptr;
++ unsigned CallIndex, Version;
++ };
++
+ typedef llvm::PointerIntPair<const Decl *, 1, bool> BaseOrMemberType;
+ union LValuePathEntry {
+ /// BaseOrMember - The FieldDecl or CXXRecordDecl indicating the next item
+@@ -135,15 +186,15 @@ class APValue {
+ }
+ APValue(const APValue &RHS);
+ APValue(APValue &&RHS) : Kind(Uninitialized) { swap(RHS); }
+- APValue(LValueBase B, const CharUnits &O, NoLValuePath N, unsigned CallIndex,
++ APValue(LValueBase B, const CharUnits &O, NoLValuePath N,
+ bool IsNullPtr = false)
+ : Kind(Uninitialized) {
+- MakeLValue(); setLValue(B, O, N, CallIndex, IsNullPtr);
++ MakeLValue(); setLValue(B, O, N, IsNullPtr);
+ }
+ APValue(LValueBase B, const CharUnits &O, ArrayRef<LValuePathEntry> Path,
+- bool OnePastTheEnd, unsigned CallIndex, bool IsNullPtr = false)
++ bool OnePastTheEnd, bool IsNullPtr = false)
+ : Kind(Uninitialized) {
+- MakeLValue(); setLValue(B, O, Path, OnePastTheEnd, CallIndex, IsNullPtr);
++ MakeLValue(); setLValue(B, O, Path, OnePastTheEnd, IsNullPtr);
+ }
+ APValue(UninitArray, unsigned InitElts, unsigned Size) : Kind(Uninitialized) {
+ MakeArray(InitElts, Size);
+@@ -255,6 +306,7 @@ class APValue {
+ bool hasLValuePath() const;
+ ArrayRef<LValuePathEntry> getLValuePath() const;
+ unsigned getLValueCallIndex() const;
++ unsigned getLValueVersion() const;
+ bool isNullPointer() const;
+
+ APValue &getVectorElt(unsigned I) {
+@@ -376,10 +428,10 @@ class APValue {
+ ((ComplexAPFloat *)(char *)Data.buffer)->Imag = std::move(I);
+ }
+ void setLValue(LValueBase B, const CharUnits &O, NoLValuePath,
+- unsigned CallIndex, bool IsNullPtr);
++ bool IsNullPtr);
+ void setLValue(LValueBase B, const CharUnits &O,
+ ArrayRef<LValuePathEntry> Path, bool OnePastTheEnd,
+- unsigned CallIndex, bool IsNullPtr);
++ bool IsNullPtr);
+ void setUnion(const FieldDecl *Field, const APValue &Value) {
+ assert(isUnion() && "Invalid accessor");
+ ((UnionData*)(char*)Data.buffer)->Field = Field;
+@@ -451,4 +503,14 @@ class APValue {
+
+ } // end namespace clang.
+
++namespace llvm {
++template<> struct DenseMapInfo<clang::APValue::LValueBase> {
++ static clang::APValue::LValueBase getEmptyKey();
++ static clang::APValue::LValueBase getTombstoneKey();
++ static unsigned getHashValue(const clang::APValue::LValueBase &Base);
++ static bool isEqual(const clang::APValue::LValueBase &LHS,
++ const clang::APValue::LValueBase &RHS);
++};
++}
++
+ #endif
+Index: tools/clang/lib/AST/APValue.cpp
+===================================================================
+--- tools/clang/lib/AST/APValue.cpp (revision 342280)
++++ tools/clang/lib/AST/APValue.cpp (revision 342281)
+@@ -23,14 +23,57 @@ using namespace clang;
+
+ namespace {
+ struct LVBase {
+- llvm::PointerIntPair<APValue::LValueBase, 1, bool> BaseAndIsOnePastTheEnd;
++ APValue::LValueBase Base;
+ CharUnits Offset;
+ unsigned PathLength;
+- unsigned CallIndex;
+- bool IsNullPtr;
++ bool IsNullPtr : 1;
++ bool IsOnePastTheEnd : 1;
+ };
+ }
+
++void *APValue::LValueBase::getOpaqueValue() const {
++ return Ptr.getOpaqueValue();
++}
++
++bool APValue::LValueBase::isNull() const {
++ return Ptr.isNull();
++}
++
++APValue::LValueBase::operator bool () const {
++ return static_cast<bool>(Ptr);
++}
++
++clang::APValue::LValueBase
++llvm::DenseMapInfo<clang::APValue::LValueBase>::getEmptyKey() {
++ return clang::APValue::LValueBase(
++ DenseMapInfo<clang::APValue::LValueBase::PtrTy>::getEmptyKey(),
++ DenseMapInfo<unsigned>::getEmptyKey(),
++ DenseMapInfo<unsigned>::getEmptyKey());
++}
++
++clang::APValue::LValueBase
++llvm::DenseMapInfo<clang::APValue::LValueBase>::getTombstoneKey() {
++ return clang::APValue::LValueBase(
++ DenseMapInfo<clang::APValue::LValueBase::PtrTy>::getTombstoneKey(),
++ DenseMapInfo<unsigned>::getTombstoneKey(),
++ DenseMapInfo<unsigned>::getTombstoneKey());
++}
++
++unsigned llvm::DenseMapInfo<clang::APValue::LValueBase>::getHashValue(
++ const clang::APValue::LValueBase &Base) {
++ llvm::FoldingSetNodeID ID;
++ ID.AddPointer(Base.getOpaqueValue());
++ ID.AddInteger(Base.getCallIndex());
++ ID.AddInteger(Base.getVersion());
++ return ID.ComputeHash();
++}
++
++bool llvm::DenseMapInfo<clang::APValue::LValueBase>::isEqual(
++ const clang::APValue::LValueBase &LHS,
++ const clang::APValue::LValueBase &RHS) {
++ return LHS == RHS;
++}
++
+ struct APValue::LV : LVBase {
+ static const unsigned InlinePathSpace =
+ (DataSize - sizeof(LVBase)) / sizeof(LValuePathEntry);
+@@ -150,11 +193,10 @@ APValue::APValue(const APValue &RHS) : Kind(Uninit
+ MakeLValue();
+ if (RHS.hasLValuePath())
+ setLValue(RHS.getLValueBase(), RHS.getLValueOffset(), RHS.getLValuePath(),
+- RHS.isLValueOnePastTheEnd(), RHS.getLValueCallIndex(),
+- RHS.isNullPointer());
++ RHS.isLValueOnePastTheEnd(), RHS.isNullPointer());
+ else
+ setLValue(RHS.getLValueBase(), RHS.getLValueOffset(), NoLValuePath(),
+- RHS.getLValueCallIndex(), RHS.isNullPointer());
++ RHS.isNullPointer());
+ break;
+ case Array:
+ MakeArray(RHS.getArrayInitializedElts(), RHS.getArraySize());
+@@ -552,12 +594,12 @@ std::string APValue::getAsString(ASTContext &Ctx,
+
+ const APValue::LValueBase APValue::getLValueBase() const {
+ assert(isLValue() && "Invalid accessor");
+- return ((const LV*)(const void*)Data.buffer)->BaseAndIsOnePastTheEnd.getPointer();
++ return ((const LV*)(const void*)Data.buffer)->Base;
+ }
+
+ bool APValue::isLValueOnePastTheEnd() const {
+ assert(isLValue() && "Invalid accessor");
+- return ((const LV*)(const void*)Data.buffer)->BaseAndIsOnePastTheEnd.getInt();
++ return ((const LV*)(const void*)Data.buffer)->IsOnePastTheEnd;
+ }
+
+ CharUnits &APValue::getLValueOffset() {
+@@ -578,9 +620,14 @@ ArrayRef<APValue::LValuePathEntry> APValue::getLVa
+
+ unsigned APValue::getLValueCallIndex() const {
+ assert(isLValue() && "Invalid accessor");
+- return ((const LV*)(const char*)Data.buffer)->CallIndex;
++ return ((const LV*)(const char*)Data.buffer)->Base.getCallIndex();
+ }
+
++unsigned APValue::getLValueVersion() const {
++ assert(isLValue() && "Invalid accessor");
++ return ((const LV*)(const char*)Data.buffer)->Base.getVersion();
++}
++
+ bool APValue::isNullPointer() const {
+ assert(isLValue() && "Invalid usage");
+ return ((const LV*)(const char*)Data.buffer)->IsNullPtr;
+@@ -587,13 +634,12 @@ bool APValue::isNullPointer() const {
+ }
+
+ void APValue::setLValue(LValueBase B, const CharUnits &O, NoLValuePath,
+- unsigned CallIndex, bool IsNullPtr) {
++ bool IsNullPtr) {
+ assert(isLValue() && "Invalid accessor");
+ LV &LVal = *((LV*)(char*)Data.buffer);
+- LVal.BaseAndIsOnePastTheEnd.setPointer(B);
+- LVal.BaseAndIsOnePastTheEnd.setInt(false);
++ LVal.Base = B;
++ LVal.IsOnePastTheEnd = false;
+ LVal.Offset = O;
+- LVal.CallIndex = CallIndex;
+ LVal.resizePath((unsigned)-1);
+ LVal.IsNullPtr = IsNullPtr;
+ }
+@@ -600,13 +646,12 @@ void APValue::setLValue(LValueBase B, const CharUn
+
+ void APValue::setLValue(LValueBase B, const CharUnits &O,
+ ArrayRef<LValuePathEntry> Path, bool IsOnePastTheEnd,
+- unsigned CallIndex, bool IsNullPtr) {
++ bool IsNullPtr) {
+ assert(isLValue() && "Invalid accessor");
+ LV &LVal = *((LV*)(char*)Data.buffer);
+- LVal.BaseAndIsOnePastTheEnd.setPointer(B);
+- LVal.BaseAndIsOnePastTheEnd.setInt(IsOnePastTheEnd);
++ LVal.Base = B;
++ LVal.IsOnePastTheEnd = IsOnePastTheEnd;
+ LVal.Offset = O;
+- LVal.CallIndex = CallIndex;
+ LVal.resizePath(Path.size());
+ memcpy(LVal.getPath(), Path.data(), Path.size() * sizeof(LValuePathEntry));
+ LVal.IsNullPtr = IsNullPtr;
+Index: tools/clang/lib/AST/ExprConstant.cpp
+===================================================================
+--- tools/clang/lib/AST/ExprConstant.cpp (revision 342280)
++++ tools/clang/lib/AST/ExprConstant.cpp (revision 342281)
+@@ -446,8 +446,8 @@ namespace {
+
+ // Note that we intentionally use std::map here so that references to
+ // values are stable.
+- typedef std::map<const void*, APValue> MapTy;
+- typedef MapTy::const_iterator temp_iterator;
++ typedef std::pair<const void *, unsigned> MapKeyTy;
++ typedef std::map<MapKeyTy, APValue> MapTy;
+ /// Temporaries - Temporary lvalues materialized within this stack frame.
+ MapTy Temporaries;
+
+@@ -457,6 +457,20 @@ namespace {
+ /// Index - The call index of this call.
+ unsigned Index;
+
++ /// The stack of integers for tracking version numbers for temporaries.
++ SmallVector<unsigned, 2> TempVersionStack = {1};
++ unsigned CurTempVersion = TempVersionStack.back();
++
++ unsigned getTempVersion() const { return TempVersionStack.back(); }
++
++ void pushTempVersion() {
++ TempVersionStack.push_back(++CurTempVersion);
++ }
++
++ void popTempVersion() {
++ TempVersionStack.pop_back();
++ }
++
+ // FIXME: Adding this to every 'CallStackFrame' may have a nontrivial impact
+ // on the overall stack usage of deeply-recursing constexpr evaluataions.
+ // (We should cache this map rather than recomputing it repeatedly.)
+@@ -473,10 +487,36 @@ namespace {
+ APValue *Arguments);
+ ~CallStackFrame();
+
+- APValue *getTemporary(const void *Key) {
+- MapTy::iterator I = Temporaries.find(Key);
+- return I == Temporaries.end() ? nullptr : &I->second;
++ // Return the temporary for Key whose version number is Version.
++ APValue *getTemporary(const void *Key, unsigned Version) {
++ MapKeyTy KV(Key, Version);
++ auto LB = Temporaries.lower_bound(KV);
++ if (LB != Temporaries.end() && LB->first == KV)
++ return &LB->second;
++ // Pair (Key,Version) wasn't found in the map. Check that no elements
++ // in the map have 'Key' as their key.
++ assert((LB == Temporaries.end() || LB->first.first != Key) &&
++ (LB == Temporaries.begin() || std::prev(LB)->first.first != Key) &&
++ "Element with key 'Key' found in map");
++ return nullptr;
+ }
++
++ // Return the current temporary for Key in the map.
++ APValue *getCurrentTemporary(const void *Key) {
++ auto UB = Temporaries.upper_bound(MapKeyTy(Key, UINT_MAX));
++ if (UB != Temporaries.begin() && std::prev(UB)->first.first == Key)
++ return &std::prev(UB)->second;
++ return nullptr;
++ }
++
++ // Return the version number of the current temporary for Key.
++ unsigned getCurrentTemporaryVersion(const void *Key) const {
++ auto UB = Temporaries.upper_bound(MapKeyTy(Key, UINT_MAX));
++ if (UB != Temporaries.begin() && std::prev(UB)->first.first == Key)
++ return std::prev(UB)->first.second;
++ return 0;
++ }
++
+ APValue &createTemporary(const void *Key, bool IsLifetimeExtended);
+ };
+
+@@ -606,7 +646,8 @@ namespace {
+
+ /// EvaluatingObject - Pair of the AST node that an lvalue represents and
+ /// the call index that that lvalue was allocated in.
+- typedef std::pair<APValue::LValueBase, unsigned> EvaluatingObject;
++ typedef std::pair<APValue::LValueBase, std::pair<unsigned, unsigned>>
++ EvaluatingObject;
+
+ /// EvaluatingConstructors - Set of objects that are currently being
+ /// constructed.
+@@ -625,8 +666,10 @@ namespace {
+ }
+ };
+
+- bool isEvaluatingConstructor(APValue::LValueBase Decl, unsigned CallIndex) {
+- return EvaluatingConstructors.count(EvaluatingObject(Decl, CallIndex));
++ bool isEvaluatingConstructor(APValue::LValueBase Decl, unsigned CallIndex,
++ unsigned Version) {
++ return EvaluatingConstructors.count(
++ EvaluatingObject(Decl, {CallIndex, Version}));
+ }
+
+ /// The current array initialization index, if we're performing array
+@@ -722,7 +765,7 @@ namespace {
+ void setEvaluatingDecl(APValue::LValueBase Base, APValue &Value) {
+ EvaluatingDecl = Base;
+ EvaluatingDeclValue = &Value;
+- EvaluatingConstructors.insert({Base, 0});
++ EvaluatingConstructors.insert({Base, {0, 0}});
+ }
+
+ const LangOptions &getLangOpts() const { return Ctx.getLangOpts(); }
+@@ -1086,11 +1129,16 @@ namespace {
+ unsigned OldStackSize;
+ public:
+ ScopeRAII(EvalInfo &Info)
+- : Info(Info), OldStackSize(Info.CleanupStack.size()) {}
++ : Info(Info), OldStackSize(Info.CleanupStack.size()) {
++ // Push a new temporary version. This is needed to distinguish between
++ // temporaries created in different iterations of a loop.
++ Info.CurrentCall->pushTempVersion();
++ }
+ ~ScopeRAII() {
+ // Body moved to a static method to encourage the compiler to inline away
+ // instances of this class.
+ cleanup(Info, OldStackSize);
++ Info.CurrentCall->popTempVersion();
+ }
+ private:
+ static void cleanup(EvalInfo &Info, unsigned OldStackSize) {
+@@ -1170,7 +1218,8 @@ CallStackFrame::~CallStackFrame() {
+
+ APValue &CallStackFrame::createTemporary(const void *Key,
+ bool IsLifetimeExtended) {
+- APValue &Result = Temporaries[Key];
++ unsigned Version = Info.CurrentCall->getTempVersion();
++ APValue &Result = Temporaries[MapKeyTy(Key, Version)];
+ assert(Result.isUninit() && "temporary created multiple times");
+ Info.CleanupStack.push_back(Cleanup(&Result, IsLifetimeExtended));
+ return Result;
+@@ -1262,27 +1311,27 @@ namespace {
+ struct LValue {
+ APValue::LValueBase Base;
+ CharUnits Offset;
+- unsigned InvalidBase : 1;
+- unsigned CallIndex : 31;
+ SubobjectDesignator Designator;
+- bool IsNullPtr;
++ bool IsNullPtr : 1;
++ bool InvalidBase : 1;
+
+ const APValue::LValueBase getLValueBase() const { return Base; }
+ CharUnits &getLValueOffset() { return Offset; }
+ const CharUnits &getLValueOffset() const { return Offset; }
+- unsigned getLValueCallIndex() const { return CallIndex; }
+ SubobjectDesignator &getLValueDesignator() { return Designator; }
+ const SubobjectDesignator &getLValueDesignator() const { return Designator;}
+ bool isNullPointer() const { return IsNullPtr;}
+
++ unsigned getLValueCallIndex() const { return Base.getCallIndex(); }
++ unsigned getLValueVersion() const { return Base.getVersion(); }
++
+ void moveInto(APValue &V) const {
+ if (Designator.Invalid)
+- V = APValue(Base, Offset, APValue::NoLValuePath(), CallIndex,
+- IsNullPtr);
++ V = APValue(Base, Offset, APValue::NoLValuePath(), IsNullPtr);
+ else {
+ assert(!InvalidBase && "APValues can't handle invalid LValue bases");
+ V = APValue(Base, Offset, Designator.Entries,
+- Designator.IsOnePastTheEnd, CallIndex, IsNullPtr);
++ Designator.IsOnePastTheEnd, IsNullPtr);
+ }
+ }
+ void setFrom(ASTContext &Ctx, const APValue &V) {
+@@ -1290,12 +1339,11 @@ namespace {
+ Base = V.getLValueBase();
+ Offset = V.getLValueOffset();
+ InvalidBase = false;
+- CallIndex = V.getLValueCallIndex();
+ Designator = SubobjectDesignator(Ctx, V);
+ IsNullPtr = V.isNullPointer();
+ }
+
+- void set(APValue::LValueBase B, unsigned I = 0, bool BInvalid = false) {
++ void set(APValue::LValueBase B, bool BInvalid = false) {
+ #ifndef NDEBUG
+ // We only allow a few types of invalid bases. Enforce that here.
+ if (BInvalid) {
+@@ -1308,7 +1356,6 @@ namespace {
+ Base = B;
+ Offset = CharUnits::fromQuantity(0);
+ InvalidBase = BInvalid;
+- CallIndex = I;
+ Designator = SubobjectDesignator(getType(B));
+ IsNullPtr = false;
+ }
+@@ -1317,13 +1364,12 @@ namespace {
+ Base = (Expr *)nullptr;
+ Offset = CharUnits::fromQuantity(TargetVal);
+ InvalidBase = false;
+- CallIndex = 0;
+ Designator = SubobjectDesignator(PointerTy->getPointeeType());
+ IsNullPtr = true;
+ }
+
+ void setInvalid(APValue::LValueBase B, unsigned I = 0) {
+- set(B, I, true);
++ set(B, true);
+ }
+
+ // Check that this LValue is not based on a null pointer. If it is, produce
+@@ -1525,6 +1571,15 @@ static bool EvaluateAsRValue(EvalInfo &Info, const
+ // Misc utilities
+ //===----------------------------------------------------------------------===//
+
++/// A helper function to create a temporary and set an LValue.
++template <class KeyTy>
++static APValue &createTemporary(const KeyTy *Key, bool IsLifetimeExtended,
++ LValue &LV, CallStackFrame &Frame) {
++ LV.set({Key, Frame.Info.CurrentCall->Index,
++ Frame.Info.CurrentCall->getTempVersion()});
++ return Frame.createTemporary(Key, IsLifetimeExtended);
++}
++
+ /// Negate an APSInt in place, converting it to a signed form if necessary, and
+ /// preserving its value (by extending by up to one bit as needed).
+ static void negateAsSigned(APSInt &Int) {
+@@ -1854,7 +1909,7 @@ static const ValueDecl *GetLValueBaseDecl(const LV
+ }
+
+ static bool IsLiteralLValue(const LValue &Value) {
+- if (Value.CallIndex)
++ if (Value.getLValueCallIndex())
+ return false;
+ const Expr *E = Value.Base.dyn_cast<const Expr*>();
+ return E && !isa<MaterializeTemporaryExpr>(E);
+@@ -2404,7 +2459,7 @@ static bool handleLValueToRValueConversion(EvalInf
+ /// \param Result Filled in with a pointer to the value of the variable.
+ static bool evaluateVarDeclInit(EvalInfo &Info, const Expr *E,
+ const VarDecl *VD, CallStackFrame *Frame,
+- APValue *&Result) {
++ APValue *&Result, const LValue *LVal) {
+
+ // If this is a parameter to an active constexpr function call, perform
+ // argument substitution.
+@@ -2423,7 +2478,8 @@ static bool evaluateVarDeclInit(EvalInfo &Info, co
+
+ // If this is a local variable, dig out its value.
+ if (Frame) {
+- Result = Frame->getTemporary(VD);
++ Result = LVal ? Frame->getTemporary(VD, LVal->getLValueVersion())
++ : Frame->getCurrentTemporary(VD);
+ if (!Result) {
+ // Assume variables referenced within a lambda's call operator that were
+ // not declared within the call operator are captures and during checking
+@@ -3000,8 +3056,8 @@ static CompleteObject findCompleteObject(EvalInfo
+ }
+
+ CallStackFrame *Frame = nullptr;
+- if (LVal.CallIndex) {
+- Frame = Info.getCallFrame(LVal.CallIndex);
++ if (LVal.getLValueCallIndex()) {
++ Frame = Info.getCallFrame(LVal.getLValueCallIndex());
+ if (!Frame) {
+ Info.FFDiag(E, diag::note_constexpr_lifetime_ended, 1)
+ << AK << LVal.Base.is<const ValueDecl*>();
+@@ -3113,7 +3169,7 @@ static CompleteObject findCompleteObject(EvalInfo
+ }
+ }
+
+- if (!evaluateVarDeclInit(Info, E, VD, Frame, BaseVal))
++ if (!evaluateVarDeclInit(Info, E, VD, Frame, BaseVal, &LVal))
+ return CompleteObject();
+ } else {
+ const Expr *Base = LVal.Base.dyn_cast<const Expr*>();
+@@ -3155,7 +3211,7 @@ static CompleteObject findCompleteObject(EvalInfo
+ return CompleteObject();
+ }
+ } else {
+- BaseVal = Frame->getTemporary(Base);
++ BaseVal = Frame->getTemporary(Base, LVal.Base.getVersion());
+ assert(BaseVal && "missing value for temporary");
+ }
+
+@@ -3175,7 +3231,9 @@ static CompleteObject findCompleteObject(EvalInfo
+ // During the construction of an object, it is not yet 'const'.
+ // FIXME: This doesn't do quite the right thing for const subobjects of the
+ // object under construction.
+- if (Info.isEvaluatingConstructor(LVal.getLValueBase(), LVal.CallIndex)) {
++ if (Info.isEvaluatingConstructor(LVal.getLValueBase(),
++ LVal.getLValueCallIndex(),
++ LVal.getLValueVersion())) {
+ BaseType = Info.Ctx.getCanonicalType(BaseType);
+ BaseType.removeLocalConst();
+ }
+@@ -3212,7 +3270,7 @@ static bool handleLValueToRValueConversion(EvalInf
+
+ // Check for special cases where there is no existing APValue to look at.
+ const Expr *Base = LVal.Base.dyn_cast<const Expr*>();
+- if (Base && !LVal.CallIndex && !Type.isVolatileQualified()) {
++ if (Base && !LVal.getLValueCallIndex() && !Type.isVolatileQualified()) {
+ if (const CompoundLiteralExpr *CLE = dyn_cast<CompoundLiteralExpr>(Base)) {
+ // In C99, a CompoundLiteralExpr is an lvalue, and we defer evaluating the
+ // initializer until now for such expressions. Such an expression can't be
+@@ -3715,8 +3773,7 @@ static bool EvaluateVarDecl(EvalInfo &Info, const
+ return true;
+
+ LValue Result;
+- Result.set(VD, Info.CurrentCall->Index);
+- APValue &Val = Info.CurrentCall->createTemporary(VD, true);
++ APValue &Val = createTemporary(VD, true, Result, *Info.CurrentCall);
+
+ const Expr *InitE = VD->getInit();
+ if (!InitE) {
+@@ -3772,6 +3829,19 @@ struct StmtResult {
+ /// The location containing the result, if any (used to support RVO).
+ const LValue *Slot;
+ };
++
++struct TempVersionRAII {
++ CallStackFrame &Frame;
++
++ TempVersionRAII(CallStackFrame &Frame) : Frame(Frame) {
++ Frame.pushTempVersion();
++ }
++
++ ~TempVersionRAII() {
++ Frame.popTempVersion();
++ }
++};
++
+ }
+
+ static EvalStmtResult EvaluateStmt(StmtResult &Result, EvalInfo &Info,
+@@ -4329,7 +4399,8 @@ static bool HandleConstructorCall(const Expr *E, c
+ }
+
+ EvalInfo::EvaluatingConstructorRAII EvalObj(
+- Info, {This.getLValueBase(), This.CallIndex});
++ Info, {This.getLValueBase(),
++ {This.getLValueCallIndex(), This.getLValueVersion()}});
+ CallStackFrame Frame(Info, CallLoc, Definition, &This, ArgValues);
+
+ // FIXME: Creating an APValue just to hold a nonexistent return value is
+@@ -4578,9 +4649,12 @@ class ExprEvaluatorBase
+ { return StmtVisitorTy::Visit(E->getResultExpr()); }
+ bool VisitSubstNonTypeTemplateParmExpr(const SubstNonTypeTemplateParmExpr *E)
+ { return StmtVisitorTy::Visit(E->getReplacement()); }
+- bool VisitCXXDefaultArgExpr(const CXXDefaultArgExpr *E)
+- { return StmtVisitorTy::Visit(E->getExpr()); }
++ bool VisitCXXDefaultArgExpr(const CXXDefaultArgExpr *E) {
++ TempVersionRAII RAII(*Info.CurrentCall);
++ return StmtVisitorTy::Visit(E->getExpr());
++ }
+ bool VisitCXXDefaultInitExpr(const CXXDefaultInitExpr *E) {
++ TempVersionRAII RAII(*Info.CurrentCall);
+ // The initializer may not have been parsed yet, or might be erroneous.
+ if (!E->getExpr())
+ return Error(E);
+@@ -4658,7 +4732,7 @@ class ExprEvaluatorBase
+ }
+
+ bool VisitOpaqueValueExpr(const OpaqueValueExpr *E) {
+- if (APValue *Value = Info.CurrentCall->getTemporary(E))
++ if (APValue *Value = Info.CurrentCall->getCurrentTemporary(E))
+ return DerivedSuccess(*Value, E);
+
+ const Expr *Source = E->getSourceExpr();
+@@ -5216,7 +5290,8 @@ bool LValueExprEvaluator::VisitVarDecl(const Expr
+
+ if (!VD->getType()->isReferenceType()) {
+ if (Frame) {
+- Result.set(VD, Frame->Index);
++ Result.set({VD, Frame->Index,
++ Info.CurrentCall->getCurrentTemporaryVersion(VD)});
+ return true;
+ }
+ return Success(VD);
+@@ -5223,7 +5298,7 @@ bool LValueExprEvaluator::VisitVarDecl(const Expr
+ }
+
+ APValue *V;
+- if (!evaluateVarDeclInit(Info, E, VD, Frame, V))
++ if (!evaluateVarDeclInit(Info, E, VD, Frame, V, nullptr))
+ return false;
+ if (V->isUninit()) {
+ if (!Info.checkingPotentialConstantExpression())
+@@ -5255,9 +5330,8 @@ bool LValueExprEvaluator::VisitMaterializeTemporar
+ *Value = APValue();
+ Result.set(E);
+ } else {
+- Value = &Info.CurrentCall->
+- createTemporary(E, E->getStorageDuration() == SD_Automatic);
+- Result.set(E, Info.CurrentCall->Index);
++ Value = &createTemporary(E, E->getStorageDuration() == SD_Automatic, Result,
++ *Info.CurrentCall);
+ }
+
+ QualType Type = Inner->getType();
+@@ -5736,7 +5810,6 @@ bool PointerExprEvaluator::VisitCastExpr(const Cas
+ Result.Base = (Expr*)nullptr;
+ Result.InvalidBase = false;
+ Result.Offset = CharUnits::fromQuantity(N);
+- Result.CallIndex = 0;
+ Result.Designator.setInvalid();
+ Result.IsNullPtr = false;
+ return true;
+@@ -5752,9 +5825,9 @@ bool PointerExprEvaluator::VisitCastExpr(const Cas
+ if (!evaluateLValue(SubExpr, Result))
+ return false;
+ } else {
+- Result.set(SubExpr, Info.CurrentCall->Index);
+- if (!EvaluateInPlace(Info.CurrentCall->createTemporary(SubExpr, false),
+- Info, Result, SubExpr))
++ APValue &Value = createTemporary(SubExpr, false, Result,
++ *Info.CurrentCall);
++ if (!EvaluateInPlace(Value, Info, Result, SubExpr))
+ return false;
+ }
+ // The result is a pointer to the first element of the array.
+@@ -6520,9 +6593,8 @@ class TemporaryExprEvaluator
+
+ /// Visit an expression which constructs the value of this temporary.
+ bool VisitConstructExpr(const Expr *E) {
+- Result.set(E, Info.CurrentCall->Index);
+- return EvaluateInPlace(Info.CurrentCall->createTemporary(E, false),
+- Info, Result, E);
++ APValue &Value = createTemporary(E, false, Result, *Info.CurrentCall);
++ return EvaluateInPlace(Value, Info, Result, E);
+ }
+
+ bool VisitCastExpr(const CastExpr *E) {
+@@ -8007,7 +8079,8 @@ static bool HasSameBase(const LValue &A, const LVa
+ }
+
+ return IsGlobalLValue(A.getLValueBase()) ||
+- A.getLValueCallIndex() == B.getLValueCallIndex();
++ (A.getLValueCallIndex() == B.getLValueCallIndex() &&
++ A.getLValueVersion() == B.getLValueVersion());
+ }
+
+ /// \brief Determine whether this is a pointer past the end of the complete
+@@ -9941,15 +10014,13 @@ static bool Evaluate(APValue &Result, EvalInfo &In
+ return true;
+ } else if (T->isArrayType()) {
+ LValue LV;
+- LV.set(E, Info.CurrentCall->Index);
+- APValue &Value = Info.CurrentCall->createTemporary(E, false);
++ APValue &Value = createTemporary(E, false, LV, *Info.CurrentCall);
+ if (!EvaluateArray(E, LV, Value, Info))
+ return false;
+ Result = Value;
+ } else if (T->isRecordType()) {
+ LValue LV;
+- LV.set(E, Info.CurrentCall->Index);
+- APValue &Value = Info.CurrentCall->createTemporary(E, false);
++ APValue &Value = createTemporary(E, false, LV, *Info.CurrentCall);
+ if (!EvaluateRecord(E, LV, Value, Info))
+ return false;
+ Result = Value;
+@@ -9963,8 +10034,7 @@ static bool Evaluate(APValue &Result, EvalInfo &In
+ QualType Unqual = T.getAtomicUnqualifiedType();
+ if (Unqual->isArrayType() || Unqual->isRecordType()) {
+ LValue LV;
+- LV.set(E, Info.CurrentCall->Index);
+- APValue &Value = Info.CurrentCall->createTemporary(E, false);
++ APValue &Value = createTemporary(E, false, LV, *Info.CurrentCall);
+ if (!EvaluateAtomic(E, &LV, Value, Info))
+ return false;
+ } else {
+@@ -10786,7 +10856,7 @@ bool Expr::isPotentialConstantExpr(const FunctionD
+ // is a temporary being used as the 'this' pointer.
+ LValue This;
+ ImplicitValueInitExpr VIE(RD ? Info.Ctx.getRecordType(RD) : Info.Ctx.IntTy);
+- This.set(&VIE, Info.CurrentCall->Index);
++ This.set({&VIE, Info.CurrentCall->Index});
+
+ ArrayRef<const Expr*> Args;
+
+Index: tools/clang/test/SemaCXX/constant-expression-cxx1y.cpp
+===================================================================
+--- tools/clang/test/SemaCXX/constant-expression-cxx1y.cpp (revision 342280)
++++ tools/clang/test/SemaCXX/constant-expression-cxx1y.cpp (revision 342281)
+@@ -852,7 +852,6 @@ namespace Lifetime {
+ static_assert(h(2) == 0, ""); // expected-error {{constant expression}} expected-note {{in call}}
+ static_assert(h(3) == 0, ""); // expected-error {{constant expression}} expected-note {{in call}}
+
+- // FIXME: This function should be treated as non-constant.
+ constexpr void lifetime_versus_loops() {
+ int *p = 0;
+ for (int i = 0; i != 2; ++i) {
+@@ -862,10 +861,10 @@ namespace Lifetime {
+ if (i)
+ // This modifies the 'n' from the previous iteration of the loop outside
+ // its lifetime.
+- ++*q;
++ ++*q; // expected-note {{increment of object outside its lifetime}}
+ }
+ }
+- static_assert((lifetime_versus_loops(), true), "");
++ static_assert((lifetime_versus_loops(), true), ""); // expected-error {{constant expression}} expected-note {{in call}}
+ }
+
+ namespace Bitfields {
+Index: tools/clang/test/SemaCXX/constexpr-default-arg.cpp
+===================================================================
+--- tools/clang/test/SemaCXX/constexpr-default-arg.cpp (nonexistent)
++++ tools/clang/test/SemaCXX/constexpr-default-arg.cpp (revision 342281)
+@@ -0,0 +1,38 @@
++// RUN: %clang_cc1 -std=c++1y -S -o - -emit-llvm -verify %s
++
++namespace default_arg_temporary {
++
++constexpr bool equals(const float& arg = 1.0f) {
++ return arg == 1.0f;
++}
++
++constexpr const int &x(const int &p = 0) {
++ return p;
++}
++
++struct S {
++ constexpr S(const int &a = 0) {}
++};
++
++void test_default_arg2() {
++ // This piece of code used to cause an assertion failure in
++ // CallStackFrame::createTemporary because the same MTE is used to initilize
++ // both elements of the array (see PR33140).
++ constexpr S s[2] = {};
++
++ // This piece of code used to cause an assertion failure in
++ // CallStackFrame::createTemporary because multiple CXXDefaultArgExpr share
++ // the same MTE (see PR33140).
++ static_assert(equals() && equals(), "");
++
++ // Test that constant expression evaluation produces distinct lvalues for
++ // each call.
++ static_assert(&x() != &x(), "");
++}
++
++// Check that multiple CXXDefaultInitExprs don't cause an assertion failure.
++struct A { int &&r = 0; }; // expected-warning {{binding reference member}} // expected-note {{reference member declared here}}
++struct B { A x, y; };
++B b = {};
++
++}
diff --git a/devel/llvm60/files/clang/patch-tools_clang_lib_Headers_CMakeLists.txt b/devel/llvm60/files/clang/patch-tools_clang_lib_Headers_CMakeLists.txt
new file mode 100644
index 000000000000..17043c6072cf
--- /dev/null
+++ b/devel/llvm60/files/clang/patch-tools_clang_lib_Headers_CMakeLists.txt
@@ -0,0 +1,32 @@
+--- tools/clang/lib/Headers/CMakeLists.txt.orig
++++ tools/clang/lib/Headers/CMakeLists.txt
+@@ -56,7 +56,6 @@
+ intrin.h
+ inttypes.h
+ iso646.h
+- limits.h
+ lwpintrin.h
+ lzcntintrin.h
+ mm3dnow.h
+@@ -76,21 +75,13 @@
+ s390intrin.h
+ shaintrin.h
+ smmintrin.h
+- stdalign.h
+- stdarg.h
+- stdatomic.h
+- stdbool.h
+- stddef.h
+ __stddef_max_align_t.h
+- stdint.h
+- stdnoreturn.h
+ tbmintrin.h
+ tgmath.h
+ tmmintrin.h
+ unwind.h
+ vadefs.h
+ vaesintrin.h
+- varargs.h
+ vecintrin.h
+ vpclmulqdqintrin.h
+ wmmintrin.h
diff --git a/devel/llvm60/files/clang/patch-tools_clang_tools_clang-format_clang-format-sublime.py b/devel/llvm60/files/clang/patch-tools_clang_tools_clang-format_clang-format-sublime.py
new file mode 100644
index 000000000000..2c8909f1e1d1
--- /dev/null
+++ b/devel/llvm60/files/clang/patch-tools_clang_tools_clang-format_clang-format-sublime.py
@@ -0,0 +1,14 @@
+
+$FreeBSD$
+
+--- tools/clang/tools/clang-format/clang-format-sublime.py.orig
++++ tools/clang/tools/clang-format/clang-format-sublime.py
+@@ -18,7 +18,7 @@
+ import subprocess
+
+ # Change this to the full path if clang-format is not on the path.
+-binary = 'clang-format'
++binary = 'clang-format%%LLVM_SUFFIX%%'
+
+ # Change this to format according to other formatting styles. See the output of
+ # 'clang-format --help' for a list of supported styles. The default looks for
diff --git a/devel/llvm60/files/clang/patch-tools_clang_tools_clang-format_clang-format.py b/devel/llvm60/files/clang/patch-tools_clang_tools_clang-format_clang-format.py
new file mode 100644
index 000000000000..2962d3f4cbcb
--- /dev/null
+++ b/devel/llvm60/files/clang/patch-tools_clang_tools_clang-format_clang-format.py
@@ -0,0 +1,11 @@
+--- tools/clang/tools/clang-format/clang-format.py.orig 2015-09-08 20:44:00 UTC
++++ tools/clang/tools/clang-format/clang-format.py
+@@ -34,7 +34,7 @@ import vim
+
+ # set g:clang_format_path to the path to clang-format if it is not on the path
+ # Change this to the full path if clang-format is not on the path.
+-binary = 'clang-format'
++binary = 'clang-format%%LLVM_SUFFIX%%'
+ if vim.eval('exists("g:clang_format_path")') == "1":
+ binary = vim.eval('g:clang_format_path')
+
diff --git a/devel/llvm60/files/clang/patch-tools_clang_tools_clang-format_git-clang-format b/devel/llvm60/files/clang/patch-tools_clang_tools_clang-format_git-clang-format
new file mode 100644
index 000000000000..5c5ae3581228
--- /dev/null
+++ b/devel/llvm60/files/clang/patch-tools_clang_tools_clang-format_git-clang-format
@@ -0,0 +1,32 @@
+
+$FreeBSD$
+
+--- tools/clang/tools/clang-format/git-clang-format.orig
++++ tools/clang/tools/clang-format/git-clang-format
+@@ -90,7 +90,7 @@
+ usage=usage, formatter_class=argparse.RawDescriptionHelpFormatter,
+ description=desc)
+ p.add_argument('--binary',
+- default=config.get('clangformat.binary', 'clang-format'),
++ default=config.get('clangformat.binary', 'clang-format%%LLVM_SUFFIX%%'),
+ help='path to clang-format'),
+ p.add_argument('--commit',
+ default=config.get('clangformat.commit', 'HEAD'),
+@@ -344,7 +344,7 @@
+
+
+ def run_clang_format_and_save_to_tree(changed_lines, revision=None,
+- binary='clang-format', style=None):
++ binary='clang-format%%LLVM_SUFFIX%%', style=None):
+ """Run clang-format on each file and save the result to a git tree.
+
+ Returns the object ID (SHA-1) of the created tree."""
+@@ -397,7 +397,7 @@
+
+
+ def clang_format_to_blob(filename, line_ranges, revision=None,
+- binary='clang-format', style=None):
++ binary='clang-format%%LLVM_SUFFIX%%', style=None):
+ """Run clang-format on the given file and save the result to a git blob.
+
+ Runs on the file in `revision` if not None, or on the file in the working
diff --git a/devel/llvm60/files/clang/patch-tools_clang_tools_scan-build_libexec_ccc-analyzer b/devel/llvm60/files/clang/patch-tools_clang_tools_scan-build_libexec_ccc-analyzer
new file mode 100644
index 000000000000..e1c65480ce2f
--- /dev/null
+++ b/devel/llvm60/files/clang/patch-tools_clang_tools_scan-build_libexec_ccc-analyzer
@@ -0,0 +1,12 @@
+--- tools/clang/tools/scan-build/libexec/ccc-analyzer.orig
++++ tools/clang/tools/scan-build/libexec/ccc-analyzer
+@@ -81,6 +81,9 @@
+ if (-x "/usr/bin/xcrun") {
+ $UseXCRUN = 1;
+ }
++} elsif (`uname -s` eq "FreeBSD\n") {
++ $DefaultCCompiler = 'cc';
++ $DefaultCXXCompiler = 'c++';
+ } else {
+ $DefaultCCompiler = 'gcc';
+ $DefaultCXXCompiler = 'g++';
diff --git a/devel/llvm60/files/lld/patch-head-r331731.diff b/devel/llvm60/files/lld/patch-head-r331731.diff
new file mode 100644
index 000000000000..6b162d89f6be
--- /dev/null
+++ b/devel/llvm60/files/lld/patch-head-r331731.diff
@@ -0,0 +1,67 @@
+r331731 | dim | 2018-03-29 15:55:23 +0200 (Thu, 29 Mar 2018) | 22 lines
+
+Pull in r328738 from upstream lld trunk (by Rafael Espindola):
+
+ Strip @VER suffices from the LTO output.
+
+ This fixes pr36623.
+
+ The problem is that we have to parse versions out of names before LTO
+ so that LTO can use that information.
+
+ When we get the LTO produced .o files, we replace the previous symbols
+ with the LTO produced ones, but they still have @ in their names.
+
+ We could just trim the name directly, but calling parseSymbolVersion
+ to do it is simpler.
+
+This is a follow-up to r331366, since we discovered that lld could
+append version strings to symbols twice, when using Link Time
+Optimization.
+
+MFC after: 3 months
+X-MFC-With: r327952
+
+Index: tools/lld/ELF/InputFiles.cpp
+===================================================================
+--- tools/lld/ELF/InputFiles.cpp (revision 331730)
++++ tools/lld/ELF/InputFiles.cpp (revision 331731)
+@@ -281,6 +281,10 @@ template <class ELFT> ArrayRef<Symbol *> ObjFile<E
+ return makeArrayRef(this->Symbols).slice(1, this->FirstNonLocal - 1);
+ }
+
++template <class ELFT> ArrayRef<Symbol *> ObjFile<ELFT>::getGlobalSymbols() {
++ return makeArrayRef(this->Symbols).slice(this->FirstNonLocal);
++}
++
+ template <class ELFT>
+ void ObjFile<ELFT>::parse(DenseSet<CachedHashStringRef> &ComdatGroups) {
+ // Read section and symbol tables.
+Index: tools/lld/ELF/InputFiles.h
+===================================================================
+--- tools/lld/ELF/InputFiles.h (revision 331730)
++++ tools/lld/ELF/InputFiles.h (revision 331731)
+@@ -167,6 +167,7 @@ template <class ELFT> class ObjFile : public ELFFi
+ static bool classof(const InputFile *F) { return F->kind() == Base::ObjKind; }
+
+ ArrayRef<Symbol *> getLocalSymbols();
++ ArrayRef<Symbol *> getGlobalSymbols();
+
+ ObjFile(MemoryBufferRef M, StringRef ArchiveName);
+ void parse(llvm::DenseSet<llvm::CachedHashStringRef> &ComdatGroups);
+Index: tools/lld/ELF/SymbolTable.cpp
+===================================================================
+--- tools/lld/ELF/SymbolTable.cpp (revision 331730)
++++ tools/lld/ELF/SymbolTable.cpp (revision 331731)
+@@ -130,7 +130,10 @@ template <class ELFT> void SymbolTable::addCombine
+
+ for (InputFile *File : LTO->compile()) {
+ DenseSet<CachedHashStringRef> DummyGroups;
+- cast<ObjFile<ELFT>>(File)->parse(DummyGroups);
++ auto *Obj = cast<ObjFile<ELFT>>(File);
++ Obj->parse(DummyGroups);
++ for (Symbol *Sym : Obj->getGlobalSymbols())
++ Sym->parseSymbolVersion();
+ ObjectFiles.push_back(File);
+ }
+ }
diff --git a/devel/llvm60/files/lld/patch-head-r333401.diff b/devel/llvm60/files/lld/patch-head-r333401.diff
new file mode 100644
index 000000000000..131f6a0ea274
--- /dev/null
+++ b/devel/llvm60/files/lld/patch-head-r333401.diff
@@ -0,0 +1,34 @@
+r333401 | emaste | 2018-05-09 13:17:01 +0200 (Wed, 09 May 2018) | 19 lines
+
+lld: Omit PT_NOTE for SHT_NOTE without SHF_ALLOC
+
+A non-alloc note section should not have a PT_NOTE program header.
+
+Found while linking ghc (Haskell compiler) with lld on FreeBSD. Haskell
+emits a .debug-ghc-link-info note section (as the name suggests, it
+contains link info) as a SHT_NOTE section without SHF_ALLOC set.
+
+For this case ld.bfd does not emit a PT_NOTE segment for
+.debug-ghc-link-info. lld previously emitted a PT_NOTE with p_vaddr = 0
+and FreeBSD's rtld segfaulted when trying to parse a note at address 0.
+
+LLVM PR: https://llvm.org/pr37361
+LLVM review: https://reviews.llvm.org/D46623
+
+PR: 226872
+Reviewed by: dim
+Sponsored by: The FreeBSD Foundation
+
+Index: tools/lld/ELF/Writer.cpp
+===================================================================
+--- tools/lld/ELF/Writer.cpp (revision 333400)
++++ tools/lld/ELF/Writer.cpp (revision 333401)
+@@ -1708,7 +1708,7 @@ template <class ELFT> std::vector<PhdrEntry *> Wri
+ // Create one PT_NOTE per a group of contiguous .note sections.
+ PhdrEntry *Note = nullptr;
+ for (OutputSection *Sec : OutputSections) {
+- if (Sec->Type == SHT_NOTE) {
++ if (Sec->Type == SHT_NOTE && (Sec->Flags & SHF_ALLOC)) {
+ if (!Note || Sec->LMAExpr)
+ Note = AddHdr(PT_NOTE, PF_R);
+ Note->add(Sec);
diff --git a/devel/llvm60/files/lld/patch-head-r336664.diff b/devel/llvm60/files/lld/patch-head-r336664.diff
new file mode 100644
index 000000000000..e26fd06d4c5e
--- /dev/null
+++ b/devel/llvm60/files/lld/patch-head-r336664.diff
@@ -0,0 +1,52 @@
+r336664 | emaste | 2018-07-24 13:35:22 +0200 (Tue, 24 Jul 2018) | 11 lines
+
+lld: fix addends with partial linking
+
+[ELF] Update addends in non-allocatable sections for REL targets when
+creating a relocatable output.
+
+LLVM PR: 37735
+LLVM Differential Revision: https://reviews.llvm.org/D48929
+
+PR: 225128
+Obtained from: LLVM r336799 by Igor Kudrin
+
+Index: tools/lld/ELF/InputSection.cpp
+===================================================================
+--- tools/lld/ELF/InputSection.cpp (revision 336663)
++++ tools/lld/ELF/InputSection.cpp (revision 336664)
+@@ -686,6 +686,23 @@ void InputSection::relocateNonAlloc(uint8_t *Buf,
+ }
+ }
+
++// This is used when '-r' is given.
++// For REL targets, InputSection::copyRelocations() may store artificial
++// relocations aimed to update addends. They are handled in relocateAlloc()
++// for allocatable sections, and this function does the same for
++// non-allocatable sections, such as sections with debug information.
++static void relocateNonAllocForRelocatable(InputSection *Sec, uint8_t *Buf) {
++ const unsigned Bits = Config->Is64 ? 64 : 32;
++
++ for (const Relocation &Rel : Sec->Relocations) {
++ // InputSection::copyRelocations() adds only R_ABS relocations.
++ assert(Rel.Expr == R_ABS);
++ uint8_t *BufLoc = Buf + Rel.Offset + Sec->OutSecOff;
++ uint64_t TargetVA = SignExtend64(Rel.Sym->getVA(Rel.Addend), Bits);
++ Target->relocateOne(BufLoc, Rel.Type, TargetVA);
++ }
++}
++
+ template <class ELFT>
+ void InputSectionBase::relocate(uint8_t *Buf, uint8_t *BufEnd) {
+ if (Flags & SHF_ALLOC) {
+@@ -694,7 +711,9 @@ void InputSectionBase::relocate(uint8_t *Buf, uint
+ }
+
+ auto *Sec = cast<InputSection>(this);
+- if (Sec->AreRelocsRela)
++ if (Config->Relocatable)
++ relocateNonAllocForRelocatable(Sec, Buf);
++ else if (Sec->AreRelocsRela)
+ Sec->relocateNonAlloc<ELFT>(Buf, Sec->template relas<ELFT>());
+ else
+ Sec->relocateNonAlloc<ELFT>(Buf, Sec->template rels<ELFT>());
diff --git a/devel/llvm60/files/lld/patch-head-r336972.diff b/devel/llvm60/files/lld/patch-head-r336972.diff
new file mode 100644
index 000000000000..d7497ce5390a
--- /dev/null
+++ b/devel/llvm60/files/lld/patch-head-r336972.diff
@@ -0,0 +1,146 @@
+r336972 | emaste | 2018-07-31 17:25:03 +0200 (Tue, 31 Jul 2018) | 37 lines
+
+lld: [ELF][ARM] Implement support for Tag_ABI_VFP_args
+
+The Tag_ABI_VFP_args build attribute controls the procedure call
+standard used for floating point parameters on ARM. The values are:
+
+0 - Base AAPCS (FP Parameters passed in Core (Integer) registers
+1 - VFP AAPCS (FP Parameters passed in FP registers)
+2 - Toolchain specific (Neither Base or VFP)
+3 - Compatible with all (No use of floating point parameters)
+
+If the Tag_ABI_VFP_args build attribute is missing it has an implicit
+value of 0.
+
+We use the attribute in two ways:
+
+* Detect a clash in calling convention between Base, VFP and Toolchain.
+
+we follow ld.bfd's lead and do not error if there is a clash between an
+implicit Base AAPCS caused by a missing attribute. Many projects
+including the hard-float (VFP AAPCS) version of glibc contain assembler
+files that do not use floating point but do not have Tag_ABI_VFP_args.
+
+* Set the EF_ARM_ABI_FLOAT_SOFT or EF_ARM_ABI_FLOAT_HARD ELF header flag
+
+for Base or VFP AAPCS respectively. This flag is used by some ELF
+loaders.
+
+References:
+* Addenda to, and Errata in, the ABI for the ARM Architecture for
+ Tag_ABI_VFP_args
+* Elf for the ARM Architecture for ELF header flags
+
+Fixes LLVM PR36009
+
+PR: 229050
+Obtained from: llvm r338377 by Peter Smith
+
+Index: tools/lld/ELF/Arch/ARM.cpp
+===================================================================
+--- tools/lld/ELF/Arch/ARM.cpp (revision 336971)
++++ tools/lld/ELF/Arch/ARM.cpp (revision 336972)
+@@ -97,10 +97,19 @@ ARM::ARM() {
+ }
+
+ uint32_t ARM::calcEFlags() const {
++ // The ABIFloatType is used by loaders to detect the floating point calling
++ // convention.
++ uint32_t ABIFloatType = 0;
++ if (Config->ARMVFPArgs == ARMVFPArgKind::Base ||
++ Config->ARMVFPArgs == ARMVFPArgKind::Default)
++ ABIFloatType = EF_ARM_ABI_FLOAT_SOFT;
++ else if (Config->ARMVFPArgs == ARMVFPArgKind::VFP)
++ ABIFloatType = EF_ARM_ABI_FLOAT_HARD;
++
+ // We don't currently use any features incompatible with EF_ARM_EABI_VER5,
+ // but we don't have any firm guarantees of conformance. Linux AArch64
+ // kernels (as of 2016) require an EABI version to be set.
+- return EF_ARM_EABI_VER5;
++ return EF_ARM_EABI_VER5 | ABIFloatType;
+ }
+
+ RelExpr ARM::getRelExpr(RelType Type, const Symbol &S,
+Index: tools/lld/ELF/Config.h
+===================================================================
+--- tools/lld/ELF/Config.h (revision 336971)
++++ tools/lld/ELF/Config.h (revision 336972)
+@@ -54,6 +54,9 @@ enum class SortSectionPolicy { Default, None, Alig
+ // For --target2
+ enum class Target2Policy { Abs, Rel, GotRel };
+
++// For tracking ARM Float Argument PCS
++enum class ARMVFPArgKind { Default, Base, VFP, ToolChain };
++
+ struct SymbolVersion {
+ llvm::StringRef Name;
+ bool IsExternCpp;
+@@ -169,6 +172,7 @@ struct Configuration {
+ StripPolicy Strip;
+ UnresolvedPolicy UnresolvedSymbols;
+ Target2Policy Target2;
++ ARMVFPArgKind ARMVFPArgs = ARMVFPArgKind::Default;
+ BuildIdKind BuildId = BuildIdKind::None;
+ ELFKind EKind = ELFNoneKind;
+ uint16_t DefaultSymbolVersion = llvm::ELF::VER_NDX_GLOBAL;
+Index: tools/lld/ELF/InputFiles.cpp
+===================================================================
+--- tools/lld/ELF/InputFiles.cpp (revision 336971)
++++ tools/lld/ELF/InputFiles.cpp (revision 336972)
+@@ -441,6 +441,46 @@ void ObjFile<ELFT>::initializeSections(
+ }
+ }
+
++// For ARM only, to set the EF_ARM_ABI_FLOAT_SOFT or EF_ARM_ABI_FLOAT_HARD
++// flag in the ELF Header we need to look at Tag_ABI_VFP_args to find out how
++// the input objects have been compiled.
++static void updateARMVFPArgs(const ARMAttributeParser &Attributes,
++ const InputFile *F) {
++ if (!Attributes.hasAttribute(ARMBuildAttrs::ABI_VFP_args))
++ // If an ABI tag isn't present then it is implicitly given the value of 0
++ // which maps to ARMBuildAttrs::BaseAAPCS. However many assembler files,
++ // including some in glibc that don't use FP args (and should have value 3)
++ // don't have the attribute so we do not consider an implicit value of 0
++ // as a clash.
++ return;
++
++ unsigned VFPArgs = Attributes.getAttributeValue(ARMBuildAttrs::ABI_VFP_args);
++ ARMVFPArgKind Arg;
++ switch (VFPArgs) {
++ case ARMBuildAttrs::BaseAAPCS:
++ Arg = ARMVFPArgKind::Base;
++ break;
++ case ARMBuildAttrs::HardFPAAPCS:
++ Arg = ARMVFPArgKind::VFP;
++ break;
++ case ARMBuildAttrs::ToolChainFPPCS:
++ // Tool chain specific convention that conforms to neither AAPCS variant.
++ Arg = ARMVFPArgKind::ToolChain;
++ break;
++ case ARMBuildAttrs::CompatibleFPAAPCS:
++ // Object compatible with all conventions.
++ return;
++ default:
++ error(toString(F) + ": unknown Tag_ABI_VFP_args value: " + Twine(VFPArgs));
++ return;
++ }
++ // Follow ld.bfd and error if there is a mix of calling conventions.
++ if (Config->ARMVFPArgs != Arg && Config->ARMVFPArgs != ARMVFPArgKind::Default)
++ error(toString(F) + ": incompatible Tag_ABI_VFP_args");
++ else
++ Config->ARMVFPArgs = Arg;
++}
++
+ // The ARM support in lld makes some use of instructions that are not available
+ // on all ARM architectures. Namely:
+ // - Use of BLX instruction for interworking between ARM and Thumb state.
+@@ -520,6 +560,8 @@ InputSectionBase *ObjFile<ELFT>::createInputSectio
+ ArrayRef<uint8_t> Contents = check(this->getObj().getSectionContents(&Sec));
+ Attributes.Parse(Contents, /*isLittle*/ Config->EKind == ELF32LEKind);
+ updateSupportedARMFeatures(Attributes);
++ updateARMVFPArgs(Attributes, this);
++
+ // FIXME: Retain the first attribute section we see. The eglibc ARM
+ // dynamic loaders require the presence of an attribute section for dlopen
+ // to work. In a full implementation we would merge all attribute sections.
diff --git a/devel/llvm60/files/lld/patch-head-r337282.diff b/devel/llvm60/files/lld/patch-head-r337282.diff
new file mode 100644
index 000000000000..1e046d6e2b17
--- /dev/null
+++ b/devel/llvm60/files/lld/patch-head-r337282.diff
@@ -0,0 +1,39 @@
+r337282 | alc | 2018-08-04 04:30:51 +0200 (Sat, 04 Aug 2018) | 7 lines
+
+Set the default image base on arm64 and i386 to a superpage-aligned
+address.
+
+Reviewed by: emaste, markj
+Discussed with: dim
+Differential Revision: https://reviews.freebsd.org/D16385
+
+Index: tools/lld/ELF/Arch/AArch64.cpp
+===================================================================
+--- tools/lld/ELF/Arch/AArch64.cpp (revision 337281)
++++ tools/lld/ELF/Arch/AArch64.cpp (revision 337282)
+@@ -66,6 +66,10 @@ AArch64::AArch64() {
+ PltHeaderSize = 32;
+ DefaultMaxPageSize = 65536;
+
++ // Align to the 2 MiB page size (known as a superpage or huge page).
++ // FreeBSD automatically promotes 2 MiB-aligned allocations.
++ DefaultImageBase = 0x200000;
++
+ // It doesn't seem to be documented anywhere, but tls on aarch64 uses variant
+ // 1 of the tls structures and the tcb size is 16.
+ TcbSize = 16;
+Index: tools/lld/ELF/Arch/X86.cpp
+===================================================================
+--- tools/lld/ELF/Arch/X86.cpp (revision 337281)
++++ tools/lld/ELF/Arch/X86.cpp (revision 337282)
+@@ -61,6 +61,10 @@ X86::X86() {
+ PltHeaderSize = 16;
+ TlsGdRelaxSkip = 2;
+ TrapInstr = 0xcccccccc; // 0xcc = INT3
++
++ // Align to the non-PAE large page size (known as a superpage or huge page).
++ // FreeBSD automatically promotes large, superpage-aligned allocations.
++ DefaultImageBase = 0x400000;
+ }
+
+ static bool hasBaseReg(uint8_t ModRM) { return (ModRM & 0xc7) != 0x5; }
diff --git a/devel/llvm60/files/lld/patch-head-r338251.diff b/devel/llvm60/files/lld/patch-head-r338251.diff
new file mode 100644
index 000000000000..1c3df02100cd
--- /dev/null
+++ b/devel/llvm60/files/lld/patch-head-r338251.diff
@@ -0,0 +1,123 @@
+r338251 | markj | 2018-08-23 16:58:19 +0200 (Thu, 23 Aug 2018) | 29 lines
+
+Add an lld option to emit PC-relative relocations for ifunc calls.
+
+The current kernel ifunc implementation creates a PLT entry for each
+ifunc definition. ifunc calls therefore consist of a call to the
+PLT entry followed by an indirect jump. The jump target is written
+during boot when the kernel linker resolves R_[*]_IRELATIVE relocations.
+This implementation is defined by requirements for userland code, where
+text relocations are avoided. This requirement is not present for the
+kernel, so the implementation has avoidable overhead (namely, an extra
+indirect jump per call).
+
+Address this for now by adding a special option to the static linker
+to inhibit PLT creation for ifuncs. Instead, relocations to ifunc call
+sites are passed through to the output file, so the kernel linker can
+enumerate such call sites and apply PC-relative relocations directly
+to the text section. Thus the overhead of an ifunc call becomes exactly
+the same as that of an ordinary function call. This option is only for
+use by the kernel and will not work for regular programs.
+
+The final form of this optimization is up for debate; for now, this
+change is simple and static enough to be acceptable as an interim
+solution.
+
+Reviewed by: emaste
+Discussed with: arichardson, dim
+MFC after: 1 month
+Sponsored by: The FreeBSD Foundation
+Differential Revision: https://reviews.freebsd.org/D16748
+
+Index: tools/lld/ELF/Config.h
+===================================================================
+--- tools/lld/ELF/Config.h (revision 338250)
++++ tools/lld/ELF/Config.h (revision 338251)
+@@ -155,6 +155,7 @@ struct Configuration {
+ bool ZCombreloc;
+ bool ZExecstack;
+ bool ZHazardplt;
++ bool ZIfuncnoplt;
+ bool ZNocopyreloc;
+ bool ZNodelete;
+ bool ZNodlopen;
+Index: tools/lld/ELF/Driver.cpp
+===================================================================
+--- tools/lld/ELF/Driver.cpp (revision 338250)
++++ tools/lld/ELF/Driver.cpp (revision 338251)
+@@ -669,6 +669,7 @@ void LinkerDriver::readConfigs(opt::InputArgList &
+ Config->ZCombreloc = !hasZOption(Args, "nocombreloc");
+ Config->ZExecstack = hasZOption(Args, "execstack");
+ Config->ZHazardplt = hasZOption(Args, "hazardplt");
++ Config->ZIfuncnoplt = hasZOption(Args, "ifunc-noplt");
+ Config->ZNocopyreloc = hasZOption(Args, "nocopyreloc");
+ Config->ZNodelete = hasZOption(Args, "nodelete");
+ Config->ZNodlopen = hasZOption(Args, "nodlopen");
+Index: tools/lld/ELF/Relocations.cpp
+===================================================================
+--- tools/lld/ELF/Relocations.cpp (revision 338250)
++++ tools/lld/ELF/Relocations.cpp (revision 338251)
+@@ -374,6 +374,9 @@ static bool isStaticLinkTimeConstant(RelExpr E, Re
+ R_PPC_PLT_OPD, R_TLSDESC_CALL, R_TLSDESC_PAGE, R_HINT>(E))
+ return true;
+
++ if (Sym.isGnuIFunc() && Config->ZIfuncnoplt)
++ return false;
++
+ // These never do, except if the entire file is position dependent or if
+ // only the low bits are used.
+ if (E == R_GOT || E == R_PLT || E == R_TLSDESC)
+@@ -921,7 +924,9 @@ static void scanRelocs(InputSectionBase &Sec, Arra
+ // Strenghten or relax a PLT access.
+ //
+ // GNU ifunc symbols must be accessed via PLT because their addresses
+- // are determined by runtime.
++ // are determined by runtime. If the -z ifunc-noplt option is specified,
++ // we permit the optimization of ifunc calls by omitting the PLT entry
++ // and preserving relocations at ifunc call sites.
+ //
+ // On the other hand, if we know that a PLT entry will be resolved within
+ // the same ELF module, we can skip PLT access and directly jump to the
+@@ -929,7 +934,7 @@ static void scanRelocs(InputSectionBase &Sec, Arra
+ // all dynamic symbols that can be resolved within the executable will
+ // actually be resolved that way at runtime, because the main exectuable
+ // is always at the beginning of a search list. We can leverage that fact.
+- if (Sym.isGnuIFunc())
++ if (Sym.isGnuIFunc() && !Config->ZIfuncnoplt)
+ Expr = toPlt(Expr);
+ else if (!Preemptible && Expr == R_GOT_PC && !isAbsoluteValue(Sym))
+ Expr =
+@@ -1034,6 +1039,16 @@ static void scanRelocs(InputSectionBase &Sec, Arra
+ continue;
+ }
+
++ // Preserve relocations against ifuncs if we were asked to do so.
++ if (Sym.isGnuIFunc() && Config->ZIfuncnoplt) {
++ if (Config->IsRela)
++ InX::RelaDyn->addReloc({Type, &Sec, Offset, false, &Sym, Addend});
++ else
++ // Preserve the existing addend.
++ InX::RelaDyn->addReloc({Type, &Sec, Offset, false, &Sym, 0});
++ continue;
++ }
++
+ // If the output being produced is position independent, the final value
+ // is still not known. In that case we still need some help from the
+ // dynamic linker. We can however do better than just copying the incoming
+Index: tools/lld/ELF/Writer.cpp
+===================================================================
+--- tools/lld/ELF/Writer.cpp (revision 338250)
++++ tools/lld/ELF/Writer.cpp (revision 338251)
+@@ -1400,8 +1400,11 @@ template <class ELFT> void Writer<ELFT>::finalizeS
+ applySynthetic({InX::EhFrame},
+ [](SyntheticSection *SS) { SS->finalizeContents(); });
+
+- for (Symbol *S : Symtab->getSymbols())
++ for (Symbol *S : Symtab->getSymbols()) {
+ S->IsPreemptible |= computeIsPreemptible(*S);
++ if (S->isGnuIFunc() && Config->ZIfuncnoplt)
++ S->ExportDynamic = true;
++ }
+
+ // Scan relocations. This must be done after every symbol is declared so that
+ // we can correctly decide if a dynamic relocation is needed.
diff --git a/devel/llvm60/files/lld/patch-head-r338682.diff b/devel/llvm60/files/lld/patch-head-r338682.diff
new file mode 100644
index 000000000000..1783fe227489
--- /dev/null
+++ b/devel/llvm60/files/lld/patch-head-r338682.diff
@@ -0,0 +1,55 @@
+r338682 | emaste | 2018-09-14 17:15:16 +0200 (Fri, 14 Sep 2018) | 16 lines
+
+lld: add -z interpose support
+
+-z interpose sets the DF_1_INTERPOSE flag, marking the object as an
+interposer.
+
+Committed upstream as LLVM r342239.
+
+PR: 230604
+Reported by: jbeich
+Reviewed by: markj
+Approved by: re (kib)
+MFC after: 1 week
+Relnotes: Yes
+Sponsored by: The FreeBSD Foundation
+Differential Revision: https://reviews.freebsd.org/D17172
+
+Index: tools/lld/ELF/Config.h
+===================================================================
+--- tools/lld/ELF/Config.h (revision 338681)
++++ tools/lld/ELF/Config.h (revision 338682)
+@@ -156,6 +156,7 @@ struct Configuration {
+ bool ZExecstack;
+ bool ZHazardplt;
+ bool ZIfuncnoplt;
++ bool ZInterpose;
+ bool ZNocopyreloc;
+ bool ZNodelete;
+ bool ZNodlopen;
+Index: tools/lld/ELF/Driver.cpp
+===================================================================
+--- tools/lld/ELF/Driver.cpp (revision 338681)
++++ tools/lld/ELF/Driver.cpp (revision 338682)
+@@ -670,6 +670,7 @@ void LinkerDriver::readConfigs(opt::InputArgList &
+ Config->ZExecstack = hasZOption(Args, "execstack");
+ Config->ZHazardplt = hasZOption(Args, "hazardplt");
+ Config->ZIfuncnoplt = hasZOption(Args, "ifunc-noplt");
++ Config->ZInterpose = hasZOption(Args, "interpose");
+ Config->ZNocopyreloc = hasZOption(Args, "nocopyreloc");
+ Config->ZNodelete = hasZOption(Args, "nodelete");
+ Config->ZNodlopen = hasZOption(Args, "nodlopen");
+Index: tools/lld/ELF/SyntheticSections.cpp
+===================================================================
+--- tools/lld/ELF/SyntheticSections.cpp (revision 338681)
++++ tools/lld/ELF/SyntheticSections.cpp (revision 338682)
+@@ -1034,6 +1034,8 @@ template <class ELFT> void DynamicSection<ELFT>::f
+ uint32_t DtFlags1 = 0;
+ if (Config->Bsymbolic)
+ DtFlags |= DF_SYMBOLIC;
++ if (Config->ZInterpose)
++ DtFlags1 |= DF_1_INTERPOSE;
+ if (Config->ZNodelete)
+ DtFlags1 |= DF_1_NODELETE;
+ if (Config->ZNodlopen)
diff --git a/devel/llvm60/files/lld/patch-head-r339013.diff b/devel/llvm60/files/lld/patch-head-r339013.diff
new file mode 100644
index 000000000000..ba614706a88d
--- /dev/null
+++ b/devel/llvm60/files/lld/patch-head-r339013.diff
@@ -0,0 +1,39 @@
+r339013 | dim | 2018-09-29 16:12:03 +0200 (Sat, 29 Sep 2018) | 24 lines
+
+Pull in r329557 from upstream lld trunk (by George Rimar):
+
+ [ELF] - Allow LLD to produce file symbols.
+
+ This is for PR36716 and
+ this enables emitting STT_FILE symbols.
+
+ Output size affect is minor:
+ lld binary size changes from 52,883,408 to 52,949,400
+ clang binary size changes from 83,136,456 to 83,219,600
+
+ Differential revision: https://reviews.llvm.org/D45261
+
+This fixes a regression in lld that made it stop emitting STT_FILE
+symbols, which ctfmerge relies upon to uniquify function table entries
+that reference STB_LOCAL symbols. Consequently, ctfmerge stopped
+emitting entries for static functions into the function table, and
+dtrace no longer gets type info for them.
+
+Approved by: re (kib)
+Reported by: markj
+PR: 230444
+MFC after: 3 days
+
+Index: tools/lld/ELF/Writer.cpp
+===================================================================
+--- tools/lld/ELF/Writer.cpp (revision 339012)
++++ tools/lld/ELF/Writer.cpp (revision 339013)
+@@ -487,7 +487,7 @@ template <class ELFT> void Writer<ELFT>::run() {
+
+ static bool shouldKeepInSymtab(SectionBase *Sec, StringRef SymName,
+ const Symbol &B) {
+- if (B.isFile() || B.isSection())
++ if (B.isSection())
+ return false;
+
+ // If sym references a section in a discarded group, don't keep it.
diff --git a/devel/llvm60/files/lld/patch-head-r339304.diff b/devel/llvm60/files/lld/patch-head-r339304.diff
new file mode 100644
index 000000000000..59ff933dfff6
--- /dev/null
+++ b/devel/llvm60/files/lld/patch-head-r339304.diff
@@ -0,0 +1,37 @@
+r339304 | emaste | 2018-10-11 15:19:17 +0200 (Thu, 11 Oct 2018) | 13 lines
+
+lld: set sh_link and sh_info for .rela.plt sections
+
+ELF spec says that for SHT_REL and SHT_RELA sh_link should reference the
+associated string table and sh_info should reference the "section to
+which the relocation applies." ELF Tool Chain's elfcopy / strip use
+this (in part) to control whether or not the relocation entry is copied
+to the output.
+
+LLVM PR 37538 https://bugs.llvm.org/show_bug.cgi?id=37538
+
+Approved by: re (kib)
+Obtained from: llvm r344226 (backported for 6.0)
+
+Index: tools/lld/ELF/SyntheticSections.cpp
+===================================================================
+--- tools/lld/ELF/SyntheticSections.cpp (revision 339303)
++++ tools/lld/ELF/SyntheticSections.cpp (revision 339304)
+@@ -1213,11 +1213,13 @@ void RelocationBaseSection::addReloc(const Dynamic
+ void RelocationBaseSection::finalizeContents() {
+ // If all relocations are R_*_RELATIVE they don't refer to any
+ // dynamic symbol and we don't need a dynamic symbol table. If that
+- // is the case, just use 0 as the link.
+- Link = InX::DynSymTab ? InX::DynSymTab->getParent()->SectionIndex : 0;
++ // is the case, just use the index of the regular symbol table section.
++ getParent()->Link = InX::DynSymTab ?
++ InX::DynSymTab->getParent()->SectionIndex :
++ InX::SymTab->getParent()->SectionIndex;
+
+- // Set required output section properties.
+- getParent()->Link = Link;
++ if (InX::RelaIplt == this || InX::RelaPlt == this)
++ getParent()->Info = InX::GotPlt->getParent()->SectionIndex;
+ }
+
+ template <class ELFT>
diff --git a/devel/llvm60/files/lldb/patch-head-r332849.diff b/devel/llvm60/files/lldb/patch-head-r332849.diff
new file mode 100644
index 000000000000..ced3a7a80319
--- /dev/null
+++ b/devel/llvm60/files/lldb/patch-head-r332849.diff
@@ -0,0 +1,38 @@
+r332849 | emaste | 2018-04-21 02:34:46 +0200 (Sat, 21 Apr 2018) | 20 lines
+
+lldb: propagate error to user if memory read fails
+
+Previously, an attempt to read an unreadable access reported zeros:
+
+(lldb) memory read -format hex -size 8 0
+0x00000000: 0x0000000000000000 0x0000000000000000
+0x00000010: 0x0000000000000000 0x0000000000000000
+...
+
+Now, if DoReadMemory encounters error then return 0 (bytes read) so we
+report the error to the user:
+
+(lldb) memory read -format hex -size 8 0
+error: Bad address
+
+LLVM PR: 37190
+
+MFC after: 1 week
+Sponsored by: The FreeBSD Foundation
+
+Index: tools/lldb/source/Plugins/Process/FreeBSD/ProcessMonitor.cpp
+===================================================================
+--- tools/lldb/source/Plugins/Process/FreeBSD/ProcessMonitor.cpp (revision 332848)
++++ tools/lldb/source/Plugins/Process/FreeBSD/ProcessMonitor.cpp (revision 332849)
+@@ -163,8 +163,10 @@ static size_t DoReadMemory(lldb::pid_t pid, lldb::
+ pi_desc.piod_addr = buf;
+ pi_desc.piod_len = size;
+
+- if (PTRACE(PT_IO, pid, (caddr_t)&pi_desc, 0) < 0)
++ if (PTRACE(PT_IO, pid, (caddr_t)&pi_desc, 0) < 0) {
+ error.SetErrorToErrno();
++ return 0;
++ }
+ return pi_desc.piod_len;
+ }
+
diff --git a/devel/llvm60/files/lldb/patch-head-r332965.diff b/devel/llvm60/files/lldb/patch-head-r332965.diff
new file mode 100644
index 000000000000..67e33f30e33a
--- /dev/null
+++ b/devel/llvm60/files/lldb/patch-head-r332965.diff
@@ -0,0 +1,22 @@
+r332965 | emaste | 2018-04-24 21:26:58 +0200 (Tue, 24 Apr 2018) | 8 lines
+
+lldb: remove assertion that target_arch is FreeBSD
+
+The target is not necessarily a FreeBSD binary - for example, it may be
+a Linux binary running under the linuxulator. Basic ptrace (live)
+debugging already worked in this case, except for the assertion.
+
+Sponsored by: Turing Robotic Industries Inc.
+
+Index: tools/lldb/source/Plugins/Process/FreeBSD/FreeBSDThread.cpp
+===================================================================
+--- tools/lldb/source/Plugins/Process/FreeBSD/FreeBSDThread.cpp (revision 332964)
++++ tools/lldb/source/Plugins/Process/FreeBSD/FreeBSDThread.cpp (revision 332965)
+@@ -169,7 +169,6 @@ lldb::RegisterContextSP FreeBSDThread::GetRegister
+ RegisterInfoInterface *reg_interface = NULL;
+ const ArchSpec &target_arch = GetProcess()->GetTarget().GetArchitecture();
+
+- assert(target_arch.GetTriple().getOS() == llvm::Triple::FreeBSD);
+ switch (target_arch.GetMachine()) {
+ case llvm::Triple::aarch64:
+ reg_interface = new RegisterInfoPOSIX_arm64(target_arch);
diff --git a/devel/llvm60/files/llvm-wrapper.sh.in b/devel/llvm60/files/llvm-wrapper.sh.in
new file mode 100644
index 000000000000..dfece2c0ced9
--- /dev/null
+++ b/devel/llvm60/files/llvm-wrapper.sh.in
@@ -0,0 +1,12 @@
+#!/bin/sh
+# $FreeBSD$
+
+LLVM_PREFIX="%%LLVM_PREFIX%%"
+LLVM_SUFFIX="%%LLVM_SUFFIX%%"
+
+tool=$0
+[ -L "$tool" ] && tool=$(/bin/realpath $tool)
+tool=${tool##*/}
+tool="${LLVM_PREFIX}/bin/${tool%${LLVM_SUFFIX}}"
+LD_LIBRARY_PATH="${LD_LIBRARY_PATH:+${LD_LIBRARY_PATH}:}${LLVM_PREFIX}/lib" \
+ exec "${tool}" "${@}"
diff --git a/devel/llvm60/files/openmp/patch-bug32279 b/devel/llvm60/files/openmp/patch-bug32279
new file mode 100644
index 000000000000..420402ab15a6
--- /dev/null
+++ b/devel/llvm60/files/openmp/patch-bug32279
@@ -0,0 +1,29 @@
+--- projects/openmp/runtime/cmake/LibompHandleFlags.cmake.orig 2017-03-16 15:50:48 UTC
++++ projects/openmp/runtime/cmake/LibompHandleFlags.cmake
+@@ -156,6 +156,11 @@ function(libomp_get_libflags libflags)
+ if(${IA32})
+ libomp_append(libflags_local -lirc_pic LIBOMP_HAVE_IRC_PIC_LIBRARY)
+ endif()
++ IF(${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD")
++ libomp_append(libflags_local "-Wl,--no-as-needed" LIBOMP_HAVE_AS_NEEDED_FLAG)
++ libomp_append(libflags_local "-lm")
++ libomp_append(libflags_local "-Wl,--as-needed" LIBOMP_HAVE_AS_NEEDED_FLAG)
++ ENDIF(${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD")
+ IF(${CMAKE_SYSTEM_NAME} MATCHES "NetBSD")
+ libomp_append(libflags_local -lm)
+ ENDIF(${CMAKE_SYSTEM_NAME} MATCHES "NetBSD")
+ runtime/cmake/LibompHandleFlags.cmake | 5 +++++
+ runtime/cmake/LibompMicroTests.cmake | 2 +-
+ 2 files changed, 6 insertions(+), 1 deletion(-)
+
+--- projects/openmp/runtime/cmake/LibompMicroTests.cmake.orig 2017-03-16 15:50:48 UTC
++++ projects/openmp/runtime/cmake/LibompMicroTests.cmake
+@@ -171,7 +171,7 @@ add_custom_command(
+ add_custom_target(libomp-test-deps DEPENDS test-deps/.success)
+ set(libomp_expected_library_deps)
+ if(CMAKE_SYSTEM_NAME MATCHES "FreeBSD")
+- set(libomp_expected_library_deps libc.so.7 libthr.so.3)
++ set(libomp_expected_library_deps libc.so.7 libthr.so.3 libm.so.5)
+ libomp_append(libomp_expected_library_deps libhwloc.so.5 LIBOMP_USE_HWLOC)
+ elseif(CMAKE_SYSTEM_NAME MATCHES "NetBSD")
+ set(libomp_expected_library_deps libc.so.12 libpthread.so.1 libm.so.0)
diff --git a/devel/llvm60/files/openmp/patch-i386 b/devel/llvm60/files/openmp/patch-i386
new file mode 100644
index 000000000000..9300640f6845
--- /dev/null
+++ b/devel/llvm60/files/openmp/patch-i386
@@ -0,0 +1,11 @@
+--- projects/openmp/runtime/src/kmp_runtime.cpp.orig 2017-07-17 09:03:14 UTC
++++ projects/openmp/runtime/src/kmp_runtime.cpp
+@@ -7535,7 +7535,7 @@ __kmp_determine_reduction_method(
+
+ #elif KMP_ARCH_X86 || KMP_ARCH_ARM || KMP_ARCH_AARCH || KMP_ARCH_MIPS
+
+-#if KMP_OS_LINUX || KMP_OS_WINDOWS
++#if KMP_OS_LINUX || KMP_OS_FREEBSD || KMP_OS_WINDOWS
+
+ // basic tuning
+
diff --git a/devel/llvm60/files/patch-cmake_modules_AddSphinxTarget.cmake b/devel/llvm60/files/patch-cmake_modules_AddSphinxTarget.cmake
new file mode 100644
index 000000000000..f4fc8f25e306
--- /dev/null
+++ b/devel/llvm60/files/patch-cmake_modules_AddSphinxTarget.cmake
@@ -0,0 +1,11 @@
+--- cmake/modules/AddSphinxTarget.cmake.orig
++++ cmake/modules/AddSphinxTarget.cmake
+@@ -29,6 +29,8 @@
+ endif()
+
+ add_custom_target(${SPHINX_TARGET_NAME}
++ COMMAND ${CMAKE_COMMAND}
++ -E make_directory ${SPHINX_BUILD_DIR}
+ COMMAND ${SPHINX_EXECUTABLE}
+ -b ${builder}
+ -d "${SPHINX_DOC_TREE_DIR}"
diff --git a/devel/llvm60/files/patch-head-r308867.diff b/devel/llvm60/files/patch-head-r308867.diff
new file mode 100644
index 000000000000..07efefa7c899
--- /dev/null
+++ b/devel/llvm60/files/patch-head-r308867.diff
@@ -0,0 +1,33 @@
+r308867 | dim | 2016-11-19 22:05:17 +0100 (Sat, 19 Nov 2016) | 15 lines
+
+Work around LLVM PR30879, which is about a bad interaction between X86
+Call Frame Optimization on i386 and libunwind, by disallowing the
+optimization for i386-freebsd12.
+
+This should fix some instances of broken exception handling when frame
+pointers are omitted, in particular some unittests run during the build
+of editors/libreoffice.
+
+This hack will be removed as soon as upstream has implemented a more
+permanent fix for this problem.
+
+Upstream PR: https://llvm.org/bugs/show_bug.cgi?id=30879
+Reviewed by: emaste
+PR: 212343
+
+Index: lib/Target/X86/X86CallFrameOptimization.cpp
+===================================================================
+--- lib/Target/X86/X86CallFrameOptimization.cpp (revision 308866)
++++ lib/Target/X86/X86CallFrameOptimization.cpp (revision 308867)
+@@ -125,6 +125,11 @@ bool X86CallFrameOptimization::isLegal(MachineFunc
+ if (NoX86CFOpt.getValue())
+ return false;
+
++ // Work around LLVM PR30879 (bad interaction between CFO and libunwind)
++ if (STI->isTargetFreeBSD() && STI->is32Bit() &&
++ STI->getTargetTriple().getOSMajorVersion() >= 12)
++ return false;
++
+ // We can't encode multiple DW_CFA_GNU_args_size or DW_CFA_def_cfa_offset
+ // in the compact unwind encoding that Darwin uses. So, bail if there
+ // is a danger of that being generated.
diff --git a/devel/llvm60/files/patch-head-r330686.diff b/devel/llvm60/files/patch-head-r330686.diff
new file mode 100644
index 000000000000..5a5f04e3b0ef
--- /dev/null
+++ b/devel/llvm60/files/patch-head-r330686.diff
@@ -0,0 +1,80 @@
+r330686 | dim | 2018-03-09 10:21:22 +0100 (Fri, 09 Mar 2018) | 20 lines
+
+Pull in r326882 from upstream llvm trunk (by Sjoerd Meijer):
+
+ [ARM] Fix for PR36577
+
+ Don't PerformSHLSimplify if the given node is used by a node that
+ also uses a constant because we may get stuck in an infinite combine
+ loop.
+
+ bugzilla: https://bugs.llvm.org/show_bug.cgi?id=36577
+
+ Patch by Sam Parker.
+
+ Differential Revision: https://reviews.llvm.org/D44097
+
+This fixes a hang when compiling one particular file in java/openjdk8
+for armv6 and armv7.
+
+Reported by: swills
+PR: 226388
+
+Index: lib/Target/ARM/ARMISelLowering.cpp
+===================================================================
+--- lib/Target/ARM/ARMISelLowering.cpp (revision 330685)
++++ lib/Target/ARM/ARMISelLowering.cpp (revision 330686)
+@@ -10201,7 +10201,14 @@ static SDValue PerformSHLSimplify(SDNode *N,
+ case ISD::XOR:
+ case ISD::SETCC:
+ case ARMISD::CMP:
+- // Check that its not already using a shl.
++ // Check that the user isn't already using a constant because there
++ // aren't any instructions that support an immediate operand and a
++ // shifted operand.
++ if (isa<ConstantSDNode>(U->getOperand(0)) ||
++ isa<ConstantSDNode>(U->getOperand(1)))
++ return SDValue();
++
++ // Check that it's not already using a shift.
+ if (U->getOperand(0).getOpcode() == ISD::SHL ||
+ U->getOperand(1).getOpcode() == ISD::SHL)
+ return SDValue();
+@@ -10223,8 +10230,6 @@ static SDValue PerformSHLSimplify(SDNode *N,
+ if (!C1ShlC2 || !C2)
+ return SDValue();
+
+- DEBUG(dbgs() << "Trying to simplify shl: "; N->dump());
+-
+ APInt C2Int = C2->getAPIntValue();
+ APInt C1Int = C1ShlC2->getAPIntValue();
+
+@@ -10238,12 +10243,12 @@ static SDValue PerformSHLSimplify(SDNode *N,
+ C1Int.lshrInPlace(C2Int);
+
+ // The immediates are encoded as an 8-bit value that can be rotated.
+- unsigned Zeros = C1Int.countLeadingZeros() + C1Int.countTrailingZeros();
+- if (C1Int.getBitWidth() - Zeros > 8)
+- return SDValue();
++ auto LargeImm = [](const APInt &Imm) {
++ unsigned Zeros = Imm.countLeadingZeros() + Imm.countTrailingZeros();
++ return Imm.getBitWidth() - Zeros > 8;
++ };
+
+- Zeros = C2Int.countLeadingZeros() + C2Int.countTrailingZeros();
+- if (C2Int.getBitWidth() - Zeros > 8)
++ if (LargeImm(C1Int) || LargeImm(C2Int))
+ return SDValue();
+
+ SelectionDAG &DAG = DCI.DAG;
+@@ -10254,6 +10259,10 @@ static SDValue PerformSHLSimplify(SDNode *N,
+ // Shift left to compensate for the lshr of C1Int.
+ SDValue Res = DAG.getNode(ISD::SHL, dl, MVT::i32, BinOp, SHL.getOperand(1));
+
++ DEBUG(dbgs() << "Simplify shl use:\n"; SHL.getOperand(0).dump(); SHL.dump();
++ N->dump());
++ DEBUG(dbgs() << "Into:\n"; X.dump(); BinOp.dump(); Res.dump());
++
+ DAG.ReplaceAllUsesWith(SDValue(N, 0), Res);
+ return SDValue(N, 0);
+ }
diff --git a/devel/llvm60/files/patch-head-r331065.diff b/devel/llvm60/files/patch-head-r331065.diff
new file mode 100644
index 000000000000..6976ee83460f
--- /dev/null
+++ b/devel/llvm60/files/patch-head-r331065.diff
@@ -0,0 +1,88 @@
+r331065 | dim | 2018-03-16 18:50:44 +0100 (Fri, 16 Mar 2018) | 17 lines
+
+Pull in r327638 from upstream llvm trunk (by Matthew Simpson):
+
+ [ConstantFolding, InstSimplify] Handle more vector GEPs
+
+ This patch addresses some additional cases where the compiler crashes
+ upon encountering vector GEPs. This should fix PR36116.
+
+ Differential Revision: https://reviews.llvm.org/D44219
+ Reference: https://bugs.llvm.org/show_bug.cgi?id=36116
+
+This fixes an assertion when building the emulators/snes9x port.
+
+Reported by: jbeich
+PR: 225471
+MFC after: 3 months
+X-MFC-With: r327952
+
+Index: lib/Analysis/InstructionSimplify.cpp
+===================================================================
+--- lib/Analysis/InstructionSimplify.cpp (revision 331064)
++++ lib/Analysis/InstructionSimplify.cpp (revision 331065)
+@@ -3697,7 +3697,7 @@ static Value *SimplifyGEPInst(Type *SrcTy, ArrayRe
+
+ if (Ops.size() == 2) {
+ // getelementptr P, 0 -> P.
+- if (match(Ops[1], m_Zero()))
++ if (match(Ops[1], m_Zero()) && Ops[0]->getType() == GEPTy)
+ return Ops[0];
+
+ Type *Ty = SrcTy;
+@@ -3706,7 +3706,7 @@ static Value *SimplifyGEPInst(Type *SrcTy, ArrayRe
+ uint64_t C;
+ uint64_t TyAllocSize = Q.DL.getTypeAllocSize(Ty);
+ // getelementptr P, N -> P if P points to a type of zero size.
+- if (TyAllocSize == 0)
++ if (TyAllocSize == 0 && Ops[0]->getType() == GEPTy)
+ return Ops[0];
+
+ // The following transforms are only safe if the ptrtoint cast
+Index: lib/IR/ConstantFold.cpp
+===================================================================
+--- lib/IR/ConstantFold.cpp (revision 331064)
++++ lib/IR/ConstantFold.cpp (revision 331065)
+@@ -2018,8 +2018,16 @@ static bool isInBoundsIndices(ArrayRef<IndexTy> Id
+
+ // If the first index is one and all the rest are zero, it's in bounds,
+ // by the one-past-the-end rule.
+- if (!cast<ConstantInt>(Idxs[0])->isOne())
+- return false;
++ if (auto *CI = dyn_cast<ConstantInt>(Idxs[0])) {
++ if (!CI->isOne())
++ return false;
++ } else {
++ auto *CV = cast<ConstantDataVector>(Idxs[0]);
++ CI = dyn_cast_or_null<ConstantInt>(CV->getSplatValue());
++ if (!CI || !CI->isOne())
++ return false;
++ }
++
+ for (unsigned i = 1, e = Idxs.size(); i != e; ++i)
+ if (!cast<Constant>(Idxs[i])->isNullValue())
+ return false;
+@@ -2049,15 +2057,18 @@ Constant *llvm::ConstantFoldGetElementPtr(Type *Po
+ ArrayRef<Value *> Idxs) {
+ if (Idxs.empty()) return C;
+
+- if (isa<UndefValue>(C)) {
+- Type *GEPTy = GetElementPtrInst::getGEPReturnType(
+- C, makeArrayRef((Value * const *)Idxs.data(), Idxs.size()));
++ Type *GEPTy = GetElementPtrInst::getGEPReturnType(
++ C, makeArrayRef((Value *const *)Idxs.data(), Idxs.size()));
++
++ if (isa<UndefValue>(C))
+ return UndefValue::get(GEPTy);
+- }
+
+ Constant *Idx0 = cast<Constant>(Idxs[0]);
+ if (Idxs.size() == 1 && (Idx0->isNullValue() || isa<UndefValue>(Idx0)))
+- return C;
++ return GEPTy->isVectorTy() && !C->getType()->isVectorTy()
++ ? ConstantVector::getSplat(
++ cast<VectorType>(GEPTy)->getNumElements(), C)
++ : C;
+
+ if (C->isNullValue()) {
+ bool isNull = true;
diff --git a/devel/llvm60/files/patch-head-r331366.diff b/devel/llvm60/files/patch-head-r331366.diff
new file mode 100644
index 000000000000..dccde7fb6bd6
--- /dev/null
+++ b/devel/llvm60/files/patch-head-r331366.diff
@@ -0,0 +1,609 @@
+r331366 | dim | 2018-03-22 19:58:34 +0100 (Thu, 22 Mar 2018) | 61 lines
+
+Pull in r327101 from upstream llvm trunk (by Rafael Espindola):
+
+ Don't treat .symver as a regular alias definition.
+
+ This patch starts simplifying the handling of .symver.
+
+ For now it just moves the responsibility for creating an alias down to
+ the streamer. With that the asm streamer can pass a .symver unchanged,
+ which is nice since gas cannot parse "foo@bar = zed".
+
+ In a followup I hope to move the handling down to the writer so that
+ we don't need special hacks for avoiding breaking names with @@@ on
+ windows.
+
+Pull in r327160 from upstream llvm trunk (by Rafael Espindola):
+
+ Delay creating an alias for @@@.
+
+ With this we only create an alias for @@@ once we know if it should
+ use @ or @@. This avoids last minutes renames and hacks to handle MS
+ names.
+
+ This only handles the ELF writer. LTO still has issues with @@@
+ aliases.
+
+Pull in r327928 from upstream llvm trunk (by Vitaly Buka):
+
+ Object: Move attribute calculation into RecordStreamer. NFC
+
+ Summary: Preparation for D44274
+
+ Reviewers: pcc, espindola
+
+ Subscribers: hiraditya
+
+ Differential Revision: https://reviews.llvm.org/D44276
+
+Pull in r327930 from upstream llvm trunk (by Vitaly Buka):
+
+ Object: Fix handling of @@@ in .symver directive
+
+ Summary:
+ name@@@nodename is going to be replaced with name@@nodename if symbols is
+ defined in the assembled file, or name@nodename if undefined.
+ https://sourceware.org/binutils/docs/as/Symver.html
+
+ Fixes PR36623
+
+ Reviewers: pcc, espindola
+
+ Subscribers: mehdi_amini, hiraditya
+
+ Differential Revision: https://reviews.llvm.org/D44274
+
+Together, these changes fix handling of @@@ in .symver directives when
+doing Link Time Optimization.
+
+Reported by: Shawn Webb <shawn.webb@hardenedbsd.org>
+MFC after: 3 months
+X-MFC-With: r327952
+
+Index: include/llvm/MC/MCAssembler.h
+===================================================================
+--- include/llvm/MC/MCAssembler.h (revision 331365)
++++ include/llvm/MC/MCAssembler.h (revision 331366)
+@@ -206,6 +206,8 @@ class MCAssembler {
+ handleFixup(const MCAsmLayout &Layout, MCFragment &F, const MCFixup &Fixup);
+
+ public:
++ std::vector<std::pair<StringRef, const MCSymbol *>> Symvers;
++
+ /// Construct a new assembler instance.
+ //
+ // FIXME: How are we going to parameterize this? Two obvious options are stay
+Index: include/llvm/MC/MCELFStreamer.h
+===================================================================
+--- include/llvm/MC/MCELFStreamer.h (revision 331365)
++++ include/llvm/MC/MCELFStreamer.h (revision 331366)
+@@ -51,6 +51,8 @@ class MCELFStreamer : public MCObjectStreamer {
+ unsigned ByteAlignment) override;
+
+ void emitELFSize(MCSymbol *Symbol, const MCExpr *Value) override;
++ void emitELFSymverDirective(StringRef AliasName,
++ const MCSymbol *Aliasee) override;
+
+ void EmitLocalCommonSymbol(MCSymbol *Symbol, uint64_t Size,
+ unsigned ByteAlignment) override;
+Index: include/llvm/MC/MCStreamer.h
+===================================================================
+--- include/llvm/MC/MCStreamer.h (revision 331365)
++++ include/llvm/MC/MCStreamer.h (revision 331366)
+@@ -519,9 +519,10 @@ class MCStreamer {
+ ///
+ /// This corresponds to an assembler statement such as:
+ /// .symver _start, foo@@SOME_VERSION
+- /// \param Alias - The versioned alias (i.e. "foo@@SOME_VERSION")
++ /// \param AliasName - The versioned alias (i.e. "foo@@SOME_VERSION")
+ /// \param Aliasee - The aliased symbol (i.e. "_start")
+- virtual void emitELFSymverDirective(MCSymbol *Alias, const MCSymbol *Aliasee);
++ virtual void emitELFSymverDirective(StringRef AliasName,
++ const MCSymbol *Aliasee);
+
+ /// \brief Emit a Linker Optimization Hint (LOH) directive.
+ /// \param Args - Arguments of the LOH.
+Index: lib/MC/ELFObjectWriter.cpp
+===================================================================
+--- lib/MC/ELFObjectWriter.cpp (revision 331365)
++++ lib/MC/ELFObjectWriter.cpp (revision 331366)
+@@ -128,8 +128,6 @@ class ELFObjectWriter : public MCObjectWriter {
+ /// @name Symbol Table Data
+ /// @{
+
+- BumpPtrAllocator Alloc;
+- StringSaver VersionSymSaver{Alloc};
+ StringTableBuilder StrTabBuilder{StringTableBuilder::ELF};
+
+ /// @}
+@@ -391,27 +389,29 @@ void ELFObjectWriter::executePostLayoutBinding(MCA
+ const MCAsmLayout &Layout) {
+ // The presence of symbol versions causes undefined symbols and
+ // versions declared with @@@ to be renamed.
+- for (const MCSymbol &A : Asm.symbols()) {
+- const auto &Alias = cast<MCSymbolELF>(A);
+- // Not an alias.
+- if (!Alias.isVariable())
+- continue;
+- auto *Ref = dyn_cast<MCSymbolRefExpr>(Alias.getVariableValue());
+- if (!Ref)
+- continue;
+- const auto &Symbol = cast<MCSymbolELF>(Ref->getSymbol());
+-
+- StringRef AliasName = Alias.getName();
++ for (const std::pair<StringRef, const MCSymbol *> &P : Asm.Symvers) {
++ StringRef AliasName = P.first;
++ const auto &Symbol = cast<MCSymbolELF>(*P.second);
+ size_t Pos = AliasName.find('@');
+- if (Pos == StringRef::npos)
+- continue;
++ assert(Pos != StringRef::npos);
+
++ StringRef Prefix = AliasName.substr(0, Pos);
++ StringRef Rest = AliasName.substr(Pos);
++ StringRef Tail = Rest;
++ if (Rest.startswith("@@@"))
++ Tail = Rest.substr(Symbol.isUndefined() ? 2 : 1);
++
++ auto *Alias =
++ cast<MCSymbolELF>(Asm.getContext().getOrCreateSymbol(Prefix + Tail));
++ Asm.registerSymbol(*Alias);
++ const MCExpr *Value = MCSymbolRefExpr::create(&Symbol, Asm.getContext());
++ Alias->setVariableValue(Value);
++
+ // Aliases defined with .symvar copy the binding from the symbol they alias.
+ // This is the first place we are able to copy this information.
+- Alias.setExternal(Symbol.isExternal());
+- Alias.setBinding(Symbol.getBinding());
++ Alias->setExternal(Symbol.isExternal());
++ Alias->setBinding(Symbol.getBinding());
+
+- StringRef Rest = AliasName.substr(Pos);
+ if (!Symbol.isUndefined() && !Rest.startswith("@@@"))
+ continue;
+
+@@ -420,7 +420,7 @@ void ELFObjectWriter::executePostLayoutBinding(MCA
+ !Rest.startswith("@@@"))
+ report_fatal_error("A @@ version cannot be undefined");
+
+- Renames.insert(std::make_pair(&Symbol, &Alias));
++ Renames.insert(std::make_pair(&Symbol, Alias));
+ }
+ }
+
+@@ -836,44 +836,7 @@ void ELFObjectWriter::computeSymbolTable(
+ HasLargeSectionIndex = true;
+ }
+
+- // The @@@ in symbol version is replaced with @ in undefined symbols and @@
+- // in defined ones.
+- //
+- // FIXME: All name handling should be done before we get to the writer,
+- // including dealing with GNU-style version suffixes. Fixing this isn't
+- // trivial.
+- //
+- // We thus have to be careful to not perform the symbol version replacement
+- // blindly:
+- //
+- // The ELF format is used on Windows by the MCJIT engine. Thus, on
+- // Windows, the ELFObjectWriter can encounter symbols mangled using the MS
+- // Visual Studio C++ name mangling scheme. Symbols mangled using the MSVC
+- // C++ name mangling can legally have "@@@" as a sub-string. In that case,
+- // the EFLObjectWriter should not interpret the "@@@" sub-string as
+- // specifying GNU-style symbol versioning. The ELFObjectWriter therefore
+- // checks for the MSVC C++ name mangling prefix which is either "?", "@?",
+- // "__imp_?" or "__imp_@?".
+- //
+- // It would have been interesting to perform the MS mangling prefix check
+- // only when the target triple is of the form *-pc-windows-elf. But, it
+- // seems that this information is not easily accessible from the
+- // ELFObjectWriter.
+ StringRef Name = Symbol.getName();
+- SmallString<32> Buf;
+- if (!Name.startswith("?") && !Name.startswith("@?") &&
+- !Name.startswith("__imp_?") && !Name.startswith("__imp_@?")) {
+- // This symbol isn't following the MSVC C++ name mangling convention. We
+- // can thus safely interpret the @@@ in symbol names as specifying symbol
+- // versioning.
+- size_t Pos = Name.find("@@@");
+- if (Pos != StringRef::npos) {
+- Buf += Name.substr(0, Pos);
+- unsigned Skip = MSD.SectionIndex == ELF::SHN_UNDEF ? 2 : 1;
+- Buf += Name.substr(Pos + Skip);
+- Name = VersionSymSaver.save(Buf.c_str());
+- }
+- }
+
+ // Sections have their own string table
+ if (Symbol.getType() != ELF::STT_SECTION) {
+Index: lib/MC/MCAsmStreamer.cpp
+===================================================================
+--- lib/MC/MCAsmStreamer.cpp (revision 331365)
++++ lib/MC/MCAsmStreamer.cpp (revision 331366)
+@@ -129,6 +129,9 @@ class MCAsmStreamer final : public MCStreamer {
+
+ void ChangeSection(MCSection *Section, const MCExpr *Subsection) override;
+
++ void emitELFSymverDirective(StringRef AliasName,
++ const MCSymbol *Aliasee) override;
++
+ void EmitLOHDirective(MCLOHType Kind, const MCLOHArgs &Args) override;
+ void EmitLabel(MCSymbol *Symbol, SMLoc Loc = SMLoc()) override;
+
+@@ -411,6 +414,14 @@ void MCAsmStreamer::ChangeSection(MCSection *Secti
+ }
+ }
+
++void MCAsmStreamer::emitELFSymverDirective(StringRef AliasName,
++ const MCSymbol *Aliasee) {
++ OS << ".symver ";
++ Aliasee->print(OS, MAI);
++ OS << ", " << AliasName;
++ EmitEOL();
++}
++
+ void MCAsmStreamer::EmitLabel(MCSymbol *Symbol, SMLoc Loc) {
+ MCStreamer::EmitLabel(Symbol, Loc);
+
+Index: lib/MC/MCELFStreamer.cpp
+===================================================================
+--- lib/MC/MCELFStreamer.cpp (revision 331365)
++++ lib/MC/MCELFStreamer.cpp (revision 331366)
+@@ -337,6 +337,11 @@ void MCELFStreamer::emitELFSize(MCSymbol *Symbol,
+ cast<MCSymbolELF>(Symbol)->setSize(Value);
+ }
+
++void MCELFStreamer::emitELFSymverDirective(StringRef AliasName,
++ const MCSymbol *Aliasee) {
++ getAssembler().Symvers.push_back({AliasName, Aliasee});
++}
++
+ void MCELFStreamer::EmitLocalCommonSymbol(MCSymbol *S, uint64_t Size,
+ unsigned ByteAlignment) {
+ auto *Symbol = cast<MCSymbolELF>(S);
+Index: lib/MC/MCParser/ELFAsmParser.cpp
+===================================================================
+--- lib/MC/MCParser/ELFAsmParser.cpp (revision 331365)
++++ lib/MC/MCParser/ELFAsmParser.cpp (revision 331366)
+@@ -767,12 +767,8 @@ bool ELFAsmParser::ParseDirectiveSymver(StringRef,
+ if (AliasName.find('@') == StringRef::npos)
+ return TokError("expected a '@' in the name");
+
+- MCSymbol *Alias = getContext().getOrCreateSymbol(AliasName);
+ MCSymbol *Sym = getContext().getOrCreateSymbol(Name);
+- const MCExpr *Value = MCSymbolRefExpr::create(Sym, getContext());
+-
+- getStreamer().EmitAssignment(Alias, Value);
+- getStreamer().emitELFSymverDirective(Alias, Sym);
++ getStreamer().emitELFSymverDirective(AliasName, Sym);
+ return false;
+ }
+
+Index: lib/MC/MCStreamer.cpp
+===================================================================
+--- lib/MC/MCStreamer.cpp (revision 331365)
++++ lib/MC/MCStreamer.cpp (revision 331366)
+@@ -925,7 +925,7 @@ void MCStreamer::EmitCOFFSymbolType(int Type) {
+ llvm_unreachable("this directive only supported on COFF targets");
+ }
+ void MCStreamer::emitELFSize(MCSymbol *Symbol, const MCExpr *Value) {}
+-void MCStreamer::emitELFSymverDirective(MCSymbol *Alias,
++void MCStreamer::emitELFSymverDirective(StringRef AliasName,
+ const MCSymbol *Aliasee) {}
+ void MCStreamer::EmitLocalCommonSymbol(MCSymbol *Symbol, uint64_t Size,
+ unsigned ByteAlignment) {}
+Index: lib/Object/ModuleSymbolTable.cpp
+===================================================================
+--- lib/Object/ModuleSymbolTable.cpp (revision 331365)
++++ lib/Object/ModuleSymbolTable.cpp (revision 331366)
+@@ -24,7 +24,6 @@
+ #include "llvm/IR/GlobalAlias.h"
+ #include "llvm/IR/GlobalValue.h"
+ #include "llvm/IR/GlobalVariable.h"
+-#include "llvm/IR/Mangler.h"
+ #include "llvm/IR/Module.h"
+ #include "llvm/MC/MCAsmInfo.h"
+ #include "llvm/MC/MCContext.h"
+@@ -69,81 +68,6 @@ void ModuleSymbolTable::addModule(Module *M) {
+ });
+ }
+
+-// Ensure ELF .symver aliases get the same binding as the defined symbol
+-// they alias with.
+-static void handleSymverAliases(const Module &M, RecordStreamer &Streamer) {
+- if (Streamer.symverAliases().empty())
+- return;
+-
+- // The name in the assembler will be mangled, but the name in the IR
+- // might not, so we first compute a mapping from mangled name to GV.
+- Mangler Mang;
+- SmallString<64> MangledName;
+- StringMap<const GlobalValue *> MangledNameMap;
+- auto GetMangledName = [&](const GlobalValue &GV) {
+- if (!GV.hasName())
+- return;
+-
+- MangledName.clear();
+- MangledName.reserve(GV.getName().size() + 1);
+- Mang.getNameWithPrefix(MangledName, &GV, /*CannotUsePrivateLabel=*/false);
+- MangledNameMap[MangledName] = &GV;
+- };
+- for (const Function &F : M)
+- GetMangledName(F);
+- for (const GlobalVariable &GV : M.globals())
+- GetMangledName(GV);
+- for (const GlobalAlias &GA : M.aliases())
+- GetMangledName(GA);
+-
+- // Walk all the recorded .symver aliases, and set up the binding
+- // for each alias.
+- for (auto &Symver : Streamer.symverAliases()) {
+- const MCSymbol *Aliasee = Symver.first;
+- MCSymbolAttr Attr = MCSA_Invalid;
+-
+- // First check if the aliasee binding was recorded in the asm.
+- RecordStreamer::State state = Streamer.getSymbolState(Aliasee);
+- switch (state) {
+- case RecordStreamer::Global:
+- case RecordStreamer::DefinedGlobal:
+- Attr = MCSA_Global;
+- break;
+- case RecordStreamer::UndefinedWeak:
+- case RecordStreamer::DefinedWeak:
+- Attr = MCSA_Weak;
+- break;
+- default:
+- break;
+- }
+-
+- // If we don't have a symbol attribute from assembly, then check if
+- // the aliasee was defined in the IR.
+- if (Attr == MCSA_Invalid) {
+- const auto *GV = M.getNamedValue(Aliasee->getName());
+- if (!GV) {
+- auto MI = MangledNameMap.find(Aliasee->getName());
+- if (MI != MangledNameMap.end())
+- GV = MI->second;
+- else
+- continue;
+- }
+- if (GV->hasExternalLinkage())
+- Attr = MCSA_Global;
+- else if (GV->hasLocalLinkage())
+- Attr = MCSA_Local;
+- else if (GV->isWeakForLinker())
+- Attr = MCSA_Weak;
+- }
+- if (Attr == MCSA_Invalid)
+- continue;
+-
+- // Set the detected binding on each alias with this aliasee.
+- for (auto &Alias : Symver.second)
+- Streamer.EmitSymbolAttribute(Alias, Attr);
+- }
+-}
+-
+ void ModuleSymbolTable::CollectAsmSymbols(
+ const Module &M,
+ function_ref<void(StringRef, BasicSymbolRef::Flags)> AsmSymbol) {
+@@ -176,7 +100,7 @@ void ModuleSymbolTable::CollectAsmSymbols(
+ MCObjectFileInfo MOFI;
+ MCContext MCCtx(MAI.get(), MRI.get(), &MOFI);
+ MOFI.InitMCObjectFileInfo(TT, /*PIC*/ false, MCCtx);
+- RecordStreamer Streamer(MCCtx);
++ RecordStreamer Streamer(MCCtx, M);
+ T->createNullTargetStreamer(Streamer);
+
+ std::unique_ptr<MemoryBuffer> Buffer(MemoryBuffer::getMemBuffer(InlineAsm));
+@@ -195,7 +119,7 @@ void ModuleSymbolTable::CollectAsmSymbols(
+ if (Parser->Run(false))
+ return;
+
+- handleSymverAliases(M, Streamer);
++ Streamer.flushSymverDirectives();
+
+ for (auto &KV : Streamer) {
+ StringRef Key = KV.first();
+Index: lib/Object/RecordStreamer.cpp
+===================================================================
+--- lib/Object/RecordStreamer.cpp (revision 331365)
++++ lib/Object/RecordStreamer.cpp (revision 331366)
+@@ -8,6 +8,9 @@
+ //===----------------------------------------------------------------------===//
+
+ #include "RecordStreamer.h"
++#include "llvm/IR/Mangler.h"
++#include "llvm/IR/Module.h"
++#include "llvm/MC/MCContext.h"
+ #include "llvm/MC/MCSymbol.h"
+
+ using namespace llvm;
+@@ -70,7 +73,8 @@ void RecordStreamer::markUsed(const MCSymbol &Symb
+
+ void RecordStreamer::visitUsedSymbol(const MCSymbol &Sym) { markUsed(Sym); }
+
+-RecordStreamer::RecordStreamer(MCContext &Context) : MCStreamer(Context) {}
++RecordStreamer::RecordStreamer(MCContext &Context, const Module &M)
++ : MCStreamer(Context), M(M) {}
+
+ RecordStreamer::const_iterator RecordStreamer::begin() {
+ return Symbols.begin();
+@@ -112,7 +116,109 @@ void RecordStreamer::EmitCommonSymbol(MCSymbol *Sy
+ markDefined(*Symbol);
+ }
+
+-void RecordStreamer::emitELFSymverDirective(MCSymbol *Alias,
++RecordStreamer::State RecordStreamer::getSymbolState(const MCSymbol *Sym) {
++ auto SI = Symbols.find(Sym->getName());
++ if (SI == Symbols.end())
++ return NeverSeen;
++ return SI->second;
++}
++
++void RecordStreamer::emitELFSymverDirective(StringRef AliasName,
+ const MCSymbol *Aliasee) {
+- SymverAliasMap[Aliasee].push_back(Alias);
++ SymverAliasMap[Aliasee].push_back(AliasName);
+ }
++
++void RecordStreamer::flushSymverDirectives() {
++ // Mapping from mangled name to GV.
++ StringMap<const GlobalValue *> MangledNameMap;
++ // The name in the assembler will be mangled, but the name in the IR
++ // might not, so we first compute a mapping from mangled name to GV.
++ Mangler Mang;
++ SmallString<64> MangledName;
++ for (const GlobalValue &GV : M.global_values()) {
++ if (!GV.hasName())
++ continue;
++ MangledName.clear();
++ MangledName.reserve(GV.getName().size() + 1);
++ Mang.getNameWithPrefix(MangledName, &GV, /*CannotUsePrivateLabel=*/false);
++ MangledNameMap[MangledName] = &GV;
++ }
++
++ // Walk all the recorded .symver aliases, and set up the binding
++ // for each alias.
++ for (auto &Symver : SymverAliasMap) {
++ const MCSymbol *Aliasee = Symver.first;
++ MCSymbolAttr Attr = MCSA_Invalid;
++ bool IsDefined = false;
++
++ // First check if the aliasee binding was recorded in the asm.
++ RecordStreamer::State state = getSymbolState(Aliasee);
++ switch (state) {
++ case RecordStreamer::Global:
++ case RecordStreamer::DefinedGlobal:
++ Attr = MCSA_Global;
++ break;
++ case RecordStreamer::UndefinedWeak:
++ case RecordStreamer::DefinedWeak:
++ Attr = MCSA_Weak;
++ break;
++ default:
++ break;
++ }
++
++ switch (state) {
++ case RecordStreamer::Defined:
++ case RecordStreamer::DefinedGlobal:
++ case RecordStreamer::DefinedWeak:
++ IsDefined = true;
++ break;
++ case RecordStreamer::NeverSeen:
++ case RecordStreamer::Global:
++ case RecordStreamer::Used:
++ case RecordStreamer::UndefinedWeak:
++ break;
++ }
++
++ if (Attr == MCSA_Invalid || !IsDefined) {
++ const GlobalValue *GV = M.getNamedValue(Aliasee->getName());
++ if (!GV) {
++ auto MI = MangledNameMap.find(Aliasee->getName());
++ if (MI != MangledNameMap.end())
++ GV = MI->second;
++ }
++ if (GV) {
++ // If we don't have a symbol attribute from assembly, then check if
++ // the aliasee was defined in the IR.
++ if (Attr == MCSA_Invalid) {
++ if (GV->hasExternalLinkage())
++ Attr = MCSA_Global;
++ else if (GV->hasLocalLinkage())
++ Attr = MCSA_Local;
++ else if (GV->isWeakForLinker())
++ Attr = MCSA_Weak;
++ }
++ IsDefined = IsDefined || !GV->isDeclarationForLinker();
++ }
++ }
++
++ // Set the detected binding on each alias with this aliasee.
++ for (auto AliasName : Symver.second) {
++ std::pair<StringRef, StringRef> Split = AliasName.split("@@@");
++ SmallString<128> NewName;
++ if (!Split.second.empty() && !Split.second.startswith("@")) {
++ // Special processing for "@@@" according
++ // https://sourceware.org/binutils/docs/as/Symver.html
++ const char *Separator = IsDefined ? "@@" : "@";
++ AliasName =
++ (Split.first + Separator + Split.second).toStringRef(NewName);
++ }
++ MCSymbol *Alias = getContext().getOrCreateSymbol(AliasName);
++ // TODO: Handle "@@@". Depending on SymbolAttribute value it needs to be
++ // converted into @ or @@.
++ const MCExpr *Value = MCSymbolRefExpr::create(Aliasee, getContext());
++ EmitAssignment(Alias, Value);
++ if (Attr != MCSA_Invalid)
++ EmitSymbolAttribute(Alias, Attr);
++ }
++ }
++}
+Index: lib/Object/RecordStreamer.h
+===================================================================
+--- lib/Object/RecordStreamer.h (revision 331365)
++++ lib/Object/RecordStreamer.h (revision 331366)
+@@ -20,6 +20,9 @@
+
+ namespace llvm {
+
++class GlobalValue;
++class Module;
++
+ class RecordStreamer : public MCStreamer {
+ public:
+ enum State { NeverSeen, Global, Defined, DefinedGlobal, DefinedWeak, Used,
+@@ -26,12 +29,16 @@ class RecordStreamer : public MCStreamer {
+ UndefinedWeak};
+
+ private:
++ const Module &M;
+ StringMap<State> Symbols;
+ // Map of aliases created by .symver directives, saved so we can update
+ // their symbol binding after parsing complete. This maps from each
+ // aliasee to its list of aliases.
+- DenseMap<const MCSymbol *, std::vector<MCSymbol *>> SymverAliasMap;
++ DenseMap<const MCSymbol *, std::vector<StringRef>> SymverAliasMap;
+
++ /// Get the state recorded for the given symbol.
++ State getSymbolState(const MCSymbol *Sym);
++
+ void markDefined(const MCSymbol &Symbol);
+ void markGlobal(const MCSymbol &Symbol, MCSymbolAttr Attribute);
+ void markUsed(const MCSymbol &Symbol);
+@@ -38,7 +45,7 @@ class RecordStreamer : public MCStreamer {
+ void visitUsedSymbol(const MCSymbol &Sym) override;
+
+ public:
+- RecordStreamer(MCContext &Context);
++ RecordStreamer(MCContext &Context, const Module &M);
+
+ using const_iterator = StringMap<State>::const_iterator;
+
+@@ -54,20 +61,11 @@ class RecordStreamer : public MCStreamer {
+ void EmitCommonSymbol(MCSymbol *Symbol, uint64_t Size,
+ unsigned ByteAlignment) override;
+ /// Record .symver aliases for later processing.
+- void emitELFSymverDirective(MCSymbol *Alias,
++ void emitELFSymverDirective(StringRef AliasName,
+ const MCSymbol *Aliasee) override;
+- /// Return the map of .symver aliasee to associated aliases.
+- DenseMap<const MCSymbol *, std::vector<MCSymbol *>> &symverAliases() {
+- return SymverAliasMap;
+- }
+-
+- /// Get the state recorded for the given symbol.
+- State getSymbolState(const MCSymbol *Sym) {
+- auto SI = Symbols.find(Sym->getName());
+- if (SI == Symbols.end())
+- return NeverSeen;
+- return SI->second;
+- }
++ // Emit ELF .symver aliases and ensure they have the same binding as the
++ // defined symbol they alias with.
++ void flushSymverDirectives();
+ };
+
+ } // end namespace llvm
diff --git a/devel/llvm60/files/patch-head-r336969.diff b/devel/llvm60/files/patch-head-r336969.diff
new file mode 100644
index 000000000000..640b0d146c6c
--- /dev/null
+++ b/devel/llvm60/files/patch-head-r336969.diff
@@ -0,0 +1,32 @@
+r336969 | emaste | 2018-07-31 16:12:09 +0200 (Tue, 31 Jul 2018) | 13 lines
+
+llvm: [ELF][ARM] Add Arm ABI names for float ABI ELF Header flags
+
+The ELF for the Arm architecture document defines, for EF_ARM_EABI_VER5
+and above, the flags EF_ARM_ABI_FLOAT_HARD and EF_ARM_ABI_FLOAT_SOFT.
+These have been defined to be compatible with the existing
+EF_ARM_VFP_FLOAT and EF_ARM_SOFT_FLOAT used by gcc for
+EF_ARM_EABI_UNKNOWN.
+
+This patch adds the flags in addition to the existing ones so that any
+code depending on the old names will still work.
+
+Obtained from: llvm r338370 by Peter Smith
+
+Index: include/llvm/BinaryFormat/ELF.h
+===================================================================
+--- include/llvm/BinaryFormat/ELF.h (revision 336968)
++++ include/llvm/BinaryFormat/ELF.h (revision 336969)
+@@ -418,8 +418,10 @@ enum {
+
+ // ARM Specific e_flags
+ enum : unsigned {
+- EF_ARM_SOFT_FLOAT = 0x00000200U,
+- EF_ARM_VFP_FLOAT = 0x00000400U,
++ EF_ARM_SOFT_FLOAT = 0x00000200U, // Legacy pre EABI_VER5
++ EF_ARM_ABI_FLOAT_SOFT = 0x00000200U, // EABI_VER5
++ EF_ARM_VFP_FLOAT = 0x00000400U, // Legacy pre EABI_VER5
++ EF_ARM_ABI_FLOAT_HARD = 0x00000400U, // EABI_VER5
+ EF_ARM_EABI_UNKNOWN = 0x00000000U,
+ EF_ARM_EABI_VER1 = 0x01000000U,
+ EF_ARM_EABI_VER2 = 0x02000000U,
diff --git a/devel/llvm60/files/patch-head-r336970.diff b/devel/llvm60/files/patch-head-r336970.diff
new file mode 100644
index 000000000000..d788914eb445
--- /dev/null
+++ b/devel/llvm60/files/patch-head-r336970.diff
@@ -0,0 +1,24 @@
+r336970 | emaste | 2018-07-31 16:14:41 +0200 (Tue, 31 Jul 2018) | 9 lines
+
+llvm: [ARM] Complete enumeration values for Tag_ABI_VFP_args
+
+The LLD implementation of Tag_ABI_VFP_args needs to check the rarely
+seen values of 3 (toolchain specific) and 4 compatible with both Base
+and VFP. Add the missing enumeration values so that LLD can refer to
+them without having to use the raw numbers.
+
+Obtained from: llvm r338373 by Peter Smith
+
+Index: include/llvm/Support/ARMBuildAttributes.h
+===================================================================
+--- include/llvm/Support/ARMBuildAttributes.h (revision 336969)
++++ include/llvm/Support/ARMBuildAttributes.h (revision 336970)
+@@ -213,6 +213,8 @@ enum {
+ // Tag_ABI_VFP_args, (=28), uleb128
+ BaseAAPCS = 0,
+ HardFPAAPCS = 1,
++ ToolChainFPPCS = 2,
++ CompatibleFPAAPCS = 3,
+
+ // Tag_FP_HP_extension, (=36), uleb128
+ AllowHPFP = 1, // Allow use of Half Precision FP
diff --git a/devel/llvm60/files/patch-head-r337615.diff b/devel/llvm60/files/patch-head-r337615.diff
new file mode 100644
index 000000000000..645240b71cf3
--- /dev/null
+++ b/devel/llvm60/files/patch-head-r337615.diff
@@ -0,0 +1,64 @@
+r337615 | dim | 2018-08-11 12:42:12 +0200 (Sat, 11 Aug 2018) | 43 lines
+
+Pull in r338481 from upstream llvm trunk (by Chandler Carruth):
+
+ [x86] Fix a really subtle miscompile due to a somewhat glaring bug in
+ EFLAGS copy lowering.
+
+ If you have a branch of LLVM, you may want to cherrypick this. It is
+ extremely unlikely to hit this case empirically, but it will likely
+ manifest as an "impossible" branch being taken somewhere, and will be
+ ... very hard to debug.
+
+ Hitting this requires complex conditions living across complex
+ control flow combined with some interesting memory (non-stack)
+ initialized with the results of a comparison. Also, because you have
+ to arrange for an EFLAGS copy to be in *just* the right place, almost
+ anything you do to the code will hide the bug. I was unable to reduce
+ anything remotely resembling a "good" test case from the place where
+ I hit it, and so instead I have constructed synthetic MIR testing
+ that directly exercises the bug in question (as well as the good
+ behavior for completeness).
+
+ The issue is that we would mistakenly assume any SETcc with a valid
+ condition and an initial operand that was a register and a virtual
+ register at that to be a register *defining* SETcc...
+
+ It isn't though....
+
+ This would in turn cause us to test some other bizarre register,
+ typically the base pointer of some memory. Now, testing this register
+ and using that to branch on doesn't make any sense. It even fails the
+ machine verifier (if you are running it) due to the wrong register
+ class. But it will make it through LLVM, assemble, and it *looks*
+ fine... But wow do you get a very unsual and surprising branch taken
+ in your actual code.
+
+ The fix is to actually check what kind of SETcc instruction we're
+ dealing with. Because there are a bunch of them, I just test the
+ may-store bit in the instruction. I've also added an assert for
+ sanity that ensure we are, in fact, *defining* the register operand.
+ =D
+
+Noticed by: kib
+MFC after: 1 week
+
+Index: lib/Target/X86/X86FlagsCopyLowering.cpp
+===================================================================
+--- lib/Target/X86/X86FlagsCopyLowering.cpp (revision 337614)
++++ lib/Target/X86/X86FlagsCopyLowering.cpp (revision 337615)
+@@ -608,9 +608,12 @@ X86FlagsCopyLoweringPass::collectCondsInRegs(Machi
+ for (MachineInstr &MI : llvm::reverse(
+ llvm::make_range(MBB.instr_begin(), CopyDefI.getIterator()))) {
+ X86::CondCode Cond = X86::getCondFromSETOpc(MI.getOpcode());
+- if (Cond != X86::COND_INVALID && MI.getOperand(0).isReg() &&
+- TRI->isVirtualRegister(MI.getOperand(0).getReg()))
++ if (Cond != X86::COND_INVALID && !MI.mayStore() && MI.getOperand(0).isReg() &&
++ TRI->isVirtualRegister(MI.getOperand(0).getReg())) {
++ assert(MI.getOperand(0).isDef() &&
++ "A non-storing SETcc should always define a register!");
+ CondRegs[Cond] = MI.getOperand(0).getReg();
++ }
+
+ // Stop scanning when we see the first definition of the EFLAGS as prior to
+ // this we would potentially capture the wrong flag state.
diff --git a/devel/llvm60/files/patch-head-r338689.diff b/devel/llvm60/files/patch-head-r338689.diff
new file mode 100644
index 000000000000..c0a785e779ee
--- /dev/null
+++ b/devel/llvm60/files/patch-head-r338689.diff
@@ -0,0 +1,32 @@
+r338689 | dim | 2018-09-14 21:25:23 +0200 (Fri, 14 Sep 2018) | 12 lines
+
+Pull in r335365 from upstream llvm trunk (by Krzysztof Parzyszek):
+
+ Initialize LiveRegs once in BranchFolder::mergeCommonTails
+
+This should fix '(TRI && "LivePhysRegs is not initialized."' assertions
+when building the lang/qt5-qml port in certain configurations.
+
+Approved by: re (kib)
+Reported by: Piotr Kubaj <pkubaj@anongoth.pl>
+PR: 231355
+MFC after: 3 days
+
+Index: lib/CodeGen/BranchFolding.cpp
+===================================================================
+--- lib/CodeGen/BranchFolding.cpp (revision 338688)
++++ lib/CodeGen/BranchFolding.cpp (revision 338689)
+@@ -884,11 +884,12 @@ void BranchFolder::mergeCommonTails(unsigned commo
+ if (UpdateLiveIns) {
+ LivePhysRegs NewLiveIns(*TRI);
+ computeLiveIns(NewLiveIns, *MBB);
++ LiveRegs.init(*TRI);
+
+ // The flag merging may lead to some register uses no longer using the
+ // <undef> flag, add IMPLICIT_DEFs in the predecessors as necessary.
+ for (MachineBasicBlock *Pred : MBB->predecessors()) {
+- LiveRegs.init(*TRI);
++ LiveRegs.clear();
+ LiveRegs.addLiveOuts(*Pred);
+ MachineBasicBlock::iterator InsertBefore = Pred->getFirstTerminator();
+ for (unsigned Reg : NewLiveIns) {
diff --git a/devel/llvm60/files/patch-svn-r322325 b/devel/llvm60/files/patch-svn-r322325
new file mode 100644
index 000000000000..3b0501e37022
--- /dev/null
+++ b/devel/llvm60/files/patch-svn-r322325
@@ -0,0 +1,1589 @@
+r322325:
+
+PeepholeOpt cleanup/refactor; NFC
+
+- Less unnecessary use of `auto`
+- Add early `using RegSubRegPair(AndIdx) =` to avoid countless
+ `TargetInstrInfo::` qualifications.
+- Use references instead of pointers where possible.
+- Remove unused parameters.
+- Rewrite the CopyRewriter class hierarchy:
+ - Pull out uncoalescable copy rewriting functionality into
+ PeepholeOptimizer class.
+ - Use an abstract base class to make it clear that rewriters are
+ independent.
+- Remove unnecessary \brief in doxygen comments.
+- Remove unused constructor and method from ValueTracker.
+- Replace UseAdvancedTracking of ValueTracker with DisableAdvCopyOpt use.
+
+--- lib/CodeGen/PeepholeOptimizer.cpp.orig
++++ lib/CodeGen/PeepholeOptimizer.cpp
+@@ -98,6 +98,8 @@
+ #include <utility>
+
+ using namespace llvm;
++using RegSubRegPair = TargetInstrInfo::RegSubRegPair;
++using RegSubRegPairAndIdx = TargetInstrInfo::RegSubRegPairAndIdx;
+
+ #define DEBUG_TYPE "peephole-opt"
+
+@@ -110,6 +112,9 @@
+ DisablePeephole("disable-peephole", cl::Hidden, cl::init(false),
+ cl::desc("Disable the peephole optimizer"));
+
++/// Specifiy whether or not the value tracking looks through
++/// complex instructions. When this is true, the value tracker
++/// bails on everything that is not a copy or a bitcast.
+ static cl::opt<bool>
+ DisableAdvCopyOpt("disable-adv-copy-opt", cl::Hidden, cl::init(false),
+ cl::desc("Disable advanced copy optimization"));
+@@ -132,11 +137,11 @@
+ "of commuting operands"));
+
+
+-STATISTIC(NumReuse, "Number of extension results reused");
+-STATISTIC(NumCmps, "Number of compares eliminated");
+-STATISTIC(NumImmFold, "Number of move immediate folded");
+-STATISTIC(NumLoadFold, "Number of loads folded");
+-STATISTIC(NumSelects, "Number of selects optimized");
++STATISTIC(NumReuse, "Number of extension results reused");
++STATISTIC(NumCmps, "Number of compares eliminated");
++STATISTIC(NumImmFold, "Number of move immediate folded");
++STATISTIC(NumLoadFold, "Number of loads folded");
++STATISTIC(NumSelects, "Number of selects optimized");
+ STATISTIC(NumUncoalescableCopies, "Number of uncoalescable copies optimized");
+ STATISTIC(NumRewrittenCopies, "Number of copies rewritten");
+ STATISTIC(NumNAPhysCopies, "Number of non-allocatable physical copies removed");
+@@ -149,9 +154,9 @@
+ class PeepholeOptimizer : public MachineFunctionPass {
+ const TargetInstrInfo *TII;
+ const TargetRegisterInfo *TRI;
+- MachineRegisterInfo *MRI;
+- MachineDominatorTree *DT; // Machine dominator tree
+- MachineLoopInfo *MLI;
++ MachineRegisterInfo *MRI;
++ MachineDominatorTree *DT; // Machine dominator tree
++ MachineLoopInfo *MLI;
+
+ public:
+ static char ID; // Pass identification
+@@ -173,31 +178,28 @@
+ }
+ }
+
+- /// \brief Track Def -> Use info used for rewriting copies.
+- using RewriteMapTy =
+- SmallDenseMap<TargetInstrInfo::RegSubRegPair, ValueTrackerResult>;
++ /// Track Def -> Use info used for rewriting copies.
++ using RewriteMapTy = SmallDenseMap<RegSubRegPair, ValueTrackerResult>;
+
+- /// \brief Sequence of instructions that formulate recurrence cycle.
++ /// Sequence of instructions that formulate recurrence cycle.
+ using RecurrenceCycle = SmallVector<RecurrenceInstr, 4>;
+
+ private:
+- bool optimizeCmpInstr(MachineInstr *MI, MachineBasicBlock *MBB);
+- bool optimizeExtInstr(MachineInstr *MI, MachineBasicBlock *MBB,
++ bool optimizeCmpInstr(MachineInstr &MI);
++ bool optimizeExtInstr(MachineInstr &MI, MachineBasicBlock &MBB,
+ SmallPtrSetImpl<MachineInstr*> &LocalMIs);
+- bool optimizeSelect(MachineInstr *MI,
++ bool optimizeSelect(MachineInstr &MI,
+ SmallPtrSetImpl<MachineInstr *> &LocalMIs);
+- bool optimizeCondBranch(MachineInstr *MI);
+- bool optimizeCoalescableCopy(MachineInstr *MI);
+- bool optimizeUncoalescableCopy(MachineInstr *MI,
++ bool optimizeCondBranch(MachineInstr &MI);
++ bool optimizeCoalescableCopy(MachineInstr &MI);
++ bool optimizeUncoalescableCopy(MachineInstr &MI,
+ SmallPtrSetImpl<MachineInstr *> &LocalMIs);
+ bool optimizeRecurrence(MachineInstr &PHI);
+- bool findNextSource(unsigned Reg, unsigned SubReg,
+- RewriteMapTy &RewriteMap);
+- bool isMoveImmediate(MachineInstr *MI,
++ bool findNextSource(RegSubRegPair RegSubReg, RewriteMapTy &RewriteMap);
++ bool isMoveImmediate(MachineInstr &MI,
+ SmallSet<unsigned, 4> &ImmDefRegs,
+ DenseMap<unsigned, MachineInstr*> &ImmDefMIs);
+- bool foldImmediate(MachineInstr *MI, MachineBasicBlock *MBB,
+- SmallSet<unsigned, 4> &ImmDefRegs,
++ bool foldImmediate(MachineInstr &MI, SmallSet<unsigned, 4> &ImmDefRegs,
+ DenseMap<unsigned, MachineInstr*> &ImmDefMIs);
+
+ /// \brief Finds recurrence cycles, but only ones that formulated around
+@@ -212,11 +214,11 @@
+ /// the set \p CopySrcRegs and \p CopyMIs. If this virtual register was
+ /// previously seen as a copy, replace the uses of this copy with the
+ /// previously seen copy's destination register.
+- bool foldRedundantCopy(MachineInstr *MI,
++ bool foldRedundantCopy(MachineInstr &MI,
+ SmallSet<unsigned, 4> &CopySrcRegs,
+ DenseMap<unsigned, MachineInstr *> &CopyMIs);
+
+- /// \brief Is the register \p Reg a non-allocatable physical register?
++ /// Is the register \p Reg a non-allocatable physical register?
+ bool isNAPhysCopy(unsigned Reg);
+
+ /// \brief If copy instruction \p MI is a non-allocatable virtual<->physical
+@@ -224,11 +226,10 @@
+ /// non-allocatable physical register was previously copied to a virtual
+ /// registered and hasn't been clobbered, the virt->phys copy can be
+ /// deleted.
+- bool foldRedundantNAPhysCopy(
+- MachineInstr *MI,
++ bool foldRedundantNAPhysCopy(MachineInstr &MI,
+ DenseMap<unsigned, MachineInstr *> &NAPhysToVirtMIs);
+
+- bool isLoadFoldable(MachineInstr *MI,
++ bool isLoadFoldable(MachineInstr &MI,
+ SmallSet<unsigned, 16> &FoldAsLoadDefCandidates);
+
+ /// \brief Check whether \p MI is understood by the register coalescer
+@@ -249,10 +250,13 @@
+ (MI.isRegSequenceLike() || MI.isInsertSubregLike() ||
+ MI.isExtractSubregLike()));
+ }
++
++ MachineInstr &rewriteSource(MachineInstr &CopyLike,
++ RegSubRegPair Def, RewriteMapTy &RewriteMap);
+ };
+
+- /// \brief Helper class to hold instructions that are inside recurrence
+- /// cycles. The recurrence cycle is formulated around 1) a def operand and its
++ /// Helper class to hold instructions that are inside recurrence cycles.
++ /// The recurrence cycle is formulated around 1) a def operand and its
+ /// tied use operand, or 2) a def operand and a use operand that is commutable
+ /// with another use operand which is tied to the def operand. In the latter
+ /// case, index of the tied use operand and the commutable use operand are
+@@ -273,13 +277,13 @@
+ Optional<IndexPair> CommutePair;
+ };
+
+- /// \brief Helper class to hold a reply for ValueTracker queries. Contains the
+- /// returned sources for a given search and the instructions where the sources
+- /// were tracked from.
++ /// Helper class to hold a reply for ValueTracker queries.
++ /// Contains the returned sources for a given search and the instructions
++ /// where the sources were tracked from.
+ class ValueTrackerResult {
+ private:
+ /// Track all sources found by one ValueTracker query.
+- SmallVector<TargetInstrInfo::RegSubRegPair, 2> RegSrcs;
++ SmallVector<RegSubRegPair, 2> RegSrcs;
+
+ /// Instruction using the sources in 'RegSrcs'.
+ const MachineInstr *Inst = nullptr;
+@@ -302,16 +306,20 @@
+ }
+
+ void addSource(unsigned SrcReg, unsigned SrcSubReg) {
+- RegSrcs.push_back(TargetInstrInfo::RegSubRegPair(SrcReg, SrcSubReg));
++ RegSrcs.push_back(RegSubRegPair(SrcReg, SrcSubReg));
+ }
+
+ void setSource(int Idx, unsigned SrcReg, unsigned SrcSubReg) {
+ assert(Idx < getNumSources() && "Reg pair source out of index");
+- RegSrcs[Idx] = TargetInstrInfo::RegSubRegPair(SrcReg, SrcSubReg);
++ RegSrcs[Idx] = RegSubRegPair(SrcReg, SrcSubReg);
+ }
+
+ int getNumSources() const { return RegSrcs.size(); }
+
++ RegSubRegPair getSrc(int Idx) const {
++ return RegSrcs[Idx];
++ }
++
+ unsigned getSrcReg(int Idx) const {
+ assert(Idx < getNumSources() && "Reg source out of index");
+ return RegSrcs[Idx].Reg;
+@@ -367,59 +375,41 @@
+ /// The register where the value can be found.
+ unsigned Reg;
+
+- /// Specifiy whether or not the value tracking looks through
+- /// complex instructions. When this is false, the value tracker
+- /// bails on everything that is not a copy or a bitcast.
+- ///
+- /// Note: This could have been implemented as a specialized version of
+- /// the ValueTracker class but that would have complicated the code of
+- /// the users of this class.
+- bool UseAdvancedTracking;
+-
+ /// MachineRegisterInfo used to perform tracking.
+ const MachineRegisterInfo &MRI;
+
+- /// Optional TargetInstrInfo used to perform some complex
+- /// tracking.
++ /// Optional TargetInstrInfo used to perform some complex tracking.
+ const TargetInstrInfo *TII;
+
+- /// \brief Dispatcher to the right underlying implementation of
+- /// getNextSource.
++ /// Dispatcher to the right underlying implementation of getNextSource.
+ ValueTrackerResult getNextSourceImpl();
+
+- /// \brief Specialized version of getNextSource for Copy instructions.
++ /// Specialized version of getNextSource for Copy instructions.
+ ValueTrackerResult getNextSourceFromCopy();
+
+- /// \brief Specialized version of getNextSource for Bitcast instructions.
++ /// Specialized version of getNextSource for Bitcast instructions.
+ ValueTrackerResult getNextSourceFromBitcast();
+
+- /// \brief Specialized version of getNextSource for RegSequence
+- /// instructions.
++ /// Specialized version of getNextSource for RegSequence instructions.
+ ValueTrackerResult getNextSourceFromRegSequence();
+
+- /// \brief Specialized version of getNextSource for InsertSubreg
+- /// instructions.
++ /// Specialized version of getNextSource for InsertSubreg instructions.
+ ValueTrackerResult getNextSourceFromInsertSubreg();
+
+- /// \brief Specialized version of getNextSource for ExtractSubreg
+- /// instructions.
++ /// Specialized version of getNextSource for ExtractSubreg instructions.
+ ValueTrackerResult getNextSourceFromExtractSubreg();
+
+- /// \brief Specialized version of getNextSource for SubregToReg
+- /// instructions.
++ /// Specialized version of getNextSource for SubregToReg instructions.
+ ValueTrackerResult getNextSourceFromSubregToReg();
+
+- /// \brief Specialized version of getNextSource for PHI instructions.
++ /// Specialized version of getNextSource for PHI instructions.
+ ValueTrackerResult getNextSourceFromPHI();
+
+ public:
+- /// \brief Create a ValueTracker instance for the value defined by \p Reg.
++ /// Create a ValueTracker instance for the value defined by \p Reg.
+ /// \p DefSubReg represents the sub register index the value tracker will
+ /// track. It does not need to match the sub register index used in the
+ /// definition of \p Reg.
+- /// \p UseAdvancedTracking specifies whether or not the value tracker looks
+- /// through complex instructions. By default (false), it handles only copy
+- /// and bitcast instructions.
+ /// If \p Reg is a physical register, a value tracker constructed with
+ /// this constructor will not find any alternative source.
+ /// Indeed, when \p Reg is a physical register that constructor does not
+@@ -427,46 +417,20 @@
+ /// Use the next constructor to track a physical register.
+ ValueTracker(unsigned Reg, unsigned DefSubReg,
+ const MachineRegisterInfo &MRI,
+- bool UseAdvancedTracking = false,
+ const TargetInstrInfo *TII = nullptr)
+- : DefSubReg(DefSubReg), Reg(Reg),
+- UseAdvancedTracking(UseAdvancedTracking), MRI(MRI), TII(TII) {
++ : DefSubReg(DefSubReg), Reg(Reg), MRI(MRI), TII(TII) {
+ if (!TargetRegisterInfo::isPhysicalRegister(Reg)) {
+ Def = MRI.getVRegDef(Reg);
+ DefIdx = MRI.def_begin(Reg).getOperandNo();
+ }
+ }
+
+- /// \brief Create a ValueTracker instance for the value defined by
+- /// the pair \p MI, \p DefIdx.
+- /// Unlike the other constructor, the value tracker produced by this one
+- /// may be able to find a new source when the definition is a physical
+- /// register.
+- /// This could be useful to rewrite target specific instructions into
+- /// generic copy instructions.
+- ValueTracker(const MachineInstr &MI, unsigned DefIdx, unsigned DefSubReg,
+- const MachineRegisterInfo &MRI,
+- bool UseAdvancedTracking = false,
+- const TargetInstrInfo *TII = nullptr)
+- : Def(&MI), DefIdx(DefIdx), DefSubReg(DefSubReg),
+- UseAdvancedTracking(UseAdvancedTracking), MRI(MRI), TII(TII) {
+- assert(DefIdx < Def->getDesc().getNumDefs() &&
+- Def->getOperand(DefIdx).isReg() && "Invalid definition");
+- Reg = Def->getOperand(DefIdx).getReg();
+- }
+-
+ /// \brief Following the use-def chain, get the next available source
+ /// for the tracked value.
+ /// \return A ValueTrackerResult containing a set of registers
+ /// and sub registers with tracked values. A ValueTrackerResult with
+ /// an empty set of registers means no source was found.
+ ValueTrackerResult getNextSource();
+-
+- /// \brief Get the last register where the initial value can be found.
+- /// Initially this is the register of the definition.
+- /// Then, after each successful call to getNextSource, this is the
+- /// register of the last source.
+- unsigned getReg() const { return Reg; }
+ };
+
+ } // end anonymous namespace
+@@ -476,11 +440,11 @@
+ char &llvm::PeepholeOptimizerID = PeepholeOptimizer::ID;
+
+ INITIALIZE_PASS_BEGIN(PeepholeOptimizer, DEBUG_TYPE,
+- "Peephole Optimizations", false, false)
++ "Peephole Optimizations", false, false)
+ INITIALIZE_PASS_DEPENDENCY(MachineDominatorTree)
+ INITIALIZE_PASS_DEPENDENCY(MachineLoopInfo)
+ INITIALIZE_PASS_END(PeepholeOptimizer, DEBUG_TYPE,
+- "Peephole Optimizations", false, false)
++ "Peephole Optimizations", false, false)
+
+ /// If instruction is a copy-like instruction, i.e. it reads a single register
+ /// and writes a single register and it does not modify the source, and if the
+@@ -491,10 +455,10 @@
+ /// the code. Since this code does not currently share EXTRACTs, just ignore all
+ /// debug uses.
+ bool PeepholeOptimizer::
+-optimizeExtInstr(MachineInstr *MI, MachineBasicBlock *MBB,
++optimizeExtInstr(MachineInstr &MI, MachineBasicBlock &MBB,
+ SmallPtrSetImpl<MachineInstr*> &LocalMIs) {
+ unsigned SrcReg, DstReg, SubIdx;
+- if (!TII->isCoalescableExtInstr(*MI, SrcReg, DstReg, SubIdx))
++ if (!TII->isCoalescableExtInstr(MI, SrcReg, DstReg, SubIdx))
+ return false;
+
+ if (TargetRegisterInfo::isPhysicalRegister(DstReg) ||
+@@ -535,7 +499,7 @@
+ bool ExtendLife = true;
+ for (MachineOperand &UseMO : MRI->use_nodbg_operands(SrcReg)) {
+ MachineInstr *UseMI = UseMO.getParent();
+- if (UseMI == MI)
++ if (UseMI == &MI)
+ continue;
+
+ if (UseMI->isPHI()) {
+@@ -568,7 +532,7 @@
+ continue;
+
+ MachineBasicBlock *UseMBB = UseMI->getParent();
+- if (UseMBB == MBB) {
++ if (UseMBB == &MBB) {
+ // Local uses that come after the extension.
+ if (!LocalMIs.count(UseMI))
+ Uses.push_back(&UseMO);
+@@ -576,7 +540,7 @@
+ // Non-local uses where the result of the extension is used. Always
+ // replace these unless it's a PHI.
+ Uses.push_back(&UseMO);
+- } else if (Aggressive && DT->dominates(MBB, UseMBB)) {
++ } else if (Aggressive && DT->dominates(&MBB, UseMBB)) {
+ // We may want to extend the live range of the extension result in order
+ // to replace these uses.
+ ExtendedUses.push_back(&UseMO);
+@@ -640,19 +604,18 @@
+ /// against already sets (or could be modified to set) the same flag as the
+ /// compare, then we can remove the comparison and use the flag from the
+ /// previous instruction.
+-bool PeepholeOptimizer::optimizeCmpInstr(MachineInstr *MI,
+- MachineBasicBlock *MBB) {
++bool PeepholeOptimizer::optimizeCmpInstr(MachineInstr &MI) {
+ // If this instruction is a comparison against zero and isn't comparing a
+ // physical register, we can try to optimize it.
+ unsigned SrcReg, SrcReg2;
+ int CmpMask, CmpValue;
+- if (!TII->analyzeCompare(*MI, SrcReg, SrcReg2, CmpMask, CmpValue) ||
++ if (!TII->analyzeCompare(MI, SrcReg, SrcReg2, CmpMask, CmpValue) ||
+ TargetRegisterInfo::isPhysicalRegister(SrcReg) ||
+ (SrcReg2 != 0 && TargetRegisterInfo::isPhysicalRegister(SrcReg2)))
+ return false;
+
+ // Attempt to optimize the comparison instruction.
+- if (TII->optimizeCompareInstr(*MI, SrcReg, SrcReg2, CmpMask, CmpValue, MRI)) {
++ if (TII->optimizeCompareInstr(MI, SrcReg, SrcReg2, CmpMask, CmpValue, MRI)) {
+ ++NumCmps;
+ return true;
+ }
+@@ -661,27 +624,26 @@
+ }
+
+ /// Optimize a select instruction.
+-bool PeepholeOptimizer::optimizeSelect(MachineInstr *MI,
++bool PeepholeOptimizer::optimizeSelect(MachineInstr &MI,
+ SmallPtrSetImpl<MachineInstr *> &LocalMIs) {
+ unsigned TrueOp = 0;
+ unsigned FalseOp = 0;
+ bool Optimizable = false;
+ SmallVector<MachineOperand, 4> Cond;
+- if (TII->analyzeSelect(*MI, Cond, TrueOp, FalseOp, Optimizable))
++ if (TII->analyzeSelect(MI, Cond, TrueOp, FalseOp, Optimizable))
+ return false;
+ if (!Optimizable)
+ return false;
+- if (!TII->optimizeSelect(*MI, LocalMIs))
++ if (!TII->optimizeSelect(MI, LocalMIs))
+ return false;
+- MI->eraseFromParent();
++ MI.eraseFromParent();
+ ++NumSelects;
+ return true;
+ }
+
+-/// \brief Check if a simpler conditional branch can be
+-/// generated
+-bool PeepholeOptimizer::optimizeCondBranch(MachineInstr *MI) {
+- return TII->optimizeCondBranch(*MI);
++/// Check if a simpler conditional branch can be generated.
++bool PeepholeOptimizer::optimizeCondBranch(MachineInstr &MI) {
++ return TII->optimizeCondBranch(MI);
+ }
+
+ /// \brief Try to find the next source that share the same register file
+@@ -695,30 +657,29 @@
+ /// share the same register file as \p Reg and \p SubReg. The client should
+ /// then be capable to rewrite all intermediate PHIs to get the next source.
+ /// \return False if no alternative sources are available. True otherwise.
+-bool PeepholeOptimizer::findNextSource(unsigned Reg, unsigned SubReg,
++bool PeepholeOptimizer::findNextSource(RegSubRegPair RegSubReg,
+ RewriteMapTy &RewriteMap) {
+ // Do not try to find a new source for a physical register.
+ // So far we do not have any motivating example for doing that.
+ // Thus, instead of maintaining untested code, we will revisit that if
+ // that changes at some point.
++ unsigned Reg = RegSubReg.Reg;
+ if (TargetRegisterInfo::isPhysicalRegister(Reg))
+ return false;
+ const TargetRegisterClass *DefRC = MRI->getRegClass(Reg);
+
+- SmallVector<TargetInstrInfo::RegSubRegPair, 4> SrcToLook;
+- TargetInstrInfo::RegSubRegPair CurSrcPair(Reg, SubReg);
++ SmallVector<RegSubRegPair, 4> SrcToLook;
++ RegSubRegPair CurSrcPair = RegSubReg;
+ SrcToLook.push_back(CurSrcPair);
+
+ unsigned PHICount = 0;
+- while (!SrcToLook.empty() && PHICount < RewritePHILimit) {
+- TargetInstrInfo::RegSubRegPair Pair = SrcToLook.pop_back_val();
++ do {
++ CurSrcPair = SrcToLook.pop_back_val();
+ // As explained above, do not handle physical registers
+- if (TargetRegisterInfo::isPhysicalRegister(Pair.Reg))
++ if (TargetRegisterInfo::isPhysicalRegister(CurSrcPair.Reg))
+ return false;
+
+- CurSrcPair = Pair;
+- ValueTracker ValTracker(CurSrcPair.Reg, CurSrcPair.SubReg, *MRI,
+- !DisableAdvCopyOpt, TII);
++ ValueTracker ValTracker(CurSrcPair.Reg, CurSrcPair.SubReg, *MRI, TII);
+
+ // Follow the chain of copies until we find a more suitable source, a phi
+ // or have to abort.
+@@ -747,14 +708,17 @@
+ unsigned NumSrcs = Res.getNumSources();
+ if (NumSrcs > 1) {
+ PHICount++;
++ if (PHICount >= RewritePHILimit) {
++ DEBUG(dbgs() << "findNextSource: PHI limit reached\n");
++ return false;
++ }
++
+ for (unsigned i = 0; i < NumSrcs; ++i)
+- SrcToLook.push_back(TargetInstrInfo::RegSubRegPair(
+- Res.getSrcReg(i), Res.getSrcSubReg(i)));
++ SrcToLook.push_back(Res.getSrc(i));
+ break;
+ }
+
+- CurSrcPair.Reg = Res.getSrcReg(0);
+- CurSrcPair.SubReg = Res.getSrcSubReg(0);
++ CurSrcPair = Res.getSrc(0);
+ // Do not extend the live-ranges of physical registers as they add
+ // constraints to the register allocator. Moreover, if we want to extend
+ // the live-range of a physical register, unlike SSA virtual register,
+@@ -764,7 +728,8 @@
+
+ // Keep following the chain if the value isn't any better yet.
+ const TargetRegisterClass *SrcRC = MRI->getRegClass(CurSrcPair.Reg);
+- if (!TRI->shouldRewriteCopySrc(DefRC, SubReg, SrcRC, CurSrcPair.SubReg))
++ if (!TRI->shouldRewriteCopySrc(DefRC, RegSubReg.SubReg, SrcRC,
++ CurSrcPair.SubReg))
+ continue;
+
+ // We currently cannot deal with subreg operands on PHI instructions
+@@ -775,7 +740,7 @@
+ // We found a suitable source, and are done with this chain.
+ break;
+ }
+- }
++ } while (!SrcToLook.empty());
+
+ // If we did not find a more suitable source, there is nothing to optimize.
+ return CurSrcPair.Reg != Reg;
+@@ -786,54 +751,50 @@
+ /// successfully traverse a PHI instruction and find suitable sources coming
+ /// from its edges. By inserting a new PHI, we provide a rewritten PHI def
+ /// suitable to be used in a new COPY instruction.
+-static MachineInstr *
+-insertPHI(MachineRegisterInfo *MRI, const TargetInstrInfo *TII,
+- const SmallVectorImpl<TargetInstrInfo::RegSubRegPair> &SrcRegs,
+- MachineInstr *OrigPHI) {
++static MachineInstr &
++insertPHI(MachineRegisterInfo &MRI, const TargetInstrInfo &TII,
++ const SmallVectorImpl<RegSubRegPair> &SrcRegs,
++ MachineInstr &OrigPHI) {
+ assert(!SrcRegs.empty() && "No sources to create a PHI instruction?");
+
+- const TargetRegisterClass *NewRC = MRI->getRegClass(SrcRegs[0].Reg);
++ const TargetRegisterClass *NewRC = MRI.getRegClass(SrcRegs[0].Reg);
+ // NewRC is only correct if no subregisters are involved. findNextSource()
+ // should have rejected those cases already.
+ assert(SrcRegs[0].SubReg == 0 && "should not have subreg operand");
+- unsigned NewVR = MRI->createVirtualRegister(NewRC);
+- MachineBasicBlock *MBB = OrigPHI->getParent();
+- MachineInstrBuilder MIB = BuildMI(*MBB, OrigPHI, OrigPHI->getDebugLoc(),
+- TII->get(TargetOpcode::PHI), NewVR);
++ unsigned NewVR = MRI.createVirtualRegister(NewRC);
++ MachineBasicBlock *MBB = OrigPHI.getParent();
++ MachineInstrBuilder MIB = BuildMI(*MBB, &OrigPHI, OrigPHI.getDebugLoc(),
++ TII.get(TargetOpcode::PHI), NewVR);
+
+ unsigned MBBOpIdx = 2;
+- for (auto RegPair : SrcRegs) {
++ for (const RegSubRegPair &RegPair : SrcRegs) {
+ MIB.addReg(RegPair.Reg, 0, RegPair.SubReg);
+- MIB.addMBB(OrigPHI->getOperand(MBBOpIdx).getMBB());
++ MIB.addMBB(OrigPHI.getOperand(MBBOpIdx).getMBB());
+ // Since we're extended the lifetime of RegPair.Reg, clear the
+ // kill flags to account for that and make RegPair.Reg reaches
+ // the new PHI.
+- MRI->clearKillFlags(RegPair.Reg);
++ MRI.clearKillFlags(RegPair.Reg);
+ MBBOpIdx += 2;
+ }
+
+- return MIB;
++ return *MIB;
+ }
+
+ namespace {
+
+-/// \brief Helper class to rewrite the arguments of a copy-like instruction.
+-class CopyRewriter {
++/// Interface to query instructions amenable to copy rewriting.
++class Rewriter {
+ protected:
+- /// The copy-like instruction.
+ MachineInstr &CopyLike;
+-
+- /// The index of the source being rewritten.
+- unsigned CurrentSrcIdx = 0;
+-
++ unsigned CurrentSrcIdx = 0; ///< The index of the source being rewritten.
+ public:
+- CopyRewriter(MachineInstr &MI) : CopyLike(MI) {}
+- virtual ~CopyRewriter() = default;
++ Rewriter(MachineInstr &CopyLike) : CopyLike(CopyLike) {}
++ virtual ~Rewriter() {}
+
+ /// \brief Get the next rewritable source (SrcReg, SrcSubReg) and
+- /// the related value that it affects (TrackReg, TrackSubReg).
++ /// the related value that it affects (DstReg, DstSubReg).
+ /// A source is considered rewritable if its register class and the
+- /// register class of the related TrackReg may not be register
++ /// register class of the related DstReg may not be register
+ /// coalescer friendly. In other words, given a copy-like instruction
+ /// not all the arguments may be returned at rewritable source, since
+ /// some arguments are none to be register coalescer friendly.
+@@ -848,137 +809,72 @@
+ /// the only source this instruction has:
+ /// (SrcReg, SrcSubReg) = (src, srcSubIdx).
+ /// This source defines the whole definition, i.e.,
+- /// (TrackReg, TrackSubReg) = (dst, dstSubIdx).
++ /// (DstReg, DstSubReg) = (dst, dstSubIdx).
+ ///
+ /// The second and subsequent calls will return false, as there is only one
+ /// rewritable source.
+ ///
+ /// \return True if a rewritable source has been found, false otherwise.
+ /// The output arguments are valid if and only if true is returned.
+- virtual bool getNextRewritableSource(unsigned &SrcReg, unsigned &SrcSubReg,
+- unsigned &TrackReg,
+- unsigned &TrackSubReg) {
+- // If CurrentSrcIdx == 1, this means this function has already been called
+- // once. CopyLike has one definition and one argument, thus, there is
+- // nothing else to rewrite.
+- if (!CopyLike.isCopy() || CurrentSrcIdx == 1)
++ virtual bool getNextRewritableSource(RegSubRegPair &Src,
++ RegSubRegPair &Dst) = 0;
++
++ /// Rewrite the current source with \p NewReg and \p NewSubReg if possible.
++ /// \return True if the rewriting was possible, false otherwise.
++ virtual bool RewriteCurrentSource(unsigned NewReg, unsigned NewSubReg) = 0;
++};
++
++/// Rewriter for COPY instructions.
++class CopyRewriter : public Rewriter {
++public:
++ CopyRewriter(MachineInstr &MI) : Rewriter(MI) {
++ assert(MI.isCopy() && "Expected copy instruction");
++ }
++ virtual ~CopyRewriter() = default;
++
++ bool getNextRewritableSource(RegSubRegPair &Src,
++ RegSubRegPair &Dst) override {
++ // CurrentSrcIdx > 0 means this function has already been called.
++ if (CurrentSrcIdx > 0)
+ return false;
+ // This is the first call to getNextRewritableSource.
+ // Move the CurrentSrcIdx to remember that we made that call.
+ CurrentSrcIdx = 1;
+ // The rewritable source is the argument.
+ const MachineOperand &MOSrc = CopyLike.getOperand(1);
+- SrcReg = MOSrc.getReg();
+- SrcSubReg = MOSrc.getSubReg();
++ Src = RegSubRegPair(MOSrc.getReg(), MOSrc.getSubReg());
+ // What we track are the alternative sources of the definition.
+ const MachineOperand &MODef = CopyLike.getOperand(0);
+- TrackReg = MODef.getReg();
+- TrackSubReg = MODef.getSubReg();
++ Dst = RegSubRegPair(MODef.getReg(), MODef.getSubReg());
+ return true;
+ }
+
+- /// \brief Rewrite the current source with \p NewReg and \p NewSubReg
+- /// if possible.
+- /// \return True if the rewriting was possible, false otherwise.
+- virtual bool RewriteCurrentSource(unsigned NewReg, unsigned NewSubReg) {
+- if (!CopyLike.isCopy() || CurrentSrcIdx != 1)
++ bool RewriteCurrentSource(unsigned NewReg, unsigned NewSubReg) override {
++ if (CurrentSrcIdx != 1)
+ return false;
+ MachineOperand &MOSrc = CopyLike.getOperand(CurrentSrcIdx);
+ MOSrc.setReg(NewReg);
+ MOSrc.setSubReg(NewSubReg);
+ return true;
+ }
+-
+- /// \brief Given a \p Def.Reg and Def.SubReg pair, use \p RewriteMap to find
+- /// the new source to use for rewrite. If \p HandleMultipleSources is true and
+- /// multiple sources for a given \p Def are found along the way, we found a
+- /// PHI instructions that needs to be rewritten.
+- /// TODO: HandleMultipleSources should be removed once we test PHI handling
+- /// with coalescable copies.
+- TargetInstrInfo::RegSubRegPair
+- getNewSource(MachineRegisterInfo *MRI, const TargetInstrInfo *TII,
+- TargetInstrInfo::RegSubRegPair Def,
+- PeepholeOptimizer::RewriteMapTy &RewriteMap,
+- bool HandleMultipleSources = true) {
+- TargetInstrInfo::RegSubRegPair LookupSrc(Def.Reg, Def.SubReg);
+- do {
+- ValueTrackerResult Res = RewriteMap.lookup(LookupSrc);
+- // If there are no entries on the map, LookupSrc is the new source.
+- if (!Res.isValid())
+- return LookupSrc;
+-
+- // There's only one source for this definition, keep searching...
+- unsigned NumSrcs = Res.getNumSources();
+- if (NumSrcs == 1) {
+- LookupSrc.Reg = Res.getSrcReg(0);
+- LookupSrc.SubReg = Res.getSrcSubReg(0);
+- continue;
+- }
+-
+- // TODO: Remove once multiple srcs w/ coalescable copies are supported.
+- if (!HandleMultipleSources)
+- break;
+-
+- // Multiple sources, recurse into each source to find a new source
+- // for it. Then, rewrite the PHI accordingly to its new edges.
+- SmallVector<TargetInstrInfo::RegSubRegPair, 4> NewPHISrcs;
+- for (unsigned i = 0; i < NumSrcs; ++i) {
+- TargetInstrInfo::RegSubRegPair PHISrc(Res.getSrcReg(i),
+- Res.getSrcSubReg(i));
+- NewPHISrcs.push_back(
+- getNewSource(MRI, TII, PHISrc, RewriteMap, HandleMultipleSources));
+- }
+-
+- // Build the new PHI node and return its def register as the new source.
+- MachineInstr *OrigPHI = const_cast<MachineInstr *>(Res.getInst());
+- MachineInstr *NewPHI = insertPHI(MRI, TII, NewPHISrcs, OrigPHI);
+- DEBUG(dbgs() << "-- getNewSource\n");
+- DEBUG(dbgs() << " Replacing: " << *OrigPHI);
+- DEBUG(dbgs() << " With: " << *NewPHI);
+- const MachineOperand &MODef = NewPHI->getOperand(0);
+- return TargetInstrInfo::RegSubRegPair(MODef.getReg(), MODef.getSubReg());
+-
+- } while (true);
+-
+- return TargetInstrInfo::RegSubRegPair(0, 0);
+- }
+-
+- /// \brief Rewrite the source found through \p Def, by using the \p RewriteMap
+- /// and create a new COPY instruction. More info about RewriteMap in
+- /// PeepholeOptimizer::findNextSource. Right now this is only used to handle
+- /// Uncoalescable copies, since they are copy like instructions that aren't
+- /// recognized by the register allocator.
+- virtual MachineInstr *
+- RewriteSource(TargetInstrInfo::RegSubRegPair Def,
+- PeepholeOptimizer::RewriteMapTy &RewriteMap) {
+- return nullptr;
+- }
+ };
+
+ /// \brief Helper class to rewrite uncoalescable copy like instructions
+ /// into new COPY (coalescable friendly) instructions.
+-class UncoalescableRewriter : public CopyRewriter {
+-protected:
+- const TargetInstrInfo &TII;
+- MachineRegisterInfo &MRI;
+-
+- /// The number of defs in the bitcast
+- unsigned NumDefs;
++class UncoalescableRewriter : public Rewriter {
++ unsigned NumDefs; ///< Number of defs in the bitcast.
+
+ public:
+- UncoalescableRewriter(MachineInstr &MI, const TargetInstrInfo &TII,
+- MachineRegisterInfo &MRI)
+- : CopyRewriter(MI), TII(TII), MRI(MRI) {
++ UncoalescableRewriter(MachineInstr &MI) : Rewriter(MI) {
+ NumDefs = MI.getDesc().getNumDefs();
+ }
+
+- /// \brief Get the next rewritable def source (TrackReg, TrackSubReg)
++ /// \see See Rewriter::getNextRewritableSource()
+ /// All such sources need to be considered rewritable in order to
+ /// rewrite a uncoalescable copy-like instruction. This method return
+ /// each definition that must be checked if rewritable.
+- bool getNextRewritableSource(unsigned &SrcReg, unsigned &SrcSubReg,
+- unsigned &TrackReg,
+- unsigned &TrackSubReg) override {
++ bool getNextRewritableSource(RegSubRegPair &Src,
++ RegSubRegPair &Dst) override {
+ // Find the next non-dead definition and continue from there.
+ if (CurrentSrcIdx == NumDefs)
+ return false;
+@@ -990,64 +886,27 @@
+ }
+
+ // What we track are the alternative sources of the definition.
++ Src = RegSubRegPair(0, 0);
+ const MachineOperand &MODef = CopyLike.getOperand(CurrentSrcIdx);
+- TrackReg = MODef.getReg();
+- TrackSubReg = MODef.getSubReg();
++ Dst = RegSubRegPair(MODef.getReg(), MODef.getSubReg());
+
+ CurrentSrcIdx++;
+ return true;
+ }
+
+- /// \brief Rewrite the source found through \p Def, by using the \p RewriteMap
+- /// and create a new COPY instruction. More info about RewriteMap in
+- /// PeepholeOptimizer::findNextSource. Right now this is only used to handle
+- /// Uncoalescable copies, since they are copy like instructions that aren't
+- /// recognized by the register allocator.
+- MachineInstr *
+- RewriteSource(TargetInstrInfo::RegSubRegPair Def,
+- PeepholeOptimizer::RewriteMapTy &RewriteMap) override {
+- assert(!TargetRegisterInfo::isPhysicalRegister(Def.Reg) &&
+- "We do not rewrite physical registers");
+-
+- // Find the new source to use in the COPY rewrite.
+- TargetInstrInfo::RegSubRegPair NewSrc =
+- getNewSource(&MRI, &TII, Def, RewriteMap);
+-
+- // Insert the COPY.
+- const TargetRegisterClass *DefRC = MRI.getRegClass(Def.Reg);
+- unsigned NewVR = MRI.createVirtualRegister(DefRC);
+-
+- MachineInstr *NewCopy =
+- BuildMI(*CopyLike.getParent(), &CopyLike, CopyLike.getDebugLoc(),
+- TII.get(TargetOpcode::COPY), NewVR)
+- .addReg(NewSrc.Reg, 0, NewSrc.SubReg);
+-
+- NewCopy->getOperand(0).setSubReg(Def.SubReg);
+- if (Def.SubReg)
+- NewCopy->getOperand(0).setIsUndef();
+-
+- DEBUG(dbgs() << "-- RewriteSource\n");
+- DEBUG(dbgs() << " Replacing: " << CopyLike);
+- DEBUG(dbgs() << " With: " << *NewCopy);
+- MRI.replaceRegWith(Def.Reg, NewVR);
+- MRI.clearKillFlags(NewVR);
+-
+- // We extended the lifetime of NewSrc.Reg, clear the kill flags to
+- // account for that.
+- MRI.clearKillFlags(NewSrc.Reg);
+-
+- return NewCopy;
++ bool RewriteCurrentSource(unsigned NewReg, unsigned NewSubReg) override {
++ return false;
+ }
+ };
+
+-/// \brief Specialized rewriter for INSERT_SUBREG instruction.
+-class InsertSubregRewriter : public CopyRewriter {
++/// Specialized rewriter for INSERT_SUBREG instruction.
++class InsertSubregRewriter : public Rewriter {
+ public:
+- InsertSubregRewriter(MachineInstr &MI) : CopyRewriter(MI) {
++ InsertSubregRewriter(MachineInstr &MI) : Rewriter(MI) {
+ assert(MI.isInsertSubreg() && "Invalid instruction");
+ }
+
+- /// \brief See CopyRewriter::getNextRewritableSource.
++ /// \see See Rewriter::getNextRewritableSource()
+ /// Here CopyLike has the following form:
+ /// dst = INSERT_SUBREG Src1, Src2.src2SubIdx, subIdx.
+ /// Src1 has the same register class has dst, hence, there is
+@@ -1055,29 +914,27 @@
+ /// Src2.src2SubIdx, may not be register coalescer friendly.
+ /// Therefore, the first call to this method returns:
+ /// (SrcReg, SrcSubReg) = (Src2, src2SubIdx).
+- /// (TrackReg, TrackSubReg) = (dst, subIdx).
++ /// (DstReg, DstSubReg) = (dst, subIdx).
+ ///
+ /// Subsequence calls will return false.
+- bool getNextRewritableSource(unsigned &SrcReg, unsigned &SrcSubReg,
+- unsigned &TrackReg,
+- unsigned &TrackSubReg) override {
++ bool getNextRewritableSource(RegSubRegPair &Src,
++ RegSubRegPair &Dst) override {
+ // If we already get the only source we can rewrite, return false.
+ if (CurrentSrcIdx == 2)
+ return false;
+ // We are looking at v2 = INSERT_SUBREG v0, v1, sub0.
+ CurrentSrcIdx = 2;
+ const MachineOperand &MOInsertedReg = CopyLike.getOperand(2);
+- SrcReg = MOInsertedReg.getReg();
+- SrcSubReg = MOInsertedReg.getSubReg();
++ Src = RegSubRegPair(MOInsertedReg.getReg(), MOInsertedReg.getSubReg());
+ const MachineOperand &MODef = CopyLike.getOperand(0);
+
+ // We want to track something that is compatible with the
+ // partial definition.
+- TrackReg = MODef.getReg();
+ if (MODef.getSubReg())
+ // Bail if we have to compose sub-register indices.
+ return false;
+- TrackSubReg = (unsigned)CopyLike.getOperand(3).getImm();
++ Dst = RegSubRegPair(MODef.getReg(),
++ (unsigned)CopyLike.getOperand(3).getImm());
+ return true;
+ }
+
+@@ -1092,41 +949,39 @@
+ }
+ };
+
+-/// \brief Specialized rewriter for EXTRACT_SUBREG instruction.
+-class ExtractSubregRewriter : public CopyRewriter {
++/// Specialized rewriter for EXTRACT_SUBREG instruction.
++class ExtractSubregRewriter : public Rewriter {
+ const TargetInstrInfo &TII;
+
+ public:
+ ExtractSubregRewriter(MachineInstr &MI, const TargetInstrInfo &TII)
+- : CopyRewriter(MI), TII(TII) {
++ : Rewriter(MI), TII(TII) {
+ assert(MI.isExtractSubreg() && "Invalid instruction");
+ }
+
+- /// \brief See CopyRewriter::getNextRewritableSource.
++ /// \see Rewriter::getNextRewritableSource()
+ /// Here CopyLike has the following form:
+ /// dst.dstSubIdx = EXTRACT_SUBREG Src, subIdx.
+ /// There is only one rewritable source: Src.subIdx,
+ /// which defines dst.dstSubIdx.
+- bool getNextRewritableSource(unsigned &SrcReg, unsigned &SrcSubReg,
+- unsigned &TrackReg,
+- unsigned &TrackSubReg) override {
++ bool getNextRewritableSource(RegSubRegPair &Src,
++ RegSubRegPair &Dst) override {
+ // If we already get the only source we can rewrite, return false.
+ if (CurrentSrcIdx == 1)
+ return false;
+ // We are looking at v1 = EXTRACT_SUBREG v0, sub0.
+ CurrentSrcIdx = 1;
+ const MachineOperand &MOExtractedReg = CopyLike.getOperand(1);
+- SrcReg = MOExtractedReg.getReg();
+ // If we have to compose sub-register indices, bail out.
+ if (MOExtractedReg.getSubReg())
+ return false;
+
+- SrcSubReg = CopyLike.getOperand(2).getImm();
++ Src = RegSubRegPair(MOExtractedReg.getReg(),
++ CopyLike.getOperand(2).getImm());
+
+ // We want to track something that is compatible with the definition.
+ const MachineOperand &MODef = CopyLike.getOperand(0);
+- TrackReg = MODef.getReg();
+- TrackSubReg = MODef.getSubReg();
++ Dst = RegSubRegPair(MODef.getReg(), MODef.getSubReg());
+ return true;
+ }
+
+@@ -1156,14 +1011,14 @@
+ }
+ };
+
+-/// \brief Specialized rewriter for REG_SEQUENCE instruction.
+-class RegSequenceRewriter : public CopyRewriter {
++/// Specialized rewriter for REG_SEQUENCE instruction.
++class RegSequenceRewriter : public Rewriter {
+ public:
+- RegSequenceRewriter(MachineInstr &MI) : CopyRewriter(MI) {
++ RegSequenceRewriter(MachineInstr &MI) : Rewriter(MI) {
+ assert(MI.isRegSequence() && "Invalid instruction");
+ }
+
+- /// \brief See CopyRewriter::getNextRewritableSource.
++ /// \see Rewriter::getNextRewritableSource()
+ /// Here CopyLike has the following form:
+ /// dst = REG_SEQUENCE Src1.src1SubIdx, subIdx1, Src2.src2SubIdx, subIdx2.
+ /// Each call will return a different source, walking all the available
+@@ -1171,17 +1026,16 @@
+ ///
+ /// The first call returns:
+ /// (SrcReg, SrcSubReg) = (Src1, src1SubIdx).
+- /// (TrackReg, TrackSubReg) = (dst, subIdx1).
++ /// (DstReg, DstSubReg) = (dst, subIdx1).
+ ///
+ /// The second call returns:
+ /// (SrcReg, SrcSubReg) = (Src2, src2SubIdx).
+- /// (TrackReg, TrackSubReg) = (dst, subIdx2).
++ /// (DstReg, DstSubReg) = (dst, subIdx2).
+ ///
+ /// And so on, until all the sources have been traversed, then
+ /// it returns false.
+- bool getNextRewritableSource(unsigned &SrcReg, unsigned &SrcSubReg,
+- unsigned &TrackReg,
+- unsigned &TrackSubReg) override {
++ bool getNextRewritableSource(RegSubRegPair &Src,
++ RegSubRegPair &Dst) override {
+ // We are looking at v0 = REG_SEQUENCE v1, sub1, v2, sub2, etc.
+
+ // If this is the first call, move to the first argument.
+@@ -1194,17 +1048,17 @@
+ return false;
+ }
+ const MachineOperand &MOInsertedReg = CopyLike.getOperand(CurrentSrcIdx);
+- SrcReg = MOInsertedReg.getReg();
++ Src.Reg = MOInsertedReg.getReg();
+ // If we have to compose sub-register indices, bail out.
+- if ((SrcSubReg = MOInsertedReg.getSubReg()))
++ if ((Src.SubReg = MOInsertedReg.getSubReg()))
+ return false;
+
+ // We want to track something that is compatible with the related
+ // partial definition.
+- TrackSubReg = CopyLike.getOperand(CurrentSrcIdx + 1).getImm();
++ Dst.SubReg = CopyLike.getOperand(CurrentSrcIdx + 1).getImm();
+
+ const MachineOperand &MODef = CopyLike.getOperand(0);
+- TrackReg = MODef.getReg();
++ Dst.Reg = MODef.getReg();
+ // If we have to compose sub-registers, bail.
+ return MODef.getSubReg() == 0;
+ }
+@@ -1224,16 +1078,14 @@
+
+ } // end anonymous namespace
+
+-/// \brief Get the appropriated CopyRewriter for \p MI.
+-/// \return A pointer to a dynamically allocated CopyRewriter or nullptr
+-/// if no rewriter works for \p MI.
+-static CopyRewriter *getCopyRewriter(MachineInstr &MI,
+- const TargetInstrInfo &TII,
+- MachineRegisterInfo &MRI) {
++/// Get the appropriated Rewriter for \p MI.
++/// \return A pointer to a dynamically allocated Rewriter or nullptr if no
++/// rewriter works for \p MI.
++static Rewriter *getCopyRewriter(MachineInstr &MI, const TargetInstrInfo &TII) {
+ // Handle uncoalescable copy-like instructions.
+- if (MI.isBitcast() || (MI.isRegSequenceLike() || MI.isInsertSubregLike() ||
+- MI.isExtractSubregLike()))
+- return new UncoalescableRewriter(MI, TII, MRI);
++ if (MI.isBitcast() || MI.isRegSequenceLike() || MI.isInsertSubregLike() ||
++ MI.isExtractSubregLike())
++ return new UncoalescableRewriter(MI);
+
+ switch (MI.getOpcode()) {
+ default:
+@@ -1247,53 +1099,102 @@
+ case TargetOpcode::REG_SEQUENCE:
+ return new RegSequenceRewriter(MI);
+ }
+- llvm_unreachable(nullptr);
+ }
+
+-/// \brief Optimize generic copy instructions to avoid cross
+-/// register bank copy. The optimization looks through a chain of
+-/// copies and tries to find a source that has a compatible register
+-/// class.
+-/// Two register classes are considered to be compatible if they share
+-/// the same register bank.
++/// \brief Given a \p Def.Reg and Def.SubReg pair, use \p RewriteMap to find
++/// the new source to use for rewrite. If \p HandleMultipleSources is true and
++/// multiple sources for a given \p Def are found along the way, we found a
++/// PHI instructions that needs to be rewritten.
++/// TODO: HandleMultipleSources should be removed once we test PHI handling
++/// with coalescable copies.
++static RegSubRegPair
++getNewSource(MachineRegisterInfo *MRI, const TargetInstrInfo *TII,
++ RegSubRegPair Def,
++ const PeepholeOptimizer::RewriteMapTy &RewriteMap,
++ bool HandleMultipleSources = true) {
++ RegSubRegPair LookupSrc(Def.Reg, Def.SubReg);
++ while (true) {
++ ValueTrackerResult Res = RewriteMap.lookup(LookupSrc);
++ // If there are no entries on the map, LookupSrc is the new source.
++ if (!Res.isValid())
++ return LookupSrc;
++
++ // There's only one source for this definition, keep searching...
++ unsigned NumSrcs = Res.getNumSources();
++ if (NumSrcs == 1) {
++ LookupSrc.Reg = Res.getSrcReg(0);
++ LookupSrc.SubReg = Res.getSrcSubReg(0);
++ continue;
++ }
++
++ // TODO: Remove once multiple srcs w/ coalescable copies are supported.
++ if (!HandleMultipleSources)
++ break;
++
++ // Multiple sources, recurse into each source to find a new source
++ // for it. Then, rewrite the PHI accordingly to its new edges.
++ SmallVector<RegSubRegPair, 4> NewPHISrcs;
++ for (unsigned i = 0; i < NumSrcs; ++i) {
++ RegSubRegPair PHISrc(Res.getSrcReg(i), Res.getSrcSubReg(i));
++ NewPHISrcs.push_back(
++ getNewSource(MRI, TII, PHISrc, RewriteMap, HandleMultipleSources));
++ }
++
++ // Build the new PHI node and return its def register as the new source.
++ MachineInstr &OrigPHI = const_cast<MachineInstr &>(*Res.getInst());
++ MachineInstr &NewPHI = insertPHI(*MRI, *TII, NewPHISrcs, OrigPHI);
++ DEBUG(dbgs() << "-- getNewSource\n");
++ DEBUG(dbgs() << " Replacing: " << OrigPHI);
++ DEBUG(dbgs() << " With: " << NewPHI);
++ const MachineOperand &MODef = NewPHI.getOperand(0);
++ return RegSubRegPair(MODef.getReg(), MODef.getSubReg());
++ }
++
++ return RegSubRegPair(0, 0);
++}
++
++/// Optimize generic copy instructions to avoid cross register bank copy.
++/// The optimization looks through a chain of copies and tries to find a source
++/// that has a compatible register class.
++/// Two register classes are considered to be compatible if they share the same
++/// register bank.
+ /// New copies issued by this optimization are register allocator
+ /// friendly. This optimization does not remove any copy as it may
+ /// overconstrain the register allocator, but replaces some operands
+ /// when possible.
+ /// \pre isCoalescableCopy(*MI) is true.
+ /// \return True, when \p MI has been rewritten. False otherwise.
+-bool PeepholeOptimizer::optimizeCoalescableCopy(MachineInstr *MI) {
+- assert(MI && isCoalescableCopy(*MI) && "Invalid argument");
+- assert(MI->getDesc().getNumDefs() == 1 &&
++bool PeepholeOptimizer::optimizeCoalescableCopy(MachineInstr &MI) {
++ assert(isCoalescableCopy(MI) && "Invalid argument");
++ assert(MI.getDesc().getNumDefs() == 1 &&
+ "Coalescer can understand multiple defs?!");
+- const MachineOperand &MODef = MI->getOperand(0);
++ const MachineOperand &MODef = MI.getOperand(0);
+ // Do not rewrite physical definitions.
+ if (TargetRegisterInfo::isPhysicalRegister(MODef.getReg()))
+ return false;
+
+ bool Changed = false;
+ // Get the right rewriter for the current copy.
+- std::unique_ptr<CopyRewriter> CpyRewriter(getCopyRewriter(*MI, *TII, *MRI));
++ std::unique_ptr<Rewriter> CpyRewriter(getCopyRewriter(MI, *TII));
+ // If none exists, bail out.
+ if (!CpyRewriter)
+ return false;
+ // Rewrite each rewritable source.
+- unsigned SrcReg, SrcSubReg, TrackReg, TrackSubReg;
+- while (CpyRewriter->getNextRewritableSource(SrcReg, SrcSubReg, TrackReg,
+- TrackSubReg)) {
++ RegSubRegPair Src;
++ RegSubRegPair TrackPair;
++ while (CpyRewriter->getNextRewritableSource(Src, TrackPair)) {
+ // Keep track of PHI nodes and its incoming edges when looking for sources.
+ RewriteMapTy RewriteMap;
+ // Try to find a more suitable source. If we failed to do so, or get the
+ // actual source, move to the next source.
+- if (!findNextSource(TrackReg, TrackSubReg, RewriteMap))
++ if (!findNextSource(TrackPair, RewriteMap))
+ continue;
+
+ // Get the new source to rewrite. TODO: Only enable handling of multiple
+ // sources (PHIs) once we have a motivating example and testcases for it.
+- TargetInstrInfo::RegSubRegPair TrackPair(TrackReg, TrackSubReg);
+- TargetInstrInfo::RegSubRegPair NewSrc = CpyRewriter->getNewSource(
+- MRI, TII, TrackPair, RewriteMap, false /* multiple sources */);
+- if (SrcReg == NewSrc.Reg || NewSrc.Reg == 0)
++ RegSubRegPair NewSrc = getNewSource(MRI, TII, TrackPair, RewriteMap,
++ /*HandleMultipleSources=*/false);
++ if (Src.Reg == NewSrc.Reg || NewSrc.Reg == 0)
+ continue;
+
+ // Rewrite source.
+@@ -1312,6 +1213,47 @@
+ return Changed;
+ }
+
++/// \brief Rewrite the source found through \p Def, by using the \p RewriteMap
++/// and create a new COPY instruction. More info about RewriteMap in
++/// PeepholeOptimizer::findNextSource. Right now this is only used to handle
++/// Uncoalescable copies, since they are copy like instructions that aren't
++/// recognized by the register allocator.
++MachineInstr &
++PeepholeOptimizer::rewriteSource(MachineInstr &CopyLike,
++ RegSubRegPair Def, RewriteMapTy &RewriteMap) {
++ assert(!TargetRegisterInfo::isPhysicalRegister(Def.Reg) &&
++ "We do not rewrite physical registers");
++
++ // Find the new source to use in the COPY rewrite.
++ RegSubRegPair NewSrc = getNewSource(MRI, TII, Def, RewriteMap);
++
++ // Insert the COPY.
++ const TargetRegisterClass *DefRC = MRI->getRegClass(Def.Reg);
++ unsigned NewVReg = MRI->createVirtualRegister(DefRC);
++
++ MachineInstr *NewCopy =
++ BuildMI(*CopyLike.getParent(), &CopyLike, CopyLike.getDebugLoc(),
++ TII->get(TargetOpcode::COPY), NewVReg)
++ .addReg(NewSrc.Reg, 0, NewSrc.SubReg);
++
++ if (Def.SubReg) {
++ NewCopy->getOperand(0).setSubReg(Def.SubReg);
++ NewCopy->getOperand(0).setIsUndef();
++ }
++
++ DEBUG(dbgs() << "-- RewriteSource\n");
++ DEBUG(dbgs() << " Replacing: " << CopyLike);
++ DEBUG(dbgs() << " With: " << *NewCopy);
++ MRI->replaceRegWith(Def.Reg, NewVReg);
++ MRI->clearKillFlags(NewVReg);
++
++ // We extended the lifetime of NewSrc.Reg, clear the kill flags to
++ // account for that.
++ MRI->clearKillFlags(NewSrc.Reg);
++
++ return *NewCopy;
++}
++
+ /// \brief Optimize copy-like instructions to create
+ /// register coalescer friendly instruction.
+ /// The optimization tries to kill-off the \p MI by looking
+@@ -1324,48 +1266,40 @@
+ /// been removed from its parent.
+ /// All COPY instructions created, are inserted in \p LocalMIs.
+ bool PeepholeOptimizer::optimizeUncoalescableCopy(
+- MachineInstr *MI, SmallPtrSetImpl<MachineInstr *> &LocalMIs) {
+- assert(MI && isUncoalescableCopy(*MI) && "Invalid argument");
+-
+- // Check if we can rewrite all the values defined by this instruction.
+- SmallVector<TargetInstrInfo::RegSubRegPair, 4> RewritePairs;
+- // Get the right rewriter for the current copy.
+- std::unique_ptr<CopyRewriter> CpyRewriter(getCopyRewriter(*MI, *TII, *MRI));
+- // If none exists, bail out.
+- if (!CpyRewriter)
+- return false;
++ MachineInstr &MI, SmallPtrSetImpl<MachineInstr *> &LocalMIs) {
++ assert(isUncoalescableCopy(MI) && "Invalid argument");
++ UncoalescableRewriter CpyRewriter(MI);
+
+ // Rewrite each rewritable source by generating new COPYs. This works
+ // differently from optimizeCoalescableCopy since it first makes sure that all
+ // definitions can be rewritten.
+ RewriteMapTy RewriteMap;
+- unsigned Reg, SubReg, CopyDefReg, CopyDefSubReg;
+- while (CpyRewriter->getNextRewritableSource(Reg, SubReg, CopyDefReg,
+- CopyDefSubReg)) {
++ RegSubRegPair Src;
++ RegSubRegPair Def;
++ SmallVector<RegSubRegPair, 4> RewritePairs;
++ while (CpyRewriter.getNextRewritableSource(Src, Def)) {
+ // If a physical register is here, this is probably for a good reason.
+ // Do not rewrite that.
+- if (TargetRegisterInfo::isPhysicalRegister(CopyDefReg))
++ if (TargetRegisterInfo::isPhysicalRegister(Def.Reg))
+ return false;
+
+ // If we do not know how to rewrite this definition, there is no point
+ // in trying to kill this instruction.
+- TargetInstrInfo::RegSubRegPair Def(CopyDefReg, CopyDefSubReg);
+- if (!findNextSource(Def.Reg, Def.SubReg, RewriteMap))
++ if (!findNextSource(Def, RewriteMap))
+ return false;
+
+ RewritePairs.push_back(Def);
+ }
+
+ // The change is possible for all defs, do it.
+- for (const auto &Def : RewritePairs) {
++ for (const RegSubRegPair &Def : RewritePairs) {
+ // Rewrite the "copy" in a way the register coalescer understands.
+- MachineInstr *NewCopy = CpyRewriter->RewriteSource(Def, RewriteMap);
+- assert(NewCopy && "Should be able to always generate a new copy");
+- LocalMIs.insert(NewCopy);
++ MachineInstr &NewCopy = rewriteSource(MI, Def, RewriteMap);
++ LocalMIs.insert(&NewCopy);
+ }
+
+ // MI is now dead.
+- MI->eraseFromParent();
++ MI.eraseFromParent();
+ ++NumUncoalescableCopies;
+ return true;
+ }
+@@ -1374,18 +1308,18 @@
+ /// We only fold loads to virtual registers and the virtual register defined
+ /// has a single use.
+ bool PeepholeOptimizer::isLoadFoldable(
+- MachineInstr *MI, SmallSet<unsigned, 16> &FoldAsLoadDefCandidates) {
+- if (!MI->canFoldAsLoad() || !MI->mayLoad())
++ MachineInstr &MI, SmallSet<unsigned, 16> &FoldAsLoadDefCandidates) {
++ if (!MI.canFoldAsLoad() || !MI.mayLoad())
+ return false;
+- const MCInstrDesc &MCID = MI->getDesc();
++ const MCInstrDesc &MCID = MI.getDesc();
+ if (MCID.getNumDefs() != 1)
+ return false;
+
+- unsigned Reg = MI->getOperand(0).getReg();
++ unsigned Reg = MI.getOperand(0).getReg();
+ // To reduce compilation time, we check MRI->hasOneNonDBGUse when inserting
+ // loads. It should be checked when processing uses of the load, since
+ // uses can be removed during peephole.
+- if (!MI->getOperand(0).getSubReg() &&
++ if (!MI.getOperand(0).getSubReg() &&
+ TargetRegisterInfo::isVirtualRegister(Reg) &&
+ MRI->hasOneNonDBGUse(Reg)) {
+ FoldAsLoadDefCandidates.insert(Reg);
+@@ -1395,16 +1329,16 @@
+ }
+
+ bool PeepholeOptimizer::isMoveImmediate(
+- MachineInstr *MI, SmallSet<unsigned, 4> &ImmDefRegs,
++ MachineInstr &MI, SmallSet<unsigned, 4> &ImmDefRegs,
+ DenseMap<unsigned, MachineInstr *> &ImmDefMIs) {
+- const MCInstrDesc &MCID = MI->getDesc();
+- if (!MI->isMoveImmediate())
++ const MCInstrDesc &MCID = MI.getDesc();
++ if (!MI.isMoveImmediate())
+ return false;
+ if (MCID.getNumDefs() != 1)
+ return false;
+- unsigned Reg = MI->getOperand(0).getReg();
++ unsigned Reg = MI.getOperand(0).getReg();
+ if (TargetRegisterInfo::isVirtualRegister(Reg)) {
+- ImmDefMIs.insert(std::make_pair(Reg, MI));
++ ImmDefMIs.insert(std::make_pair(Reg, &MI));
+ ImmDefRegs.insert(Reg);
+ return true;
+ }
+@@ -1415,11 +1349,11 @@
+ /// Try folding register operands that are defined by move immediate
+ /// instructions, i.e. a trivial constant folding optimization, if
+ /// and only if the def and use are in the same BB.
+-bool PeepholeOptimizer::foldImmediate(
+- MachineInstr *MI, MachineBasicBlock *MBB, SmallSet<unsigned, 4> &ImmDefRegs,
++bool PeepholeOptimizer::foldImmediate(MachineInstr &MI,
++ SmallSet<unsigned, 4> &ImmDefRegs,
+ DenseMap<unsigned, MachineInstr *> &ImmDefMIs) {
+- for (unsigned i = 0, e = MI->getDesc().getNumOperands(); i != e; ++i) {
+- MachineOperand &MO = MI->getOperand(i);
++ for (unsigned i = 0, e = MI.getDesc().getNumOperands(); i != e; ++i) {
++ MachineOperand &MO = MI.getOperand(i);
+ if (!MO.isReg() || MO.isDef())
+ continue;
+ // Ignore dead implicit defs.
+@@ -1432,7 +1366,7 @@
+ continue;
+ DenseMap<unsigned, MachineInstr*>::iterator II = ImmDefMIs.find(Reg);
+ assert(II != ImmDefMIs.end() && "couldn't find immediate definition");
+- if (TII->FoldImmediate(*MI, *II->second, Reg, MRI)) {
++ if (TII->FoldImmediate(MI, *II->second, Reg, MRI)) {
+ ++NumImmFold;
+ return true;
+ }
+@@ -1454,28 +1388,28 @@
+ // %2 = COPY %0:sub1
+ //
+ // Should replace %2 uses with %1:sub1
+-bool PeepholeOptimizer::foldRedundantCopy(
+- MachineInstr *MI, SmallSet<unsigned, 4> &CopySrcRegs,
++bool PeepholeOptimizer::foldRedundantCopy(MachineInstr &MI,
++ SmallSet<unsigned, 4> &CopySrcRegs,
+ DenseMap<unsigned, MachineInstr *> &CopyMIs) {
+- assert(MI->isCopy() && "expected a COPY machine instruction");
++ assert(MI.isCopy() && "expected a COPY machine instruction");
+
+- unsigned SrcReg = MI->getOperand(1).getReg();
++ unsigned SrcReg = MI.getOperand(1).getReg();
+ if (!TargetRegisterInfo::isVirtualRegister(SrcReg))
+ return false;
+
+- unsigned DstReg = MI->getOperand(0).getReg();
++ unsigned DstReg = MI.getOperand(0).getReg();
+ if (!TargetRegisterInfo::isVirtualRegister(DstReg))
+ return false;
+
+ if (CopySrcRegs.insert(SrcReg).second) {
+ // First copy of this reg seen.
+- CopyMIs.insert(std::make_pair(SrcReg, MI));
++ CopyMIs.insert(std::make_pair(SrcReg, &MI));
+ return false;
+ }
+
+ MachineInstr *PrevCopy = CopyMIs.find(SrcReg)->second;
+
+- unsigned SrcSubReg = MI->getOperand(1).getSubReg();
++ unsigned SrcSubReg = MI.getOperand(1).getSubReg();
+ unsigned PrevSrcSubReg = PrevCopy->getOperand(1).getSubReg();
+
+ // Can't replace different subregister extracts.
+@@ -1504,19 +1438,19 @@
+ }
+
+ bool PeepholeOptimizer::foldRedundantNAPhysCopy(
+- MachineInstr *MI, DenseMap<unsigned, MachineInstr *> &NAPhysToVirtMIs) {
+- assert(MI->isCopy() && "expected a COPY machine instruction");
++ MachineInstr &MI, DenseMap<unsigned, MachineInstr *> &NAPhysToVirtMIs) {
++ assert(MI.isCopy() && "expected a COPY machine instruction");
+
+ if (DisableNAPhysCopyOpt)
+ return false;
+
+- unsigned DstReg = MI->getOperand(0).getReg();
+- unsigned SrcReg = MI->getOperand(1).getReg();
++ unsigned DstReg = MI.getOperand(0).getReg();
++ unsigned SrcReg = MI.getOperand(1).getReg();
+ if (isNAPhysCopy(SrcReg) && TargetRegisterInfo::isVirtualRegister(DstReg)) {
+ // %vreg = COPY %physreg
+ // Avoid using a datastructure which can track multiple live non-allocatable
+ // phys->virt copies since LLVM doesn't seem to do this.
+- NAPhysToVirtMIs.insert({SrcReg, MI});
++ NAPhysToVirtMIs.insert({SrcReg, &MI});
+ return false;
+ }
+
+@@ -1528,8 +1462,7 @@
+ if (PrevCopy == NAPhysToVirtMIs.end()) {
+ // We can't remove the copy: there was an intervening clobber of the
+ // non-allocatable physical register after the copy to virtual.
+- DEBUG(dbgs() << "NAPhysCopy: intervening clobber forbids erasing " << *MI
+- << '\n');
++ DEBUG(dbgs() << "NAPhysCopy: intervening clobber forbids erasing " << MI);
+ return false;
+ }
+
+@@ -1537,7 +1470,7 @@
+ if (PrevDstReg == SrcReg) {
+ // Remove the virt->phys copy: we saw the virtual register definition, and
+ // the non-allocatable physical register's state hasn't changed since then.
+- DEBUG(dbgs() << "NAPhysCopy: erasing " << *MI << '\n');
++ DEBUG(dbgs() << "NAPhysCopy: erasing " << MI);
+ ++NumNAPhysCopies;
+ return true;
+ }
+@@ -1546,7 +1479,7 @@
+ // register get a copy of the non-allocatable physical register, and we only
+ // track one such copy. Avoid getting confused by this new non-allocatable
+ // physical register definition, and remove it from the tracked copies.
+- DEBUG(dbgs() << "NAPhysCopy: missed opportunity " << *MI << '\n');
++ DEBUG(dbgs() << "NAPhysCopy: missed opportunity " << MI);
+ NAPhysToVirtMIs.erase(PrevCopy);
+ return false;
+ }
+@@ -1611,11 +1544,11 @@
+ return false;
+ }
+
+-/// \brief Phi instructions will eventually be lowered to copy instructions. If
+-/// phi is in a loop header, a recurrence may formulated around the source and
+-/// destination of the phi. For such case commuting operands of the instructions
+-/// in the recurrence may enable coalescing of the copy instruction generated
+-/// from the phi. For example, if there is a recurrence of
++/// Phi instructions will eventually be lowered to copy instructions.
++/// If phi is in a loop header, a recurrence may formulated around the source
++/// and destination of the phi. For such case commuting operands of the
++/// instructions in the recurrence may enable coalescing of the copy instruction
++/// generated from the phi. For example, if there is a recurrence of
+ ///
+ /// LoopHeader:
+ /// %1 = phi(%0, %100)
+@@ -1725,27 +1658,25 @@
+ }
+
+ if (!MI->isCopy()) {
+- for (const auto &Op : MI->operands()) {
++ for (const MachineOperand &MO : MI->operands()) {
+ // Visit all operands: definitions can be implicit or explicit.
+- if (Op.isReg()) {
+- unsigned Reg = Op.getReg();
+- if (Op.isDef() && isNAPhysCopy(Reg)) {
++ if (MO.isReg()) {
++ unsigned Reg = MO.getReg();
++ if (MO.isDef() && isNAPhysCopy(Reg)) {
+ const auto &Def = NAPhysToVirtMIs.find(Reg);
+ if (Def != NAPhysToVirtMIs.end()) {
+ // A new definition of the non-allocatable physical register
+ // invalidates previous copies.
+- DEBUG(dbgs() << "NAPhysCopy: invalidating because of " << *MI
+- << '\n');
++ DEBUG(dbgs() << "NAPhysCopy: invalidating because of " << *MI);
+ NAPhysToVirtMIs.erase(Def);
+ }
+ }
+- } else if (Op.isRegMask()) {
+- const uint32_t *RegMask = Op.getRegMask();
++ } else if (MO.isRegMask()) {
++ const uint32_t *RegMask = MO.getRegMask();
+ for (auto &RegMI : NAPhysToVirtMIs) {
+ unsigned Def = RegMI.first;
+ if (MachineOperand::clobbersPhysReg(RegMask, Def)) {
+- DEBUG(dbgs() << "NAPhysCopy: invalidating because of " << *MI
+- << '\n');
++ DEBUG(dbgs() << "NAPhysCopy: invalidating because of " << *MI);
+ NAPhysToVirtMIs.erase(Def);
+ }
+ }
+@@ -1761,58 +1692,57 @@
+ // don't know what's correct anymore.
+ //
+ // FIXME: handle explicit asm clobbers.
+- DEBUG(dbgs() << "NAPhysCopy: blowing away all info due to " << *MI
+- << '\n');
++ DEBUG(dbgs() << "NAPhysCopy: blowing away all info due to " << *MI);
+ NAPhysToVirtMIs.clear();
+ }
+
+ if ((isUncoalescableCopy(*MI) &&
+- optimizeUncoalescableCopy(MI, LocalMIs)) ||
+- (MI->isCompare() && optimizeCmpInstr(MI, &MBB)) ||
+- (MI->isSelect() && optimizeSelect(MI, LocalMIs))) {
++ optimizeUncoalescableCopy(*MI, LocalMIs)) ||
++ (MI->isCompare() && optimizeCmpInstr(*MI)) ||
++ (MI->isSelect() && optimizeSelect(*MI, LocalMIs))) {
+ // MI is deleted.
+ LocalMIs.erase(MI);
+ Changed = true;
+ continue;
+ }
+
+- if (MI->isConditionalBranch() && optimizeCondBranch(MI)) {
++ if (MI->isConditionalBranch() && optimizeCondBranch(*MI)) {
+ Changed = true;
+ continue;
+ }
+
+- if (isCoalescableCopy(*MI) && optimizeCoalescableCopy(MI)) {
++ if (isCoalescableCopy(*MI) && optimizeCoalescableCopy(*MI)) {
+ // MI is just rewritten.
+ Changed = true;
+ continue;
+ }
+
+ if (MI->isCopy() &&
+- (foldRedundantCopy(MI, CopySrcRegs, CopySrcMIs) ||
+- foldRedundantNAPhysCopy(MI, NAPhysToVirtMIs))) {
++ (foldRedundantCopy(*MI, CopySrcRegs, CopySrcMIs) ||
++ foldRedundantNAPhysCopy(*MI, NAPhysToVirtMIs))) {
+ LocalMIs.erase(MI);
+ MI->eraseFromParent();
+ Changed = true;
+ continue;
+ }
+
+- if (isMoveImmediate(MI, ImmDefRegs, ImmDefMIs)) {
++ if (isMoveImmediate(*MI, ImmDefRegs, ImmDefMIs)) {
+ SeenMoveImm = true;
+ } else {
+- Changed |= optimizeExtInstr(MI, &MBB, LocalMIs);
++ Changed |= optimizeExtInstr(*MI, MBB, LocalMIs);
+ // optimizeExtInstr might have created new instructions after MI
+ // and before the already incremented MII. Adjust MII so that the
+ // next iteration sees the new instructions.
+ MII = MI;
+ ++MII;
+ if (SeenMoveImm)
+- Changed |= foldImmediate(MI, &MBB, ImmDefRegs, ImmDefMIs);
++ Changed |= foldImmediate(*MI, ImmDefRegs, ImmDefMIs);
+ }
+
+ // Check whether MI is a load candidate for folding into a later
+ // instruction. If MI is not a candidate, check whether we can fold an
+ // earlier load into MI.
+- if (!isLoadFoldable(MI, FoldAsLoadDefCandidates) &&
++ if (!isLoadFoldable(*MI, FoldAsLoadDefCandidates) &&
+ !FoldAsLoadDefCandidates.empty()) {
+
+ // We visit each operand even after successfully folding a previous
+@@ -1861,7 +1791,7 @@
+ // the load candidates. Note: We might be able to fold *into* this
+ // instruction, so this needs to be after the folding logic.
+ if (MI->isLoadFoldBarrier()) {
+- DEBUG(dbgs() << "Encountered load fold barrier on " << *MI << "\n");
++ DEBUG(dbgs() << "Encountered load fold barrier on " << *MI);
+ FoldAsLoadDefCandidates.clear();
+ }
+ }
+@@ -1958,14 +1888,14 @@
+ // duplicate the code from the generic TII.
+ return ValueTrackerResult();
+
+- SmallVector<TargetInstrInfo::RegSubRegPairAndIdx, 8> RegSeqInputRegs;
++ SmallVector<RegSubRegPairAndIdx, 8> RegSeqInputRegs;
+ if (!TII->getRegSequenceInputs(*Def, DefIdx, RegSeqInputRegs))
+ return ValueTrackerResult();
+
+ // We are looking at:
+ // Def = REG_SEQUENCE v0, sub0, v1, sub1, ...
+ // Check if one of the operand defines the subreg we are interested in.
+- for (auto &RegSeqInput : RegSeqInputRegs) {
++ for (const RegSubRegPairAndIdx &RegSeqInput : RegSeqInputRegs) {
+ if (RegSeqInput.SubIdx == DefSubReg) {
+ if (RegSeqInput.SubReg)
+ // Bail if we have to compose sub registers.
+@@ -1996,8 +1926,8 @@
+ // duplicate the code from the generic TII.
+ return ValueTrackerResult();
+
+- TargetInstrInfo::RegSubRegPair BaseReg;
+- TargetInstrInfo::RegSubRegPairAndIdx InsertedReg;
++ RegSubRegPair BaseReg;
++ RegSubRegPairAndIdx InsertedReg;
+ if (!TII->getInsertSubregInputs(*Def, DefIdx, BaseReg, InsertedReg))
+ return ValueTrackerResult();
+
+@@ -2050,7 +1980,7 @@
+ // duplicate the code from the generic TII.
+ return ValueTrackerResult();
+
+- TargetInstrInfo::RegSubRegPairAndIdx ExtractSubregInputReg;
++ RegSubRegPairAndIdx ExtractSubregInputReg;
+ if (!TII->getExtractSubregInputs(*Def, DefIdx, ExtractSubregInputReg))
+ return ValueTrackerResult();
+
+@@ -2083,7 +2013,7 @@
+ Def->getOperand(3).getImm());
+ }
+
+-/// \brief Explore each PHI incoming operand and return its sources
++/// Explore each PHI incoming operand and return its sources.
+ ValueTrackerResult ValueTracker::getNextSourceFromPHI() {
+ assert(Def->isPHI() && "Invalid definition");
+ ValueTrackerResult Res;
+@@ -2095,7 +2025,7 @@
+
+ // Return all register sources for PHI instructions.
+ for (unsigned i = 1, e = Def->getNumOperands(); i < e; i += 2) {
+- auto &MO = Def->getOperand(i);
++ const MachineOperand &MO = Def->getOperand(i);
+ assert(MO.isReg() && "Invalid PHI instruction");
+ // We have no code to deal with undef operands. They shouldn't happen in
+ // normal programs anyway.
+@@ -2121,7 +2051,7 @@
+ return getNextSourceFromBitcast();
+ // All the remaining cases involve "complex" instructions.
+ // Bail if we did not ask for the advanced tracking.
+- if (!UseAdvancedTracking)
++ if (DisableAdvCopyOpt)
+ return ValueTrackerResult();
+ if (Def->isRegSequence() || Def->isRegSequenceLike())
+ return getNextSourceFromRegSequence();
diff --git a/devel/llvm60/pkg-descr b/devel/llvm60/pkg-descr
new file mode 100644
index 000000000000..d252f07c6790
--- /dev/null
+++ b/devel/llvm60/pkg-descr
@@ -0,0 +1,8 @@
+The LLVM Project is a collection of modular and reusable compiler and
+toolchain technologies.
+
+This port includes Clang (a C/C++/Objective-C compiler), LLD (a linker),
+LLDB (a debugger), an OpenMP runtime library, and the LLVM infrastructure
+these are built on.
+
+WWW: http://llvm.org/
diff --git a/devel/llvm60/pkg-plist b/devel/llvm60/pkg-plist
new file mode 100644
index 000000000000..02cb1d865866
--- /dev/null
+++ b/devel/llvm60/pkg-plist
@@ -0,0 +1,2899 @@
+@comment >>>>> GENERATED FILE, DO NOT EDIT <<<<<
+@comment Alter build-plist target and regenerate as required
+bin/bugpoint%%LLVM_SUFFIX%%
+bin/llc%%LLVM_SUFFIX%%
+bin/lli%%LLVM_SUFFIX%%
+bin/llvm-ar%%LLVM_SUFFIX%%
+bin/llvm-as%%LLVM_SUFFIX%%
+bin/llvm-bcanalyzer%%LLVM_SUFFIX%%
+bin/llvm-cat%%LLVM_SUFFIX%%
+bin/llvm-cfi-verify%%LLVM_SUFFIX%%
+bin/llvm-config%%LLVM_SUFFIX%%
+bin/llvm-cov%%LLVM_SUFFIX%%
+bin/llvm-cvtres%%LLVM_SUFFIX%%
+bin/llvm-diff%%LLVM_SUFFIX%%
+bin/llvm-dis%%LLVM_SUFFIX%%
+bin/llvm-dlltool%%LLVM_SUFFIX%%
+bin/llvm-dwarfdump%%LLVM_SUFFIX%%
+bin/llvm-dwp%%LLVM_SUFFIX%%
+bin/llvm-extract%%LLVM_SUFFIX%%
+bin/llvm-link%%LLVM_SUFFIX%%
+bin/llvm-mc%%LLVM_SUFFIX%%
+bin/llvm-mcmarkup%%LLVM_SUFFIX%%
+bin/llvm-modextract%%LLVM_SUFFIX%%
+bin/llvm-mt%%LLVM_SUFFIX%%
+bin/llvm-nm%%LLVM_SUFFIX%%
+bin/llvm-objcopy%%LLVM_SUFFIX%%
+bin/llvm-objdump%%LLVM_SUFFIX%%
+bin/llvm-opt-report%%LLVM_SUFFIX%%
+bin/llvm-pdbutil%%LLVM_SUFFIX%%
+bin/llvm-profdata%%LLVM_SUFFIX%%
+bin/llvm-ranlib%%LLVM_SUFFIX%%
+bin/llvm-rc%%LLVM_SUFFIX%%
+bin/llvm-readelf%%LLVM_SUFFIX%%
+bin/llvm-readobj%%LLVM_SUFFIX%%
+bin/llvm-rtdyld%%LLVM_SUFFIX%%
+bin/llvm-size%%LLVM_SUFFIX%%
+bin/llvm-split%%LLVM_SUFFIX%%
+bin/llvm-stress%%LLVM_SUFFIX%%
+bin/llvm-strings%%LLVM_SUFFIX%%
+bin/llvm-symbolizer%%LLVM_SUFFIX%%
+bin/llvm-tblgen%%LLVM_SUFFIX%%
+bin/macho-dump%%LLVM_SUFFIX%%
+bin/opt%%LLVM_SUFFIX%%
+bin/sancov%%LLVM_SUFFIX%%
+%%CLANG%%bin/c-index-test%%LLVM_SUFFIX%%
+%%CLANG%%bin/clang%%LLVM_SUFFIX%%
+%%CLANG%%bin/clang++%%LLVM_SUFFIX%%
+%%CLANG%%bin/clang-check%%LLVM_SUFFIX%%
+%%CLANG%%bin/clang-cpp%%LLVM_SUFFIX%%
+%%CLANG%%bin/clang-format%%LLVM_SUFFIX%%
+%%CLANG%%bin/clang-func-mapping%%LLVM_SUFFIX%%
+%%CLANG%%bin/clang-import-test%%LLVM_SUFFIX%%
+%%CLANG%%bin/clang-offload-bundler%%LLVM_SUFFIX%%
+%%CLANG%%bin/scan-build%%LLVM_SUFFIX%%
+%%CLANG%%bin/scan-view%%LLVM_SUFFIX%%
+%%EXTRAS%%bin/clang-apply-replacements%%LLVM_SUFFIX%%
+%%EXTRAS%%bin/clang-change-namespace%%LLVM_SUFFIX%%
+%%EXTRAS%%bin/clang-include-fixer%%LLVM_SUFFIX%%
+%%EXTRAS%%bin/clang-modernize%%LLVM_SUFFIX%%
+%%EXTRAS%%bin/clang-query%%LLVM_SUFFIX%%
+%%EXTRAS%%bin/clang-rename%%LLVM_SUFFIX%%
+%%EXTRAS%%bin/clang-reorder-fields%%LLVM_SUFFIX%%
+%%EXTRAS%%bin/clang-tidy%%LLVM_SUFFIX%%
+%%EXTRAS%%bin/clangd%%LLVM_SUFFIX%%
+%%EXTRAS%%bin/find-all-symbols%%LLVM_SUFFIX%%
+%%EXTRAS%%bin/modularize%%LLVM_SUFFIX%%
+%%LLD%%bin/ld.lld%%LLVM_SUFFIX%%
+%%LLD%%bin/ld64.lld%%LLVM_SUFFIX%%
+%%LLD%%bin/lld%%LLVM_SUFFIX%%
+%%LLD%%bin/lld-link%%LLVM_SUFFIX%%
+%%LLD%%bin/wasm-ld%%LLVM_SUFFIX%%
+%%LLDB%%bin/lldb%%LLVM_SUFFIX%%
+%%LLDB%%bin/lldb-argdumper%%LLVM_SUFFIX%%
+%%LLDB%%bin/lldb-mi%%LLVM_SUFFIX%%
+%%LLDB%%bin/lldb-server%%LLVM_SUFFIX%%
+%%LLDB%%bin/lldb-test%%LLVM_SUFFIX%%
+%%LIT%%bin/FileCheck%%LLVM_SUFFIX%%
+%%LIT%%llvm%%LLVM_SUFFIX%%/bin/FileCheck
+%%LIT%%bin/lit%%LLVM_SUFFIX%%
+%%LIT%%llvm%%LLVM_SUFFIX%%/bin/lit
+%%LIT%%bin/llvm-lit%%LLVM_SUFFIX%%
+%%LIT%%llvm%%LLVM_SUFFIX%%/bin/llvm-lit
+%%LLDB%%llvm%%LLVM_LIB_VER%%/%%PYTHON_SITELIBDIR%%/lldb/__init__.py
+%%LLDB%%llvm%%LLVM_LIB_VER%%/%%PYTHON_SITELIBDIR%%/lldb/_lldb.so
+%%LLDB%%llvm%%LLVM_LIB_VER%%/%%PYTHON_SITELIBDIR%%/lldb/embedded_interpreter.py
+%%LLDB%%llvm%%LLVM_LIB_VER%%/%%PYTHON_SITELIBDIR%%/lldb/formatters/Logger.py
+%%LLDB%%llvm%%LLVM_LIB_VER%%/%%PYTHON_SITELIBDIR%%/lldb/formatters/__init__.py
+%%LLDB%%llvm%%LLVM_LIB_VER%%/%%PYTHON_SITELIBDIR%%/lldb/formatters/attrib_fromdict.py
+%%LLDB%%llvm%%LLVM_LIB_VER%%/%%PYTHON_SITELIBDIR%%/lldb/formatters/cache.py
+%%LLDB%%llvm%%LLVM_LIB_VER%%/%%PYTHON_SITELIBDIR%%/lldb/formatters/cpp/__init__.py
+%%LLDB%%llvm%%LLVM_LIB_VER%%/%%PYTHON_SITELIBDIR%%/lldb/formatters/cpp/gnu_libstdcpp.py
+%%LLDB%%llvm%%LLVM_LIB_VER%%/%%PYTHON_SITELIBDIR%%/lldb/formatters/cpp/libcxx.py
+%%LLDB%%llvm%%LLVM_LIB_VER%%/%%PYTHON_SITELIBDIR%%/lldb/formatters/metrics.py
+%%LLDB%%llvm%%LLVM_LIB_VER%%/%%PYTHON_SITELIBDIR%%/lldb/formatters/synth.py
+%%LLDB%%llvm%%LLVM_LIB_VER%%/%%PYTHON_SITELIBDIR%%/lldb/lldb-argdumper
+%%LLDB%%llvm%%LLVM_LIB_VER%%/%%PYTHON_SITELIBDIR%%/lldb/runtime/__init__.py
+%%LLDB%%llvm%%LLVM_LIB_VER%%/%%PYTHON_SITELIBDIR%%/lldb/utils/__init__.py
+%%LLDB%%llvm%%LLVM_LIB_VER%%/%%PYTHON_SITELIBDIR%%/lldb/utils/symbolication.py
+%%LLDB%%llvm%%LLVM_LIB_VER%%/%%PYTHON_SITELIBDIR%%/six.py
+%%COMPILER_RT%%llvm%%LLVM_LIB_VER%%/asan_blacklist.txt
+llvm%%LLVM_LIB_VER%%/bin/bugpoint
+%%CLANG%%llvm%%LLVM_LIB_VER%%/bin/c-index-test
+%%CLANG%%llvm%%LLVM_LIB_VER%%/bin/clang
+%%CLANG%%llvm%%LLVM_LIB_VER%%/bin/clang++
+%%CLANG%%llvm%%LLVM_LIB_VER%%/bin/clang-%%LLVM_MAJOR%%
+%%EXTRAS%%llvm%%LLVM_LIB_VER%%/bin/clang-apply-replacements
+%%EXTRAS%%llvm%%LLVM_LIB_VER%%/bin/clang-change-namespace
+%%CLANG%%llvm%%LLVM_LIB_VER%%/bin/clang-check
+%%CLANG%%llvm%%LLVM_LIB_VER%%/bin/clang-cl
+%%CLANG%%llvm%%LLVM_LIB_VER%%/bin/clang-cpp
+%%CLANG%%llvm%%LLVM_LIB_VER%%/bin/clang-format
+%%CLANG%%llvm%%LLVM_LIB_VER%%/bin/clang-func-mapping
+%%CLANG%%llvm%%LLVM_LIB_VER%%/bin/clang-import-test
+%%EXTRAS%%llvm%%LLVM_LIB_VER%%/bin/clang-include-fixer
+%%CLANG%%llvm%%LLVM_LIB_VER%%/bin/clang-offload-bundler
+%%EXTRAS%%llvm%%LLVM_LIB_VER%%/bin/clang-query
+%%CLANG%%llvm%%LLVM_LIB_VER%%/bin/clang-refactor
+%%EXTRAS%%llvm%%LLVM_LIB_VER%%/bin/clang-rename
+%%EXTRAS%%llvm%%LLVM_LIB_VER%%/bin/clang-reorder-fields
+%%CLANG%%llvm%%LLVM_LIB_VER%%/bin/clang-tblgen
+%%EXTRAS%%llvm%%LLVM_LIB_VER%%/bin/clang-tidy
+%%EXTRAS%%llvm%%LLVM_LIB_VER%%/bin/clangd
+%%EXTRAS%%llvm%%LLVM_LIB_VER%%/bin/find-all-symbols
+%%CLANG%%llvm%%LLVM_LIB_VER%%/bin/git-clang-format
+%%LLD%%llvm%%LLVM_LIB_VER%%/bin/ld.lld
+%%LLD%%llvm%%LLVM_LIB_VER%%/bin/ld64.lld
+llvm%%LLVM_LIB_VER%%/bin/llc
+%%LLD%%llvm%%LLVM_LIB_VER%%/bin/lld
+%%LLD%%llvm%%LLVM_LIB_VER%%/bin/lld-link
+%%LLDB%%llvm%%LLVM_LIB_VER%%/bin/lldb
+%%LLDB%%llvm%%LLVM_LIB_VER%%/bin/lldb-argdumper
+%%LLDB%%llvm%%LLVM_LIB_VER%%/bin/lldb-mi
+%%LLDB%%llvm%%LLVM_LIB_VER%%/bin/lldb-server
+%%LLDB%%llvm%%LLVM_LIB_VER%%/bin/lldb-test
+llvm%%LLVM_LIB_VER%%/bin/lli
+llvm%%LLVM_LIB_VER%%/bin/llvm-ar
+llvm%%LLVM_LIB_VER%%/bin/llvm-as
+llvm%%LLVM_LIB_VER%%/bin/llvm-bcanalyzer
+llvm%%LLVM_LIB_VER%%/bin/llvm-c-test
+llvm%%LLVM_LIB_VER%%/bin/llvm-cat
+llvm%%LLVM_LIB_VER%%/bin/llvm-cfi-verify
+llvm%%LLVM_LIB_VER%%/bin/llvm-config
+llvm%%LLVM_LIB_VER%%/bin/llvm-cov
+llvm%%LLVM_LIB_VER%%/bin/llvm-cvtres
+llvm%%LLVM_LIB_VER%%/bin/llvm-cxxdump
+llvm%%LLVM_LIB_VER%%/bin/llvm-cxxfilt
+llvm%%LLVM_LIB_VER%%/bin/llvm-diff
+llvm%%LLVM_LIB_VER%%/bin/llvm-dis
+llvm%%LLVM_LIB_VER%%/bin/llvm-dlltool
+llvm%%LLVM_LIB_VER%%/bin/llvm-dsymutil
+llvm%%LLVM_LIB_VER%%/bin/llvm-dwarfdump
+llvm%%LLVM_LIB_VER%%/bin/llvm-dwp
+llvm%%LLVM_LIB_VER%%/bin/llvm-extract
+llvm%%LLVM_LIB_VER%%/bin/llvm-lib
+llvm%%LLVM_LIB_VER%%/bin/llvm-link
+llvm%%LLVM_LIB_VER%%/bin/llvm-lto
+llvm%%LLVM_LIB_VER%%/bin/llvm-lto2
+llvm%%LLVM_LIB_VER%%/bin/llvm-mc
+llvm%%LLVM_LIB_VER%%/bin/llvm-mcmarkup
+llvm%%LLVM_LIB_VER%%/bin/llvm-modextract
+llvm%%LLVM_LIB_VER%%/bin/llvm-mt
+llvm%%LLVM_LIB_VER%%/bin/llvm-nm
+llvm%%LLVM_LIB_VER%%/bin/llvm-objcopy
+llvm%%LLVM_LIB_VER%%/bin/llvm-objdump
+llvm%%LLVM_LIB_VER%%/bin/llvm-opt-report
+llvm%%LLVM_LIB_VER%%/bin/llvm-pdbutil
+llvm%%LLVM_LIB_VER%%/bin/llvm-profdata
+llvm%%LLVM_LIB_VER%%/bin/llvm-ranlib
+llvm%%LLVM_LIB_VER%%/bin/llvm-rc
+llvm%%LLVM_LIB_VER%%/bin/llvm-readelf
+llvm%%LLVM_LIB_VER%%/bin/llvm-readobj
+llvm%%LLVM_LIB_VER%%/bin/llvm-rtdyld
+llvm%%LLVM_LIB_VER%%/bin/llvm-size
+llvm%%LLVM_LIB_VER%%/bin/llvm-split
+llvm%%LLVM_LIB_VER%%/bin/llvm-stress
+llvm%%LLVM_LIB_VER%%/bin/llvm-strings
+llvm%%LLVM_LIB_VER%%/bin/llvm-symbolizer
+llvm%%LLVM_LIB_VER%%/bin/llvm-tblgen
+llvm%%LLVM_LIB_VER%%/bin/llvm-xray
+%%EXTRAS%%llvm%%LLVM_LIB_VER%%/bin/modularize
+llvm%%LLVM_LIB_VER%%/bin/obj2yaml
+llvm%%LLVM_LIB_VER%%/bin/opt
+llvm%%LLVM_LIB_VER%%/bin/sancov
+llvm%%LLVM_LIB_VER%%/bin/sanstats
+%%CLANG%%llvm%%LLVM_LIB_VER%%/bin/scan-build
+%%CLANG%%llvm%%LLVM_LIB_VER%%/bin/scan-view
+llvm%%LLVM_LIB_VER%%/bin/verify-uselistorder
+%%LLD%%llvm%%LLVM_LIB_VER%%/bin/wasm-ld
+llvm%%LLVM_LIB_VER%%/bin/yaml2obj
+%%COMPILER_RT%%llvm%%LLVM_LIB_VER%%/cfi_blacklist.txt
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang-c/BuildSystem.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang-c/CXCompilationDatabase.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang-c/CXErrorCode.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang-c/CXString.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang-c/Documentation.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang-c/Index.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang-c/Platform.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/ARCMigrate/ARCMT.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/ARCMigrate/ARCMTActions.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/ARCMigrate/FileRemapper.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/AST/APValue.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/AST/AST.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/AST/ASTConsumer.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/AST/ASTContext.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/AST/ASTDiagnostic.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/AST/ASTFwd.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/AST/ASTImporter.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/AST/ASTLambda.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/AST/ASTMutationListener.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/AST/ASTStructuralEquivalence.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/AST/ASTTypeTraits.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/AST/ASTUnresolvedSet.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/AST/ASTVector.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/AST/Attr.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/AST/AttrDump.inc
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/AST/AttrImpl.inc
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/AST/AttrIterator.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/AST/AttrVisitor.inc
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/AST/Attrs.inc
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/AST/Availability.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/AST/BaseSubobject.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/AST/BuiltinTypes.def
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/AST/CXXInheritance.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/AST/CanonicalType.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/AST/CharUnits.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/AST/Comment.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/AST/CommentBriefParser.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/AST/CommentCommandInfo.inc
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/AST/CommentCommandList.inc
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/AST/CommentCommandTraits.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/AST/CommentDiagnostic.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/AST/CommentHTMLNamedCharacterReferences.inc
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/AST/CommentHTMLTags.inc
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/AST/CommentHTMLTagsProperties.inc
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/AST/CommentLexer.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/AST/CommentNodes.inc
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/AST/CommentParser.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/AST/CommentSema.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/AST/CommentVisitor.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/AST/DataCollection.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/AST/Decl.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/AST/DeclAccessPair.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/AST/DeclBase.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/AST/DeclCXX.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/AST/DeclContextInternals.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/AST/DeclFriend.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/AST/DeclGroup.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/AST/DeclLookups.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/AST/DeclNodes.inc
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/AST/DeclObjC.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/AST/DeclOpenMP.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/AST/DeclTemplate.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/AST/DeclVisitor.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/AST/DeclarationName.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/AST/DependentDiagnostic.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/AST/EvaluatedExprVisitor.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/AST/Expr.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/AST/ExprCXX.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/AST/ExprObjC.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/AST/ExprOpenMP.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/AST/ExternalASTMerger.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/AST/ExternalASTSource.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/AST/GlobalDecl.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/AST/LambdaCapture.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/AST/LexicallyOrderedRecursiveASTVisitor.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/AST/LocInfoType.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/AST/Mangle.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/AST/MangleNumberingContext.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/AST/NSAPI.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/AST/NestedNameSpecifier.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/AST/ODRHash.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/AST/OpenMPClause.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/AST/OperationKinds.def
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/AST/OperationKinds.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/AST/ParentMap.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/AST/PrettyPrinter.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/AST/QualTypeNames.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/AST/RawCommentList.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/AST/RecordLayout.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/AST/RecursiveASTVisitor.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/AST/Redeclarable.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/AST/SelectorLocationsKind.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/AST/Stmt.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/AST/StmtCXX.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/AST/StmtDataCollectors.inc
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/AST/StmtGraphTraits.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/AST/StmtIterator.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/AST/StmtNodes.inc
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/AST/StmtObjC.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/AST/StmtOpenMP.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/AST/StmtVisitor.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/AST/TemplateBase.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/AST/TemplateName.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/AST/Type.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/AST/TypeLoc.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/AST/TypeLocNodes.def
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/AST/TypeLocVisitor.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/AST/TypeNodes.def
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/AST/TypeOrdering.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/AST/TypeVisitor.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/AST/UnresolvedSet.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/AST/VTTBuilder.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/AST/VTableBuilder.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/ASTMatchers/ASTMatchFinder.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/ASTMatchers/ASTMatchers.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/ASTMatchers/ASTMatchersInternal.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/ASTMatchers/ASTMatchersMacros.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/ASTMatchers/Dynamic/Diagnostics.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/ASTMatchers/Dynamic/Parser.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/ASTMatchers/Dynamic/Registry.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/ASTMatchers/Dynamic/VariantValue.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Analysis/Analyses/CFGReachabilityAnalysis.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Analysis/Analyses/Consumed.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Analysis/Analyses/Dominators.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Analysis/Analyses/FormatString.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Analysis/Analyses/LiveVariables.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Analysis/Analyses/OSLog.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Analysis/Analyses/PostOrderCFGView.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Analysis/Analyses/PseudoConstantAnalysis.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Analysis/Analyses/ReachableCode.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Analysis/Analyses/ThreadSafety.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Analysis/Analyses/ThreadSafetyCommon.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Analysis/Analyses/ThreadSafetyLogical.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Analysis/Analyses/ThreadSafetyOps.def
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Analysis/Analyses/ThreadSafetyTIL.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Analysis/Analyses/ThreadSafetyTraverse.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Analysis/Analyses/ThreadSafetyUtil.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Analysis/Analyses/UninitializedValues.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Analysis/AnalysisDeclContext.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Analysis/AnalysisDiagnostic.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Analysis/BodyFarm.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Analysis/CFG.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Analysis/CFGStmtMap.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Analysis/CallGraph.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Analysis/CloneDetection.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Analysis/CodeInjector.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Analysis/DomainSpecific/CocoaConventions.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Analysis/DomainSpecific/ObjCNoReturn.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Analysis/FlowSensitive/DataflowValues.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Analysis/ProgramPoint.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Analysis/Support/BumpVector.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Basic/ABI.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Basic/AddressSpaces.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Basic/AlignedAllocation.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Basic/AllDiagnostics.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Basic/AttrHasAttributeImpl.inc
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Basic/AttrKinds.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Basic/AttrList.inc
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Basic/AttrSubMatchRulesList.inc
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Basic/AttrSubjectMatchRules.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Basic/Attributes.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Basic/Builtins.def
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Basic/Builtins.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Basic/BuiltinsAArch64.def
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Basic/BuiltinsAMDGPU.def
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Basic/BuiltinsARM.def
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Basic/BuiltinsHexagon.def
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Basic/BuiltinsLe64.def
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Basic/BuiltinsMips.def
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Basic/BuiltinsNEON.def
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Basic/BuiltinsNVPTX.def
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Basic/BuiltinsNios2.def
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Basic/BuiltinsPPC.def
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Basic/BuiltinsSystemZ.def
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Basic/BuiltinsWebAssembly.def
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Basic/BuiltinsX86.def
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Basic/BuiltinsX86_64.def
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Basic/BuiltinsXCore.def
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Basic/CapturedStmt.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Basic/CharInfo.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Basic/CommentOptions.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Basic/Cuda.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Basic/DebugInfoOptions.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Basic/Diagnostic.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Basic/DiagnosticASTKinds.inc
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Basic/DiagnosticAnalysisKinds.inc
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Basic/DiagnosticCategories.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Basic/DiagnosticCommentKinds.inc
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Basic/DiagnosticCommonKinds.inc
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Basic/DiagnosticCrossTUKinds.inc
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Basic/DiagnosticDriverKinds.inc
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Basic/DiagnosticError.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Basic/DiagnosticFrontendKinds.inc
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Basic/DiagnosticGroups.inc
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Basic/DiagnosticIDs.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Basic/DiagnosticIndexName.inc
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Basic/DiagnosticLexKinds.inc
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Basic/DiagnosticOptions.def
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Basic/DiagnosticOptions.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Basic/DiagnosticParseKinds.inc
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Basic/DiagnosticRefactoringKinds.inc
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Basic/DiagnosticSemaKinds.inc
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Basic/DiagnosticSerializationKinds.inc
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Basic/ExceptionSpecificationType.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Basic/ExpressionTraits.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Basic/FileManager.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Basic/FileSystemOptions.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Basic/FileSystemStatCache.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Basic/IdentifierTable.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Basic/LLVM.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Basic/Lambda.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Basic/LangOptions.def
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Basic/LangOptions.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Basic/Linkage.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Basic/MacroBuilder.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Basic/MemoryBufferCache.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Basic/Module.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Basic/ObjCRuntime.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Basic/OpenCLExtensions.def
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Basic/OpenCLImageTypes.def
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Basic/OpenCLOptions.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Basic/OpenMPKinds.def
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Basic/OpenMPKinds.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Basic/OperatorKinds.def
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Basic/OperatorKinds.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Basic/OperatorPrecedence.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Basic/PartialDiagnostic.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Basic/PlistSupport.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Basic/PragmaKinds.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Basic/PrettyStackTrace.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Basic/SanitizerBlacklist.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Basic/SanitizerSpecialCaseList.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Basic/Sanitizers.def
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Basic/Sanitizers.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Basic/SourceLocation.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Basic/SourceManager.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Basic/SourceManagerInternals.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Basic/Specifiers.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Basic/SyncScope.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Basic/TargetBuiltins.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Basic/TargetCXXABI.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Basic/TargetInfo.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Basic/TargetOptions.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Basic/TemplateKinds.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Basic/TokenKinds.def
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Basic/TokenKinds.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Basic/TypeTraits.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Basic/Version.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Basic/Version.inc
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Basic/VersionTuple.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Basic/VirtualFileSystem.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Basic/Visibility.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Basic/X86Target.def
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Basic/XRayLists.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Basic/arm_neon.inc
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/CodeGen/BackendUtil.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/CodeGen/CGFunctionInfo.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/CodeGen/CodeGenABITypes.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/CodeGen/CodeGenAction.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/CodeGen/ConstantInitBuilder.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/CodeGen/ConstantInitFuture.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/CodeGen/ModuleBuilder.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/CodeGen/ObjectFilePCHContainerOperations.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/CodeGen/SwiftCallingConv.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Config/config.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/CrossTU/CrossTUDiagnostic.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/CrossTU/CrossTranslationUnit.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Driver/Action.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Driver/Compilation.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Driver/Distro.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Driver/Driver.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Driver/DriverDiagnostic.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Driver/Job.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Driver/Multilib.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Driver/Options.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Driver/Options.inc
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Driver/Phases.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Driver/SanitizerArgs.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Driver/Tool.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Driver/ToolChain.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Driver/Types.def
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Driver/Types.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Driver/Util.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Driver/XRayArgs.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Edit/Commit.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Edit/EditedSource.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Edit/EditsReceiver.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Edit/FileOffset.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Edit/Rewriters.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Format/Format.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Frontend/ASTConsumers.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Frontend/ASTUnit.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Frontend/ChainedDiagnosticConsumer.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Frontend/CodeGenOptions.def
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Frontend/CodeGenOptions.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Frontend/CommandLineSourceLoc.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Frontend/CompilerInstance.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Frontend/CompilerInvocation.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Frontend/DependencyOutputOptions.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Frontend/DiagnosticRenderer.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Frontend/FrontendAction.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Frontend/FrontendActions.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Frontend/FrontendDiagnostic.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Frontend/FrontendOptions.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Frontend/FrontendPluginRegistry.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Frontend/LangStandard.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Frontend/LangStandards.def
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Frontend/LayoutOverrideSource.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Frontend/LogDiagnosticPrinter.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Frontend/MigratorOptions.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Frontend/MultiplexConsumer.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Frontend/PCHContainerOperations.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Frontend/PrecompiledPreamble.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Frontend/PreprocessorOutputOptions.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Frontend/SerializedDiagnosticPrinter.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Frontend/SerializedDiagnosticReader.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Frontend/SerializedDiagnostics.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Frontend/TextDiagnostic.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Frontend/TextDiagnosticBuffer.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Frontend/TextDiagnosticPrinter.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Frontend/Utils.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Frontend/VerifyDiagnosticConsumer.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/FrontendTool/Utils.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Index/CodegenNameGenerator.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Index/CommentToXML.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Index/IndexDataConsumer.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Index/IndexSymbol.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Index/IndexingAction.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Index/USRGeneration.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Lex/CodeCompletionHandler.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Lex/DirectoryLookup.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Lex/ExternalPreprocessorSource.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Lex/HeaderMap.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Lex/HeaderMapTypes.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Lex/HeaderSearch.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Lex/HeaderSearchOptions.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Lex/LexDiagnostic.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Lex/Lexer.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Lex/LiteralSupport.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Lex/MacroArgs.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Lex/MacroInfo.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Lex/ModuleLoader.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Lex/ModuleMap.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Lex/MultipleIncludeOpt.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Lex/PPCallbacks.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Lex/PPConditionalDirectiveRecord.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Lex/PTHLexer.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Lex/PTHManager.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Lex/Pragma.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Lex/PreprocessingRecord.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Lex/Preprocessor.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Lex/PreprocessorLexer.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Lex/PreprocessorOptions.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Lex/ScratchBuffer.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Lex/Token.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Lex/TokenConcatenation.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Lex/TokenLexer.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Lex/VariadicMacroSupport.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Parse/AttrParserStringSwitches.inc
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Parse/AttrSubMatchRulesParserStringSwitches.inc
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Parse/ParseAST.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Parse/ParseDiagnostic.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Parse/Parser.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Parse/RAIIObjectsForParser.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Rewrite/Core/DeltaTree.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Rewrite/Core/HTMLRewrite.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Rewrite/Core/RewriteBuffer.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Rewrite/Core/RewriteRope.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Rewrite/Core/Rewriter.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Rewrite/Core/TokenRewriter.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Rewrite/Frontend/ASTConsumers.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Rewrite/Frontend/FixItRewriter.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Rewrite/Frontend/FrontendActions.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Rewrite/Frontend/Rewriters.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Sema/AnalysisBasedWarnings.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Sema/AttrParsedAttrImpl.inc
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Sema/AttrParsedAttrKinds.inc
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Sema/AttrParsedAttrList.inc
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Sema/AttrSpellingListIndex.inc
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Sema/AttrTemplateInstantiate.inc
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Sema/AttributeList.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Sema/CXXFieldCollector.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Sema/CleanupInfo.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Sema/CodeCompleteConsumer.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Sema/CodeCompleteOptions.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Sema/DeclSpec.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Sema/DelayedDiagnostic.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Sema/Designator.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Sema/ExternalSemaSource.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Sema/IdentifierResolver.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Sema/Initialization.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Sema/Lookup.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Sema/LoopHint.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Sema/MultiplexExternalSemaSource.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Sema/ObjCMethodList.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Sema/Overload.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Sema/Ownership.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Sema/ParsedTemplate.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Sema/PrettyDeclStackTrace.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Sema/Scope.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Sema/ScopeInfo.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Sema/Sema.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Sema/SemaConsumer.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Sema/SemaDiagnostic.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Sema/SemaFixItUtils.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Sema/SemaInternal.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Sema/SemaLambda.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Sema/Template.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Sema/TemplateDeduction.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Sema/TypoCorrection.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Sema/Weak.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Serialization/ASTBitCodes.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Serialization/ASTDeserializationListener.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Serialization/ASTReader.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Serialization/ASTWriter.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Serialization/AttrPCHRead.inc
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Serialization/AttrPCHWrite.inc
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Serialization/ContinuousRangeMap.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Serialization/GlobalModuleIndex.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Serialization/Module.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Serialization/ModuleFileExtension.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Serialization/ModuleManager.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Serialization/SerializationDiagnostic.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/StaticAnalyzer/Checkers/Checkers.inc
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/StaticAnalyzer/Checkers/ClangCheckers.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/StaticAnalyzer/Checkers/LocalCheckers.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/StaticAnalyzer/Checkers/MPIFunctionClassifier.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/StaticAnalyzer/Checkers/ObjCRetainCount.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/StaticAnalyzer/Checkers/SValExplainer.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/StaticAnalyzer/Core/Analyses.def
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/StaticAnalyzer/Core/AnalyzerOptions.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/StaticAnalyzer/Core/BugReporter/BugReporter.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/StaticAnalyzer/Core/BugReporter/BugReporterVisitors.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/StaticAnalyzer/Core/BugReporter/BugType.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/StaticAnalyzer/Core/BugReporter/CommonBugCategories.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/StaticAnalyzer/Core/BugReporter/PathDiagnostic.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/StaticAnalyzer/Core/Checker.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/StaticAnalyzer/Core/CheckerManager.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/StaticAnalyzer/Core/CheckerOptInfo.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/StaticAnalyzer/Core/CheckerRegistry.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/StaticAnalyzer/Core/IssueHash.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/StaticAnalyzer/Core/PathDiagnosticConsumers.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/StaticAnalyzer/Core/PathSensitive/APSIntType.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/StaticAnalyzer/Core/PathSensitive/AnalysisManager.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/StaticAnalyzer/Core/PathSensitive/BasicValueFactory.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/StaticAnalyzer/Core/PathSensitive/BlockCounter.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/StaticAnalyzer/Core/PathSensitive/CallEvent.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/StaticAnalyzer/Core/PathSensitive/CheckerContext.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/StaticAnalyzer/Core/PathSensitive/CheckerHelpers.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/StaticAnalyzer/Core/PathSensitive/ConstraintManager.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/StaticAnalyzer/Core/PathSensitive/CoreEngine.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/StaticAnalyzer/Core/PathSensitive/DynamicTypeInfo.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/StaticAnalyzer/Core/PathSensitive/DynamicTypeMap.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/StaticAnalyzer/Core/PathSensitive/Environment.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/StaticAnalyzer/Core/PathSensitive/ExplodedGraph.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/StaticAnalyzer/Core/PathSensitive/ExprEngine.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/StaticAnalyzer/Core/PathSensitive/FunctionSummary.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/StaticAnalyzer/Core/PathSensitive/LoopUnrolling.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/StaticAnalyzer/Core/PathSensitive/LoopWidening.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/StaticAnalyzer/Core/PathSensitive/MemRegion.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/StaticAnalyzer/Core/PathSensitive/ProgramState.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/StaticAnalyzer/Core/PathSensitive/ProgramStateTrait.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/StaticAnalyzer/Core/PathSensitive/ProgramState_Fwd.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/StaticAnalyzer/Core/PathSensitive/Regions.def
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/StaticAnalyzer/Core/PathSensitive/SValBuilder.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/StaticAnalyzer/Core/PathSensitive/SValVisitor.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/StaticAnalyzer/Core/PathSensitive/SVals.def
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/StaticAnalyzer/Core/PathSensitive/SVals.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/StaticAnalyzer/Core/PathSensitive/SimpleConstraintManager.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/StaticAnalyzer/Core/PathSensitive/Store.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/StaticAnalyzer/Core/PathSensitive/StoreRef.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/StaticAnalyzer/Core/PathSensitive/SubEngine.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/StaticAnalyzer/Core/PathSensitive/SummaryManager.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/StaticAnalyzer/Core/PathSensitive/SymExpr.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/StaticAnalyzer/Core/PathSensitive/SymbolManager.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/StaticAnalyzer/Core/PathSensitive/Symbols.def
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/StaticAnalyzer/Core/PathSensitive/TaintManager.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/StaticAnalyzer/Core/PathSensitive/TaintTag.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/StaticAnalyzer/Core/PathSensitive/WorkList.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/StaticAnalyzer/Frontend/AnalysisConsumer.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/StaticAnalyzer/Frontend/CheckerRegistration.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/StaticAnalyzer/Frontend/FrontendActions.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/StaticAnalyzer/Frontend/ModelConsumer.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Tooling/ASTDiff/ASTDiff.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Tooling/ASTDiff/ASTDiffInternal.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Tooling/ArgumentsAdjusters.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Tooling/CommonOptionsParser.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Tooling/CompilationDatabase.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Tooling/CompilationDatabasePluginRegistry.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Tooling/Core/Diagnostic.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Tooling/Core/Lookup.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Tooling/Core/Replacement.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Tooling/DiagnosticsYaml.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Tooling/Execution.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Tooling/FileMatchTrie.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Tooling/FixIt.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Tooling/JSONCompilationDatabase.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Tooling/Refactoring.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Tooling/Refactoring/ASTSelection.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Tooling/Refactoring/AtomicChange.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Tooling/Refactoring/Extract/Extract.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Tooling/Refactoring/RecursiveSymbolVisitor.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Tooling/Refactoring/RefactoringAction.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Tooling/Refactoring/RefactoringActionRule.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Tooling/Refactoring/RefactoringActionRuleRequirements.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Tooling/Refactoring/RefactoringActionRules.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Tooling/Refactoring/RefactoringActionRulesInternal.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Tooling/Refactoring/RefactoringDiagnostic.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Tooling/Refactoring/RefactoringOption.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Tooling/Refactoring/RefactoringOptionVisitor.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Tooling/Refactoring/RefactoringOptions.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Tooling/Refactoring/RefactoringResultConsumer.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Tooling/Refactoring/RefactoringRuleContext.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Tooling/Refactoring/Rename/RenamingAction.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Tooling/Refactoring/Rename/SymbolName.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Tooling/Refactoring/Rename/SymbolOccurrences.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Tooling/Refactoring/Rename/USRFinder.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Tooling/Refactoring/Rename/USRFindingAction.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Tooling/Refactoring/Rename/USRLocFinder.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Tooling/RefactoringCallbacks.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Tooling/ReplacementsYaml.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Tooling/StandaloneExecution.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Tooling/ToolExecutorPluginRegistry.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/include/clang/Tooling/Tooling.h
+%%LLD%%llvm%%LLVM_LIB_VER%%/include/lld/Common/Args.h
+%%LLD%%llvm%%LLVM_LIB_VER%%/include/lld/Common/Driver.h
+%%LLD%%llvm%%LLVM_LIB_VER%%/include/lld/Common/ErrorHandler.h
+%%LLD%%llvm%%LLVM_LIB_VER%%/include/lld/Common/LLVM.h
+%%LLD%%llvm%%LLVM_LIB_VER%%/include/lld/Common/Memory.h
+%%LLD%%llvm%%LLVM_LIB_VER%%/include/lld/Common/Reproduce.h
+%%LLD%%llvm%%LLVM_LIB_VER%%/include/lld/Common/Strings.h
+%%LLD%%llvm%%LLVM_LIB_VER%%/include/lld/Common/TargetOptionsCommandFlags.h
+%%LLD%%llvm%%LLVM_LIB_VER%%/include/lld/Common/Threads.h
+%%LLD%%llvm%%LLVM_LIB_VER%%/include/lld/Common/Version.h
+%%LLD%%llvm%%LLVM_LIB_VER%%/include/lld/Core/AbsoluteAtom.h
+%%LLD%%llvm%%LLVM_LIB_VER%%/include/lld/Core/ArchiveLibraryFile.h
+%%LLD%%llvm%%LLVM_LIB_VER%%/include/lld/Core/Atom.h
+%%LLD%%llvm%%LLVM_LIB_VER%%/include/lld/Core/DefinedAtom.h
+%%LLD%%llvm%%LLVM_LIB_VER%%/include/lld/Core/Error.h
+%%LLD%%llvm%%LLVM_LIB_VER%%/include/lld/Core/File.h
+%%LLD%%llvm%%LLVM_LIB_VER%%/include/lld/Core/Instrumentation.h
+%%LLD%%llvm%%LLVM_LIB_VER%%/include/lld/Core/LinkingContext.h
+%%LLD%%llvm%%LLVM_LIB_VER%%/include/lld/Core/Node.h
+%%LLD%%llvm%%LLVM_LIB_VER%%/include/lld/Core/Pass.h
+%%LLD%%llvm%%LLVM_LIB_VER%%/include/lld/Core/PassManager.h
+%%LLD%%llvm%%LLVM_LIB_VER%%/include/lld/Core/Reader.h
+%%LLD%%llvm%%LLVM_LIB_VER%%/include/lld/Core/Reference.h
+%%LLD%%llvm%%LLVM_LIB_VER%%/include/lld/Core/Resolver.h
+%%LLD%%llvm%%LLVM_LIB_VER%%/include/lld/Core/SharedLibraryAtom.h
+%%LLD%%llvm%%LLVM_LIB_VER%%/include/lld/Core/SharedLibraryFile.h
+%%LLD%%llvm%%LLVM_LIB_VER%%/include/lld/Core/Simple.h
+%%LLD%%llvm%%LLVM_LIB_VER%%/include/lld/Core/SymbolTable.h
+%%LLD%%llvm%%LLVM_LIB_VER%%/include/lld/Core/UndefinedAtom.h
+%%LLD%%llvm%%LLVM_LIB_VER%%/include/lld/Core/Writer.h
+%%LLD%%llvm%%LLVM_LIB_VER%%/include/lld/ReaderWriter/MachOLinkingContext.h
+%%LLD%%llvm%%LLVM_LIB_VER%%/include/lld/ReaderWriter/YamlContext.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/API/LLDB.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/API/SBAddress.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/API/SBAttachInfo.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/API/SBBlock.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/API/SBBreakpoint.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/API/SBBreakpointLocation.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/API/SBBreakpointName.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/API/SBBroadcaster.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/API/SBCommandInterpreter.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/API/SBCommandReturnObject.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/API/SBCommunication.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/API/SBCompileUnit.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/API/SBData.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/API/SBDebugger.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/API/SBDeclaration.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/API/SBDefines.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/API/SBError.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/API/SBEvent.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/API/SBExecutionContext.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/API/SBExpressionOptions.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/API/SBFileSpec.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/API/SBFileSpecList.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/API/SBFrame.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/API/SBFunction.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/API/SBHostOS.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/API/SBInstruction.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/API/SBInstructionList.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/API/SBLanguageRuntime.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/API/SBLaunchInfo.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/API/SBLineEntry.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/API/SBListener.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/API/SBMemoryRegionInfo.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/API/SBMemoryRegionInfoList.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/API/SBModule.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/API/SBModuleSpec.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/API/SBPlatform.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/API/SBProcess.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/API/SBProcessInfo.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/API/SBQueue.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/API/SBQueueItem.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/API/SBSection.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/API/SBSourceManager.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/API/SBStream.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/API/SBStringList.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/API/SBStructuredData.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/API/SBSymbol.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/API/SBSymbolContext.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/API/SBSymbolContextList.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/API/SBTarget.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/API/SBThread.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/API/SBThreadCollection.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/API/SBThreadPlan.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/API/SBTrace.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/API/SBTraceOptions.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/API/SBType.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/API/SBTypeCategory.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/API/SBTypeEnumMember.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/API/SBTypeFilter.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/API/SBTypeFormat.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/API/SBTypeNameSpecifier.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/API/SBTypeSummary.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/API/SBTypeSynthetic.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/API/SBUnixSignals.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/API/SBValue.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/API/SBValueList.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/API/SBVariablesOptions.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/API/SBWatchpoint.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/API/SystemInitializerFull.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Breakpoint/Breakpoint.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Breakpoint/BreakpointID.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Breakpoint/BreakpointIDList.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Breakpoint/BreakpointList.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Breakpoint/BreakpointLocation.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Breakpoint/BreakpointLocationCollection.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Breakpoint/BreakpointLocationList.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Breakpoint/BreakpointName.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Breakpoint/BreakpointOptions.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Breakpoint/BreakpointResolver.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Breakpoint/BreakpointResolverAddress.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Breakpoint/BreakpointResolverFileLine.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Breakpoint/BreakpointResolverFileRegex.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Breakpoint/BreakpointResolverName.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Breakpoint/BreakpointSite.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Breakpoint/BreakpointSiteList.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Breakpoint/Stoppoint.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Breakpoint/StoppointCallbackContext.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Breakpoint/StoppointLocation.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Breakpoint/Watchpoint.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Breakpoint/WatchpointList.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Breakpoint/WatchpointOptions.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Core/Address.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Core/AddressRange.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Core/AddressResolver.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Core/AddressResolverFileLine.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Core/AddressResolverName.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Core/Architecture.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Core/Broadcaster.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Core/ClangForward.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Core/Communication.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Core/Debugger.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Core/Disassembler.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Core/DumpDataExtractor.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Core/EmulateInstruction.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Core/Event.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Core/FileLineResolver.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Core/FileSpecList.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Core/FormatEntity.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Core/IOHandler.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Core/IOStreamMacros.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Core/Listener.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Core/LoadedModuleInfoList.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Core/Mangled.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Core/MappedHash.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Core/Module.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Core/ModuleChild.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Core/ModuleList.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Core/ModuleSpec.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Core/Opcode.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Core/PluginInterface.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Core/PluginManager.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Core/RangeMap.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Core/RegisterValue.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Core/STLUtils.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Core/Scalar.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Core/SearchFilter.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Core/Section.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Core/SourceManager.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Core/State.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Core/StreamAsynchronousIO.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Core/StreamBuffer.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Core/StreamFile.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Core/StructuredDataImpl.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Core/ThreadSafeDenseMap.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Core/ThreadSafeDenseSet.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Core/ThreadSafeSTLMap.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Core/ThreadSafeSTLVector.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Core/ThreadSafeValue.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Core/UniqueCStringMap.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Core/UserSettingsController.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Core/Value.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Core/ValueObject.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Core/ValueObjectCast.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Core/ValueObjectChild.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Core/ValueObjectConstResult.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Core/ValueObjectConstResultCast.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Core/ValueObjectConstResultChild.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Core/ValueObjectConstResultImpl.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Core/ValueObjectDynamicValue.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Core/ValueObjectList.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Core/ValueObjectMemory.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Core/ValueObjectRegister.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Core/ValueObjectSyntheticFilter.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Core/ValueObjectVariable.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Core/dwarf.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/DataFormatters/CXXFunctionPointer.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/DataFormatters/DataVisualization.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/DataFormatters/DumpValueObjectOptions.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/DataFormatters/FormatCache.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/DataFormatters/FormatClasses.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/DataFormatters/FormatManager.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/DataFormatters/FormattersContainer.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/DataFormatters/FormattersHelpers.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/DataFormatters/LanguageCategory.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/DataFormatters/StringPrinter.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/DataFormatters/TypeCategory.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/DataFormatters/TypeCategoryMap.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/DataFormatters/TypeFormat.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/DataFormatters/TypeSummary.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/DataFormatters/TypeSynthetic.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/DataFormatters/TypeValidator.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/DataFormatters/ValueObjectPrinter.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/DataFormatters/VectorIterator.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/DataFormatters/VectorType.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Expression/DWARFExpression.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Expression/DiagnosticManager.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Expression/Expression.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Expression/ExpressionParser.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Expression/ExpressionSourceCode.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Expression/ExpressionTypeSystemHelper.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Expression/ExpressionVariable.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Expression/FunctionCaller.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Expression/IRDynamicChecks.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Expression/IRExecutionUnit.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Expression/IRInterpreter.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Expression/IRMemoryMap.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Expression/LLVMUserExpression.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Expression/Materializer.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Expression/REPL.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Expression/UserExpression.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Expression/UtilityFunction.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Host/Config.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Host/ConnectionFileDescriptor.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Host/Debug.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Host/Editline.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Host/File.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Host/FileCache.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Host/FileSystem.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Host/Host.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Host/HostGetOpt.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Host/HostInfo.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Host/HostInfoBase.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Host/HostNativeProcess.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Host/HostNativeProcessBase.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Host/HostNativeThread.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Host/HostNativeThreadBase.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Host/HostNativeThreadForward.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Host/HostProcess.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Host/HostThread.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Host/LockFile.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Host/LockFileBase.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Host/MainLoop.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Host/MainLoopBase.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Host/MonitoringProcessLauncher.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Host/OptionParser.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Host/Pipe.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Host/PipeBase.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Host/PosixApi.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Host/Predicate.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Host/ProcessLauncher.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Host/ProcessRunLock.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Host/PseudoTerminal.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Host/Socket.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Host/SocketAddress.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Host/StringConvert.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Host/Symbols.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Host/TaskPool.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Host/Terminal.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Host/ThreadLauncher.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Host/Time.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Host/XML.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Host/android/HostInfoAndroid.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Host/common/GetOptInc.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Host/common/NativeBreakpoint.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Host/common/NativeBreakpointList.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Host/common/NativeProcessProtocol.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Host/common/NativeRegisterContext.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Host/common/NativeThreadProtocol.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Host/common/NativeWatchpointList.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Host/common/SoftwareBreakpoint.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Host/common/TCPSocket.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Host/common/UDPSocket.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Host/freebsd/HostInfoFreeBSD.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Host/linux/AbstractSocket.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Host/linux/HostInfoLinux.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Host/linux/Ptrace.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Host/linux/Support.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Host/linux/Uio.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Host/macosx/HostInfoMacOSX.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Host/macosx/HostThreadMacOSX.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Host/netbsd/HostInfoNetBSD.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Host/openbsd/HostInfoOpenBSD.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Host/posix/ConnectionFileDescriptorPosix.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Host/posix/DomainSocket.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Host/posix/Fcntl.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Host/posix/HostInfoPosix.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Host/posix/HostProcessPosix.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Host/posix/HostThreadPosix.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Host/posix/LockFilePosix.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Host/posix/PipePosix.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Host/posix/ProcessLauncherPosixFork.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Host/windows/AutoHandle.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Host/windows/ConnectionGenericFileWindows.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Host/windows/HostInfoWindows.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Host/windows/HostProcessWindows.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Host/windows/HostThreadWindows.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Host/windows/LockFileWindows.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Host/windows/PipeWindows.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Host/windows/PosixApi.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Host/windows/ProcessLauncherWindows.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Host/windows/editlinewin.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Host/windows/windows.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Initialization/SystemInitializer.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Initialization/SystemInitializerCommon.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Initialization/SystemLifetimeManager.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Interpreter/Args.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Interpreter/CommandAlias.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Interpreter/CommandCompletions.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Interpreter/CommandHistory.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Interpreter/CommandInterpreter.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Interpreter/CommandObject.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Interpreter/CommandObjectMultiword.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Interpreter/CommandObjectRegexCommand.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Interpreter/CommandOptionValidators.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Interpreter/CommandReturnObject.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Interpreter/OptionGroupArchitecture.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Interpreter/OptionGroupBoolean.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Interpreter/OptionGroupFile.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Interpreter/OptionGroupFormat.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Interpreter/OptionGroupOutputFile.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Interpreter/OptionGroupPlatform.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Interpreter/OptionGroupString.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Interpreter/OptionGroupUInt64.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Interpreter/OptionGroupUUID.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Interpreter/OptionGroupValueObjectDisplay.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Interpreter/OptionGroupVariable.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Interpreter/OptionGroupWatchpoint.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Interpreter/OptionValue.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Interpreter/OptionValueArch.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Interpreter/OptionValueArgs.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Interpreter/OptionValueArray.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Interpreter/OptionValueBoolean.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Interpreter/OptionValueChar.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Interpreter/OptionValueDictionary.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Interpreter/OptionValueEnumeration.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Interpreter/OptionValueFileSpec.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Interpreter/OptionValueFileSpecList.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Interpreter/OptionValueFormat.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Interpreter/OptionValueFormatEntity.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Interpreter/OptionValueLanguage.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Interpreter/OptionValuePathMappings.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Interpreter/OptionValueProperties.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Interpreter/OptionValueRegex.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Interpreter/OptionValueSInt64.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Interpreter/OptionValueString.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Interpreter/OptionValueUInt64.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Interpreter/OptionValueUUID.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Interpreter/OptionValues.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Interpreter/Options.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Interpreter/Property.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Interpreter/ScriptInterpreter.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Symbol/ArmUnwindInfo.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Symbol/Block.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Symbol/ClangASTContext.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Symbol/ClangASTImporter.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Symbol/ClangExternalASTSourceCallbacks.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Symbol/ClangExternalASTSourceCommon.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Symbol/ClangUtil.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Symbol/CompactUnwindInfo.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Symbol/CompileUnit.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Symbol/CompilerDecl.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Symbol/CompilerDeclContext.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Symbol/CompilerType.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Symbol/DWARFCallFrameInfo.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Symbol/DebugMacros.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Symbol/DeclVendor.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Symbol/Declaration.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Symbol/FuncUnwinders.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Symbol/Function.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Symbol/GoASTContext.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Symbol/JavaASTContext.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Symbol/LineEntry.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Symbol/LineTable.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Symbol/OCamlASTContext.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Symbol/ObjectContainer.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Symbol/ObjectFile.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Symbol/Symbol.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Symbol/SymbolContext.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Symbol/SymbolContextScope.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Symbol/SymbolFile.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Symbol/SymbolVendor.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Symbol/Symtab.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Symbol/TaggedASTType.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Symbol/Type.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Symbol/TypeList.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Symbol/TypeMap.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Symbol/TypeSystem.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Symbol/UnwindPlan.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Symbol/UnwindTable.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Symbol/Variable.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Symbol/VariableList.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Symbol/VerifyDecl.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Target/ABI.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Target/CPPLanguageRuntime.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Target/DynamicLoader.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Target/ExecutionContext.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Target/ExecutionContextScope.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Target/FileAction.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Target/InstrumentationRuntime.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Target/InstrumentationRuntimeStopInfo.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Target/JITLoader.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Target/JITLoaderList.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Target/Language.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Target/LanguageRuntime.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Target/Memory.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Target/MemoryHistory.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Target/MemoryRegionInfo.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Target/ModuleCache.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Target/ObjCLanguageRuntime.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Target/OperatingSystem.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Target/PathMappingList.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Target/Platform.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Target/Process.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Target/ProcessInfo.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Target/ProcessLaunchInfo.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Target/ProcessStructReader.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Target/Queue.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Target/QueueItem.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Target/QueueList.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Target/RegisterCheckpoint.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Target/RegisterContext.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Target/RegisterNumber.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Target/SectionLoadHistory.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Target/SectionLoadList.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Target/StackFrame.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Target/StackFrameList.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Target/StackID.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Target/StopInfo.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Target/StructuredDataPlugin.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Target/SystemRuntime.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Target/Target.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Target/TargetList.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Target/Thread.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Target/ThreadCollection.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Target/ThreadList.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Target/ThreadPlan.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Target/ThreadPlanBase.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Target/ThreadPlanCallFunction.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Target/ThreadPlanCallFunctionUsingABI.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Target/ThreadPlanCallOnFunctionExit.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Target/ThreadPlanCallUserExpression.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Target/ThreadPlanPython.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Target/ThreadPlanRunToAddress.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Target/ThreadPlanShouldStopHere.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Target/ThreadPlanStepInRange.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Target/ThreadPlanStepInstruction.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Target/ThreadPlanStepOut.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Target/ThreadPlanStepOverBreakpoint.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Target/ThreadPlanStepOverRange.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Target/ThreadPlanStepRange.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Target/ThreadPlanStepThrough.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Target/ThreadPlanStepUntil.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Target/ThreadPlanTracer.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Target/ThreadSpec.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Target/UnixSignals.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Target/Unwind.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Target/UnwindAssembly.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Utility/AnsiTerminal.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Utility/ArchSpec.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Utility/Baton.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Utility/CleanUp.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Utility/Connection.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Utility/ConstString.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Utility/DataBuffer.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Utility/DataBufferHeap.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Utility/DataBufferLLVM.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Utility/DataEncoder.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Utility/DataExtractor.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Utility/Either.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Utility/Endian.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Utility/FastDemangle.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Utility/FileSpec.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Utility/Flags.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Utility/History.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Utility/IOObject.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Utility/Iterable.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Utility/JSON.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Utility/LLDBAssert.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Utility/Log.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Utility/Logging.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Utility/NameMatches.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Utility/Range.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Utility/RegularExpression.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Utility/SafeMachO.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Utility/SelectHelper.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Utility/SharedCluster.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Utility/SharingPtr.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Utility/Status.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Utility/Stream.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Utility/StreamCallback.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Utility/StreamGDBRemote.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Utility/StreamString.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Utility/StreamTee.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Utility/StringExtractor.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Utility/StringLexer.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Utility/StringList.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Utility/StructuredData.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Utility/TildeExpressionResolver.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Utility/Timeout.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Utility/Timer.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Utility/TraceOptions.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Utility/UUID.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Utility/UriParser.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Utility/UserID.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Utility/VASPrintf.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/Utility/VMRange.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/lldb-defines.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/lldb-enumerations.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/lldb-forward.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/lldb-private-defines.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/lldb-private-enumerations.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/lldb-private-forward.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/lldb-private-interfaces.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/lldb-private-types.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/lldb-private.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/lldb-public.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/lldb-types.h
+%%LLDB%%llvm%%LLVM_LIB_VER%%/include/lldb/lldb-versioning.h
+llvm%%LLVM_LIB_VER%%/include/llvm-c/Analysis.h
+llvm%%LLVM_LIB_VER%%/include/llvm-c/BitReader.h
+llvm%%LLVM_LIB_VER%%/include/llvm-c/BitWriter.h
+llvm%%LLVM_LIB_VER%%/include/llvm-c/Core.h
+llvm%%LLVM_LIB_VER%%/include/llvm-c/DebugInfo.h
+llvm%%LLVM_LIB_VER%%/include/llvm-c/Disassembler.h
+llvm%%LLVM_LIB_VER%%/include/llvm-c/ErrorHandling.h
+llvm%%LLVM_LIB_VER%%/include/llvm-c/ExecutionEngine.h
+llvm%%LLVM_LIB_VER%%/include/llvm-c/IRReader.h
+llvm%%LLVM_LIB_VER%%/include/llvm-c/Initialization.h
+llvm%%LLVM_LIB_VER%%/include/llvm-c/LinkTimeOptimizer.h
+llvm%%LLVM_LIB_VER%%/include/llvm-c/Linker.h
+llvm%%LLVM_LIB_VER%%/include/llvm-c/Object.h
+llvm%%LLVM_LIB_VER%%/include/llvm-c/OrcBindings.h
+llvm%%LLVM_LIB_VER%%/include/llvm-c/Support.h
+llvm%%LLVM_LIB_VER%%/include/llvm-c/Target.h
+llvm%%LLVM_LIB_VER%%/include/llvm-c/TargetMachine.h
+llvm%%LLVM_LIB_VER%%/include/llvm-c/Transforms/IPO.h
+llvm%%LLVM_LIB_VER%%/include/llvm-c/Transforms/PassManagerBuilder.h
+llvm%%LLVM_LIB_VER%%/include/llvm-c/Transforms/Scalar.h
+llvm%%LLVM_LIB_VER%%/include/llvm-c/Transforms/Vectorize.h
+llvm%%LLVM_LIB_VER%%/include/llvm-c/Types.h
+llvm%%LLVM_LIB_VER%%/include/llvm-c/lto.h
+llvm%%LLVM_LIB_VER%%/include/llvm/ADT/APFloat.h
+llvm%%LLVM_LIB_VER%%/include/llvm/ADT/APInt.h
+llvm%%LLVM_LIB_VER%%/include/llvm/ADT/APSInt.h
+llvm%%LLVM_LIB_VER%%/include/llvm/ADT/AllocatorList.h
+llvm%%LLVM_LIB_VER%%/include/llvm/ADT/ArrayRef.h
+llvm%%LLVM_LIB_VER%%/include/llvm/ADT/BitVector.h
+llvm%%LLVM_LIB_VER%%/include/llvm/ADT/BitmaskEnum.h
+llvm%%LLVM_LIB_VER%%/include/llvm/ADT/BreadthFirstIterator.h
+llvm%%LLVM_LIB_VER%%/include/llvm/ADT/CachedHashString.h
+llvm%%LLVM_LIB_VER%%/include/llvm/ADT/DAGDeltaAlgorithm.h
+llvm%%LLVM_LIB_VER%%/include/llvm/ADT/DeltaAlgorithm.h
+llvm%%LLVM_LIB_VER%%/include/llvm/ADT/DenseMap.h
+llvm%%LLVM_LIB_VER%%/include/llvm/ADT/DenseMapInfo.h
+llvm%%LLVM_LIB_VER%%/include/llvm/ADT/DenseSet.h
+llvm%%LLVM_LIB_VER%%/include/llvm/ADT/DepthFirstIterator.h
+llvm%%LLVM_LIB_VER%%/include/llvm/ADT/EpochTracker.h
+llvm%%LLVM_LIB_VER%%/include/llvm/ADT/EquivalenceClasses.h
+llvm%%LLVM_LIB_VER%%/include/llvm/ADT/FoldingSet.h
+llvm%%LLVM_LIB_VER%%/include/llvm/ADT/GraphTraits.h
+llvm%%LLVM_LIB_VER%%/include/llvm/ADT/Hashing.h
+llvm%%LLVM_LIB_VER%%/include/llvm/ADT/ImmutableList.h
+llvm%%LLVM_LIB_VER%%/include/llvm/ADT/ImmutableMap.h
+llvm%%LLVM_LIB_VER%%/include/llvm/ADT/ImmutableSet.h
+llvm%%LLVM_LIB_VER%%/include/llvm/ADT/IndexedMap.h
+llvm%%LLVM_LIB_VER%%/include/llvm/ADT/IntEqClasses.h
+llvm%%LLVM_LIB_VER%%/include/llvm/ADT/IntervalMap.h
+llvm%%LLVM_LIB_VER%%/include/llvm/ADT/IntrusiveRefCntPtr.h
+llvm%%LLVM_LIB_VER%%/include/llvm/ADT/MapVector.h
+llvm%%LLVM_LIB_VER%%/include/llvm/ADT/None.h
+llvm%%LLVM_LIB_VER%%/include/llvm/ADT/Optional.h
+llvm%%LLVM_LIB_VER%%/include/llvm/ADT/PackedVector.h
+llvm%%LLVM_LIB_VER%%/include/llvm/ADT/PointerEmbeddedInt.h
+llvm%%LLVM_LIB_VER%%/include/llvm/ADT/PointerIntPair.h
+llvm%%LLVM_LIB_VER%%/include/llvm/ADT/PointerSumType.h
+llvm%%LLVM_LIB_VER%%/include/llvm/ADT/PointerUnion.h
+llvm%%LLVM_LIB_VER%%/include/llvm/ADT/PostOrderIterator.h
+llvm%%LLVM_LIB_VER%%/include/llvm/ADT/PriorityQueue.h
+llvm%%LLVM_LIB_VER%%/include/llvm/ADT/PriorityWorklist.h
+llvm%%LLVM_LIB_VER%%/include/llvm/ADT/SCCIterator.h
+llvm%%LLVM_LIB_VER%%/include/llvm/ADT/STLExtras.h
+llvm%%LLVM_LIB_VER%%/include/llvm/ADT/ScopeExit.h
+llvm%%LLVM_LIB_VER%%/include/llvm/ADT/ScopedHashTable.h
+llvm%%LLVM_LIB_VER%%/include/llvm/ADT/Sequence.h
+llvm%%LLVM_LIB_VER%%/include/llvm/ADT/SetOperations.h
+llvm%%LLVM_LIB_VER%%/include/llvm/ADT/SetVector.h
+llvm%%LLVM_LIB_VER%%/include/llvm/ADT/SmallBitVector.h
+llvm%%LLVM_LIB_VER%%/include/llvm/ADT/SmallPtrSet.h
+llvm%%LLVM_LIB_VER%%/include/llvm/ADT/SmallSet.h
+llvm%%LLVM_LIB_VER%%/include/llvm/ADT/SmallString.h
+llvm%%LLVM_LIB_VER%%/include/llvm/ADT/SmallVector.h
+llvm%%LLVM_LIB_VER%%/include/llvm/ADT/SparseBitVector.h
+llvm%%LLVM_LIB_VER%%/include/llvm/ADT/SparseMultiSet.h
+llvm%%LLVM_LIB_VER%%/include/llvm/ADT/SparseSet.h
+llvm%%LLVM_LIB_VER%%/include/llvm/ADT/Statistic.h
+llvm%%LLVM_LIB_VER%%/include/llvm/ADT/StringExtras.h
+llvm%%LLVM_LIB_VER%%/include/llvm/ADT/StringMap.h
+llvm%%LLVM_LIB_VER%%/include/llvm/ADT/StringRef.h
+llvm%%LLVM_LIB_VER%%/include/llvm/ADT/StringSet.h
+llvm%%LLVM_LIB_VER%%/include/llvm/ADT/StringSwitch.h
+llvm%%LLVM_LIB_VER%%/include/llvm/ADT/TinyPtrVector.h
+llvm%%LLVM_LIB_VER%%/include/llvm/ADT/Triple.h
+llvm%%LLVM_LIB_VER%%/include/llvm/ADT/Twine.h
+llvm%%LLVM_LIB_VER%%/include/llvm/ADT/UniqueVector.h
+llvm%%LLVM_LIB_VER%%/include/llvm/ADT/VariadicFunction.h
+llvm%%LLVM_LIB_VER%%/include/llvm/ADT/edit_distance.h
+llvm%%LLVM_LIB_VER%%/include/llvm/ADT/ilist.h
+llvm%%LLVM_LIB_VER%%/include/llvm/ADT/ilist_base.h
+llvm%%LLVM_LIB_VER%%/include/llvm/ADT/ilist_iterator.h
+llvm%%LLVM_LIB_VER%%/include/llvm/ADT/ilist_node.h
+llvm%%LLVM_LIB_VER%%/include/llvm/ADT/ilist_node_base.h
+llvm%%LLVM_LIB_VER%%/include/llvm/ADT/ilist_node_options.h
+llvm%%LLVM_LIB_VER%%/include/llvm/ADT/iterator.h
+llvm%%LLVM_LIB_VER%%/include/llvm/ADT/iterator_range.h
+llvm%%LLVM_LIB_VER%%/include/llvm/ADT/simple_ilist.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Analysis/AliasAnalysis.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Analysis/AliasAnalysisEvaluator.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Analysis/AliasSetTracker.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Analysis/AssumptionCache.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Analysis/BasicAliasAnalysis.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Analysis/BlockFrequencyInfo.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Analysis/BlockFrequencyInfoImpl.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Analysis/BranchProbabilityInfo.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Analysis/CFG.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Analysis/CFGPrinter.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Analysis/CFLAliasAnalysisUtils.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Analysis/CFLAndersAliasAnalysis.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Analysis/CFLSteensAliasAnalysis.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Analysis/CGSCCPassManager.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Analysis/CallGraph.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Analysis/CallGraphSCCPass.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Analysis/CallPrinter.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Analysis/CaptureTracking.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Analysis/CmpInstAnalysis.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Analysis/CodeMetrics.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Analysis/ConstantFolding.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Analysis/DOTGraphTraitsPass.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Analysis/DemandedBits.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Analysis/DependenceAnalysis.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Analysis/DivergenceAnalysis.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Analysis/DomPrinter.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Analysis/DominanceFrontier.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Analysis/DominanceFrontierImpl.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Analysis/EHPersonalities.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Analysis/GlobalsModRef.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Analysis/IVUsers.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Analysis/IndirectCallPromotionAnalysis.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Analysis/IndirectCallSiteVisitor.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Analysis/InlineCost.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Analysis/InstructionSimplify.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Analysis/Interval.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Analysis/IntervalIterator.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Analysis/IntervalPartition.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Analysis/IteratedDominanceFrontier.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Analysis/LazyBlockFrequencyInfo.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Analysis/LazyBranchProbabilityInfo.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Analysis/LazyCallGraph.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Analysis/LazyValueInfo.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Analysis/Lint.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Analysis/Loads.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Analysis/LoopAccessAnalysis.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Analysis/LoopAnalysisManager.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Analysis/LoopInfo.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Analysis/LoopInfoImpl.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Analysis/LoopIterator.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Analysis/LoopPass.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Analysis/LoopUnrollAnalyzer.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Analysis/MemoryBuiltins.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Analysis/MemoryDependenceAnalysis.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Analysis/MemoryLocation.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Analysis/MemorySSA.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Analysis/MemorySSAUpdater.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Analysis/ModuleSummaryAnalysis.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Analysis/ObjCARCAliasAnalysis.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Analysis/ObjCARCAnalysisUtils.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Analysis/ObjCARCInstKind.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Analysis/ObjectUtils.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Analysis/OptimizationRemarkEmitter.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Analysis/OrderedBasicBlock.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Analysis/PHITransAddr.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Analysis/Passes.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Analysis/PostDominators.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Analysis/ProfileSummaryInfo.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Analysis/PtrUseVisitor.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Analysis/RegionInfo.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Analysis/RegionInfoImpl.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Analysis/RegionIterator.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Analysis/RegionPass.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Analysis/RegionPrinter.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Analysis/ScalarEvolution.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Analysis/ScalarEvolutionAliasAnalysis.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Analysis/ScalarEvolutionExpander.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Analysis/ScalarEvolutionExpressions.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Analysis/ScalarEvolutionNormalization.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Analysis/ScopedNoAliasAA.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Analysis/SparsePropagation.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Analysis/TargetFolder.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Analysis/TargetLibraryInfo.def
+llvm%%LLVM_LIB_VER%%/include/llvm/Analysis/TargetLibraryInfo.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Analysis/TargetTransformInfo.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Analysis/TargetTransformInfoImpl.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Analysis/Trace.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Analysis/TypeBasedAliasAnalysis.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Analysis/TypeMetadataUtils.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Analysis/ValueLattice.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Analysis/ValueLatticeUtils.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Analysis/ValueTracking.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Analysis/VectorUtils.h
+llvm%%LLVM_LIB_VER%%/include/llvm/AsmParser/Parser.h
+llvm%%LLVM_LIB_VER%%/include/llvm/AsmParser/SlotMapping.h
+llvm%%LLVM_LIB_VER%%/include/llvm/BinaryFormat/COFF.h
+llvm%%LLVM_LIB_VER%%/include/llvm/BinaryFormat/Dwarf.def
+llvm%%LLVM_LIB_VER%%/include/llvm/BinaryFormat/Dwarf.h
+llvm%%LLVM_LIB_VER%%/include/llvm/BinaryFormat/ELF.h
+llvm%%LLVM_LIB_VER%%/include/llvm/BinaryFormat/ELFRelocs/AArch64.def
+llvm%%LLVM_LIB_VER%%/include/llvm/BinaryFormat/ELFRelocs/AMDGPU.def
+llvm%%LLVM_LIB_VER%%/include/llvm/BinaryFormat/ELFRelocs/ARC.def
+llvm%%LLVM_LIB_VER%%/include/llvm/BinaryFormat/ELFRelocs/ARM.def
+llvm%%LLVM_LIB_VER%%/include/llvm/BinaryFormat/ELFRelocs/AVR.def
+llvm%%LLVM_LIB_VER%%/include/llvm/BinaryFormat/ELFRelocs/BPF.def
+llvm%%LLVM_LIB_VER%%/include/llvm/BinaryFormat/ELFRelocs/Hexagon.def
+llvm%%LLVM_LIB_VER%%/include/llvm/BinaryFormat/ELFRelocs/Lanai.def
+llvm%%LLVM_LIB_VER%%/include/llvm/BinaryFormat/ELFRelocs/Mips.def
+llvm%%LLVM_LIB_VER%%/include/llvm/BinaryFormat/ELFRelocs/PowerPC.def
+llvm%%LLVM_LIB_VER%%/include/llvm/BinaryFormat/ELFRelocs/PowerPC64.def
+llvm%%LLVM_LIB_VER%%/include/llvm/BinaryFormat/ELFRelocs/RISCV.def
+llvm%%LLVM_LIB_VER%%/include/llvm/BinaryFormat/ELFRelocs/Sparc.def
+llvm%%LLVM_LIB_VER%%/include/llvm/BinaryFormat/ELFRelocs/SystemZ.def
+llvm%%LLVM_LIB_VER%%/include/llvm/BinaryFormat/ELFRelocs/WebAssembly.def
+llvm%%LLVM_LIB_VER%%/include/llvm/BinaryFormat/ELFRelocs/i386.def
+llvm%%LLVM_LIB_VER%%/include/llvm/BinaryFormat/ELFRelocs/x86_64.def
+llvm%%LLVM_LIB_VER%%/include/llvm/BinaryFormat/MachO.def
+llvm%%LLVM_LIB_VER%%/include/llvm/BinaryFormat/MachO.h
+llvm%%LLVM_LIB_VER%%/include/llvm/BinaryFormat/Magic.h
+llvm%%LLVM_LIB_VER%%/include/llvm/BinaryFormat/Wasm.h
+llvm%%LLVM_LIB_VER%%/include/llvm/BinaryFormat/WasmRelocs.def
+llvm%%LLVM_LIB_VER%%/include/llvm/Bitcode/BitCodes.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Bitcode/BitcodeReader.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Bitcode/BitcodeWriter.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Bitcode/BitcodeWriterPass.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Bitcode/BitstreamReader.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Bitcode/BitstreamWriter.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Bitcode/LLVMBitCodes.h
+llvm%%LLVM_LIB_VER%%/include/llvm/CodeGen/Analysis.h
+llvm%%LLVM_LIB_VER%%/include/llvm/CodeGen/AsmPrinter.h
+llvm%%LLVM_LIB_VER%%/include/llvm/CodeGen/AtomicExpandUtils.h
+llvm%%LLVM_LIB_VER%%/include/llvm/CodeGen/BasicTTIImpl.h
+llvm%%LLVM_LIB_VER%%/include/llvm/CodeGen/CalcSpillWeights.h
+llvm%%LLVM_LIB_VER%%/include/llvm/CodeGen/CallingConvLower.h
+llvm%%LLVM_LIB_VER%%/include/llvm/CodeGen/CommandFlags.def
+llvm%%LLVM_LIB_VER%%/include/llvm/CodeGen/CostTable.h
+llvm%%LLVM_LIB_VER%%/include/llvm/CodeGen/DAGCombine.h
+llvm%%LLVM_LIB_VER%%/include/llvm/CodeGen/DFAPacketizer.h
+llvm%%LLVM_LIB_VER%%/include/llvm/CodeGen/DIE.h
+llvm%%LLVM_LIB_VER%%/include/llvm/CodeGen/DIEValue.def
+llvm%%LLVM_LIB_VER%%/include/llvm/CodeGen/DwarfStringPoolEntry.h
+llvm%%LLVM_LIB_VER%%/include/llvm/CodeGen/EdgeBundles.h
+llvm%%LLVM_LIB_VER%%/include/llvm/CodeGen/ExecutionDepsFix.h
+llvm%%LLVM_LIB_VER%%/include/llvm/CodeGen/ExpandReductions.h
+llvm%%LLVM_LIB_VER%%/include/llvm/CodeGen/FastISel.h
+llvm%%LLVM_LIB_VER%%/include/llvm/CodeGen/FaultMaps.h
+llvm%%LLVM_LIB_VER%%/include/llvm/CodeGen/FunctionLoweringInfo.h
+llvm%%LLVM_LIB_VER%%/include/llvm/CodeGen/GCMetadata.h
+llvm%%LLVM_LIB_VER%%/include/llvm/CodeGen/GCMetadataPrinter.h
+llvm%%LLVM_LIB_VER%%/include/llvm/CodeGen/GCStrategy.h
+llvm%%LLVM_LIB_VER%%/include/llvm/CodeGen/GCs.h
+llvm%%LLVM_LIB_VER%%/include/llvm/CodeGen/GlobalISel/CallLowering.h
+llvm%%LLVM_LIB_VER%%/include/llvm/CodeGen/GlobalISel/GISelWorkList.h
+llvm%%LLVM_LIB_VER%%/include/llvm/CodeGen/GlobalISel/IRTranslator.h
+llvm%%LLVM_LIB_VER%%/include/llvm/CodeGen/GlobalISel/InstructionSelect.h
+llvm%%LLVM_LIB_VER%%/include/llvm/CodeGen/GlobalISel/InstructionSelector.h
+llvm%%LLVM_LIB_VER%%/include/llvm/CodeGen/GlobalISel/InstructionSelectorImpl.h
+llvm%%LLVM_LIB_VER%%/include/llvm/CodeGen/GlobalISel/LegalizationArtifactCombiner.h
+llvm%%LLVM_LIB_VER%%/include/llvm/CodeGen/GlobalISel/Legalizer.h
+llvm%%LLVM_LIB_VER%%/include/llvm/CodeGen/GlobalISel/LegalizerHelper.h
+llvm%%LLVM_LIB_VER%%/include/llvm/CodeGen/GlobalISel/LegalizerInfo.h
+llvm%%LLVM_LIB_VER%%/include/llvm/CodeGen/GlobalISel/Localizer.h
+llvm%%LLVM_LIB_VER%%/include/llvm/CodeGen/GlobalISel/MachineIRBuilder.h
+llvm%%LLVM_LIB_VER%%/include/llvm/CodeGen/GlobalISel/RegBankSelect.h
+llvm%%LLVM_LIB_VER%%/include/llvm/CodeGen/GlobalISel/RegisterBank.h
+llvm%%LLVM_LIB_VER%%/include/llvm/CodeGen/GlobalISel/RegisterBankInfo.h
+llvm%%LLVM_LIB_VER%%/include/llvm/CodeGen/GlobalISel/Types.h
+llvm%%LLVM_LIB_VER%%/include/llvm/CodeGen/GlobalISel/Utils.h
+llvm%%LLVM_LIB_VER%%/include/llvm/CodeGen/ISDOpcodes.h
+llvm%%LLVM_LIB_VER%%/include/llvm/CodeGen/IntrinsicLowering.h
+llvm%%LLVM_LIB_VER%%/include/llvm/CodeGen/LatencyPriorityQueue.h
+llvm%%LLVM_LIB_VER%%/include/llvm/CodeGen/LazyMachineBlockFrequencyInfo.h
+llvm%%LLVM_LIB_VER%%/include/llvm/CodeGen/LexicalScopes.h
+llvm%%LLVM_LIB_VER%%/include/llvm/CodeGen/LinkAllAsmWriterComponents.h
+llvm%%LLVM_LIB_VER%%/include/llvm/CodeGen/LinkAllCodegenComponents.h
+llvm%%LLVM_LIB_VER%%/include/llvm/CodeGen/LiveInterval.h
+llvm%%LLVM_LIB_VER%%/include/llvm/CodeGen/LiveIntervalUnion.h
+llvm%%LLVM_LIB_VER%%/include/llvm/CodeGen/LiveIntervals.h
+llvm%%LLVM_LIB_VER%%/include/llvm/CodeGen/LivePhysRegs.h
+llvm%%LLVM_LIB_VER%%/include/llvm/CodeGen/LiveRangeEdit.h
+llvm%%LLVM_LIB_VER%%/include/llvm/CodeGen/LiveRegMatrix.h
+llvm%%LLVM_LIB_VER%%/include/llvm/CodeGen/LiveRegUnits.h
+llvm%%LLVM_LIB_VER%%/include/llvm/CodeGen/LiveStacks.h
+llvm%%LLVM_LIB_VER%%/include/llvm/CodeGen/LiveVariables.h
+llvm%%LLVM_LIB_VER%%/include/llvm/CodeGen/LowLevelType.h
+llvm%%LLVM_LIB_VER%%/include/llvm/CodeGen/MIRParser/MIRParser.h
+llvm%%LLVM_LIB_VER%%/include/llvm/CodeGen/MIRPrinter.h
+llvm%%LLVM_LIB_VER%%/include/llvm/CodeGen/MIRYamlMapping.h
+llvm%%LLVM_LIB_VER%%/include/llvm/CodeGen/MachORelocation.h
+llvm%%LLVM_LIB_VER%%/include/llvm/CodeGen/MachineBasicBlock.h
+llvm%%LLVM_LIB_VER%%/include/llvm/CodeGen/MachineBlockFrequencyInfo.h
+llvm%%LLVM_LIB_VER%%/include/llvm/CodeGen/MachineBranchProbabilityInfo.h
+llvm%%LLVM_LIB_VER%%/include/llvm/CodeGen/MachineCombinerPattern.h
+llvm%%LLVM_LIB_VER%%/include/llvm/CodeGen/MachineConstantPool.h
+llvm%%LLVM_LIB_VER%%/include/llvm/CodeGen/MachineDominanceFrontier.h
+llvm%%LLVM_LIB_VER%%/include/llvm/CodeGen/MachineDominators.h
+llvm%%LLVM_LIB_VER%%/include/llvm/CodeGen/MachineFrameInfo.h
+llvm%%LLVM_LIB_VER%%/include/llvm/CodeGen/MachineFunction.h
+llvm%%LLVM_LIB_VER%%/include/llvm/CodeGen/MachineFunctionPass.h
+llvm%%LLVM_LIB_VER%%/include/llvm/CodeGen/MachineInstr.h
+llvm%%LLVM_LIB_VER%%/include/llvm/CodeGen/MachineInstrBuilder.h
+llvm%%LLVM_LIB_VER%%/include/llvm/CodeGen/MachineInstrBundle.h
+llvm%%LLVM_LIB_VER%%/include/llvm/CodeGen/MachineInstrBundleIterator.h
+llvm%%LLVM_LIB_VER%%/include/llvm/CodeGen/MachineJumpTableInfo.h
+llvm%%LLVM_LIB_VER%%/include/llvm/CodeGen/MachineLoopInfo.h
+llvm%%LLVM_LIB_VER%%/include/llvm/CodeGen/MachineMemOperand.h
+llvm%%LLVM_LIB_VER%%/include/llvm/CodeGen/MachineModuleInfo.h
+llvm%%LLVM_LIB_VER%%/include/llvm/CodeGen/MachineModuleInfoImpls.h
+llvm%%LLVM_LIB_VER%%/include/llvm/CodeGen/MachineOperand.h
+llvm%%LLVM_LIB_VER%%/include/llvm/CodeGen/MachineOptimizationRemarkEmitter.h
+llvm%%LLVM_LIB_VER%%/include/llvm/CodeGen/MachinePassRegistry.h
+llvm%%LLVM_LIB_VER%%/include/llvm/CodeGen/MachinePostDominators.h
+llvm%%LLVM_LIB_VER%%/include/llvm/CodeGen/MachineRegionInfo.h
+llvm%%LLVM_LIB_VER%%/include/llvm/CodeGen/MachineRegisterInfo.h
+llvm%%LLVM_LIB_VER%%/include/llvm/CodeGen/MachineSSAUpdater.h
+llvm%%LLVM_LIB_VER%%/include/llvm/CodeGen/MachineScheduler.h
+llvm%%LLVM_LIB_VER%%/include/llvm/CodeGen/MachineTraceMetrics.h
+llvm%%LLVM_LIB_VER%%/include/llvm/CodeGen/MachineValueType.h
+llvm%%LLVM_LIB_VER%%/include/llvm/CodeGen/MacroFusion.h
+llvm%%LLVM_LIB_VER%%/include/llvm/CodeGen/PBQP/CostAllocator.h
+llvm%%LLVM_LIB_VER%%/include/llvm/CodeGen/PBQP/Graph.h
+llvm%%LLVM_LIB_VER%%/include/llvm/CodeGen/PBQP/Math.h
+llvm%%LLVM_LIB_VER%%/include/llvm/CodeGen/PBQP/ReductionRules.h
+llvm%%LLVM_LIB_VER%%/include/llvm/CodeGen/PBQP/Solution.h
+llvm%%LLVM_LIB_VER%%/include/llvm/CodeGen/PBQPRAConstraint.h
+llvm%%LLVM_LIB_VER%%/include/llvm/CodeGen/ParallelCG.h
+llvm%%LLVM_LIB_VER%%/include/llvm/CodeGen/Passes.h
+llvm%%LLVM_LIB_VER%%/include/llvm/CodeGen/PreISelIntrinsicLowering.h
+llvm%%LLVM_LIB_VER%%/include/llvm/CodeGen/PseudoSourceValue.h
+llvm%%LLVM_LIB_VER%%/include/llvm/CodeGen/RegAllocPBQP.h
+llvm%%LLVM_LIB_VER%%/include/llvm/CodeGen/RegAllocRegistry.h
+llvm%%LLVM_LIB_VER%%/include/llvm/CodeGen/RegisterClassInfo.h
+llvm%%LLVM_LIB_VER%%/include/llvm/CodeGen/RegisterPressure.h
+llvm%%LLVM_LIB_VER%%/include/llvm/CodeGen/RegisterScavenging.h
+llvm%%LLVM_LIB_VER%%/include/llvm/CodeGen/RegisterUsageInfo.h
+llvm%%LLVM_LIB_VER%%/include/llvm/CodeGen/ResourcePriorityQueue.h
+llvm%%LLVM_LIB_VER%%/include/llvm/CodeGen/RuntimeLibcalls.def
+llvm%%LLVM_LIB_VER%%/include/llvm/CodeGen/RuntimeLibcalls.h
+llvm%%LLVM_LIB_VER%%/include/llvm/CodeGen/SDNodeProperties.td
+llvm%%LLVM_LIB_VER%%/include/llvm/CodeGen/ScheduleDAG.h
+llvm%%LLVM_LIB_VER%%/include/llvm/CodeGen/ScheduleDAGInstrs.h
+llvm%%LLVM_LIB_VER%%/include/llvm/CodeGen/ScheduleDAGMutation.h
+llvm%%LLVM_LIB_VER%%/include/llvm/CodeGen/ScheduleDFS.h
+llvm%%LLVM_LIB_VER%%/include/llvm/CodeGen/ScheduleHazardRecognizer.h
+llvm%%LLVM_LIB_VER%%/include/llvm/CodeGen/SchedulerRegistry.h
+llvm%%LLVM_LIB_VER%%/include/llvm/CodeGen/ScoreboardHazardRecognizer.h
+llvm%%LLVM_LIB_VER%%/include/llvm/CodeGen/SelectionDAG.h
+llvm%%LLVM_LIB_VER%%/include/llvm/CodeGen/SelectionDAGAddressAnalysis.h
+llvm%%LLVM_LIB_VER%%/include/llvm/CodeGen/SelectionDAGISel.h
+llvm%%LLVM_LIB_VER%%/include/llvm/CodeGen/SelectionDAGNodes.h
+llvm%%LLVM_LIB_VER%%/include/llvm/CodeGen/SelectionDAGTargetInfo.h
+llvm%%LLVM_LIB_VER%%/include/llvm/CodeGen/SlotIndexes.h
+llvm%%LLVM_LIB_VER%%/include/llvm/CodeGen/StackMaps.h
+llvm%%LLVM_LIB_VER%%/include/llvm/CodeGen/StackProtector.h
+llvm%%LLVM_LIB_VER%%/include/llvm/CodeGen/TailDuplicator.h
+llvm%%LLVM_LIB_VER%%/include/llvm/CodeGen/TargetCallingConv.h
+llvm%%LLVM_LIB_VER%%/include/llvm/CodeGen/TargetFrameLowering.h
+llvm%%LLVM_LIB_VER%%/include/llvm/CodeGen/TargetInstrInfo.h
+llvm%%LLVM_LIB_VER%%/include/llvm/CodeGen/TargetLowering.h
+llvm%%LLVM_LIB_VER%%/include/llvm/CodeGen/TargetLoweringObjectFile.h
+llvm%%LLVM_LIB_VER%%/include/llvm/CodeGen/TargetLoweringObjectFileImpl.h
+llvm%%LLVM_LIB_VER%%/include/llvm/CodeGen/TargetOpcodes.def
+llvm%%LLVM_LIB_VER%%/include/llvm/CodeGen/TargetOpcodes.h
+llvm%%LLVM_LIB_VER%%/include/llvm/CodeGen/TargetPassConfig.h
+llvm%%LLVM_LIB_VER%%/include/llvm/CodeGen/TargetRegisterInfo.h
+llvm%%LLVM_LIB_VER%%/include/llvm/CodeGen/TargetSchedule.h
+llvm%%LLVM_LIB_VER%%/include/llvm/CodeGen/TargetSubtargetInfo.h
+llvm%%LLVM_LIB_VER%%/include/llvm/CodeGen/UnreachableBlockElim.h
+llvm%%LLVM_LIB_VER%%/include/llvm/CodeGen/ValueTypes.h
+llvm%%LLVM_LIB_VER%%/include/llvm/CodeGen/ValueTypes.td
+llvm%%LLVM_LIB_VER%%/include/llvm/CodeGen/VirtRegMap.h
+llvm%%LLVM_LIB_VER%%/include/llvm/CodeGen/WinEHFuncInfo.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Config/AsmParsers.def
+llvm%%LLVM_LIB_VER%%/include/llvm/Config/AsmPrinters.def
+llvm%%LLVM_LIB_VER%%/include/llvm/Config/Disassemblers.def
+llvm%%LLVM_LIB_VER%%/include/llvm/Config/Targets.def
+llvm%%LLVM_LIB_VER%%/include/llvm/Config/abi-breaking.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Config/llvm-config.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/CodeView/AppendingTypeTableBuilder.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/CodeView/CVDebugRecord.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/CodeView/CVRecord.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/CodeView/CVSymbolVisitor.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/CodeView/CVTypeVisitor.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/CodeView/CodeView.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/CodeView/CodeViewError.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/CodeView/CodeViewRecordIO.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/CodeView/CodeViewRegisters.def
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/CodeView/CodeViewSymbols.def
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/CodeView/CodeViewTypes.def
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/CodeView/ContinuationRecordBuilder.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/CodeView/DebugChecksumsSubsection.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/CodeView/DebugCrossExSubsection.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/CodeView/DebugCrossImpSubsection.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/CodeView/DebugFrameDataSubsection.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/CodeView/DebugInlineeLinesSubsection.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/CodeView/DebugLinesSubsection.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/CodeView/DebugStringTableSubsection.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/CodeView/DebugSubsection.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/CodeView/DebugSubsectionRecord.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/CodeView/DebugSubsectionVisitor.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/CodeView/DebugSymbolRVASubsection.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/CodeView/DebugSymbolsSubsection.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/CodeView/DebugUnknownSubsection.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/CodeView/EnumTables.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/CodeView/Formatters.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/CodeView/FunctionId.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/CodeView/GUID.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/CodeView/GlobalTypeTableBuilder.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/CodeView/LazyRandomTypeCollection.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/CodeView/Line.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/CodeView/MergingTypeTableBuilder.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/CodeView/RecordName.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/CodeView/RecordSerialization.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/CodeView/SimpleTypeSerializer.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/CodeView/StringsAndChecksums.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/CodeView/SymbolDeserializer.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/CodeView/SymbolDumpDelegate.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/CodeView/SymbolDumper.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/CodeView/SymbolRecord.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/CodeView/SymbolRecordMapping.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/CodeView/SymbolSerializer.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/CodeView/SymbolVisitorCallbackPipeline.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/CodeView/SymbolVisitorCallbacks.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/CodeView/SymbolVisitorDelegate.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/CodeView/TypeCollection.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/CodeView/TypeDeserializer.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/CodeView/TypeDumpVisitor.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/CodeView/TypeHashing.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/CodeView/TypeIndex.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/CodeView/TypeIndexDiscovery.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/CodeView/TypeRecord.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/CodeView/TypeRecordMapping.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/CodeView/TypeStreamMerger.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/CodeView/TypeSymbolEmitter.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/CodeView/TypeTableCollection.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/CodeView/TypeVisitorCallbackPipeline.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/CodeView/TypeVisitorCallbacks.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/DIContext.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/DWARF/DWARFAbbreviationDeclaration.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/DWARF/DWARFAcceleratorTable.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/DWARF/DWARFAttribute.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/DWARF/DWARFCompileUnit.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/DWARF/DWARFContext.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/DWARF/DWARFDataExtractor.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/DWARF/DWARFDebugAbbrev.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/DWARF/DWARFDebugArangeSet.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/DWARF/DWARFDebugAranges.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/DWARF/DWARFDebugFrame.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/DWARF/DWARFDebugInfoEntry.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/DWARF/DWARFDebugLine.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/DWARF/DWARFDebugLoc.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/DWARF/DWARFDebugMacro.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/DWARF/DWARFDebugPubTable.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/DWARF/DWARFDebugRangeList.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/DWARF/DWARFDie.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/DWARF/DWARFExpression.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/DWARF/DWARFFormValue.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/DWARF/DWARFGdbIndex.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/DWARF/DWARFObject.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/DWARF/DWARFRelocMap.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/DWARF/DWARFSection.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/DWARF/DWARFTypeUnit.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/DWARF/DWARFUnit.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/DWARF/DWARFUnitIndex.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/DWARF/DWARFVerifier.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/MSF/IMSFFile.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/MSF/MSFBuilder.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/MSF/MSFCommon.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/MSF/MSFError.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/MSF/MappedBlockStream.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/PDB/ConcreteSymbolEnumerator.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/PDB/DIA/DIADataStream.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/PDB/DIA/DIAEnumDebugStreams.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/PDB/DIA/DIAEnumLineNumbers.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/PDB/DIA/DIAEnumSourceFiles.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/PDB/DIA/DIAEnumSymbols.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/PDB/DIA/DIAEnumTables.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/PDB/DIA/DIAError.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/PDB/DIA/DIALineNumber.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/PDB/DIA/DIARawSymbol.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/PDB/DIA/DIASession.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/PDB/DIA/DIASourceFile.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/PDB/DIA/DIASupport.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/PDB/DIA/DIATable.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/PDB/GenericError.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/PDB/IPDBDataStream.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/PDB/IPDBEnumChildren.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/PDB/IPDBLineNumber.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/PDB/IPDBRawSymbol.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/PDB/IPDBSession.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/PDB/IPDBSourceFile.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/PDB/IPDBTable.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/PDB/Native/DbiModuleDescriptor.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/PDB/Native/DbiModuleDescriptorBuilder.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/PDB/Native/DbiModuleList.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/PDB/Native/DbiStream.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/PDB/Native/DbiStreamBuilder.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/PDB/Native/EnumTables.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/PDB/Native/Formatters.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/PDB/Native/GSIStreamBuilder.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/PDB/Native/GlobalsStream.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/PDB/Native/Hash.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/PDB/Native/HashTable.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/PDB/Native/ISectionContribVisitor.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/PDB/Native/InfoStream.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/PDB/Native/InfoStreamBuilder.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/PDB/Native/ModuleDebugStream.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/PDB/Native/NamedStreamMap.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/PDB/Native/NativeBuiltinSymbol.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/PDB/Native/NativeCompilandSymbol.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/PDB/Native/NativeEnumModules.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/PDB/Native/NativeEnumSymbol.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/PDB/Native/NativeEnumTypes.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/PDB/Native/NativeExeSymbol.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/PDB/Native/NativeRawSymbol.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/PDB/Native/NativeSession.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/PDB/Native/PDBFile.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/PDB/Native/PDBFileBuilder.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/PDB/Native/PDBStringTable.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/PDB/Native/PDBStringTableBuilder.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/PDB/Native/PublicsStream.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/PDB/Native/RawConstants.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/PDB/Native/RawError.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/PDB/Native/RawTypes.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/PDB/Native/SymbolStream.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/PDB/Native/TpiHashing.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/PDB/Native/TpiStream.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/PDB/Native/TpiStreamBuilder.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/PDB/PDB.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/PDB/PDBContext.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/PDB/PDBExtras.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/PDB/PDBSymDumper.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/PDB/PDBSymbol.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/PDB/PDBSymbolAnnotation.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/PDB/PDBSymbolBlock.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/PDB/PDBSymbolCompiland.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/PDB/PDBSymbolCompilandDetails.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/PDB/PDBSymbolCompilandEnv.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/PDB/PDBSymbolCustom.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/PDB/PDBSymbolData.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/PDB/PDBSymbolExe.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/PDB/PDBSymbolFunc.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/PDB/PDBSymbolFuncDebugEnd.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/PDB/PDBSymbolFuncDebugStart.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/PDB/PDBSymbolLabel.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/PDB/PDBSymbolPublicSymbol.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/PDB/PDBSymbolThunk.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/PDB/PDBSymbolTypeArray.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/PDB/PDBSymbolTypeBaseClass.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/PDB/PDBSymbolTypeBuiltin.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/PDB/PDBSymbolTypeCustom.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/PDB/PDBSymbolTypeDimension.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/PDB/PDBSymbolTypeEnum.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/PDB/PDBSymbolTypeFriend.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/PDB/PDBSymbolTypeFunctionArg.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/PDB/PDBSymbolTypeFunctionSig.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/PDB/PDBSymbolTypeManaged.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/PDB/PDBSymbolTypePointer.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/PDB/PDBSymbolTypeTypedef.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/PDB/PDBSymbolTypeUDT.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/PDB/PDBSymbolTypeVTable.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/PDB/PDBSymbolTypeVTableShape.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/PDB/PDBSymbolUnknown.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/PDB/PDBSymbolUsingNamespace.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/PDB/PDBTypes.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/PDB/UDTLayout.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/Symbolize/DIPrinter.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/Symbolize/SymbolizableModule.h
+llvm%%LLVM_LIB_VER%%/include/llvm/DebugInfo/Symbolize/Symbolize.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Demangle/Demangle.h
+llvm%%LLVM_LIB_VER%%/include/llvm/ExecutionEngine/ExecutionEngine.h
+llvm%%LLVM_LIB_VER%%/include/llvm/ExecutionEngine/GenericValue.h
+llvm%%LLVM_LIB_VER%%/include/llvm/ExecutionEngine/Interpreter.h
+llvm%%LLVM_LIB_VER%%/include/llvm/ExecutionEngine/JITEventListener.h
+llvm%%LLVM_LIB_VER%%/include/llvm/ExecutionEngine/JITSymbol.h
+llvm%%LLVM_LIB_VER%%/include/llvm/ExecutionEngine/MCJIT.h
+llvm%%LLVM_LIB_VER%%/include/llvm/ExecutionEngine/OProfileWrapper.h
+llvm%%LLVM_LIB_VER%%/include/llvm/ExecutionEngine/ObjectCache.h
+llvm%%LLVM_LIB_VER%%/include/llvm/ExecutionEngine/ObjectMemoryBuffer.h
+llvm%%LLVM_LIB_VER%%/include/llvm/ExecutionEngine/Orc/CompileOnDemandLayer.h
+llvm%%LLVM_LIB_VER%%/include/llvm/ExecutionEngine/Orc/CompileUtils.h
+llvm%%LLVM_LIB_VER%%/include/llvm/ExecutionEngine/Orc/ExecutionUtils.h
+llvm%%LLVM_LIB_VER%%/include/llvm/ExecutionEngine/Orc/GlobalMappingLayer.h
+llvm%%LLVM_LIB_VER%%/include/llvm/ExecutionEngine/Orc/IRCompileLayer.h
+llvm%%LLVM_LIB_VER%%/include/llvm/ExecutionEngine/Orc/IRTransformLayer.h
+llvm%%LLVM_LIB_VER%%/include/llvm/ExecutionEngine/Orc/IndirectionUtils.h
+llvm%%LLVM_LIB_VER%%/include/llvm/ExecutionEngine/Orc/LambdaResolver.h
+llvm%%LLVM_LIB_VER%%/include/llvm/ExecutionEngine/Orc/LazyEmittingLayer.h
+llvm%%LLVM_LIB_VER%%/include/llvm/ExecutionEngine/Orc/NullResolver.h
+llvm%%LLVM_LIB_VER%%/include/llvm/ExecutionEngine/Orc/ObjectTransformLayer.h
+llvm%%LLVM_LIB_VER%%/include/llvm/ExecutionEngine/Orc/OrcABISupport.h
+llvm%%LLVM_LIB_VER%%/include/llvm/ExecutionEngine/Orc/OrcError.h
+llvm%%LLVM_LIB_VER%%/include/llvm/ExecutionEngine/Orc/OrcRemoteTargetClient.h
+llvm%%LLVM_LIB_VER%%/include/llvm/ExecutionEngine/Orc/OrcRemoteTargetRPCAPI.h
+llvm%%LLVM_LIB_VER%%/include/llvm/ExecutionEngine/Orc/OrcRemoteTargetServer.h
+llvm%%LLVM_LIB_VER%%/include/llvm/ExecutionEngine/Orc/RPCSerialization.h
+llvm%%LLVM_LIB_VER%%/include/llvm/ExecutionEngine/Orc/RPCUtils.h
+llvm%%LLVM_LIB_VER%%/include/llvm/ExecutionEngine/Orc/RTDyldObjectLinkingLayer.h
+llvm%%LLVM_LIB_VER%%/include/llvm/ExecutionEngine/Orc/RawByteChannel.h
+llvm%%LLVM_LIB_VER%%/include/llvm/ExecutionEngine/Orc/RemoteObjectLayer.h
+llvm%%LLVM_LIB_VER%%/include/llvm/ExecutionEngine/Orc/SymbolStringPool.h
+llvm%%LLVM_LIB_VER%%/include/llvm/ExecutionEngine/OrcMCJITReplacement.h
+llvm%%LLVM_LIB_VER%%/include/llvm/ExecutionEngine/RTDyldMemoryManager.h
+llvm%%LLVM_LIB_VER%%/include/llvm/ExecutionEngine/RuntimeDyld.h
+llvm%%LLVM_LIB_VER%%/include/llvm/ExecutionEngine/RuntimeDyldChecker.h
+llvm%%LLVM_LIB_VER%%/include/llvm/ExecutionEngine/SectionMemoryManager.h
+llvm%%LLVM_LIB_VER%%/include/llvm/FuzzMutate/FuzzerCLI.h
+llvm%%LLVM_LIB_VER%%/include/llvm/FuzzMutate/IRMutator.h
+llvm%%LLVM_LIB_VER%%/include/llvm/FuzzMutate/OpDescriptor.h
+llvm%%LLVM_LIB_VER%%/include/llvm/FuzzMutate/Operations.h
+llvm%%LLVM_LIB_VER%%/include/llvm/FuzzMutate/Random.h
+llvm%%LLVM_LIB_VER%%/include/llvm/FuzzMutate/RandomIRBuilder.h
+llvm%%LLVM_LIB_VER%%/include/llvm/IR/Argument.h
+llvm%%LLVM_LIB_VER%%/include/llvm/IR/AssemblyAnnotationWriter.h
+llvm%%LLVM_LIB_VER%%/include/llvm/IR/Attributes.gen
+llvm%%LLVM_LIB_VER%%/include/llvm/IR/Attributes.h
+llvm%%LLVM_LIB_VER%%/include/llvm/IR/Attributes.td
+llvm%%LLVM_LIB_VER%%/include/llvm/IR/AutoUpgrade.h
+llvm%%LLVM_LIB_VER%%/include/llvm/IR/BasicBlock.h
+llvm%%LLVM_LIB_VER%%/include/llvm/IR/CFG.h
+llvm%%LLVM_LIB_VER%%/include/llvm/IR/CallSite.h
+llvm%%LLVM_LIB_VER%%/include/llvm/IR/CallingConv.h
+llvm%%LLVM_LIB_VER%%/include/llvm/IR/Comdat.h
+llvm%%LLVM_LIB_VER%%/include/llvm/IR/Constant.h
+llvm%%LLVM_LIB_VER%%/include/llvm/IR/ConstantFolder.h
+llvm%%LLVM_LIB_VER%%/include/llvm/IR/ConstantRange.h
+llvm%%LLVM_LIB_VER%%/include/llvm/IR/Constants.h
+llvm%%LLVM_LIB_VER%%/include/llvm/IR/DIBuilder.h
+llvm%%LLVM_LIB_VER%%/include/llvm/IR/DataLayout.h
+llvm%%LLVM_LIB_VER%%/include/llvm/IR/DebugInfo.h
+llvm%%LLVM_LIB_VER%%/include/llvm/IR/DebugInfoFlags.def
+llvm%%LLVM_LIB_VER%%/include/llvm/IR/DebugInfoMetadata.h
+llvm%%LLVM_LIB_VER%%/include/llvm/IR/DebugLoc.h
+llvm%%LLVM_LIB_VER%%/include/llvm/IR/DerivedTypes.h
+llvm%%LLVM_LIB_VER%%/include/llvm/IR/DerivedUser.h
+llvm%%LLVM_LIB_VER%%/include/llvm/IR/DiagnosticHandler.h
+llvm%%LLVM_LIB_VER%%/include/llvm/IR/DiagnosticInfo.h
+llvm%%LLVM_LIB_VER%%/include/llvm/IR/DiagnosticPrinter.h
+llvm%%LLVM_LIB_VER%%/include/llvm/IR/Dominators.h
+llvm%%LLVM_LIB_VER%%/include/llvm/IR/Function.h
+llvm%%LLVM_LIB_VER%%/include/llvm/IR/GVMaterializer.h
+llvm%%LLVM_LIB_VER%%/include/llvm/IR/GetElementPtrTypeIterator.h
+llvm%%LLVM_LIB_VER%%/include/llvm/IR/GlobalAlias.h
+llvm%%LLVM_LIB_VER%%/include/llvm/IR/GlobalIFunc.h
+llvm%%LLVM_LIB_VER%%/include/llvm/IR/GlobalIndirectSymbol.h
+llvm%%LLVM_LIB_VER%%/include/llvm/IR/GlobalObject.h
+llvm%%LLVM_LIB_VER%%/include/llvm/IR/GlobalValue.h
+llvm%%LLVM_LIB_VER%%/include/llvm/IR/GlobalVariable.h
+llvm%%LLVM_LIB_VER%%/include/llvm/IR/IRBuilder.h
+llvm%%LLVM_LIB_VER%%/include/llvm/IR/IRPrintingPasses.h
+llvm%%LLVM_LIB_VER%%/include/llvm/IR/InlineAsm.h
+llvm%%LLVM_LIB_VER%%/include/llvm/IR/InstIterator.h
+llvm%%LLVM_LIB_VER%%/include/llvm/IR/InstVisitor.h
+llvm%%LLVM_LIB_VER%%/include/llvm/IR/InstrTypes.h
+llvm%%LLVM_LIB_VER%%/include/llvm/IR/Instruction.def
+llvm%%LLVM_LIB_VER%%/include/llvm/IR/Instruction.h
+llvm%%LLVM_LIB_VER%%/include/llvm/IR/Instructions.h
+llvm%%LLVM_LIB_VER%%/include/llvm/IR/IntrinsicInst.h
+llvm%%LLVM_LIB_VER%%/include/llvm/IR/Intrinsics.gen
+llvm%%LLVM_LIB_VER%%/include/llvm/IR/Intrinsics.h
+llvm%%LLVM_LIB_VER%%/include/llvm/IR/Intrinsics.td
+llvm%%LLVM_LIB_VER%%/include/llvm/IR/IntrinsicsAArch64.td
+llvm%%LLVM_LIB_VER%%/include/llvm/IR/IntrinsicsAMDGPU.td
+llvm%%LLVM_LIB_VER%%/include/llvm/IR/IntrinsicsARM.td
+llvm%%LLVM_LIB_VER%%/include/llvm/IR/IntrinsicsBPF.td
+llvm%%LLVM_LIB_VER%%/include/llvm/IR/IntrinsicsHexagon.td
+llvm%%LLVM_LIB_VER%%/include/llvm/IR/IntrinsicsMips.td
+llvm%%LLVM_LIB_VER%%/include/llvm/IR/IntrinsicsNVVM.td
+llvm%%LLVM_LIB_VER%%/include/llvm/IR/IntrinsicsPowerPC.td
+llvm%%LLVM_LIB_VER%%/include/llvm/IR/IntrinsicsSystemZ.td
+llvm%%LLVM_LIB_VER%%/include/llvm/IR/IntrinsicsWebAssembly.td
+llvm%%LLVM_LIB_VER%%/include/llvm/IR/IntrinsicsX86.td
+llvm%%LLVM_LIB_VER%%/include/llvm/IR/IntrinsicsXCore.td
+llvm%%LLVM_LIB_VER%%/include/llvm/IR/LLVMContext.h
+llvm%%LLVM_LIB_VER%%/include/llvm/IR/LegacyPassManager.h
+llvm%%LLVM_LIB_VER%%/include/llvm/IR/LegacyPassManagers.h
+llvm%%LLVM_LIB_VER%%/include/llvm/IR/LegacyPassNameParser.h
+llvm%%LLVM_LIB_VER%%/include/llvm/IR/MDBuilder.h
+llvm%%LLVM_LIB_VER%%/include/llvm/IR/Mangler.h
+llvm%%LLVM_LIB_VER%%/include/llvm/IR/Metadata.def
+llvm%%LLVM_LIB_VER%%/include/llvm/IR/Metadata.h
+llvm%%LLVM_LIB_VER%%/include/llvm/IR/Module.h
+llvm%%LLVM_LIB_VER%%/include/llvm/IR/ModuleSlotTracker.h
+llvm%%LLVM_LIB_VER%%/include/llvm/IR/ModuleSummaryIndex.h
+llvm%%LLVM_LIB_VER%%/include/llvm/IR/ModuleSummaryIndexYAML.h
+llvm%%LLVM_LIB_VER%%/include/llvm/IR/NoFolder.h
+llvm%%LLVM_LIB_VER%%/include/llvm/IR/OperandTraits.h
+llvm%%LLVM_LIB_VER%%/include/llvm/IR/Operator.h
+llvm%%LLVM_LIB_VER%%/include/llvm/IR/OptBisect.h
+llvm%%LLVM_LIB_VER%%/include/llvm/IR/PassManager.h
+llvm%%LLVM_LIB_VER%%/include/llvm/IR/PassManagerInternal.h
+llvm%%LLVM_LIB_VER%%/include/llvm/IR/PatternMatch.h
+llvm%%LLVM_LIB_VER%%/include/llvm/IR/PredIteratorCache.h
+llvm%%LLVM_LIB_VER%%/include/llvm/IR/ProfileSummary.h
+llvm%%LLVM_LIB_VER%%/include/llvm/IR/SafepointIRVerifier.h
+llvm%%LLVM_LIB_VER%%/include/llvm/IR/Statepoint.h
+llvm%%LLVM_LIB_VER%%/include/llvm/IR/SymbolTableListTraits.h
+llvm%%LLVM_LIB_VER%%/include/llvm/IR/TrackingMDRef.h
+llvm%%LLVM_LIB_VER%%/include/llvm/IR/Type.h
+llvm%%LLVM_LIB_VER%%/include/llvm/IR/TypeBuilder.h
+llvm%%LLVM_LIB_VER%%/include/llvm/IR/TypeFinder.h
+llvm%%LLVM_LIB_VER%%/include/llvm/IR/Use.h
+llvm%%LLVM_LIB_VER%%/include/llvm/IR/UseListOrder.h
+llvm%%LLVM_LIB_VER%%/include/llvm/IR/User.h
+llvm%%LLVM_LIB_VER%%/include/llvm/IR/Value.def
+llvm%%LLVM_LIB_VER%%/include/llvm/IR/Value.h
+llvm%%LLVM_LIB_VER%%/include/llvm/IR/ValueHandle.h
+llvm%%LLVM_LIB_VER%%/include/llvm/IR/ValueMap.h
+llvm%%LLVM_LIB_VER%%/include/llvm/IR/ValueSymbolTable.h
+llvm%%LLVM_LIB_VER%%/include/llvm/IR/Verifier.h
+llvm%%LLVM_LIB_VER%%/include/llvm/IRReader/IRReader.h
+llvm%%LLVM_LIB_VER%%/include/llvm/InitializePasses.h
+llvm%%LLVM_LIB_VER%%/include/llvm/LTO/Caching.h
+llvm%%LLVM_LIB_VER%%/include/llvm/LTO/Config.h
+llvm%%LLVM_LIB_VER%%/include/llvm/LTO/LTO.h
+llvm%%LLVM_LIB_VER%%/include/llvm/LTO/LTOBackend.h
+llvm%%LLVM_LIB_VER%%/include/llvm/LTO/legacy/LTOCodeGenerator.h
+llvm%%LLVM_LIB_VER%%/include/llvm/LTO/legacy/LTOModule.h
+llvm%%LLVM_LIB_VER%%/include/llvm/LTO/legacy/ThinLTOCodeGenerator.h
+llvm%%LLVM_LIB_VER%%/include/llvm/LTO/legacy/UpdateCompilerUsed.h
+llvm%%LLVM_LIB_VER%%/include/llvm/LineEditor/LineEditor.h
+llvm%%LLVM_LIB_VER%%/include/llvm/LinkAllIR.h
+llvm%%LLVM_LIB_VER%%/include/llvm/LinkAllPasses.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Linker/IRMover.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Linker/Linker.h
+llvm%%LLVM_LIB_VER%%/include/llvm/MC/ConstantPools.h
+llvm%%LLVM_LIB_VER%%/include/llvm/MC/LaneBitmask.h
+llvm%%LLVM_LIB_VER%%/include/llvm/MC/MCAsmBackend.h
+llvm%%LLVM_LIB_VER%%/include/llvm/MC/MCAsmInfo.h
+llvm%%LLVM_LIB_VER%%/include/llvm/MC/MCAsmInfoCOFF.h
+llvm%%LLVM_LIB_VER%%/include/llvm/MC/MCAsmInfoDarwin.h
+llvm%%LLVM_LIB_VER%%/include/llvm/MC/MCAsmInfoELF.h
+llvm%%LLVM_LIB_VER%%/include/llvm/MC/MCAsmInfoWasm.h
+llvm%%LLVM_LIB_VER%%/include/llvm/MC/MCAsmLayout.h
+llvm%%LLVM_LIB_VER%%/include/llvm/MC/MCAsmMacro.h
+llvm%%LLVM_LIB_VER%%/include/llvm/MC/MCAssembler.h
+llvm%%LLVM_LIB_VER%%/include/llvm/MC/MCCodeEmitter.h
+llvm%%LLVM_LIB_VER%%/include/llvm/MC/MCCodePadder.h
+llvm%%LLVM_LIB_VER%%/include/llvm/MC/MCCodeView.h
+llvm%%LLVM_LIB_VER%%/include/llvm/MC/MCContext.h
+llvm%%LLVM_LIB_VER%%/include/llvm/MC/MCDirectives.h
+llvm%%LLVM_LIB_VER%%/include/llvm/MC/MCDisassembler/MCDisassembler.h
+llvm%%LLVM_LIB_VER%%/include/llvm/MC/MCDisassembler/MCExternalSymbolizer.h
+llvm%%LLVM_LIB_VER%%/include/llvm/MC/MCDisassembler/MCRelocationInfo.h
+llvm%%LLVM_LIB_VER%%/include/llvm/MC/MCDisassembler/MCSymbolizer.h
+llvm%%LLVM_LIB_VER%%/include/llvm/MC/MCDwarf.h
+llvm%%LLVM_LIB_VER%%/include/llvm/MC/MCELFObjectWriter.h
+llvm%%LLVM_LIB_VER%%/include/llvm/MC/MCELFStreamer.h
+llvm%%LLVM_LIB_VER%%/include/llvm/MC/MCExpr.h
+llvm%%LLVM_LIB_VER%%/include/llvm/MC/MCFixedLenDisassembler.h
+llvm%%LLVM_LIB_VER%%/include/llvm/MC/MCFixup.h
+llvm%%LLVM_LIB_VER%%/include/llvm/MC/MCFixupKindInfo.h
+llvm%%LLVM_LIB_VER%%/include/llvm/MC/MCFragment.h
+llvm%%LLVM_LIB_VER%%/include/llvm/MC/MCInst.h
+llvm%%LLVM_LIB_VER%%/include/llvm/MC/MCInstBuilder.h
+llvm%%LLVM_LIB_VER%%/include/llvm/MC/MCInstPrinter.h
+llvm%%LLVM_LIB_VER%%/include/llvm/MC/MCInstrAnalysis.h
+llvm%%LLVM_LIB_VER%%/include/llvm/MC/MCInstrDesc.h
+llvm%%LLVM_LIB_VER%%/include/llvm/MC/MCInstrInfo.h
+llvm%%LLVM_LIB_VER%%/include/llvm/MC/MCInstrItineraries.h
+llvm%%LLVM_LIB_VER%%/include/llvm/MC/MCLabel.h
+llvm%%LLVM_LIB_VER%%/include/llvm/MC/MCLinkerOptimizationHint.h
+llvm%%LLVM_LIB_VER%%/include/llvm/MC/MCMachObjectWriter.h
+llvm%%LLVM_LIB_VER%%/include/llvm/MC/MCObjectFileInfo.h
+llvm%%LLVM_LIB_VER%%/include/llvm/MC/MCObjectStreamer.h
+llvm%%LLVM_LIB_VER%%/include/llvm/MC/MCObjectWriter.h
+llvm%%LLVM_LIB_VER%%/include/llvm/MC/MCParser/AsmCond.h
+llvm%%LLVM_LIB_VER%%/include/llvm/MC/MCParser/AsmLexer.h
+llvm%%LLVM_LIB_VER%%/include/llvm/MC/MCParser/MCAsmLexer.h
+llvm%%LLVM_LIB_VER%%/include/llvm/MC/MCParser/MCAsmParser.h
+llvm%%LLVM_LIB_VER%%/include/llvm/MC/MCParser/MCAsmParserExtension.h
+llvm%%LLVM_LIB_VER%%/include/llvm/MC/MCParser/MCAsmParserUtils.h
+llvm%%LLVM_LIB_VER%%/include/llvm/MC/MCParser/MCParsedAsmOperand.h
+llvm%%LLVM_LIB_VER%%/include/llvm/MC/MCParser/MCTargetAsmParser.h
+llvm%%LLVM_LIB_VER%%/include/llvm/MC/MCRegisterInfo.h
+llvm%%LLVM_LIB_VER%%/include/llvm/MC/MCSchedule.h
+llvm%%LLVM_LIB_VER%%/include/llvm/MC/MCSection.h
+llvm%%LLVM_LIB_VER%%/include/llvm/MC/MCSectionCOFF.h
+llvm%%LLVM_LIB_VER%%/include/llvm/MC/MCSectionELF.h
+llvm%%LLVM_LIB_VER%%/include/llvm/MC/MCSectionMachO.h
+llvm%%LLVM_LIB_VER%%/include/llvm/MC/MCSectionWasm.h
+llvm%%LLVM_LIB_VER%%/include/llvm/MC/MCStreamer.h
+llvm%%LLVM_LIB_VER%%/include/llvm/MC/MCSubtargetInfo.h
+llvm%%LLVM_LIB_VER%%/include/llvm/MC/MCSymbol.h
+llvm%%LLVM_LIB_VER%%/include/llvm/MC/MCSymbolCOFF.h
+llvm%%LLVM_LIB_VER%%/include/llvm/MC/MCSymbolELF.h
+llvm%%LLVM_LIB_VER%%/include/llvm/MC/MCSymbolMachO.h
+llvm%%LLVM_LIB_VER%%/include/llvm/MC/MCSymbolWasm.h
+llvm%%LLVM_LIB_VER%%/include/llvm/MC/MCTargetOptions.h
+llvm%%LLVM_LIB_VER%%/include/llvm/MC/MCTargetOptionsCommandFlags.def
+llvm%%LLVM_LIB_VER%%/include/llvm/MC/MCValue.h
+llvm%%LLVM_LIB_VER%%/include/llvm/MC/MCWasmObjectWriter.h
+llvm%%LLVM_LIB_VER%%/include/llvm/MC/MCWasmStreamer.h
+llvm%%LLVM_LIB_VER%%/include/llvm/MC/MCWin64EH.h
+llvm%%LLVM_LIB_VER%%/include/llvm/MC/MCWinCOFFObjectWriter.h
+llvm%%LLVM_LIB_VER%%/include/llvm/MC/MCWinCOFFStreamer.h
+llvm%%LLVM_LIB_VER%%/include/llvm/MC/MCWinEH.h
+llvm%%LLVM_LIB_VER%%/include/llvm/MC/MachineLocation.h
+llvm%%LLVM_LIB_VER%%/include/llvm/MC/SectionKind.h
+llvm%%LLVM_LIB_VER%%/include/llvm/MC/StringTableBuilder.h
+llvm%%LLVM_LIB_VER%%/include/llvm/MC/SubtargetFeature.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Object/Archive.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Object/ArchiveWriter.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Object/Binary.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Object/COFF.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Object/COFFImportFile.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Object/COFFModuleDefinition.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Object/Decompressor.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Object/ELF.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Object/ELFObjectFile.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Object/ELFTypes.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Object/Error.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Object/IRObjectFile.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Object/IRSymtab.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Object/MachO.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Object/MachOUniversal.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Object/ModuleSymbolTable.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Object/ObjectFile.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Object/RelocVisitor.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Object/StackMapParser.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Object/SymbolSize.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Object/SymbolicFile.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Object/Wasm.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Object/WindowsResource.h
+llvm%%LLVM_LIB_VER%%/include/llvm/ObjectYAML/COFFYAML.h
+llvm%%LLVM_LIB_VER%%/include/llvm/ObjectYAML/CodeViewYAMLDebugSections.h
+llvm%%LLVM_LIB_VER%%/include/llvm/ObjectYAML/CodeViewYAMLSymbols.h
+llvm%%LLVM_LIB_VER%%/include/llvm/ObjectYAML/CodeViewYAMLTypeHashing.h
+llvm%%LLVM_LIB_VER%%/include/llvm/ObjectYAML/CodeViewYAMLTypes.h
+llvm%%LLVM_LIB_VER%%/include/llvm/ObjectYAML/DWARFEmitter.h
+llvm%%LLVM_LIB_VER%%/include/llvm/ObjectYAML/DWARFYAML.h
+llvm%%LLVM_LIB_VER%%/include/llvm/ObjectYAML/ELFYAML.h
+llvm%%LLVM_LIB_VER%%/include/llvm/ObjectYAML/MachOYAML.h
+llvm%%LLVM_LIB_VER%%/include/llvm/ObjectYAML/ObjectYAML.h
+llvm%%LLVM_LIB_VER%%/include/llvm/ObjectYAML/WasmYAML.h
+llvm%%LLVM_LIB_VER%%/include/llvm/ObjectYAML/YAML.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Option/Arg.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Option/ArgList.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Option/OptParser.td
+llvm%%LLVM_LIB_VER%%/include/llvm/Option/OptSpecifier.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Option/OptTable.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Option/Option.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Pass.h
+llvm%%LLVM_LIB_VER%%/include/llvm/PassAnalysisSupport.h
+llvm%%LLVM_LIB_VER%%/include/llvm/PassInfo.h
+llvm%%LLVM_LIB_VER%%/include/llvm/PassRegistry.h
+llvm%%LLVM_LIB_VER%%/include/llvm/PassSupport.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Passes/PassBuilder.h
+llvm%%LLVM_LIB_VER%%/include/llvm/ProfileData/Coverage/CoverageMapping.h
+llvm%%LLVM_LIB_VER%%/include/llvm/ProfileData/Coverage/CoverageMappingReader.h
+llvm%%LLVM_LIB_VER%%/include/llvm/ProfileData/Coverage/CoverageMappingWriter.h
+llvm%%LLVM_LIB_VER%%/include/llvm/ProfileData/GCOV.h
+llvm%%LLVM_LIB_VER%%/include/llvm/ProfileData/InstrProf.h
+llvm%%LLVM_LIB_VER%%/include/llvm/ProfileData/InstrProfData.inc
+llvm%%LLVM_LIB_VER%%/include/llvm/ProfileData/InstrProfReader.h
+llvm%%LLVM_LIB_VER%%/include/llvm/ProfileData/InstrProfWriter.h
+llvm%%LLVM_LIB_VER%%/include/llvm/ProfileData/ProfileCommon.h
+llvm%%LLVM_LIB_VER%%/include/llvm/ProfileData/SampleProf.h
+llvm%%LLVM_LIB_VER%%/include/llvm/ProfileData/SampleProfReader.h
+llvm%%LLVM_LIB_VER%%/include/llvm/ProfileData/SampleProfWriter.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Support/AArch64TargetParser.def
+llvm%%LLVM_LIB_VER%%/include/llvm/Support/AMDGPUKernelDescriptor.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Support/AMDGPUMetadata.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Support/ARMAttributeParser.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Support/ARMBuildAttributes.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Support/ARMEHABI.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Support/ARMTargetParser.def
+llvm%%LLVM_LIB_VER%%/include/llvm/Support/ARMWinEH.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Support/AlignOf.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Support/Allocator.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Support/ArrayRecycler.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Support/Atomic.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Support/AtomicOrdering.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Support/BinaryByteStream.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Support/BinaryItemStream.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Support/BinaryStream.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Support/BinaryStreamArray.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Support/BinaryStreamError.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Support/BinaryStreamReader.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Support/BinaryStreamRef.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Support/BinaryStreamWriter.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Support/BlockFrequency.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Support/BranchProbability.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Support/CBindingWrapping.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Support/COM.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Support/CachePruning.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Support/Capacity.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Support/Casting.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Support/Chrono.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Support/CodeGen.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Support/CodeGenCWrappers.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Support/CodeGenCoverage.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Support/CommandLine.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Support/Compiler.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Support/Compression.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Support/ConvertUTF.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Support/CrashRecoveryContext.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Support/DOTGraphTraits.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Support/DataExtractor.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Support/DataTypes.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Support/Debug.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Support/DebugCounter.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Support/DynamicLibrary.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Support/Endian.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Support/EndianStream.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Support/Errc.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Support/Errno.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Support/Error.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Support/ErrorHandling.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Support/ErrorOr.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Support/FileOutputBuffer.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Support/FileSystem.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Support/FileUtilities.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Support/Format.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Support/FormatAdapters.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Support/FormatCommon.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Support/FormatProviders.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Support/FormatVariadic.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Support/FormatVariadicDetails.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Support/FormattedStream.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Support/GenericDomTree.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Support/GenericDomTreeConstruction.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Support/GlobPattern.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Support/GraphWriter.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Support/Host.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Support/JamCRC.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Support/KnownBits.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Support/LEB128.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Support/LICENSE.TXT
+llvm%%LLVM_LIB_VER%%/include/llvm/Support/LineIterator.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Support/Locale.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Support/LockFileManager.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Support/LowLevelTypeImpl.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Support/MD5.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Support/ManagedStatic.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Support/MathExtras.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Support/Memory.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Support/MemoryBuffer.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Support/MipsABIFlags.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Support/Mutex.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Support/MutexGuard.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Support/NativeFormatting.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Support/OnDiskHashTable.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Support/Options.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Support/Parallel.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Support/Path.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Support/PluginLoader.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Support/PointerLikeTypeTraits.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Support/PrettyStackTrace.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Support/Printable.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Support/Process.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Support/Program.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Support/RWMutex.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Support/RandomNumberGenerator.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Support/Recycler.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Support/RecyclingAllocator.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Support/Regex.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Support/Registry.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Support/ReverseIteration.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Support/SHA1.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Support/SMLoc.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Support/SaveAndRestore.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Support/ScaledNumber.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Support/ScopedPrinter.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Support/Signals.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Support/Solaris/sys/regset.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Support/SourceMgr.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Support/SpecialCaseList.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Support/StringPool.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Support/StringSaver.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Support/SwapByteOrder.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Support/SystemUtils.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Support/TarWriter.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Support/TargetParser.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Support/TargetRegistry.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Support/TargetSelect.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Support/ThreadLocal.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Support/ThreadPool.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Support/Threading.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Support/Timer.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Support/ToolOutputFile.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Support/TrailingObjects.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Support/TrigramIndex.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Support/TypeName.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Support/Unicode.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Support/UnicodeCharRanges.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Support/UniqueLock.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Support/VCSRevision.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Support/Valgrind.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Support/Watchdog.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Support/Win64EH.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Support/WindowsError.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Support/X86TargetParser.def
+llvm%%LLVM_LIB_VER%%/include/llvm/Support/YAMLParser.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Support/YAMLTraits.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Support/circular_raw_ostream.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Support/raw_os_ostream.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Support/raw_ostream.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Support/raw_sha1_ostream.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Support/thread.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Support/type_traits.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Support/xxhash.h
+llvm%%LLVM_LIB_VER%%/include/llvm/TableGen/Error.h
+llvm%%LLVM_LIB_VER%%/include/llvm/TableGen/Main.h
+llvm%%LLVM_LIB_VER%%/include/llvm/TableGen/Record.h
+llvm%%LLVM_LIB_VER%%/include/llvm/TableGen/SearchableTable.td
+llvm%%LLVM_LIB_VER%%/include/llvm/TableGen/SetTheory.h
+llvm%%LLVM_LIB_VER%%/include/llvm/TableGen/StringMatcher.h
+llvm%%LLVM_LIB_VER%%/include/llvm/TableGen/StringToOffsetTable.h
+llvm%%LLVM_LIB_VER%%/include/llvm/TableGen/TableGenBackend.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Target/GenericOpcodes.td
+llvm%%LLVM_LIB_VER%%/include/llvm/Target/GlobalISel/RegisterBank.td
+llvm%%LLVM_LIB_VER%%/include/llvm/Target/GlobalISel/SelectionDAGCompat.td
+llvm%%LLVM_LIB_VER%%/include/llvm/Target/GlobalISel/Target.td
+llvm%%LLVM_LIB_VER%%/include/llvm/Target/Target.td
+llvm%%LLVM_LIB_VER%%/include/llvm/Target/TargetCallingConv.td
+llvm%%LLVM_LIB_VER%%/include/llvm/Target/TargetIntrinsicInfo.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Target/TargetItinerary.td
+llvm%%LLVM_LIB_VER%%/include/llvm/Target/TargetMachine.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Target/TargetOptions.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Target/TargetSchedule.td
+llvm%%LLVM_LIB_VER%%/include/llvm/Target/TargetSelectionDAG.td
+llvm%%LLVM_LIB_VER%%/include/llvm/Testing/Support/Error.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Testing/Support/SupportHelpers.h
+llvm%%LLVM_LIB_VER%%/include/llvm/ToolDrivers/llvm-dlltool/DlltoolDriver.h
+llvm%%LLVM_LIB_VER%%/include/llvm/ToolDrivers/llvm-lib/LibDriver.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Transforms/Coroutines.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Transforms/GCOVProfiler.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Transforms/IPO.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Transforms/IPO/AlwaysInliner.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Transforms/IPO/ArgumentPromotion.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Transforms/IPO/CalledValuePropagation.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Transforms/IPO/ConstantMerge.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Transforms/IPO/CrossDSOCFI.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Transforms/IPO/DeadArgumentElimination.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Transforms/IPO/ElimAvailExtern.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Transforms/IPO/ForceFunctionAttrs.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Transforms/IPO/FunctionAttrs.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Transforms/IPO/FunctionImport.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Transforms/IPO/GlobalDCE.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Transforms/IPO/GlobalOpt.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Transforms/IPO/GlobalSplit.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Transforms/IPO/InferFunctionAttrs.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Transforms/IPO/Inliner.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Transforms/IPO/Internalize.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Transforms/IPO/LowerTypeTests.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Transforms/IPO/PartialInlining.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Transforms/IPO/PassManagerBuilder.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Transforms/IPO/SCCP.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Transforms/IPO/StripDeadPrototypes.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Transforms/IPO/ThinLTOBitcodeWriter.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Transforms/IPO/WholeProgramDevirt.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Transforms/InstCombine/InstCombine.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Transforms/InstCombine/InstCombineWorklist.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Transforms/InstrProfiling.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Transforms/Instrumentation.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Transforms/Instrumentation/BoundsChecking.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Transforms/ObjCARC.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Transforms/PGOInstrumentation.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Transforms/SampleProfile.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Transforms/Scalar.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Transforms/Scalar/ADCE.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Transforms/Scalar/AlignmentFromAssumptions.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Transforms/Scalar/BDCE.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Transforms/Scalar/CallSiteSplitting.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Transforms/Scalar/ConstantHoisting.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Transforms/Scalar/CorrelatedValuePropagation.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Transforms/Scalar/DCE.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Transforms/Scalar/DeadStoreElimination.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Transforms/Scalar/DivRemPairs.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Transforms/Scalar/EarlyCSE.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Transforms/Scalar/Float2Int.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Transforms/Scalar/GVN.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Transforms/Scalar/GVNExpression.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Transforms/Scalar/GuardWidening.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Transforms/Scalar/IVUsersPrinter.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Transforms/Scalar/IndVarSimplify.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Transforms/Scalar/JumpThreading.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Transforms/Scalar/LICM.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Transforms/Scalar/LoopAccessAnalysisPrinter.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Transforms/Scalar/LoopDataPrefetch.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Transforms/Scalar/LoopDeletion.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Transforms/Scalar/LoopDistribute.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Transforms/Scalar/LoopIdiomRecognize.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Transforms/Scalar/LoopInstSimplify.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Transforms/Scalar/LoopLoadElimination.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Transforms/Scalar/LoopPassManager.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Transforms/Scalar/LoopPredication.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Transforms/Scalar/LoopRotation.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Transforms/Scalar/LoopSimplifyCFG.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Transforms/Scalar/LoopSink.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Transforms/Scalar/LoopStrengthReduce.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Transforms/Scalar/LoopUnrollPass.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Transforms/Scalar/LowerAtomic.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Transforms/Scalar/LowerExpectIntrinsic.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Transforms/Scalar/LowerGuardIntrinsic.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Transforms/Scalar/MemCpyOptimizer.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Transforms/Scalar/MergedLoadStoreMotion.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Transforms/Scalar/NaryReassociate.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Transforms/Scalar/NewGVN.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Transforms/Scalar/PartiallyInlineLibCalls.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Transforms/Scalar/Reassociate.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Transforms/Scalar/RewriteStatepointsForGC.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Transforms/Scalar/SCCP.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Transforms/Scalar/SROA.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Transforms/Scalar/SimpleLoopUnswitch.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Transforms/Scalar/SimplifyCFG.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Transforms/Scalar/Sink.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Transforms/Scalar/SpeculateAroundPHIs.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Transforms/Scalar/SpeculativeExecution.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Transforms/Scalar/TailRecursionElimination.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Transforms/Utils/ASanStackFrameLayout.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Transforms/Utils/AddDiscriminators.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Transforms/Utils/BasicBlockUtils.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Transforms/Utils/BreakCriticalEdges.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Transforms/Utils/BuildLibCalls.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Transforms/Utils/BypassSlowDivision.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Transforms/Utils/CallPromotionUtils.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Transforms/Utils/Cloning.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Transforms/Utils/CodeExtractor.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Transforms/Utils/CtorUtils.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Transforms/Utils/EntryExitInstrumenter.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Transforms/Utils/EscapeEnumerator.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Transforms/Utils/Evaluator.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Transforms/Utils/FunctionComparator.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Transforms/Utils/FunctionImportUtils.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Transforms/Utils/GlobalStatus.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Transforms/Utils/ImportedFunctionsInliningStatistics.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Transforms/Utils/IntegerDivision.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Transforms/Utils/LCSSA.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Transforms/Utils/LibCallsShrinkWrap.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Transforms/Utils/Local.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Transforms/Utils/LoopSimplify.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Transforms/Utils/LoopUtils.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Transforms/Utils/LoopVersioning.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Transforms/Utils/LowerInvoke.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Transforms/Utils/LowerMemIntrinsics.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Transforms/Utils/Mem2Reg.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Transforms/Utils/ModuleUtils.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Transforms/Utils/NameAnonGlobals.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Transforms/Utils/OrderedInstructions.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Transforms/Utils/PredicateInfo.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Transforms/Utils/PromoteMemToReg.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Transforms/Utils/SSAUpdater.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Transforms/Utils/SSAUpdaterImpl.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Transforms/Utils/SanitizerStats.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Transforms/Utils/SimplifyIndVar.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Transforms/Utils/SimplifyInstructions.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Transforms/Utils/SimplifyLibCalls.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Transforms/Utils/SplitModule.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Transforms/Utils/SymbolRewriter.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Transforms/Utils/UnifyFunctionExitNodes.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Transforms/Utils/UnrollLoop.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Transforms/Utils/VNCoercion.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Transforms/Utils/ValueMapper.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Transforms/Vectorize.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Transforms/Vectorize/LoopVectorize.h
+llvm%%LLVM_LIB_VER%%/include/llvm/Transforms/Vectorize/SLPVectorizer.h
+llvm%%LLVM_LIB_VER%%/include/llvm/WindowsManifest/WindowsManifestMerger.h
+llvm%%LLVM_LIB_VER%%/include/llvm/WindowsResource/ResourceProcessor.h
+llvm%%LLVM_LIB_VER%%/include/llvm/WindowsResource/ResourceScriptToken.h
+llvm%%LLVM_LIB_VER%%/include/llvm/WindowsResource/ResourceScriptTokenList.h
+llvm%%LLVM_LIB_VER%%/include/llvm/XRay/Graph.h
+llvm%%LLVM_LIB_VER%%/include/llvm/XRay/InstrumentationMap.h
+llvm%%LLVM_LIB_VER%%/include/llvm/XRay/Trace.h
+llvm%%LLVM_LIB_VER%%/include/llvm/XRay/XRayRecord.h
+llvm%%LLVM_LIB_VER%%/include/llvm/XRay/YAMLXRayRecord.h
+%%COMPILER_RT%%llvm%%LLVM_LIB_VER%%/include/sanitizer/allocator_interface.h
+%%COMPILER_RT%%llvm%%LLVM_LIB_VER%%/include/sanitizer/asan_interface.h
+%%COMPILER_RT%%llvm%%LLVM_LIB_VER%%/include/sanitizer/common_interface_defs.h
+%%COMPILER_RT%%llvm%%LLVM_LIB_VER%%/include/sanitizer/coverage_interface.h
+%%COMPILER_RT%%llvm%%LLVM_LIB_VER%%/include/sanitizer/dfsan_interface.h
+%%COMPILER_RT%%llvm%%LLVM_LIB_VER%%/include/sanitizer/esan_interface.h
+%%COMPILER_RT%%llvm%%LLVM_LIB_VER%%/include/sanitizer/hwasan_interface.h
+%%COMPILER_RT%%llvm%%LLVM_LIB_VER%%/include/sanitizer/linux_syscall_hooks.h
+%%COMPILER_RT%%llvm%%LLVM_LIB_VER%%/include/sanitizer/lsan_interface.h
+%%COMPILER_RT%%llvm%%LLVM_LIB_VER%%/include/sanitizer/msan_interface.h
+%%COMPILER_RT%%llvm%%LLVM_LIB_VER%%/include/sanitizer/scudo_interface.h
+%%COMPILER_RT%%llvm%%LLVM_LIB_VER%%/include/sanitizer/tsan_interface.h
+%%COMPILER_RT%%llvm%%LLVM_LIB_VER%%/include/sanitizer/tsan_interface_atomic.h
+%%COMPILER_RT%%llvm%%LLVM_LIB_VER%%/include/xray/xray_interface.h
+%%COMPILER_RT%%llvm%%LLVM_LIB_VER%%/include/xray/xray_log_interface.h
+llvm%%LLVM_LIB_VER%%/lib/BugpointPasses.so
+llvm%%LLVM_LIB_VER%%/lib/LLVMHello.so
+%%GOLD%%llvm%%LLVM_LIB_VER%%/lib/LLVMgold.so
+%%CLANG%%llvm%%LLVM_LIB_VER%%/lib/clang/%%LLVM_RELEASE%%/include/__clang_cuda_builtin_vars.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/lib/clang/%%LLVM_RELEASE%%/include/__clang_cuda_cmath.h
+%%CLANG%%%%OPENMP%%llvm%%LLVM_LIB_VER%%/lib/clang/%%LLVM_RELEASE%%/include/__clang_cuda_complex_builtins.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/lib/clang/%%LLVM_RELEASE%%/include/__clang_cuda_intrinsics.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/lib/clang/%%LLVM_RELEASE%%/include/__clang_cuda_math_forward_declares.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/lib/clang/%%LLVM_RELEASE%%/include/__clang_cuda_runtime_wrapper.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/lib/clang/%%LLVM_RELEASE%%/include/__stddef_max_align_t.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/lib/clang/%%LLVM_RELEASE%%/include/__wmmintrin_aes.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/lib/clang/%%LLVM_RELEASE%%/include/__wmmintrin_pclmul.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/lib/clang/%%LLVM_RELEASE%%/include/adxintrin.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/lib/clang/%%LLVM_RELEASE%%/include/altivec.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/lib/clang/%%LLVM_RELEASE%%/include/ammintrin.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/lib/clang/%%LLVM_RELEASE%%/include/arm64intr.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/lib/clang/%%LLVM_RELEASE%%/include/arm_acle.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/lib/clang/%%LLVM_RELEASE%%/include/arm_neon.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/lib/clang/%%LLVM_RELEASE%%/include/armintr.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/lib/clang/%%LLVM_RELEASE%%/include/avx2intrin.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/lib/clang/%%LLVM_RELEASE%%/include/avx512bitalgintrin.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/lib/clang/%%LLVM_RELEASE%%/include/avx512bwintrin.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/lib/clang/%%LLVM_RELEASE%%/include/avx512cdintrin.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/lib/clang/%%LLVM_RELEASE%%/include/avx512dqintrin.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/lib/clang/%%LLVM_RELEASE%%/include/avx512erintrin.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/lib/clang/%%LLVM_RELEASE%%/include/avx512fintrin.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/lib/clang/%%LLVM_RELEASE%%/include/avx512ifmaintrin.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/lib/clang/%%LLVM_RELEASE%%/include/avx512ifmavlintrin.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/lib/clang/%%LLVM_RELEASE%%/include/avx512pfintrin.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/lib/clang/%%LLVM_RELEASE%%/include/avx512vbmi2intrin.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/lib/clang/%%LLVM_RELEASE%%/include/avx512vbmiintrin.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/lib/clang/%%LLVM_RELEASE%%/include/avx512vbmivlintrin.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/lib/clang/%%LLVM_RELEASE%%/include/avx512vlbitalgintrin.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/lib/clang/%%LLVM_RELEASE%%/include/avx512vlbwintrin.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/lib/clang/%%LLVM_RELEASE%%/include/avx512vlcdintrin.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/lib/clang/%%LLVM_RELEASE%%/include/avx512vldqintrin.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/lib/clang/%%LLVM_RELEASE%%/include/avx512vlintrin.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/lib/clang/%%LLVM_RELEASE%%/include/avx512vlvbmi2intrin.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/lib/clang/%%LLVM_RELEASE%%/include/avx512vlvnniintrin.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/lib/clang/%%LLVM_RELEASE%%/include/avx512vnniintrin.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/lib/clang/%%LLVM_RELEASE%%/include/avx512vpopcntdqintrin.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/lib/clang/%%LLVM_RELEASE%%/include/avx512vpopcntdqvlintrin.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/lib/clang/%%LLVM_RELEASE%%/include/avxintrin.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/lib/clang/%%LLVM_RELEASE%%/include/bmi2intrin.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/lib/clang/%%LLVM_RELEASE%%/include/bmiintrin.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/lib/clang/%%LLVM_RELEASE%%/include/cetintrin.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/lib/clang/%%LLVM_RELEASE%%/include/clflushoptintrin.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/lib/clang/%%LLVM_RELEASE%%/include/clwbintrin.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/lib/clang/%%LLVM_RELEASE%%/include/clzerointrin.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/lib/clang/%%LLVM_RELEASE%%/include/cpuid.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/lib/clang/%%LLVM_RELEASE%%/include/cuda_wrappers/algorithm
+%%CLANG%%%%OPENMP%%llvm%%LLVM_LIB_VER%%/lib/clang/%%LLVM_RELEASE%%/include/cuda_wrappers/complex
+%%CLANG%%llvm%%LLVM_LIB_VER%%/lib/clang/%%LLVM_RELEASE%%/include/cuda_wrappers/new
+%%CLANG%%llvm%%LLVM_LIB_VER%%/lib/clang/%%LLVM_RELEASE%%/include/emmintrin.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/lib/clang/%%LLVM_RELEASE%%/include/f16cintrin.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/lib/clang/%%LLVM_RELEASE%%/include/float.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/lib/clang/%%LLVM_RELEASE%%/include/fma4intrin.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/lib/clang/%%LLVM_RELEASE%%/include/fmaintrin.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/lib/clang/%%LLVM_RELEASE%%/include/fxsrintrin.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/lib/clang/%%LLVM_RELEASE%%/include/gfniintrin.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/lib/clang/%%LLVM_RELEASE%%/include/htmintrin.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/lib/clang/%%LLVM_RELEASE%%/include/htmxlintrin.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/lib/clang/%%LLVM_RELEASE%%/include/ia32intrin.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/lib/clang/%%LLVM_RELEASE%%/include/immintrin.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/lib/clang/%%LLVM_RELEASE%%/include/intrin.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/lib/clang/%%LLVM_RELEASE%%/include/inttypes.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/lib/clang/%%LLVM_RELEASE%%/include/iso646.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/lib/clang/%%LLVM_RELEASE%%/include/lwpintrin.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/lib/clang/%%LLVM_RELEASE%%/include/lzcntintrin.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/lib/clang/%%LLVM_RELEASE%%/include/mm3dnow.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/lib/clang/%%LLVM_RELEASE%%/include/mm_malloc.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/lib/clang/%%LLVM_RELEASE%%/include/mmintrin.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/lib/clang/%%LLVM_RELEASE%%/include/module.modulemap
+%%CLANG%%llvm%%LLVM_LIB_VER%%/lib/clang/%%LLVM_RELEASE%%/include/msa.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/lib/clang/%%LLVM_RELEASE%%/include/mwaitxintrin.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/lib/clang/%%LLVM_RELEASE%%/include/nmmintrin.h
+%%OPENMP%%llvm%%LLVM_LIB_VER%%/lib/clang/%%LLVM_RELEASE%%/include/omp.h
+%%OPENMP%%llvm%%LLVM_LIB_VER%%/lib/clang/%%LLVM_RELEASE%%/include/ompt.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/lib/clang/%%LLVM_RELEASE%%/include/opencl-c.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/lib/clang/%%LLVM_RELEASE%%/include/pkuintrin.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/lib/clang/%%LLVM_RELEASE%%/include/pmmintrin.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/lib/clang/%%LLVM_RELEASE%%/include/popcntintrin.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/lib/clang/%%LLVM_RELEASE%%/include/prfchwintrin.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/lib/clang/%%LLVM_RELEASE%%/include/rdseedintrin.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/lib/clang/%%LLVM_RELEASE%%/include/rtmintrin.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/lib/clang/%%LLVM_RELEASE%%/include/s390intrin.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/lib/clang/%%LLVM_RELEASE%%/include/shaintrin.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/lib/clang/%%LLVM_RELEASE%%/include/smmintrin.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/lib/clang/%%LLVM_RELEASE%%/include/tbmintrin.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/lib/clang/%%LLVM_RELEASE%%/include/tgmath.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/lib/clang/%%LLVM_RELEASE%%/include/tmmintrin.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/lib/clang/%%LLVM_RELEASE%%/include/unwind.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/lib/clang/%%LLVM_RELEASE%%/include/vadefs.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/lib/clang/%%LLVM_RELEASE%%/include/vaesintrin.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/lib/clang/%%LLVM_RELEASE%%/include/vecintrin.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/lib/clang/%%LLVM_RELEASE%%/include/vpclmulqdqintrin.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/lib/clang/%%LLVM_RELEASE%%/include/wmmintrin.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/lib/clang/%%LLVM_RELEASE%%/include/x86intrin.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/lib/clang/%%LLVM_RELEASE%%/include/xmmintrin.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/lib/clang/%%LLVM_RELEASE%%/include/xopintrin.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/lib/clang/%%LLVM_RELEASE%%/include/xsavecintrin.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/lib/clang/%%LLVM_RELEASE%%/include/xsaveintrin.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/lib/clang/%%LLVM_RELEASE%%/include/xsaveoptintrin.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/lib/clang/%%LLVM_RELEASE%%/include/xsavesintrin.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/lib/clang/%%LLVM_RELEASE%%/include/xtestintrin.h
+%%CLANG%%llvm%%LLVM_LIB_VER%%/lib/cmake/clang/ClangConfig.cmake
+%%CLANG%%llvm%%LLVM_LIB_VER%%/lib/cmake/clang/ClangTargets-%%CMAKE_BUILD_TYPE%%.cmake
+%%CLANG%%llvm%%LLVM_LIB_VER%%/lib/cmake/clang/ClangTargets.cmake
+llvm%%LLVM_LIB_VER%%/lib/cmake/llvm/AddLLVM.cmake
+llvm%%LLVM_LIB_VER%%/lib/cmake/llvm/AddLLVMDefinitions.cmake
+llvm%%LLVM_LIB_VER%%/lib/cmake/llvm/AddOCaml.cmake
+llvm%%LLVM_LIB_VER%%/lib/cmake/llvm/AddSphinxTarget.cmake
+llvm%%LLVM_LIB_VER%%/lib/cmake/llvm/CheckAtomic.cmake
+%%OPENMP%%llvm%%LLVM_LIB_VER%%/lib/cmake/llvm/CheckCompilerVersion.cmake
+llvm%%LLVM_LIB_VER%%/lib/cmake/llvm/CheckLinkerFlag.cmake
+llvm%%LLVM_LIB_VER%%/lib/cmake/llvm/ChooseMSVCCRT.cmake
+%%OPENMP%%llvm%%LLVM_LIB_VER%%/lib/cmake/llvm/CrossCompile.cmake
+%%OPENMP%%llvm%%LLVM_LIB_VER%%/lib/cmake/llvm/DetermineGCCCompatible.cmake
+llvm%%LLVM_LIB_VER%%/lib/cmake/llvm/FindOCaml.cmake
+llvm%%LLVM_LIB_VER%%/lib/cmake/llvm/FindSphinx.cmake
+llvm%%LLVM_LIB_VER%%/lib/cmake/llvm/GenerateVersionFromCVS.cmake
+llvm%%LLVM_LIB_VER%%/lib/cmake/llvm/GetSVN.cmake
+llvm%%LLVM_LIB_VER%%/lib/cmake/llvm/HandleLLVMOptions.cmake
+llvm%%LLVM_LIB_VER%%/lib/cmake/llvm/HandleLLVMStdlib.cmake
+llvm%%LLVM_LIB_VER%%/lib/cmake/llvm/LLVM-Config.cmake
+llvm%%LLVM_LIB_VER%%/lib/cmake/llvm/LLVMConfig.cmake
+llvm%%LLVM_LIB_VER%%/lib/cmake/llvm/LLVMConfigVersion.cmake
+llvm%%LLVM_LIB_VER%%/lib/cmake/llvm/LLVMExports-%%CMAKE_BUILD_TYPE%%.cmake
+llvm%%LLVM_LIB_VER%%/lib/cmake/llvm/LLVMExports.cmake
+llvm%%LLVM_LIB_VER%%/lib/cmake/llvm/LLVMExternalProjectUtils.cmake
+llvm%%LLVM_LIB_VER%%/lib/cmake/llvm/LLVMInstallSymlink.cmake
+llvm%%LLVM_LIB_VER%%/lib/cmake/llvm/LLVMProcessSources.cmake
+llvm%%LLVM_LIB_VER%%/lib/cmake/llvm/TableGen.cmake
+llvm%%LLVM_LIB_VER%%/lib/cmake/llvm/VersionFromVCS.cmake
+llvm%%LLVM_LIB_VER%%/lib/libLLVM-%%LLVM_MAJOR%%.so
+llvm%%LLVM_LIB_VER%%/lib/libLLVM-%%LLVM_RELEASE%%.so
+llvm%%LLVM_LIB_VER%%/lib/libLLVM.so
+llvm%%LLVM_LIB_VER%%/lib/libLLVMAArch64AsmParser.a
+llvm%%LLVM_LIB_VER%%/lib/libLLVMAArch64AsmPrinter.a
+llvm%%LLVM_LIB_VER%%/lib/libLLVMAArch64CodeGen.a
+llvm%%LLVM_LIB_VER%%/lib/libLLVMAArch64Desc.a
+llvm%%LLVM_LIB_VER%%/lib/libLLVMAArch64Disassembler.a
+llvm%%LLVM_LIB_VER%%/lib/libLLVMAArch64Info.a
+llvm%%LLVM_LIB_VER%%/lib/libLLVMAArch64Utils.a
+llvm%%LLVM_LIB_VER%%/lib/libLLVMAMDGPUAsmParser.a
+llvm%%LLVM_LIB_VER%%/lib/libLLVMAMDGPUAsmPrinter.a
+llvm%%LLVM_LIB_VER%%/lib/libLLVMAMDGPUCodeGen.a
+llvm%%LLVM_LIB_VER%%/lib/libLLVMAMDGPUDesc.a
+llvm%%LLVM_LIB_VER%%/lib/libLLVMAMDGPUDisassembler.a
+llvm%%LLVM_LIB_VER%%/lib/libLLVMAMDGPUInfo.a
+llvm%%LLVM_LIB_VER%%/lib/libLLVMAMDGPUUtils.a
+llvm%%LLVM_LIB_VER%%/lib/libLLVMARMAsmParser.a
+llvm%%LLVM_LIB_VER%%/lib/libLLVMARMAsmPrinter.a
+llvm%%LLVM_LIB_VER%%/lib/libLLVMARMCodeGen.a
+llvm%%LLVM_LIB_VER%%/lib/libLLVMARMDesc.a
+llvm%%LLVM_LIB_VER%%/lib/libLLVMARMDisassembler.a
+llvm%%LLVM_LIB_VER%%/lib/libLLVMARMInfo.a
+llvm%%LLVM_LIB_VER%%/lib/libLLVMARMUtils.a
+llvm%%LLVM_LIB_VER%%/lib/libLLVMAnalysis.a
+llvm%%LLVM_LIB_VER%%/lib/libLLVMAsmParser.a
+llvm%%LLVM_LIB_VER%%/lib/libLLVMAsmPrinter.a
+llvm%%LLVM_LIB_VER%%/lib/libLLVMBPFAsmParser.a
+llvm%%LLVM_LIB_VER%%/lib/libLLVMBPFAsmPrinter.a
+llvm%%LLVM_LIB_VER%%/lib/libLLVMBPFCodeGen.a
+llvm%%LLVM_LIB_VER%%/lib/libLLVMBPFDesc.a
+llvm%%LLVM_LIB_VER%%/lib/libLLVMBPFDisassembler.a
+llvm%%LLVM_LIB_VER%%/lib/libLLVMBPFInfo.a
+llvm%%LLVM_LIB_VER%%/lib/libLLVMBinaryFormat.a
+llvm%%LLVM_LIB_VER%%/lib/libLLVMBitReader.a
+llvm%%LLVM_LIB_VER%%/lib/libLLVMBitWriter.a
+llvm%%LLVM_LIB_VER%%/lib/libLLVMCodeGen.a
+llvm%%LLVM_LIB_VER%%/lib/libLLVMCore.a
+llvm%%LLVM_LIB_VER%%/lib/libLLVMCoroutines.a
+llvm%%LLVM_LIB_VER%%/lib/libLLVMCoverage.a
+llvm%%LLVM_LIB_VER%%/lib/libLLVMDebugInfoCodeView.a
+llvm%%LLVM_LIB_VER%%/lib/libLLVMDebugInfoDWARF.a
+llvm%%LLVM_LIB_VER%%/lib/libLLVMDebugInfoMSF.a
+llvm%%LLVM_LIB_VER%%/lib/libLLVMDebugInfoPDB.a
+llvm%%LLVM_LIB_VER%%/lib/libLLVMDemangle.a
+llvm%%LLVM_LIB_VER%%/lib/libLLVMDlltoolDriver.a
+llvm%%LLVM_LIB_VER%%/lib/libLLVMExecutionEngine.a
+llvm%%LLVM_LIB_VER%%/lib/libLLVMFuzzMutate.a
+llvm%%LLVM_LIB_VER%%/lib/libLLVMGlobalISel.a
+llvm%%LLVM_LIB_VER%%/lib/libLLVMHexagonAsmParser.a
+llvm%%LLVM_LIB_VER%%/lib/libLLVMHexagonCodeGen.a
+llvm%%LLVM_LIB_VER%%/lib/libLLVMHexagonDesc.a
+llvm%%LLVM_LIB_VER%%/lib/libLLVMHexagonDisassembler.a
+llvm%%LLVM_LIB_VER%%/lib/libLLVMHexagonInfo.a
+llvm%%LLVM_LIB_VER%%/lib/libLLVMIRReader.a
+llvm%%LLVM_LIB_VER%%/lib/libLLVMInstCombine.a
+llvm%%LLVM_LIB_VER%%/lib/libLLVMInstrumentation.a
+llvm%%LLVM_LIB_VER%%/lib/libLLVMInterpreter.a
+llvm%%LLVM_LIB_VER%%/lib/libLLVMLTO.a
+llvm%%LLVM_LIB_VER%%/lib/libLLVMLanaiAsmParser.a
+llvm%%LLVM_LIB_VER%%/lib/libLLVMLanaiAsmPrinter.a
+llvm%%LLVM_LIB_VER%%/lib/libLLVMLanaiCodeGen.a
+llvm%%LLVM_LIB_VER%%/lib/libLLVMLanaiDesc.a
+llvm%%LLVM_LIB_VER%%/lib/libLLVMLanaiDisassembler.a
+llvm%%LLVM_LIB_VER%%/lib/libLLVMLanaiInfo.a
+llvm%%LLVM_LIB_VER%%/lib/libLLVMLibDriver.a
+llvm%%LLVM_LIB_VER%%/lib/libLLVMLineEditor.a
+llvm%%LLVM_LIB_VER%%/lib/libLLVMLinker.a
+llvm%%LLVM_LIB_VER%%/lib/libLLVMMC.a
+llvm%%LLVM_LIB_VER%%/lib/libLLVMMCDisassembler.a
+llvm%%LLVM_LIB_VER%%/lib/libLLVMMCJIT.a
+llvm%%LLVM_LIB_VER%%/lib/libLLVMMCParser.a
+llvm%%LLVM_LIB_VER%%/lib/libLLVMMIRParser.a
+llvm%%LLVM_LIB_VER%%/lib/libLLVMMSP430AsmPrinter.a
+llvm%%LLVM_LIB_VER%%/lib/libLLVMMSP430CodeGen.a
+llvm%%LLVM_LIB_VER%%/lib/libLLVMMSP430Desc.a
+llvm%%LLVM_LIB_VER%%/lib/libLLVMMSP430Info.a
+llvm%%LLVM_LIB_VER%%/lib/libLLVMMipsAsmParser.a
+llvm%%LLVM_LIB_VER%%/lib/libLLVMMipsAsmPrinter.a
+llvm%%LLVM_LIB_VER%%/lib/libLLVMMipsCodeGen.a
+llvm%%LLVM_LIB_VER%%/lib/libLLVMMipsDesc.a
+llvm%%LLVM_LIB_VER%%/lib/libLLVMMipsDisassembler.a
+llvm%%LLVM_LIB_VER%%/lib/libLLVMMipsInfo.a
+llvm%%LLVM_LIB_VER%%/lib/libLLVMNVPTXAsmPrinter.a
+llvm%%LLVM_LIB_VER%%/lib/libLLVMNVPTXCodeGen.a
+llvm%%LLVM_LIB_VER%%/lib/libLLVMNVPTXDesc.a
+llvm%%LLVM_LIB_VER%%/lib/libLLVMNVPTXInfo.a
+llvm%%LLVM_LIB_VER%%/lib/libLLVMObjCARCOpts.a
+llvm%%LLVM_LIB_VER%%/lib/libLLVMObject.a
+llvm%%LLVM_LIB_VER%%/lib/libLLVMObjectYAML.a
+llvm%%LLVM_LIB_VER%%/lib/libLLVMOption.a
+llvm%%LLVM_LIB_VER%%/lib/libLLVMOrcJIT.a
+llvm%%LLVM_LIB_VER%%/lib/libLLVMPasses.a
+llvm%%LLVM_LIB_VER%%/lib/libLLVMPowerPCAsmParser.a
+llvm%%LLVM_LIB_VER%%/lib/libLLVMPowerPCAsmPrinter.a
+llvm%%LLVM_LIB_VER%%/lib/libLLVMPowerPCCodeGen.a
+llvm%%LLVM_LIB_VER%%/lib/libLLVMPowerPCDesc.a
+llvm%%LLVM_LIB_VER%%/lib/libLLVMPowerPCDisassembler.a
+llvm%%LLVM_LIB_VER%%/lib/libLLVMPowerPCInfo.a
+llvm%%LLVM_LIB_VER%%/lib/libLLVMProfileData.a
+llvm%%LLVM_LIB_VER%%/lib/libLLVMRuntimeDyld.a
+llvm%%LLVM_LIB_VER%%/lib/libLLVMScalarOpts.a
+llvm%%LLVM_LIB_VER%%/lib/libLLVMSelectionDAG.a
+llvm%%LLVM_LIB_VER%%/lib/libLLVMSparcAsmParser.a
+llvm%%LLVM_LIB_VER%%/lib/libLLVMSparcAsmPrinter.a
+llvm%%LLVM_LIB_VER%%/lib/libLLVMSparcCodeGen.a
+llvm%%LLVM_LIB_VER%%/lib/libLLVMSparcDesc.a
+llvm%%LLVM_LIB_VER%%/lib/libLLVMSparcDisassembler.a
+llvm%%LLVM_LIB_VER%%/lib/libLLVMSparcInfo.a
+llvm%%LLVM_LIB_VER%%/lib/libLLVMSupport.a
+llvm%%LLVM_LIB_VER%%/lib/libLLVMSymbolize.a
+llvm%%LLVM_LIB_VER%%/lib/libLLVMSystemZAsmParser.a
+llvm%%LLVM_LIB_VER%%/lib/libLLVMSystemZAsmPrinter.a
+llvm%%LLVM_LIB_VER%%/lib/libLLVMSystemZCodeGen.a
+llvm%%LLVM_LIB_VER%%/lib/libLLVMSystemZDesc.a
+llvm%%LLVM_LIB_VER%%/lib/libLLVMSystemZDisassembler.a
+llvm%%LLVM_LIB_VER%%/lib/libLLVMSystemZInfo.a
+llvm%%LLVM_LIB_VER%%/lib/libLLVMTableGen.a
+llvm%%LLVM_LIB_VER%%/lib/libLLVMTarget.a
+llvm%%LLVM_LIB_VER%%/lib/libLLVMTransformUtils.a
+llvm%%LLVM_LIB_VER%%/lib/libLLVMVectorize.a
+llvm%%LLVM_LIB_VER%%/lib/libLLVMWindowsManifest.a
+llvm%%LLVM_LIB_VER%%/lib/libLLVMX86AsmParser.a
+llvm%%LLVM_LIB_VER%%/lib/libLLVMX86AsmPrinter.a
+llvm%%LLVM_LIB_VER%%/lib/libLLVMX86CodeGen.a
+llvm%%LLVM_LIB_VER%%/lib/libLLVMX86Desc.a
+llvm%%LLVM_LIB_VER%%/lib/libLLVMX86Disassembler.a
+llvm%%LLVM_LIB_VER%%/lib/libLLVMX86Info.a
+llvm%%LLVM_LIB_VER%%/lib/libLLVMX86Utils.a
+llvm%%LLVM_LIB_VER%%/lib/libLLVMXCoreAsmPrinter.a
+llvm%%LLVM_LIB_VER%%/lib/libLLVMXCoreCodeGen.a
+llvm%%LLVM_LIB_VER%%/lib/libLLVMXCoreDesc.a
+llvm%%LLVM_LIB_VER%%/lib/libLLVMXCoreDisassembler.a
+llvm%%LLVM_LIB_VER%%/lib/libLLVMXCoreInfo.a
+llvm%%LLVM_LIB_VER%%/lib/libLLVMXRay.a
+llvm%%LLVM_LIB_VER%%/lib/libLLVMipo.a
+llvm%%LLVM_LIB_VER%%/lib/libLTO.so
+llvm%%LLVM_LIB_VER%%/lib/libLTO.so.%%LLVM_RELEASE%%
+llvm%%LLVM_LIB_VER%%/lib/libLTO.so.6
+%%CLANG%%llvm%%LLVM_LIB_VER%%/lib/libclang.so
+%%CLANG%%llvm%%LLVM_LIB_VER%%/lib/libclang.so.%%LLVM_MAJOR%%
+%%CLANG%%llvm%%LLVM_LIB_VER%%/lib/libclang.so.6
+%%CLANG%%llvm%%LLVM_LIB_VER%%/lib/libclangARCMigrate.a
+%%CLANG%%llvm%%LLVM_LIB_VER%%/lib/libclangAST.a
+%%CLANG%%llvm%%LLVM_LIB_VER%%/lib/libclangASTMatchers.a
+%%CLANG%%llvm%%LLVM_LIB_VER%%/lib/libclangAnalysis.a
+%%EXTRAS%%llvm%%LLVM_LIB_VER%%/lib/libclangApplyReplacements.a
+%%CLANG%%llvm%%LLVM_LIB_VER%%/lib/libclangBasic.a
+%%EXTRAS%%llvm%%LLVM_LIB_VER%%/lib/libclangChangeNamespace.a
+%%CLANG%%llvm%%LLVM_LIB_VER%%/lib/libclangCodeGen.a
+%%CLANG%%llvm%%LLVM_LIB_VER%%/lib/libclangCrossTU.a
+%%EXTRAS%%llvm%%LLVM_LIB_VER%%/lib/libclangDaemon.a
+%%CLANG%%llvm%%LLVM_LIB_VER%%/lib/libclangDriver.a
+%%CLANG%%llvm%%LLVM_LIB_VER%%/lib/libclangDynamicASTMatchers.a
+%%CLANG%%llvm%%LLVM_LIB_VER%%/lib/libclangEdit.a
+%%CLANG%%llvm%%LLVM_LIB_VER%%/lib/libclangFormat.a
+%%CLANG%%llvm%%LLVM_LIB_VER%%/lib/libclangFrontend.a
+%%CLANG%%llvm%%LLVM_LIB_VER%%/lib/libclangFrontendTool.a
+%%CLANG%%llvm%%LLVM_LIB_VER%%/lib/libclangHandleCXX.a
+%%EXTRAS%%llvm%%LLVM_LIB_VER%%/lib/libclangIncludeFixer.a
+%%EXTRAS%%llvm%%LLVM_LIB_VER%%/lib/libclangIncludeFixerPlugin.a
+%%CLANG%%llvm%%LLVM_LIB_VER%%/lib/libclangIndex.a
+%%CLANG%%llvm%%LLVM_LIB_VER%%/lib/libclangLex.a
+%%EXTRAS%%llvm%%LLVM_LIB_VER%%/lib/libclangMove.a
+%%CLANG%%llvm%%LLVM_LIB_VER%%/lib/libclangParse.a
+%%EXTRAS%%llvm%%LLVM_LIB_VER%%/lib/libclangQuery.a
+%%EXTRAS%%llvm%%LLVM_LIB_VER%%/lib/libclangReorderFields.a
+%%CLANG%%llvm%%LLVM_LIB_VER%%/lib/libclangRewrite.a
+%%CLANG%%llvm%%LLVM_LIB_VER%%/lib/libclangRewriteFrontend.a
+%%CLANG%%llvm%%LLVM_LIB_VER%%/lib/libclangSema.a
+%%CLANG%%llvm%%LLVM_LIB_VER%%/lib/libclangSerialization.a
+%%CLANG%%llvm%%LLVM_LIB_VER%%/lib/libclangStaticAnalyzerCheckers.a
+%%CLANG%%llvm%%LLVM_LIB_VER%%/lib/libclangStaticAnalyzerCore.a
+%%CLANG%%llvm%%LLVM_LIB_VER%%/lib/libclangStaticAnalyzerFrontend.a
+%%EXTRAS%%llvm%%LLVM_LIB_VER%%/lib/libclangTidy.a
+%%EXTRAS%%llvm%%LLVM_LIB_VER%%/lib/libclangTidyAndroidModule.a
+%%EXTRAS%%llvm%%LLVM_LIB_VER%%/lib/libclangTidyBoostModule.a
+%%EXTRAS%%llvm%%LLVM_LIB_VER%%/lib/libclangTidyBugproneModule.a
+%%EXTRAS%%llvm%%LLVM_LIB_VER%%/lib/libclangTidyCERTModule.a
+%%EXTRAS%%llvm%%LLVM_LIB_VER%%/lib/libclangTidyCppCoreGuidelinesModule.a
+%%EXTRAS%%llvm%%LLVM_LIB_VER%%/lib/libclangTidyFuchsiaModule.a
+%%EXTRAS%%llvm%%LLVM_LIB_VER%%/lib/libclangTidyGoogleModule.a
+%%EXTRAS%%llvm%%LLVM_LIB_VER%%/lib/libclangTidyHICPPModule.a
+%%EXTRAS%%llvm%%LLVM_LIB_VER%%/lib/libclangTidyLLVMModule.a
+%%EXTRAS%%llvm%%LLVM_LIB_VER%%/lib/libclangTidyMPIModule.a
+%%EXTRAS%%llvm%%LLVM_LIB_VER%%/lib/libclangTidyMiscModule.a
+%%EXTRAS%%llvm%%LLVM_LIB_VER%%/lib/libclangTidyModernizeModule.a
+%%EXTRAS%%llvm%%LLVM_LIB_VER%%/lib/libclangTidyObjCModule.a
+%%EXTRAS%%llvm%%LLVM_LIB_VER%%/lib/libclangTidyPerformanceModule.a
+%%EXTRAS%%llvm%%LLVM_LIB_VER%%/lib/libclangTidyPlugin.a
+%%EXTRAS%%llvm%%LLVM_LIB_VER%%/lib/libclangTidyReadabilityModule.a
+%%EXTRAS%%llvm%%LLVM_LIB_VER%%/lib/libclangTidyUtils.a
+%%CLANG%%llvm%%LLVM_LIB_VER%%/lib/libclangTooling.a
+%%CLANG%%llvm%%LLVM_LIB_VER%%/lib/libclangToolingASTDiff.a
+%%CLANG%%llvm%%LLVM_LIB_VER%%/lib/libclangToolingCore.a
+%%CLANG%%llvm%%LLVM_LIB_VER%%/lib/libclangToolingRefactor.a
+%%EXTRAS%%llvm%%LLVM_LIB_VER%%/lib/libfindAllSymbols.a
+%%OPENMP%%llvm%%LLVM_LIB_VER%%/lib/libgomp.so
+%%OPENMP%%llvm%%LLVM_LIB_VER%%/lib/libiomp5.so
+%%LLD%%llvm%%LLVM_LIB_VER%%/lib/liblldCOFF.a
+%%LLD%%llvm%%LLVM_LIB_VER%%/lib/liblldCommon.a
+%%LLD%%llvm%%LLVM_LIB_VER%%/lib/liblldCore.a
+%%LLD%%llvm%%LLVM_LIB_VER%%/lib/liblldDriver.a
+%%LLD%%llvm%%LLVM_LIB_VER%%/lib/liblldELF.a
+%%LLD%%llvm%%LLVM_LIB_VER%%/lib/liblldMachO.a
+%%LLD%%llvm%%LLVM_LIB_VER%%/lib/liblldMinGW.a
+%%LLD%%llvm%%LLVM_LIB_VER%%/lib/liblldReaderWriter.a
+%%LLD%%llvm%%LLVM_LIB_VER%%/lib/liblldWasm.a
+%%LLD%%llvm%%LLVM_LIB_VER%%/lib/liblldYAML.a
+%%LLDB%%llvm%%LLVM_LIB_VER%%/lib/liblldb.so
+%%LLDB%%llvm%%LLVM_LIB_VER%%/lib/liblldb.so.%%LLVM_RELEASE%%
+%%LLDB%%llvm%%LLVM_LIB_VER%%/lib/liblldb.so.6
+%%LLDB%%llvm%%LLVM_LIB_VER%%/lib/liblldbBase.a
+%%LLDB%%llvm%%LLVM_LIB_VER%%/lib/liblldbBreakpoint.a
+%%LLDB%%llvm%%LLVM_LIB_VER%%/lib/liblldbCommands.a
+%%LLDB%%llvm%%LLVM_LIB_VER%%/lib/liblldbCore.a
+%%LLDB%%llvm%%LLVM_LIB_VER%%/lib/liblldbDataFormatters.a
+%%LLDB%%llvm%%LLVM_LIB_VER%%/lib/liblldbExpression.a
+%%LLDB%%llvm%%LLVM_LIB_VER%%/lib/liblldbHost.a
+%%LLDB%%llvm%%LLVM_LIB_VER%%/lib/liblldbInitialization.a
+%%LLDB%%llvm%%LLVM_LIB_VER%%/lib/liblldbInterpreter.a
+%%LLDB%%llvm%%LLVM_LIB_VER%%/lib/liblldbPluginABIMacOSX_arm.a
+%%LLDB%%llvm%%LLVM_LIB_VER%%/lib/liblldbPluginABIMacOSX_arm64.a
+%%LLDB%%llvm%%LLVM_LIB_VER%%/lib/liblldbPluginABIMacOSX_i386.a
+%%LLDB%%llvm%%LLVM_LIB_VER%%/lib/liblldbPluginABISysV_arm.a
+%%LLDB%%llvm%%LLVM_LIB_VER%%/lib/liblldbPluginABISysV_arm64.a
+%%LLDB%%llvm%%LLVM_LIB_VER%%/lib/liblldbPluginABISysV_hexagon.a
+%%LLDB%%llvm%%LLVM_LIB_VER%%/lib/liblldbPluginABISysV_i386.a
+%%LLDB%%llvm%%LLVM_LIB_VER%%/lib/liblldbPluginABISysV_mips.a
+%%LLDB%%llvm%%LLVM_LIB_VER%%/lib/liblldbPluginABISysV_mips64.a
+%%LLDB%%llvm%%LLVM_LIB_VER%%/lib/liblldbPluginABISysV_ppc.a
+%%LLDB%%llvm%%LLVM_LIB_VER%%/lib/liblldbPluginABISysV_ppc64.a
+%%LLDB%%llvm%%LLVM_LIB_VER%%/lib/liblldbPluginABISysV_s390x.a
+%%LLDB%%llvm%%LLVM_LIB_VER%%/lib/liblldbPluginABISysV_x86_64.a
+%%LLDB%%llvm%%LLVM_LIB_VER%%/lib/liblldbPluginAppleObjCRuntime.a
+%%LLDB%%llvm%%LLVM_LIB_VER%%/lib/liblldbPluginArchitectureArm.a
+%%LLDB%%llvm%%LLVM_LIB_VER%%/lib/liblldbPluginCPlusPlusLanguage.a
+%%LLDB%%llvm%%LLVM_LIB_VER%%/lib/liblldbPluginCXXItaniumABI.a
+%%LLDB%%llvm%%LLVM_LIB_VER%%/lib/liblldbPluginDisassemblerLLVM.a
+%%LLDB%%llvm%%LLVM_LIB_VER%%/lib/liblldbPluginDynamicLoaderHexagonDYLD.a
+%%LLDB%%llvm%%LLVM_LIB_VER%%/lib/liblldbPluginDynamicLoaderMacOSXDYLD.a
+%%LLDB%%llvm%%LLVM_LIB_VER%%/lib/liblldbPluginDynamicLoaderPosixDYLD.a
+%%LLDB%%llvm%%LLVM_LIB_VER%%/lib/liblldbPluginDynamicLoaderStatic.a
+%%LLDB%%llvm%%LLVM_LIB_VER%%/lib/liblldbPluginDynamicLoaderWindowsDYLD.a
+%%LLDB%%llvm%%LLVM_LIB_VER%%/lib/liblldbPluginExpressionParserClang.a
+%%LLDB%%llvm%%LLVM_LIB_VER%%/lib/liblldbPluginExpressionParserGo.a
+%%LLDB%%llvm%%LLVM_LIB_VER%%/lib/liblldbPluginGoLanguage.a
+%%LLDB%%llvm%%LLVM_LIB_VER%%/lib/liblldbPluginInstructionARM.a
+%%LLDB%%llvm%%LLVM_LIB_VER%%/lib/liblldbPluginInstructionARM64.a
+%%LLDB%%llvm%%LLVM_LIB_VER%%/lib/liblldbPluginInstructionMIPS.a
+%%LLDB%%llvm%%LLVM_LIB_VER%%/lib/liblldbPluginInstructionMIPS64.a
+%%LLDB%%llvm%%LLVM_LIB_VER%%/lib/liblldbPluginInstrumentationRuntimeASan.a
+%%LLDB%%llvm%%LLVM_LIB_VER%%/lib/liblldbPluginInstrumentationRuntimeMainThreadChecker.a
+%%LLDB%%llvm%%LLVM_LIB_VER%%/lib/liblldbPluginInstrumentationRuntimeTSan.a
+%%LLDB%%llvm%%LLVM_LIB_VER%%/lib/liblldbPluginInstrumentationRuntimeUBSan.a
+%%LLDB%%llvm%%LLVM_LIB_VER%%/lib/liblldbPluginJITLoaderGDB.a
+%%LLDB%%llvm%%LLVM_LIB_VER%%/lib/liblldbPluginJavaLanguage.a
+%%LLDB%%llvm%%LLVM_LIB_VER%%/lib/liblldbPluginLanguageRuntimeGo.a
+%%LLDB%%llvm%%LLVM_LIB_VER%%/lib/liblldbPluginLanguageRuntimeJava.a
+%%LLDB%%llvm%%LLVM_LIB_VER%%/lib/liblldbPluginMemoryHistoryASan.a
+%%LLDB%%llvm%%LLVM_LIB_VER%%/lib/liblldbPluginOCamlLanguage.a
+%%LLDB%%llvm%%LLVM_LIB_VER%%/lib/liblldbPluginOSGo.a
+%%LLDB%%llvm%%LLVM_LIB_VER%%/lib/liblldbPluginOSPython.a
+%%LLDB%%llvm%%LLVM_LIB_VER%%/lib/liblldbPluginObjCLanguage.a
+%%LLDB%%llvm%%LLVM_LIB_VER%%/lib/liblldbPluginObjCPlusPlusLanguage.a
+%%LLDB%%llvm%%LLVM_LIB_VER%%/lib/liblldbPluginObjectContainerBSDArchive.a
+%%LLDB%%llvm%%LLVM_LIB_VER%%/lib/liblldbPluginObjectContainerMachOArchive.a
+%%LLDB%%llvm%%LLVM_LIB_VER%%/lib/liblldbPluginObjectFileELF.a
+%%LLDB%%llvm%%LLVM_LIB_VER%%/lib/liblldbPluginObjectFileJIT.a
+%%LLDB%%llvm%%LLVM_LIB_VER%%/lib/liblldbPluginObjectFileMachO.a
+%%LLDB%%llvm%%LLVM_LIB_VER%%/lib/liblldbPluginObjectFilePECOFF.a
+%%LLDB%%llvm%%LLVM_LIB_VER%%/lib/liblldbPluginPlatformAndroid.a
+%%LLDB%%llvm%%LLVM_LIB_VER%%/lib/liblldbPluginPlatformFreeBSD.a
+%%LLDB%%llvm%%LLVM_LIB_VER%%/lib/liblldbPluginPlatformGDB.a
+%%LLDB%%llvm%%LLVM_LIB_VER%%/lib/liblldbPluginPlatformKalimba.a
+%%LLDB%%llvm%%LLVM_LIB_VER%%/lib/liblldbPluginPlatformLinux.a
+%%LLDB%%llvm%%LLVM_LIB_VER%%/lib/liblldbPluginPlatformMacOSX.a
+%%LLDB%%llvm%%LLVM_LIB_VER%%/lib/liblldbPluginPlatformNetBSD.a
+%%LLDB%%llvm%%LLVM_LIB_VER%%/lib/liblldbPluginPlatformOpenBSD.a
+%%LLDB%%llvm%%LLVM_LIB_VER%%/lib/liblldbPluginPlatformPOSIX.a
+%%LLDB%%llvm%%LLVM_LIB_VER%%/lib/liblldbPluginPlatformWindows.a
+%%LLDB%%llvm%%LLVM_LIB_VER%%/lib/liblldbPluginProcessElfCore.a
+%%LLDB%%llvm%%LLVM_LIB_VER%%/lib/liblldbPluginProcessFreeBSD.a
+%%LLDB%%llvm%%LLVM_LIB_VER%%/lib/liblldbPluginProcessGDBRemote.a
+%%LLDB%%llvm%%LLVM_LIB_VER%%/lib/liblldbPluginProcessMinidump.a
+%%LLDB%%llvm%%LLVM_LIB_VER%%/lib/liblldbPluginProcessPOSIX.a
+%%LLDB%%llvm%%LLVM_LIB_VER%%/lib/liblldbPluginProcessUtility.a
+%%LLDB%%llvm%%LLVM_LIB_VER%%/lib/liblldbPluginRenderScriptRuntime.a
+%%LLDB%%llvm%%LLVM_LIB_VER%%/lib/liblldbPluginScriptInterpreterNone.a
+%%LLDB%%llvm%%LLVM_LIB_VER%%/lib/liblldbPluginScriptInterpreterPython.a
+%%LLDB%%llvm%%LLVM_LIB_VER%%/lib/liblldbPluginStructuredDataDarwinLog.a
+%%LLDB%%llvm%%LLVM_LIB_VER%%/lib/liblldbPluginSymbolFileDWARF.a
+%%LLDB%%llvm%%LLVM_LIB_VER%%/lib/liblldbPluginSymbolFilePDB.a
+%%LLDB%%llvm%%LLVM_LIB_VER%%/lib/liblldbPluginSymbolFileSymtab.a
+%%LLDB%%llvm%%LLVM_LIB_VER%%/lib/liblldbPluginSymbolVendorELF.a
+%%LLDB%%llvm%%LLVM_LIB_VER%%/lib/liblldbPluginSystemRuntimeMacOSX.a
+%%LLDB%%llvm%%LLVM_LIB_VER%%/lib/liblldbPluginUnwindAssemblyInstEmulation.a
+%%LLDB%%llvm%%LLVM_LIB_VER%%/lib/liblldbPluginUnwindAssemblyX86.a
+%%LLDB%%llvm%%LLVM_LIB_VER%%/lib/liblldbSymbol.a
+%%LLDB%%llvm%%LLVM_LIB_VER%%/lib/liblldbTarget.a
+%%LLDB%%llvm%%LLVM_LIB_VER%%/lib/liblldbUtility.a
+%%LLDB%%llvm%%LLVM_LIB_VER%%/lib/liblldbUtilityHelpers.a
+%%OPENMP%%llvm%%LLVM_LIB_VER%%/lib/libomp.so
+%%OPENMP%%llvm%%LLVM_LIB_VER%%/lib/libomptarget.so
+%%CLANG%%llvm%%LLVM_LIB_VER%%/libexec/c++-analyzer
+%%CLANG%%llvm%%LLVM_LIB_VER%%/libexec/ccc-analyzer
+%%CLANG%%llvm%%LLVM_LIB_VER%%/share/clang/bash-autocomplete.sh
+%%CLANG%%llvm%%LLVM_LIB_VER%%/share/clang/clang-format-bbedit.applescript
+%%CLANG%%llvm%%LLVM_LIB_VER%%/share/clang/clang-format-diff.py
+%%CLANG%%llvm%%LLVM_LIB_VER%%/share/clang/clang-format-sublime.py
+%%CLANG%%llvm%%LLVM_LIB_VER%%/share/clang/clang-format.el
+%%CLANG%%llvm%%LLVM_LIB_VER%%/share/clang/clang-format.py
+%%EXTRAS%%llvm%%LLVM_LIB_VER%%/share/clang/clang-include-fixer.el
+%%EXTRAS%%llvm%%LLVM_LIB_VER%%/share/clang/clang-include-fixer.py
+%%EXTRAS%%llvm%%LLVM_LIB_VER%%/share/clang/clang-rename.el
+%%EXTRAS%%llvm%%LLVM_LIB_VER%%/share/clang/clang-rename.py
+%%EXTRAS%%llvm%%LLVM_LIB_VER%%/share/clang/clang-tidy-diff.py
+%%EXTRAS%%llvm%%LLVM_LIB_VER%%/share/clang/run-clang-tidy.py
+%%EXTRAS%%llvm%%LLVM_LIB_VER%%/share/clang/run-find-all-symbols.py
+llvm%%LLVM_LIB_VER%%/share/opt-viewer/opt-diff.py
+llvm%%LLVM_LIB_VER%%/share/opt-viewer/opt-stats.py
+llvm%%LLVM_LIB_VER%%/share/opt-viewer/opt-viewer.py
+llvm%%LLVM_LIB_VER%%/share/opt-viewer/optpmap.py
+llvm%%LLVM_LIB_VER%%/share/opt-viewer/optrecord.py
+llvm%%LLVM_LIB_VER%%/share/opt-viewer/style.css
+%%CLANG%%llvm%%LLVM_LIB_VER%%/share/scan-build/scanview.css
+%%CLANG%%llvm%%LLVM_LIB_VER%%/share/scan-build/sorttable.js
+%%CLANG%%llvm%%LLVM_LIB_VER%%/share/scan-view/FileRadar.scpt
+%%CLANG%%llvm%%LLVM_LIB_VER%%/share/scan-view/GetRadarVersion.scpt
+%%CLANG%%llvm%%LLVM_LIB_VER%%/share/scan-view/Reporter.py
+%%CLANG%%llvm%%LLVM_LIB_VER%%/share/scan-view/ScanView.py
+%%CLANG%%llvm%%LLVM_LIB_VER%%/share/scan-view/bugcatcher.ico
+%%CLANG%%llvm%%LLVM_LIB_VER%%/share/scan-view/startfile.py
+%%LIT%%%%PYTHON_SITELIBDIR%%/lit%%LLVM_SUFFIX%%/BooleanExpression.py
+%%LIT%%%%PYTHON_SITELIBDIR%%/lit%%LLVM_SUFFIX%%/LitConfig.py
+%%LIT%%%%PYTHON_SITELIBDIR%%/lit%%LLVM_SUFFIX%%/LitTestCase.py
+%%LIT%%%%PYTHON_SITELIBDIR%%/lit%%LLVM_SUFFIX%%/ProgressBar.py
+%%LIT%%%%PYTHON_SITELIBDIR%%/lit%%LLVM_SUFFIX%%/ShCommands.py
+%%LIT%%%%PYTHON_SITELIBDIR%%/lit%%LLVM_SUFFIX%%/ShUtil.py
+%%LIT%%%%PYTHON_SITELIBDIR%%/lit%%LLVM_SUFFIX%%/Test.py
+%%LIT%%%%PYTHON_SITELIBDIR%%/lit%%LLVM_SUFFIX%%/TestRunner.py
+%%LIT%%%%PYTHON_SITELIBDIR%%/lit%%LLVM_SUFFIX%%/TestingConfig.py
+%%LIT%%%%PYTHON_SITELIBDIR%%/lit%%LLVM_SUFFIX%%/__init__.py
+%%LIT%%%%PYTHON_SITELIBDIR%%/lit%%LLVM_SUFFIX%%/discovery.py
+%%LIT%%%%PYTHON_SITELIBDIR%%/lit%%LLVM_SUFFIX%%/formats/__init__.py
+%%LIT%%%%PYTHON_SITELIBDIR%%/lit%%LLVM_SUFFIX%%/formats/base.py
+%%LIT%%%%PYTHON_SITELIBDIR%%/lit%%LLVM_SUFFIX%%/formats/googletest.py
+%%LIT%%%%PYTHON_SITELIBDIR%%/lit%%LLVM_SUFFIX%%/formats/shtest.py
+%%LIT%%%%PYTHON_SITELIBDIR%%/lit%%LLVM_SUFFIX%%/main.py
+%%LIT%%%%PYTHON_SITELIBDIR%%/lit%%LLVM_SUFFIX%%/run.py
+%%LIT%%%%PYTHON_SITELIBDIR%%/lit%%LLVM_SUFFIX%%/util.py
+@postexec if type ccache-update-links >/dev/null 2>&1; then ccache-update-links -v; fi
+@postunexec if type ccache-update-links >/dev/null 2>&1; then ccache-update-links -v; fi
diff --git a/devel/mongo-cxx-driver/Makefile b/devel/mongo-cxx-driver/Makefile
new file mode 100644
index 000000000000..5755e9ef6062
--- /dev/null
+++ b/devel/mongo-cxx-driver/Makefile
@@ -0,0 +1,47 @@
+# Created by: Simun Mikecin <numisemis@yahoo.com>
+# $FreeBSD$
+
+PORTNAME= mongo-cxx-driver
+PORTVERSION= 1.1.2
+DISTVERSIONPREFIX=legacy-
+PORTREVISION= 14
+CATEGORIES= devel
+
+MAINTAINER= numisemis@yahoo.com
+COMMENT= MongoDB Legacy C++ Driver
+
+LICENSE= APACHE20
+LICENSE_FILE= ${WRKSRC}/APACHE-2.0.txt
+
+BROKEN_SSL= openssl
+BROKEN_SSL_REASON_openssl= use of undeclared identifier 'BIO_s_file_internal'
+
+LIB_DEPENDS= libboost_system.so:devel/boost-libs
+
+MAKE_JOBS_UNSAFE= yes
+
+OPTIONS_DEFINE= SCRAM-SHA-1
+OPTIONS_DEFAULT= SCRAM-SHA-1
+
+SCRAM-SHA-1_LIB_DEPENDS= libsasl2.so:security/cyrus-sasl2
+SCRAM-SHA-1_MAKE_ARGS= --use-sasl-client --ssl
+SCRAM-SHA-1_DESC= SCRAM-SHA-1 authentication mechanism support.
+
+USE_GITHUB= yes
+GH_ACCOUNT= mongodb
+GH_PROJECT= mongo-cxx-driver
+
+USES= compiler:c++11-lang scons:python2 ssl
+MAKE_ARGS= --prefix=${STAGEDIR}${PREFIX} \
+ --cc=${CC} \
+ --cxx=${CXX}
+USE_LDCONFIG= yes
+
+.include <bsd.port.pre.mk>
+
+.if ${SSL_DEFAULT} == base
+BROKEN_FreeBSD_12= use of undeclared identifier 'BIO_s_file_internal'
+BROKEN_FreeBSD_13= use of undeclared identifier 'BIO_s_file_internal'
+.endif
+
+.include <bsd.port.post.mk>
diff --git a/devel/mongo-cxx-driver/distinfo b/devel/mongo-cxx-driver/distinfo
new file mode 100644
index 000000000000..5317d88f11c5
--- /dev/null
+++ b/devel/mongo-cxx-driver/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1466666234
+SHA256 (mongodb-mongo-cxx-driver-legacy-1.1.2_GH0.tar.gz) = 8c52cae798086c3e9d0e6fe488c3378601db858cc71944b6b83440d8b00298f4
+SIZE (mongodb-mongo-cxx-driver-legacy-1.1.2_GH0.tar.gz) = 1577527
diff --git a/devel/mongo-cxx-driver/files/patch-SConstruct b/devel/mongo-cxx-driver/files/patch-SConstruct
new file mode 100644
index 000000000000..6b694d2724e5
--- /dev/null
+++ b/devel/mongo-cxx-driver/files/patch-SConstruct
@@ -0,0 +1,33 @@
+--- SConstruct.orig 2015-08-18 15:46:59 UTC
++++ SConstruct
+@@ -354,6 +354,30 @@ env_vars.Add('SHLINKFLAGS',
+ help='Sets flags for the linker when building shared libraries',
+ converter=variable_shlex_converter)
+
++env_vars.Add('CXX',
++ help='Sets path to the C++ compiler',
++ converter=variable_shlex_converter)
++
++env_vars.Add('CC',
++ help='Sets path to the C compiler',
++ converter=variable_shlex_converter)
++
++env_vars.Add('PREFIX',
++ help='Sets PREFIX path',
++ converter=variable_shlex_converter)
++
++env_vars.Add('PKGCONFIGDIR',
++ help='Sets PKGCONFIGDIR path',
++ converter=variable_shlex_converter)
++
++env_vars.Add('destdir',
++ help='Sets destdir path',
++ converter=variable_shlex_converter)
++
++env_vars.Add('DESTDIR',
++ help='Sets DESTDIR path',
++ converter=variable_shlex_converter)
++
+ # don't run configure if user calls --help
+ if GetOption('help'):
+ Return()
diff --git a/devel/mongo-cxx-driver/files/patch-boost-1.67 b/devel/mongo-cxx-driver/files/patch-boost-1.67
new file mode 100644
index 000000000000..bdfbf452653f
--- /dev/null
+++ b/devel/mongo-cxx-driver/files/patch-boost-1.67
@@ -0,0 +1,26 @@
+src/mongo/client/command_writer.cpp:68:78: error: no member named 'next' in namespace 'boost'
+ const std::vector<WriteOperation*>::const_iterator next = boost::next(batch_iter);
+ ~~~~~~~^
+src/mongo/util/net/message_port.h:34:38: error: expected class name
+class AbstractMessagingPort : boost::noncopyable {
+ ^
+
+--- src/mongo/util/net/message_port.h.orig 2016-06-21 19:15:24 UTC
++++ src/mongo/util/net/message_port.h
+@@ -20,8 +20,15 @@
+ #include "mongo/config.h"
+
+ #include <boost/shared_ptr.hpp>
+-#include <boost/utility.hpp>
+ #include <vector>
++
++#include <boost/version.hpp>
++#if BOOST_VERSION < 106700
++#include <boost/utility.hpp>
++#else
++#include <boost/next_prior.hpp>
++#include <boost/noncopyable.hpp>
++#endif
+
+ #include "mongo/util/net/message.h"
+ #include "mongo/util/net/sock.h"
diff --git a/devel/mongo-cxx-driver/pkg-descr b/devel/mongo-cxx-driver/pkg-descr
new file mode 100644
index 000000000000..6cdd2952e7d7
--- /dev/null
+++ b/devel/mongo-cxx-driver/pkg-descr
@@ -0,0 +1,7 @@
+Official Mongo C++ Driver
+
+Mongo (from "humongous") is a high-performance, open source,
+schema-free, document-oriented database. A common name in the
+"NOSQL" community.
+
+WWW: https://github.com/mongodb/mongo-cxx-driver
diff --git a/devel/mongo-cxx-driver/pkg-plist b/devel/mongo-cxx-driver/pkg-plist
new file mode 100644
index 000000000000..7e2f87c89c8e
--- /dev/null
+++ b/devel/mongo-cxx-driver/pkg-plist
@@ -0,0 +1,112 @@
+include/mongo/base/data_cursor.h
+include/mongo/base/data_view.h
+include/mongo/base/disallow_copying.h
+include/mongo/base/encoded_value_storage.h
+include/mongo/base/error_codes.h
+include/mongo/base/parse_number.h
+include/mongo/base/status-inl.h
+include/mongo/base/status.h
+include/mongo/base/status_with.h
+include/mongo/base/string_data-inl.h
+include/mongo/base/string_data.h
+include/mongo/bson/bson-inl.h
+include/mongo/bson/bson.h
+include/mongo/bson/bson_db.h
+include/mongo/bson/bson_field.h
+include/mongo/bson/bson_validate.h
+include/mongo/bson/bsonelement.h
+include/mongo/bson/bsonmisc.h
+include/mongo/bson/bsonobj.h
+include/mongo/bson/bsonobjbuilder.h
+include/mongo/bson/bsonobjiterator.h
+include/mongo/bson/bsontypes.h
+include/mongo/bson/inline_decls.h
+include/mongo/bson/oid.h
+include/mongo/bson/ordering.h
+include/mongo/bson/timestamp.h
+include/mongo/bson/util/builder.h
+include/mongo/client/autolib.h
+include/mongo/client/bulk_operation_builder.h
+include/mongo/client/bulk_update_builder.h
+include/mongo/client/bulk_upsert_builder.h
+include/mongo/client/dbclient.h
+include/mongo/client/dbclient_rs.h
+include/mongo/client/dbclientcursor.h
+include/mongo/client/dbclientinterface.h
+include/mongo/client/exceptions.h
+include/mongo/client/export_macros.h
+include/mongo/client/gridfs.h
+include/mongo/client/index_spec.h
+include/mongo/client/init.h
+include/mongo/client/options.h
+include/mongo/client/redef_macros.h
+include/mongo/client/sasl_client_authenticate.h
+include/mongo/client/undef_macros.h
+include/mongo/client/write_concern.h
+include/mongo/client/write_options.h
+include/mongo/client/write_result.h
+include/mongo/config.h
+include/mongo/db/jsobj.h
+include/mongo/db/json.h
+include/mongo/geo/boundingbox.h
+include/mongo/geo/constants.h
+include/mongo/geo/coordinates.h
+include/mongo/geo/coordinates2d.h
+include/mongo/geo/coordinates2dgeographic.h
+include/mongo/geo/geometry.h
+include/mongo/geo/geometrycollection.h
+include/mongo/geo/geoobj.h
+include/mongo/geo/interface.h
+include/mongo/geo/linestring.h
+include/mongo/geo/multilinestring.h
+include/mongo/geo/multipoint.h
+include/mongo/geo/multipolygon.h
+include/mongo/geo/namespaces.h
+include/mongo/geo/parser-impl.h
+include/mongo/geo/parser.h
+include/mongo/geo/point.h
+include/mongo/geo/polygon.h
+include/mongo/geo/queryutils.h
+include/mongo/logger/appender.h
+include/mongo/logger/component_message_log_domain.h
+include/mongo/logger/labeled_level.h
+include/mongo/logger/log_component.h
+include/mongo/logger/log_component_settings.h
+include/mongo/logger/log_domain.h
+include/mongo/logger/log_manager.h
+include/mongo/logger/log_severity-inl.h
+include/mongo/logger/log_severity.h
+include/mongo/logger/logger.h
+include/mongo/logger/logstream_builder.h
+include/mongo/logger/message_event.h
+include/mongo/logger/message_log_domain.h
+include/mongo/platform/atomic_intrinsics.h
+include/mongo/platform/atomic_intrinsics_gcc_atomic.h
+include/mongo/platform/atomic_intrinsics_gcc_intel.h
+include/mongo/platform/atomic_intrinsics_gcc_sync.h
+include/mongo/platform/atomic_intrinsics_win32.h
+include/mongo/platform/atomic_word.h
+include/mongo/platform/atomic_word_cxx11.h
+include/mongo/platform/atomic_word_intrinsics.h
+include/mongo/platform/compiler.h
+include/mongo/platform/compiler_gcc.h
+include/mongo/platform/compiler_msvc.h
+include/mongo/platform/cstdint.h
+include/mongo/platform/endian.h
+include/mongo/platform/float_utils.h
+include/mongo/platform/hash_namespace.h
+include/mongo/platform/strnlen.h
+include/mongo/platform/unordered_map.h
+include/mongo/platform/windows_basic.h
+include/mongo/stdx/functional.h
+include/mongo/util/assert_util.h
+include/mongo/util/mongoutils/str.h
+include/mongo/util/net/hostandport.h
+include/mongo/util/net/message.h
+include/mongo/util/net/message_port.h
+include/mongo/util/net/operation.h
+include/mongo/util/net/sock.h
+include/mongo/util/shared_buffer.h
+include/mongo/util/time_support.h
+include/mongo/version.h
+lib/libmongoclient.a
diff --git a/devel/p5-Log-Any-Adapter-Callback/Makefile b/devel/p5-Log-Any-Adapter-Callback/Makefile
new file mode 100644
index 000000000000..b74c9eb13fee
--- /dev/null
+++ b/devel/p5-Log-Any-Adapter-Callback/Makefile
@@ -0,0 +1,26 @@
+# $FreeBSD$
+
+PORTNAME= Log-Any-Adapter-Callback
+PORTVERSION= 0.101
+CATEGORIES= devel perl5
+MASTER_SITES= CPAN
+PKGNAMEPREFIX= p5-
+
+MAINTAINER= perl@FreeBSD.org
+COMMENT= Perl extension adapter for Log::Any with callbacks
+
+LICENSE= ART10 GPLv1+
+LICENSE_COMB= dual
+
+DEPRECATED= Use devel/p5-Log-Any (Log::Any::Adapter::Capture) instead
+EXPIRATION_DATE=2020-06-30
+
+BUILD_DEPENDS= ${RUN_DEPENDS}
+RUN_DEPENDS= p5-Log-Any>0:devel/p5-Log-Any
+
+USES= perl5
+USE_PERL5= configure
+
+NO_ARCH= yes
+
+.include <bsd.port.mk>
diff --git a/devel/p5-Log-Any-Adapter-Callback/distinfo b/devel/p5-Log-Any-Adapter-Callback/distinfo
new file mode 100644
index 000000000000..f1564e131b8c
--- /dev/null
+++ b/devel/p5-Log-Any-Adapter-Callback/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1586191140
+SHA256 (Log-Any-Adapter-Callback-0.101.tar.gz) = d008075a2ceb57bb7e96d5e63b8ce8ec5b987fc9f224b460cba7eff73b954a16
+SIZE (Log-Any-Adapter-Callback-0.101.tar.gz) = 15512
diff --git a/devel/p5-Log-Any-Adapter-Callback/pkg-descr b/devel/p5-Log-Any-Adapter-Callback/pkg-descr
new file mode 100644
index 000000000000..a2b58e042f12
--- /dev/null
+++ b/devel/p5-Log-Any-Adapter-Callback/pkg-descr
@@ -0,0 +1,3 @@
+Adapter to use callbacks with Log::Any.
+
+WWW: https://metacpan.org/release/Log-Any-Adapter-Callback
diff --git a/devel/p5-Log-Any-Adapter-Callback/pkg-plist b/devel/p5-Log-Any-Adapter-Callback/pkg-plist
new file mode 100644
index 000000000000..9f82ed9d508c
--- /dev/null
+++ b/devel/p5-Log-Any-Adapter-Callback/pkg-plist
@@ -0,0 +1,2 @@
+%%SITE_PERL%%/Log/Any/Adapter/Callback.pm
+%%PERL5_MAN3%%/Log::Any::Adapter::Callback.3.gz
diff --git a/devel/py-backports.functools_lru_cache/Makefile b/devel/py-backports.functools_lru_cache/Makefile
new file mode 100644
index 000000000000..9a87b971023a
--- /dev/null
+++ b/devel/py-backports.functools_lru_cache/Makefile
@@ -0,0 +1,29 @@
+# $FreeBSD$
+
+PORTNAME= backports.functools_lru_cache
+PORTVERSION= 1.5
+CATEGORIES= devel python
+MASTER_SITES= CHEESESHOP
+PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}
+
+MAINTAINER= sunpoet@FreeBSD.org
+COMMENT= Backport of functools.lru_cache from Python 3.3
+
+LICENSE= MIT
+
+BUILD_DEPENDS= ${PYTHON_PKGNAMEPREFIX}setuptools_scm>=1.15.0:devel/py-setuptools_scm@${PY_FLAVOR}
+RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}backports>=0:devel/py-backports@${PY_FLAVOR}
+
+NO_ARCH= yes
+USE_PYTHON= autoplist distutils
+USES= python:2.7
+
+POST_PLIST= trim-backports-namespace
+
+post-install:
+ @${RM} ${STAGEDIR}${PYTHON_SITELIBDIR}/backports/__init__.py*
+
+trim-backports-namespace:
+ @${REINPLACE_CMD} '/backports\/__init__.py*/d' ${TMPPLIST}
+
+.include <bsd.port.mk>
diff --git a/devel/py-backports.functools_lru_cache/distinfo b/devel/py-backports.functools_lru_cache/distinfo
new file mode 100644
index 000000000000..e6cd82841686
--- /dev/null
+++ b/devel/py-backports.functools_lru_cache/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1517844657
+SHA256 (backports.functools_lru_cache-1.5.tar.gz) = 9d98697f088eb1b0fa451391f91afb5e3ebde16bbdb272819fd091151fda4f1a
+SIZE (backports.functools_lru_cache-1.5.tar.gz) = 7891
diff --git a/devel/py-backports.functools_lru_cache/pkg-descr b/devel/py-backports.functools_lru_cache/pkg-descr
new file mode 100644
index 000000000000..f086a226dff6
--- /dev/null
+++ b/devel/py-backports.functools_lru_cache/pkg-descr
@@ -0,0 +1,5 @@
+backports.functools_lru_cache is a backport of functools.lru_cache from Python
+3.3 as published at ActiveState.
+
+WWW: https://pypi.org/project/backports.functools_lru_cache/
+WWW: https://github.com/jaraco/backports.functools_lru_cache
diff --git a/devel/py-backports.os/Makefile b/devel/py-backports.os/Makefile
new file mode 100644
index 000000000000..a6b1497f86af
--- /dev/null
+++ b/devel/py-backports.os/Makefile
@@ -0,0 +1,35 @@
+# $FreeBSD$
+
+PORTNAME= backports.os
+DISTVERSION= 0.1.1
+CATEGORIES= devel python
+MASTER_SITES= CHEESESHOP
+PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}
+
+MAINTAINER= kai@FreeBSD.org
+COMMENT= Backport of new features in Python's os module
+
+LICENSE= PSFL
+LICENSE_FILE= ${WRKSRC}/LICENSE
+
+DEPRECATED= Python 2 is EOL upstream
+EXPIRATION_DATE= 2020-12-31
+
+BUILD_DEPENDS= ${PYTHON_PKGNAMEPREFIX}setuptools_scm>=0:devel/py-setuptools_scm@${PY_FLAVOR}
+RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}backports>=0:devel/py-backports@${PY_FLAVOR} \
+ ${PYTHON_PKGNAMEPREFIX}future>=0:devel/py-future@${PY_FLAVOR}
+
+USES= python:2.7
+USE_PYTHON= distutils autoplist
+
+NO_ARCH= yes
+
+POST_PLIST= trim-backports-namespace
+
+post-install:
+ @${RM} ${STAGEDIR}${PYTHON_SITELIBDIR}/backports/__init__.py*
+
+trim-backports-namespace:
+ @${REINPLACE_CMD} '/backports\/__init__.py*/d' ${TMPPLIST}
+
+.include <bsd.port.mk>
diff --git a/devel/py-backports.os/distinfo b/devel/py-backports.os/distinfo
new file mode 100644
index 000000000000..c32dba518ba0
--- /dev/null
+++ b/devel/py-backports.os/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1530191181
+SHA256 (backports.os-0.1.1.tar.gz) = b472c4933094306ca08ec90b2a8cbb50c34f1fb2767775169a1c1650b7b74630
+SIZE (backports.os-0.1.1.tar.gz) = 12495
diff --git a/devel/py-backports.os/pkg-descr b/devel/py-backports.os/pkg-descr
new file mode 100644
index 000000000000..9e09d734dceb
--- /dev/null
+++ b/devel/py-backports.os/pkg-descr
@@ -0,0 +1,9 @@
+This package provides backports of new features in Python's os module under the
+backports namespace.
+
+Backported functionality:
+
+- os.fsencode (new in Python 3.2)
+- os.fsdecode (new in Python 3.2)
+
+WWW: https://github.com/pjdelport/backports.os
diff --git a/devel/py-backports.shutil_get_terminal_size/Makefile b/devel/py-backports.shutil_get_terminal_size/Makefile
new file mode 100644
index 000000000000..08e403aaf114
--- /dev/null
+++ b/devel/py-backports.shutil_get_terminal_size/Makefile
@@ -0,0 +1,32 @@
+# $FreeBSD$
+
+PORTNAME= backports.shutil_get_terminal_size
+PORTVERSION= 1.0.0
+PORTREVISION= 1
+CATEGORIES= devel python
+MASTER_SITES= CHEESESHOP
+PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}
+
+MAINTAINER= jpaetzel@FreeBSD.org
+COMMENT= Backport of the get_terminal_size function from Python 3.3's shutil
+
+LICENSE= PSFL
+
+DEPRECATED= Python 2 is EOL upstream
+EXPIRATION_DATE= 2020-12-31
+
+RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}backports>0:devel/py-backports@${PY_FLAVOR}
+
+NO_ARCH= yes
+USES= python:2.7
+USE_PYTHON= autoplist distutils
+
+POST_PLIST= trim-backports-namespace
+
+post-install:
+ @${RM} ${STAGEDIR}${PYTHON_SITELIBDIR}/backports/__init__.py*
+
+trim-backports-namespace:
+ @${REINPLACE_CMD} '/backports\/__init__.py*/d' ${TMPPLIST}
+
+.include <bsd.port.mk>
diff --git a/devel/py-backports.shutil_get_terminal_size/distinfo b/devel/py-backports.shutil_get_terminal_size/distinfo
new file mode 100644
index 000000000000..ac3b00647e3f
--- /dev/null
+++ b/devel/py-backports.shutil_get_terminal_size/distinfo
@@ -0,0 +1,2 @@
+SHA256 (backports.shutil_get_terminal_size-1.0.0.tar.gz) = 713e7a8228ae80341c70586d1cc0a8caa5207346927e23d09dcbcaf18eadec80
+SIZE (backports.shutil_get_terminal_size-1.0.0.tar.gz) = 4279
diff --git a/devel/py-backports.shutil_get_terminal_size/pkg-descr b/devel/py-backports.shutil_get_terminal_size/pkg-descr
new file mode 100644
index 000000000000..2e164cd1af9c
--- /dev/null
+++ b/devel/py-backports.shutil_get_terminal_size/pkg-descr
@@ -0,0 +1,3 @@
+A backport of the get_terminal_size function from Python 3.3's shutil.
+
+WWW: https://github.com/chrippa/backports.shutil_get_terminal_size
diff --git a/devel/py-backports_abc/Makefile b/devel/py-backports_abc/Makefile
new file mode 100644
index 000000000000..c72a9c997c95
--- /dev/null
+++ b/devel/py-backports_abc/Makefile
@@ -0,0 +1,20 @@
+# Created by: Grzegorz Blach <gblach@FreeBSD.org>
+# $FreeBSD$
+
+PORTNAME= backports_abc
+PORTVERSION= 0.5
+CATEGORIES= devel python
+MASTER_SITES= CHEESESHOP
+PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}
+
+MAINTAINER= sunpoet@FreeBSD.org
+COMMENT= Backport of recent additions to the 'collections.abc' module
+
+LICENSE= PSFL
+
+USES= python:2.7
+USE_PYTHON= autoplist distutils
+
+NO_ARCH= yes
+
+.include <bsd.port.mk>
diff --git a/devel/py-backports_abc/distinfo b/devel/py-backports_abc/distinfo
new file mode 100644
index 000000000000..fc86c4466250
--- /dev/null
+++ b/devel/py-backports_abc/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1479034599
+SHA256 (backports_abc-0.5.tar.gz) = 033be54514a03e255df75c5aee8f9e672f663f93abb723444caec8fe43437bde
+SIZE (backports_abc-0.5.tar.gz) = 9807
diff --git a/devel/py-backports_abc/pkg-descr b/devel/py-backports_abc/pkg-descr
new file mode 100644
index 000000000000..e3554ced923e
--- /dev/null
+++ b/devel/py-backports_abc/pkg-descr
@@ -0,0 +1,3 @@
+A backport of recent additions to the 'collections.abc' module.
+
+WWW: https://github.com/cython/backports_abc
diff --git a/devel/py-cheetah/Makefile b/devel/py-cheetah/Makefile
new file mode 100644
index 000000000000..8dcc59eef48e
--- /dev/null
+++ b/devel/py-cheetah/Makefile
@@ -0,0 +1,23 @@
+# Created by: Hye-Shik Chang <perky@FreeBSD.org>
+# $FreeBSD$
+
+PORTNAME= cheetah
+PORTVERSION= 2.4.4
+PORTREVISION= 1
+CATEGORIES= devel textproc www python
+MASTER_SITES= CHEESESHOP
+PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}
+DISTNAME= Cheetah-${DISTVERSION}
+
+MAINTAINER= nivit@FreeBSD.org
+COMMENT= HTML template engine for Python
+
+LICENSE= MIT
+LICENSE_FILE= ${WRKSRC}/LICENSE
+
+RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}markdown>=2.0.3:textproc/py-markdown@${PY_FLAVOR}
+
+USES= python:2.7
+USE_PYTHON= distutils autoplist
+
+.include <bsd.port.mk>
diff --git a/devel/py-cheetah/distinfo b/devel/py-cheetah/distinfo
new file mode 100644
index 000000000000..4b64ba824270
--- /dev/null
+++ b/devel/py-cheetah/distinfo
@@ -0,0 +1,2 @@
+SHA256 (Cheetah-2.4.4.tar.gz) = be308229f0c1e5e5af4f27d7ee06d90bb19e6af3059794e5fd536a6f29a9b550
+SIZE (Cheetah-2.4.4.tar.gz) = 190989
diff --git a/devel/py-cheetah/pkg-descr b/devel/py-cheetah/pkg-descr
new file mode 100644
index 000000000000..a0cd4eeb4b3f
--- /dev/null
+++ b/devel/py-cheetah/pkg-descr
@@ -0,0 +1,7 @@
+Cheetah is a Python-powered template engine and code generator. It
+can be used as a standalone utility or it can be combined with other
+tools. Cheetah has many potential uses, but web developers looking
+for a viable alternative to ASP, JSP, PHP and PSP are expected to
+be its principle user group.
+
+WWW: https://cheetahtemplate.org/
diff --git a/devel/py-dis3/Makefile b/devel/py-dis3/Makefile
new file mode 100644
index 000000000000..22f946796520
--- /dev/null
+++ b/devel/py-dis3/Makefile
@@ -0,0 +1,25 @@
+# Created by: Po-Chuan Hsieh <sunpoet@FreeBSD.org>
+# $FreeBSD$
+
+PORTNAME= dis3
+PORTVERSION= 0.1.3
+CATEGORIES= devel python
+MASTER_SITES= CHEESESHOP
+PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}
+
+MAINTAINER= sunpoet@FreeBSD.org
+COMMENT= Python 2.7 backport of the "dis" module from Python 3.5+
+
+LICENSE= MIT PSFL
+LICENSE_COMB= dual
+LICENSE_FILE= ${WRKSRC}/LICENSE
+
+DEPRECATED= Python 2 only, backport of Python 3
+EXPIRATION_DATE= 2020-12-31
+
+USES= python:2.7
+USE_PYTHON= autoplist distutils
+
+NO_ARCH= yes
+
+.include <bsd.port.mk>
diff --git a/devel/py-dis3/distinfo b/devel/py-dis3/distinfo
new file mode 100644
index 000000000000..c65dcee569f7
--- /dev/null
+++ b/devel/py-dis3/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1547581055
+SHA256 (dis3-0.1.3.tar.gz) = 9259b881fc1df02ed12ac25f82d4a85b44241854330b1a651e40e0c675cb2d1e
+SIZE (dis3-0.1.3.tar.gz) = 19134
diff --git a/devel/py-dis3/pkg-descr b/devel/py-dis3/pkg-descr
new file mode 100644
index 000000000000..b9e2c8c5e5e6
--- /dev/null
+++ b/devel/py-dis3/pkg-descr
@@ -0,0 +1,4 @@
+dis3 is a Python 2.7 backport of the dis module from Python 3.5.
+
+WWW: https://pypi.org/project/dis3/
+WWW: https://github.com/KeyWeeUsr/python-dis3
diff --git a/devel/py-enum34/Makefile b/devel/py-enum34/Makefile
new file mode 100644
index 000000000000..72fc02a6ab5a
--- /dev/null
+++ b/devel/py-enum34/Makefile
@@ -0,0 +1,32 @@
+# Created by: Muhammad Moinur Rahman <5u623l20@gmail.com>
+# $FreeBSD$
+
+PORTNAME= enum34
+PORTVERSION= 1.1.10
+CATEGORIES= devel python
+MASTER_SITES= CHEESESHOP
+PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}
+
+MAINTAINER= bofh@FreeBSD.org
+COMMENT= Python 3.4 Enum backported to 3.3, 3.2, 3.1, 2.7
+
+LICENSE= BSD3CLAUSE
+
+# Should be removed along with python2.7 and relevant vairables PY_ENUM34
+# EXPIRATION_DATE or python27 whichever happens later should be followed
+DEPRECATED= Will be removed along with python27
+EXPIRATION_DATE=2020-12-31
+
+USES= python:2.7
+USE_PYTHON= distutils autoplist
+OPTIONS_DEFINE= DOCS
+
+PORTDOCS= *
+DOCSDIR= ${PREFIX}/share/doc/py-${PORTNAME}
+NO_ARCH= yes
+
+post-install-DOCS-on:
+ @${MKDIR} ${STAGEDIR}${DOCSDIR}
+ (cd ${WRKSRC}/enum/doc && ${COPYTREE_SHARE} . ${STAGEDIR}${DOCSDIR})
+
+.include <bsd.port.mk>
diff --git a/devel/py-enum34/distinfo b/devel/py-enum34/distinfo
new file mode 100644
index 000000000000..dea910a9e236
--- /dev/null
+++ b/devel/py-enum34/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1601024411
+SHA256 (enum34-1.1.10.tar.gz) = cce6a7477ed816bd2542d03d53db9f0db935dd013b70f336a95c73979289f248
+SIZE (enum34-1.1.10.tar.gz) = 28187
diff --git a/devel/py-enum34/pkg-descr b/devel/py-enum34/pkg-descr
new file mode 100644
index 000000000000..bd49c029b892
--- /dev/null
+++ b/devel/py-enum34/pkg-descr
@@ -0,0 +1,5 @@
+An enumeration is a set of symbolic names (members) bound to unique, constant
+values. Within an enumeration, the members can be compared by identity, and
+the enumeration itself can be iterated over.
+
+WWW: https://pypi.org/project/enum34/
diff --git a/devel/py-functools32/Makefile b/devel/py-functools32/Makefile
new file mode 100644
index 000000000000..aa2fe0a7fccf
--- /dev/null
+++ b/devel/py-functools32/Makefile
@@ -0,0 +1,25 @@
+# $FreeBSD$
+
+PORTNAME= functools32
+PORTVERSION= 3.2.3
+PORTREVISION= 1
+CATEGORIES= devel python
+PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}
+
+MAINTAINER= wg@FreeBSD.org
+COMMENT= Backport of the functools module from Python 3.2.3 for use on 2.7
+
+LICENSE= PSFL
+
+DEPRECATED= Python 2 only, backport of Python 3
+EXPIRATION_DATE= 2020-12-31
+
+USE_GITHUB= yes
+GH_ACCOUNT= MiCHiLU
+GH_PROJECT= python-functools32
+GH_TAGNAME= ad90fa8
+
+USES= python:2.7
+USE_PYTHON= autoplist distutils
+
+.include <bsd.port.mk>
diff --git a/devel/py-functools32/distinfo b/devel/py-functools32/distinfo
new file mode 100644
index 000000000000..33262b39fd26
--- /dev/null
+++ b/devel/py-functools32/distinfo
@@ -0,0 +1,2 @@
+SHA256 (MiCHiLU-python-functools32-3.2.3-ad90fa8_GH0.tar.gz) = 93cb95e0bf53b84b36857d7d65192f1fab8e632500035203f116301352e12b95
+SIZE (MiCHiLU-python-functools32-3.2.3-ad90fa8_GH0.tar.gz) = 31582
diff --git a/devel/py-functools32/pkg-descr b/devel/py-functools32/pkg-descr
new file mode 100644
index 000000000000..daf3b78550ad
--- /dev/null
+++ b/devel/py-functools32/pkg-descr
@@ -0,0 +1,5 @@
+This is a backport of the Python 3.2 functools module for use on Python
+versions 2.7 and PyPy. It includes new features lru_cache (Least-recently-used
+cache decorator).
+
+WWW: https://github.com/MiCHiLU/python-functools32
diff --git a/devel/py-futures/Makefile b/devel/py-futures/Makefile
new file mode 100644
index 000000000000..b612642b2098
--- /dev/null
+++ b/devel/py-futures/Makefile
@@ -0,0 +1,27 @@
+# Created by: Kubilay Kocak <koobs@FreeBSD.org>
+# $FreeBSD$
+
+PORTNAME= futures
+PORTVERSION= 3.3.0
+CATEGORIES= devel python
+MASTER_SITES= CHEESESHOP
+PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}
+
+MAINTAINER= koobs@FreeBSD.org
+COMMENT= Backport of the concurrent.futures package from Python 3
+
+LICENSE= PSFL
+LICENSE_FILE= ${WRKSRC}/LICENSE
+
+USES= python:2.7
+USE_PYTHON= autoplist distutils
+
+NO_ARCH= yes
+
+# Some tests require 256 semaphores. Set the following sysctl(8)
+# before running tests: sysctl p1003_1b.sem_nsems_max=512
+
+do-test:
+ @cd ${WRKSRC} && ${PYTHON_CMD} test_futures.py
+
+.include <bsd.port.mk>
diff --git a/devel/py-futures/distinfo b/devel/py-futures/distinfo
new file mode 100644
index 000000000000..0678dcdc3ac7
--- /dev/null
+++ b/devel/py-futures/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1583297763
+SHA256 (futures-3.3.0.tar.gz) = 7e033af76a5e35f58e56da7a91e687706faf4e7bdfb2cbc3f2cca6b9bcda9794
+SIZE (futures-3.3.0.tar.gz) = 28729
diff --git a/devel/py-futures/pkg-descr b/devel/py-futures/pkg-descr
new file mode 100644
index 000000000000..04a54b4b0443
--- /dev/null
+++ b/devel/py-futures/pkg-descr
@@ -0,0 +1,8 @@
+Backport of the concurrent.futures package from Python 3.2
+
+The concurrent.futures module provides a high-level interface for
+asynchronously executing callables.
+
+This is described in PEP-3148 and is included in Python 3.2+
+
+WWW: https://github.com/agronholm/pythonfutures
diff --git a/devel/py-more-itertools5/Makefile b/devel/py-more-itertools5/Makefile
new file mode 100644
index 000000000000..a55ac165c2a9
--- /dev/null
+++ b/devel/py-more-itertools5/Makefile
@@ -0,0 +1,30 @@
+# Created by: William Grzybowski <wg@FreeBSD.org>
+# $FreeBSD$
+
+PORTNAME= more-itertools
+PORTVERSION= 5.0.0
+CATEGORIES= devel python
+MASTER_SITES= CHEESESHOP
+PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}
+PKGNAMESUFFIX= 5
+
+MAINTAINER= sunpoet@FreeBSD.org
+COMMENT= More routines for operating on iterables, beyond itertools
+
+LICENSE= MIT
+LICENSE_FILE= ${WRKSRC}/LICENSE
+
+RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}six>=1.0.0:devel/py-six@${PY_FLAVOR}
+
+USES= python:2.7
+USE_PYTHON= autoplist distutils
+
+NO_ARCH= yes
+
+# more-itertools 6.0.0+ requires Python 3.4+
+PORTSCOUT= limit:^5\.
+
+do-test:
+ @cd ${WRKSRC} && ${PYTHON_CMD} ${PYDISTUTILS_SETUP} test
+
+.include <bsd.port.mk>
diff --git a/devel/py-more-itertools5/distinfo b/devel/py-more-itertools5/distinfo
new file mode 100644
index 000000000000..3c1fd74f4a42
--- /dev/null
+++ b/devel/py-more-itertools5/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1548508633
+SHA256 (more-itertools-5.0.0.tar.gz) = 38a936c0a6d98a38bcc2d03fdaaedaba9f412879461dd2ceff8d37564d6522e4
+SIZE (more-itertools-5.0.0.tar.gz) = 67359
diff --git a/devel/py-more-itertools5/pkg-descr b/devel/py-more-itertools5/pkg-descr
new file mode 100644
index 000000000000..56c5583d5b9d
--- /dev/null
+++ b/devel/py-more-itertools5/pkg-descr
@@ -0,0 +1,7 @@
+Python's itertools library is a gem - you can compose elegant solutions for a
+variety of problems with the functions it provides.
+
+In more-itertools one collect additional building blocks, recipes, and routines
+for working with Python iterables.
+
+WWW: https://github.com/erikrose/more-itertools
diff --git a/devel/py-pathlib/Makefile b/devel/py-pathlib/Makefile
new file mode 100644
index 000000000000..9e9f1e548e2d
--- /dev/null
+++ b/devel/py-pathlib/Makefile
@@ -0,0 +1,33 @@
+# $FreeBSD$
+
+PORTNAME= pathlib
+PORTVERSION= 1.0.1
+PORTREVISION= 1
+CATEGORIES= devel python
+MASTER_SITES= CHEESESHOP
+PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}
+
+MAINTAINER= stiginge@pvv.org
+COMMENT= Python 3.4 pathlib backported to 3.3, 3.2, 3.1, 2.7, 2.6
+
+LICENSE= MIT
+LICENSE_FILE= ${WRKSRC}/LICENSE.txt
+
+USES= python:2.7
+USE_PYTHON= distutils autoplist
+
+NO_ARCH= yes
+
+OPTIONS_DEFINE= DOCS
+
+DOCS_BUILD_DEPENDS= ${PY_SPHINX}
+DOCSDIR= ${PREFIX}/share/doc/${PKGNAMEPREFIX}${PORTNAME}
+PORTDOCS= *
+DOCS_VARS= PYDISTUTILS_BUILD_TARGET+=build_sphinx
+
+post-install-DOCS-on:
+ @${MKDIR} ${STAGEDIR}${DOCSDIR}
+ (cd ${WRKSRC}/build/sphinx/html && \
+ ${COPYTREE_SHARE} . ${STAGEDIR}${DOCSDIR} "! -name .buildinfo -and ! -name objects.inv")
+
+.include <bsd.port.mk>
diff --git a/devel/py-pathlib/distinfo b/devel/py-pathlib/distinfo
new file mode 100644
index 000000000000..4f5640eb4155
--- /dev/null
+++ b/devel/py-pathlib/distinfo
@@ -0,0 +1,2 @@
+SHA256 (pathlib-1.0.1.tar.gz) = 6940718dfc3eff4258203ad5021090933e5c04707d5ca8cc9e73c94a7894ea9f
+SIZE (pathlib-1.0.1.tar.gz) = 49298
diff --git a/devel/py-pathlib/pkg-descr b/devel/py-pathlib/pkg-descr
new file mode 100644
index 000000000000..3222800906f6
--- /dev/null
+++ b/devel/py-pathlib/pkg-descr
@@ -0,0 +1,4 @@
+Backport of pathlib from Python 3.4. Offers a set of classes featuring all the
+common operations on paths in an easy, object-oriented way.
+
+WWW: https://pypi.org/project/pathlib/
diff --git a/devel/py-selectors2/Makefile b/devel/py-selectors2/Makefile
new file mode 100644
index 000000000000..65e3c66d6a11
--- /dev/null
+++ b/devel/py-selectors2/Makefile
@@ -0,0 +1,22 @@
+# $FreeBSD$
+
+PORTNAME= selectors2
+DISTVERSION= 2.0.2
+CATEGORIES= devel python
+MASTER_SITES= CHEESESHOP
+PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}
+
+MAINTAINER= john@saltant.com
+COMMENT= Backported, durable, and portable I/O selectors for Python
+
+LICENSE= MIT
+LICENSE_FILE= ${WRKSRC}/LICENSE
+
+DEPRECATED= Python 2 is EOL upstream
+EXPIRATION_DATE= 2020-12-31
+
+USES= python:2.7
+USE_PYTHON= distutils autoplist
+NO_ARCH= yes
+
+.include <bsd.port.mk>
diff --git a/devel/py-selectors2/distinfo b/devel/py-selectors2/distinfo
new file mode 100644
index 000000000000..01c2d11d03a4
--- /dev/null
+++ b/devel/py-selectors2/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1595861126
+SHA256 (selectors2-2.0.2.tar.gz) = 1f1bbaac203a23fbc851dc1b5a6e92c50698cc8cefa5873eb5b89eef53d1d82b
+SIZE (selectors2-2.0.2.tar.gz) = 18558
diff --git a/devel/py-selectors2/pkg-descr b/devel/py-selectors2/pkg-descr
new file mode 100644
index 000000000000..caebce17d99a
--- /dev/null
+++ b/devel/py-selectors2/pkg-descr
@@ -0,0 +1,4 @@
+Backported, durable, and portable selectors designed to replace the
+standard library selectors module.
+
+WWW: https://www.github.com/SethMichaelLarson/selectors2
diff --git a/devel/py-should_dsl/Makefile b/devel/py-should_dsl/Makefile
new file mode 100644
index 000000000000..62ab879e3f61
--- /dev/null
+++ b/devel/py-should_dsl/Makefile
@@ -0,0 +1,19 @@
+# $FreeBSD$
+
+PORTNAME= should_dsl
+PORTVERSION= 2.1.2
+CATEGORIES= devel python
+MASTER_SITES= CHEESESHOP
+PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}
+
+MAINTAINER= truckman@FreeBSD.org
+COMMENT= Should assertions in Python as clear and readable as possible
+
+LICENSE= MIT
+LICENSE_FILE= ${WRKSRC}/LICENSE
+
+NO_ARCH= yes
+USES= python:2.7
+USE_PYTHON= autoplist distutils
+
+.include <bsd.port.mk>
diff --git a/devel/py-should_dsl/distinfo b/devel/py-should_dsl/distinfo
new file mode 100644
index 000000000000..3713d02696f0
--- /dev/null
+++ b/devel/py-should_dsl/distinfo
@@ -0,0 +1,2 @@
+SHA256 (should_dsl-2.1.2.tar.gz) = 36f753d90fbdf84ef2b7a9e07813e3efac725376feb7a793549f3fff7a03232a
+SIZE (should_dsl-2.1.2.tar.gz) = 13650
diff --git a/devel/py-should_dsl/pkg-descr b/devel/py-should_dsl/pkg-descr
new file mode 100644
index 000000000000..47d04a77cf8c
--- /dev/null
+++ b/devel/py-should_dsl/pkg-descr
@@ -0,0 +1,3 @@
+Should assertions in Python as clear and readable as possible
+
+WWW: https://pypi.org/project/should_dsl/
diff --git a/devel/py-singledispatch/Makefile b/devel/py-singledispatch/Makefile
new file mode 100644
index 000000000000..5e159f65f06a
--- /dev/null
+++ b/devel/py-singledispatch/Makefile
@@ -0,0 +1,23 @@
+# Created by: Juergen Lock <nox@FreeBSD.org>
+# $FreeBSD$
+
+PORTNAME= singledispatch
+PORTVERSION= 3.4.0.3
+PORTREVISION= 1
+CATEGORIES= devel python
+MASTER_SITES= CHEESESHOP
+PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}
+
+MAINTAINER= python@FreeBSD.org
+COMMENT= Backport of functools.singledispatch from Python 3.4
+
+LICENSE= MIT
+
+RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}six>0:devel/py-six@${PY_FLAVOR}
+
+USES= python:2.7
+USE_PYTHON= distutils concurrent autoplist
+
+NO_ARCH= yes
+
+.include <bsd.port.mk>
diff --git a/devel/py-singledispatch/distinfo b/devel/py-singledispatch/distinfo
new file mode 100644
index 000000000000..a11a008dad49
--- /dev/null
+++ b/devel/py-singledispatch/distinfo
@@ -0,0 +1,2 @@
+SHA256 (singledispatch-3.4.0.3.tar.gz) = 5b06af87df13818d14f08a028e42f566640aef80805c3b50c5056b086e3c2b9c
+SIZE (singledispatch-3.4.0.3.tar.gz) = 9529
diff --git a/devel/py-singledispatch/pkg-descr b/devel/py-singledispatch/pkg-descr
new file mode 100644
index 000000000000..949aaea97e88
--- /dev/null
+++ b/devel/py-singledispatch/pkg-descr
@@ -0,0 +1,10 @@
+This library brings functools.singledispatch from Python 3.4 to
+Python 2.6-3.3.
+
+PEP 443 proposed to expose a mechanism in the functools standard
+library module in Python 3.4 that provides a simple form of generic
+programming known as single-dispatch generic functions.
+
+This library is a backport of this functionality to Python 2.6 - 3.3.
+
+WWW: https://pypi.org/project/singledispatch/
diff --git a/devel/py-subprocess32/Makefile b/devel/py-subprocess32/Makefile
new file mode 100644
index 000000000000..2658ebb5c71b
--- /dev/null
+++ b/devel/py-subprocess32/Makefile
@@ -0,0 +1,24 @@
+# $FreeBSD$
+
+PORTNAME= subprocess32
+DISTVERSION= 3.5.4
+CATEGORIES= devel python
+MASTER_SITES= CHEESESHOP
+PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}
+
+MAINTAINER= dbaio@FreeBSD.org
+COMMENT= Backport of the subprocess module from Python 3
+
+LICENSE= PSFL
+LICENSE_FILE= ${WRKSRC}/LICENSE
+
+DEPRECATED= Python 2 only, following EOL of lang/python27
+EXPIRATION_DATE= 2020-12-31
+
+USES= python:2.7
+USE_PYTHON= autoplist distutils
+
+post-install:
+ ${STRIP_CMD} ${STAGEDIR}${PYTHON_SITELIBDIR}/_posixsubprocess32.so
+
+.include <bsd.port.mk>
diff --git a/devel/py-subprocess32/distinfo b/devel/py-subprocess32/distinfo
new file mode 100644
index 000000000000..042762426e1a
--- /dev/null
+++ b/devel/py-subprocess32/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1601241537
+SHA256 (subprocess32-3.5.4.tar.gz) = eb2937c80497978d181efa1b839ec2d9622cf9600a039a79d0e108d1f9aec79d
+SIZE (subprocess32-3.5.4.tar.gz) = 97373
diff --git a/devel/py-subprocess32/pkg-descr b/devel/py-subprocess32/pkg-descr
new file mode 100644
index 000000000000..d6a89d6fb8c2
--- /dev/null
+++ b/devel/py-subprocess32/pkg-descr
@@ -0,0 +1,9 @@
+This is a backport of the Python 3 subprocess module for use on Python 2. This
+code has not been tested on Windows or other non-POSIX platforms.
+
+subprocess32 includes many important reliability bug fixes relevant on POSIX
+platforms. The most important of which is a C extension module used internally
+to handle the code path between fork() and exec(). This module is reliable when
+an application is using threads.
+
+WWW: https://github.com/google/python-subprocess32
diff --git a/devel/py-total-ordering/Makefile b/devel/py-total-ordering/Makefile
new file mode 100644
index 000000000000..510945750148
--- /dev/null
+++ b/devel/py-total-ordering/Makefile
@@ -0,0 +1,16 @@
+# $FreeBSD$
+
+PORTNAME= total-ordering
+PORTVERSION= 0.1.0
+CATEGORIES= devel python
+MASTER_SITES= CHEESESHOP
+PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}
+
+MAINTAINER= truckman@FreeBSD.org
+COMMENT= Backport functools.total_ordering to Python 2.x
+
+NO_ARCH= yes
+USES= python:2.7
+USE_PYTHON= autoplist distutils
+
+.include <bsd.port.mk>
diff --git a/devel/py-total-ordering/distinfo b/devel/py-total-ordering/distinfo
new file mode 100644
index 000000000000..c5140e98da4e
--- /dev/null
+++ b/devel/py-total-ordering/distinfo
@@ -0,0 +1,2 @@
+SHA256 (total-ordering-0.1.0.tar.gz) = a14a2a138a52befaa02b3fd53eb3366f66da69020be299af3cf0b54c9441aacc
+SIZE (total-ordering-0.1.0.tar.gz) = 1839
diff --git a/devel/py-total-ordering/pkg-descr b/devel/py-total-ordering/pkg-descr
new file mode 100644
index 000000000000..b382e7a54b6a
--- /dev/null
+++ b/devel/py-total-ordering/pkg-descr
@@ -0,0 +1,3 @@
+functools.total_ordering backport for Python 2.x
+
+WWW: https://github.com/kvesteri/total-ordering
diff --git a/devel/py-typing/Makefile b/devel/py-typing/Makefile
new file mode 100644
index 000000000000..8038990a705d
--- /dev/null
+++ b/devel/py-typing/Makefile
@@ -0,0 +1,23 @@
+# $FreeBSD$
+
+PORTNAME= typing
+PORTVERSION= 3.7.4.1
+CATEGORIES= devel python
+MASTER_SITES= CHEESESHOP
+PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}
+
+MAINTAINER= rm@FreeBSD.org
+COMMENT= Type Hints for Python
+
+LICENSE= PSFL
+LICENSE_FILE= ${WRKSRC}/LICENSE
+
+DEPRECATED= Python 2 only, backport of Python 3
+EXPIRATION_DATE= 2020-12-31
+
+USES= python:2.7
+USE_PYTHON= autoplist distutils
+
+NO_ARCH= yes
+
+.include <bsd.port.mk>
diff --git a/devel/py-typing/distinfo b/devel/py-typing/distinfo
new file mode 100644
index 000000000000..3c152f961ff8
--- /dev/null
+++ b/devel/py-typing/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1582223012
+SHA256 (typing-3.7.4.1.tar.gz) = 91dfe6f3f706ee8cc32d38edbbf304e9b7583fb37108fef38229617f8b3eba23
+SIZE (typing-3.7.4.1.tar.gz) = 77982
diff --git a/devel/py-typing/pkg-descr b/devel/py-typing/pkg-descr
new file mode 100644
index 000000000000..bd205715df0f
--- /dev/null
+++ b/devel/py-typing/pkg-descr
@@ -0,0 +1,8 @@
+This is a backport of the standard library typing module to Python
+versions older than 3.5.
+Typing defines a standard notation for Python function and variable type
+annotations. The notation can be used for documenting code in a concise,
+standard format, and it has been designed to also be used by static and
+runtime type checkers, static analyzers, IDEs and other tools.
+
+WWW: https://pypi.org/project/typing/
diff --git a/devel/py-weakrefmethod/Makefile b/devel/py-weakrefmethod/Makefile
new file mode 100644
index 000000000000..ea50f02bdbac
--- /dev/null
+++ b/devel/py-weakrefmethod/Makefile
@@ -0,0 +1,23 @@
+# Created by: antoine@FreeBSD.org
+# $FreeBSD$
+
+PORTNAME= weakrefmethod
+PORTVERSION= 1.0.3
+CATEGORIES= devel python
+MASTER_SITES= CHEESESHOP
+PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}
+
+MAINTAINER= antoine@FreeBSD.org
+COMMENT= WeakMethod class for storing bound methods using weak references
+
+LICENSE= PSFL
+LICENSE_FILE= ${WRKSRC}/LICENSE
+
+DEPRECATED= Python 2 only, backport of Python 3
+EXPIRATION_DATE= 2020-12-31
+
+NO_ARCH= yes
+USES= python:2.7
+USE_PYTHON= distutils autoplist
+
+.include <bsd.port.mk>
diff --git a/devel/py-weakrefmethod/distinfo b/devel/py-weakrefmethod/distinfo
new file mode 100644
index 000000000000..9fe5230460fc
--- /dev/null
+++ b/devel/py-weakrefmethod/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1477213167
+SHA256 (weakrefmethod-1.0.3.tar.gz) = 37bc1fbb5575acf82172d4eb7b6fc4412d77d5a1d70dff2c1f8a4574301cda66
+SIZE (weakrefmethod-1.0.3.tar.gz) = 7472
diff --git a/devel/py-weakrefmethod/pkg-descr b/devel/py-weakrefmethod/pkg-descr
new file mode 100644
index 000000000000..3f8b9df6ea0e
--- /dev/null
+++ b/devel/py-weakrefmethod/pkg-descr
@@ -0,0 +1,3 @@
+A WeakMethod class for storing bound methods using weak references.
+
+WWW: https://github.com/twang817/weakrefmethod
diff --git a/devel/rbtools/Makefile b/devel/rbtools/Makefile
new file mode 100644
index 000000000000..705a70d87d1a
--- /dev/null
+++ b/devel/rbtools/Makefile
@@ -0,0 +1,25 @@
+# $FreeBSD$
+
+PORTNAME= ${ORIGNAME:tl}
+DISTVERSION= 0.7.11
+CATEGORIES= devel
+MASTER_SITES= http://downloads.reviewboard.org/releases/${ORIGNAME}/${DISTVERSION:R}/
+DISTNAME= ${ORIGNAME}-${DISTVERSION}
+
+MAINTAINER= rakuco@FreeBSD.org
+COMMENT= Set of client tools to use with Review Board
+
+LICENSE= MIT
+LICENSE_FILE= ${WRKSRC}/COPYING
+
+RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}six>=1.8.0:devel/py-six@${PY_FLAVOR} \
+ ${PYTHON_PKGNAMEPREFIX}sqlite3>0:databases/py-sqlite3@${PY_FLAVOR} \
+ ${PYTHON_PKGNAMEPREFIX}tqdm>0:misc/py-tqdm@${PY_FLAVOR}
+
+ORIGNAME= RBTools
+
+NO_ARCH= yes
+USES= python:2.7
+USE_PYTHON= autoplist distutils
+
+.include <bsd.port.mk>
diff --git a/devel/rbtools/distinfo b/devel/rbtools/distinfo
new file mode 100644
index 000000000000..914c0a0e4435
--- /dev/null
+++ b/devel/rbtools/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1516459636
+SHA256 (RBTools-0.7.11.tar.gz) = 26de153a76d6a3c5bea3442151473857a74338c18ff628acfcfa6c258998f258
+SIZE (RBTools-0.7.11.tar.gz) = 171777
diff --git a/devel/rbtools/pkg-descr b/devel/rbtools/pkg-descr
new file mode 100644
index 000000000000..713b842bce2c
--- /dev/null
+++ b/devel/rbtools/pkg-descr
@@ -0,0 +1,4 @@
+rbtools is a collection of console utility scripts for use with
+Review Board.
+
+WWW: http://www.reviewboard.org/
diff --git a/devel/subversion-lts/Makefile b/devel/subversion-lts/Makefile
new file mode 100644
index 000000000000..50b697d45df1
--- /dev/null
+++ b/devel/subversion-lts/Makefile
@@ -0,0 +1,227 @@
+# Created by: rooneg@electricjellyfish.net
+# $FreeBSD$
+
+PORTREVISION= 0
+PKGNAMESUFFIX= -lts
+
+MAINTAINER= lev@FreeBSD.org
+COMMENT= Version control system, long-time-support version
+
+CONFLICTS_INSTALL= subversion-1.[0-9].[0-9]* \
+ subversion-1.1[0-9].[0-9]* \
+ subversion1[0-9]-1.[0-9].[0-9]*
+
+USE_RC_SUBR= svnserve
+
+PORTDOCS= BUGS CHANGES COMMITTERS INSTALL README
+
+OPTIONS_DEFINE= \
+ BDB \
+ DOCS \
+ FREEBSD_TEMPLATE\
+ GPG_AGENT \
+ NLS \
+ SASL \
+ SERF \
+ STATIC \
+ SVNSERVE_WRAPPER\
+ TEST \
+ TOOLS
+
+OPTIONS_DEFAULT=FREEBSD_TEMPLATE SERF TOOLS
+
+FREEBSD_TEMPLATE_DESC= FreeBSD Project log template
+GPG_AGENT_DESC= Enable GPG agent password store
+SERF_DESC= WebDAV/Delta-V (HTTP/HTTPS) repo access module
+STATIC_DESC= Build static version (no shared libs)
+SVNSERVE_WRAPPER_DESC= Enable svnserve wrapper (umask setter)
+TEST_DESC= Run subversion test suite
+TOOLS_DESC= Install several tools
+
+# Patches required for use with the FreeBSD Project repository only
+FREEBSD_TEMPLATE_EXTRA_PATCHES= ${PATCHDIR}/extra-patch-fbsd-template
+SVNSERVE_WRAPPER_EXTRA_PATCHES= ${PATCHDIR}/extra-patch-svnserve-wrapper
+
+USES+= shebangfix python:2.7,env
+python_OLD_CMD+= "/bin/env python"
+SHEBANG_REGEX= ./tools/.*
+
+.include "Makefile.common"
+
+SVNREPOS?= /home/svn/repos
+SVNFSTYPE?= fsfs
+SVNGROUP?= svn
+SVNUSER?= svn
+
+CONFIGURE_ARGS+= --without-gnome-keyring \
+ --without-kwallet \
+ --with-apxs=no
+
+.if ${PORT_OPTIONS:MSVNSERVE_WRAPPER}
+SUB_LIST+= SVNSERVE_BIN_EXT=".bin"
+PLIST_SUB+= NO_SVNSERVE_WRAPPER="@comment "
+.else
+SUB_LIST+= SVNSERVE_BIN_EXT=""
+PLIST_SUB+= NO_SVNSERVE_WRAPPER=""
+.endif
+
+.if ${PORT_OPTIONS:MTEST}
+TEST_DEPENDS= ${PYTHON_PKGNAMEPREFIX}sqlite3>0:databases/py-sqlite3@${PY_FLAVOR}
+.endif
+
+.if ${PORT_OPTIONS:MSTATIC}
+. if ${PORT_OPTIONS:MNLS}
+USES+= gettext-tools
+. endif
+. if ${PORT_OPTIONS:MBDB}
+BDB_BUILD_DEPENDS= yes
+. endif
+OLD_LIB_DEPENDS:= ${LIB_DEPENDS:S!^!${LOCALBASE}/lib/!:C!(\.so|\.[0-9]+)?:!.a:!}
+BUILD_DEPENDS+= ${OLD_LIB_DEPENDS}
+LIB_DEPENDS=
+.endif
+
+.if make(repository)
+WITH_REPOSITORY_CREATION= yes
+.endif
+
+.if defined(WITH_REPOSITORY_CREATION)
+MKREPOS_TARGET= _mkrepos
+.endif
+
+pre-everything::
+ @${ECHO_MSG} ""
+.if defined(WITH_REPOSITORY_CREATION)
+ @${ECHO_MSG} "I will create (or use, if it exists) '${SVNUSER}' user and '${SVNGROUP}' group."
+ @${ECHO_MSG} "Make sure that all committers are its members."
+ @${ECHO_MSG} ""
+ @${ECHO_MSG} "Repository will be created at '${SVNREPOS}' with user '${SVNUSER}' and group '${SVNGROUP}'."
+ @${ECHO_MSG} "Type of repository will be '${SVNFSTYPE}'."
+ @${ECHO_MSG} "You could change these settings by defining SVNREPOS, SVNGROUP and SVNFSTYPE."
+.else
+ @${ECHO_MSG} "You can have the repository created for you by defining"
+ @${ECHO_MSG} "WITH_REPOSITORY_CREATION."
+ @${ECHO_MSG} ""
+ @${ECHO_MSG} "Make sure that:"
+ @${ECHO_MSG} "* all your svn users are members of a common group"
+ @${ECHO_MSG} "* this group is the group id of the db/ and locks/"
+ @${ECHO_MSG} " subdirectories of your repository"
+ @${ECHO_MSG} "* the above subdirectories are writable by this group"
+.endif
+
+ @${ECHO_MSG} ""
+.if ${PORT_OPTIONS:MSTATIC}
+ @${ECHO_MSG} "Static binaries will be built."
+.endif # STATIC
+ @${ECHO_MSG} "Many useful scripts will be installed into ${DATADIR}"
+
+pre-configure:
+.if ${PORT_OPTIONS:MBDB}
+ @BDB_VERSION=`${APR_APU_DIR}/${APU_CONFIG} --db-version`; \
+ if [ "$${BDB_VERSION}" != "4" -a "$${BDB_VERSION}" != "5" -a "$${BDB_VERSION}" != "6" ] ; then \
+ ${ECHO_MSG} "" ; \
+ ${ECHO_MSG} 'You should build `'"devel/apr1' with Berkeley DB (4, 5 or 6) support to use subversion with it." ; \
+ ${ECHO_MSG} 'Please rebuild `'"devel/apr1' with option "'`'"BDB' and try again." ; \
+ ${ECHO_MSG} "" ; \
+ ${ECHO_MSG} "Or you can disable Berkeley DB support. Only 'fs' repository backend will be available." ; \
+ ${ECHO_MSG} "" ; \
+ ${FALSE} ; \
+ fi
+.endif
+.if ${PORT_OPTIONS:MSTATIC}
+LIBS_SQLITE3!= pkgconf --libs --static sqlite3
+LIBS+= ${LIBS_SQLITE3}
+# for work with ICU
+LIBS+= -lc++ -lm
+.endif
+
+post-configure:
+# Enable GNOME Keyring / KWallet support in main code, as it is harmless
+ @${REINPLACE_CMD} -E 's%.*#undef SVN_HAVE_(GNOME_KEYRING|KWALLET).*%#define SVN_HAVE_\1 1%' ${WRKSRC}/subversion/svn_private_config.h
+# ugly hack: save tools directory so we don't have to cleanup before installing
+ @${CP} -R ${WRKSRC}/tools ${WRKSRC}/tools.examples
+ @${CHMOD} -R a-st,o+rX ${WRKSRC}/tools.examples
+
+# takes a long time, and will fail but gives maintainer a good oversight
+.if ${PORT_OPTIONS:MTEST}
+test: build
+ -@make check -C ${WRKSRC}
+.endif
+
+post-build-TOOLS-on:
+ @${MAKE} -C ${WRKSRC} tools ${MAKE_ARGS}
+
+post-install: ${MKREPOS_TARGET}
+ -@${STRIP_CMD} ${STAGEDIR}${PREFIX}/bin/*
+ @${MKDIR} ${STAGEDIR}${DATADIR}
+ (cd ${WRKSRC}/tools.examples && ${TAR} --exclude '*.in' -cf - * | ${TAR} -C ${STAGEDIR}${DATADIR} -xof - )
+ @${MKDIR} ${STAGEDIR}${DOCSDIR}
+ ${INSTALL_DATA} ${PORTDOCS:S|^|${WRKSRC}/|} ${STAGEDIR}${DOCSDIR}
+
+post-install-STATIC-off:
+ -@${STRIP_CMD} ${STAGEDIR}${PREFIX}/lib/*.so
+
+post-install-SVNSERVE_WRAPPER-on:
+ @${INSTALL_SCRIPT} ${FILESDIR}/svnserve.wrapper ${STAGEDIR}${PREFIX}/bin/svnserve.sample
+
+post-install-TOOLS-on:
+ @${MAKE} -C ${WRKSRC} install-tools ${MAKE_ARGS}
+ -@${STRIP_CMD} ${STAGEDIR}${PREFIX}/bin/*
+
+# ===============================================================================
+repository: _mkrepos
+
+_SVNGRPFILES= db locks locks/db.lock locks/db-logs.lock
+SVNGRPFILES= ${_SVNGRPFILES:S,^,${SVNREPOS}/,}
+
+_mkrepos: .USE
+.if !exists(${SVNREPOS})
+.if ${PORT_OPTIONS:MSVNSERVE_WRAPPER}
+ @if /usr/sbin/pw groupshow "${SVNGROUP}" >/dev/null 2>&1; then \
+ ${ECHO_MSG} "You already have a group \"${SVNGROUP}\", so I will use it."; \
+ else \
+ if /usr/sbin/pw groupadd ${SVNGROUP} -h -; \
+ then \
+ ${ECHO_MSG} "Added group \"${SVNGROUP}\"."; \
+ else \
+ ${ECHO_MSG} "Adding group \"${SVNGROUP}\" failed..."; \
+ ${ECHO_MSG} "Please create it, and try again."; \
+ ${FALSE}; \
+ fi; \
+ fi
+ @if /usr/sbin/pw usershow "${SVNUSER}" >/dev/null 2>&1; then \
+ ${ECHO_MSG} "You already have a user \"${SVNUSER}\", so I will use it."; \
+ else \
+ if /usr/sbin/pw useradd ${SVNUSER} -h -; \
+ then \
+ ${ECHO_MSG} "Added user \"${SVNUSER}\"."; \
+ else \
+ ${ECHO_MSG} "Adding user \"${SVNUSER}\" failed..."; \
+ ${ECHO_MSG} "Please create it, and try again."; \
+ ${FALSE}; \
+ fi; \
+ fi
+.endif
+ @${MKDIR} ${SVNREPOS}
+ @${PREFIX}/bin/svnadmin create --fs-type ${SVNFSTYPE} ${SVNREPOS}
+.if ${PORT_OPTIONS:MSVNSERVE_WRAPPER}
+ @${CHOWN} ${SVNUSER}:${SVNGROUP} ${SVNGRPFILES}
+ @${CHMOD} g+w ${SVNGRPFILES}
+ @for i in ${SVNREPOS}/db/* ; do \
+ i=$${i##*/}; \
+ case $$i in \
+ DB_CONFIG|fs-type|uuid) ;; \
+ *) ${CHOWN} -R ${SVNUSER}:${SVNGROUP} ${SVNREPOS}/db/$$i; \
+ ${CHMOD} -R g+w ${SVNREPOS}/db/$$i; \
+ ;; \
+ esac; \
+ done
+.endif
+.endif
+
+svn-build-outputs-hack:
+ (cd ${WRKSRC} && ${PATCH} ${PATCH_DIST_ARGS} -p0 < ${PATCHDIR}/extra-patch-build.conf)
+ (cd ${WRKSRC} && python2.7 gen-make.py --release --installed-libs libsvn_client,libsvn_delta,libsvn_diff,libsvn_fs,libsvn_fs_x,libsvn_ra,libsvn_repos,libsvn_subr,libsvn_wc)
+ ${MV} ${WRKSRC}/build-outputs.mk ${FILESDIR}/build-outputs.mk.addons
+
+.include <bsd.port.post.mk>
diff --git a/devel/subversion-lts/Makefile.common b/devel/subversion-lts/Makefile.common
new file mode 100644
index 000000000000..057584c8ef5f
--- /dev/null
+++ b/devel/subversion-lts/Makefile.common
@@ -0,0 +1,115 @@
+# Created by: rooneg@electricjellyfish.net
+# $FreeBSD$
+
+PORTNAME?= subversion
+PORTVERSION= 1.10.6
+PORTREVISION?= 0
+CATEGORIES+= devel
+MASTER_SITES= APACHE/subversion
+
+GNU_CONFIGURE= yes
+USES+= cpe libtool pathfix pkgconfig shebangfix tar:bzip2
+SHEBANG_FILES= tools/server-side/svnpubsub/rc.d/svnpubsub.solaris \
+ tools/server-side/svnpubsub/rc.d/svnwcsub.solaris
+
+LICENSE= APACHE20
+
+CPE_VENDOR= apache
+
+CONFLICTS_INSTALL+= ${PKGNAMEPREFIX}${PORTNAME}${PKGNAMESUFFIX}-1.[0-9].[0-9]* \
+ ${PKGNAMEPREFIX}${PORTNAME}${PKGNAMESUFFIX}-1.1[0-9].[0-9]*
+
+LIB_DEPENDS+= libapr-1.so:devel/apr1 \
+ libsqlite3.so:databases/sqlite3 \
+ libexpat.so:textproc/expat2 \
+ libutf8proc.so:textproc/utf8proc \
+ liblz4.so:archivers/liblz4
+
+CONFIGURE_ARGS+= --without-swig \
+ --with-sqlite=${LOCALBASE} \
+ --with-expat=${LOCALBASE}/include:${LOCALBASE}/lib:expat
+
+# ===============================================================
+OPTIONS_SUB= yes
+
+BDB_CONFIGURE_ON= --enable-bdb6
+BDB_CONFIGURE_OFF= --without-berkeley-db
+BDB_USES= bdb
+
+NLS_CONFIGURE_OFF= --disable-nls
+NLS_USES= gettext
+
+SASL_CONFIGURE_OFF= --without-sasl
+SASL_CONFIGURE_ON= --with-sasl=${LOCALBASE}
+SASL_LIB_DEPENDS= libsasl2.so:security/cyrus-sasl2
+
+SERF_CONFIGURE_OFF= --without-serf
+SERF_CONFIGURE_ON= --with-serf
+SERF_LIB_DEPENDS= libserf-1.so:www/serf
+
+GPG_AGENT_CONFIGURE_OFF= --without-gpg-agent
+GPG_AGENT_CONFIGURE_ON= --with-gpg-agent
+GPG_AGENT_BUILD_DEPENDS= gpg-agent:security/gnupg
+GPG_AGENT_RUN_DEPENDS= gpg-agent:security/gnupg
+
+STATIC_CONFIGURE_ON= --enable-all-static PKG_CONFIG="${LOCALBASE}/bin/pkg-config --static"
+
+# ===============================================================
+.include <bsd.port.options.mk>
+
+.if defined(WITH_DEBUG)
+CONFIGURE_ARGS+= --enable-maintainer-mode --enable-debug
+.endif
+
+APR_CONFIG= ${LOCALBASE}/bin/apr-1-config
+APU_CONFIG= ${LOCALBASE}/bin/apu-1-config
+
+CONFIGURE_ARGS+=--with-apr=${APR_CONFIG} --with-apr-util=${APU_CONFIG}
+
+.if ${ARCH} == "amd64" || ${ARCH} == "ia64"
+CFLAGS+= -fpic -DPIC
+.endif
+
+OPTIONS_FILE_UNSET?=""
+OPTIONS_FILE_SET?=""
+
+.if ( ${PORT_OPTIONS:MFREEBSD_TEMPLATE} || !${OPTIONS_FILE_UNSET:MFREEBSD_TEMPLATE} ) && defined(ORGANIZATION)
+CFLAGS+= -DHAS_ORGANIZATION_NAME
+.endif
+
+.include <bsd.port.pre.mk>
+
+pre-everything::
+.if defined(SVN_BUILD_ADDONS)
+.if ${PORT_OPTIONS:MSTATIC} || ${OPTIONS_FILE_SET:MSTATIC}
+ @${ECHO_MSG} "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
+ @${ECHO_MSG} "!!! addons (bindings, mod_dav_svn, etc). and static build are not compatible !!!"
+ @${ECHO_MSG} "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
+ @${FALSE}
+.endif
+.endif
+
+pre-patch:
+.if defined(SVN_BUILD_ADDONS)
+ @${CP} ${FILESDIR}/build-outputs.mk.addons ${WRKSRC}/build-outputs.mk
+.endif
+
+post-patch:
+.if ${PREFIX} != "/usr"
+ @${REINPLACE_CMD} "s#/etc/subversion#${ETCDIR}#g" ${WRKSRC}/subversion/libsvn_subr/config_file.c
+ @${REINPLACE_CMD} "s#/etc/subversion#${ETCDIR}#g" ${WRKSRC}/subversion/libsvn_subr/config_impl.h
+.endif
+ @${REINPLACE_CMD} "s#^swig_pydir =.*#swig_pydir = ${PYTHON_SITELIBDIR}/libsvn#" ${WRKSRC}/Makefile.in
+ @${REINPLACE_CMD} "s#^swig_pydir_extra =.*#swig_pydir_extra = ${PYTHON_SITELIBDIR}/svn#" ${WRKSRC}/Makefile.in
+.if ( ${PORT_OPTIONS:MFREEBSD_TEMPLATE} || !${OPTIONS_FILE_UNSET:MFREEBSD_TEMPLATE} ) && defined(ORGANIZATION)
+ @${ECHO_CMD} "#define ORGANIZATION_NAME \"${ORGANIZATION}\"" > ${WRKSRC}/subversion/freebsd-organization.h
+.endif
+# shebangfix
+ @${FIND} ${WRKSRC}/tools/ -type f -exec ${GREP} -l -e '#!/bin/b' -e '#!/bin/env' \
+ -e '#!/usr/bin/p' {} + | ${XARGS} ${REINPLACE_CMD} -e \
+ '1s|#\!/bin/b|#\!/usr/local/bin/b|' \
+ -e '1s|#\!/bin/env|#\!/usr/bin/env|' \
+ -e '1s|#\!/usr/bin/p|#\!/usr/local/bin/p|'
+# remove all .bak files to clean the stage
+ @${FIND} ${WRKSRC} -name '*.bak' -delete
+
diff --git a/devel/subversion-lts/distinfo b/devel/subversion-lts/distinfo
new file mode 100644
index 000000000000..9a2e6a2cf50a
--- /dev/null
+++ b/devel/subversion-lts/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1563993998
+SHA256 (subversion-1.10.6.tar.bz2) = 18c8e72691e6d2e7d3137ae4ad98b9f8977cca5eb2504fab48d55e584b10eca7
+SIZE (subversion-1.10.6.tar.bz2) = 8397762
diff --git a/devel/subversion-lts/files/220_subversion.conf.sample.in b/devel/subversion-lts/files/220_subversion.conf.sample.in
new file mode 100644
index 000000000000..07bd9a5e1c7a
--- /dev/null
+++ b/devel/subversion-lts/files/220_subversion.conf.sample.in
@@ -0,0 +1,104 @@
+## $FreeBSD$
+## vim: set filetype=apache:
+##
+## module file for subversion
+##
+## PROVIDE: mod_dav_svn mod_authz_svn mod_dontdothat
+## REQUIRE: mod_dav
+
+## make sure the following module is activated (httpd.conf or here)
+## LoadModule dav_module %%APACHEMODDIR%%/mod_dav.so
+
+
+## ==========================================================================
+## Subversion modules
+## ==========================================================================
+#LoadModule dav_svn_module %%APACHEMODDIR%%/mod_dav_svn.so
+#LoadModule authz_svn_module %%APACHEMODDIR%%/mod_authz_svn.so
+#LoadModule dontdothat_module %%APACHEMODDIR%%/mod_dontdothat.so
+
+
+## ==========================================================================
+## Example multi repo configuration from
+## http://svnbook.red-bean.com/
+##
+## The Printed book can be ordered from
+## http://svnbook.red-bean.com/buy/
+##
+## ==========================================================================
+## Required apache24 modules for the example below:
+## mod_alias mod_auth_digest, mod_authn_core, mod_authn_file,
+## mod_authz_core, mod_authz_user, mod_dav
+##
+## ==========================================================================
+##
+## The trailing '/' in /svn/ is needed to browse repos with standart browser!
+## RedirectMatch ^(/svn)$ $1/
+##
+## Tuning:
+## KeepAlive on
+## MaxKeepAliveRequests 1000
+##
+## # http://subversion.apache.org/docs/release-notes/1.7.html#server-performance-tuning
+## # Calculate your own values!
+## # For mod_dav_svn, a 1GB cache configuration with maximum data coverage looks like this
+## <IfModule dav_svn_module>
+## SVNInMemoryCacheSize 1048576
+## SVNCacheFullTexts on
+## SVNCacheTextDeltas on
+## </IfModule>
+##
+## Multiple Repos with Digest auth:
+## - AuthName is an arbitrary name that you choose for the authentication
+## domain. Most browsers display this name in the dialog box when prompting
+## for username and password.
+## - AuthType specifies the type of authentication to use.
+## - AuthUserFile specifies the location of the password file to use.
+##
+##<IfModule dav_svn_module>
+##<Location /svn/>
+## <ifModule mime_module>
+## RemoveEncoding .gz .tgz .Z
+## RemoveType .gz .tgz .Z
+## </ifModule>
+##
+## # Enable Subversion
+## DAV svn
+##
+## # Directory containing all repository for this path
+## SVNParentPath /space/svn/
+##
+## # List repositories collection
+## SVNListParentPath on
+##
+## # Disable WebDAV automatic versioning
+## SVNAutoversioning off
+##
+## # Return a descriptive name for the repository.
+## SVNReposName "Project XYZ repo"
+##
+## # Anonymous access
+## AuthzSVNAnonymous off
+##
+## # XSL to display files
+## SVNIndexXSLT "/style/svnindex.xsl"
+##
+## # Authentication: Digest
+## AuthType Digest
+## AuthName "SVN-repo"
+## AuthDigestDomain /svn/ http://mirror.my.dom/svn2/
+##
+## # You can use the htdigest program to create the password database:
+## # htdigest -c "%%APACHEETCDIR%%/svn-auth.passwd" SVN-repo admin
+## AuthDigestProvider file
+## AuthUserFile %%APACHEETCDIR%%/svn-auth.passwd
+##
+## # Authorization: Authenticated users only
+## Require valid-user
+##
+## # Do not limit large update requests
+## LimitXMLRequestBody 0
+##</Location>
+##</IfModule>
+## ==========================================================================
+
diff --git a/devel/subversion-lts/files/build-outputs.mk.addons b/devel/subversion-lts/files/build-outputs.mk.addons
new file mode 100644
index 000000000000..397cf11589eb
--- /dev/null
+++ b/devel/subversion-lts/files/build-outputs.mk.addons
@@ -0,0 +1,3684 @@
+# DO NOT EDIT -- AUTOMATICALLY GENERATED BY build/generator/gen_make.py
+# FROM build/generator/templates/build-outputs.mk.ezt
+
+########################################
+# Section 1: Global make variables
+########################################
+
+FS_BASE_DEPS = subversion/libsvn_fs_base/libsvn_fs_base-1.la subversion/libsvn_fs_util/libsvn_fs_util-1.la
+FS_BASE_LINK = ../../subversion/libsvn_fs_base/libsvn_fs_base-1.la ../../subversion/libsvn_fs_util/libsvn_fs_util-1.la
+
+FS_FS_DEPS = subversion/libsvn_fs_fs/libsvn_fs_fs-1.la subversion/libsvn_fs_util/libsvn_fs_util-1.la
+FS_FS_LINK = ../../subversion/libsvn_fs_fs/libsvn_fs_fs-1.la ../../subversion/libsvn_fs_util/libsvn_fs_util-1.la
+
+FS_X_DEPS = subversion/libsvn_fs_util/libsvn_fs_util-1.la
+FS_X_LINK = -lsvn_fs_x-1 ../../subversion/libsvn_fs_util/libsvn_fs_util-1.la
+
+RA_LOCAL_DEPS = subversion/libsvn_ra_local/libsvn_ra_local-1.la
+RA_LOCAL_LINK = ../../subversion/libsvn_ra_local/libsvn_ra_local-1.la
+
+RA_SERF_DEPS = subversion/libsvn_ra_serf/libsvn_ra_serf-1.la
+RA_SERF_LINK = ../../subversion/libsvn_ra_serf/libsvn_ra_serf-1.la
+
+RA_SVN_DEPS = subversion/libsvn_ra_svn/libsvn_ra_svn-1.la
+RA_SVN_LINK = ../../subversion/libsvn_ra_svn/libsvn_ra_svn-1.la
+
+BUILD_DIRS = subversion/tests/afl subversion/tests/cmdline subversion/tests/libsvn_subr subversion/tests/libsvn_repos subversion/tests/libsvn_fs_base subversion/tests/libsvn_client subversion/tests/libsvn_wc subversion/tests/libsvn_client/../libsvn_wc subversion/bindings/cxxhl subversion/bindings/cxxhl/tests tools/diff subversion/tests/libsvn_diff subversion/tests/libsvn_fs_fs subversion/tests/libsvn_fs subversion/tests/libsvn_fs_x tools/dev subversion/bindings/javahl/src/org/apache/subversion/javahl/callback subversion/bindings/javahl/classes subversion/bindings/javahl/include subversion/bindings/javahl/src/org/tigris/subversion/javahl subversion/bindings/javahl/tests/org/tigris/subversion/javahl subversion/bindings/javahl/src/org/apache/subversion/javahl subversion/bindings/javahl/src/org/apache/subversion/javahl/remote subversion/bindings/javahl/src/org/apache/subversion/javahl/types subversion/bindings/javahl/src/org/apache/subversion/javahl/util subversion/bindings/javahl/tests/org/apache/subversion/javahl googlemock googlemock/googletest/src googlemock/googlemock/src subversion/libsvn_auth_gnome_keyring subversion/libsvn_auth_kwallet subversion/libsvn_client subversion/libsvn_delta subversion/libsvn_diff subversion/libsvn_fs subversion/libsvn_fs_base subversion/libsvn_fs_base/bdb subversion/libsvn_fs_base/util subversion/libsvn_fs_fs subversion/libsvn_fs_util subversion/libsvn_fs_x subversion/libsvn_ra subversion/libsvn_ra_local subversion/libsvn_ra_serf subversion/libsvn_ra_svn subversion/libsvn_repos subversion/libsvn_subr subversion/libsvn_subr/lz4 subversion/bindings/swig/perl/libsvn_swig_perl subversion/bindings/swig/python/libsvn_swig_py subversion/bindings/swig/ruby/libsvn_swig_ruby subversion/tests subversion/libsvn_wc subversion/bindings/cxxhl/src subversion/bindings/cxxhl/src/aprwrap subversion/bindings/javahl/native subversion/bindings/javahl/native/jniwrapper subversion/po subversion/mod_authz_svn subversion/mod_dav_svn subversion/mod_dav_svn/reports subversion/mod_dav_svn/posts tools/server-side/mod_dontdothat subversion/tests/libsvn_ra_local subversion/tests/libsvn_ra subversion/tests/libsvn_delta subversion/svn tools/client-side/svn-mergeinfo-normalizer tools/server-side tools/dev/wc-ng subversion/svnadmin subversion/svnbench tools/client-side/svnconflict subversion/svndumpfilter subversion/svnfsfs subversion/svnlook tools/dev/svnmover subversion/svnmucc tools/dev/svnraisetreeconflict subversion/svnrdump subversion/svnserve subversion/svnsync subversion/svnversion subversion/bindings/swig subversion/tests/libsvn_wc/../../libsvn_subr subversion/bindings/swig/python subversion/bindings/swig/perl subversion/bindings/swig/ruby subversion/bindings/swig/proxy
+
+BDB_TEST_DEPS = subversion/tests/libsvn_fs_base/changes-test$(EXEEXT) subversion/tests/libsvn_fs_base/fs-base-test$(EXEEXT) subversion/tests/libsvn_fs_base/strings-reps-test$(EXEEXT)
+
+BDB_TEST_PROGRAMS = subversion/tests/libsvn_fs_base/changes-test$(EXEEXT) subversion/tests/libsvn_fs_base/fs-base-test$(EXEEXT) subversion/tests/libsvn_fs_base/strings-reps-test$(EXEEXT)
+
+TEST_DEPS = subversion/tests/afl/afl-x509$(EXEEXT) subversion/tests/cmdline/atomic-ra-revprop-change$(EXEEXT) subversion/tests/libsvn_subr/auth-test$(EXEEXT) subversion/tests/libsvn_repos/authz-test$(EXEEXT) subversion/tests/libsvn_subr/bit-array-test$(EXEEXT) subversion/tests/libsvn_subr/cache-test$(EXEEXT) subversion/tests/libsvn_subr/checksum-test$(EXEEXT) subversion/tests/libsvn_client/client-test$(EXEEXT) subversion/tests/libsvn_subr/compat-test$(EXEEXT) subversion/tests/libsvn_subr/compress-test$(EXEEXT) subversion/tests/libsvn_subr/config-test$(EXEEXT) subversion/tests/libsvn_wc/conflict-data-test$(EXEEXT) subversion/tests/libsvn_client/conflicts-test$(EXEEXT) subversion/tests/libsvn_subr/crypto-test$(EXEEXT) subversion/tests/libsvn_wc/db-test$(EXEEXT) subversion/tests/libsvn_diff/diff-diff3-test$(EXEEXT) subversion/tests/libsvn_subr/dirent_uri-test$(EXEEXT) subversion/tests/libsvn_repos/dump-load-test$(EXEEXT) subversion/tests/libsvn_wc/entries-compat-test$(EXEEXT) subversion/tests/cmdline/entries-dump$(EXEEXT) subversion/tests/libsvn_subr/error-code-test$(EXEEXT) subversion/tests/libsvn_subr/error-test$(EXEEXT) subversion/tests/libsvn_fs_fs/fs-fs-pack-test$(EXEEXT) subversion/tests/libsvn_fs_fs/fs-fs-private-test$(EXEEXT) subversion/tests/libsvn_fs/fs-sequential-test$(EXEEXT) subversion/tests/libsvn_fs/fs-test$(EXEEXT) subversion/tests/libsvn_fs_x/fs-x-pack-test$(EXEEXT) subversion/tests/libsvn_subr/hashdump-test$(EXEEXT) subversion/tests/libsvn_subr/io-test$(EXEEXT) subversion/tests/cmdline/lock-helper$(EXEEXT) subversion/tests/libsvn_fs/locks-test$(EXEEXT) subversion/tests/libsvn_subr/mergeinfo-test$(EXEEXT) subversion/tests/libsvn_client/mtcc-test$(EXEEXT) subversion/tests/libsvn_wc/op-depth-test$(EXEEXT) subversion/tests/libsvn_subr/opt-test$(EXEEXT) subversion/tests/libsvn_subr/packed-data-test$(EXEEXT) subversion/tests/libsvn_diff/parse-diff-test$(EXEEXT) subversion/tests/libsvn_subr/path-test$(EXEEXT) subversion/tests/libsvn_subr/prefix-string-test$(EXEEXT) subversion/tests/libsvn_subr/priority-queue-test$(EXEEXT) subversion/tests/libsvn_wc/pristine-store-test$(EXEEXT) subversion/tests/libsvn_ra_local/ra-local-test$(EXEEXT) subversion/tests/libsvn_ra/ra-test$(EXEEXT) subversion/tests/libsvn_delta/random-test$(EXEEXT) subversion/tests/libsvn_repos/repos-test$(EXEEXT) subversion/tests/libsvn_subr/revision-test$(EXEEXT) subversion/tests/libsvn_subr/root-pools-test$(EXEEXT) subversion/tests/libsvn_subr/skel-test$(EXEEXT) subversion/tests/libsvn_subr/spillbuf-test$(EXEEXT) subversion/tests/libsvn_subr/sqlite-test$(EXEEXT) subversion/tests/libsvn_subr/stream-test$(EXEEXT) subversion/tests/libsvn_fs_x/string-table-test$(EXEEXT) subversion/tests/libsvn_subr/string-test$(EXEEXT) subversion/tests/libsvn_subr/subst_translate-test$(EXEEXT) tools/dev/wc-ng/svn-wc-db-tester$(EXEEXT) tools/server-side/svnauthz$(EXEEXT) tools/server-side/svnauthz-validate$(EXEEXT) subversion/tests/libsvn_delta/svndiff-stream-test$(EXEEXT) subversion/tests/libsvn_delta/svndiff-test$(EXEEXT) subversion/tests/libsvn_subr/time-test$(EXEEXT) subversion/tests/libsvn_subr/translate-test$(EXEEXT) subversion/tests/libsvn_subr/utf-test$(EXEEXT) subversion/tests/libsvn_delta/vdelta-test$(EXEEXT) subversion/tests/libsvn_wc/wc-incomplete-tester$(EXEEXT) subversion/tests/libsvn_wc/wc-lock-tester$(EXEEXT) subversion/tests/libsvn_wc/wc-queries-test$(EXEEXT) subversion/tests/libsvn_wc/wc-test$(EXEEXT) subversion/tests/libsvn_delta/window-test$(EXEEXT) subversion/tests/libsvn_subr/x509-test$(EXEEXT) subversion/tests/libsvn_subr/xml-test$(EXEEXT) subversion/tests/cmdline/authz_tests.py subversion/tests/cmdline/autoprop_tests.py subversion/tests/cmdline/basic_tests.py subversion/tests/cmdline/blame_tests.py subversion/tests/cmdline/cat_tests.py subversion/tests/cmdline/changelist_tests.py subversion/tests/cmdline/checkout_tests.py subversion/tests/cmdline/commit_tests.py subversion/tests/cmdline/copy_tests.py subversion/tests/cmdline/depth_tests.py subversion/tests/cmdline/diff_tests.py subversion/tests/cmdline/entries_tests.py subversion/tests/cmdline/export_tests.py subversion/tests/cmdline/externals_tests.py subversion/tests/cmdline/getopt_tests.py subversion/tests/cmdline/history_tests.py subversion/tests/cmdline/import_tests.py subversion/tests/cmdline/info_tests.py subversion/tests/cmdline/input_validation_tests.py subversion/tests/cmdline/iprop_authz_tests.py subversion/tests/cmdline/iprop_tests.py subversion/tests/cmdline/lock_tests.py subversion/tests/cmdline/log_tests.py subversion/tests/cmdline/merge_authz_tests.py subversion/tests/cmdline/merge_automatic_tests.py subversion/tests/cmdline/merge_reintegrate_tests.py subversion/tests/cmdline/merge_tests.py subversion/tests/cmdline/merge_tree_conflict_tests.py subversion/tests/cmdline/mergeinfo_tests.py subversion/tests/cmdline/mod_authz_svn_tests.py subversion/tests/cmdline/mod_dav_svn_tests.py subversion/tests/cmdline/move_tests.py subversion/tests/cmdline/patch_tests.py subversion/tests/cmdline/prop_tests.py subversion/tests/cmdline/redirect_tests.py subversion/tests/cmdline/relocate_tests.py subversion/tests/cmdline/resolve_tests.py subversion/tests/cmdline/revert_tests.py subversion/tests/cmdline/schedule_tests.py subversion/tests/cmdline/shelve_tests.py subversion/tests/cmdline/special_tests.py subversion/tests/cmdline/stat_tests.py subversion/tests/cmdline/svnadmin_tests.py subversion/tests/cmdline/svnauthz_tests.py subversion/tests/cmdline/svndumpfilter_tests.py subversion/tests/cmdline/svnfsfs_tests.py subversion/tests/cmdline/svnlook_tests.py subversion/tests/cmdline/svnmover_tests.py subversion/tests/cmdline/svnmucc_tests.py subversion/tests/cmdline/svnrdump_tests.py subversion/tests/cmdline/svnsync_authz_tests.py subversion/tests/cmdline/svnsync_tests.py subversion/tests/cmdline/svnversion_tests.py subversion/tests/cmdline/switch_tests.py subversion/tests/cmdline/trans_tests.py subversion/tests/cmdline/tree_conflict_tests.py subversion/tests/cmdline/update_tests.py subversion/tests/cmdline/upgrade_tests.py subversion/tests/cmdline/wc_tests.py
+
+TEST_PROGRAMS = subversion/tests/libsvn_subr/auth-test$(EXEEXT) subversion/tests/libsvn_repos/authz-test$(EXEEXT) subversion/tests/libsvn_subr/bit-array-test$(EXEEXT) subversion/tests/libsvn_subr/cache-test$(EXEEXT) subversion/tests/libsvn_subr/checksum-test$(EXEEXT) subversion/tests/libsvn_client/client-test$(EXEEXT) subversion/tests/libsvn_subr/compat-test$(EXEEXT) subversion/tests/libsvn_subr/compress-test$(EXEEXT) subversion/tests/libsvn_subr/config-test$(EXEEXT) subversion/tests/libsvn_wc/conflict-data-test$(EXEEXT) subversion/tests/libsvn_client/conflicts-test$(EXEEXT) subversion/tests/libsvn_subr/crypto-test$(EXEEXT) subversion/tests/libsvn_wc/db-test$(EXEEXT) subversion/tests/libsvn_diff/diff-diff3-test$(EXEEXT) subversion/tests/libsvn_subr/dirent_uri-test$(EXEEXT) subversion/tests/libsvn_repos/dump-load-test$(EXEEXT) subversion/tests/libsvn_wc/entries-compat-test$(EXEEXT) subversion/tests/libsvn_subr/error-code-test$(EXEEXT) subversion/tests/libsvn_subr/error-test$(EXEEXT) subversion/tests/libsvn_fs_fs/fs-fs-pack-test$(EXEEXT) subversion/tests/libsvn_fs_fs/fs-fs-private-test$(EXEEXT) subversion/tests/libsvn_fs/fs-sequential-test$(EXEEXT) subversion/tests/libsvn_fs/fs-test$(EXEEXT) subversion/tests/libsvn_fs_x/fs-x-pack-test$(EXEEXT) subversion/tests/libsvn_subr/hashdump-test$(EXEEXT) subversion/tests/libsvn_subr/io-test$(EXEEXT) subversion/tests/libsvn_fs/locks-test$(EXEEXT) subversion/tests/libsvn_subr/mergeinfo-test$(EXEEXT) subversion/tests/libsvn_client/mtcc-test$(EXEEXT) subversion/tests/libsvn_wc/op-depth-test$(EXEEXT) subversion/tests/libsvn_subr/opt-test$(EXEEXT) subversion/tests/libsvn_subr/packed-data-test$(EXEEXT) subversion/tests/libsvn_diff/parse-diff-test$(EXEEXT) subversion/tests/libsvn_subr/path-test$(EXEEXT) subversion/tests/libsvn_subr/prefix-string-test$(EXEEXT) subversion/tests/libsvn_subr/priority-queue-test$(EXEEXT) subversion/tests/libsvn_wc/pristine-store-test$(EXEEXT) subversion/tests/libsvn_ra_local/ra-local-test$(EXEEXT) subversion/tests/libsvn_ra/ra-test$(EXEEXT) subversion/tests/libsvn_delta/random-test$(EXEEXT) subversion/tests/libsvn_repos/repos-test$(EXEEXT) subversion/tests/libsvn_subr/revision-test$(EXEEXT) subversion/tests/libsvn_subr/root-pools-test$(EXEEXT) subversion/tests/libsvn_subr/skel-test$(EXEEXT) subversion/tests/libsvn_subr/spillbuf-test$(EXEEXT) subversion/tests/libsvn_subr/sqlite-test$(EXEEXT) subversion/tests/libsvn_subr/stream-test$(EXEEXT) subversion/tests/libsvn_fs_x/string-table-test$(EXEEXT) subversion/tests/libsvn_subr/string-test$(EXEEXT) subversion/tests/libsvn_subr/subst_translate-test$(EXEEXT) subversion/tests/libsvn_delta/svndiff-stream-test$(EXEEXT) subversion/tests/libsvn_subr/time-test$(EXEEXT) subversion/tests/libsvn_subr/translate-test$(EXEEXT) subversion/tests/libsvn_subr/utf-test$(EXEEXT) subversion/tests/libsvn_wc/wc-queries-test$(EXEEXT) subversion/tests/libsvn_wc/wc-test$(EXEEXT) subversion/tests/libsvn_delta/window-test$(EXEEXT) subversion/tests/libsvn_subr/x509-test$(EXEEXT) subversion/tests/libsvn_subr/xml-test$(EXEEXT) subversion/tests/cmdline/authz_tests.py subversion/tests/cmdline/autoprop_tests.py subversion/tests/cmdline/basic_tests.py subversion/tests/cmdline/blame_tests.py subversion/tests/cmdline/cat_tests.py subversion/tests/cmdline/changelist_tests.py subversion/tests/cmdline/checkout_tests.py subversion/tests/cmdline/commit_tests.py subversion/tests/cmdline/copy_tests.py subversion/tests/cmdline/depth_tests.py subversion/tests/cmdline/diff_tests.py subversion/tests/cmdline/entries_tests.py subversion/tests/cmdline/export_tests.py subversion/tests/cmdline/externals_tests.py subversion/tests/cmdline/getopt_tests.py subversion/tests/cmdline/history_tests.py subversion/tests/cmdline/import_tests.py subversion/tests/cmdline/info_tests.py subversion/tests/cmdline/input_validation_tests.py subversion/tests/cmdline/iprop_authz_tests.py subversion/tests/cmdline/iprop_tests.py subversion/tests/cmdline/lock_tests.py subversion/tests/cmdline/log_tests.py subversion/tests/cmdline/merge_authz_tests.py subversion/tests/cmdline/merge_automatic_tests.py subversion/tests/cmdline/merge_reintegrate_tests.py subversion/tests/cmdline/merge_tests.py subversion/tests/cmdline/merge_tree_conflict_tests.py subversion/tests/cmdline/mergeinfo_tests.py subversion/tests/cmdline/mod_authz_svn_tests.py subversion/tests/cmdline/mod_dav_svn_tests.py subversion/tests/cmdline/move_tests.py subversion/tests/cmdline/patch_tests.py subversion/tests/cmdline/prop_tests.py subversion/tests/cmdline/redirect_tests.py subversion/tests/cmdline/relocate_tests.py subversion/tests/cmdline/resolve_tests.py subversion/tests/cmdline/revert_tests.py subversion/tests/cmdline/schedule_tests.py subversion/tests/cmdline/shelve_tests.py subversion/tests/cmdline/special_tests.py subversion/tests/cmdline/stat_tests.py subversion/tests/cmdline/svnadmin_tests.py subversion/tests/cmdline/svnauthz_tests.py subversion/tests/cmdline/svndumpfilter_tests.py subversion/tests/cmdline/svnfsfs_tests.py subversion/tests/cmdline/svnlook_tests.py subversion/tests/cmdline/svnmover_tests.py subversion/tests/cmdline/svnmucc_tests.py subversion/tests/cmdline/svnrdump_tests.py subversion/tests/cmdline/svnsync_authz_tests.py subversion/tests/cmdline/svnsync_tests.py subversion/tests/cmdline/svnversion_tests.py subversion/tests/cmdline/switch_tests.py subversion/tests/cmdline/trans_tests.py subversion/tests/cmdline/tree_conflict_tests.py subversion/tests/cmdline/update_tests.py subversion/tests/cmdline/upgrade_tests.py subversion/tests/cmdline/wc_tests.py
+
+check-deps test-deps: subversion/tests/afl/afl-x509$(EXEEXT) subversion/tests/cmdline/atomic-ra-revprop-change$(EXEEXT) subversion/tests/cmdline/entries-dump$(EXEEXT) subversion/tests/cmdline/lock-helper$(EXEEXT) tools/dev/wc-ng/svn-wc-db-tester$(EXEEXT) tools/server-side/svnauthz$(EXEEXT) tools/server-side/svnauthz-validate$(EXEEXT) subversion/tests/libsvn_delta/svndiff-test$(EXEEXT) subversion/tests/libsvn_delta/vdelta-test$(EXEEXT) subversion/tests/libsvn_wc/wc-incomplete-tester$(EXEEXT) subversion/tests/libsvn_wc/wc-lock-tester$(EXEEXT)
+
+MANPAGES = subversion/svn/svn.1 subversion/svnadmin/svnadmin.1 subversion/svndumpfilter/svndumpfilter.1 subversion/svnlook/svnlook.1 subversion/svnmucc/svnmucc.1 subversion/svnrdump/svnrdump.1 subversion/svnserve/svnserve.8 subversion/svnserve/svnserve.conf.5 subversion/svnsync/svnsync.1 subversion/svnversion/svnversion.1
+
+CLEAN_FILES = subversion/bindings/cxxhl/cxxhl-tests$(EXEEXT) subversion/svn/svn$(EXEEXT) subversion/svnadmin/svnadmin$(EXEEXT) subversion/svnbench/svnbench$(EXEEXT) subversion/svndumpfilter/svndumpfilter$(EXEEXT) subversion/svnfsfs/svnfsfs$(EXEEXT) subversion/svnlook/svnlook$(EXEEXT) subversion/svnmucc/svnmucc$(EXEEXT) subversion/svnrdump/svnrdump$(EXEEXT) subversion/svnserve/svnserve$(EXEEXT) subversion/svnsync/svnsync$(EXEEXT) subversion/svnversion/svnversion$(EXEEXT) subversion/tests/afl/afl-x509$(EXEEXT) subversion/tests/cmdline/atomic-ra-revprop-change$(EXEEXT) subversion/tests/cmdline/authz_tests.pyc subversion/tests/cmdline/autoprop_tests.pyc subversion/tests/cmdline/basic_tests.pyc subversion/tests/cmdline/blame_tests.pyc subversion/tests/cmdline/cat_tests.pyc subversion/tests/cmdline/changelist_tests.pyc subversion/tests/cmdline/checkout_tests.pyc subversion/tests/cmdline/commit_tests.pyc subversion/tests/cmdline/copy_tests.pyc subversion/tests/cmdline/depth_tests.pyc subversion/tests/cmdline/diff_tests.pyc subversion/tests/cmdline/entries-dump$(EXEEXT) subversion/tests/cmdline/entries_tests.pyc subversion/tests/cmdline/export_tests.pyc subversion/tests/cmdline/externals_tests.pyc subversion/tests/cmdline/getopt_tests.pyc subversion/tests/cmdline/history_tests.pyc subversion/tests/cmdline/import_tests.pyc subversion/tests/cmdline/info_tests.pyc subversion/tests/cmdline/input_validation_tests.pyc subversion/tests/cmdline/iprop_authz_tests.pyc subversion/tests/cmdline/iprop_tests.pyc subversion/tests/cmdline/lock-helper$(EXEEXT) subversion/tests/cmdline/lock_tests.pyc subversion/tests/cmdline/log_tests.pyc subversion/tests/cmdline/merge_authz_tests.pyc subversion/tests/cmdline/merge_automatic_tests.pyc subversion/tests/cmdline/merge_reintegrate_tests.pyc subversion/tests/cmdline/merge_tests.pyc subversion/tests/cmdline/merge_tree_conflict_tests.pyc subversion/tests/cmdline/mergeinfo_tests.pyc subversion/tests/cmdline/mod_authz_svn_tests.pyc subversion/tests/cmdline/mod_dav_svn_tests.pyc subversion/tests/cmdline/move_tests.pyc subversion/tests/cmdline/patch_tests.pyc subversion/tests/cmdline/prop_tests.pyc subversion/tests/cmdline/redirect_tests.pyc subversion/tests/cmdline/relocate_tests.pyc subversion/tests/cmdline/resolve_tests.pyc subversion/tests/cmdline/revert_tests.pyc subversion/tests/cmdline/schedule_tests.pyc subversion/tests/cmdline/shelve_tests.pyc subversion/tests/cmdline/special_tests.pyc subversion/tests/cmdline/stat_tests.pyc subversion/tests/cmdline/svnadmin_tests.pyc subversion/tests/cmdline/svnauthz_tests.pyc subversion/tests/cmdline/svndumpfilter_tests.pyc subversion/tests/cmdline/svnfsfs_tests.pyc subversion/tests/cmdline/svnlook_tests.pyc subversion/tests/cmdline/svnmover_tests.pyc subversion/tests/cmdline/svnmucc_tests.pyc subversion/tests/cmdline/svnrdump_tests.pyc subversion/tests/cmdline/svnsync_authz_tests.pyc subversion/tests/cmdline/svnsync_tests.pyc subversion/tests/cmdline/svnversion_tests.pyc subversion/tests/cmdline/switch_tests.pyc subversion/tests/cmdline/trans_tests.pyc subversion/tests/cmdline/tree_conflict_tests.pyc subversion/tests/cmdline/update_tests.pyc subversion/tests/cmdline/upgrade_tests.pyc subversion/tests/cmdline/wc_tests.pyc subversion/tests/libsvn_client/client-test$(EXEEXT) subversion/tests/libsvn_client/conflicts-test$(EXEEXT) subversion/tests/libsvn_client/mtcc-test$(EXEEXT) subversion/tests/libsvn_delta/random-test$(EXEEXT) subversion/tests/libsvn_delta/svndiff-stream-test$(EXEEXT) subversion/tests/libsvn_delta/svndiff-test$(EXEEXT) subversion/tests/libsvn_delta/vdelta-test$(EXEEXT) subversion/tests/libsvn_delta/window-test$(EXEEXT) subversion/tests/libsvn_diff/diff-diff3-test$(EXEEXT) subversion/tests/libsvn_diff/parse-diff-test$(EXEEXT) subversion/tests/libsvn_fs/fs-sequential-test$(EXEEXT) subversion/tests/libsvn_fs/fs-test$(EXEEXT) subversion/tests/libsvn_fs/locks-test$(EXEEXT) subversion/tests/libsvn_fs_base/changes-test$(EXEEXT) subversion/tests/libsvn_fs_base/fs-base-test$(EXEEXT) subversion/tests/libsvn_fs_base/strings-reps-test$(EXEEXT) subversion/tests/libsvn_fs_fs/fs-fs-fuzzy-test$(EXEEXT) subversion/tests/libsvn_fs_fs/fs-fs-pack-test$(EXEEXT) subversion/tests/libsvn_fs_fs/fs-fs-private-test$(EXEEXT) subversion/tests/libsvn_fs_x/fs-x-pack-test$(EXEEXT) subversion/tests/libsvn_fs_x/string-table-test$(EXEEXT) subversion/tests/libsvn_ra/ra-test$(EXEEXT) subversion/tests/libsvn_ra_local/ra-local-test$(EXEEXT) subversion/tests/libsvn_repos/authz-test$(EXEEXT) subversion/tests/libsvn_repos/dump-load-test$(EXEEXT) subversion/tests/libsvn_repos/repos-test$(EXEEXT) subversion/tests/libsvn_subr/auth-test$(EXEEXT) subversion/tests/libsvn_subr/bit-array-test$(EXEEXT) subversion/tests/libsvn_subr/cache-test$(EXEEXT) subversion/tests/libsvn_subr/checksum-test$(EXEEXT) subversion/tests/libsvn_subr/compat-test$(EXEEXT) subversion/tests/libsvn_subr/compress-test$(EXEEXT) subversion/tests/libsvn_subr/config-test$(EXEEXT) subversion/tests/libsvn_subr/crypto-test$(EXEEXT) subversion/tests/libsvn_subr/dirent_uri-test$(EXEEXT) subversion/tests/libsvn_subr/error-code-test$(EXEEXT) subversion/tests/libsvn_subr/error-test$(EXEEXT) subversion/tests/libsvn_subr/hashdump-test$(EXEEXT) subversion/tests/libsvn_subr/io-test$(EXEEXT) subversion/tests/libsvn_subr/mergeinfo-test$(EXEEXT) subversion/tests/libsvn_subr/opt-test$(EXEEXT) subversion/tests/libsvn_subr/packed-data-test$(EXEEXT) subversion/tests/libsvn_subr/path-test$(EXEEXT) subversion/tests/libsvn_subr/prefix-string-test$(EXEEXT) subversion/tests/libsvn_subr/priority-queue-test$(EXEEXT) subversion/tests/libsvn_subr/revision-test$(EXEEXT) subversion/tests/libsvn_subr/root-pools-test$(EXEEXT) subversion/tests/libsvn_subr/skel-test$(EXEEXT) subversion/tests/libsvn_subr/spillbuf-test$(EXEEXT) subversion/tests/libsvn_subr/sqlite-test$(EXEEXT) subversion/tests/libsvn_subr/stream-test$(EXEEXT) subversion/tests/libsvn_subr/string-test$(EXEEXT) subversion/tests/libsvn_subr/subst_translate-test$(EXEEXT) subversion/tests/libsvn_subr/time-test$(EXEEXT) subversion/tests/libsvn_subr/translate-test$(EXEEXT) subversion/tests/libsvn_subr/utf-test$(EXEEXT) subversion/tests/libsvn_subr/x509-test$(EXEEXT) subversion/tests/libsvn_subr/xml-test$(EXEEXT) subversion/tests/libsvn_wc/conflict-data-test$(EXEEXT) subversion/tests/libsvn_wc/db-test$(EXEEXT) subversion/tests/libsvn_wc/entries-compat-test$(EXEEXT) subversion/tests/libsvn_wc/op-depth-test$(EXEEXT) subversion/tests/libsvn_wc/pristine-store-test$(EXEEXT) subversion/tests/libsvn_wc/wc-incomplete-tester$(EXEEXT) subversion/tests/libsvn_wc/wc-lock-tester$(EXEEXT) subversion/tests/libsvn_wc/wc-queries-test$(EXEEXT) subversion/tests/libsvn_wc/wc-test$(EXEEXT) tools/client-side/svn-mergeinfo-normalizer/svn-mergeinfo-normalizer$(EXEEXT) tools/client-side/svnconflict/svnconflict$(EXEEXT) tools/dev/fsfs-access-map$(EXEEXT) tools/dev/svnmover/svnmover$(EXEEXT) tools/dev/svnraisetreeconflict/svnraisetreeconflict$(EXEEXT) tools/dev/wc-ng/svn-wc-db-tester$(EXEEXT) tools/dev/x509-parser$(EXEEXT) tools/diff/diff$(EXEEXT) tools/diff/diff3$(EXEEXT) tools/diff/diff4$(EXEEXT) tools/server-side/svn-populate-node-origins-index$(EXEEXT) tools/server-side/svnauthz$(EXEEXT) tools/server-side/svnauthz-validate$(EXEEXT)
+EXTRACLEAN_FILES = subversion/libsvn_fs_fs/rep-cache-db.h subversion/libsvn_fs_x/rep-cache-db.h subversion/libsvn_subr/internal_statements.h subversion/libsvn_wc/wc-queries.h subversion/tests/libsvn_wc/wc-test-queries.h \
+ $(abs_builddir)/subversion/libsvn_subr/errorcode.inc \
+ $(abs_builddir)/subversion/libsvn_subr/config_keys.inc \
+ $(abs_srcdir)/compile_commands.json
+
+SWIG_INCLUDES = -I$(abs_builddir)/subversion \
+ -I$(abs_srcdir)/subversion/include \
+ -I$(abs_srcdir)/subversion/bindings/swig \
+ -I$(abs_srcdir)/subversion/bindings/swig/include \
+ -I$(abs_srcdir)/subversion/bindings/swig/proxy \
+ -I$(abs_builddir)/subversion/bindings/swig/proxy \
+ $(SVN_APR_INCLUDES) $(SVN_APRUTIL_INCLUDES)
+
+RELEASE_MODE = 1
+
+
+########################################
+# Section 2: SWIG headers (wrappers and external runtimes)
+########################################
+
+
+########################################
+# Section 3: SWIG autogen rules
+########################################
+
+autogen-swig-py: subversion/bindings/swig/python/core.c subversion/bindings/swig/python/svn_client.c subversion/bindings/swig/python/svn_delta.c subversion/bindings/swig/python/svn_diff.c subversion/bindings/swig/python/svn_fs.c subversion/bindings/swig/python/svn_ra.c subversion/bindings/swig/python/svn_repos.c subversion/bindings/swig/python/svn_wc.c
+autogen-swig: autogen-swig-py
+
+autogen-swig-pl: subversion/bindings/swig/perl/native/core.c subversion/bindings/swig/perl/native/svn_client.c subversion/bindings/swig/perl/native/svn_delta.c subversion/bindings/swig/perl/native/svn_diff.c subversion/bindings/swig/perl/native/svn_fs.c subversion/bindings/swig/perl/native/svn_ra.c subversion/bindings/swig/perl/native/svn_repos.c subversion/bindings/swig/perl/native/svn_wc.c
+autogen-swig: autogen-swig-pl
+
+autogen-swig-rb: subversion/bindings/swig/ruby/core.c subversion/bindings/swig/ruby/svn_client.c subversion/bindings/swig/ruby/svn_delta.c subversion/bindings/swig/ruby/svn_diff.c subversion/bindings/swig/ruby/svn_fs.c subversion/bindings/swig/ruby/svn_ra.c subversion/bindings/swig/ruby/svn_repos.c subversion/bindings/swig/ruby/svn_wc.c
+autogen-swig: autogen-swig-rb
+
+
+
+########################################
+# Section 4: Rules to build SWIG .c files from .i files
+########################################
+
+
+# This needs to be here, rather than in Makefile.in, else
+# './autogen.sh --release' doesn't find it.
+.swig_checked:
+ @if [ "$(SWIG)" = "none" ]; then \
+ echo "SWIG disabled at configure time" >&2; \
+ exit 1; \
+ fi
+ @touch .swig_checked
+
+
+########################################
+# Section 5: Individual target build rules
+########################################
+
+afl_x509_PATH = subversion/tests/afl
+afl_x509_DEPS = subversion/tests/afl/afl-x509.lo
+afl_x509_OBJECTS = afl-x509.lo
+subversion/tests/afl/afl-x509$(EXEEXT): $(afl_x509_DEPS)
+ cd subversion/tests/afl && $(LINK) $(afl_x509_LDFLAGS) -o afl-x509$(EXEEXT) $(afl_x509_OBJECTS) -lsvn_subr-1 $(SVN_APR_LIBS) $(LIBS)
+
+atomic_ra_revprop_change_PATH = subversion/tests/cmdline
+atomic_ra_revprop_change_DEPS = subversion/tests/cmdline/atomic-ra-revprop-change.lo
+atomic_ra_revprop_change_OBJECTS = atomic-ra-revprop-change.lo
+subversion/tests/cmdline/atomic-ra-revprop-change$(EXEEXT): $(atomic_ra_revprop_change_DEPS)
+ cd subversion/tests/cmdline && $(LINK) $(atomic_ra_revprop_change_LDFLAGS) -o atomic-ra-revprop-change$(EXEEXT) $(atomic_ra_revprop_change_OBJECTS) -lsvn_ra-1 -lsvn_subr-1 $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS)
+
+auth_test_PATH = subversion/tests/libsvn_subr
+auth_test_DEPS = subversion/tests/libsvn_subr/auth-test.lo subversion/tests/libsvn_test-1.la
+auth_test_OBJECTS = auth-test.lo
+subversion/tests/libsvn_subr/auth-test$(EXEEXT): $(auth_test_DEPS)
+ cd subversion/tests/libsvn_subr && $(LINK) $(auth_test_LDFLAGS) -o auth-test$(EXEEXT) $(auth_test_OBJECTS) ../../../subversion/tests/libsvn_test-1.la -lsvn_subr-1 $(SVN_APR_LIBS) $(LIBS)
+
+authz_test_PATH = subversion/tests/libsvn_repos
+authz_test_DEPS = subversion/tests/libsvn_repos/authz-test.lo subversion/tests/libsvn_test-1.la
+authz_test_OBJECTS = authz-test.lo
+subversion/tests/libsvn_repos/authz-test$(EXEEXT): $(authz_test_DEPS)
+ cd subversion/tests/libsvn_repos && $(LINK) $(authz_test_LDFLAGS) -o authz-test$(EXEEXT) $(authz_test_OBJECTS) ../../../subversion/tests/libsvn_test-1.la -lsvn_repos-1 -lsvn_fs-1 -lsvn_delta-1 -lsvn_subr-1 $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS)
+
+bit_array_test_PATH = subversion/tests/libsvn_subr
+bit_array_test_DEPS = subversion/tests/libsvn_subr/bit-array-test.lo subversion/tests/libsvn_test-1.la
+bit_array_test_OBJECTS = bit-array-test.lo
+subversion/tests/libsvn_subr/bit-array-test$(EXEEXT): $(bit_array_test_DEPS)
+ cd subversion/tests/libsvn_subr && $(LINK) $(bit_array_test_LDFLAGS) -o bit-array-test$(EXEEXT) $(bit_array_test_OBJECTS) ../../../subversion/tests/libsvn_test-1.la -lsvn_subr-1 $(SVN_APR_LIBS) $(LIBS)
+
+cache_test_PATH = subversion/tests/libsvn_subr
+cache_test_DEPS = subversion/tests/libsvn_subr/cache-test.lo subversion/tests/libsvn_test-1.la
+cache_test_OBJECTS = cache-test.lo
+subversion/tests/libsvn_subr/cache-test$(EXEEXT): $(cache_test_DEPS)
+ cd subversion/tests/libsvn_subr && $(LINK) $(cache_test_LDFLAGS) -o cache-test$(EXEEXT) $(cache_test_OBJECTS) ../../../subversion/tests/libsvn_test-1.la -lsvn_subr-1 $(SVN_APR_LIBS) $(LIBS)
+
+changes_test_PATH = subversion/tests/libsvn_fs_base
+changes_test_DEPS = subversion/tests/libsvn_fs_base/changes-test.lo subversion/tests/libsvn_test-1.la subversion/libsvn_fs_base/libsvn_fs_base-1.la
+changes_test_OBJECTS = changes-test.lo
+subversion/tests/libsvn_fs_base/changes-test$(EXEEXT): $(changes_test_DEPS)
+ cd subversion/tests/libsvn_fs_base && $(LINK) $(changes_test_LDFLAGS) -o changes-test$(EXEEXT) $(changes_test_OBJECTS) ../../../subversion/tests/libsvn_test-1.la -lsvn_fs-1 ../../../subversion/libsvn_fs_base/libsvn_fs_base-1.la -lsvn_delta-1 -lsvn_subr-1 $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS)
+
+checksum_test_PATH = subversion/tests/libsvn_subr
+checksum_test_DEPS = subversion/tests/libsvn_subr/checksum-test.lo subversion/tests/libsvn_test-1.la
+checksum_test_OBJECTS = checksum-test.lo
+subversion/tests/libsvn_subr/checksum-test$(EXEEXT): $(checksum_test_DEPS)
+ cd subversion/tests/libsvn_subr && $(LINK) $(checksum_test_LDFLAGS) -o checksum-test$(EXEEXT) $(checksum_test_OBJECTS) ../../../subversion/tests/libsvn_test-1.la -lsvn_subr-1 $(SVN_APR_LIBS) $(SVN_ZLIB_LIBS) $(LIBS)
+
+client_test_PATH = subversion/tests/libsvn_client
+client_test_DEPS = subversion/tests/libsvn_client/client-test.lo subversion/tests/libsvn_test-1.la
+client_test_OBJECTS = client-test.lo
+subversion/tests/libsvn_client/client-test$(EXEEXT): $(client_test_DEPS)
+ cd subversion/tests/libsvn_client && $(LINK) $(client_test_LDFLAGS) -o client-test$(EXEEXT) $(client_test_OBJECTS) ../../../subversion/tests/libsvn_test-1.la -lsvn_client-1 -lsvn_wc-1 -lsvn_repos-1 -lsvn_ra-1 -lsvn_fs-1 -lsvn_delta-1 -lsvn_subr-1 $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS)
+
+compat_test_PATH = subversion/tests/libsvn_subr
+compat_test_DEPS = subversion/tests/libsvn_subr/compat-test.lo subversion/tests/libsvn_test-1.la
+compat_test_OBJECTS = compat-test.lo
+subversion/tests/libsvn_subr/compat-test$(EXEEXT): $(compat_test_DEPS)
+ cd subversion/tests/libsvn_subr && $(LINK) $(compat_test_LDFLAGS) -o compat-test$(EXEEXT) $(compat_test_OBJECTS) ../../../subversion/tests/libsvn_test-1.la -lsvn_subr-1 $(SVN_APR_LIBS) $(LIBS)
+
+compress_test_PATH = subversion/tests/libsvn_subr
+compress_test_DEPS = subversion/tests/libsvn_subr/compress-test.lo subversion/tests/libsvn_test-1.la
+compress_test_OBJECTS = compress-test.lo
+subversion/tests/libsvn_subr/compress-test$(EXEEXT): $(compress_test_DEPS)
+ cd subversion/tests/libsvn_subr && $(LINK) $(compress_test_LDFLAGS) -o compress-test$(EXEEXT) $(compress_test_OBJECTS) ../../../subversion/tests/libsvn_test-1.la -lsvn_subr-1 $(SVN_APR_LIBS) $(LIBS)
+
+config_test_PATH = subversion/tests/libsvn_subr
+config_test_DEPS = subversion/tests/libsvn_subr/config-test.lo subversion/tests/libsvn_test-1.la
+config_test_OBJECTS = config-test.lo
+subversion/tests/libsvn_subr/config-test$(EXEEXT): $(config_test_DEPS)
+ cd subversion/tests/libsvn_subr && $(LINK) $(config_test_LDFLAGS) -o config-test$(EXEEXT) $(config_test_OBJECTS) ../../../subversion/tests/libsvn_test-1.la -lsvn_subr-1 $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS)
+
+conflict_data_test_PATH = subversion/tests/libsvn_wc
+conflict_data_test_DEPS = subversion/tests/libsvn_wc/conflict-data-test.lo subversion/tests/libsvn_wc/utils.lo subversion/tests/libsvn_test-1.la
+conflict_data_test_OBJECTS = conflict-data-test.lo utils.lo
+subversion/tests/libsvn_wc/conflict-data-test$(EXEEXT): $(conflict_data_test_DEPS)
+ cd subversion/tests/libsvn_wc && $(LINK) $(conflict_data_test_LDFLAGS) -o conflict-data-test$(EXEEXT) $(conflict_data_test_OBJECTS) -lsvn_client-1 ../../../subversion/tests/libsvn_test-1.la -lsvn_wc-1 -lsvn_subr-1 $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS)
+
+conflicts_test_PATH = subversion/tests/libsvn_client
+conflicts_test_DEPS = subversion/tests/libsvn_wc/utils.lo subversion/tests/libsvn_client/conflicts-test.lo subversion/tests/libsvn_test-1.la
+conflicts_test_OBJECTS = ../libsvn_wc/utils.lo conflicts-test.lo
+subversion/tests/libsvn_client/conflicts-test$(EXEEXT): $(conflicts_test_DEPS)
+ cd subversion/tests/libsvn_client && $(LINK) $(conflicts_test_LDFLAGS) -o conflicts-test$(EXEEXT) $(conflicts_test_OBJECTS) ../../../subversion/tests/libsvn_test-1.la -lsvn_client-1 -lsvn_wc-1 -lsvn_repos-1 -lsvn_ra-1 -lsvn_fs-1 -lsvn_delta-1 -lsvn_subr-1 $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS)
+
+crypto_test_PATH = subversion/tests/libsvn_subr
+crypto_test_DEPS = subversion/tests/libsvn_subr/crypto-test.lo subversion/tests/libsvn_test-1.la
+crypto_test_OBJECTS = crypto-test.lo
+subversion/tests/libsvn_subr/crypto-test$(EXEEXT): $(crypto_test_DEPS)
+ cd subversion/tests/libsvn_subr && $(LINK) $(crypto_test_LDFLAGS) -o crypto-test$(EXEEXT) $(crypto_test_OBJECTS) ../../../subversion/tests/libsvn_test-1.la -lsvn_subr-1 $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS)
+
+cxxhl_tests_PATH = subversion/bindings/cxxhl
+cxxhl_tests_DEPS = subversion/bindings/cxxhl/tests/cxxhl-tests.lo subversion/bindings/cxxhl/tests/test_aprwrap.lo subversion/bindings/cxxhl/tests/test_exception.lo subversion/bindings/cxxhl/libsvncxxhl-1.la googlemock/libgooglemock-1.la
+cxxhl_tests_OBJECTS = tests/cxxhl-tests.lo tests/test_aprwrap.lo tests/test_exception.lo
+subversion/bindings/cxxhl/cxxhl-tests$(EXEEXT): $(cxxhl_tests_DEPS)
+ if $(SVN_USE_GOOGLEMOCK) ; then cd subversion/bindings/cxxhl && $(LINK_CXX) $(cxxhl_tests_LDFLAGS) -o cxxhl-tests$(EXEEXT) $(cxxhl_tests_OBJECTS) ../../../subversion/bindings/cxxhl/libsvncxxhl-1.la ../../../googlemock/libgooglemock-1.la -lsvn_subr-1 $(SVN_APR_LIBS) $(LIBS) ; else echo "fake" > subversion/bindings/cxxhl/cxxhl-tests$(EXEEXT) ; fi
+
+db_test_PATH = subversion/tests/libsvn_wc
+db_test_DEPS = subversion/tests/libsvn_wc/db-test.lo subversion/tests/libsvn_wc/utils.lo subversion/tests/libsvn_test-1.la
+db_test_OBJECTS = db-test.lo utils.lo
+subversion/tests/libsvn_wc/db-test$(EXEEXT): $(db_test_DEPS)
+ cd subversion/tests/libsvn_wc && $(LINK) $(db_test_LDFLAGS) -o db-test$(EXEEXT) $(db_test_OBJECTS) -lsvn_client-1 ../../../subversion/tests/libsvn_test-1.la -lsvn_wc-1 -lsvn_subr-1 $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS)
+
+diff_PATH = tools/diff
+diff_DEPS = tools/diff/diff.lo
+diff_OBJECTS = diff.lo
+tools/diff/diff$(EXEEXT): $(diff_DEPS)
+ cd tools/diff && $(LINK) $(diff_LDFLAGS) -o diff$(EXEEXT) $(diff_OBJECTS) -lsvn_diff-1 -lsvn_subr-1 $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS)
+
+diff_diff3_test_PATH = subversion/tests/libsvn_diff
+diff_diff3_test_DEPS = subversion/tests/libsvn_diff/diff-diff3-test.lo subversion/tests/libsvn_test-1.la
+diff_diff3_test_OBJECTS = diff-diff3-test.lo
+subversion/tests/libsvn_diff/diff-diff3-test$(EXEEXT): $(diff_diff3_test_DEPS)
+ cd subversion/tests/libsvn_diff && $(LINK) $(diff_diff3_test_LDFLAGS) -o diff-diff3-test$(EXEEXT) $(diff_diff3_test_OBJECTS) ../../../subversion/tests/libsvn_test-1.la -lsvn_diff-1 -lsvn_subr-1 $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS)
+
+diff3_PATH = tools/diff
+diff3_DEPS = tools/diff/diff3.lo
+diff3_OBJECTS = diff3.lo
+tools/diff/diff3$(EXEEXT): $(diff3_DEPS)
+ cd tools/diff && $(LINK) $(diff3_LDFLAGS) -o diff3$(EXEEXT) $(diff3_OBJECTS) -lsvn_diff-1 -lsvn_subr-1 $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS)
+
+diff4_PATH = tools/diff
+diff4_DEPS = tools/diff/diff4.lo
+diff4_OBJECTS = diff4.lo
+tools/diff/diff4$(EXEEXT): $(diff4_DEPS)
+ cd tools/diff && $(LINK) $(diff4_LDFLAGS) -o diff4$(EXEEXT) $(diff4_OBJECTS) -lsvn_diff-1 -lsvn_subr-1 $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS)
+
+dirent_uri_test_PATH = subversion/tests/libsvn_subr
+dirent_uri_test_DEPS = subversion/tests/libsvn_subr/dirent_uri-test.lo subversion/tests/libsvn_test-1.la
+dirent_uri_test_OBJECTS = dirent_uri-test.lo
+subversion/tests/libsvn_subr/dirent_uri-test$(EXEEXT): $(dirent_uri_test_DEPS)
+ cd subversion/tests/libsvn_subr && $(LINK) $(dirent_uri_test_LDFLAGS) -o dirent_uri-test$(EXEEXT) $(dirent_uri_test_OBJECTS) ../../../subversion/tests/libsvn_test-1.la -lsvn_subr-1 $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS)
+
+dump_load_test_PATH = subversion/tests/libsvn_repos
+dump_load_test_DEPS = subversion/tests/libsvn_repos/dump-load-test.lo subversion/tests/libsvn_test-1.la
+dump_load_test_OBJECTS = dump-load-test.lo
+subversion/tests/libsvn_repos/dump-load-test$(EXEEXT): $(dump_load_test_DEPS)
+ cd subversion/tests/libsvn_repos && $(LINK) $(dump_load_test_LDFLAGS) -o dump-load-test$(EXEEXT) $(dump_load_test_OBJECTS) ../../../subversion/tests/libsvn_test-1.la -lsvn_repos-1 -lsvn_fs-1 -lsvn_delta-1 -lsvn_subr-1 $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS)
+
+entries_compat_test_PATH = subversion/tests/libsvn_wc
+entries_compat_test_DEPS = subversion/tests/libsvn_wc/entries-compat.lo subversion/tests/libsvn_wc/utils.lo subversion/tests/libsvn_test-1.la
+entries_compat_test_OBJECTS = entries-compat.lo utils.lo
+subversion/tests/libsvn_wc/entries-compat-test$(EXEEXT): $(entries_compat_test_DEPS)
+ cd subversion/tests/libsvn_wc && $(LINK) $(entries_compat_test_LDFLAGS) -o entries-compat-test$(EXEEXT) $(entries_compat_test_OBJECTS) -lsvn_client-1 ../../../subversion/tests/libsvn_test-1.la -lsvn_wc-1 -lsvn_subr-1 $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS)
+
+entries_dump_PATH = subversion/tests/cmdline
+entries_dump_DEPS = subversion/tests/cmdline/entries-dump.lo
+entries_dump_OBJECTS = entries-dump.lo
+subversion/tests/cmdline/entries-dump$(EXEEXT): $(entries_dump_DEPS)
+ cd subversion/tests/cmdline && $(LINK) $(entries_dump_LDFLAGS) -o entries-dump$(EXEEXT) $(entries_dump_OBJECTS) -lsvn_wc-1 -lsvn_subr-1 $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS)
+
+error_code_test_PATH = subversion/tests/libsvn_subr
+error_code_test_DEPS = subversion/tests/libsvn_subr/error-code-test.lo subversion/tests/libsvn_test-1.la
+error_code_test_OBJECTS = error-code-test.lo
+subversion/tests/libsvn_subr/error-code-test$(EXEEXT): $(error_code_test_DEPS)
+ cd subversion/tests/libsvn_subr && $(LINK) $(error_code_test_LDFLAGS) -o error-code-test$(EXEEXT) $(error_code_test_OBJECTS) ../../../subversion/tests/libsvn_test-1.la -lsvn_subr-1 $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS)
+
+error_test_PATH = subversion/tests/libsvn_subr
+error_test_DEPS = subversion/tests/libsvn_subr/error-test.lo subversion/tests/libsvn_test-1.la
+error_test_OBJECTS = error-test.lo
+subversion/tests/libsvn_subr/error-test$(EXEEXT): $(error_test_DEPS)
+ cd subversion/tests/libsvn_subr && $(LINK) $(error_test_LDFLAGS) -o error-test$(EXEEXT) $(error_test_OBJECTS) ../../../subversion/tests/libsvn_test-1.la -lsvn_subr-1 $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS)
+
+fs_base_test_PATH = subversion/tests/libsvn_fs_base
+fs_base_test_DEPS = subversion/tests/libsvn_fs_base/fs-base-test.lo subversion/tests/libsvn_test-1.la subversion/libsvn_fs_base/libsvn_fs_base-1.la subversion/libsvn_fs_util/libsvn_fs_util-1.la
+fs_base_test_OBJECTS = fs-base-test.lo
+subversion/tests/libsvn_fs_base/fs-base-test$(EXEEXT): $(fs_base_test_DEPS)
+ cd subversion/tests/libsvn_fs_base && $(LINK) $(fs_base_test_LDFLAGS) -o fs-base-test$(EXEEXT) $(fs_base_test_OBJECTS) ../../../subversion/tests/libsvn_test-1.la -lsvn_fs-1 ../../../subversion/libsvn_fs_base/libsvn_fs_base-1.la -lsvn_delta-1 ../../../subversion/libsvn_fs_util/libsvn_fs_util-1.la -lsvn_subr-1 $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS)
+
+fs_fs_fuzzy_test_PATH = subversion/tests/libsvn_fs_fs
+fs_fs_fuzzy_test_DEPS = subversion/tests/libsvn_fs_fs/fs-fs-fuzzy-test.lo subversion/tests/libsvn_test-1.la subversion/libsvn_fs_fs/libsvn_fs_fs-1.la
+fs_fs_fuzzy_test_OBJECTS = fs-fs-fuzzy-test.lo
+subversion/tests/libsvn_fs_fs/fs-fs-fuzzy-test$(EXEEXT): $(fs_fs_fuzzy_test_DEPS)
+ cd subversion/tests/libsvn_fs_fs && $(LINK) $(fs_fs_fuzzy_test_LDFLAGS) -o fs-fs-fuzzy-test$(EXEEXT) $(fs_fs_fuzzy_test_OBJECTS) ../../../subversion/tests/libsvn_test-1.la -lsvn_fs-1 ../../../subversion/libsvn_fs_fs/libsvn_fs_fs-1.la -lsvn_delta-1 -lsvn_repos-1 -lsvn_subr-1 $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS)
+
+fs_fs_pack_test_PATH = subversion/tests/libsvn_fs_fs
+fs_fs_pack_test_DEPS = subversion/tests/libsvn_fs_fs/fs-fs-pack-test.lo subversion/tests/libsvn_test-1.la subversion/libsvn_fs_fs/libsvn_fs_fs-1.la
+fs_fs_pack_test_OBJECTS = fs-fs-pack-test.lo
+subversion/tests/libsvn_fs_fs/fs-fs-pack-test$(EXEEXT): $(fs_fs_pack_test_DEPS)
+ cd subversion/tests/libsvn_fs_fs && $(LINK) $(fs_fs_pack_test_LDFLAGS) -o fs-fs-pack-test$(EXEEXT) $(fs_fs_pack_test_OBJECTS) ../../../subversion/tests/libsvn_test-1.la -lsvn_fs-1 ../../../subversion/libsvn_fs_fs/libsvn_fs_fs-1.la -lsvn_delta-1 -lsvn_subr-1 $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS)
+
+fs_fs_private_test_PATH = subversion/tests/libsvn_fs_fs
+fs_fs_private_test_DEPS = subversion/tests/libsvn_fs_fs/fs-fs-private-test.lo subversion/tests/libsvn_test-1.la subversion/libsvn_fs_fs/libsvn_fs_fs-1.la
+fs_fs_private_test_OBJECTS = fs-fs-private-test.lo
+subversion/tests/libsvn_fs_fs/fs-fs-private-test$(EXEEXT): $(fs_fs_private_test_DEPS)
+ cd subversion/tests/libsvn_fs_fs && $(LINK) $(fs_fs_private_test_LDFLAGS) -o fs-fs-private-test$(EXEEXT) $(fs_fs_private_test_OBJECTS) ../../../subversion/tests/libsvn_test-1.la -lsvn_fs-1 ../../../subversion/libsvn_fs_fs/libsvn_fs_fs-1.la -lsvn_delta-1 -lsvn_repos-1 -lsvn_subr-1 $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS)
+
+fs_sequential_test_PATH = subversion/tests/libsvn_fs
+fs_sequential_test_DEPS = subversion/tests/libsvn_fs/fs-sequential-test.lo subversion/tests/libsvn_test-1.la subversion/libsvn_fs_util/libsvn_fs_util-1.la
+fs_sequential_test_OBJECTS = fs-sequential-test.lo
+subversion/tests/libsvn_fs/fs-sequential-test$(EXEEXT): $(fs_sequential_test_DEPS)
+ cd subversion/tests/libsvn_fs && $(LINK) $(fs_sequential_test_LDFLAGS) -o fs-sequential-test$(EXEEXT) $(fs_sequential_test_OBJECTS) ../../../subversion/tests/libsvn_test-1.la -lsvn_fs-1 -lsvn_delta-1 ../../../subversion/libsvn_fs_util/libsvn_fs_util-1.la -lsvn_subr-1 $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS)
+
+fs_test_PATH = subversion/tests/libsvn_fs
+fs_test_DEPS = subversion/tests/libsvn_fs/fs-test.lo subversion/tests/libsvn_test-1.la subversion/libsvn_fs_util/libsvn_fs_util-1.la
+fs_test_OBJECTS = fs-test.lo
+subversion/tests/libsvn_fs/fs-test$(EXEEXT): $(fs_test_DEPS)
+ cd subversion/tests/libsvn_fs && $(LINK) $(fs_test_LDFLAGS) -o fs-test$(EXEEXT) $(fs_test_OBJECTS) ../../../subversion/tests/libsvn_test-1.la -lsvn_fs-1 -lsvn_delta-1 ../../../subversion/libsvn_fs_util/libsvn_fs_util-1.la -lsvn_subr-1 $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS)
+
+fs_x_pack_test_PATH = subversion/tests/libsvn_fs_x
+fs_x_pack_test_DEPS = subversion/tests/libsvn_fs_x/fs-x-pack-test.lo subversion/tests/libsvn_test-1.la
+fs_x_pack_test_OBJECTS = fs-x-pack-test.lo
+subversion/tests/libsvn_fs_x/fs-x-pack-test$(EXEEXT): $(fs_x_pack_test_DEPS)
+ cd subversion/tests/libsvn_fs_x && $(LINK) $(fs_x_pack_test_LDFLAGS) -o fs-x-pack-test$(EXEEXT) $(fs_x_pack_test_OBJECTS) ../../../subversion/tests/libsvn_test-1.la -lsvn_fs-1 -lsvn_fs_x-1 -lsvn_delta-1 -lsvn_subr-1 $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS)
+
+fsfs_access_map_PATH = tools/dev
+fsfs_access_map_DEPS = tools/dev/fsfs-access-map.lo
+fsfs_access_map_OBJECTS = fsfs-access-map.lo
+tools/dev/fsfs-access-map$(EXEEXT): $(fsfs_access_map_DEPS)
+ cd tools/dev && $(LINK) $(fsfs_access_map_LDFLAGS) -o fsfs-access-map$(EXEEXT) $(fsfs_access_map_OBJECTS) -lsvn_subr-1 $(SVN_APR_LIBS) $(LIBS)
+
+hashdump_test_PATH = subversion/tests/libsvn_subr
+hashdump_test_DEPS = subversion/tests/libsvn_subr/hashdump-test.lo subversion/tests/libsvn_test-1.la
+hashdump_test_OBJECTS = hashdump-test.lo
+subversion/tests/libsvn_subr/hashdump-test$(EXEEXT): $(hashdump_test_DEPS)
+ cd subversion/tests/libsvn_subr && $(LINK) $(hashdump_test_LDFLAGS) -o hashdump-test$(EXEEXT) $(hashdump_test_OBJECTS) ../../../subversion/tests/libsvn_test-1.la -lsvn_subr-1 $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS)
+
+io_test_PATH = subversion/tests/libsvn_subr
+io_test_DEPS = subversion/tests/libsvn_subr/io-test.lo subversion/tests/libsvn_test-1.la
+io_test_OBJECTS = io-test.lo
+subversion/tests/libsvn_subr/io-test$(EXEEXT): $(io_test_DEPS)
+ cd subversion/tests/libsvn_subr && $(LINK) $(io_test_LDFLAGS) -o io-test$(EXEEXT) $(io_test_OBJECTS) ../../../subversion/tests/libsvn_test-1.la -lsvn_subr-1 $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS)
+
+javahl_callback_javah_PATH = subversion/bindings/javahl/include
+javahl_callback_javah_HEADERS = subversion/bindings/javahl/include/org_apache_subversion_javahl_callback_AuthnCallback.h subversion/bindings/javahl/include/org_apache_subversion_javahl_callback_BlameCallback.h subversion/bindings/javahl/include/org_apache_subversion_javahl_callback_ChangelistCallback.h subversion/bindings/javahl/include/org_apache_subversion_javahl_callback_ClientNotifyCallback.h subversion/bindings/javahl/include/org_apache_subversion_javahl_callback_CommitCallback.h subversion/bindings/javahl/include/org_apache_subversion_javahl_callback_CommitMessageCallback.h subversion/bindings/javahl/include/org_apache_subversion_javahl_callback_ConfigEvent.h subversion/bindings/javahl/include/org_apache_subversion_javahl_callback_ConflictResolverCallback.h subversion/bindings/javahl/include/org_apache_subversion_javahl_callback_DiffSummaryCallback.h subversion/bindings/javahl/include/org_apache_subversion_javahl_callback_ImportFilterCallback.h subversion/bindings/javahl/include/org_apache_subversion_javahl_callback_InfoCallback.h subversion/bindings/javahl/include/org_apache_subversion_javahl_callback_InheritedProplistCallback.h subversion/bindings/javahl/include/org_apache_subversion_javahl_callback_ListCallback.h subversion/bindings/javahl/include/org_apache_subversion_javahl_callback_ListItemCallback.h subversion/bindings/javahl/include/org_apache_subversion_javahl_callback_LogMessageCallback.h subversion/bindings/javahl/include/org_apache_subversion_javahl_callback_PatchCallback.h subversion/bindings/javahl/include/org_apache_subversion_javahl_callback_ProgressCallback.h subversion/bindings/javahl/include/org_apache_subversion_javahl_callback_ProplistCallback.h subversion/bindings/javahl/include/org_apache_subversion_javahl_callback_RemoteFileRevisionsCallback.h subversion/bindings/javahl/include/org_apache_subversion_javahl_callback_RemoteLocationSegmentsCallback.h subversion/bindings/javahl/include/org_apache_subversion_javahl_callback_RemoteStatus.h subversion/bindings/javahl/include/org_apache_subversion_javahl_callback_ReposFreezeAction.h subversion/bindings/javahl/include/org_apache_subversion_javahl_callback_ReposNotifyCallback.h subversion/bindings/javahl/include/org_apache_subversion_javahl_callback_ReposVerifyCallback.h subversion/bindings/javahl/include/org_apache_subversion_javahl_callback_StatusCallback.h subversion/bindings/javahl/include/org_apache_subversion_javahl_callback_TunnelAgent.h subversion/bindings/javahl/include/org_apache_subversion_javahl_callback_UserPasswordCallback.h
+javahl_callback_javah_OBJECTS =
+javahl_callback_javah_DEPS = $(javahl_callback_javah_HEADERS) $(javahl_callback_javah_OBJECTS) $(javahl_java_DEPS)
+javahl-callback-javah: $(javahl_callback_javah_DEPS)
+javahl_callback_javah_CLASS_FILENAMES = subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/AuthnCallback.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/BlameCallback.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/ChangelistCallback.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/ClientNotifyCallback.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/CommitCallback.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/CommitMessageCallback.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/ConfigEvent.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/ConflictResolverCallback.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/DiffSummaryCallback.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/ImportFilterCallback.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/InfoCallback.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/InheritedProplistCallback.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/ListCallback.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/ListItemCallback.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/LogMessageCallback.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/PatchCallback.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/ProgressCallback.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/ProplistCallback.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/RemoteFileRevisionsCallback.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/RemoteLocationSegmentsCallback.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/RemoteStatus.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/ReposFreezeAction.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/ReposNotifyCallback.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/ReposVerifyCallback.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/StatusCallback.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/TunnelAgent.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/UserPasswordCallback.class
+javahl_callback_javah_CLASSES = org.apache.subversion.javahl.callback.AuthnCallback org.apache.subversion.javahl.callback.BlameCallback org.apache.subversion.javahl.callback.ChangelistCallback org.apache.subversion.javahl.callback.ClientNotifyCallback org.apache.subversion.javahl.callback.CommitCallback org.apache.subversion.javahl.callback.CommitMessageCallback org.apache.subversion.javahl.callback.ConfigEvent org.apache.subversion.javahl.callback.ConflictResolverCallback org.apache.subversion.javahl.callback.DiffSummaryCallback org.apache.subversion.javahl.callback.ImportFilterCallback org.apache.subversion.javahl.callback.InfoCallback org.apache.subversion.javahl.callback.InheritedProplistCallback org.apache.subversion.javahl.callback.ListCallback org.apache.subversion.javahl.callback.ListItemCallback org.apache.subversion.javahl.callback.LogMessageCallback org.apache.subversion.javahl.callback.PatchCallback org.apache.subversion.javahl.callback.ProgressCallback org.apache.subversion.javahl.callback.ProplistCallback org.apache.subversion.javahl.callback.RemoteFileRevisionsCallback org.apache.subversion.javahl.callback.RemoteLocationSegmentsCallback org.apache.subversion.javahl.callback.RemoteStatus org.apache.subversion.javahl.callback.ReposFreezeAction org.apache.subversion.javahl.callback.ReposNotifyCallback org.apache.subversion.javahl.callback.ReposVerifyCallback org.apache.subversion.javahl.callback.StatusCallback org.apache.subversion.javahl.callback.TunnelAgent org.apache.subversion.javahl.callback.UserPasswordCallback
+$(javahl_callback_javah_HEADERS): $(javahl_callback_javah_CLASS_FILENAMES)
+ $(COMPILE_JAVAHL_JAVAH) -force -d subversion/bindings/javahl/include -classpath subversion/bindings/javahl/classes:$(javahl_callback_javah_CLASSPATH) $(javahl_callback_javah_CLASSES)
+
+
+javahl_compat_java_PATH = subversion/bindings/javahl/classes
+javahl_compat_java_HEADERS =
+javahl_compat_java_OBJECTS = subversion/bindings/javahl/classes/org/tigris/subversion/javahl/BlameCallback.class subversion/bindings/javahl/classes/org/tigris/subversion/javahl/BlameCallback2.class subversion/bindings/javahl/classes/org/tigris/subversion/javahl/BlameCallback3.class subversion/bindings/javahl/classes/org/tigris/subversion/javahl/BlameCallbackImpl.class subversion/bindings/javahl/classes/org/tigris/subversion/javahl/ChangePath.class subversion/bindings/javahl/classes/org/tigris/subversion/javahl/ChangelistCallback.class subversion/bindings/javahl/classes/org/tigris/subversion/javahl/ClientException.class subversion/bindings/javahl/classes/org/tigris/subversion/javahl/CommitItem.class subversion/bindings/javahl/classes/org/tigris/subversion/javahl/CommitItemStateFlags.class subversion/bindings/javahl/classes/org/tigris/subversion/javahl/CommitMessage.class subversion/bindings/javahl/classes/org/tigris/subversion/javahl/ConflictDescriptor.class subversion/bindings/javahl/classes/org/tigris/subversion/javahl/ConflictResolverCallback.class subversion/bindings/javahl/classes/org/tigris/subversion/javahl/ConflictResult.class subversion/bindings/javahl/classes/org/tigris/subversion/javahl/ConflictVersion.class subversion/bindings/javahl/classes/org/tigris/subversion/javahl/CopySource.class subversion/bindings/javahl/classes/org/tigris/subversion/javahl/Depth.class subversion/bindings/javahl/classes/org/tigris/subversion/javahl/DiffSummary.class subversion/bindings/javahl/classes/org/tigris/subversion/javahl/DiffSummaryReceiver.class subversion/bindings/javahl/classes/org/tigris/subversion/javahl/DirEntry.class subversion/bindings/javahl/classes/org/tigris/subversion/javahl/ErrorCodes.class subversion/bindings/javahl/classes/org/tigris/subversion/javahl/Info.class subversion/bindings/javahl/classes/org/tigris/subversion/javahl/Info2.class subversion/bindings/javahl/classes/org/tigris/subversion/javahl/InfoCallback.class subversion/bindings/javahl/classes/org/tigris/subversion/javahl/InputInterface.class subversion/bindings/javahl/classes/org/tigris/subversion/javahl/ListCallback.class subversion/bindings/javahl/classes/org/tigris/subversion/javahl/Lock.class subversion/bindings/javahl/classes/org/tigris/subversion/javahl/LockStatus.class subversion/bindings/javahl/classes/org/tigris/subversion/javahl/LogDate.class subversion/bindings/javahl/classes/org/tigris/subversion/javahl/LogMessage.class subversion/bindings/javahl/classes/org/tigris/subversion/javahl/LogMessageCallback.class subversion/bindings/javahl/classes/org/tigris/subversion/javahl/Mergeinfo.class subversion/bindings/javahl/classes/org/tigris/subversion/javahl/MergeinfoLogKind.class subversion/bindings/javahl/classes/org/tigris/subversion/javahl/NativeException.class subversion/bindings/javahl/classes/org/tigris/subversion/javahl/NodeKind.class subversion/bindings/javahl/classes/org/tigris/subversion/javahl/Notify.class subversion/bindings/javahl/classes/org/tigris/subversion/javahl/Notify2.class subversion/bindings/javahl/classes/org/tigris/subversion/javahl/NotifyAction.class subversion/bindings/javahl/classes/org/tigris/subversion/javahl/NotifyInformation.class subversion/bindings/javahl/classes/org/tigris/subversion/javahl/NotifyStatus.class subversion/bindings/javahl/classes/org/tigris/subversion/javahl/Operation.class subversion/bindings/javahl/classes/org/tigris/subversion/javahl/OutputInterface.class subversion/bindings/javahl/classes/org/tigris/subversion/javahl/Path.class subversion/bindings/javahl/classes/org/tigris/subversion/javahl/ProgressEvent.class subversion/bindings/javahl/classes/org/tigris/subversion/javahl/ProgressListener.class subversion/bindings/javahl/classes/org/tigris/subversion/javahl/PromptUserPassword.class subversion/bindings/javahl/classes/org/tigris/subversion/javahl/PromptUserPassword2.class subversion/bindings/javahl/classes/org/tigris/subversion/javahl/PromptUserPassword3.class subversion/bindings/javahl/classes/org/tigris/subversion/javahl/PropertyData.class subversion/bindings/javahl/classes/org/tigris/subversion/javahl/ProplistCallback.class subversion/bindings/javahl/classes/org/tigris/subversion/javahl/ProplistCallbackImpl.class subversion/bindings/javahl/classes/org/tigris/subversion/javahl/Revision.class subversion/bindings/javahl/classes/org/tigris/subversion/javahl/RevisionKind.class subversion/bindings/javahl/classes/org/tigris/subversion/javahl/RevisionRange.class subversion/bindings/javahl/classes/org/tigris/subversion/javahl/SVNAdmin.class subversion/bindings/javahl/classes/org/tigris/subversion/javahl/SVNClient.class subversion/bindings/javahl/classes/org/tigris/subversion/javahl/SVNClientInterface.class subversion/bindings/javahl/classes/org/tigris/subversion/javahl/SVNClientLogLevel.class subversion/bindings/javahl/classes/org/tigris/subversion/javahl/SVNClientSynchronized.class subversion/bindings/javahl/classes/org/tigris/subversion/javahl/SVNInputStream.class subversion/bindings/javahl/classes/org/tigris/subversion/javahl/SVNOutputStream.class subversion/bindings/javahl/classes/org/tigris/subversion/javahl/ScheduleKind.class subversion/bindings/javahl/classes/org/tigris/subversion/javahl/Status.class subversion/bindings/javahl/classes/org/tigris/subversion/javahl/StatusCallback.class subversion/bindings/javahl/classes/org/tigris/subversion/javahl/StatusKind.class subversion/bindings/javahl/classes/org/tigris/subversion/javahl/SubversionException.class subversion/bindings/javahl/classes/org/tigris/subversion/javahl/Version.class
+javahl_compat_java_DEPS = $(javahl_compat_java_HEADERS) $(javahl_compat_java_OBJECTS) $(javahl_java_DEPS)
+javahl-compat-java: $(javahl_compat_java_DEPS)
+javahl_compat_java_SRC = $(abs_srcdir)/subversion/bindings/javahl/src/org/tigris/subversion/javahl/BlameCallback.java $(abs_srcdir)/subversion/bindings/javahl/src/org/tigris/subversion/javahl/BlameCallback2.java $(abs_srcdir)/subversion/bindings/javahl/src/org/tigris/subversion/javahl/BlameCallback3.java $(abs_srcdir)/subversion/bindings/javahl/src/org/tigris/subversion/javahl/BlameCallbackImpl.java $(abs_srcdir)/subversion/bindings/javahl/src/org/tigris/subversion/javahl/ChangePath.java $(abs_srcdir)/subversion/bindings/javahl/src/org/tigris/subversion/javahl/ChangelistCallback.java $(abs_srcdir)/subversion/bindings/javahl/src/org/tigris/subversion/javahl/ClientException.java $(abs_srcdir)/subversion/bindings/javahl/src/org/tigris/subversion/javahl/CommitItem.java $(abs_srcdir)/subversion/bindings/javahl/src/org/tigris/subversion/javahl/CommitItemStateFlags.java $(abs_srcdir)/subversion/bindings/javahl/src/org/tigris/subversion/javahl/CommitMessage.java $(abs_srcdir)/subversion/bindings/javahl/src/org/tigris/subversion/javahl/ConflictDescriptor.java $(abs_srcdir)/subversion/bindings/javahl/src/org/tigris/subversion/javahl/ConflictResolverCallback.java $(abs_srcdir)/subversion/bindings/javahl/src/org/tigris/subversion/javahl/ConflictResult.java $(abs_srcdir)/subversion/bindings/javahl/src/org/tigris/subversion/javahl/ConflictVersion.java $(abs_srcdir)/subversion/bindings/javahl/src/org/tigris/subversion/javahl/CopySource.java $(abs_srcdir)/subversion/bindings/javahl/src/org/tigris/subversion/javahl/Depth.java $(abs_srcdir)/subversion/bindings/javahl/src/org/tigris/subversion/javahl/DiffSummary.java $(abs_srcdir)/subversion/bindings/javahl/src/org/tigris/subversion/javahl/DiffSummaryReceiver.java $(abs_srcdir)/subversion/bindings/javahl/src/org/tigris/subversion/javahl/DirEntry.java $(abs_srcdir)/subversion/bindings/javahl/src/org/tigris/subversion/javahl/ErrorCodes.java $(abs_srcdir)/subversion/bindings/javahl/src/org/tigris/subversion/javahl/Info.java $(abs_srcdir)/subversion/bindings/javahl/src/org/tigris/subversion/javahl/Info2.java $(abs_srcdir)/subversion/bindings/javahl/src/org/tigris/subversion/javahl/InfoCallback.java $(abs_srcdir)/subversion/bindings/javahl/src/org/tigris/subversion/javahl/InputInterface.java $(abs_srcdir)/subversion/bindings/javahl/src/org/tigris/subversion/javahl/ListCallback.java $(abs_srcdir)/subversion/bindings/javahl/src/org/tigris/subversion/javahl/Lock.java $(abs_srcdir)/subversion/bindings/javahl/src/org/tigris/subversion/javahl/LockStatus.java $(abs_srcdir)/subversion/bindings/javahl/src/org/tigris/subversion/javahl/LogDate.java $(abs_srcdir)/subversion/bindings/javahl/src/org/tigris/subversion/javahl/LogMessage.java $(abs_srcdir)/subversion/bindings/javahl/src/org/tigris/subversion/javahl/LogMessageCallback.java $(abs_srcdir)/subversion/bindings/javahl/src/org/tigris/subversion/javahl/Mergeinfo.java $(abs_srcdir)/subversion/bindings/javahl/src/org/tigris/subversion/javahl/MergeinfoLogKind.java $(abs_srcdir)/subversion/bindings/javahl/src/org/tigris/subversion/javahl/NativeException.java $(abs_srcdir)/subversion/bindings/javahl/src/org/tigris/subversion/javahl/NodeKind.java $(abs_srcdir)/subversion/bindings/javahl/src/org/tigris/subversion/javahl/Notify.java $(abs_srcdir)/subversion/bindings/javahl/src/org/tigris/subversion/javahl/Notify2.java $(abs_srcdir)/subversion/bindings/javahl/src/org/tigris/subversion/javahl/NotifyAction.java $(abs_srcdir)/subversion/bindings/javahl/src/org/tigris/subversion/javahl/NotifyInformation.java $(abs_srcdir)/subversion/bindings/javahl/src/org/tigris/subversion/javahl/NotifyStatus.java $(abs_srcdir)/subversion/bindings/javahl/src/org/tigris/subversion/javahl/Operation.java $(abs_srcdir)/subversion/bindings/javahl/src/org/tigris/subversion/javahl/OutputInterface.java $(abs_srcdir)/subversion/bindings/javahl/src/org/tigris/subversion/javahl/Path.java $(abs_srcdir)/subversion/bindings/javahl/src/org/tigris/subversion/javahl/ProgressEvent.java $(abs_srcdir)/subversion/bindings/javahl/src/org/tigris/subversion/javahl/ProgressListener.java $(abs_srcdir)/subversion/bindings/javahl/src/org/tigris/subversion/javahl/PromptUserPassword.java $(abs_srcdir)/subversion/bindings/javahl/src/org/tigris/subversion/javahl/PromptUserPassword2.java $(abs_srcdir)/subversion/bindings/javahl/src/org/tigris/subversion/javahl/PromptUserPassword3.java $(abs_srcdir)/subversion/bindings/javahl/src/org/tigris/subversion/javahl/PropertyData.java $(abs_srcdir)/subversion/bindings/javahl/src/org/tigris/subversion/javahl/ProplistCallback.java $(abs_srcdir)/subversion/bindings/javahl/src/org/tigris/subversion/javahl/ProplistCallbackImpl.java $(abs_srcdir)/subversion/bindings/javahl/src/org/tigris/subversion/javahl/Revision.java $(abs_srcdir)/subversion/bindings/javahl/src/org/tigris/subversion/javahl/RevisionKind.java $(abs_srcdir)/subversion/bindings/javahl/src/org/tigris/subversion/javahl/RevisionRange.java $(abs_srcdir)/subversion/bindings/javahl/src/org/tigris/subversion/javahl/SVNAdmin.java $(abs_srcdir)/subversion/bindings/javahl/src/org/tigris/subversion/javahl/SVNClient.java $(abs_srcdir)/subversion/bindings/javahl/src/org/tigris/subversion/javahl/SVNClientInterface.java $(abs_srcdir)/subversion/bindings/javahl/src/org/tigris/subversion/javahl/SVNClientLogLevel.java $(abs_srcdir)/subversion/bindings/javahl/src/org/tigris/subversion/javahl/SVNClientSynchronized.java $(abs_srcdir)/subversion/bindings/javahl/src/org/tigris/subversion/javahl/SVNInputStream.java $(abs_srcdir)/subversion/bindings/javahl/src/org/tigris/subversion/javahl/SVNOutputStream.java $(abs_srcdir)/subversion/bindings/javahl/src/org/tigris/subversion/javahl/ScheduleKind.java $(abs_srcdir)/subversion/bindings/javahl/src/org/tigris/subversion/javahl/Status.java $(abs_srcdir)/subversion/bindings/javahl/src/org/tigris/subversion/javahl/StatusCallback.java $(abs_srcdir)/subversion/bindings/javahl/src/org/tigris/subversion/javahl/StatusKind.java $(abs_srcdir)/subversion/bindings/javahl/src/org/tigris/subversion/javahl/SubversionException.java $(abs_srcdir)/subversion/bindings/javahl/src/org/tigris/subversion/javahl/Version.java
+$(javahl_compat_java_OBJECTS): $(javahl_compat_java_SRC)
+ $(COMPILE_JAVAHL_COMPAT_JAVAC) -d subversion/bindings/javahl/classes -classpath subversion/bindings/javahl/classes:$(javahl_compat_java_CLASSPATH) $(javahl_compat_java_SRC)
+
+
+javahl_compat_tests_PATH = subversion/bindings/javahl/classes
+javahl_compat_tests_HEADERS =
+javahl_compat_tests_OBJECTS = subversion/bindings/javahl/classes/org/tigris/subversion/javahl/BasicTests.class subversion/bindings/javahl/classes/org/tigris/subversion/javahl/RunTests.class subversion/bindings/javahl/classes/org/tigris/subversion/javahl/SVNAdminTests.class subversion/bindings/javahl/classes/org/tigris/subversion/javahl/SVNTests.class subversion/bindings/javahl/classes/org/tigris/subversion/javahl/WC.class
+javahl_compat_tests_DEPS = $(javahl_compat_tests_HEADERS) $(javahl_compat_tests_OBJECTS) $(javahl_compat_java_DEPS)
+javahl-compat-tests: $(javahl_compat_tests_DEPS)
+javahl_compat_tests_SRC = $(abs_srcdir)/subversion/bindings/javahl/tests/org/tigris/subversion/javahl/BasicTests.java $(abs_srcdir)/subversion/bindings/javahl/tests/org/tigris/subversion/javahl/RunTests.java $(abs_srcdir)/subversion/bindings/javahl/tests/org/tigris/subversion/javahl/SVNAdminTests.java $(abs_srcdir)/subversion/bindings/javahl/tests/org/tigris/subversion/javahl/SVNTests.java $(abs_srcdir)/subversion/bindings/javahl/tests/org/tigris/subversion/javahl/WC.java
+$(javahl_compat_tests_OBJECTS): $(javahl_compat_tests_SRC)
+ $(COMPILE_JAVAHL_COMPAT_JAVAC) -d subversion/bindings/javahl/classes -classpath subversion/bindings/javahl/classes:$(javahl_compat_tests_CLASSPATH) $(javahl_compat_tests_SRC)
+
+
+javahl_java_PATH = subversion/bindings/javahl/classes
+javahl_java_HEADERS =
+javahl_java_OBJECTS = subversion/bindings/javahl/classes/org/apache/subversion/javahl/ClientException.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/ClientNotifyInformation.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/CommitInfo.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/CommitItem.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/CommitItemStateFlags.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/ConflictDescriptor.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/ConflictResult.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/DiffSummary.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/ISVNClient.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/ISVNConfig.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/ISVNEditor.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/ISVNRemote.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/ISVNReporter.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/ISVNRepos.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/JNIError.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/JNIObject.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/NativeException.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/NativeResources.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/OperationContext.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/ProgressEvent.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/ReposNotifyInformation.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/SVNClient.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/SVNRepos.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/SVNUtil.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/SubversionException.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/AuthnCallback.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/BlameCallback.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/ChangelistCallback.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/ClientNotifyCallback.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/CommitCallback.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/CommitMessageCallback.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/ConfigEvent.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/ConflictResolverCallback.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/DiffSummaryCallback.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/ImportFilterCallback.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/InfoCallback.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/InheritedProplistCallback.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/ListCallback.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/ListItemCallback.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/LogMessageCallback.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/PatchCallback.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/ProgressCallback.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/ProplistCallback.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/RemoteFileRevisionsCallback.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/RemoteLocationSegmentsCallback.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/RemoteStatus.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/ReposFreezeAction.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/ReposNotifyCallback.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/ReposVerifyCallback.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/StatusCallback.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/TunnelAgent.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/UserPasswordCallback.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/remote/CommitEditor.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/remote/RemoteFactory.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/remote/RemoteSession.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/remote/RetryOpenSession.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/remote/StateReporter.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/remote/StatusEditor.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/types/ChangePath.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/types/Checksum.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/types/ConflictVersion.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/types/CopySource.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/types/Depth.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/types/DiffOptions.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/types/DirEntry.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/types/ExternalItem.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/types/Info.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/types/Lock.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/types/LogDate.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/types/Mergeinfo.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/types/NativeInputStream.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/types/NativeOutputStream.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/types/NodeKind.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/types/Property.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/types/Revision.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/types/RevisionRange.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/types/RevisionRangeList.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/types/RuntimeVersion.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/types/Status.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/types/Tristate.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/types/Version.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/types/VersionExtended.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/util/ConfigImpl.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/util/ConfigLib.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/util/DiffLib.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/util/PropLib.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/util/RequestChannel.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/util/ResponseChannel.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/util/SubstLib.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/util/TunnelChannel.class
+javahl_java_DEPS = $(javahl_java_HEADERS) $(javahl_java_OBJECTS)
+javahl-java: $(javahl_java_DEPS)
+javahl_java_SRC = $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/ClientException.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/ClientNotifyInformation.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/CommitInfo.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/CommitItem.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/CommitItemStateFlags.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/ConflictDescriptor.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/ConflictResult.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/DiffSummary.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNClient.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNConfig.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNEditor.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNRemote.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNReporter.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNRepos.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/JNIError.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/JNIObject.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/NativeException.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/NativeResources.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/OperationContext.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/ProgressEvent.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/ReposNotifyInformation.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/SVNClient.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/SVNRepos.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/SVNUtil.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/SubversionException.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/AuthnCallback.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/BlameCallback.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/ChangelistCallback.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/ClientNotifyCallback.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/CommitCallback.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/CommitMessageCallback.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/ConfigEvent.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/ConflictResolverCallback.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/DiffSummaryCallback.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/ImportFilterCallback.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/InfoCallback.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/InheritedProplistCallback.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/ListCallback.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/ListItemCallback.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/LogMessageCallback.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/PatchCallback.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/ProgressCallback.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/ProplistCallback.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/RemoteFileRevisionsCallback.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/RemoteLocationSegmentsCallback.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/RemoteStatus.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/ReposFreezeAction.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/ReposNotifyCallback.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/ReposVerifyCallback.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/StatusCallback.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/TunnelAgent.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/UserPasswordCallback.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/remote/CommitEditor.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/remote/RemoteFactory.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/remote/RemoteSession.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/remote/RetryOpenSession.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/remote/StateReporter.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/remote/StatusEditor.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/types/ChangePath.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/types/Checksum.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/types/ConflictVersion.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/types/CopySource.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/types/Depth.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/types/DiffOptions.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/types/DirEntry.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/types/ExternalItem.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/types/Info.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/types/Lock.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/types/LogDate.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/types/Mergeinfo.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/types/NativeInputStream.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/types/NativeOutputStream.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/types/NodeKind.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/types/Property.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/types/Revision.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/types/RevisionRange.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/types/RevisionRangeList.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/types/RuntimeVersion.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/types/Status.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/types/Tristate.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/types/Version.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/types/VersionExtended.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/util/ConfigImpl.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/util/ConfigLib.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/util/DiffLib.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/util/PropLib.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/util/RequestChannel.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/util/ResponseChannel.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/util/SubstLib.java $(abs_srcdir)/subversion/bindings/javahl/src/org/apache/subversion/javahl/util/TunnelChannel.java
+$(javahl_java_OBJECTS): $(javahl_java_SRC)
+ $(COMPILE_JAVAHL_JAVAC) -d subversion/bindings/javahl/classes -classpath subversion/bindings/javahl/classes:$(javahl_java_CLASSPATH) $(javahl_java_SRC)
+
+
+javahl_javah_PATH = subversion/bindings/javahl/include
+javahl_javah_HEADERS = subversion/bindings/javahl/include/org_apache_subversion_javahl_ClientException.h subversion/bindings/javahl/include/org_apache_subversion_javahl_ClientNotifyInformation.h subversion/bindings/javahl/include/org_apache_subversion_javahl_CommitInfo.h subversion/bindings/javahl/include/org_apache_subversion_javahl_CommitItem.h subversion/bindings/javahl/include/org_apache_subversion_javahl_CommitItemStateFlags.h subversion/bindings/javahl/include/org_apache_subversion_javahl_ConflictDescriptor.h subversion/bindings/javahl/include/org_apache_subversion_javahl_ConflictResult.h subversion/bindings/javahl/include/org_apache_subversion_javahl_DiffSummary.h subversion/bindings/javahl/include/org_apache_subversion_javahl_ISVNClient.h subversion/bindings/javahl/include/org_apache_subversion_javahl_ISVNConfig.h subversion/bindings/javahl/include/org_apache_subversion_javahl_ISVNEditor.h subversion/bindings/javahl/include/org_apache_subversion_javahl_ISVNRemote.h subversion/bindings/javahl/include/org_apache_subversion_javahl_ISVNReporter.h subversion/bindings/javahl/include/org_apache_subversion_javahl_ISVNRepos.h subversion/bindings/javahl/include/org_apache_subversion_javahl_JNIError.h subversion/bindings/javahl/include/org_apache_subversion_javahl_JNIObject.h subversion/bindings/javahl/include/org_apache_subversion_javahl_NativeException.h subversion/bindings/javahl/include/org_apache_subversion_javahl_NativeResources.h subversion/bindings/javahl/include/org_apache_subversion_javahl_OperationContext.h subversion/bindings/javahl/include/org_apache_subversion_javahl_ProgressEvent.h subversion/bindings/javahl/include/org_apache_subversion_javahl_ReposNotifyInformation.h subversion/bindings/javahl/include/org_apache_subversion_javahl_SVNClient.h subversion/bindings/javahl/include/org_apache_subversion_javahl_SVNRepos.h subversion/bindings/javahl/include/org_apache_subversion_javahl_SVNUtil.h subversion/bindings/javahl/include/org_apache_subversion_javahl_SubversionException.h
+javahl_javah_OBJECTS =
+javahl_javah_DEPS = $(javahl_javah_HEADERS) $(javahl_javah_OBJECTS) $(javahl_java_DEPS)
+javahl-javah: $(javahl_javah_DEPS)
+javahl_javah_CLASS_FILENAMES = subversion/bindings/javahl/classes/org/apache/subversion/javahl/ClientException.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/ClientNotifyInformation.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/CommitInfo.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/CommitItem.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/CommitItemStateFlags.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/ConflictDescriptor.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/ConflictResult.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/DiffSummary.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/ISVNClient.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/ISVNConfig.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/ISVNEditor.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/ISVNRemote.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/ISVNReporter.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/ISVNRepos.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/JNIError.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/JNIObject.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/NativeException.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/NativeResources.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/OperationContext.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/ProgressEvent.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/ReposNotifyInformation.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/SVNClient.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/SVNRepos.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/SVNUtil.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/SubversionException.class
+javahl_javah_CLASSES = org.apache.subversion.javahl.ClientException org.apache.subversion.javahl.ClientNotifyInformation org.apache.subversion.javahl.CommitInfo org.apache.subversion.javahl.CommitItem org.apache.subversion.javahl.CommitItemStateFlags org.apache.subversion.javahl.ConflictDescriptor org.apache.subversion.javahl.ConflictResult org.apache.subversion.javahl.DiffSummary org.apache.subversion.javahl.ISVNClient org.apache.subversion.javahl.ISVNConfig org.apache.subversion.javahl.ISVNEditor org.apache.subversion.javahl.ISVNRemote org.apache.subversion.javahl.ISVNReporter org.apache.subversion.javahl.ISVNRepos org.apache.subversion.javahl.JNIError org.apache.subversion.javahl.JNIObject org.apache.subversion.javahl.NativeException org.apache.subversion.javahl.NativeResources org.apache.subversion.javahl.OperationContext org.apache.subversion.javahl.ProgressEvent org.apache.subversion.javahl.ReposNotifyInformation org.apache.subversion.javahl.SVNClient org.apache.subversion.javahl.SVNRepos org.apache.subversion.javahl.SVNUtil org.apache.subversion.javahl.SubversionException
+$(javahl_javah_HEADERS): $(javahl_javah_CLASS_FILENAMES)
+ $(COMPILE_JAVAHL_JAVAH) -force -d subversion/bindings/javahl/include -classpath subversion/bindings/javahl/classes:$(javahl_javah_CLASSPATH) $(javahl_javah_CLASSES)
+
+
+javahl_remote_javah_PATH = subversion/bindings/javahl/include
+javahl_remote_javah_HEADERS = subversion/bindings/javahl/include/org_apache_subversion_javahl_remote_CommitEditor.h subversion/bindings/javahl/include/org_apache_subversion_javahl_remote_RemoteFactory.h subversion/bindings/javahl/include/org_apache_subversion_javahl_remote_RemoteSession.h subversion/bindings/javahl/include/org_apache_subversion_javahl_remote_RetryOpenSession.h subversion/bindings/javahl/include/org_apache_subversion_javahl_remote_StateReporter.h subversion/bindings/javahl/include/org_apache_subversion_javahl_remote_StatusEditor.h
+javahl_remote_javah_OBJECTS =
+javahl_remote_javah_DEPS = $(javahl_remote_javah_HEADERS) $(javahl_remote_javah_OBJECTS) $(javahl_java_DEPS)
+javahl-remote-javah: $(javahl_remote_javah_DEPS)
+javahl_remote_javah_CLASS_FILENAMES = subversion/bindings/javahl/classes/org/apache/subversion/javahl/remote/CommitEditor.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/remote/RemoteFactory.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/remote/RemoteSession.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/remote/RetryOpenSession.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/remote/StateReporter.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/remote/StatusEditor.class
+javahl_remote_javah_CLASSES = org.apache.subversion.javahl.remote.CommitEditor org.apache.subversion.javahl.remote.RemoteFactory org.apache.subversion.javahl.remote.RemoteSession org.apache.subversion.javahl.remote.RetryOpenSession org.apache.subversion.javahl.remote.StateReporter org.apache.subversion.javahl.remote.StatusEditor
+$(javahl_remote_javah_HEADERS): $(javahl_remote_javah_CLASS_FILENAMES)
+ $(COMPILE_JAVAHL_JAVAH) -force -d subversion/bindings/javahl/include -classpath subversion/bindings/javahl/classes:$(javahl_remote_javah_CLASSPATH) $(javahl_remote_javah_CLASSES)
+
+
+javahl_tests_PATH = subversion/bindings/javahl/classes
+javahl_tests_HEADERS =
+javahl_tests_OBJECTS = subversion/bindings/javahl/classes/org/apache/subversion/javahl/BasicTests.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/ExceptionTests.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/RunTests.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/SVNRemoteTests.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/SVNReposTests.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/SVNTests.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/UtilTests.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/WC.class
+javahl_tests_DEPS = $(javahl_tests_HEADERS) $(javahl_tests_OBJECTS) $(javahl_java_DEPS)
+javahl-tests: $(javahl_tests_DEPS)
+javahl_tests_SRC = $(abs_srcdir)/subversion/bindings/javahl/tests/org/apache/subversion/javahl/BasicTests.java $(abs_srcdir)/subversion/bindings/javahl/tests/org/apache/subversion/javahl/ExceptionTests.java $(abs_srcdir)/subversion/bindings/javahl/tests/org/apache/subversion/javahl/RunTests.java $(abs_srcdir)/subversion/bindings/javahl/tests/org/apache/subversion/javahl/SVNRemoteTests.java $(abs_srcdir)/subversion/bindings/javahl/tests/org/apache/subversion/javahl/SVNReposTests.java $(abs_srcdir)/subversion/bindings/javahl/tests/org/apache/subversion/javahl/SVNTests.java $(abs_srcdir)/subversion/bindings/javahl/tests/org/apache/subversion/javahl/UtilTests.java $(abs_srcdir)/subversion/bindings/javahl/tests/org/apache/subversion/javahl/WC.java
+$(javahl_tests_OBJECTS): $(javahl_tests_SRC)
+ $(COMPILE_JAVAHL_JAVAC) -d subversion/bindings/javahl/classes -classpath subversion/bindings/javahl/classes:$(javahl_tests_CLASSPATH) $(javahl_tests_SRC)
+
+
+javahl_types_javah_PATH = subversion/bindings/javahl/include
+javahl_types_javah_HEADERS = subversion/bindings/javahl/include/org_apache_subversion_javahl_types_ChangePath.h subversion/bindings/javahl/include/org_apache_subversion_javahl_types_Checksum.h subversion/bindings/javahl/include/org_apache_subversion_javahl_types_ConflictVersion.h subversion/bindings/javahl/include/org_apache_subversion_javahl_types_CopySource.h subversion/bindings/javahl/include/org_apache_subversion_javahl_types_Depth.h subversion/bindings/javahl/include/org_apache_subversion_javahl_types_DiffOptions.h subversion/bindings/javahl/include/org_apache_subversion_javahl_types_DirEntry.h subversion/bindings/javahl/include/org_apache_subversion_javahl_types_ExternalItem.h subversion/bindings/javahl/include/org_apache_subversion_javahl_types_Info.h subversion/bindings/javahl/include/org_apache_subversion_javahl_types_Lock.h subversion/bindings/javahl/include/org_apache_subversion_javahl_types_LogDate.h subversion/bindings/javahl/include/org_apache_subversion_javahl_types_Mergeinfo.h subversion/bindings/javahl/include/org_apache_subversion_javahl_types_NativeInputStream.h subversion/bindings/javahl/include/org_apache_subversion_javahl_types_NativeOutputStream.h subversion/bindings/javahl/include/org_apache_subversion_javahl_types_NodeKind.h subversion/bindings/javahl/include/org_apache_subversion_javahl_types_Property.h subversion/bindings/javahl/include/org_apache_subversion_javahl_types_Revision.h subversion/bindings/javahl/include/org_apache_subversion_javahl_types_RevisionRange.h subversion/bindings/javahl/include/org_apache_subversion_javahl_types_RevisionRangeList.h subversion/bindings/javahl/include/org_apache_subversion_javahl_types_RuntimeVersion.h subversion/bindings/javahl/include/org_apache_subversion_javahl_types_Status.h subversion/bindings/javahl/include/org_apache_subversion_javahl_types_Tristate.h subversion/bindings/javahl/include/org_apache_subversion_javahl_types_Version.h subversion/bindings/javahl/include/org_apache_subversion_javahl_types_VersionExtended.h
+javahl_types_javah_OBJECTS =
+javahl_types_javah_DEPS = $(javahl_types_javah_HEADERS) $(javahl_types_javah_OBJECTS) $(javahl_java_DEPS)
+javahl-types-javah: $(javahl_types_javah_DEPS)
+javahl_types_javah_CLASS_FILENAMES = subversion/bindings/javahl/classes/org/apache/subversion/javahl/types/ChangePath.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/types/Checksum.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/types/ConflictVersion.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/types/CopySource.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/types/Depth.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/types/DiffOptions.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/types/DirEntry.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/types/ExternalItem.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/types/Info.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/types/Lock.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/types/LogDate.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/types/Mergeinfo.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/types/NativeInputStream.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/types/NativeOutputStream.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/types/NodeKind.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/types/Property.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/types/Revision.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/types/RevisionRange.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/types/RevisionRangeList.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/types/RuntimeVersion.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/types/Status.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/types/Tristate.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/types/Version.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/types/VersionExtended.class
+javahl_types_javah_CLASSES = org.apache.subversion.javahl.types.ChangePath org.apache.subversion.javahl.types.Checksum org.apache.subversion.javahl.types.ConflictVersion org.apache.subversion.javahl.types.CopySource org.apache.subversion.javahl.types.Depth org.apache.subversion.javahl.types.DiffOptions org.apache.subversion.javahl.types.DirEntry org.apache.subversion.javahl.types.ExternalItem org.apache.subversion.javahl.types.Info org.apache.subversion.javahl.types.Lock org.apache.subversion.javahl.types.LogDate org.apache.subversion.javahl.types.Mergeinfo org.apache.subversion.javahl.types.NativeInputStream org.apache.subversion.javahl.types.NativeOutputStream org.apache.subversion.javahl.types.NodeKind org.apache.subversion.javahl.types.Property org.apache.subversion.javahl.types.Revision org.apache.subversion.javahl.types.RevisionRange org.apache.subversion.javahl.types.RevisionRangeList org.apache.subversion.javahl.types.RuntimeVersion org.apache.subversion.javahl.types.Status org.apache.subversion.javahl.types.Tristate org.apache.subversion.javahl.types.Version org.apache.subversion.javahl.types.VersionExtended
+$(javahl_types_javah_HEADERS): $(javahl_types_javah_CLASS_FILENAMES)
+ $(COMPILE_JAVAHL_JAVAH) -force -d subversion/bindings/javahl/include -classpath subversion/bindings/javahl/classes:$(javahl_types_javah_CLASSPATH) $(javahl_types_javah_CLASSES)
+
+
+javahl_util_javah_PATH = subversion/bindings/javahl/include
+javahl_util_javah_HEADERS = subversion/bindings/javahl/include/org_apache_subversion_javahl_util_ConfigImpl.h subversion/bindings/javahl/include/org_apache_subversion_javahl_util_ConfigLib.h subversion/bindings/javahl/include/org_apache_subversion_javahl_util_DiffLib.h subversion/bindings/javahl/include/org_apache_subversion_javahl_util_PropLib.h subversion/bindings/javahl/include/org_apache_subversion_javahl_util_RequestChannel.h subversion/bindings/javahl/include/org_apache_subversion_javahl_util_ResponseChannel.h subversion/bindings/javahl/include/org_apache_subversion_javahl_util_SubstLib.h subversion/bindings/javahl/include/org_apache_subversion_javahl_util_TunnelChannel.h
+javahl_util_javah_OBJECTS =
+javahl_util_javah_DEPS = $(javahl_util_javah_HEADERS) $(javahl_util_javah_OBJECTS) $(javahl_java_DEPS)
+javahl-util-javah: $(javahl_util_javah_DEPS)
+javahl_util_javah_CLASS_FILENAMES = subversion/bindings/javahl/classes/org/apache/subversion/javahl/util/ConfigImpl.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/util/ConfigLib.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/util/DiffLib.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/util/PropLib.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/util/RequestChannel.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/util/ResponseChannel.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/util/SubstLib.class subversion/bindings/javahl/classes/org/apache/subversion/javahl/util/TunnelChannel.class
+javahl_util_javah_CLASSES = org.apache.subversion.javahl.util.ConfigImpl org.apache.subversion.javahl.util.ConfigLib org.apache.subversion.javahl.util.DiffLib org.apache.subversion.javahl.util.PropLib org.apache.subversion.javahl.util.RequestChannel org.apache.subversion.javahl.util.ResponseChannel org.apache.subversion.javahl.util.SubstLib org.apache.subversion.javahl.util.TunnelChannel
+$(javahl_util_javah_HEADERS): $(javahl_util_javah_CLASS_FILENAMES)
+ $(COMPILE_JAVAHL_JAVAH) -force -d subversion/bindings/javahl/include -classpath subversion/bindings/javahl/classes:$(javahl_util_javah_CLASSPATH) $(javahl_util_javah_CLASSES)
+
+
+libgooglemock_PATH = googlemock
+libgooglemock_DEPS =
+libgooglemock_OBJECTS =
+googlemock/libgooglemock-1.la: $(libgooglemock_DEPS)
+ if $(SVN_USE_GOOGLEMOCK) ; then cd googlemock && $(LINK_CXX_LIB) $(libgooglemock_LDFLAGS) -o libgooglemock-1.la $(LT_NO_UNDEFINED) $(libgooglemock_OBJECTS) $(LIBS) ; else echo "fake" > googlemock/libgooglemock-1.la ; fi
+
+libsvn_auth_gnome_keyring_PATH = subversion/libsvn_auth_gnome_keyring
+libsvn_auth_gnome_keyring_DEPS = subversion/libsvn_auth_gnome_keyring/gnome_keyring.lo subversion/libsvn_auth_gnome_keyring/version.lo
+libsvn_auth_gnome_keyring_OBJECTS = gnome_keyring.lo version.lo
+subversion/libsvn_auth_gnome_keyring/libsvn_auth_gnome_keyring-1.la: $(libsvn_auth_gnome_keyring_DEPS)
+ cd subversion/libsvn_auth_gnome_keyring && $(LINK_SHARED_ONLY_LIB) $(libsvn_auth_gnome_keyring_LDFLAGS) -o libsvn_auth_gnome_keyring-1.la $(LT_NO_UNDEFINED) $(libsvn_auth_gnome_keyring_OBJECTS) -lsvn_subr-1 $(SVN_APR_LIBS) $(SVN_GNOME_KEYRING_LIBS) $(LIBS)
+
+libsvn_auth_kwallet_PATH = subversion/libsvn_auth_kwallet
+libsvn_auth_kwallet_DEPS = subversion/libsvn_auth_kwallet/kwallet.lo subversion/libsvn_auth_kwallet/version.lo
+libsvn_auth_kwallet_OBJECTS = kwallet.lo version.lo
+subversion/libsvn_auth_kwallet/libsvn_auth_kwallet-1.la: $(libsvn_auth_kwallet_DEPS)
+ cd subversion/libsvn_auth_kwallet && $(LINK_SHARED_ONLY_CXX_LIB) $(libsvn_auth_kwallet_LDFLAGS) -o libsvn_auth_kwallet-1.la $(LT_NO_UNDEFINED) $(libsvn_auth_kwallet_OBJECTS) -lsvn_subr-1 $(SVN_APR_LIBS) $(SVN_KWALLET_LIBS) $(LIBS)
+
+libsvn_client_PATH = subversion/libsvn_client
+libsvn_client_DEPS = subversion/libsvn_client/add.lo subversion/libsvn_client/blame.lo subversion/libsvn_client/cat.lo subversion/libsvn_client/changelist.lo subversion/libsvn_client/checkout.lo subversion/libsvn_client/cleanup.lo subversion/libsvn_client/cmdline.lo subversion/libsvn_client/commit.lo subversion/libsvn_client/commit_util.lo subversion/libsvn_client/compat_providers.lo subversion/libsvn_client/conflicts.lo subversion/libsvn_client/copy.lo subversion/libsvn_client/copy_foreign.lo subversion/libsvn_client/ctx.lo subversion/libsvn_client/delete.lo subversion/libsvn_client/deprecated.lo subversion/libsvn_client/diff.lo subversion/libsvn_client/diff_local.lo subversion/libsvn_client/diff_summarize.lo subversion/libsvn_client/export.lo subversion/libsvn_client/externals.lo subversion/libsvn_client/import.lo subversion/libsvn_client/info.lo subversion/libsvn_client/iprops.lo subversion/libsvn_client/list.lo subversion/libsvn_client/locking_commands.lo subversion/libsvn_client/log.lo subversion/libsvn_client/merge.lo subversion/libsvn_client/merge_elements.lo subversion/libsvn_client/mergeinfo.lo subversion/libsvn_client/mtcc.lo subversion/libsvn_client/patch.lo subversion/libsvn_client/prop_commands.lo subversion/libsvn_client/ra.lo subversion/libsvn_client/relocate.lo subversion/libsvn_client/repos_diff.lo subversion/libsvn_client/resolved.lo subversion/libsvn_client/revert.lo subversion/libsvn_client/revisions.lo subversion/libsvn_client/shelve.lo subversion/libsvn_client/status.lo subversion/libsvn_client/switch.lo subversion/libsvn_client/update.lo subversion/libsvn_client/upgrade.lo subversion/libsvn_client/url.lo subversion/libsvn_client/util.lo subversion/libsvn_client/version.lo
+libsvn_client_OBJECTS = add.lo blame.lo cat.lo changelist.lo checkout.lo cleanup.lo cmdline.lo commit.lo commit_util.lo compat_providers.lo conflicts.lo copy.lo copy_foreign.lo ctx.lo delete.lo deprecated.lo diff.lo diff_local.lo diff_summarize.lo export.lo externals.lo import.lo info.lo iprops.lo list.lo locking_commands.lo log.lo merge.lo merge_elements.lo mergeinfo.lo mtcc.lo patch.lo prop_commands.lo ra.lo relocate.lo repos_diff.lo resolved.lo revert.lo revisions.lo shelve.lo status.lo switch.lo update.lo upgrade.lo url.lo util.lo version.lo
+subversion/libsvn_client/libsvn_client-1.la: $(libsvn_client_DEPS)
+ cd subversion/libsvn_client && $(LINK_LIB) $(libsvn_client_LDFLAGS) -o libsvn_client-1.la $(LT_NO_UNDEFINED) $(libsvn_client_OBJECTS) -lsvn_wc-1 -lsvn_ra-1 -lsvn_delta-1 -lsvn_diff-1 -lsvn_subr-1 $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS)
+
+libsvn_delta_PATH = subversion/libsvn_delta
+libsvn_delta_DEPS = subversion/libsvn_delta/branch.lo subversion/libsvn_delta/branch_compat.lo subversion/libsvn_delta/branch_migrate.lo subversion/libsvn_delta/branch_nested.lo subversion/libsvn_delta/branch_repos.lo subversion/libsvn_delta/cancel.lo subversion/libsvn_delta/compat.lo subversion/libsvn_delta/compose_delta.lo subversion/libsvn_delta/debug_editor.lo subversion/libsvn_delta/default_editor.lo subversion/libsvn_delta/deprecated.lo subversion/libsvn_delta/depth_filter_editor.lo subversion/libsvn_delta/editor.lo subversion/libsvn_delta/element.lo subversion/libsvn_delta/path_driver.lo subversion/libsvn_delta/svndiff.lo subversion/libsvn_delta/text_delta.lo subversion/libsvn_delta/version.lo subversion/libsvn_delta/xdelta.lo
+libsvn_delta_OBJECTS = branch.lo branch_compat.lo branch_migrate.lo branch_nested.lo branch_repos.lo cancel.lo compat.lo compose_delta.lo debug_editor.lo default_editor.lo deprecated.lo depth_filter_editor.lo editor.lo element.lo path_driver.lo svndiff.lo text_delta.lo version.lo xdelta.lo
+subversion/libsvn_delta/libsvn_delta-1.la: $(libsvn_delta_DEPS)
+ cd subversion/libsvn_delta && $(LINK_LIB) $(libsvn_delta_LDFLAGS) -o libsvn_delta-1.la $(LT_NO_UNDEFINED) $(libsvn_delta_OBJECTS) -lsvn_subr-1 $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(SVN_ZLIB_LIBS) $(LIBS)
+
+libsvn_diff_PATH = subversion/libsvn_diff
+libsvn_diff_DEPS = subversion/libsvn_diff/binary_diff.lo subversion/libsvn_diff/deprecated.lo subversion/libsvn_diff/diff.lo subversion/libsvn_diff/diff3.lo subversion/libsvn_diff/diff4.lo subversion/libsvn_diff/diff_file.lo subversion/libsvn_diff/diff_memory.lo subversion/libsvn_diff/diff_tree.lo subversion/libsvn_diff/lcs.lo subversion/libsvn_diff/parse-diff.lo subversion/libsvn_diff/token.lo subversion/libsvn_diff/util.lo
+libsvn_diff_OBJECTS = binary_diff.lo deprecated.lo diff.lo diff3.lo diff4.lo diff_file.lo diff_memory.lo diff_tree.lo lcs.lo parse-diff.lo token.lo util.lo
+subversion/libsvn_diff/libsvn_diff-1.la: $(libsvn_diff_DEPS)
+ cd subversion/libsvn_diff && $(LINK_LIB) $(libsvn_diff_LDFLAGS) -o libsvn_diff-1.la $(LT_NO_UNDEFINED) $(libsvn_diff_OBJECTS) -lsvn_subr-1 $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(SVN_ZLIB_LIBS) $(LIBS)
+
+libsvn_fs_PATH = subversion/libsvn_fs
+install-ramod-lib: $(SVN_FS_LIB_INSTALL_DEPS)
+libsvn_fs_DEPS = $(SVN_FS_LIB_DEPS) subversion/libsvn_fs/access.lo subversion/libsvn_fs/deprecated.lo subversion/libsvn_fs/editor.lo subversion/libsvn_fs/fs-loader.lo subversion/libsvn_fs_util/libsvn_fs_util-1.la
+libsvn_fs_OBJECTS = access.lo deprecated.lo editor.lo fs-loader.lo
+subversion/libsvn_fs/libsvn_fs-1.la: $(libsvn_fs_DEPS)
+ cd subversion/libsvn_fs && $(LINK_LIB) $(libsvn_fs_LDFLAGS) -o libsvn_fs-1.la $(LT_NO_UNDEFINED) $(libsvn_fs_OBJECTS) ../../subversion/libsvn_fs_util/libsvn_fs_util-1.la -lsvn_delta-1 -lsvn_subr-1 $(SVN_FS_LIB_LINK) $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS)
+
+libsvn_fs_base_PATH = subversion/libsvn_fs_base
+libsvn_fs_base_DEPS = subversion/libsvn_fs_base/bdb/bdb-err.lo subversion/libsvn_fs_base/bdb/bdb_compat.lo subversion/libsvn_fs_base/bdb/changes-table.lo subversion/libsvn_fs_base/bdb/checksum-reps-table.lo subversion/libsvn_fs_base/bdb/copies-table.lo subversion/libsvn_fs_base/bdb/dbt.lo subversion/libsvn_fs_base/bdb/env.lo subversion/libsvn_fs_base/bdb/lock-tokens-table.lo subversion/libsvn_fs_base/bdb/locks-table.lo subversion/libsvn_fs_base/bdb/miscellaneous-table.lo subversion/libsvn_fs_base/bdb/node-origins-table.lo subversion/libsvn_fs_base/bdb/nodes-table.lo subversion/libsvn_fs_base/bdb/reps-table.lo subversion/libsvn_fs_base/bdb/rev-table.lo subversion/libsvn_fs_base/bdb/strings-table.lo subversion/libsvn_fs_base/bdb/txn-table.lo subversion/libsvn_fs_base/bdb/uuids-table.lo subversion/libsvn_fs_base/dag.lo subversion/libsvn_fs_base/err.lo subversion/libsvn_fs_base/fs.lo subversion/libsvn_fs_base/id.lo subversion/libsvn_fs_base/key-gen.lo subversion/libsvn_fs_base/lock.lo subversion/libsvn_fs_base/node-rev.lo subversion/libsvn_fs_base/reps-strings.lo subversion/libsvn_fs_base/revs-txns.lo subversion/libsvn_fs_base/trail.lo subversion/libsvn_fs_base/tree.lo subversion/libsvn_fs_base/util/fs_skels.lo subversion/libsvn_fs_base/uuid.lo subversion/libsvn_fs_util/libsvn_fs_util-1.la
+libsvn_fs_base_OBJECTS = bdb/bdb-err.lo bdb/bdb_compat.lo bdb/changes-table.lo bdb/checksum-reps-table.lo bdb/copies-table.lo bdb/dbt.lo bdb/env.lo bdb/lock-tokens-table.lo bdb/locks-table.lo bdb/miscellaneous-table.lo bdb/node-origins-table.lo bdb/nodes-table.lo bdb/reps-table.lo bdb/rev-table.lo bdb/strings-table.lo bdb/txn-table.lo bdb/uuids-table.lo dag.lo err.lo fs.lo id.lo key-gen.lo lock.lo node-rev.lo reps-strings.lo revs-txns.lo trail.lo tree.lo util/fs_skels.lo uuid.lo
+subversion/libsvn_fs_base/libsvn_fs_base-1.la: $(libsvn_fs_base_DEPS)
+ cd subversion/libsvn_fs_base && $(LINK_LIB) $(libsvn_fs_base_LDFLAGS) -o libsvn_fs_base-1.la $(LT_NO_UNDEFINED) $(libsvn_fs_base_OBJECTS) -lsvn_delta-1 -lsvn_subr-1 $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(SVN_DB_LIBS) ../../subversion/libsvn_fs_util/libsvn_fs_util-1.la $(LIBS)
+
+libsvn_fs_fs_PATH = subversion/libsvn_fs_fs
+libsvn_fs_fs_DEPS = subversion/libsvn_fs_fs/cached_data.lo subversion/libsvn_fs_fs/caching.lo subversion/libsvn_fs_fs/dag.lo subversion/libsvn_fs_fs/dump-index.lo subversion/libsvn_fs_fs/fs.lo subversion/libsvn_fs_fs/fs_fs.lo subversion/libsvn_fs_fs/hotcopy.lo subversion/libsvn_fs_fs/id.lo subversion/libsvn_fs_fs/index.lo subversion/libsvn_fs_fs/load-index.lo subversion/libsvn_fs_fs/lock.lo subversion/libsvn_fs_fs/low_level.lo subversion/libsvn_fs_fs/pack.lo subversion/libsvn_fs_fs/recovery.lo subversion/libsvn_fs_fs/rep-cache.lo subversion/libsvn_fs_fs/rev_file.lo subversion/libsvn_fs_fs/revprops.lo subversion/libsvn_fs_fs/stats.lo subversion/libsvn_fs_fs/temp_serializer.lo subversion/libsvn_fs_fs/transaction.lo subversion/libsvn_fs_fs/tree.lo subversion/libsvn_fs_fs/util.lo subversion/libsvn_fs_fs/verify.lo subversion/libsvn_fs_util/libsvn_fs_util-1.la
+libsvn_fs_fs_OBJECTS = cached_data.lo caching.lo dag.lo dump-index.lo fs.lo fs_fs.lo hotcopy.lo id.lo index.lo load-index.lo lock.lo low_level.lo pack.lo recovery.lo rep-cache.lo rev_file.lo revprops.lo stats.lo temp_serializer.lo transaction.lo tree.lo util.lo verify.lo
+subversion/libsvn_fs_fs/libsvn_fs_fs-1.la: $(libsvn_fs_fs_DEPS)
+ cd subversion/libsvn_fs_fs && $(LINK_LIB) $(libsvn_fs_fs_LDFLAGS) -o libsvn_fs_fs-1.la $(LT_NO_UNDEFINED) $(libsvn_fs_fs_OBJECTS) -lsvn_delta-1 -lsvn_subr-1 $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) ../../subversion/libsvn_fs_util/libsvn_fs_util-1.la $(LIBS)
+
+libsvn_fs_util_PATH = subversion/libsvn_fs_util
+libsvn_fs_util_DEPS = subversion/libsvn_fs_util/fs-util.lo
+libsvn_fs_util_OBJECTS = fs-util.lo
+subversion/libsvn_fs_util/libsvn_fs_util-1.la: $(libsvn_fs_util_DEPS)
+ cd subversion/libsvn_fs_util && $(LINK_LIB) $(libsvn_fs_util_LDFLAGS) -o libsvn_fs_util-1.la $(LT_NO_UNDEFINED) $(libsvn_fs_util_OBJECTS) -lsvn_subr-1 $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS)
+
+libsvn_fs_x_PATH = subversion/libsvn_fs_x
+libsvn_fs_x_DEPS = subversion/libsvn_fs_x/batch_fsync.lo subversion/libsvn_fs_x/cached_data.lo subversion/libsvn_fs_x/caching.lo subversion/libsvn_fs_x/changes.lo subversion/libsvn_fs_x/dag.lo subversion/libsvn_fs_x/dag_cache.lo subversion/libsvn_fs_x/fs.lo subversion/libsvn_fs_x/fs_id.lo subversion/libsvn_fs_x/fs_x.lo subversion/libsvn_fs_x/hotcopy.lo subversion/libsvn_fs_x/id.lo subversion/libsvn_fs_x/index.lo subversion/libsvn_fs_x/lock.lo subversion/libsvn_fs_x/low_level.lo subversion/libsvn_fs_x/noderevs.lo subversion/libsvn_fs_x/pack.lo subversion/libsvn_fs_x/recovery.lo subversion/libsvn_fs_x/rep-cache.lo subversion/libsvn_fs_x/reps.lo subversion/libsvn_fs_x/rev_file.lo subversion/libsvn_fs_x/revprops.lo subversion/libsvn_fs_x/string_table.lo subversion/libsvn_fs_x/temp_serializer.lo subversion/libsvn_fs_x/transaction.lo subversion/libsvn_fs_x/tree.lo subversion/libsvn_fs_x/util.lo subversion/libsvn_fs_x/verify.lo subversion/libsvn_fs_util/libsvn_fs_util-1.la
+libsvn_fs_x_OBJECTS = batch_fsync.lo cached_data.lo caching.lo changes.lo dag.lo dag_cache.lo fs.lo fs_id.lo fs_x.lo hotcopy.lo id.lo index.lo lock.lo low_level.lo noderevs.lo pack.lo recovery.lo rep-cache.lo reps.lo rev_file.lo revprops.lo string_table.lo temp_serializer.lo transaction.lo tree.lo util.lo verify.lo
+subversion/libsvn_fs_x/libsvn_fs_x-1.la: $(libsvn_fs_x_DEPS)
+ cd subversion/libsvn_fs_x && $(LINK_LIB) $(libsvn_fs_x_LDFLAGS) -o libsvn_fs_x-1.la $(LT_NO_UNDEFINED) $(libsvn_fs_x_OBJECTS) -lsvn_delta-1 -lsvn_subr-1 $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) ../../subversion/libsvn_fs_util/libsvn_fs_util-1.la $(LIBS)
+
+libsvn_ra_PATH = subversion/libsvn_ra
+install-lib: $(SVN_RA_LIB_INSTALL_DEPS)
+libsvn_ra_DEPS = $(SVN_RA_LIB_DEPS) subversion/libsvn_ra/compat.lo subversion/libsvn_ra/debug_reporter.lo subversion/libsvn_ra/deprecated.lo subversion/libsvn_ra/editor.lo subversion/libsvn_ra/ra_loader.lo subversion/libsvn_ra/util.lo
+libsvn_ra_OBJECTS = compat.lo debug_reporter.lo deprecated.lo editor.lo ra_loader.lo util.lo
+subversion/libsvn_ra/libsvn_ra-1.la: $(libsvn_ra_DEPS)
+ cd subversion/libsvn_ra && $(LINK_LIB) $(libsvn_ra_LDFLAGS) -o libsvn_ra-1.la $(LT_NO_UNDEFINED) $(libsvn_ra_OBJECTS) -lsvn_delta-1 -lsvn_subr-1 $(SVN_RA_LIB_LINK) $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS)
+
+libsvn_ra_local_PATH = subversion/libsvn_ra_local
+libsvn_ra_local_DEPS = subversion/libsvn_ra_local/ra_plugin.lo subversion/libsvn_ra_local/split_url.lo
+libsvn_ra_local_OBJECTS = ra_plugin.lo split_url.lo
+subversion/libsvn_ra_local/libsvn_ra_local-1.la: $(libsvn_ra_local_DEPS)
+ cd subversion/libsvn_ra_local && $(LINK_LIB) $(libsvn_ra_local_LDFLAGS) -o libsvn_ra_local-1.la $(LT_NO_UNDEFINED) $(libsvn_ra_local_OBJECTS) -lsvn_repos-1 -lsvn_fs-1 -lsvn_delta-1 -lsvn_subr-1 $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS)
+
+libsvn_ra_serf_PATH = subversion/libsvn_ra_serf
+libsvn_ra_serf_DEPS = subversion/libsvn_ra_serf/blame.lo subversion/libsvn_ra_serf/blncache.lo subversion/libsvn_ra_serf/commit.lo subversion/libsvn_ra_serf/eagain_bucket.lo subversion/libsvn_ra_serf/get_deleted_rev.lo subversion/libsvn_ra_serf/get_file.lo subversion/libsvn_ra_serf/get_lock.lo subversion/libsvn_ra_serf/getdate.lo subversion/libsvn_ra_serf/getlocations.lo subversion/libsvn_ra_serf/getlocationsegments.lo subversion/libsvn_ra_serf/getlocks.lo subversion/libsvn_ra_serf/inherited_props.lo subversion/libsvn_ra_serf/list.lo subversion/libsvn_ra_serf/lock.lo subversion/libsvn_ra_serf/log.lo subversion/libsvn_ra_serf/merge.lo subversion/libsvn_ra_serf/mergeinfo.lo subversion/libsvn_ra_serf/multistatus.lo subversion/libsvn_ra_serf/options.lo subversion/libsvn_ra_serf/property.lo subversion/libsvn_ra_serf/replay.lo subversion/libsvn_ra_serf/request_body.lo subversion/libsvn_ra_serf/sb_bucket.lo subversion/libsvn_ra_serf/serf.lo subversion/libsvn_ra_serf/stat.lo subversion/libsvn_ra_serf/stream_bucket.lo subversion/libsvn_ra_serf/update.lo subversion/libsvn_ra_serf/util.lo subversion/libsvn_ra_serf/util_error.lo subversion/libsvn_ra_serf/xml.lo
+libsvn_ra_serf_OBJECTS = blame.lo blncache.lo commit.lo eagain_bucket.lo get_deleted_rev.lo get_file.lo get_lock.lo getdate.lo getlocations.lo getlocationsegments.lo getlocks.lo inherited_props.lo list.lo lock.lo log.lo merge.lo mergeinfo.lo multistatus.lo options.lo property.lo replay.lo request_body.lo sb_bucket.lo serf.lo stat.lo stream_bucket.lo update.lo util.lo util_error.lo xml.lo
+subversion/libsvn_ra_serf/libsvn_ra_serf-1.la: $(libsvn_ra_serf_DEPS)
+ cd subversion/libsvn_ra_serf && $(LINK_LIB) $(libsvn_ra_serf_LDFLAGS) -o libsvn_ra_serf-1.la $(LT_NO_UNDEFINED) $(libsvn_ra_serf_OBJECTS) -lsvn_delta-1 -lsvn_subr-1 $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(SVN_SERF_LIBS) $(SVN_ZLIB_LIBS) $(LIBS)
+
+libsvn_ra_svn_PATH = subversion/libsvn_ra_svn
+libsvn_ra_svn_DEPS = subversion/libsvn_ra_svn/client.lo subversion/libsvn_ra_svn/cram.lo subversion/libsvn_ra_svn/cyrus_auth.lo subversion/libsvn_ra_svn/deprecated.lo subversion/libsvn_ra_svn/editorp.lo subversion/libsvn_ra_svn/internal_auth.lo subversion/libsvn_ra_svn/marshal.lo subversion/libsvn_ra_svn/streams.lo subversion/libsvn_ra_svn/version.lo subversion/libsvn_ra_svn/wrapped_sasl.lo
+libsvn_ra_svn_OBJECTS = client.lo cram.lo cyrus_auth.lo deprecated.lo editorp.lo internal_auth.lo marshal.lo streams.lo version.lo wrapped_sasl.lo
+subversion/libsvn_ra_svn/libsvn_ra_svn-1.la: $(libsvn_ra_svn_DEPS)
+ cd subversion/libsvn_ra_svn && $(LINK_LIB) $(libsvn_ra_svn_LDFLAGS) -o libsvn_ra_svn-1.la $(LT_NO_UNDEFINED) $(libsvn_ra_svn_OBJECTS) -lsvn_delta-1 -lsvn_subr-1 $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(SVN_SASL_LIBS) $(LIBS)
+
+libsvn_repos_PATH = subversion/libsvn_repos
+libsvn_repos_DEPS = subversion/libsvn_repos/authz.lo subversion/libsvn_repos/authz_info.lo subversion/libsvn_repos/authz_parse.lo subversion/libsvn_repos/commit.lo subversion/libsvn_repos/compat.lo subversion/libsvn_repos/config_file.lo subversion/libsvn_repos/config_pool.lo subversion/libsvn_repos/delta.lo subversion/libsvn_repos/deprecated.lo subversion/libsvn_repos/dump.lo subversion/libsvn_repos/fs-wrap.lo subversion/libsvn_repos/hooks.lo subversion/libsvn_repos/list.lo subversion/libsvn_repos/load-fs-vtable.lo subversion/libsvn_repos/load.lo subversion/libsvn_repos/log.lo subversion/libsvn_repos/node_tree.lo subversion/libsvn_repos/notify.lo subversion/libsvn_repos/replay.lo subversion/libsvn_repos/reporter.lo subversion/libsvn_repos/repos.lo subversion/libsvn_repos/rev_hunt.lo
+libsvn_repos_OBJECTS = authz.lo authz_info.lo authz_parse.lo commit.lo compat.lo config_file.lo config_pool.lo delta.lo deprecated.lo dump.lo fs-wrap.lo hooks.lo list.lo load-fs-vtable.lo load.lo log.lo node_tree.lo notify.lo replay.lo reporter.lo repos.lo rev_hunt.lo
+subversion/libsvn_repos/libsvn_repos-1.la: $(libsvn_repos_DEPS)
+ cd subversion/libsvn_repos && $(LINK_LIB) $(libsvn_repos_LDFLAGS) -o libsvn_repos-1.la $(LT_NO_UNDEFINED) $(libsvn_repos_OBJECTS) -lsvn_fs-1 -lsvn_delta-1 -lsvn_subr-1 $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS)
+
+libsvn_subr_PATH = subversion/libsvn_subr
+libsvn_subr_DEPS = subversion/libsvn_subr/adler32.lo subversion/libsvn_subr/atomic.lo subversion/libsvn_subr/auth.lo subversion/libsvn_subr/base64.lo subversion/libsvn_subr/bit_array.lo subversion/libsvn_subr/cache-inprocess.lo subversion/libsvn_subr/cache-membuffer.lo subversion/libsvn_subr/cache-memcache.lo subversion/libsvn_subr/cache-null.lo subversion/libsvn_subr/cache.lo subversion/libsvn_subr/cache_config.lo subversion/libsvn_subr/checksum.lo subversion/libsvn_subr/cmdline.lo subversion/libsvn_subr/compat.lo subversion/libsvn_subr/compress_lz4.lo subversion/libsvn_subr/compress_zlib.lo subversion/libsvn_subr/config.lo subversion/libsvn_subr/config_auth.lo subversion/libsvn_subr/config_file.lo subversion/libsvn_subr/config_win.lo subversion/libsvn_subr/crypto.lo subversion/libsvn_subr/ctype.lo subversion/libsvn_subr/date.lo subversion/libsvn_subr/debug.lo subversion/libsvn_subr/deprecated.lo subversion/libsvn_subr/dirent_uri.lo subversion/libsvn_subr/dso.lo subversion/libsvn_subr/encode.lo subversion/libsvn_subr/eol.lo subversion/libsvn_subr/error.lo subversion/libsvn_subr/fnv1a.lo subversion/libsvn_subr/gpg_agent.lo subversion/libsvn_subr/hash.lo subversion/libsvn_subr/io.lo subversion/libsvn_subr/iter.lo subversion/libsvn_subr/lock.lo subversion/libsvn_subr/log.lo subversion/libsvn_subr/lz4/lz4.lo subversion/libsvn_subr/macos_keychain.lo subversion/libsvn_subr/magic.lo subversion/libsvn_subr/md5.lo subversion/libsvn_subr/mergeinfo.lo subversion/libsvn_subr/mutex.lo subversion/libsvn_subr/nls.lo subversion/libsvn_subr/object_pool.lo subversion/libsvn_subr/opt.lo subversion/libsvn_subr/packed_data.lo subversion/libsvn_subr/path.lo subversion/libsvn_subr/pool.lo subversion/libsvn_subr/prefix_string.lo subversion/libsvn_subr/prompt.lo subversion/libsvn_subr/properties.lo subversion/libsvn_subr/quoprint.lo subversion/libsvn_subr/root_pools.lo subversion/libsvn_subr/simple_providers.lo subversion/libsvn_subr/skel.lo subversion/libsvn_subr/sorts.lo subversion/libsvn_subr/spillbuf.lo subversion/libsvn_subr/sqlite.lo subversion/libsvn_subr/sqlite3wrapper.lo subversion/libsvn_subr/ssl_client_cert_providers.lo subversion/libsvn_subr/ssl_client_cert_pw_providers.lo subversion/libsvn_subr/ssl_server_trust_providers.lo subversion/libsvn_subr/stream.lo subversion/libsvn_subr/string.lo subversion/libsvn_subr/subst.lo subversion/libsvn_subr/sysinfo.lo subversion/libsvn_subr/target.lo subversion/libsvn_subr/temp_serializer.lo subversion/libsvn_subr/time.lo subversion/libsvn_subr/token.lo subversion/libsvn_subr/types.lo subversion/libsvn_subr/user.lo subversion/libsvn_subr/username_providers.lo subversion/libsvn_subr/utf.lo subversion/libsvn_subr/utf8proc.lo subversion/libsvn_subr/utf_validate.lo subversion/libsvn_subr/utf_width.lo subversion/libsvn_subr/validate.lo subversion/libsvn_subr/version.lo subversion/libsvn_subr/win32_crashrpt.lo subversion/libsvn_subr/win32_crypto.lo subversion/libsvn_subr/win32_xlate.lo subversion/libsvn_subr/x509info.lo subversion/libsvn_subr/x509parse.lo subversion/libsvn_subr/xml.lo
+libsvn_subr_OBJECTS = adler32.lo atomic.lo auth.lo base64.lo bit_array.lo cache-inprocess.lo cache-membuffer.lo cache-memcache.lo cache-null.lo cache.lo cache_config.lo checksum.lo cmdline.lo compat.lo compress_lz4.lo compress_zlib.lo config.lo config_auth.lo config_file.lo config_win.lo crypto.lo ctype.lo date.lo debug.lo deprecated.lo dirent_uri.lo dso.lo encode.lo eol.lo error.lo fnv1a.lo gpg_agent.lo hash.lo io.lo iter.lo lock.lo log.lo lz4/lz4.lo macos_keychain.lo magic.lo md5.lo mergeinfo.lo mutex.lo nls.lo object_pool.lo opt.lo packed_data.lo path.lo pool.lo prefix_string.lo prompt.lo properties.lo quoprint.lo root_pools.lo simple_providers.lo skel.lo sorts.lo spillbuf.lo sqlite.lo sqlite3wrapper.lo ssl_client_cert_providers.lo ssl_client_cert_pw_providers.lo ssl_server_trust_providers.lo stream.lo string.lo subst.lo sysinfo.lo target.lo temp_serializer.lo time.lo token.lo types.lo user.lo username_providers.lo utf.lo utf8proc.lo utf_validate.lo utf_width.lo validate.lo version.lo win32_crashrpt.lo win32_crypto.lo win32_xlate.lo x509info.lo x509parse.lo xml.lo
+subversion/libsvn_subr/libsvn_subr-1.la: $(libsvn_subr_DEPS)
+ cd subversion/libsvn_subr && $(LINK_LIB) $(libsvn_subr_LDFLAGS) -o libsvn_subr-1.la $(LT_NO_UNDEFINED) $(libsvn_subr_OBJECTS) $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(SVN_XML_LIBS) $(SVN_ZLIB_LIBS) $(SVN_APR_MEMCACHE_LIBS) $(SVN_SQLITE_LIBS) $(SVN_MAGIC_LIBS) $(SVN_INTL_LIBS) $(SVN_LZ4_LIBS) $(SVN_UTF8PROC_LIBS) $(LIBS)
+
+libsvn_swig_perl_PATH = subversion/bindings/swig/perl/libsvn_swig_perl
+libsvn_swig_perl_DEPS = subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.lo
+libsvn_swig_perl_OBJECTS = swigutil_pl.lo
+subversion/bindings/swig/perl/libsvn_swig_perl/libsvn_swig_perl-1.la: $(libsvn_swig_perl_DEPS)
+ cd subversion/bindings/swig/perl/libsvn_swig_perl && $(LINK_LIB) $(libsvn_swig_perl_LDFLAGS) -o libsvn_swig_perl-1.la $(LT_NO_UNDEFINED) $(libsvn_swig_perl_OBJECTS) -lsvn_delta-1 -lsvn_subr-1 $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(SVN_PERL_LIBS) $(SVN_SWIG_LIBS) $(LIBS)
+
+libsvn_swig_py_PATH = subversion/bindings/swig/python/libsvn_swig_py
+libsvn_swig_py_DEPS = subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.lo
+libsvn_swig_py_OBJECTS = swigutil_py.lo
+subversion/bindings/swig/python/libsvn_swig_py/libsvn_swig_py-1.la: $(libsvn_swig_py_DEPS)
+ cd subversion/bindings/swig/python/libsvn_swig_py && $(LINK) $(libsvn_swig_py_LDFLAGS) -o libsvn_swig_py-1.la $(LT_NO_UNDEFINED) $(libsvn_swig_py_OBJECTS) -lsvn_client-1 -lsvn_wc-1 -lsvn_ra-1 -lsvn_delta-1 -lsvn_subr-1 $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(SVN_PYTHON_LIBS) $(SVN_SWIG_LIBS) $(LIBS)
+
+libsvn_swig_ruby_PATH = subversion/bindings/swig/ruby/libsvn_swig_ruby
+libsvn_swig_ruby_DEPS = subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb.lo
+libsvn_swig_ruby_OBJECTS = swigutil_rb.lo
+subversion/bindings/swig/ruby/libsvn_swig_ruby/libsvn_swig_ruby-1.la: $(libsvn_swig_ruby_DEPS)
+ cd subversion/bindings/swig/ruby/libsvn_swig_ruby && $(LINK) $(SWIG_RB_LIBS) $(libsvn_swig_ruby_LDFLAGS) -o libsvn_swig_ruby-1.la $(LT_NO_UNDEFINED) $(libsvn_swig_ruby_OBJECTS) -lsvn_client-1 -lsvn_wc-1 -lsvn_delta-1 -lsvn_subr-1 $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(SVN_RUBY_LIBS) $(SVN_SWIG_LIBS) $(LIBS)
+
+libsvn_test_PATH = subversion/tests
+libsvn_test_DEPS = subversion/tests/svn_test_fs.lo subversion/tests/svn_test_main.lo
+libsvn_test_OBJECTS = svn_test_fs.lo svn_test_main.lo
+subversion/tests/libsvn_test-1.la: $(libsvn_test_DEPS)
+ cd subversion/tests && $(LINK_LIB) $(libsvn_test_LDFLAGS) -o libsvn_test-1.la $(libsvn_test_OBJECTS) -lsvn_repos-1 -lsvn_fs-1 -lsvn_delta-1 -lsvn_subr-1 $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS)
+
+libsvn_wc_PATH = subversion/libsvn_wc
+libsvn_wc_DEPS = subversion/libsvn_wc/adm_crawler.lo subversion/libsvn_wc/adm_files.lo subversion/libsvn_wc/adm_ops.lo subversion/libsvn_wc/ambient_depth_filter_editor.lo subversion/libsvn_wc/cleanup.lo subversion/libsvn_wc/conflicts.lo subversion/libsvn_wc/context.lo subversion/libsvn_wc/copy.lo subversion/libsvn_wc/crop.lo subversion/libsvn_wc/delete.lo subversion/libsvn_wc/deprecated.lo subversion/libsvn_wc/diff_editor.lo subversion/libsvn_wc/diff_local.lo subversion/libsvn_wc/entries.lo subversion/libsvn_wc/externals.lo subversion/libsvn_wc/info.lo subversion/libsvn_wc/lock.lo subversion/libsvn_wc/merge.lo subversion/libsvn_wc/node.lo subversion/libsvn_wc/old-and-busted.lo subversion/libsvn_wc/props.lo subversion/libsvn_wc/questions.lo subversion/libsvn_wc/relocate.lo subversion/libsvn_wc/revert.lo subversion/libsvn_wc/revision_status.lo subversion/libsvn_wc/status.lo subversion/libsvn_wc/translate.lo subversion/libsvn_wc/tree_conflicts.lo subversion/libsvn_wc/update_editor.lo subversion/libsvn_wc/upgrade.lo subversion/libsvn_wc/util.lo subversion/libsvn_wc/wc_db.lo subversion/libsvn_wc/wc_db_pristine.lo subversion/libsvn_wc/wc_db_update_move.lo subversion/libsvn_wc/wc_db_util.lo subversion/libsvn_wc/wc_db_wcroot.lo subversion/libsvn_wc/wcroot_anchor.lo subversion/libsvn_wc/workqueue.lo
+libsvn_wc_OBJECTS = adm_crawler.lo adm_files.lo adm_ops.lo ambient_depth_filter_editor.lo cleanup.lo conflicts.lo context.lo copy.lo crop.lo delete.lo deprecated.lo diff_editor.lo diff_local.lo entries.lo externals.lo info.lo lock.lo merge.lo node.lo old-and-busted.lo props.lo questions.lo relocate.lo revert.lo revision_status.lo status.lo translate.lo tree_conflicts.lo update_editor.lo upgrade.lo util.lo wc_db.lo wc_db_pristine.lo wc_db_update_move.lo wc_db_util.lo wc_db_wcroot.lo wcroot_anchor.lo workqueue.lo
+subversion/libsvn_wc/libsvn_wc-1.la: $(libsvn_wc_DEPS)
+ cd subversion/libsvn_wc && $(LINK_LIB) $(libsvn_wc_LDFLAGS) -o libsvn_wc-1.la $(LT_NO_UNDEFINED) $(libsvn_wc_OBJECTS) -lsvn_delta-1 -lsvn_diff-1 -lsvn_subr-1 $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS)
+
+libsvncxxhl_PATH = subversion/bindings/cxxhl
+libsvncxxhl_DEPS = subversion/bindings/cxxhl/src/aprwrap/impl.lo subversion/bindings/cxxhl/src/exception.lo subversion/bindings/cxxhl/src/tristate.lo
+libsvncxxhl_OBJECTS = src/aprwrap/impl.lo src/exception.lo src/tristate.lo
+subversion/bindings/cxxhl/libsvncxxhl-1.la: $(libsvncxxhl_DEPS)
+ cd subversion/bindings/cxxhl && $(LINK_CXX_LIB) $(libsvncxxhl_LDFLAGS) -o libsvncxxhl-1.la $(LT_NO_UNDEFINED) $(libsvncxxhl_OBJECTS) -lsvn_repos-1 -lsvn_client-1 -lsvn_wc-1 -lsvn_ra-1 -lsvn_delta-1 -lsvn_diff-1 -lsvn_subr-1 -lsvn_fs-1 $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS)
+
+libsvnjavahl_PATH = subversion/bindings/javahl/native
+libsvnjavahl_DEPS = $(javahl_java_DEPS) $(javahl_callback_javah_DEPS) $(javahl_remote_javah_DEPS) $(javahl_types_javah_DEPS) $(javahl_util_javah_DEPS) $(javahl_javah_DEPS) subversion/bindings/javahl/native/Array.lo subversion/bindings/javahl/native/AuthnCallback.lo subversion/bindings/javahl/native/BlameCallback.lo subversion/bindings/javahl/native/ChangelistCallback.lo subversion/bindings/javahl/native/ClientContext.lo subversion/bindings/javahl/native/CommitCallback.lo subversion/bindings/javahl/native/CommitEditor.lo subversion/bindings/javahl/native/CommitMessage.lo subversion/bindings/javahl/native/CopySources.lo subversion/bindings/javahl/native/CreateJ.lo subversion/bindings/javahl/native/Credential.lo subversion/bindings/javahl/native/DiffOptions.lo subversion/bindings/javahl/native/DiffSummaryReceiver.lo subversion/bindings/javahl/native/EditorCallbacks.lo subversion/bindings/javahl/native/EditorProxy.lo subversion/bindings/javahl/native/EnumMapper.lo subversion/bindings/javahl/native/ExternalItem.lo subversion/bindings/javahl/native/File.lo subversion/bindings/javahl/native/ImportFilterCallback.lo subversion/bindings/javahl/native/InfoCallback.lo subversion/bindings/javahl/native/InputStream.lo subversion/bindings/javahl/native/Iterator.lo subversion/bindings/javahl/native/JNIByteArray.lo subversion/bindings/javahl/native/JNICriticalSection.lo subversion/bindings/javahl/native/JNIMutex.lo subversion/bindings/javahl/native/JNIStackElement.lo subversion/bindings/javahl/native/JNIStringHolder.lo subversion/bindings/javahl/native/JNIUtil.lo subversion/bindings/javahl/native/ListCallback.lo subversion/bindings/javahl/native/LockTokenTable.lo subversion/bindings/javahl/native/LogMessageCallback.lo subversion/bindings/javahl/native/MessageReceiver.lo subversion/bindings/javahl/native/NativeStream.lo subversion/bindings/javahl/native/OperationContext.lo subversion/bindings/javahl/native/OutputStream.lo subversion/bindings/javahl/native/PatchCallback.lo subversion/bindings/javahl/native/Path.lo subversion/bindings/javahl/native/Pool.lo subversion/bindings/javahl/native/Prompter.lo subversion/bindings/javahl/native/PropertyTable.lo subversion/bindings/javahl/native/ProplistCallback.lo subversion/bindings/javahl/native/RemoteSession.lo subversion/bindings/javahl/native/RemoteSessionContext.lo subversion/bindings/javahl/native/ReposFreezeAction.lo subversion/bindings/javahl/native/ReposNotifyCallback.lo subversion/bindings/javahl/native/ReposVerifyCallback.lo subversion/bindings/javahl/native/Revision.lo subversion/bindings/javahl/native/RevisionRange.lo subversion/bindings/javahl/native/RevisionRangeList.lo subversion/bindings/javahl/native/SVNBase.lo subversion/bindings/javahl/native/SVNClient.lo subversion/bindings/javahl/native/SVNRepos.lo subversion/bindings/javahl/native/StateReporter.lo subversion/bindings/javahl/native/StatusCallback.lo subversion/bindings/javahl/native/StringArray.lo subversion/bindings/javahl/native/SubversionException.lo subversion/bindings/javahl/native/Targets.lo subversion/bindings/javahl/native/Utility.lo subversion/bindings/javahl/native/VersionExtended.lo subversion/bindings/javahl/native/deprecated.lo subversion/bindings/javahl/native/jniwrapper/jni_base.lo subversion/bindings/javahl/native/jniwrapper/jni_channel.lo subversion/bindings/javahl/native/jniwrapper/jni_class_cache.lo subversion/bindings/javahl/native/jniwrapper/jni_io_stream.lo subversion/bindings/javahl/native/jniwrapper/jni_iterator.lo subversion/bindings/javahl/native/jniwrapper/jni_list.lo subversion/bindings/javahl/native/jniwrapper/jni_string_map.lo subversion/bindings/javahl/native/org_apache_subversion_javahl_NativeResources.lo subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNClient.lo subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNRepos.lo subversion/bindings/javahl/native/org_apache_subversion_javahl_remote_CommitEditor.lo subversion/bindings/javahl/native/org_apache_subversion_javahl_remote_RemoteFactory.lo subversion/bindings/javahl/native/org_apache_subversion_javahl_remote_RemoteSession.lo subversion/bindings/javahl/native/org_apache_subversion_javahl_remote_StateReporter.lo subversion/bindings/javahl/native/org_apache_subversion_javahl_types_RevisionRangeList.lo subversion/bindings/javahl/native/org_apache_subversion_javahl_types_RuntimeVersion.lo subversion/bindings/javahl/native/org_apache_subversion_javahl_types_Version.lo subversion/bindings/javahl/native/org_apache_subversion_javahl_types_VersionExtended.lo subversion/bindings/javahl/native/org_apache_subversion_javahl_util_ConfigImpl_Category.lo subversion/bindings/javahl/native/org_apache_subversion_javahl_util_ConfigLib.lo subversion/bindings/javahl/native/org_apache_subversion_javahl_util_DiffLib.lo subversion/bindings/javahl/native/org_apache_subversion_javahl_util_PropLib.lo subversion/bindings/javahl/native/org_apache_subversion_javahl_util_SubstLib.lo subversion/bindings/javahl/native/org_apache_subversion_javahl_util_TunnelChannel.lo
+libsvnjavahl_OBJECTS = Array.lo AuthnCallback.lo BlameCallback.lo ChangelistCallback.lo ClientContext.lo CommitCallback.lo CommitEditor.lo CommitMessage.lo CopySources.lo CreateJ.lo Credential.lo DiffOptions.lo DiffSummaryReceiver.lo EditorCallbacks.lo EditorProxy.lo EnumMapper.lo ExternalItem.lo File.lo ImportFilterCallback.lo InfoCallback.lo InputStream.lo Iterator.lo JNIByteArray.lo JNICriticalSection.lo JNIMutex.lo JNIStackElement.lo JNIStringHolder.lo JNIUtil.lo ListCallback.lo LockTokenTable.lo LogMessageCallback.lo MessageReceiver.lo NativeStream.lo OperationContext.lo OutputStream.lo PatchCallback.lo Path.lo Pool.lo Prompter.lo PropertyTable.lo ProplistCallback.lo RemoteSession.lo RemoteSessionContext.lo ReposFreezeAction.lo ReposNotifyCallback.lo ReposVerifyCallback.lo Revision.lo RevisionRange.lo RevisionRangeList.lo SVNBase.lo SVNClient.lo SVNRepos.lo StateReporter.lo StatusCallback.lo StringArray.lo SubversionException.lo Targets.lo Utility.lo VersionExtended.lo deprecated.lo jniwrapper/jni_base.lo jniwrapper/jni_channel.lo jniwrapper/jni_class_cache.lo jniwrapper/jni_io_stream.lo jniwrapper/jni_iterator.lo jniwrapper/jni_list.lo jniwrapper/jni_string_map.lo org_apache_subversion_javahl_NativeResources.lo org_apache_subversion_javahl_SVNClient.lo org_apache_subversion_javahl_SVNRepos.lo org_apache_subversion_javahl_remote_CommitEditor.lo org_apache_subversion_javahl_remote_RemoteFactory.lo org_apache_subversion_javahl_remote_RemoteSession.lo org_apache_subversion_javahl_remote_StateReporter.lo org_apache_subversion_javahl_types_RevisionRangeList.lo org_apache_subversion_javahl_types_RuntimeVersion.lo org_apache_subversion_javahl_types_Version.lo org_apache_subversion_javahl_types_VersionExtended.lo org_apache_subversion_javahl_util_ConfigImpl_Category.lo org_apache_subversion_javahl_util_ConfigLib.lo org_apache_subversion_javahl_util_DiffLib.lo org_apache_subversion_javahl_util_PropLib.lo org_apache_subversion_javahl_util_SubstLib.lo org_apache_subversion_javahl_util_TunnelChannel.lo
+subversion/bindings/javahl/native/libsvnjavahl-1.la: $(libsvnjavahl_DEPS)
+ cd subversion/bindings/javahl/native && $(LINK_JAVAHL_CXX) $(libsvnjavahl_LDFLAGS) -o libsvnjavahl-1.la $(LT_NO_UNDEFINED) $(libsvnjavahl_OBJECTS) -lsvn_repos-1 -lsvn_client-1 -lsvn_wc-1 -lsvn_ra-1 -lsvn_delta-1 -lsvn_diff-1 -lsvn_subr-1 -lsvn_fs-1 $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(SVN_JAVA_SDK_LIBS) $(LIBS)
+
+locale_PATH = subversion/po
+locale_DEPS = subversion/po/de.mo subversion/po/es.mo subversion/po/fr.mo subversion/po/it.mo subversion/po/ja.mo subversion/po/ko.mo subversion/po/nb.mo subversion/po/pl.mo subversion/po/pt_BR.mo subversion/po/sv.mo subversion/po/zh_CN.mo subversion/po/zh_TW.mo
+locale: $(locale_DEPS)
+
+lock_helper_PATH = subversion/tests/cmdline
+lock_helper_DEPS = subversion/tests/cmdline/lock-helper.lo
+lock_helper_OBJECTS = lock-helper.lo
+subversion/tests/cmdline/lock-helper$(EXEEXT): $(lock_helper_DEPS)
+ cd subversion/tests/cmdline && $(LINK) $(lock_helper_LDFLAGS) -o lock-helper$(EXEEXT) $(lock_helper_OBJECTS) -lsvn_fs-1 -lsvn_subr-1 $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS)
+
+locks_test_PATH = subversion/tests/libsvn_fs
+locks_test_DEPS = subversion/tests/libsvn_fs/locks-test.lo subversion/tests/libsvn_test-1.la
+locks_test_OBJECTS = locks-test.lo
+subversion/tests/libsvn_fs/locks-test$(EXEEXT): $(locks_test_DEPS)
+ cd subversion/tests/libsvn_fs && $(LINK) $(locks_test_LDFLAGS) -o locks-test$(EXEEXT) $(locks_test_OBJECTS) ../../../subversion/tests/libsvn_test-1.la -lsvn_fs-1 -lsvn_delta-1 -lsvn_subr-1 $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS)
+
+mergeinfo_test_PATH = subversion/tests/libsvn_subr
+mergeinfo_test_DEPS = subversion/tests/libsvn_subr/mergeinfo-test.lo subversion/tests/libsvn_test-1.la
+mergeinfo_test_OBJECTS = mergeinfo-test.lo
+subversion/tests/libsvn_subr/mergeinfo-test$(EXEEXT): $(mergeinfo_test_DEPS)
+ cd subversion/tests/libsvn_subr && $(LINK) $(mergeinfo_test_LDFLAGS) -o mergeinfo-test$(EXEEXT) $(mergeinfo_test_OBJECTS) ../../../subversion/tests/libsvn_test-1.la -lsvn_subr-1 $(SVN_APR_LIBS) $(LIBS)
+
+mod_authz_svn_PATH = subversion/mod_authz_svn
+mod_authz_svn_DEPS = subversion/mod_authz_svn/mod_authz_svn.lo subversion/mod_dav_svn/mod_dav_svn.la
+mod_authz_svn_OBJECTS = mod_authz_svn.lo
+subversion/mod_authz_svn/mod_authz_svn.la: $(mod_authz_svn_DEPS)
+ if $(INSTALL_APACHE_MODS) ; then cd subversion/mod_authz_svn && $(LINK_APACHE_MOD) $(mod_authz_svn_LDFLAGS) -o mod_authz_svn.la $(LT_NO_UNDEFINED) $(mod_authz_svn_OBJECTS) -lsvn_repos-1 -lsvn_subr-1 $(SVN_HTTPD_LIBS) $(LIBS) ; else echo "fake" > subversion/mod_authz_svn/mod_authz_svn.la ; fi
+
+mod_dav_svn_PATH = subversion/mod_dav_svn
+mod_dav_svn_DEPS = subversion/mod_dav_svn/activity.lo subversion/mod_dav_svn/authz.lo subversion/mod_dav_svn/deadprops.lo subversion/mod_dav_svn/liveprops.lo subversion/mod_dav_svn/lock.lo subversion/mod_dav_svn/merge.lo subversion/mod_dav_svn/mirror.lo subversion/mod_dav_svn/mod_dav_svn.lo subversion/mod_dav_svn/posts/create_txn.lo subversion/mod_dav_svn/reports/dated-rev.lo subversion/mod_dav_svn/reports/deleted-rev.lo subversion/mod_dav_svn/reports/file-revs.lo subversion/mod_dav_svn/reports/get-location-segments.lo subversion/mod_dav_svn/reports/get-locations.lo subversion/mod_dav_svn/reports/get-locks.lo subversion/mod_dav_svn/reports/inherited-props.lo subversion/mod_dav_svn/reports/list.lo subversion/mod_dav_svn/reports/log.lo subversion/mod_dav_svn/reports/mergeinfo.lo subversion/mod_dav_svn/reports/replay.lo subversion/mod_dav_svn/reports/update.lo subversion/mod_dav_svn/repos.lo subversion/mod_dav_svn/status.lo subversion/mod_dav_svn/util.lo subversion/mod_dav_svn/version.lo
+mod_dav_svn_OBJECTS = activity.lo authz.lo deadprops.lo liveprops.lo lock.lo merge.lo mirror.lo mod_dav_svn.lo posts/create_txn.lo reports/dated-rev.lo reports/deleted-rev.lo reports/file-revs.lo reports/get-location-segments.lo reports/get-locations.lo reports/get-locks.lo reports/inherited-props.lo reports/list.lo reports/log.lo reports/mergeinfo.lo reports/replay.lo reports/update.lo repos.lo status.lo util.lo version.lo
+subversion/mod_dav_svn/mod_dav_svn.la: $(mod_dav_svn_DEPS)
+ if $(INSTALL_APACHE_MODS) ; then cd subversion/mod_dav_svn && $(LINK_APACHE_MOD) $(mod_dav_svn_LDFLAGS) -o mod_dav_svn.la $(LT_NO_UNDEFINED) $(mod_dav_svn_OBJECTS) -lsvn_repos-1 -lsvn_fs-1 -lsvn_delta-1 -lsvn_subr-1 $(SVN_HTTPD_LIBS) $(SVN_MOD_DAV_LIBS) $(LIBS) ; else echo "fake" > subversion/mod_dav_svn/mod_dav_svn.la ; fi
+
+mod_dontdothat_PATH = tools/server-side/mod_dontdothat
+mod_dontdothat_DEPS = tools/server-side/mod_dontdothat/mod_dontdothat.lo subversion/mod_dav_svn/mod_dav_svn.la
+mod_dontdothat_OBJECTS = mod_dontdothat.lo
+tools/server-side/mod_dontdothat/mod_dontdothat.la: $(mod_dontdothat_DEPS)
+ if $(INSTALL_APACHE_MODS) ; then cd tools/server-side/mod_dontdothat && $(LINK_APACHE_MOD) $(mod_dontdothat_LDFLAGS) -o mod_dontdothat.la $(LT_NO_UNDEFINED) $(mod_dontdothat_OBJECTS) -lsvn_subr-1 $(SVN_HTTPD_LIBS) $(LIBS) ; else echo "fake" > tools/server-side/mod_dontdothat/mod_dontdothat.la ; fi
+
+mtcc_test_PATH = subversion/tests/libsvn_client
+mtcc_test_DEPS = subversion/tests/libsvn_client/mtcc-test.lo subversion/tests/libsvn_test-1.la
+mtcc_test_OBJECTS = mtcc-test.lo
+subversion/tests/libsvn_client/mtcc-test$(EXEEXT): $(mtcc_test_DEPS)
+ cd subversion/tests/libsvn_client && $(LINK) $(mtcc_test_LDFLAGS) -o mtcc-test$(EXEEXT) $(mtcc_test_OBJECTS) ../../../subversion/tests/libsvn_test-1.la -lsvn_client-1 -lsvn_wc-1 -lsvn_repos-1 -lsvn_ra-1 -lsvn_fs-1 -lsvn_delta-1 -lsvn_subr-1 $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS)
+
+op_depth_test_PATH = subversion/tests/libsvn_wc
+op_depth_test_DEPS = subversion/tests/libsvn_wc/op-depth-test.lo subversion/tests/libsvn_wc/utils.lo subversion/tests/libsvn_test-1.la
+op_depth_test_OBJECTS = op-depth-test.lo utils.lo
+subversion/tests/libsvn_wc/op-depth-test$(EXEEXT): $(op_depth_test_DEPS)
+ cd subversion/tests/libsvn_wc && $(LINK) $(op_depth_test_LDFLAGS) -o op-depth-test$(EXEEXT) $(op_depth_test_OBJECTS) -lsvn_client-1 ../../../subversion/tests/libsvn_test-1.la -lsvn_wc-1 -lsvn_subr-1 $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS)
+
+opt_test_PATH = subversion/tests/libsvn_subr
+opt_test_DEPS = subversion/tests/libsvn_subr/opt-test.lo subversion/tests/libsvn_test-1.la
+opt_test_OBJECTS = opt-test.lo
+subversion/tests/libsvn_subr/opt-test$(EXEEXT): $(opt_test_DEPS)
+ cd subversion/tests/libsvn_subr && $(LINK) $(opt_test_LDFLAGS) -o opt-test$(EXEEXT) $(opt_test_OBJECTS) ../../../subversion/tests/libsvn_test-1.la -lsvn_subr-1 $(SVN_APR_LIBS) $(LIBS)
+
+packed_data_test_PATH = subversion/tests/libsvn_subr
+packed_data_test_DEPS = subversion/tests/libsvn_subr/packed-data-test.lo subversion/tests/libsvn_test-1.la
+packed_data_test_OBJECTS = packed-data-test.lo
+subversion/tests/libsvn_subr/packed-data-test$(EXEEXT): $(packed_data_test_DEPS)
+ cd subversion/tests/libsvn_subr && $(LINK) $(packed_data_test_LDFLAGS) -o packed-data-test$(EXEEXT) $(packed_data_test_OBJECTS) ../../../subversion/tests/libsvn_test-1.la -lsvn_subr-1 $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS)
+
+parse_diff_test_PATH = subversion/tests/libsvn_diff
+parse_diff_test_DEPS = subversion/tests/libsvn_diff/parse-diff-test.lo subversion/tests/libsvn_test-1.la
+parse_diff_test_OBJECTS = parse-diff-test.lo
+subversion/tests/libsvn_diff/parse-diff-test$(EXEEXT): $(parse_diff_test_DEPS)
+ cd subversion/tests/libsvn_diff && $(LINK) $(parse_diff_test_LDFLAGS) -o parse-diff-test$(EXEEXT) $(parse_diff_test_OBJECTS) ../../../subversion/tests/libsvn_test-1.la -lsvn_diff-1 -lsvn_subr-1 $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS)
+
+path_test_PATH = subversion/tests/libsvn_subr
+path_test_DEPS = subversion/tests/libsvn_subr/path-test.lo subversion/tests/libsvn_test-1.la
+path_test_OBJECTS = path-test.lo
+subversion/tests/libsvn_subr/path-test$(EXEEXT): $(path_test_DEPS)
+ cd subversion/tests/libsvn_subr && $(LINK) $(path_test_LDFLAGS) -o path-test$(EXEEXT) $(path_test_OBJECTS) ../../../subversion/tests/libsvn_test-1.la -lsvn_subr-1 $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS)
+
+perl_client_PATH = subversion/bindings/swig/perl/native
+perl_client_DEPS = subversion/bindings/swig/perl/native/svn_client.lo subversion/bindings/swig/perl/libsvn_swig_perl/libsvn_swig_perl-1.la subversion/bindings/swig/perl/native/_Core.la
+perl_client_OBJECTS = svn_client.lo
+subversion/bindings/swig/perl/native/_Client.la: $(perl_client_DEPS)
+ cd subversion/bindings/swig/perl/native && $(LINK_PL_WRAPPER) $(perl_client_LDFLAGS) -o _Client.la $(LT_NO_UNDEFINED) $(perl_client_OBJECTS) ../../../../../subversion/bindings/swig/perl/libsvn_swig_perl/libsvn_swig_perl-1.la -lsvn_client-1 -lsvn_subr-1 $(SVN_APR_LIBS) $(LIBS)
+
+perl_core_PATH = subversion/bindings/swig/perl/native
+perl_core_DEPS = subversion/bindings/swig/perl/native/core.lo subversion/bindings/swig/perl/libsvn_swig_perl/libsvn_swig_perl-1.la
+perl_core_OBJECTS = core.lo
+subversion/bindings/swig/perl/native/_Core.la: $(perl_core_DEPS)
+ cd subversion/bindings/swig/perl/native && $(LINK_PL_WRAPPER) $(perl_core_LDFLAGS) -o _Core.la $(LT_NO_UNDEFINED) $(perl_core_OBJECTS) ../../../../../subversion/bindings/swig/perl/libsvn_swig_perl/libsvn_swig_perl-1.la -lsvn_diff-1 -lsvn_subr-1 $(SVN_APR_LIBS) $(LIBS)
+
+perl_delta_PATH = subversion/bindings/swig/perl/native
+perl_delta_DEPS = subversion/bindings/swig/perl/native/svn_delta.lo subversion/bindings/swig/perl/libsvn_swig_perl/libsvn_swig_perl-1.la subversion/bindings/swig/perl/native/_Core.la
+perl_delta_OBJECTS = svn_delta.lo
+subversion/bindings/swig/perl/native/_Delta.la: $(perl_delta_DEPS)
+ cd subversion/bindings/swig/perl/native && $(LINK_PL_WRAPPER) $(perl_delta_LDFLAGS) -o _Delta.la $(LT_NO_UNDEFINED) $(perl_delta_OBJECTS) ../../../../../subversion/bindings/swig/perl/libsvn_swig_perl/libsvn_swig_perl-1.la -lsvn_delta-1 -lsvn_subr-1 $(SVN_APR_LIBS) $(LIBS)
+
+perl_diff_PATH = subversion/bindings/swig/perl/native
+perl_diff_DEPS = subversion/bindings/swig/perl/native/svn_diff.lo subversion/bindings/swig/perl/libsvn_swig_perl/libsvn_swig_perl-1.la subversion/bindings/swig/perl/native/_Core.la
+perl_diff_OBJECTS = svn_diff.lo
+subversion/bindings/swig/perl/native/_Diff.la: $(perl_diff_DEPS)
+ cd subversion/bindings/swig/perl/native && $(LINK_PL_WRAPPER) $(perl_diff_LDFLAGS) -o _Diff.la $(LT_NO_UNDEFINED) $(perl_diff_OBJECTS) ../../../../../subversion/bindings/swig/perl/libsvn_swig_perl/libsvn_swig_perl-1.la -lsvn_diff-1 -lsvn_subr-1 $(SVN_APR_LIBS) $(LIBS)
+
+perl_fs_PATH = subversion/bindings/swig/perl/native
+perl_fs_DEPS = subversion/bindings/swig/perl/native/svn_fs.lo subversion/bindings/swig/perl/libsvn_swig_perl/libsvn_swig_perl-1.la subversion/bindings/swig/perl/native/_Core.la
+perl_fs_OBJECTS = svn_fs.lo
+subversion/bindings/swig/perl/native/_Fs.la: $(perl_fs_DEPS)
+ cd subversion/bindings/swig/perl/native && $(LINK_PL_WRAPPER) $(perl_fs_LDFLAGS) -o _Fs.la $(LT_NO_UNDEFINED) $(perl_fs_OBJECTS) ../../../../../subversion/bindings/swig/perl/libsvn_swig_perl/libsvn_swig_perl-1.la -lsvn_fs-1 -lsvn_subr-1 $(SVN_APR_LIBS) $(LIBS)
+
+perl_ra_PATH = subversion/bindings/swig/perl/native
+perl_ra_DEPS = subversion/bindings/swig/perl/native/svn_ra.lo subversion/bindings/swig/perl/libsvn_swig_perl/libsvn_swig_perl-1.la subversion/bindings/swig/perl/native/_Core.la
+perl_ra_OBJECTS = svn_ra.lo
+subversion/bindings/swig/perl/native/_Ra.la: $(perl_ra_DEPS)
+ cd subversion/bindings/swig/perl/native && $(LINK_PL_WRAPPER) $(perl_ra_LDFLAGS) -o _Ra.la $(LT_NO_UNDEFINED) $(perl_ra_OBJECTS) ../../../../../subversion/bindings/swig/perl/libsvn_swig_perl/libsvn_swig_perl-1.la -lsvn_ra-1 -lsvn_subr-1 $(SVN_APR_LIBS) $(LIBS)
+
+perl_repos_PATH = subversion/bindings/swig/perl/native
+perl_repos_DEPS = subversion/bindings/swig/perl/native/svn_repos.lo subversion/bindings/swig/perl/libsvn_swig_perl/libsvn_swig_perl-1.la subversion/bindings/swig/perl/native/_Core.la
+perl_repos_OBJECTS = svn_repos.lo
+subversion/bindings/swig/perl/native/_Repos.la: $(perl_repos_DEPS)
+ cd subversion/bindings/swig/perl/native && $(LINK_PL_WRAPPER) $(perl_repos_LDFLAGS) -o _Repos.la $(LT_NO_UNDEFINED) $(perl_repos_OBJECTS) ../../../../../subversion/bindings/swig/perl/libsvn_swig_perl/libsvn_swig_perl-1.la -lsvn_repos-1 -lsvn_subr-1 $(SVN_APR_LIBS) $(LIBS)
+
+perl_wc_PATH = subversion/bindings/swig/perl/native
+perl_wc_DEPS = subversion/bindings/swig/perl/native/svn_wc.lo subversion/bindings/swig/perl/libsvn_swig_perl/libsvn_swig_perl-1.la subversion/bindings/swig/perl/native/_Core.la
+perl_wc_OBJECTS = svn_wc.lo
+subversion/bindings/swig/perl/native/_Wc.la: $(perl_wc_DEPS)
+ cd subversion/bindings/swig/perl/native && $(LINK_PL_WRAPPER) $(perl_wc_LDFLAGS) -o _Wc.la $(LT_NO_UNDEFINED) $(perl_wc_OBJECTS) ../../../../../subversion/bindings/swig/perl/libsvn_swig_perl/libsvn_swig_perl-1.la -lsvn_wc-1 -lsvn_subr-1 $(SVN_APR_LIBS) $(LIBS)
+
+prefix_string_test_PATH = subversion/tests/libsvn_subr
+prefix_string_test_DEPS = subversion/tests/libsvn_subr/prefix-string-test.lo subversion/tests/libsvn_test-1.la
+prefix_string_test_OBJECTS = prefix-string-test.lo
+subversion/tests/libsvn_subr/prefix-string-test$(EXEEXT): $(prefix_string_test_DEPS)
+ cd subversion/tests/libsvn_subr && $(LINK) $(prefix_string_test_LDFLAGS) -o prefix-string-test$(EXEEXT) $(prefix_string_test_OBJECTS) ../../../subversion/tests/libsvn_test-1.la -lsvn_subr-1 $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS)
+
+priority_queue_test_PATH = subversion/tests/libsvn_subr
+priority_queue_test_DEPS = subversion/tests/libsvn_subr/priority-queue-test.lo subversion/tests/libsvn_test-1.la
+priority_queue_test_OBJECTS = priority-queue-test.lo
+subversion/tests/libsvn_subr/priority-queue-test$(EXEEXT): $(priority_queue_test_DEPS)
+ cd subversion/tests/libsvn_subr && $(LINK) $(priority_queue_test_LDFLAGS) -o priority-queue-test$(EXEEXT) $(priority_queue_test_OBJECTS) ../../../subversion/tests/libsvn_test-1.la -lsvn_subr-1 $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS)
+
+pristine_store_test_PATH = subversion/tests/libsvn_wc
+pristine_store_test_DEPS = subversion/tests/libsvn_wc/pristine-store-test.lo subversion/tests/libsvn_wc/utils.lo subversion/tests/libsvn_test-1.la
+pristine_store_test_OBJECTS = pristine-store-test.lo utils.lo
+subversion/tests/libsvn_wc/pristine-store-test$(EXEEXT): $(pristine_store_test_DEPS)
+ cd subversion/tests/libsvn_wc && $(LINK) $(pristine_store_test_LDFLAGS) -o pristine-store-test$(EXEEXT) $(pristine_store_test_OBJECTS) -lsvn_client-1 ../../../subversion/tests/libsvn_test-1.la -lsvn_wc-1 -lsvn_subr-1 $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS)
+
+python_client_PATH = subversion/bindings/swig/python
+python_client_DEPS = subversion/bindings/swig/python/svn_client.lo subversion/bindings/swig/python/libsvn_swig_py/libsvn_swig_py-1.la subversion/bindings/swig/python/_core.la
+python_client_OBJECTS = svn_client.lo
+subversion/bindings/swig/python/_client.la: $(python_client_DEPS)
+ cd subversion/bindings/swig/python && $(LINK_PY_WRAPPER) $(python_client_LDFLAGS) -o _client.la $(LT_NO_UNDEFINED) $(python_client_OBJECTS) ../../../../subversion/bindings/swig/python/libsvn_swig_py/libsvn_swig_py-1.la -lsvn_client-1 -lsvn_subr-1 $(SVN_APR_LIBS) $(LIBS)
+
+python_core_PATH = subversion/bindings/swig/python
+python_core_DEPS = subversion/bindings/swig/python/core.lo subversion/bindings/swig/python/libsvn_swig_py/libsvn_swig_py-1.la
+python_core_OBJECTS = core.lo
+subversion/bindings/swig/python/_core.la: $(python_core_DEPS)
+ cd subversion/bindings/swig/python && $(LINK_PY_WRAPPER) $(python_core_LDFLAGS) -o _core.la $(LT_NO_UNDEFINED) $(python_core_OBJECTS) ../../../../subversion/bindings/swig/python/libsvn_swig_py/libsvn_swig_py-1.la -lsvn_diff-1 -lsvn_subr-1 $(SVN_APR_LIBS) $(LIBS)
+
+python_delta_PATH = subversion/bindings/swig/python
+python_delta_DEPS = subversion/bindings/swig/python/svn_delta.lo subversion/bindings/swig/python/libsvn_swig_py/libsvn_swig_py-1.la subversion/bindings/swig/python/_core.la
+python_delta_OBJECTS = svn_delta.lo
+subversion/bindings/swig/python/_delta.la: $(python_delta_DEPS)
+ cd subversion/bindings/swig/python && $(LINK_PY_WRAPPER) $(python_delta_LDFLAGS) -o _delta.la $(LT_NO_UNDEFINED) $(python_delta_OBJECTS) ../../../../subversion/bindings/swig/python/libsvn_swig_py/libsvn_swig_py-1.la -lsvn_delta-1 -lsvn_subr-1 $(SVN_APR_LIBS) $(LIBS)
+
+python_diff_PATH = subversion/bindings/swig/python
+python_diff_DEPS = subversion/bindings/swig/python/svn_diff.lo subversion/bindings/swig/python/libsvn_swig_py/libsvn_swig_py-1.la subversion/bindings/swig/python/_core.la
+python_diff_OBJECTS = svn_diff.lo
+subversion/bindings/swig/python/_diff.la: $(python_diff_DEPS)
+ cd subversion/bindings/swig/python && $(LINK_PY_WRAPPER) $(python_diff_LDFLAGS) -o _diff.la $(LT_NO_UNDEFINED) $(python_diff_OBJECTS) ../../../../subversion/bindings/swig/python/libsvn_swig_py/libsvn_swig_py-1.la -lsvn_diff-1 -lsvn_subr-1 $(SVN_APR_LIBS) $(LIBS)
+
+python_fs_PATH = subversion/bindings/swig/python
+python_fs_DEPS = subversion/bindings/swig/python/svn_fs.lo subversion/bindings/swig/python/libsvn_swig_py/libsvn_swig_py-1.la subversion/bindings/swig/python/_core.la
+python_fs_OBJECTS = svn_fs.lo
+subversion/bindings/swig/python/_fs.la: $(python_fs_DEPS)
+ cd subversion/bindings/swig/python && $(LINK_PY_WRAPPER) $(python_fs_LDFLAGS) -o _fs.la $(LT_NO_UNDEFINED) $(python_fs_OBJECTS) ../../../../subversion/bindings/swig/python/libsvn_swig_py/libsvn_swig_py-1.la -lsvn_fs-1 -lsvn_subr-1 $(SVN_APR_LIBS) $(LIBS)
+
+python_ra_PATH = subversion/bindings/swig/python
+python_ra_DEPS = subversion/bindings/swig/python/svn_ra.lo subversion/bindings/swig/python/libsvn_swig_py/libsvn_swig_py-1.la subversion/bindings/swig/python/_core.la
+python_ra_OBJECTS = svn_ra.lo
+subversion/bindings/swig/python/_ra.la: $(python_ra_DEPS)
+ cd subversion/bindings/swig/python && $(LINK_PY_WRAPPER) $(python_ra_LDFLAGS) -o _ra.la $(LT_NO_UNDEFINED) $(python_ra_OBJECTS) ../../../../subversion/bindings/swig/python/libsvn_swig_py/libsvn_swig_py-1.la -lsvn_ra-1 -lsvn_subr-1 $(SVN_APR_LIBS) $(LIBS)
+
+python_repos_PATH = subversion/bindings/swig/python
+python_repos_DEPS = subversion/bindings/swig/python/svn_repos.lo subversion/bindings/swig/python/libsvn_swig_py/libsvn_swig_py-1.la subversion/bindings/swig/python/_core.la
+python_repos_OBJECTS = svn_repos.lo
+subversion/bindings/swig/python/_repos.la: $(python_repos_DEPS)
+ cd subversion/bindings/swig/python && $(LINK_PY_WRAPPER) $(python_repos_LDFLAGS) -o _repos.la $(LT_NO_UNDEFINED) $(python_repos_OBJECTS) ../../../../subversion/bindings/swig/python/libsvn_swig_py/libsvn_swig_py-1.la -lsvn_repos-1 -lsvn_subr-1 $(SVN_APR_LIBS) $(LIBS)
+
+python_wc_PATH = subversion/bindings/swig/python
+python_wc_DEPS = subversion/bindings/swig/python/svn_wc.lo subversion/bindings/swig/python/libsvn_swig_py/libsvn_swig_py-1.la subversion/bindings/swig/python/_core.la
+python_wc_OBJECTS = svn_wc.lo
+subversion/bindings/swig/python/_wc.la: $(python_wc_DEPS)
+ cd subversion/bindings/swig/python && $(LINK_PY_WRAPPER) $(python_wc_LDFLAGS) -o _wc.la $(LT_NO_UNDEFINED) $(python_wc_OBJECTS) ../../../../subversion/bindings/swig/python/libsvn_swig_py/libsvn_swig_py-1.la -lsvn_wc-1 -lsvn_subr-1 $(SVN_APR_LIBS) $(LIBS)
+
+ra_local_test_PATH = subversion/tests/libsvn_ra_local
+ra_local_test_DEPS = subversion/tests/libsvn_ra_local/ra-local-test.lo subversion/tests/libsvn_test-1.la subversion/libsvn_ra_local/libsvn_ra_local-1.la
+ra_local_test_OBJECTS = ra-local-test.lo
+subversion/tests/libsvn_ra_local/ra-local-test$(EXEEXT): $(ra_local_test_DEPS)
+ cd subversion/tests/libsvn_ra_local && $(LINK) $(ra_local_test_LDFLAGS) -o ra-local-test$(EXEEXT) $(ra_local_test_OBJECTS) ../../../subversion/tests/libsvn_test-1.la ../../../subversion/libsvn_ra_local/libsvn_ra_local-1.la -lsvn_ra-1 -lsvn_fs-1 -lsvn_delta-1 -lsvn_subr-1 $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS)
+
+ra_test_PATH = subversion/tests/libsvn_ra
+ra_test_DEPS = subversion/tests/libsvn_ra/ra-test.lo subversion/tests/libsvn_test-1.la subversion/libsvn_ra_svn/libsvn_ra_svn-1.la
+ra_test_OBJECTS = ra-test.lo
+subversion/tests/libsvn_ra/ra-test$(EXEEXT): $(ra_test_DEPS)
+ cd subversion/tests/libsvn_ra && $(LINK) $(ra_test_LDFLAGS) -o ra-test$(EXEEXT) $(ra_test_OBJECTS) ../../../subversion/tests/libsvn_test-1.la -lsvn_ra-1 ../../../subversion/libsvn_ra_svn/libsvn_ra_svn-1.la -lsvn_fs-1 -lsvn_delta-1 -lsvn_subr-1 $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS)
+
+random_test_PATH = subversion/tests/libsvn_delta
+random_test_DEPS = subversion/tests/libsvn_delta/random-test.lo subversion/tests/libsvn_test-1.la
+random_test_OBJECTS = random-test.lo
+subversion/tests/libsvn_delta/random-test$(EXEEXT): $(random_test_DEPS)
+ cd subversion/tests/libsvn_delta && $(LINK) $(random_test_LDFLAGS) -o random-test$(EXEEXT) $(random_test_OBJECTS) ../../../subversion/tests/libsvn_test-1.la -lsvn_delta-1 -lsvn_subr-1 $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS)
+
+repos_test_PATH = subversion/tests/libsvn_repos
+repos_test_DEPS = subversion/tests/libsvn_repos/dir-delta-editor.lo subversion/tests/libsvn_repos/repos-test.lo subversion/tests/libsvn_test-1.la
+repos_test_OBJECTS = dir-delta-editor.lo repos-test.lo
+subversion/tests/libsvn_repos/repos-test$(EXEEXT): $(repos_test_DEPS)
+ cd subversion/tests/libsvn_repos && $(LINK) $(repos_test_LDFLAGS) -o repos-test$(EXEEXT) $(repos_test_OBJECTS) ../../../subversion/tests/libsvn_test-1.la -lsvn_repos-1 -lsvn_fs-1 -lsvn_delta-1 -lsvn_subr-1 $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS)
+
+revision_test_PATH = subversion/tests/libsvn_subr
+revision_test_DEPS = subversion/tests/libsvn_subr/revision-test.lo subversion/tests/libsvn_test-1.la
+revision_test_OBJECTS = revision-test.lo
+subversion/tests/libsvn_subr/revision-test$(EXEEXT): $(revision_test_DEPS)
+ cd subversion/tests/libsvn_subr && $(LINK) $(revision_test_LDFLAGS) -o revision-test$(EXEEXT) $(revision_test_OBJECTS) ../../../subversion/tests/libsvn_test-1.la -lsvn_subr-1 $(SVN_APR_LIBS) $(LIBS)
+
+root_pools_test_PATH = subversion/tests/libsvn_subr
+root_pools_test_DEPS = subversion/tests/libsvn_subr/root-pools-test.lo subversion/tests/libsvn_test-1.la
+root_pools_test_OBJECTS = root-pools-test.lo
+subversion/tests/libsvn_subr/root-pools-test$(EXEEXT): $(root_pools_test_DEPS)
+ cd subversion/tests/libsvn_subr && $(LINK) $(root_pools_test_LDFLAGS) -o root-pools-test$(EXEEXT) $(root_pools_test_OBJECTS) ../../../subversion/tests/libsvn_test-1.la -lsvn_subr-1 $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS)
+
+ruby_client_PATH = subversion/bindings/swig/ruby
+ruby_client_DEPS = subversion/bindings/swig/ruby/svn_client.lo subversion/bindings/swig/ruby/libsvn_swig_ruby/libsvn_swig_ruby-1.la subversion/bindings/swig/ruby/core.la
+ruby_client_OBJECTS = svn_client.lo
+subversion/bindings/swig/ruby/client.la: $(ruby_client_DEPS)
+ cd subversion/bindings/swig/ruby && $(LINK_RB_WRAPPER) $(ruby_client_LDFLAGS) -o client.la $(LT_NO_UNDEFINED) $(ruby_client_OBJECTS) ../../../../subversion/bindings/swig/ruby/libsvn_swig_ruby/libsvn_swig_ruby-1.la -lsvn_client-1 -lsvn_subr-1 $(SVN_APR_LIBS) $(LIBS)
+
+ruby_core_PATH = subversion/bindings/swig/ruby
+ruby_core_DEPS = subversion/bindings/swig/ruby/core.lo subversion/bindings/swig/ruby/libsvn_swig_ruby/libsvn_swig_ruby-1.la
+ruby_core_OBJECTS = core.lo
+subversion/bindings/swig/ruby/core.la: $(ruby_core_DEPS)
+ cd subversion/bindings/swig/ruby && $(LINK_RB_WRAPPER) $(ruby_core_LDFLAGS) -o core.la $(LT_NO_UNDEFINED) $(ruby_core_OBJECTS) ../../../../subversion/bindings/swig/ruby/libsvn_swig_ruby/libsvn_swig_ruby-1.la -lsvn_diff-1 -lsvn_subr-1 $(SVN_APR_LIBS) $(LIBS)
+
+ruby_delta_PATH = subversion/bindings/swig/ruby
+ruby_delta_DEPS = subversion/bindings/swig/ruby/svn_delta.lo subversion/bindings/swig/ruby/libsvn_swig_ruby/libsvn_swig_ruby-1.la subversion/bindings/swig/ruby/core.la
+ruby_delta_OBJECTS = svn_delta.lo
+subversion/bindings/swig/ruby/delta.la: $(ruby_delta_DEPS)
+ cd subversion/bindings/swig/ruby && $(LINK_RB_WRAPPER) $(ruby_delta_LDFLAGS) -o delta.la $(LT_NO_UNDEFINED) $(ruby_delta_OBJECTS) ../../../../subversion/bindings/swig/ruby/libsvn_swig_ruby/libsvn_swig_ruby-1.la -lsvn_delta-1 -lsvn_subr-1 $(SVN_APR_LIBS) $(LIBS)
+
+ruby_diff_PATH = subversion/bindings/swig/ruby
+ruby_diff_DEPS = subversion/bindings/swig/ruby/svn_diff.lo subversion/bindings/swig/ruby/libsvn_swig_ruby/libsvn_swig_ruby-1.la subversion/bindings/swig/ruby/core.la
+ruby_diff_OBJECTS = svn_diff.lo
+subversion/bindings/swig/ruby/diff.la: $(ruby_diff_DEPS)
+ cd subversion/bindings/swig/ruby && $(LINK_RB_WRAPPER) $(ruby_diff_LDFLAGS) -o diff.la $(LT_NO_UNDEFINED) $(ruby_diff_OBJECTS) ../../../../subversion/bindings/swig/ruby/libsvn_swig_ruby/libsvn_swig_ruby-1.la -lsvn_diff-1 -lsvn_subr-1 $(SVN_APR_LIBS) $(LIBS)
+
+ruby_fs_PATH = subversion/bindings/swig/ruby
+ruby_fs_DEPS = subversion/bindings/swig/ruby/svn_fs.lo subversion/bindings/swig/ruby/libsvn_swig_ruby/libsvn_swig_ruby-1.la subversion/bindings/swig/ruby/core.la
+ruby_fs_OBJECTS = svn_fs.lo
+subversion/bindings/swig/ruby/fs.la: $(ruby_fs_DEPS)
+ cd subversion/bindings/swig/ruby && $(LINK_RB_WRAPPER) $(ruby_fs_LDFLAGS) -o fs.la $(LT_NO_UNDEFINED) $(ruby_fs_OBJECTS) ../../../../subversion/bindings/swig/ruby/libsvn_swig_ruby/libsvn_swig_ruby-1.la -lsvn_fs-1 -lsvn_subr-1 $(SVN_APR_LIBS) $(LIBS)
+
+ruby_ra_PATH = subversion/bindings/swig/ruby
+ruby_ra_DEPS = subversion/bindings/swig/ruby/svn_ra.lo subversion/bindings/swig/ruby/libsvn_swig_ruby/libsvn_swig_ruby-1.la subversion/bindings/swig/ruby/core.la
+ruby_ra_OBJECTS = svn_ra.lo
+subversion/bindings/swig/ruby/ra.la: $(ruby_ra_DEPS)
+ cd subversion/bindings/swig/ruby && $(LINK_RB_WRAPPER) $(ruby_ra_LDFLAGS) -o ra.la $(LT_NO_UNDEFINED) $(ruby_ra_OBJECTS) ../../../../subversion/bindings/swig/ruby/libsvn_swig_ruby/libsvn_swig_ruby-1.la -lsvn_ra-1 -lsvn_subr-1 $(SVN_APR_LIBS) $(LIBS)
+
+ruby_repos_PATH = subversion/bindings/swig/ruby
+ruby_repos_DEPS = subversion/bindings/swig/ruby/svn_repos.lo subversion/bindings/swig/ruby/libsvn_swig_ruby/libsvn_swig_ruby-1.la subversion/bindings/swig/ruby/core.la
+ruby_repos_OBJECTS = svn_repos.lo
+subversion/bindings/swig/ruby/repos.la: $(ruby_repos_DEPS)
+ cd subversion/bindings/swig/ruby && $(LINK_RB_WRAPPER) $(ruby_repos_LDFLAGS) -o repos.la $(LT_NO_UNDEFINED) $(ruby_repos_OBJECTS) ../../../../subversion/bindings/swig/ruby/libsvn_swig_ruby/libsvn_swig_ruby-1.la -lsvn_repos-1 -lsvn_subr-1 $(SVN_APR_LIBS) $(LIBS)
+
+ruby_wc_PATH = subversion/bindings/swig/ruby
+ruby_wc_DEPS = subversion/bindings/swig/ruby/svn_wc.lo subversion/bindings/swig/ruby/libsvn_swig_ruby/libsvn_swig_ruby-1.la subversion/bindings/swig/ruby/core.la
+ruby_wc_OBJECTS = svn_wc.lo
+subversion/bindings/swig/ruby/wc.la: $(ruby_wc_DEPS)
+ cd subversion/bindings/swig/ruby && $(LINK_RB_WRAPPER) $(ruby_wc_LDFLAGS) -o wc.la $(LT_NO_UNDEFINED) $(ruby_wc_OBJECTS) ../../../../subversion/bindings/swig/ruby/libsvn_swig_ruby/libsvn_swig_ruby-1.la -lsvn_wc-1 -lsvn_subr-1 $(SVN_APR_LIBS) $(LIBS)
+
+skel_test_PATH = subversion/tests/libsvn_subr
+skel_test_DEPS = subversion/tests/libsvn_subr/skel-test.lo subversion/tests/libsvn_test-1.la
+skel_test_OBJECTS = skel-test.lo
+subversion/tests/libsvn_subr/skel-test$(EXEEXT): $(skel_test_DEPS)
+ cd subversion/tests/libsvn_subr && $(LINK) $(skel_test_LDFLAGS) -o skel-test$(EXEEXT) $(skel_test_OBJECTS) ../../../subversion/tests/libsvn_test-1.la -lsvn_subr-1 $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS)
+
+spillbuf_test_PATH = subversion/tests/libsvn_subr
+spillbuf_test_DEPS = subversion/tests/libsvn_subr/spillbuf-test.lo subversion/tests/libsvn_test-1.la
+spillbuf_test_OBJECTS = spillbuf-test.lo
+subversion/tests/libsvn_subr/spillbuf-test$(EXEEXT): $(spillbuf_test_DEPS)
+ cd subversion/tests/libsvn_subr && $(LINK) $(spillbuf_test_LDFLAGS) -o spillbuf-test$(EXEEXT) $(spillbuf_test_OBJECTS) ../../../subversion/tests/libsvn_test-1.la -lsvn_subr-1 $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS)
+
+sqlite_test_PATH = subversion/tests/libsvn_subr
+sqlite_test_DEPS = subversion/tests/libsvn_subr/sqlite-test.lo subversion/tests/libsvn_test-1.la
+sqlite_test_OBJECTS = sqlite-test.lo
+subversion/tests/libsvn_subr/sqlite-test$(EXEEXT): $(sqlite_test_DEPS)
+ cd subversion/tests/libsvn_subr && $(LINK) $(sqlite_test_LDFLAGS) -o sqlite-test$(EXEEXT) $(sqlite_test_OBJECTS) ../../../subversion/tests/libsvn_test-1.la -lsvn_subr-1 $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS)
+
+stream_test_PATH = subversion/tests/libsvn_subr
+stream_test_DEPS = subversion/tests/libsvn_subr/stream-test.lo subversion/tests/libsvn_test-1.la
+stream_test_OBJECTS = stream-test.lo
+subversion/tests/libsvn_subr/stream-test$(EXEEXT): $(stream_test_DEPS)
+ cd subversion/tests/libsvn_subr && $(LINK) $(stream_test_LDFLAGS) -o stream-test$(EXEEXT) $(stream_test_OBJECTS) ../../../subversion/tests/libsvn_test-1.la -lsvn_subr-1 $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS)
+
+string_table_test_PATH = subversion/tests/libsvn_fs_x
+string_table_test_DEPS = subversion/tests/libsvn_fs_x/string-table-test.lo subversion/tests/libsvn_test-1.la
+string_table_test_OBJECTS = string-table-test.lo
+subversion/tests/libsvn_fs_x/string-table-test$(EXEEXT): $(string_table_test_DEPS)
+ cd subversion/tests/libsvn_fs_x && $(LINK) $(string_table_test_LDFLAGS) -o string-table-test$(EXEEXT) $(string_table_test_OBJECTS) ../../../subversion/tests/libsvn_test-1.la -lsvn_fs_x-1 -lsvn_subr-1 $(SVN_APR_LIBS) $(LIBS)
+
+string_test_PATH = subversion/tests/libsvn_subr
+string_test_DEPS = subversion/tests/libsvn_subr/string-test.lo subversion/tests/libsvn_test-1.la
+string_test_OBJECTS = string-test.lo
+subversion/tests/libsvn_subr/string-test$(EXEEXT): $(string_test_DEPS)
+ cd subversion/tests/libsvn_subr && $(LINK) $(string_test_LDFLAGS) -o string-test$(EXEEXT) $(string_test_OBJECTS) ../../../subversion/tests/libsvn_test-1.la -lsvn_subr-1 $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS)
+
+strings_reps_test_PATH = subversion/tests/libsvn_fs_base
+strings_reps_test_DEPS = subversion/tests/libsvn_fs_base/strings-reps-test.lo subversion/tests/libsvn_test-1.la subversion/libsvn_fs_base/libsvn_fs_base-1.la
+strings_reps_test_OBJECTS = strings-reps-test.lo
+subversion/tests/libsvn_fs_base/strings-reps-test$(EXEEXT): $(strings_reps_test_DEPS)
+ cd subversion/tests/libsvn_fs_base && $(LINK) $(strings_reps_test_LDFLAGS) -o strings-reps-test$(EXEEXT) $(strings_reps_test_OBJECTS) ../../../subversion/tests/libsvn_test-1.la -lsvn_fs-1 ../../../subversion/libsvn_fs_base/libsvn_fs_base-1.la -lsvn_delta-1 -lsvn_subr-1 $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS)
+
+subst_translate_test_PATH = subversion/tests/libsvn_subr
+subst_translate_test_DEPS = subversion/tests/libsvn_subr/subst_translate-test.lo subversion/tests/libsvn_test-1.la
+subst_translate_test_OBJECTS = subst_translate-test.lo
+subversion/tests/libsvn_subr/subst_translate-test$(EXEEXT): $(subst_translate_test_DEPS)
+ cd subversion/tests/libsvn_subr && $(LINK) $(subst_translate_test_LDFLAGS) -o subst_translate-test$(EXEEXT) $(subst_translate_test_OBJECTS) ../../../subversion/tests/libsvn_test-1.la -lsvn_subr-1 $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS)
+
+svn_PATH = subversion/svn
+svn_DEPS = subversion/svn/add-cmd.lo subversion/svn/auth-cmd.lo subversion/svn/blame-cmd.lo subversion/svn/cat-cmd.lo subversion/svn/changelist-cmd.lo subversion/svn/checkout-cmd.lo subversion/svn/cl-conflicts.lo subversion/svn/cleanup-cmd.lo subversion/svn/commit-cmd.lo subversion/svn/conflict-callbacks.lo subversion/svn/copy-cmd.lo subversion/svn/delete-cmd.lo subversion/svn/deprecated.lo subversion/svn/diff-cmd.lo subversion/svn/export-cmd.lo subversion/svn/file-merge.lo subversion/svn/help-cmd.lo subversion/svn/import-cmd.lo subversion/svn/info-cmd.lo subversion/svn/list-cmd.lo subversion/svn/lock-cmd.lo subversion/svn/log-cmd.lo subversion/svn/merge-cmd.lo subversion/svn/mergeinfo-cmd.lo subversion/svn/mkdir-cmd.lo subversion/svn/move-cmd.lo subversion/svn/notify.lo subversion/svn/patch-cmd.lo subversion/svn/propdel-cmd.lo subversion/svn/propedit-cmd.lo subversion/svn/propget-cmd.lo subversion/svn/proplist-cmd.lo subversion/svn/props.lo subversion/svn/propset-cmd.lo subversion/svn/relocate-cmd.lo subversion/svn/resolve-cmd.lo subversion/svn/resolved-cmd.lo subversion/svn/revert-cmd.lo subversion/svn/shelve-cmd.lo subversion/svn/similarity.lo subversion/svn/status-cmd.lo subversion/svn/status.lo subversion/svn/svn.lo subversion/svn/switch-cmd.lo subversion/svn/unlock-cmd.lo subversion/svn/update-cmd.lo subversion/svn/upgrade-cmd.lo subversion/svn/util.lo
+svn_OBJECTS = add-cmd.lo auth-cmd.lo blame-cmd.lo cat-cmd.lo changelist-cmd.lo checkout-cmd.lo cl-conflicts.lo cleanup-cmd.lo commit-cmd.lo conflict-callbacks.lo copy-cmd.lo delete-cmd.lo deprecated.lo diff-cmd.lo export-cmd.lo file-merge.lo help-cmd.lo import-cmd.lo info-cmd.lo list-cmd.lo lock-cmd.lo log-cmd.lo merge-cmd.lo mergeinfo-cmd.lo mkdir-cmd.lo move-cmd.lo notify.lo patch-cmd.lo propdel-cmd.lo propedit-cmd.lo propget-cmd.lo proplist-cmd.lo props.lo propset-cmd.lo relocate-cmd.lo resolve-cmd.lo resolved-cmd.lo revert-cmd.lo shelve-cmd.lo similarity.lo status-cmd.lo status.lo svn.lo switch-cmd.lo unlock-cmd.lo update-cmd.lo upgrade-cmd.lo util.lo
+subversion/svn/svn$(EXEEXT): $(svn_DEPS)
+ cd subversion/svn && $(LINK) $(svn_LDFLAGS) -o svn$(EXEEXT) $(svn_OBJECTS) -lsvn_client-1 -lsvn_wc-1 -lsvn_ra-1 -lsvn_delta-1 -lsvn_diff-1 -lsvn_subr-1 $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS)
+
+svn_mergeinfo_normalizer_PATH = tools/client-side/svn-mergeinfo-normalizer
+svn_mergeinfo_normalizer_DEPS = tools/client-side/svn-mergeinfo-normalizer/analyze-cmd.lo tools/client-side/svn-mergeinfo-normalizer/help-cmd.lo tools/client-side/svn-mergeinfo-normalizer/log.lo tools/client-side/svn-mergeinfo-normalizer/logic.lo tools/client-side/svn-mergeinfo-normalizer/missing-branches.lo tools/client-side/svn-mergeinfo-normalizer/normalize-cmd.lo tools/client-side/svn-mergeinfo-normalizer/remove-branches-cmd.lo tools/client-side/svn-mergeinfo-normalizer/svn-mergeinfo-normalizer.lo tools/client-side/svn-mergeinfo-normalizer/wc_mergeinfo.lo
+svn_mergeinfo_normalizer_OBJECTS = analyze-cmd.lo help-cmd.lo log.lo logic.lo missing-branches.lo normalize-cmd.lo remove-branches-cmd.lo svn-mergeinfo-normalizer.lo wc_mergeinfo.lo
+tools/client-side/svn-mergeinfo-normalizer/svn-mergeinfo-normalizer$(EXEEXT): $(svn_mergeinfo_normalizer_DEPS)
+ cd tools/client-side/svn-mergeinfo-normalizer && $(LINK) $(svn_mergeinfo_normalizer_LDFLAGS) -o svn-mergeinfo-normalizer$(EXEEXT) $(svn_mergeinfo_normalizer_OBJECTS) -lsvn_client-1 -lsvn_wc-1 -lsvn_ra-1 -lsvn_delta-1 -lsvn_diff-1 -lsvn_subr-1 $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS)
+
+svn_populate_node_origins_index_PATH = tools/server-side
+svn_populate_node_origins_index_DEPS = tools/server-side/svn-populate-node-origins-index.lo
+svn_populate_node_origins_index_OBJECTS = svn-populate-node-origins-index.lo
+tools/server-side/svn-populate-node-origins-index$(EXEEXT): $(svn_populate_node_origins_index_DEPS)
+ cd tools/server-side && $(LINK) $(svn_populate_node_origins_index_LDFLAGS) -o svn-populate-node-origins-index$(EXEEXT) $(svn_populate_node_origins_index_OBJECTS) -lsvn_repos-1 -lsvn_fs-1 -lsvn_subr-1 $(SVN_APR_LIBS) $(LIBS)
+
+svn_wc_db_tester_PATH = tools/dev/wc-ng
+svn_wc_db_tester_DEPS = tools/dev/wc-ng/svn-wc-db-tester.lo
+svn_wc_db_tester_OBJECTS = svn-wc-db-tester.lo
+tools/dev/wc-ng/svn-wc-db-tester$(EXEEXT): $(svn_wc_db_tester_DEPS)
+ cd tools/dev/wc-ng && $(LINK) $(svn_wc_db_tester_LDFLAGS) -o svn-wc-db-tester$(EXEEXT) $(svn_wc_db_tester_OBJECTS) -lsvn_wc-1 -lsvn_subr-1 $(SVN_APR_LIBS) $(LIBS)
+
+svnadmin_PATH = subversion/svnadmin
+svnadmin_DEPS = subversion/svnadmin/svnadmin.lo
+svnadmin_OBJECTS = svnadmin.lo
+subversion/svnadmin/svnadmin$(EXEEXT): $(svnadmin_DEPS)
+ cd subversion/svnadmin && $(LINK) $(svnadmin_LDFLAGS) -o svnadmin$(EXEEXT) $(svnadmin_OBJECTS) -lsvn_repos-1 -lsvn_fs-1 -lsvn_delta-1 -lsvn_subr-1 $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS)
+
+svnauthz_PATH = tools/server-side
+svnauthz_DEPS = tools/server-side/svnauthz.lo
+svnauthz_OBJECTS = svnauthz.lo
+tools/server-side/svnauthz$(EXEEXT): $(svnauthz_DEPS)
+ cd tools/server-side && $(LINK) $(svnauthz_LDFLAGS) -o svnauthz$(EXEEXT) $(svnauthz_OBJECTS) -lsvn_repos-1 -lsvn_fs-1 -lsvn_subr-1 $(SVN_APR_LIBS) $(LIBS)
+
+svnauthz_validate_PATH = tools/server-side
+svnauthz_validate_DEPS = tools/server-side/svnauthz.lo
+svnauthz_validate_OBJECTS = svnauthz.lo
+tools/server-side/svnauthz-validate$(EXEEXT): $(svnauthz_validate_DEPS)
+ cd tools/server-side && $(LINK) $(svnauthz_validate_LDFLAGS) -o svnauthz-validate$(EXEEXT) $(svnauthz_validate_OBJECTS) -lsvn_repos-1 -lsvn_fs-1 -lsvn_subr-1 $(SVN_APR_LIBS) $(LIBS)
+
+svnbench_PATH = subversion/svnbench
+svnbench_DEPS = subversion/svnbench/help-cmd.lo subversion/svnbench/notify.lo subversion/svnbench/null-blame-cmd.lo subversion/svnbench/null-export-cmd.lo subversion/svnbench/null-info-cmd.lo subversion/svnbench/null-list-cmd.lo subversion/svnbench/null-log-cmd.lo subversion/svnbench/svnbench.lo subversion/svnbench/util.lo
+svnbench_OBJECTS = help-cmd.lo notify.lo null-blame-cmd.lo null-export-cmd.lo null-info-cmd.lo null-list-cmd.lo null-log-cmd.lo svnbench.lo util.lo
+subversion/svnbench/svnbench$(EXEEXT): $(svnbench_DEPS)
+ cd subversion/svnbench && $(LINK) $(svnbench_LDFLAGS) -o svnbench$(EXEEXT) $(svnbench_OBJECTS) -lsvn_client-1 -lsvn_wc-1 -lsvn_ra-1 -lsvn_subr-1 -lsvn_delta-1 $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS)
+
+svnconflict_PATH = tools/client-side/svnconflict
+svnconflict_DEPS = tools/client-side/svnconflict/svnconflict.lo
+svnconflict_OBJECTS = svnconflict.lo
+tools/client-side/svnconflict/svnconflict$(EXEEXT): $(svnconflict_DEPS)
+ cd tools/client-side/svnconflict && $(LINK) $(svnconflict_LDFLAGS) -o svnconflict$(EXEEXT) $(svnconflict_OBJECTS) -lsvn_client-1 -lsvn_wc-1 -lsvn_ra-1 -lsvn_subr-1 $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS)
+
+svndiff_stream_test_PATH = subversion/tests/libsvn_delta
+svndiff_stream_test_DEPS = subversion/tests/libsvn_delta/svndiff-stream-test.lo subversion/tests/libsvn_test-1.la
+svndiff_stream_test_OBJECTS = svndiff-stream-test.lo
+subversion/tests/libsvn_delta/svndiff-stream-test$(EXEEXT): $(svndiff_stream_test_DEPS)
+ cd subversion/tests/libsvn_delta && $(LINK) $(svndiff_stream_test_LDFLAGS) -o svndiff-stream-test$(EXEEXT) $(svndiff_stream_test_OBJECTS) ../../../subversion/tests/libsvn_test-1.la -lsvn_delta-1 -lsvn_subr-1 $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS)
+
+svndiff_test_PATH = subversion/tests/libsvn_delta
+svndiff_test_DEPS = subversion/tests/libsvn_delta/svndiff-test.lo
+svndiff_test_OBJECTS = svndiff-test.lo
+subversion/tests/libsvn_delta/svndiff-test$(EXEEXT): $(svndiff_test_DEPS)
+ cd subversion/tests/libsvn_delta && $(LINK) $(svndiff_test_LDFLAGS) -o svndiff-test$(EXEEXT) $(svndiff_test_OBJECTS) -lsvn_delta-1 -lsvn_subr-1 $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS)
+
+svndumpfilter_PATH = subversion/svndumpfilter
+svndumpfilter_DEPS = subversion/svndumpfilter/svndumpfilter.lo
+svndumpfilter_OBJECTS = svndumpfilter.lo
+subversion/svndumpfilter/svndumpfilter$(EXEEXT): $(svndumpfilter_DEPS)
+ cd subversion/svndumpfilter && $(LINK) $(svndumpfilter_LDFLAGS) -o svndumpfilter$(EXEEXT) $(svndumpfilter_OBJECTS) -lsvn_repos-1 -lsvn_fs-1 -lsvn_delta-1 -lsvn_subr-1 $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS)
+
+svnfsfs_PATH = subversion/svnfsfs
+svnfsfs_DEPS = subversion/svnfsfs/dump-index-cmd.lo subversion/svnfsfs/load-index-cmd.lo subversion/svnfsfs/stats-cmd.lo subversion/svnfsfs/svnfsfs.lo subversion/libsvn_fs_fs/libsvn_fs_fs-1.la
+svnfsfs_OBJECTS = dump-index-cmd.lo load-index-cmd.lo stats-cmd.lo svnfsfs.lo
+subversion/svnfsfs/svnfsfs$(EXEEXT): $(svnfsfs_DEPS)
+ cd subversion/svnfsfs && $(LINK) $(svnfsfs_LDFLAGS) -o svnfsfs$(EXEEXT) $(svnfsfs_OBJECTS) -lsvn_repos-1 -lsvn_fs-1 ../../subversion/libsvn_fs_fs/libsvn_fs_fs-1.la -lsvn_delta-1 -lsvn_subr-1 $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS)
+
+svnlook_PATH = subversion/svnlook
+svnlook_DEPS = subversion/svnlook/svnlook.lo
+svnlook_OBJECTS = svnlook.lo
+subversion/svnlook/svnlook$(EXEEXT): $(svnlook_DEPS)
+ cd subversion/svnlook && $(LINK) $(svnlook_LDFLAGS) -o svnlook$(EXEEXT) $(svnlook_OBJECTS) -lsvn_repos-1 -lsvn_fs-1 -lsvn_delta-1 -lsvn_diff-1 -lsvn_subr-1 $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS)
+
+svnmover_PATH = tools/dev/svnmover
+svnmover_DEPS = tools/dev/svnmover/merge3.lo tools/dev/svnmover/ra.lo tools/dev/svnmover/scanlog.lo tools/dev/svnmover/svnmover.lo tools/dev/svnmover/util.lo
+svnmover_OBJECTS = merge3.lo ra.lo scanlog.lo svnmover.lo util.lo
+tools/dev/svnmover/svnmover$(EXEEXT): $(svnmover_DEPS)
+ cd tools/dev/svnmover && $(LINK) $(svnmover_LDFLAGS) -o svnmover$(EXEEXT) $(svnmover_OBJECTS) -lsvn_client-1 -lsvn_ra-1 -lsvn_subr-1 -lsvn_delta-1 $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS)
+
+svnmucc_PATH = subversion/svnmucc
+svnmucc_DEPS = subversion/svnmucc/svnmucc.lo
+svnmucc_OBJECTS = svnmucc.lo
+subversion/svnmucc/svnmucc$(EXEEXT): $(svnmucc_DEPS)
+ cd subversion/svnmucc && $(LINK) $(svnmucc_LDFLAGS) -o svnmucc$(EXEEXT) $(svnmucc_OBJECTS) -lsvn_client-1 -lsvn_ra-1 -lsvn_subr-1 -lsvn_delta-1 $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS)
+
+svnraisetreeconflict_PATH = tools/dev/svnraisetreeconflict
+svnraisetreeconflict_DEPS = tools/dev/svnraisetreeconflict/svnraisetreeconflict.lo
+svnraisetreeconflict_OBJECTS = svnraisetreeconflict.lo
+tools/dev/svnraisetreeconflict/svnraisetreeconflict$(EXEEXT): $(svnraisetreeconflict_DEPS)
+ cd tools/dev/svnraisetreeconflict && $(LINK) $(svnraisetreeconflict_LDFLAGS) -o svnraisetreeconflict$(EXEEXT) $(svnraisetreeconflict_OBJECTS) -lsvn_wc-1 -lsvn_subr-1 $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS)
+
+svnrdump_PATH = subversion/svnrdump
+svnrdump_DEPS = subversion/svnrdump/dump_editor.lo subversion/svnrdump/load_editor.lo subversion/svnrdump/svnrdump.lo subversion/svnrdump/util.lo
+svnrdump_OBJECTS = dump_editor.lo load_editor.lo svnrdump.lo util.lo
+subversion/svnrdump/svnrdump$(EXEEXT): $(svnrdump_DEPS)
+ cd subversion/svnrdump && $(LINK) $(svnrdump_LDFLAGS) -o svnrdump$(EXEEXT) $(svnrdump_OBJECTS) -lsvn_client-1 -lsvn_ra-1 -lsvn_repos-1 -lsvn_delta-1 -lsvn_subr-1 $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS)
+
+svnserve_PATH = subversion/svnserve
+svnserve_DEPS = subversion/svnserve/cyrus_auth.lo subversion/svnserve/log-escape.lo subversion/svnserve/logger.lo subversion/svnserve/serve.lo subversion/svnserve/svnserve.lo subversion/svnserve/winservice.lo subversion/libsvn_ra_svn/libsvn_ra_svn-1.la
+svnserve_OBJECTS = cyrus_auth.lo log-escape.lo logger.lo serve.lo svnserve.lo winservice.lo
+subversion/svnserve/svnserve$(EXEEXT): $(svnserve_DEPS)
+ cd subversion/svnserve && $(LINK) $(svnserve_LDFLAGS) -o svnserve$(EXEEXT) $(svnserve_OBJECTS) -lsvn_repos-1 -lsvn_fs-1 -lsvn_delta-1 -lsvn_subr-1 ../../subversion/libsvn_ra_svn/libsvn_ra_svn-1.la $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(SVN_SASL_LIBS) $(LIBS)
+
+svnsync_PATH = subversion/svnsync
+svnsync_DEPS = subversion/svnsync/svnsync.lo subversion/svnsync/sync.lo
+svnsync_OBJECTS = svnsync.lo sync.lo
+subversion/svnsync/svnsync$(EXEEXT): $(svnsync_DEPS)
+ cd subversion/svnsync && $(LINK) $(svnsync_LDFLAGS) -o svnsync$(EXEEXT) $(svnsync_OBJECTS) -lsvn_ra-1 -lsvn_delta-1 -lsvn_subr-1 $(SVN_APR_LIBS) $(LIBS)
+
+svnversion_PATH = subversion/svnversion
+svnversion_DEPS = subversion/svnversion/svnversion.lo
+svnversion_OBJECTS = svnversion.lo
+subversion/svnversion/svnversion$(EXEEXT): $(svnversion_DEPS)
+ cd subversion/svnversion && $(LINK) $(svnversion_LDFLAGS) -o svnversion$(EXEEXT) $(svnversion_OBJECTS) -lsvn_wc-1 -lsvn_subr-1 $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS)
+
+time_test_PATH = subversion/tests/libsvn_subr
+time_test_DEPS = subversion/tests/libsvn_subr/time-test.lo subversion/tests/libsvn_test-1.la
+time_test_OBJECTS = time-test.lo
+subversion/tests/libsvn_subr/time-test$(EXEEXT): $(time_test_DEPS)
+ cd subversion/tests/libsvn_subr && $(LINK) $(time_test_LDFLAGS) -o time-test$(EXEEXT) $(time_test_OBJECTS) ../../../subversion/tests/libsvn_test-1.la -lsvn_subr-1 $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS)
+
+translate_test_PATH = subversion/tests/libsvn_subr
+translate_test_DEPS = subversion/tests/libsvn_subr/translate-test.lo subversion/tests/libsvn_test-1.la
+translate_test_OBJECTS = translate-test.lo
+subversion/tests/libsvn_subr/translate-test$(EXEEXT): $(translate_test_DEPS)
+ cd subversion/tests/libsvn_subr && $(LINK) $(translate_test_LDFLAGS) -o translate-test$(EXEEXT) $(translate_test_OBJECTS) ../../../subversion/tests/libsvn_test-1.la -lsvn_subr-1 $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS)
+
+utf_test_PATH = subversion/tests/libsvn_subr
+utf_test_DEPS = subversion/tests/libsvn_subr/utf-test.lo subversion/tests/libsvn_test-1.la
+utf_test_OBJECTS = utf-test.lo
+subversion/tests/libsvn_subr/utf-test$(EXEEXT): $(utf_test_DEPS)
+ cd subversion/tests/libsvn_subr && $(LINK) $(utf_test_LDFLAGS) -o utf-test$(EXEEXT) $(utf_test_OBJECTS) ../../../subversion/tests/libsvn_test-1.la -lsvn_subr-1 $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS)
+
+vdelta_test_PATH = subversion/tests/libsvn_delta
+vdelta_test_DEPS = subversion/tests/libsvn_delta/vdelta-test.lo
+vdelta_test_OBJECTS = vdelta-test.lo
+subversion/tests/libsvn_delta/vdelta-test$(EXEEXT): $(vdelta_test_DEPS)
+ cd subversion/tests/libsvn_delta && $(LINK) $(vdelta_test_LDFLAGS) -o vdelta-test$(EXEEXT) $(vdelta_test_OBJECTS) -lsvn_delta-1 -lsvn_subr-1 $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS)
+
+wc_incomplete_tester_PATH = subversion/tests/libsvn_wc
+wc_incomplete_tester_DEPS = subversion/tests/libsvn_wc/wc-incomplete-tester.lo
+wc_incomplete_tester_OBJECTS = wc-incomplete-tester.lo
+subversion/tests/libsvn_wc/wc-incomplete-tester$(EXEEXT): $(wc_incomplete_tester_DEPS)
+ cd subversion/tests/libsvn_wc && $(LINK) $(wc_incomplete_tester_LDFLAGS) -o wc-incomplete-tester$(EXEEXT) $(wc_incomplete_tester_OBJECTS) -lsvn_wc-1 -lsvn_subr-1 $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS)
+
+wc_lock_tester_PATH = subversion/tests/libsvn_wc
+wc_lock_tester_DEPS = subversion/tests/libsvn_wc/wc-lock-tester.lo
+wc_lock_tester_OBJECTS = wc-lock-tester.lo
+subversion/tests/libsvn_wc/wc-lock-tester$(EXEEXT): $(wc_lock_tester_DEPS)
+ cd subversion/tests/libsvn_wc && $(LINK) $(wc_lock_tester_LDFLAGS) -o wc-lock-tester$(EXEEXT) $(wc_lock_tester_OBJECTS) -lsvn_wc-1 -lsvn_subr-1 $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS)
+
+wc_queries_test_PATH = subversion/tests/libsvn_wc
+wc_queries_test_DEPS = subversion/libsvn_subr/sqlite3wrapper.lo subversion/tests/libsvn_wc/wc-queries-test.lo subversion/tests/libsvn_test-1.la
+wc_queries_test_OBJECTS = ../../libsvn_subr/sqlite3wrapper.lo wc-queries-test.lo
+subversion/tests/libsvn_wc/wc-queries-test$(EXEEXT): $(wc_queries_test_DEPS)
+ cd subversion/tests/libsvn_wc && $(LINK) $(wc_queries_test_LDFLAGS) -o wc-queries-test$(EXEEXT) $(wc_queries_test_OBJECTS) ../../../subversion/tests/libsvn_test-1.la -lsvn_subr-1 $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(SVN_SQLITE_LIBS) $(LIBS)
+
+wc_test_PATH = subversion/tests/libsvn_wc
+wc_test_DEPS = subversion/tests/libsvn_wc/utils.lo subversion/tests/libsvn_wc/wc-test.lo subversion/tests/libsvn_test-1.la
+wc_test_OBJECTS = utils.lo wc-test.lo
+subversion/tests/libsvn_wc/wc-test$(EXEEXT): $(wc_test_DEPS)
+ cd subversion/tests/libsvn_wc && $(LINK) $(wc_test_LDFLAGS) -o wc-test$(EXEEXT) $(wc_test_OBJECTS) -lsvn_client-1 ../../../subversion/tests/libsvn_test-1.la -lsvn_wc-1 -lsvn_subr-1 $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS)
+
+window_test_PATH = subversion/tests/libsvn_delta
+window_test_DEPS = subversion/tests/libsvn_delta/window-test.lo subversion/tests/libsvn_test-1.la
+window_test_OBJECTS = window-test.lo
+subversion/tests/libsvn_delta/window-test$(EXEEXT): $(window_test_DEPS)
+ cd subversion/tests/libsvn_delta && $(LINK) $(window_test_LDFLAGS) -o window-test$(EXEEXT) $(window_test_OBJECTS) ../../../subversion/tests/libsvn_test-1.la -lsvn_delta-1 -lsvn_subr-1 $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS)
+
+x509_parser_PATH = tools/dev
+x509_parser_DEPS = tools/dev/x509-parser.lo
+x509_parser_OBJECTS = x509-parser.lo
+tools/dev/x509-parser$(EXEEXT): $(x509_parser_DEPS)
+ cd tools/dev && $(LINK) $(x509_parser_LDFLAGS) -o x509-parser$(EXEEXT) $(x509_parser_OBJECTS) -lsvn_subr-1 $(SVN_APR_LIBS) $(LIBS)
+
+x509_test_PATH = subversion/tests/libsvn_subr
+x509_test_DEPS = subversion/tests/libsvn_subr/x509-test.lo subversion/tests/libsvn_test-1.la
+x509_test_OBJECTS = x509-test.lo
+subversion/tests/libsvn_subr/x509-test$(EXEEXT): $(x509_test_DEPS)
+ cd subversion/tests/libsvn_subr && $(LINK) $(x509_test_LDFLAGS) -o x509-test$(EXEEXT) $(x509_test_OBJECTS) ../../../subversion/tests/libsvn_test-1.la -lsvn_subr-1 $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS)
+
+xml_test_PATH = subversion/tests/libsvn_subr
+xml_test_DEPS = subversion/tests/libsvn_subr/xml-test.lo subversion/tests/libsvn_test-1.la
+xml_test_OBJECTS = xml-test.lo
+subversion/tests/libsvn_subr/xml-test$(EXEEXT): $(xml_test_DEPS)
+ cd subversion/tests/libsvn_subr && $(LINK) $(xml_test_LDFLAGS) -o xml-test$(EXEEXT) $(xml_test_OBJECTS) ../../../subversion/tests/libsvn_test-1.la -lsvn_subr-1 $(SVN_APRUTIL_LIBS) $(SVN_APR_LIBS) $(LIBS)
+
+
+########################################
+# Section 6: Install-Group build targets
+########################################
+
+apache-mod: subversion/mod_authz_svn/mod_authz_svn.la subversion/mod_dav_svn/mod_dav_svn.la tools/server-side/mod_dontdothat/mod_dontdothat.la
+
+bdb-lib: subversion/libsvn_fs_base/libsvn_fs_base-1.la
+
+bdb-test: subversion/tests/libsvn_fs_base/changes-test$(EXEEXT) subversion/tests/libsvn_fs_base/fs-base-test$(EXEEXT) subversion/tests/libsvn_fs_base/strings-reps-test$(EXEEXT)
+
+bin: subversion/svn/svn$(EXEEXT) subversion/svnadmin/svnadmin$(EXEEXT) subversion/svnbench/svnbench$(EXEEXT) subversion/svndumpfilter/svndumpfilter$(EXEEXT) subversion/svnfsfs/svnfsfs$(EXEEXT) subversion/svnlook/svnlook$(EXEEXT) subversion/svnmucc/svnmucc$(EXEEXT) subversion/svnrdump/svnrdump$(EXEEXT) subversion/svnserve/svnserve$(EXEEXT) subversion/svnsync/svnsync$(EXEEXT) subversion/svnversion/svnversion$(EXEEXT)
+
+cxxhl-lib: subversion/bindings/cxxhl/libsvncxxhl-1.la
+
+cxxhl-tests: subversion/bindings/cxxhl/cxxhl-tests$(EXEEXT) googlemock/libgooglemock-1.la
+
+fsmod-lib: subversion/libsvn_delta/libsvn_delta-1.la subversion/libsvn_fs_fs/libsvn_fs_fs-1.la subversion/libsvn_fs_util/libsvn_fs_util-1.la subversion/libsvn_fs_x/libsvn_fs_x-1.la subversion/libsvn_subr/libsvn_subr-1.la
+
+gnome-keyring-lib: subversion/libsvn_auth_gnome_keyring/libsvn_auth_gnome_keyring-1.la
+
+javahl-callback-javah:
+
+javahl-compat-java:
+
+javahl-compat-tests:
+
+javahl-java:
+
+javahl-javah:
+
+javahl-lib: subversion/bindings/javahl/native/libsvnjavahl-1.la
+
+javahl-remote-javah:
+
+javahl-tests:
+
+javahl-types-javah:
+
+javahl-util-javah:
+
+kwallet-lib: subversion/libsvn_auth_kwallet/libsvn_auth_kwallet-1.la
+
+lib: subversion/libsvn_client/libsvn_client-1.la subversion/libsvn_diff/libsvn_diff-1.la subversion/libsvn_ra/libsvn_ra-1.la subversion/libsvn_wc/libsvn_wc-1.la
+
+locale:
+
+ramod-lib: subversion/libsvn_fs/libsvn_fs-1.la subversion/libsvn_ra_local/libsvn_ra_local-1.la subversion/libsvn_ra_svn/libsvn_ra_svn-1.la subversion/libsvn_repos/libsvn_repos-1.la
+
+serf-lib: subversion/libsvn_ra_serf/libsvn_ra_serf-1.la
+
+sub-test: subversion/tests/libsvn_fs_fs/fs-fs-fuzzy-test$(EXEEXT)
+
+swig-pl-lib: subversion/bindings/swig/perl/libsvn_swig_perl/libsvn_swig_perl-1.la
+
+swig-py: subversion/bindings/swig/python/_client.la subversion/bindings/swig/python/_core.la subversion/bindings/swig/python/_delta.la subversion/bindings/swig/python/_diff.la subversion/bindings/swig/python/_fs.la subversion/bindings/swig/python/_ra.la subversion/bindings/swig/python/_repos.la subversion/bindings/swig/python/_wc.la
+
+swig-py-lib: subversion/bindings/swig/python/libsvn_swig_py/libsvn_swig_py-1.la
+
+swig-rb: subversion/bindings/swig/ruby/client.la subversion/bindings/swig/ruby/core.la subversion/bindings/swig/ruby/delta.la subversion/bindings/swig/ruby/diff.la subversion/bindings/swig/ruby/fs.la subversion/bindings/swig/ruby/ra.la subversion/bindings/swig/ruby/repos.la subversion/bindings/swig/ruby/wc.la
+
+swig-rb-lib: subversion/bindings/swig/ruby/libsvn_swig_ruby/libsvn_swig_ruby-1.la
+
+test: subversion/tests/afl/afl-x509$(EXEEXT) subversion/tests/cmdline/atomic-ra-revprop-change$(EXEEXT) subversion/tests/libsvn_subr/auth-test$(EXEEXT) subversion/tests/libsvn_repos/authz-test$(EXEEXT) subversion/tests/libsvn_subr/bit-array-test$(EXEEXT) subversion/tests/libsvn_subr/cache-test$(EXEEXT) subversion/tests/libsvn_subr/checksum-test$(EXEEXT) subversion/tests/libsvn_client/client-test$(EXEEXT) subversion/tests/libsvn_subr/compat-test$(EXEEXT) subversion/tests/libsvn_subr/compress-test$(EXEEXT) subversion/tests/libsvn_subr/config-test$(EXEEXT) subversion/tests/libsvn_wc/conflict-data-test$(EXEEXT) subversion/tests/libsvn_client/conflicts-test$(EXEEXT) subversion/tests/libsvn_subr/crypto-test$(EXEEXT) subversion/tests/libsvn_wc/db-test$(EXEEXT) subversion/tests/libsvn_diff/diff-diff3-test$(EXEEXT) subversion/tests/libsvn_subr/dirent_uri-test$(EXEEXT) subversion/tests/libsvn_repos/dump-load-test$(EXEEXT) subversion/tests/libsvn_wc/entries-compat-test$(EXEEXT) subversion/tests/cmdline/entries-dump$(EXEEXT) subversion/tests/libsvn_subr/error-code-test$(EXEEXT) subversion/tests/libsvn_subr/error-test$(EXEEXT) subversion/tests/libsvn_fs_fs/fs-fs-pack-test$(EXEEXT) subversion/tests/libsvn_fs_fs/fs-fs-private-test$(EXEEXT) subversion/tests/libsvn_fs/fs-sequential-test$(EXEEXT) subversion/tests/libsvn_fs/fs-test$(EXEEXT) subversion/tests/libsvn_fs_x/fs-x-pack-test$(EXEEXT) subversion/tests/libsvn_subr/hashdump-test$(EXEEXT) subversion/tests/libsvn_subr/io-test$(EXEEXT) subversion/tests/libsvn_test-1.la subversion/tests/cmdline/lock-helper$(EXEEXT) subversion/tests/libsvn_fs/locks-test$(EXEEXT) subversion/tests/libsvn_subr/mergeinfo-test$(EXEEXT) subversion/tests/libsvn_client/mtcc-test$(EXEEXT) subversion/tests/libsvn_wc/op-depth-test$(EXEEXT) subversion/tests/libsvn_subr/opt-test$(EXEEXT) subversion/tests/libsvn_subr/packed-data-test$(EXEEXT) subversion/tests/libsvn_diff/parse-diff-test$(EXEEXT) subversion/tests/libsvn_subr/path-test$(EXEEXT) subversion/tests/libsvn_subr/prefix-string-test$(EXEEXT) subversion/tests/libsvn_subr/priority-queue-test$(EXEEXT) subversion/tests/libsvn_wc/pristine-store-test$(EXEEXT) subversion/tests/libsvn_ra_local/ra-local-test$(EXEEXT) subversion/tests/libsvn_ra/ra-test$(EXEEXT) subversion/tests/libsvn_delta/random-test$(EXEEXT) subversion/tests/libsvn_repos/repos-test$(EXEEXT) subversion/tests/libsvn_subr/revision-test$(EXEEXT) subversion/tests/libsvn_subr/root-pools-test$(EXEEXT) subversion/tests/libsvn_subr/skel-test$(EXEEXT) subversion/tests/libsvn_subr/spillbuf-test$(EXEEXT) subversion/tests/libsvn_subr/sqlite-test$(EXEEXT) subversion/tests/libsvn_subr/stream-test$(EXEEXT) subversion/tests/libsvn_fs_x/string-table-test$(EXEEXT) subversion/tests/libsvn_subr/string-test$(EXEEXT) subversion/tests/libsvn_subr/subst_translate-test$(EXEEXT) tools/dev/wc-ng/svn-wc-db-tester$(EXEEXT) subversion/tests/libsvn_delta/svndiff-stream-test$(EXEEXT) subversion/tests/libsvn_delta/svndiff-test$(EXEEXT) subversion/tests/libsvn_subr/time-test$(EXEEXT) subversion/tests/libsvn_subr/translate-test$(EXEEXT) subversion/tests/libsvn_subr/utf-test$(EXEEXT) subversion/tests/libsvn_delta/vdelta-test$(EXEEXT) subversion/tests/libsvn_wc/wc-incomplete-tester$(EXEEXT) subversion/tests/libsvn_wc/wc-lock-tester$(EXEEXT) subversion/tests/libsvn_wc/wc-queries-test$(EXEEXT) subversion/tests/libsvn_wc/wc-test$(EXEEXT) subversion/tests/libsvn_delta/window-test$(EXEEXT) subversion/tests/libsvn_subr/x509-test$(EXEEXT) subversion/tests/libsvn_subr/xml-test$(EXEEXT)
+
+tools: tools/diff/diff$(EXEEXT) tools/diff/diff3$(EXEEXT) tools/diff/diff4$(EXEEXT) tools/dev/fsfs-access-map$(EXEEXT) tools/client-side/svn-mergeinfo-normalizer/svn-mergeinfo-normalizer$(EXEEXT) tools/server-side/svn-populate-node-origins-index$(EXEEXT) tools/server-side/svnauthz$(EXEEXT) tools/server-side/svnauthz-validate$(EXEEXT) tools/client-side/svnconflict/svnconflict$(EXEEXT) tools/dev/svnmover/svnmover$(EXEEXT) tools/dev/svnraisetreeconflict/svnraisetreeconflict$(EXEEXT) tools/dev/x509-parser$(EXEEXT)
+
+
+########################################
+# Section 7: Install-Group install targets
+########################################
+
+install-mods-shared: subversion/mod_dav_svn/mod_dav_svn.la subversion/mod_authz_svn/mod_authz_svn.la tools/server-side/mod_dontdothat/mod_dontdothat.la
+ if $(INSTALL_APACHE_MODS) ; then cd subversion/mod_dav_svn ; $(MKDIR) "$(APACHE_LIBEXECDIR)" ; $(INSTALL_MOD_SHARED) -n dav_svn mod_dav_svn.la ; fi
+ if $(INSTALL_APACHE_MODS) ; then cd subversion/mod_authz_svn ; $(MKDIR) "$(APACHE_LIBEXECDIR)" ; $(INSTALL_MOD_SHARED) -n authz_svn mod_authz_svn.la ; fi
+ if $(INSTALL_APACHE_MODS) ; then cd tools/server-side/mod_dontdothat ; $(MKDIR) "$(APACHE_LIBEXECDIR)" ; $(INSTALL_MOD_SHARED) -n dontdothat mod_dontdothat.la ; fi
+
+install-bdb-lib: subversion/libsvn_fs_base/libsvn_fs_base-1.la
+ $(MKDIR) $(DESTDIR)$(bdb_libdir) $(DESTDIR)$(pkgconfig_dir)
+ cd subversion/libsvn_fs_base ; $(INSTALL_BDB_LIB) libsvn_fs_base-1.la $(DESTDIR)$(bdb_libdir)/libsvn_fs_base-1.la
+ $(INSTALL_DATA) subversion/libsvn_fs_base/libsvn_fs_base.pc $(DESTDIR)$(pkgconfig_dir)/libsvn_fs_base.pc
+
+install-bin: subversion/svn/svn$(EXEEXT) subversion/svnadmin/svnadmin$(EXEEXT) subversion/svnbench/svnbench$(EXEEXT) subversion/svndumpfilter/svndumpfilter$(EXEEXT) subversion/svnfsfs/svnfsfs$(EXEEXT) subversion/svnlook/svnlook$(EXEEXT) subversion/svnmucc/svnmucc$(EXEEXT) subversion/svnrdump/svnrdump$(EXEEXT) subversion/svnserve/svnserve$(EXEEXT) subversion/svnsync/svnsync$(EXEEXT) subversion/svnversion/svnversion$(EXEEXT)
+ $(MKDIR) $(DESTDIR)$(bindir)
+ cd subversion/svn ; $(INSTALL_BIN) svn$(EXEEXT) $(DESTDIR)$(bindir)/svn$(EXEEXT)
+
+ cd subversion/svnadmin ; $(INSTALL_BIN) svnadmin$(EXEEXT) $(DESTDIR)$(bindir)/svnadmin$(EXEEXT)
+
+ cd subversion/svnbench ; $(INSTALL_BIN) svnbench$(EXEEXT) $(DESTDIR)$(bindir)/svnbench$(EXEEXT)
+
+ cd subversion/svndumpfilter ; $(INSTALL_BIN) svndumpfilter$(EXEEXT) $(DESTDIR)$(bindir)/svndumpfilter$(EXEEXT)
+
+ cd subversion/svnfsfs ; $(INSTALL_BIN) svnfsfs$(EXEEXT) $(DESTDIR)$(bindir)/svnfsfs$(EXEEXT)
+
+ cd subversion/svnlook ; $(INSTALL_BIN) svnlook$(EXEEXT) $(DESTDIR)$(bindir)/svnlook$(EXEEXT)
+
+ cd subversion/svnmucc ; $(INSTALL_BIN) svnmucc$(EXEEXT) $(DESTDIR)$(bindir)/svnmucc$(EXEEXT)
+
+ cd subversion/svnrdump ; $(INSTALL_BIN) svnrdump$(EXEEXT) $(DESTDIR)$(bindir)/svnrdump$(EXEEXT)
+
+ cd subversion/svnserve ; $(INSTALL_BIN) svnserve$(EXEEXT) $(DESTDIR)$(bindir)/svnserve$(EXEEXT)
+
+ cd subversion/svnsync ; $(INSTALL_BIN) svnsync$(EXEEXT) $(DESTDIR)$(bindir)/svnsync$(EXEEXT)
+
+ cd subversion/svnversion ; $(INSTALL_BIN) svnversion$(EXEEXT) $(DESTDIR)$(bindir)/svnversion$(EXEEXT)
+
+
+install-cxxhl-lib: subversion/bindings/cxxhl/libsvncxxhl-1.la
+ $(MKDIR) $(DESTDIR)$(cxxhl_libdir)
+ cd subversion/bindings/cxxhl ; $(INSTALL_CXXHL_LIB) libsvncxxhl-1.la $(DESTDIR)$(cxxhl_libdir)/libsvncxxhl-1.la
+
+ $(INSTALL_EXTRA_CXXHL_LIB)
+
+install-cxxhl-tests: googlemock/libgooglemock-1.la subversion/bindings/cxxhl/cxxhl-tests$(EXEEXT)
+ $(MKDIR) $(DESTDIR)$(cxxhl_testsdir)
+ if $(SVN_USE_GOOGLEMOCK) ; then cd googlemock ; $(INSTALL_CXXHL_TESTS) libgooglemock-1.la $(DESTDIR)$(cxxhl_testsdir)/libgooglemock-1.la ; fi
+
+ if $(SVN_USE_GOOGLEMOCK) ; then cd subversion/bindings/cxxhl ; $(INSTALL_CXXHL_TESTS) cxxhl-tests$(EXEEXT) $(DESTDIR)$(cxxhl_testsdir)/cxxhl-tests$(EXEEXT) ; fi
+
+ $(INSTALL_EXTRA_CXXHL_TESTS)
+
+install-fsmod-lib: subversion/libsvn_subr/libsvn_subr-1.la subversion/libsvn_delta/libsvn_delta-1.la subversion/libsvn_fs_util/libsvn_fs_util-1.la subversion/libsvn_fs_fs/libsvn_fs_fs-1.la subversion/libsvn_fs_x/libsvn_fs_x-1.la
+ $(MKDIR) $(DESTDIR)$(fsmod_libdir) $(DESTDIR)$(pkgconfig_dir)
+ cd subversion/libsvn_subr ; $(INSTALL_FSMOD_LIB) libsvn_subr-1.la $(DESTDIR)$(fsmod_libdir)/libsvn_subr-1.la
+ $(INSTALL_DATA) subversion/libsvn_subr/libsvn_subr.pc $(DESTDIR)$(pkgconfig_dir)/libsvn_subr.pc
+ cd subversion/libsvn_delta ; $(INSTALL_FSMOD_LIB) libsvn_delta-1.la $(DESTDIR)$(fsmod_libdir)/libsvn_delta-1.la
+ $(INSTALL_DATA) subversion/libsvn_delta/libsvn_delta.pc $(DESTDIR)$(pkgconfig_dir)/libsvn_delta.pc
+ cd subversion/libsvn_fs_util ; $(INSTALL_FSMOD_LIB) libsvn_fs_util-1.la $(DESTDIR)$(fsmod_libdir)/libsvn_fs_util-1.la
+ $(INSTALL_DATA) subversion/libsvn_fs_util/libsvn_fs_util.pc $(DESTDIR)$(pkgconfig_dir)/libsvn_fs_util.pc
+ cd subversion/libsvn_fs_fs ; $(INSTALL_FSMOD_LIB) libsvn_fs_fs-1.la $(DESTDIR)$(fsmod_libdir)/libsvn_fs_fs-1.la
+ $(INSTALL_DATA) subversion/libsvn_fs_fs/libsvn_fs_fs.pc $(DESTDIR)$(pkgconfig_dir)/libsvn_fs_fs.pc
+ cd subversion/libsvn_fs_x ; $(INSTALL_FSMOD_LIB) libsvn_fs_x-1.la $(DESTDIR)$(fsmod_libdir)/libsvn_fs_x-1.la
+ $(INSTALL_DATA) subversion/libsvn_fs_x/libsvn_fs_x.pc $(DESTDIR)$(pkgconfig_dir)/libsvn_fs_x.pc
+
+install-gnome-keyring-lib: subversion/libsvn_auth_gnome_keyring/libsvn_auth_gnome_keyring-1.la
+ $(MKDIR) $(DESTDIR)$(gnome_keyring_libdir) $(DESTDIR)$(pkgconfig_dir)
+ cd subversion/libsvn_auth_gnome_keyring ; $(INSTALL_GNOME_KEYRING_LIB) libsvn_auth_gnome_keyring-1.la $(DESTDIR)$(gnome_keyring_libdir)/libsvn_auth_gnome_keyring-1.la
+ $(INSTALL_DATA) subversion/libsvn_auth_gnome_keyring/libsvn_auth_gnome_keyring.pc $(DESTDIR)$(pkgconfig_dir)/libsvn_auth_gnome_keyring.pc
+
+install-javahl-callback-javah:
+ $(MKDIR) $(DESTDIR)$(javahl_callback_javahdir)
+ $(INSTALL_EXTRA_JAVAHL_CALLBACK_JAVAH)
+
+install-javahl-compat-java:
+ $(MKDIR) $(DESTDIR)$(javahl_compat_javadir)
+ $(INSTALL_EXTRA_JAVAHL_COMPAT_JAVA)
+
+install-javahl-compat-tests:
+ $(MKDIR) $(DESTDIR)$(javahl_compat_testsdir)
+ $(INSTALL_EXTRA_JAVAHL_COMPAT_TESTS)
+
+install-javahl-java:
+ $(MKDIR) $(DESTDIR)$(javahl_javadir)
+ $(INSTALL_EXTRA_JAVAHL_JAVA)
+
+install-javahl-javah:
+ $(MKDIR) $(DESTDIR)$(javahl_javahdir)
+ $(INSTALL_EXTRA_JAVAHL_JAVAH)
+
+install-javahl-lib: subversion/bindings/javahl/native/libsvnjavahl-1.la
+ $(MKDIR) $(DESTDIR)$(javahl_libdir)
+ cd subversion/bindings/javahl/native ; $(INSTALL_JAVAHL_LIB) libsvnjavahl-1.la $(DESTDIR)$(javahl_libdir)/libsvnjavahl-1.la
+
+ $(INSTALL_EXTRA_JAVAHL_LIB)
+
+install-javahl-remote-javah:
+ $(MKDIR) $(DESTDIR)$(javahl_remote_javahdir)
+ $(INSTALL_EXTRA_JAVAHL_REMOTE_JAVAH)
+
+install-javahl-tests:
+ $(MKDIR) $(DESTDIR)$(javahl_testsdir)
+ $(INSTALL_EXTRA_JAVAHL_TESTS)
+
+install-javahl-types-javah:
+ $(MKDIR) $(DESTDIR)$(javahl_types_javahdir)
+ $(INSTALL_EXTRA_JAVAHL_TYPES_JAVAH)
+
+install-javahl-util-javah:
+ $(MKDIR) $(DESTDIR)$(javahl_util_javahdir)
+ $(INSTALL_EXTRA_JAVAHL_UTIL_JAVAH)
+
+install-kwallet-lib: subversion/libsvn_auth_kwallet/libsvn_auth_kwallet-1.la
+ $(MKDIR) $(DESTDIR)$(kwallet_libdir) $(DESTDIR)$(pkgconfig_dir)
+ cd subversion/libsvn_auth_kwallet ; $(INSTALL_KWALLET_LIB) libsvn_auth_kwallet-1.la $(DESTDIR)$(kwallet_libdir)/libsvn_auth_kwallet-1.la
+ $(INSTALL_DATA) subversion/libsvn_auth_kwallet/libsvn_auth_kwallet.pc $(DESTDIR)$(pkgconfig_dir)/libsvn_auth_kwallet.pc
+
+install-lib: subversion/libsvn_diff/libsvn_diff-1.la subversion/libsvn_ra/libsvn_ra-1.la subversion/libsvn_wc/libsvn_wc-1.la subversion/libsvn_client/libsvn_client-1.la
+ $(MKDIR) $(DESTDIR)$(libdir) $(DESTDIR)$(pkgconfig_dir)
+ cd subversion/libsvn_diff ; $(INSTALL_LIB) libsvn_diff-1.la $(DESTDIR)$(libdir)/libsvn_diff-1.la
+ $(INSTALL_DATA) subversion/libsvn_diff/libsvn_diff.pc $(DESTDIR)$(pkgconfig_dir)/libsvn_diff.pc
+ cd subversion/libsvn_ra ; $(INSTALL_LIB) libsvn_ra-1.la $(DESTDIR)$(libdir)/libsvn_ra-1.la
+ $(INSTALL_DATA) subversion/libsvn_ra/libsvn_ra.pc $(DESTDIR)$(pkgconfig_dir)/libsvn_ra.pc
+ cd subversion/libsvn_wc ; $(INSTALL_LIB) libsvn_wc-1.la $(DESTDIR)$(libdir)/libsvn_wc-1.la
+ $(INSTALL_DATA) subversion/libsvn_wc/libsvn_wc.pc $(DESTDIR)$(pkgconfig_dir)/libsvn_wc.pc
+ cd subversion/libsvn_client ; $(INSTALL_LIB) libsvn_client-1.la $(DESTDIR)$(libdir)/libsvn_client-1.la
+ $(INSTALL_DATA) subversion/libsvn_client/libsvn_client.pc $(DESTDIR)$(pkgconfig_dir)/libsvn_client.pc
+
+install-locale: subversion/po/de.mo subversion/po/es.mo subversion/po/fr.mo subversion/po/it.mo subversion/po/ja.mo subversion/po/ko.mo subversion/po/nb.mo subversion/po/pl.mo subversion/po/pt_BR.mo subversion/po/sv.mo subversion/po/zh_CN.mo subversion/po/zh_TW.mo
+ $(MKDIR) $(DESTDIR)$(localedir)
+ $(MKDIR) $(DESTDIR)$(localedir)/de/LC_MESSAGES
+ cd subversion/po ; $(INSTALL_LOCALE) de.mo $(DESTDIR)$(localedir)/de/LC_MESSAGES/$(PACKAGE_NAME).mo
+ $(MKDIR) $(DESTDIR)$(localedir)/es/LC_MESSAGES
+ cd subversion/po ; $(INSTALL_LOCALE) es.mo $(DESTDIR)$(localedir)/es/LC_MESSAGES/$(PACKAGE_NAME).mo
+ $(MKDIR) $(DESTDIR)$(localedir)/fr/LC_MESSAGES
+ cd subversion/po ; $(INSTALL_LOCALE) fr.mo $(DESTDIR)$(localedir)/fr/LC_MESSAGES/$(PACKAGE_NAME).mo
+ $(MKDIR) $(DESTDIR)$(localedir)/it/LC_MESSAGES
+ cd subversion/po ; $(INSTALL_LOCALE) it.mo $(DESTDIR)$(localedir)/it/LC_MESSAGES/$(PACKAGE_NAME).mo
+ $(MKDIR) $(DESTDIR)$(localedir)/ja/LC_MESSAGES
+ cd subversion/po ; $(INSTALL_LOCALE) ja.mo $(DESTDIR)$(localedir)/ja/LC_MESSAGES/$(PACKAGE_NAME).mo
+ $(MKDIR) $(DESTDIR)$(localedir)/ko/LC_MESSAGES
+ cd subversion/po ; $(INSTALL_LOCALE) ko.mo $(DESTDIR)$(localedir)/ko/LC_MESSAGES/$(PACKAGE_NAME).mo
+ $(MKDIR) $(DESTDIR)$(localedir)/nb/LC_MESSAGES
+ cd subversion/po ; $(INSTALL_LOCALE) nb.mo $(DESTDIR)$(localedir)/nb/LC_MESSAGES/$(PACKAGE_NAME).mo
+ $(MKDIR) $(DESTDIR)$(localedir)/pl/LC_MESSAGES
+ cd subversion/po ; $(INSTALL_LOCALE) pl.mo $(DESTDIR)$(localedir)/pl/LC_MESSAGES/$(PACKAGE_NAME).mo
+ $(MKDIR) $(DESTDIR)$(localedir)/pt_BR/LC_MESSAGES
+ cd subversion/po ; $(INSTALL_LOCALE) pt_BR.mo $(DESTDIR)$(localedir)/pt_BR/LC_MESSAGES/$(PACKAGE_NAME).mo
+ $(MKDIR) $(DESTDIR)$(localedir)/sv/LC_MESSAGES
+ cd subversion/po ; $(INSTALL_LOCALE) sv.mo $(DESTDIR)$(localedir)/sv/LC_MESSAGES/$(PACKAGE_NAME).mo
+ $(MKDIR) $(DESTDIR)$(localedir)/zh_CN/LC_MESSAGES
+ cd subversion/po ; $(INSTALL_LOCALE) zh_CN.mo $(DESTDIR)$(localedir)/zh_CN/LC_MESSAGES/$(PACKAGE_NAME).mo
+ $(MKDIR) $(DESTDIR)$(localedir)/zh_TW/LC_MESSAGES
+ cd subversion/po ; $(INSTALL_LOCALE) zh_TW.mo $(DESTDIR)$(localedir)/zh_TW/LC_MESSAGES/$(PACKAGE_NAME).mo
+
+install-ramod-lib: subversion/libsvn_fs/libsvn_fs-1.la subversion/libsvn_ra_svn/libsvn_ra_svn-1.la subversion/libsvn_repos/libsvn_repos-1.la subversion/libsvn_ra_local/libsvn_ra_local-1.la
+ $(MKDIR) $(DESTDIR)$(ramod_libdir) $(DESTDIR)$(pkgconfig_dir)
+ cd subversion/libsvn_fs ; $(INSTALL_RAMOD_LIB) libsvn_fs-1.la $(DESTDIR)$(ramod_libdir)/libsvn_fs-1.la
+ $(INSTALL_DATA) subversion/libsvn_fs/libsvn_fs.pc $(DESTDIR)$(pkgconfig_dir)/libsvn_fs.pc
+ cd subversion/libsvn_ra_svn ; $(INSTALL_RAMOD_LIB) libsvn_ra_svn-1.la $(DESTDIR)$(ramod_libdir)/libsvn_ra_svn-1.la
+ $(INSTALL_DATA) subversion/libsvn_ra_svn/libsvn_ra_svn.pc $(DESTDIR)$(pkgconfig_dir)/libsvn_ra_svn.pc
+ cd subversion/libsvn_repos ; $(INSTALL_RAMOD_LIB) libsvn_repos-1.la $(DESTDIR)$(ramod_libdir)/libsvn_repos-1.la
+ $(INSTALL_DATA) subversion/libsvn_repos/libsvn_repos.pc $(DESTDIR)$(pkgconfig_dir)/libsvn_repos.pc
+ cd subversion/libsvn_ra_local ; $(INSTALL_RAMOD_LIB) libsvn_ra_local-1.la $(DESTDIR)$(ramod_libdir)/libsvn_ra_local-1.la
+ $(INSTALL_DATA) subversion/libsvn_ra_local/libsvn_ra_local.pc $(DESTDIR)$(pkgconfig_dir)/libsvn_ra_local.pc
+
+install-serf-lib: subversion/libsvn_ra_serf/libsvn_ra_serf-1.la
+ $(MKDIR) $(DESTDIR)$(serf_libdir) $(DESTDIR)$(pkgconfig_dir)
+ cd subversion/libsvn_ra_serf ; $(INSTALL_SERF_LIB) libsvn_ra_serf-1.la $(DESTDIR)$(serf_libdir)/libsvn_ra_serf-1.la
+ $(INSTALL_DATA) subversion/libsvn_ra_serf/libsvn_ra_serf.pc $(DESTDIR)$(pkgconfig_dir)/libsvn_ra_serf.pc
+
+install-sub-test: subversion/tests/libsvn_fs_fs/fs-fs-fuzzy-test$(EXEEXT)
+ $(MKDIR) $(DESTDIR)$(sub_testdir)
+ cd subversion/tests/libsvn_fs_fs ; $(INSTALL_SUB_TEST) fs-fs-fuzzy-test$(EXEEXT) $(DESTDIR)$(sub_testdir)/fs-fs-fuzzy-test$(EXEEXT)
+
+
+install-swig-pl-lib: subversion/bindings/swig/perl/libsvn_swig_perl/libsvn_swig_perl-1.la
+ $(MKDIR) $(DESTDIR)$(swig_pl_libdir)
+ cd subversion/bindings/swig/perl/libsvn_swig_perl ; $(INSTALL_SWIG_PL_LIB) libsvn_swig_perl-1.la $(DESTDIR)$(swig_pl_libdir)/libsvn_swig_perl-1.la
+
+
+install-swig-py: subversion/bindings/swig/python/_core.la subversion/bindings/swig/python/_client.la subversion/bindings/swig/python/_delta.la subversion/bindings/swig/python/_diff.la subversion/bindings/swig/python/_fs.la subversion/bindings/swig/python/_ra.la subversion/bindings/swig/python/_repos.la subversion/bindings/swig/python/_wc.la
+ $(MKDIR) $(DESTDIR)$(swig_pydir)
+ cd subversion/bindings/swig/python ; $(INSTALL_SWIG_PY) _core.la $(DESTDIR)$(swig_pydir)/_core.la
+
+ cd subversion/bindings/swig/python ; $(INSTALL_SWIG_PY) _client.la $(DESTDIR)$(swig_pydir)/_client.la
+
+ cd subversion/bindings/swig/python ; $(INSTALL_SWIG_PY) _delta.la $(DESTDIR)$(swig_pydir)/_delta.la
+
+ cd subversion/bindings/swig/python ; $(INSTALL_SWIG_PY) _diff.la $(DESTDIR)$(swig_pydir)/_diff.la
+
+ cd subversion/bindings/swig/python ; $(INSTALL_SWIG_PY) _fs.la $(DESTDIR)$(swig_pydir)/_fs.la
+
+ cd subversion/bindings/swig/python ; $(INSTALL_SWIG_PY) _ra.la $(DESTDIR)$(swig_pydir)/_ra.la
+
+ cd subversion/bindings/swig/python ; $(INSTALL_SWIG_PY) _repos.la $(DESTDIR)$(swig_pydir)/_repos.la
+
+ cd subversion/bindings/swig/python ; $(INSTALL_SWIG_PY) _wc.la $(DESTDIR)$(swig_pydir)/_wc.la
+
+ $(INSTALL_EXTRA_SWIG_PY)
+
+install-swig-py-lib: subversion/bindings/swig/python/libsvn_swig_py/libsvn_swig_py-1.la
+ $(MKDIR) $(DESTDIR)$(swig_py_libdir)
+ cd subversion/bindings/swig/python/libsvn_swig_py ; $(INSTALL_SWIG_PY_LIB) libsvn_swig_py-1.la $(DESTDIR)$(swig_py_libdir)/libsvn_swig_py-1.la
+
+
+install-swig-rb: subversion/bindings/swig/ruby/core.la subversion/bindings/swig/ruby/client.la subversion/bindings/swig/ruby/delta.la subversion/bindings/swig/ruby/diff.la subversion/bindings/swig/ruby/fs.la subversion/bindings/swig/ruby/ra.la subversion/bindings/swig/ruby/repos.la subversion/bindings/swig/ruby/wc.la
+ $(MKDIR) $(DESTDIR)$(swig_rbdir)
+ cd subversion/bindings/swig/ruby ; $(INSTALL_SWIG_RB) core.la $(DESTDIR)$(swig_rbdir)/core.la
+
+ cd subversion/bindings/swig/ruby ; $(INSTALL_SWIG_RB) client.la $(DESTDIR)$(swig_rbdir)/client.la
+
+ cd subversion/bindings/swig/ruby ; $(INSTALL_SWIG_RB) delta.la $(DESTDIR)$(swig_rbdir)/delta.la
+
+ cd subversion/bindings/swig/ruby ; $(INSTALL_SWIG_RB) diff.la $(DESTDIR)$(swig_rbdir)/diff.la
+
+ cd subversion/bindings/swig/ruby ; $(INSTALL_SWIG_RB) fs.la $(DESTDIR)$(swig_rbdir)/fs.la
+
+ cd subversion/bindings/swig/ruby ; $(INSTALL_SWIG_RB) ra.la $(DESTDIR)$(swig_rbdir)/ra.la
+
+ cd subversion/bindings/swig/ruby ; $(INSTALL_SWIG_RB) repos.la $(DESTDIR)$(swig_rbdir)/repos.la
+
+ cd subversion/bindings/swig/ruby ; $(INSTALL_SWIG_RB) wc.la $(DESTDIR)$(swig_rbdir)/wc.la
+
+ $(INSTALL_EXTRA_SWIG_RB)
+
+install-swig-rb-lib: subversion/bindings/swig/ruby/libsvn_swig_ruby/libsvn_swig_ruby-1.la
+ $(MKDIR) $(DESTDIR)$(swig_rb_libdir)
+ cd subversion/bindings/swig/ruby/libsvn_swig_ruby ; $(INSTALL_SWIG_RB_LIB) libsvn_swig_ruby-1.la $(DESTDIR)$(swig_rb_libdir)/libsvn_swig_ruby-1.la
+
+
+install-tools: tools/diff/diff$(EXEEXT) tools/diff/diff3$(EXEEXT) tools/diff/diff4$(EXEEXT) tools/dev/fsfs-access-map$(EXEEXT) tools/client-side/svn-mergeinfo-normalizer/svn-mergeinfo-normalizer$(EXEEXT) tools/server-side/svn-populate-node-origins-index$(EXEEXT) tools/server-side/svnauthz$(EXEEXT) tools/server-side/svnauthz-validate$(EXEEXT) tools/client-side/svnconflict/svnconflict$(EXEEXT) tools/dev/svnmover/svnmover$(EXEEXT) tools/dev/svnraisetreeconflict/svnraisetreeconflict$(EXEEXT) tools/dev/x509-parser$(EXEEXT)
+ $(MKDIR) $(DESTDIR)$(toolsdir)
+ cd tools/diff ; $(INSTALL_TOOLS) diff$(EXEEXT) $(DESTDIR)$(toolsdir)/diff$(EXEEXT)
+
+ cd tools/diff ; $(INSTALL_TOOLS) diff3$(EXEEXT) $(DESTDIR)$(toolsdir)/diff3$(EXEEXT)
+
+ cd tools/diff ; $(INSTALL_TOOLS) diff4$(EXEEXT) $(DESTDIR)$(toolsdir)/diff4$(EXEEXT)
+
+ cd tools/dev ; $(INSTALL_TOOLS) fsfs-access-map$(EXEEXT) $(DESTDIR)$(toolsdir)/fsfs-access-map$(EXEEXT)
+
+ cd tools/client-side/svn-mergeinfo-normalizer ; $(INSTALL_TOOLS) svn-mergeinfo-normalizer$(EXEEXT) $(DESTDIR)$(toolsdir)/svn-mergeinfo-normalizer$(EXEEXT)
+
+ cd tools/server-side ; $(INSTALL_TOOLS) svn-populate-node-origins-index$(EXEEXT) $(DESTDIR)$(toolsdir)/svn-populate-node-origins-index$(EXEEXT)
+
+ cd tools/server-side ; $(INSTALL_TOOLS) svnauthz$(EXEEXT) $(DESTDIR)$(toolsdir)/svnauthz$(EXEEXT)
+
+ cd tools/server-side ; $(INSTALL_TOOLS) svnauthz-validate$(EXEEXT) $(DESTDIR)$(toolsdir)/svnauthz-validate$(EXEEXT)
+
+ cd tools/client-side/svnconflict ; $(INSTALL_TOOLS) svnconflict$(EXEEXT) $(DESTDIR)$(toolsdir)/svnconflict$(EXEEXT)
+
+ cd tools/dev/svnmover ; $(INSTALL_TOOLS) svnmover$(EXEEXT) $(DESTDIR)$(toolsdir)/svnmover$(EXEEXT)
+
+ cd tools/dev/svnraisetreeconflict ; $(INSTALL_TOOLS) svnraisetreeconflict$(EXEEXT) $(DESTDIR)$(toolsdir)/svnraisetreeconflict$(EXEEXT)
+
+ cd tools/dev ; $(INSTALL_TOOLS) x509-parser$(EXEEXT) $(DESTDIR)$(toolsdir)/x509-parser$(EXEEXT)
+
+ $(INSTALL_EXTRA_TOOLS)
+
+
+########################################
+# Section 8: The install-include rule
+########################################
+
+install-include: subversion/include/mod_authz_svn.h subversion/include/mod_dav_svn.h subversion/include/svn_auth.h subversion/include/svn_base64.h subversion/include/svn_cache_config.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_cmdline.h subversion/include/svn_compat.h subversion/include/svn_config.h subversion/include/svn_ctype.h subversion/include/svn_dav.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_dso.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_iter.h subversion/include/svn_md5.h subversion/include/svn_mergeinfo.h subversion/include/svn_nls.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_quoprint.h subversion/include/svn_ra.h subversion/include/svn_ra_svn.h subversion/include/svn_repos.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_subst.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_user.h subversion/include/svn_utf.h subversion/include/svn_version.h subversion/include/svn_wc.h subversion/include/svn_x509.h subversion/include/svn_xml.h
+ $(MKDIR) $(DESTDIR)$(includedir)/subversion-1
+ $(INSTALL_INCLUDE) $(abs_srcdir)/subversion/include/mod_authz_svn.h $(DESTDIR)$(includedir)/subversion-1/mod_authz_svn.h
+ $(INSTALL_INCLUDE) $(abs_srcdir)/subversion/include/mod_dav_svn.h $(DESTDIR)$(includedir)/subversion-1/mod_dav_svn.h
+ $(INSTALL_INCLUDE) $(abs_srcdir)/subversion/include/svn_auth.h $(DESTDIR)$(includedir)/subversion-1/svn_auth.h
+ $(INSTALL_INCLUDE) $(abs_srcdir)/subversion/include/svn_base64.h $(DESTDIR)$(includedir)/subversion-1/svn_base64.h
+ $(INSTALL_INCLUDE) $(abs_srcdir)/subversion/include/svn_cache_config.h $(DESTDIR)$(includedir)/subversion-1/svn_cache_config.h
+ $(INSTALL_INCLUDE) $(abs_srcdir)/subversion/include/svn_checksum.h $(DESTDIR)$(includedir)/subversion-1/svn_checksum.h
+ $(INSTALL_INCLUDE) $(abs_srcdir)/subversion/include/svn_client.h $(DESTDIR)$(includedir)/subversion-1/svn_client.h
+ $(INSTALL_INCLUDE) $(abs_srcdir)/subversion/include/svn_cmdline.h $(DESTDIR)$(includedir)/subversion-1/svn_cmdline.h
+ $(INSTALL_INCLUDE) $(abs_srcdir)/subversion/include/svn_compat.h $(DESTDIR)$(includedir)/subversion-1/svn_compat.h
+ $(INSTALL_INCLUDE) $(abs_srcdir)/subversion/include/svn_config.h $(DESTDIR)$(includedir)/subversion-1/svn_config.h
+ $(INSTALL_INCLUDE) $(abs_srcdir)/subversion/include/svn_ctype.h $(DESTDIR)$(includedir)/subversion-1/svn_ctype.h
+ $(INSTALL_INCLUDE) $(abs_srcdir)/subversion/include/svn_dav.h $(DESTDIR)$(includedir)/subversion-1/svn_dav.h
+ $(INSTALL_INCLUDE) $(abs_srcdir)/subversion/include/svn_delta.h $(DESTDIR)$(includedir)/subversion-1/svn_delta.h
+ $(INSTALL_INCLUDE) $(abs_srcdir)/subversion/include/svn_diff.h $(DESTDIR)$(includedir)/subversion-1/svn_diff.h
+ $(INSTALL_INCLUDE) $(abs_srcdir)/subversion/include/svn_dirent_uri.h $(DESTDIR)$(includedir)/subversion-1/svn_dirent_uri.h
+ $(INSTALL_INCLUDE) $(abs_srcdir)/subversion/include/svn_dso.h $(DESTDIR)$(includedir)/subversion-1/svn_dso.h
+ $(INSTALL_INCLUDE) $(abs_srcdir)/subversion/include/svn_error.h $(DESTDIR)$(includedir)/subversion-1/svn_error.h
+ $(INSTALL_INCLUDE) $(abs_srcdir)/subversion/include/svn_error_codes.h $(DESTDIR)$(includedir)/subversion-1/svn_error_codes.h
+ $(INSTALL_INCLUDE) $(abs_srcdir)/subversion/include/svn_fs.h $(DESTDIR)$(includedir)/subversion-1/svn_fs.h
+ $(INSTALL_INCLUDE) $(abs_srcdir)/subversion/include/svn_hash.h $(DESTDIR)$(includedir)/subversion-1/svn_hash.h
+ $(INSTALL_INCLUDE) $(abs_srcdir)/subversion/include/svn_io.h $(DESTDIR)$(includedir)/subversion-1/svn_io.h
+ $(INSTALL_INCLUDE) $(abs_srcdir)/subversion/include/svn_iter.h $(DESTDIR)$(includedir)/subversion-1/svn_iter.h
+ $(INSTALL_INCLUDE) $(abs_srcdir)/subversion/include/svn_md5.h $(DESTDIR)$(includedir)/subversion-1/svn_md5.h
+ $(INSTALL_INCLUDE) $(abs_srcdir)/subversion/include/svn_mergeinfo.h $(DESTDIR)$(includedir)/subversion-1/svn_mergeinfo.h
+ $(INSTALL_INCLUDE) $(abs_srcdir)/subversion/include/svn_nls.h $(DESTDIR)$(includedir)/subversion-1/svn_nls.h
+ $(INSTALL_INCLUDE) $(abs_srcdir)/subversion/include/svn_opt.h $(DESTDIR)$(includedir)/subversion-1/svn_opt.h
+ $(INSTALL_INCLUDE) $(abs_srcdir)/subversion/include/svn_path.h $(DESTDIR)$(includedir)/subversion-1/svn_path.h
+ $(INSTALL_INCLUDE) $(abs_srcdir)/subversion/include/svn_pools.h $(DESTDIR)$(includedir)/subversion-1/svn_pools.h
+ $(INSTALL_INCLUDE) $(abs_srcdir)/subversion/include/svn_props.h $(DESTDIR)$(includedir)/subversion-1/svn_props.h
+ $(INSTALL_INCLUDE) $(abs_srcdir)/subversion/include/svn_quoprint.h $(DESTDIR)$(includedir)/subversion-1/svn_quoprint.h
+ $(INSTALL_INCLUDE) $(abs_srcdir)/subversion/include/svn_ra.h $(DESTDIR)$(includedir)/subversion-1/svn_ra.h
+ $(INSTALL_INCLUDE) $(abs_srcdir)/subversion/include/svn_ra_svn.h $(DESTDIR)$(includedir)/subversion-1/svn_ra_svn.h
+ $(INSTALL_INCLUDE) $(abs_srcdir)/subversion/include/svn_repos.h $(DESTDIR)$(includedir)/subversion-1/svn_repos.h
+ $(INSTALL_INCLUDE) $(abs_srcdir)/subversion/include/svn_sorts.h $(DESTDIR)$(includedir)/subversion-1/svn_sorts.h
+ $(INSTALL_INCLUDE) $(abs_srcdir)/subversion/include/svn_string.h $(DESTDIR)$(includedir)/subversion-1/svn_string.h
+ $(INSTALL_INCLUDE) $(abs_srcdir)/subversion/include/svn_subst.h $(DESTDIR)$(includedir)/subversion-1/svn_subst.h
+ $(INSTALL_INCLUDE) $(abs_srcdir)/subversion/include/svn_time.h $(DESTDIR)$(includedir)/subversion-1/svn_time.h
+ $(INSTALL_INCLUDE) $(abs_srcdir)/subversion/include/svn_types.h $(DESTDIR)$(includedir)/subversion-1/svn_types.h
+ $(INSTALL_INCLUDE) $(abs_srcdir)/subversion/include/svn_user.h $(DESTDIR)$(includedir)/subversion-1/svn_user.h
+ $(INSTALL_INCLUDE) $(abs_srcdir)/subversion/include/svn_utf.h $(DESTDIR)$(includedir)/subversion-1/svn_utf.h
+ $(INSTALL_INCLUDE) $(abs_srcdir)/subversion/include/svn_version.h $(DESTDIR)$(includedir)/subversion-1/svn_version.h
+ $(INSTALL_INCLUDE) $(abs_srcdir)/subversion/include/svn_wc.h $(DESTDIR)$(includedir)/subversion-1/svn_wc.h
+ $(INSTALL_INCLUDE) $(abs_srcdir)/subversion/include/svn_x509.h $(DESTDIR)$(includedir)/subversion-1/svn_x509.h
+ $(INSTALL_INCLUDE) $(abs_srcdir)/subversion/include/svn_xml.h $(DESTDIR)$(includedir)/subversion-1/svn_xml.h
+
+########################################
+# Section 9: Shortcut targets for manual builds of specific items
+########################################
+
+afl-x509: subversion/tests/afl/afl-x509$(EXEEXT)
+atomic-ra-revprop-change: subversion/tests/cmdline/atomic-ra-revprop-change$(EXEEXT)
+auth-test: subversion/tests/libsvn_subr/auth-test$(EXEEXT)
+authz-test: subversion/tests/libsvn_repos/authz-test$(EXEEXT)
+bit-array-test: subversion/tests/libsvn_subr/bit-array-test$(EXEEXT)
+cache-test: subversion/tests/libsvn_subr/cache-test$(EXEEXT)
+changes-test: subversion/tests/libsvn_fs_base/changes-test$(EXEEXT)
+checksum-test: subversion/tests/libsvn_subr/checksum-test$(EXEEXT)
+client-test: subversion/tests/libsvn_client/client-test$(EXEEXT)
+compat-test: subversion/tests/libsvn_subr/compat-test$(EXEEXT)
+compress-test: subversion/tests/libsvn_subr/compress-test$(EXEEXT)
+config-test: subversion/tests/libsvn_subr/config-test$(EXEEXT)
+conflict-data-test: subversion/tests/libsvn_wc/conflict-data-test$(EXEEXT)
+conflicts-test: subversion/tests/libsvn_client/conflicts-test$(EXEEXT)
+crypto-test: subversion/tests/libsvn_subr/crypto-test$(EXEEXT)
+cxxhl-tests: subversion/bindings/cxxhl/cxxhl-tests$(EXEEXT)
+db-test: subversion/tests/libsvn_wc/db-test$(EXEEXT)
+diff: tools/diff/diff$(EXEEXT)
+diff-diff3-test: subversion/tests/libsvn_diff/diff-diff3-test$(EXEEXT)
+diff3: tools/diff/diff3$(EXEEXT)
+diff4: tools/diff/diff4$(EXEEXT)
+dirent_uri-test: subversion/tests/libsvn_subr/dirent_uri-test$(EXEEXT)
+dump-load-test: subversion/tests/libsvn_repos/dump-load-test$(EXEEXT)
+entries-compat-test: subversion/tests/libsvn_wc/entries-compat-test$(EXEEXT)
+entries-dump: subversion/tests/cmdline/entries-dump$(EXEEXT)
+error-code-test: subversion/tests/libsvn_subr/error-code-test$(EXEEXT)
+error-test: subversion/tests/libsvn_subr/error-test$(EXEEXT)
+fs-base-test: subversion/tests/libsvn_fs_base/fs-base-test$(EXEEXT)
+fs-fs-fuzzy-test: subversion/tests/libsvn_fs_fs/fs-fs-fuzzy-test$(EXEEXT)
+fs-fs-pack-test: subversion/tests/libsvn_fs_fs/fs-fs-pack-test$(EXEEXT)
+fs-fs-private-test: subversion/tests/libsvn_fs_fs/fs-fs-private-test$(EXEEXT)
+fs-sequential-test: subversion/tests/libsvn_fs/fs-sequential-test$(EXEEXT)
+fs-test: subversion/tests/libsvn_fs/fs-test$(EXEEXT)
+fs-x-pack-test: subversion/tests/libsvn_fs_x/fs-x-pack-test$(EXEEXT)
+fsfs-access-map: tools/dev/fsfs-access-map$(EXEEXT)
+hashdump-test: subversion/tests/libsvn_subr/hashdump-test$(EXEEXT)
+io-test: subversion/tests/libsvn_subr/io-test$(EXEEXT)
+libgooglemock: googlemock/libgooglemock-1.la
+libsvn_auth_gnome_keyring: subversion/libsvn_auth_gnome_keyring/libsvn_auth_gnome_keyring-1.la
+libsvn_auth_kwallet: subversion/libsvn_auth_kwallet/libsvn_auth_kwallet-1.la
+libsvn_client: subversion/libsvn_client/libsvn_client-1.la
+libsvn_delta: subversion/libsvn_delta/libsvn_delta-1.la
+libsvn_diff: subversion/libsvn_diff/libsvn_diff-1.la
+libsvn_fs: subversion/libsvn_fs/libsvn_fs-1.la
+libsvn_fs_base: subversion/libsvn_fs_base/libsvn_fs_base-1.la
+libsvn_fs_fs: subversion/libsvn_fs_fs/libsvn_fs_fs-1.la
+libsvn_fs_util: subversion/libsvn_fs_util/libsvn_fs_util-1.la
+libsvn_fs_x: subversion/libsvn_fs_x/libsvn_fs_x-1.la
+libsvn_ra: subversion/libsvn_ra/libsvn_ra-1.la
+libsvn_ra_local: subversion/libsvn_ra_local/libsvn_ra_local-1.la
+libsvn_ra_serf: subversion/libsvn_ra_serf/libsvn_ra_serf-1.la
+libsvn_ra_svn: subversion/libsvn_ra_svn/libsvn_ra_svn-1.la
+libsvn_repos: subversion/libsvn_repos/libsvn_repos-1.la
+libsvn_subr: subversion/libsvn_subr/libsvn_subr-1.la
+libsvn_swig_perl: subversion/bindings/swig/perl/libsvn_swig_perl/libsvn_swig_perl-1.la
+libsvn_swig_py: subversion/bindings/swig/python/libsvn_swig_py/libsvn_swig_py-1.la
+libsvn_swig_ruby: subversion/bindings/swig/ruby/libsvn_swig_ruby/libsvn_swig_ruby-1.la
+libsvn_test: subversion/tests/libsvn_test-1.la
+libsvn_wc: subversion/libsvn_wc/libsvn_wc-1.la
+libsvncxxhl: subversion/bindings/cxxhl/libsvncxxhl-1.la
+libsvnjavahl: subversion/bindings/javahl/native/libsvnjavahl-1.la
+lock-helper: subversion/tests/cmdline/lock-helper$(EXEEXT)
+locks-test: subversion/tests/libsvn_fs/locks-test$(EXEEXT)
+mergeinfo-test: subversion/tests/libsvn_subr/mergeinfo-test$(EXEEXT)
+mod_authz_svn: subversion/mod_authz_svn/mod_authz_svn.la
+mod_dav_svn: subversion/mod_dav_svn/mod_dav_svn.la
+mod_dontdothat: tools/server-side/mod_dontdothat/mod_dontdothat.la
+mtcc-test: subversion/tests/libsvn_client/mtcc-test$(EXEEXT)
+op-depth-test: subversion/tests/libsvn_wc/op-depth-test$(EXEEXT)
+opt-test: subversion/tests/libsvn_subr/opt-test$(EXEEXT)
+packed-data-test: subversion/tests/libsvn_subr/packed-data-test$(EXEEXT)
+parse-diff-test: subversion/tests/libsvn_diff/parse-diff-test$(EXEEXT)
+path-test: subversion/tests/libsvn_subr/path-test$(EXEEXT)
+perl_client: subversion/bindings/swig/perl/native/_Client.la
+perl_core: subversion/bindings/swig/perl/native/_Core.la
+perl_delta: subversion/bindings/swig/perl/native/_Delta.la
+perl_diff: subversion/bindings/swig/perl/native/_Diff.la
+perl_fs: subversion/bindings/swig/perl/native/_Fs.la
+perl_ra: subversion/bindings/swig/perl/native/_Ra.la
+perl_repos: subversion/bindings/swig/perl/native/_Repos.la
+perl_wc: subversion/bindings/swig/perl/native/_Wc.la
+prefix-string-test: subversion/tests/libsvn_subr/prefix-string-test$(EXEEXT)
+priority-queue-test: subversion/tests/libsvn_subr/priority-queue-test$(EXEEXT)
+pristine-store-test: subversion/tests/libsvn_wc/pristine-store-test$(EXEEXT)
+python_client: subversion/bindings/swig/python/_client.la
+python_core: subversion/bindings/swig/python/_core.la
+python_delta: subversion/bindings/swig/python/_delta.la
+python_diff: subversion/bindings/swig/python/_diff.la
+python_fs: subversion/bindings/swig/python/_fs.la
+python_ra: subversion/bindings/swig/python/_ra.la
+python_repos: subversion/bindings/swig/python/_repos.la
+python_wc: subversion/bindings/swig/python/_wc.la
+ra-local-test: subversion/tests/libsvn_ra_local/ra-local-test$(EXEEXT)
+ra-test: subversion/tests/libsvn_ra/ra-test$(EXEEXT)
+random-test: subversion/tests/libsvn_delta/random-test$(EXEEXT)
+repos-test: subversion/tests/libsvn_repos/repos-test$(EXEEXT)
+revision-test: subversion/tests/libsvn_subr/revision-test$(EXEEXT)
+root-pools-test: subversion/tests/libsvn_subr/root-pools-test$(EXEEXT)
+ruby_client: subversion/bindings/swig/ruby/client.la
+ruby_core: subversion/bindings/swig/ruby/core.la
+ruby_delta: subversion/bindings/swig/ruby/delta.la
+ruby_diff: subversion/bindings/swig/ruby/diff.la
+ruby_fs: subversion/bindings/swig/ruby/fs.la
+ruby_ra: subversion/bindings/swig/ruby/ra.la
+ruby_repos: subversion/bindings/swig/ruby/repos.la
+ruby_wc: subversion/bindings/swig/ruby/wc.la
+skel-test: subversion/tests/libsvn_subr/skel-test$(EXEEXT)
+spillbuf-test: subversion/tests/libsvn_subr/spillbuf-test$(EXEEXT)
+sqlite-test: subversion/tests/libsvn_subr/sqlite-test$(EXEEXT)
+stream-test: subversion/tests/libsvn_subr/stream-test$(EXEEXT)
+string-table-test: subversion/tests/libsvn_fs_x/string-table-test$(EXEEXT)
+string-test: subversion/tests/libsvn_subr/string-test$(EXEEXT)
+strings-reps-test: subversion/tests/libsvn_fs_base/strings-reps-test$(EXEEXT)
+subst_translate-test: subversion/tests/libsvn_subr/subst_translate-test$(EXEEXT)
+svn: subversion/svn/svn$(EXEEXT)
+svn-mergeinfo-normalizer: tools/client-side/svn-mergeinfo-normalizer/svn-mergeinfo-normalizer$(EXEEXT)
+svn-populate-node-origins-index: tools/server-side/svn-populate-node-origins-index$(EXEEXT)
+svn-wc-db-tester: tools/dev/wc-ng/svn-wc-db-tester$(EXEEXT)
+svnadmin: subversion/svnadmin/svnadmin$(EXEEXT)
+svnauthz: tools/server-side/svnauthz$(EXEEXT)
+svnauthz-validate: tools/server-side/svnauthz-validate$(EXEEXT)
+svnbench: subversion/svnbench/svnbench$(EXEEXT)
+svnconflict: tools/client-side/svnconflict/svnconflict$(EXEEXT)
+svndiff-stream-test: subversion/tests/libsvn_delta/svndiff-stream-test$(EXEEXT)
+svndiff-test: subversion/tests/libsvn_delta/svndiff-test$(EXEEXT)
+svndumpfilter: subversion/svndumpfilter/svndumpfilter$(EXEEXT)
+svnfsfs: subversion/svnfsfs/svnfsfs$(EXEEXT)
+svnlook: subversion/svnlook/svnlook$(EXEEXT)
+svnmover: tools/dev/svnmover/svnmover$(EXEEXT)
+svnmucc: subversion/svnmucc/svnmucc$(EXEEXT)
+svnraisetreeconflict: tools/dev/svnraisetreeconflict/svnraisetreeconflict$(EXEEXT)
+svnrdump: subversion/svnrdump/svnrdump$(EXEEXT)
+svnserve: subversion/svnserve/svnserve$(EXEEXT)
+svnsync: subversion/svnsync/svnsync$(EXEEXT)
+svnversion: subversion/svnversion/svnversion$(EXEEXT)
+time-test: subversion/tests/libsvn_subr/time-test$(EXEEXT)
+translate-test: subversion/tests/libsvn_subr/translate-test$(EXEEXT)
+utf-test: subversion/tests/libsvn_subr/utf-test$(EXEEXT)
+vdelta-test: subversion/tests/libsvn_delta/vdelta-test$(EXEEXT)
+wc-incomplete-tester: subversion/tests/libsvn_wc/wc-incomplete-tester$(EXEEXT)
+wc-lock-tester: subversion/tests/libsvn_wc/wc-lock-tester$(EXEEXT)
+wc-queries-test: subversion/tests/libsvn_wc/wc-queries-test$(EXEEXT)
+wc-test: subversion/tests/libsvn_wc/wc-test$(EXEEXT)
+window-test: subversion/tests/libsvn_delta/window-test$(EXEEXT)
+x509-parser: tools/dev/x509-parser$(EXEEXT)
+x509-test: subversion/tests/libsvn_subr/x509-test$(EXEEXT)
+xml-test: subversion/tests/libsvn_subr/xml-test$(EXEEXT)
+
+########################################
+# Section 10: Rules to build all other kinds of object-like files
+########################################
+
+subversion/bindings/cxxhl/src/aprwrap/impl.lo: subversion/bindings/cxxhl/src/aprwrap/impl.cpp subversion/bindings/cxxhl/include/svncxxhl/_compat.hpp subversion/bindings/cxxhl/include/svncxxhl/exception.hpp subversion/bindings/cxxhl/src/aprwrap/hash.hpp subversion/bindings/cxxhl/src/aprwrap/pool.hpp subversion/include/private/svn_atomic.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_pools.h subversion/include/svn_types.h subversion/svn_private_config.h
+ $(COMPILE_CXXHL_CXX) $(canonicalized_srcdir)subversion/bindings/cxxhl/src/aprwrap/impl.cpp
+
+subversion/bindings/cxxhl/src/exception.lo: subversion/bindings/cxxhl/src/exception.cpp subversion/bindings/cxxhl/include/svncxxhl/_compat.hpp subversion/bindings/cxxhl/include/svncxxhl/exception.hpp subversion/bindings/cxxhl/src/aprwrap.hpp subversion/bindings/cxxhl/src/aprwrap/array.hpp subversion/bindings/cxxhl/src/aprwrap/hash.hpp subversion/bindings/cxxhl/src/aprwrap/pool.hpp subversion/bindings/cxxhl/src/private.hpp subversion/bindings/cxxhl/src/private/exception-private.hpp subversion/include/private/svn_atomic.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_error_private.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_utf.h subversion/svn_private_config.h
+ $(COMPILE_CXXHL_CXX) $(canonicalized_srcdir)subversion/bindings/cxxhl/src/exception.cpp
+
+subversion/bindings/cxxhl/src/tristate.lo: subversion/bindings/cxxhl/src/tristate.cpp subversion/bindings/cxxhl/include/svncxxhl/tristate.hpp subversion/include/private/svn_debug.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_types.h
+ $(COMPILE_CXXHL_CXX) $(canonicalized_srcdir)subversion/bindings/cxxhl/src/tristate.cpp
+
+subversion/bindings/cxxhl/tests/cxxhl-tests.lo: subversion/bindings/cxxhl/tests/cxxhl-tests.cpp
+ if $(SVN_USE_GOOGLEMOCK) ; then $(COMPILE_CXXHL_GOOGLEMOCK_CXX) $(canonicalized_srcdir)subversion/bindings/cxxhl/tests/cxxhl-tests.cpp ; else echo "fake" > subversion/bindings/cxxhl/tests/cxxhl-tests.lo ; fi
+
+subversion/bindings/cxxhl/tests/test_aprwrap.lo: subversion/bindings/cxxhl/tests/test_aprwrap.cpp subversion/bindings/cxxhl/include/svncxxhl/_compat.hpp subversion/bindings/cxxhl/include/svncxxhl/exception.hpp subversion/bindings/cxxhl/src/aprwrap.hpp subversion/bindings/cxxhl/src/aprwrap/array.hpp subversion/bindings/cxxhl/src/aprwrap/hash.hpp subversion/bindings/cxxhl/src/aprwrap/pool.hpp subversion/include/private/svn_debug.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_pools.h subversion/include/svn_types.h subversion/svn_private_config.h
+ if $(SVN_USE_GOOGLEMOCK) ; then $(COMPILE_CXXHL_GOOGLEMOCK_CXX) $(canonicalized_srcdir)subversion/bindings/cxxhl/tests/test_aprwrap.cpp ; else echo "fake" > subversion/bindings/cxxhl/tests/test_aprwrap.lo ; fi
+
+subversion/bindings/cxxhl/tests/test_exception.lo: subversion/bindings/cxxhl/tests/test_exception.cpp subversion/bindings/cxxhl/include/svncxxhl.hpp subversion/bindings/cxxhl/include/svncxxhl/_compat.hpp subversion/bindings/cxxhl/include/svncxxhl/exception.hpp subversion/bindings/cxxhl/include/svncxxhl/tristate.hpp subversion/bindings/cxxhl/src/private.hpp subversion/bindings/cxxhl/src/private/exception-private.hpp subversion/include/private/svn_debug.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_types.h
+ if $(SVN_USE_GOOGLEMOCK) ; then $(COMPILE_CXXHL_GOOGLEMOCK_CXX) $(canonicalized_srcdir)subversion/bindings/cxxhl/tests/test_exception.cpp ; else echo "fake" > subversion/bindings/cxxhl/tests/test_exception.lo ; fi
+
+subversion/bindings/javahl/classes/org/apache/subversion/javahl/BasicTests.class: subversion/bindings/javahl/tests/org/apache/subversion/javahl/BasicTests.java
+
+subversion/bindings/javahl/classes/org/apache/subversion/javahl/ClientException.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/ClientException.java
+
+subversion/bindings/javahl/classes/org/apache/subversion/javahl/ClientNotifyInformation.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/ClientNotifyInformation.java
+
+subversion/bindings/javahl/classes/org/apache/subversion/javahl/CommitInfo.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/CommitInfo.java
+
+subversion/bindings/javahl/classes/org/apache/subversion/javahl/CommitItem.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/CommitItem.java
+
+subversion/bindings/javahl/classes/org/apache/subversion/javahl/CommitItemStateFlags.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/CommitItemStateFlags.java
+
+subversion/bindings/javahl/classes/org/apache/subversion/javahl/ConflictDescriptor.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/ConflictDescriptor.java
+
+subversion/bindings/javahl/classes/org/apache/subversion/javahl/ConflictResult.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/ConflictResult.java
+
+subversion/bindings/javahl/classes/org/apache/subversion/javahl/DiffSummary.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/DiffSummary.java
+
+subversion/bindings/javahl/classes/org/apache/subversion/javahl/ExceptionTests.class: subversion/bindings/javahl/tests/org/apache/subversion/javahl/ExceptionTests.java
+
+subversion/bindings/javahl/classes/org/apache/subversion/javahl/ISVNClient.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNClient.java
+
+subversion/bindings/javahl/classes/org/apache/subversion/javahl/ISVNConfig.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNConfig.java
+
+subversion/bindings/javahl/classes/org/apache/subversion/javahl/ISVNEditor.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNEditor.java
+
+subversion/bindings/javahl/classes/org/apache/subversion/javahl/ISVNRemote.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNRemote.java
+
+subversion/bindings/javahl/classes/org/apache/subversion/javahl/ISVNReporter.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNReporter.java
+
+subversion/bindings/javahl/classes/org/apache/subversion/javahl/ISVNRepos.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNRepos.java
+
+subversion/bindings/javahl/classes/org/apache/subversion/javahl/JNIError.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/JNIError.java
+
+subversion/bindings/javahl/classes/org/apache/subversion/javahl/JNIObject.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/JNIObject.java
+
+subversion/bindings/javahl/classes/org/apache/subversion/javahl/NativeException.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/NativeException.java
+
+subversion/bindings/javahl/classes/org/apache/subversion/javahl/NativeResources.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/NativeResources.java
+
+subversion/bindings/javahl/classes/org/apache/subversion/javahl/OperationContext.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/OperationContext.java
+
+subversion/bindings/javahl/classes/org/apache/subversion/javahl/ProgressEvent.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/ProgressEvent.java
+
+subversion/bindings/javahl/classes/org/apache/subversion/javahl/ReposNotifyInformation.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/ReposNotifyInformation.java
+
+subversion/bindings/javahl/classes/org/apache/subversion/javahl/RunTests.class: subversion/bindings/javahl/tests/org/apache/subversion/javahl/RunTests.java
+
+subversion/bindings/javahl/classes/org/apache/subversion/javahl/SVNClient.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/SVNClient.java
+
+subversion/bindings/javahl/classes/org/apache/subversion/javahl/SVNRemoteTests.class: subversion/bindings/javahl/tests/org/apache/subversion/javahl/SVNRemoteTests.java
+
+subversion/bindings/javahl/classes/org/apache/subversion/javahl/SVNRepos.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/SVNRepos.java
+
+subversion/bindings/javahl/classes/org/apache/subversion/javahl/SVNReposTests.class: subversion/bindings/javahl/tests/org/apache/subversion/javahl/SVNReposTests.java
+
+subversion/bindings/javahl/classes/org/apache/subversion/javahl/SVNTests.class: subversion/bindings/javahl/tests/org/apache/subversion/javahl/SVNTests.java
+
+subversion/bindings/javahl/classes/org/apache/subversion/javahl/SVNUtil.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/SVNUtil.java
+
+subversion/bindings/javahl/classes/org/apache/subversion/javahl/SubversionException.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/SubversionException.java
+
+subversion/bindings/javahl/classes/org/apache/subversion/javahl/UtilTests.class: subversion/bindings/javahl/tests/org/apache/subversion/javahl/UtilTests.java
+
+subversion/bindings/javahl/classes/org/apache/subversion/javahl/WC.class: subversion/bindings/javahl/tests/org/apache/subversion/javahl/WC.java
+
+subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/AuthnCallback.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/AuthnCallback.java
+
+subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/BlameCallback.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/BlameCallback.java
+
+subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/ChangelistCallback.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/ChangelistCallback.java
+
+subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/ClientNotifyCallback.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/ClientNotifyCallback.java
+
+subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/CommitCallback.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/CommitCallback.java
+
+subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/CommitMessageCallback.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/CommitMessageCallback.java
+
+subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/ConfigEvent.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/ConfigEvent.java
+
+subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/ConflictResolverCallback.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/ConflictResolverCallback.java
+
+subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/DiffSummaryCallback.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/DiffSummaryCallback.java
+
+subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/ImportFilterCallback.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/ImportFilterCallback.java
+
+subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/InfoCallback.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/InfoCallback.java
+
+subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/InheritedProplistCallback.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/InheritedProplistCallback.java
+
+subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/ListCallback.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/ListCallback.java
+
+subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/ListItemCallback.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/ListItemCallback.java
+
+subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/LogMessageCallback.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/LogMessageCallback.java
+
+subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/PatchCallback.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/PatchCallback.java
+
+subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/ProgressCallback.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/ProgressCallback.java
+
+subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/ProplistCallback.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/ProplistCallback.java
+
+subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/RemoteFileRevisionsCallback.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/RemoteFileRevisionsCallback.java
+
+subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/RemoteLocationSegmentsCallback.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/RemoteLocationSegmentsCallback.java
+
+subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/RemoteStatus.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/RemoteStatus.java
+
+subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/ReposFreezeAction.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/ReposFreezeAction.java
+
+subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/ReposNotifyCallback.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/ReposNotifyCallback.java
+
+subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/ReposVerifyCallback.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/ReposVerifyCallback.java
+
+subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/StatusCallback.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/StatusCallback.java
+
+subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/TunnelAgent.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/TunnelAgent.java
+
+subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/UserPasswordCallback.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/UserPasswordCallback.java
+
+subversion/bindings/javahl/classes/org/apache/subversion/javahl/remote/CommitEditor.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/remote/CommitEditor.java
+
+subversion/bindings/javahl/classes/org/apache/subversion/javahl/remote/RemoteFactory.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/remote/RemoteFactory.java
+
+subversion/bindings/javahl/classes/org/apache/subversion/javahl/remote/RemoteSession.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/remote/RemoteSession.java
+
+subversion/bindings/javahl/classes/org/apache/subversion/javahl/remote/RetryOpenSession.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/remote/RetryOpenSession.java
+
+subversion/bindings/javahl/classes/org/apache/subversion/javahl/remote/StateReporter.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/remote/StateReporter.java
+
+subversion/bindings/javahl/classes/org/apache/subversion/javahl/remote/StatusEditor.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/remote/StatusEditor.java
+
+subversion/bindings/javahl/classes/org/apache/subversion/javahl/types/ChangePath.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/types/ChangePath.java
+
+subversion/bindings/javahl/classes/org/apache/subversion/javahl/types/Checksum.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/types/Checksum.java
+
+subversion/bindings/javahl/classes/org/apache/subversion/javahl/types/ConflictVersion.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/types/ConflictVersion.java
+
+subversion/bindings/javahl/classes/org/apache/subversion/javahl/types/CopySource.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/types/CopySource.java
+
+subversion/bindings/javahl/classes/org/apache/subversion/javahl/types/Depth.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/types/Depth.java
+
+subversion/bindings/javahl/classes/org/apache/subversion/javahl/types/DiffOptions.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/types/DiffOptions.java
+
+subversion/bindings/javahl/classes/org/apache/subversion/javahl/types/DirEntry.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/types/DirEntry.java
+
+subversion/bindings/javahl/classes/org/apache/subversion/javahl/types/ExternalItem.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/types/ExternalItem.java
+
+subversion/bindings/javahl/classes/org/apache/subversion/javahl/types/Info.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/types/Info.java
+
+subversion/bindings/javahl/classes/org/apache/subversion/javahl/types/Lock.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/types/Lock.java
+
+subversion/bindings/javahl/classes/org/apache/subversion/javahl/types/LogDate.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/types/LogDate.java
+
+subversion/bindings/javahl/classes/org/apache/subversion/javahl/types/Mergeinfo.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/types/Mergeinfo.java
+
+subversion/bindings/javahl/classes/org/apache/subversion/javahl/types/NativeInputStream.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/types/NativeInputStream.java
+
+subversion/bindings/javahl/classes/org/apache/subversion/javahl/types/NativeOutputStream.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/types/NativeOutputStream.java
+
+subversion/bindings/javahl/classes/org/apache/subversion/javahl/types/NodeKind.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/types/NodeKind.java
+
+subversion/bindings/javahl/classes/org/apache/subversion/javahl/types/Property.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/types/Property.java
+
+subversion/bindings/javahl/classes/org/apache/subversion/javahl/types/Revision.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/types/Revision.java
+
+subversion/bindings/javahl/classes/org/apache/subversion/javahl/types/RevisionRange.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/types/RevisionRange.java
+
+subversion/bindings/javahl/classes/org/apache/subversion/javahl/types/RevisionRangeList.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/types/RevisionRangeList.java
+
+subversion/bindings/javahl/classes/org/apache/subversion/javahl/types/RuntimeVersion.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/types/RuntimeVersion.java
+
+subversion/bindings/javahl/classes/org/apache/subversion/javahl/types/Status.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/types/Status.java
+
+subversion/bindings/javahl/classes/org/apache/subversion/javahl/types/Tristate.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/types/Tristate.java
+
+subversion/bindings/javahl/classes/org/apache/subversion/javahl/types/Version.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/types/Version.java
+
+subversion/bindings/javahl/classes/org/apache/subversion/javahl/types/VersionExtended.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/types/VersionExtended.java
+
+subversion/bindings/javahl/classes/org/apache/subversion/javahl/util/ConfigImpl.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/util/ConfigImpl.java
+
+subversion/bindings/javahl/classes/org/apache/subversion/javahl/util/ConfigLib.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/util/ConfigLib.java
+
+subversion/bindings/javahl/classes/org/apache/subversion/javahl/util/DiffLib.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/util/DiffLib.java
+
+subversion/bindings/javahl/classes/org/apache/subversion/javahl/util/PropLib.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/util/PropLib.java
+
+subversion/bindings/javahl/classes/org/apache/subversion/javahl/util/RequestChannel.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/util/RequestChannel.java
+
+subversion/bindings/javahl/classes/org/apache/subversion/javahl/util/ResponseChannel.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/util/ResponseChannel.java
+
+subversion/bindings/javahl/classes/org/apache/subversion/javahl/util/SubstLib.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/util/SubstLib.java
+
+subversion/bindings/javahl/classes/org/apache/subversion/javahl/util/TunnelChannel.class: subversion/bindings/javahl/src/org/apache/subversion/javahl/util/TunnelChannel.java
+
+subversion/bindings/javahl/classes/org/tigris/subversion/javahl/BasicTests.class: subversion/bindings/javahl/tests/org/tigris/subversion/javahl/BasicTests.java
+
+subversion/bindings/javahl/classes/org/tigris/subversion/javahl/BlameCallback.class: subversion/bindings/javahl/src/org/tigris/subversion/javahl/BlameCallback.java
+
+subversion/bindings/javahl/classes/org/tigris/subversion/javahl/BlameCallback2.class: subversion/bindings/javahl/src/org/tigris/subversion/javahl/BlameCallback2.java
+
+subversion/bindings/javahl/classes/org/tigris/subversion/javahl/BlameCallback3.class: subversion/bindings/javahl/src/org/tigris/subversion/javahl/BlameCallback3.java
+
+subversion/bindings/javahl/classes/org/tigris/subversion/javahl/BlameCallbackImpl.class: subversion/bindings/javahl/src/org/tigris/subversion/javahl/BlameCallbackImpl.java
+
+subversion/bindings/javahl/classes/org/tigris/subversion/javahl/ChangePath.class: subversion/bindings/javahl/src/org/tigris/subversion/javahl/ChangePath.java
+
+subversion/bindings/javahl/classes/org/tigris/subversion/javahl/ChangelistCallback.class: subversion/bindings/javahl/src/org/tigris/subversion/javahl/ChangelistCallback.java
+
+subversion/bindings/javahl/classes/org/tigris/subversion/javahl/ClientException.class: subversion/bindings/javahl/src/org/tigris/subversion/javahl/ClientException.java
+
+subversion/bindings/javahl/classes/org/tigris/subversion/javahl/CommitItem.class: subversion/bindings/javahl/src/org/tigris/subversion/javahl/CommitItem.java
+
+subversion/bindings/javahl/classes/org/tigris/subversion/javahl/CommitItemStateFlags.class: subversion/bindings/javahl/src/org/tigris/subversion/javahl/CommitItemStateFlags.java
+
+subversion/bindings/javahl/classes/org/tigris/subversion/javahl/CommitMessage.class: subversion/bindings/javahl/src/org/tigris/subversion/javahl/CommitMessage.java
+
+subversion/bindings/javahl/classes/org/tigris/subversion/javahl/ConflictDescriptor.class: subversion/bindings/javahl/src/org/tigris/subversion/javahl/ConflictDescriptor.java
+
+subversion/bindings/javahl/classes/org/tigris/subversion/javahl/ConflictResolverCallback.class: subversion/bindings/javahl/src/org/tigris/subversion/javahl/ConflictResolverCallback.java
+
+subversion/bindings/javahl/classes/org/tigris/subversion/javahl/ConflictResult.class: subversion/bindings/javahl/src/org/tigris/subversion/javahl/ConflictResult.java
+
+subversion/bindings/javahl/classes/org/tigris/subversion/javahl/ConflictVersion.class: subversion/bindings/javahl/src/org/tigris/subversion/javahl/ConflictVersion.java
+
+subversion/bindings/javahl/classes/org/tigris/subversion/javahl/CopySource.class: subversion/bindings/javahl/src/org/tigris/subversion/javahl/CopySource.java
+
+subversion/bindings/javahl/classes/org/tigris/subversion/javahl/Depth.class: subversion/bindings/javahl/src/org/tigris/subversion/javahl/Depth.java
+
+subversion/bindings/javahl/classes/org/tigris/subversion/javahl/DiffSummary.class: subversion/bindings/javahl/src/org/tigris/subversion/javahl/DiffSummary.java
+
+subversion/bindings/javahl/classes/org/tigris/subversion/javahl/DiffSummaryReceiver.class: subversion/bindings/javahl/src/org/tigris/subversion/javahl/DiffSummaryReceiver.java
+
+subversion/bindings/javahl/classes/org/tigris/subversion/javahl/DirEntry.class: subversion/bindings/javahl/src/org/tigris/subversion/javahl/DirEntry.java
+
+subversion/bindings/javahl/classes/org/tigris/subversion/javahl/ErrorCodes.class: subversion/bindings/javahl/src/org/tigris/subversion/javahl/ErrorCodes.java
+
+subversion/bindings/javahl/classes/org/tigris/subversion/javahl/Info.class: subversion/bindings/javahl/src/org/tigris/subversion/javahl/Info.java
+
+subversion/bindings/javahl/classes/org/tigris/subversion/javahl/Info2.class: subversion/bindings/javahl/src/org/tigris/subversion/javahl/Info2.java
+
+subversion/bindings/javahl/classes/org/tigris/subversion/javahl/InfoCallback.class: subversion/bindings/javahl/src/org/tigris/subversion/javahl/InfoCallback.java
+
+subversion/bindings/javahl/classes/org/tigris/subversion/javahl/InputInterface.class: subversion/bindings/javahl/src/org/tigris/subversion/javahl/InputInterface.java
+
+subversion/bindings/javahl/classes/org/tigris/subversion/javahl/ListCallback.class: subversion/bindings/javahl/src/org/tigris/subversion/javahl/ListCallback.java
+
+subversion/bindings/javahl/classes/org/tigris/subversion/javahl/Lock.class: subversion/bindings/javahl/src/org/tigris/subversion/javahl/Lock.java
+
+subversion/bindings/javahl/classes/org/tigris/subversion/javahl/LockStatus.class: subversion/bindings/javahl/src/org/tigris/subversion/javahl/LockStatus.java
+
+subversion/bindings/javahl/classes/org/tigris/subversion/javahl/LogDate.class: subversion/bindings/javahl/src/org/tigris/subversion/javahl/LogDate.java
+
+subversion/bindings/javahl/classes/org/tigris/subversion/javahl/LogMessage.class: subversion/bindings/javahl/src/org/tigris/subversion/javahl/LogMessage.java
+
+subversion/bindings/javahl/classes/org/tigris/subversion/javahl/LogMessageCallback.class: subversion/bindings/javahl/src/org/tigris/subversion/javahl/LogMessageCallback.java
+
+subversion/bindings/javahl/classes/org/tigris/subversion/javahl/Mergeinfo.class: subversion/bindings/javahl/src/org/tigris/subversion/javahl/Mergeinfo.java
+
+subversion/bindings/javahl/classes/org/tigris/subversion/javahl/MergeinfoLogKind.class: subversion/bindings/javahl/src/org/tigris/subversion/javahl/MergeinfoLogKind.java
+
+subversion/bindings/javahl/classes/org/tigris/subversion/javahl/NativeException.class: subversion/bindings/javahl/src/org/tigris/subversion/javahl/NativeException.java
+
+subversion/bindings/javahl/classes/org/tigris/subversion/javahl/NodeKind.class: subversion/bindings/javahl/src/org/tigris/subversion/javahl/NodeKind.java
+
+subversion/bindings/javahl/classes/org/tigris/subversion/javahl/Notify.class: subversion/bindings/javahl/src/org/tigris/subversion/javahl/Notify.java
+
+subversion/bindings/javahl/classes/org/tigris/subversion/javahl/Notify2.class: subversion/bindings/javahl/src/org/tigris/subversion/javahl/Notify2.java
+
+subversion/bindings/javahl/classes/org/tigris/subversion/javahl/NotifyAction.class: subversion/bindings/javahl/src/org/tigris/subversion/javahl/NotifyAction.java
+
+subversion/bindings/javahl/classes/org/tigris/subversion/javahl/NotifyInformation.class: subversion/bindings/javahl/src/org/tigris/subversion/javahl/NotifyInformation.java
+
+subversion/bindings/javahl/classes/org/tigris/subversion/javahl/NotifyStatus.class: subversion/bindings/javahl/src/org/tigris/subversion/javahl/NotifyStatus.java
+
+subversion/bindings/javahl/classes/org/tigris/subversion/javahl/Operation.class: subversion/bindings/javahl/src/org/tigris/subversion/javahl/Operation.java
+
+subversion/bindings/javahl/classes/org/tigris/subversion/javahl/OutputInterface.class: subversion/bindings/javahl/src/org/tigris/subversion/javahl/OutputInterface.java
+
+subversion/bindings/javahl/classes/org/tigris/subversion/javahl/Path.class: subversion/bindings/javahl/src/org/tigris/subversion/javahl/Path.java
+
+subversion/bindings/javahl/classes/org/tigris/subversion/javahl/ProgressEvent.class: subversion/bindings/javahl/src/org/tigris/subversion/javahl/ProgressEvent.java
+
+subversion/bindings/javahl/classes/org/tigris/subversion/javahl/ProgressListener.class: subversion/bindings/javahl/src/org/tigris/subversion/javahl/ProgressListener.java
+
+subversion/bindings/javahl/classes/org/tigris/subversion/javahl/PromptUserPassword.class: subversion/bindings/javahl/src/org/tigris/subversion/javahl/PromptUserPassword.java
+
+subversion/bindings/javahl/classes/org/tigris/subversion/javahl/PromptUserPassword2.class: subversion/bindings/javahl/src/org/tigris/subversion/javahl/PromptUserPassword2.java
+
+subversion/bindings/javahl/classes/org/tigris/subversion/javahl/PromptUserPassword3.class: subversion/bindings/javahl/src/org/tigris/subversion/javahl/PromptUserPassword3.java
+
+subversion/bindings/javahl/classes/org/tigris/subversion/javahl/PropertyData.class: subversion/bindings/javahl/src/org/tigris/subversion/javahl/PropertyData.java
+
+subversion/bindings/javahl/classes/org/tigris/subversion/javahl/ProplistCallback.class: subversion/bindings/javahl/src/org/tigris/subversion/javahl/ProplistCallback.java
+
+subversion/bindings/javahl/classes/org/tigris/subversion/javahl/ProplistCallbackImpl.class: subversion/bindings/javahl/src/org/tigris/subversion/javahl/ProplistCallbackImpl.java
+
+subversion/bindings/javahl/classes/org/tigris/subversion/javahl/Revision.class: subversion/bindings/javahl/src/org/tigris/subversion/javahl/Revision.java
+
+subversion/bindings/javahl/classes/org/tigris/subversion/javahl/RevisionKind.class: subversion/bindings/javahl/src/org/tigris/subversion/javahl/RevisionKind.java
+
+subversion/bindings/javahl/classes/org/tigris/subversion/javahl/RevisionRange.class: subversion/bindings/javahl/src/org/tigris/subversion/javahl/RevisionRange.java
+
+subversion/bindings/javahl/classes/org/tigris/subversion/javahl/RunTests.class: subversion/bindings/javahl/tests/org/tigris/subversion/javahl/RunTests.java
+
+subversion/bindings/javahl/classes/org/tigris/subversion/javahl/SVNAdmin.class: subversion/bindings/javahl/src/org/tigris/subversion/javahl/SVNAdmin.java
+
+subversion/bindings/javahl/classes/org/tigris/subversion/javahl/SVNAdminTests.class: subversion/bindings/javahl/tests/org/tigris/subversion/javahl/SVNAdminTests.java
+
+subversion/bindings/javahl/classes/org/tigris/subversion/javahl/SVNClient.class: subversion/bindings/javahl/src/org/tigris/subversion/javahl/SVNClient.java
+
+subversion/bindings/javahl/classes/org/tigris/subversion/javahl/SVNClientInterface.class: subversion/bindings/javahl/src/org/tigris/subversion/javahl/SVNClientInterface.java
+
+subversion/bindings/javahl/classes/org/tigris/subversion/javahl/SVNClientLogLevel.class: subversion/bindings/javahl/src/org/tigris/subversion/javahl/SVNClientLogLevel.java
+
+subversion/bindings/javahl/classes/org/tigris/subversion/javahl/SVNClientSynchronized.class: subversion/bindings/javahl/src/org/tigris/subversion/javahl/SVNClientSynchronized.java
+
+subversion/bindings/javahl/classes/org/tigris/subversion/javahl/SVNInputStream.class: subversion/bindings/javahl/src/org/tigris/subversion/javahl/SVNInputStream.java
+
+subversion/bindings/javahl/classes/org/tigris/subversion/javahl/SVNOutputStream.class: subversion/bindings/javahl/src/org/tigris/subversion/javahl/SVNOutputStream.java
+
+subversion/bindings/javahl/classes/org/tigris/subversion/javahl/SVNTests.class: subversion/bindings/javahl/tests/org/tigris/subversion/javahl/SVNTests.java
+
+subversion/bindings/javahl/classes/org/tigris/subversion/javahl/ScheduleKind.class: subversion/bindings/javahl/src/org/tigris/subversion/javahl/ScheduleKind.java
+
+subversion/bindings/javahl/classes/org/tigris/subversion/javahl/Status.class: subversion/bindings/javahl/src/org/tigris/subversion/javahl/Status.java
+
+subversion/bindings/javahl/classes/org/tigris/subversion/javahl/StatusCallback.class: subversion/bindings/javahl/src/org/tigris/subversion/javahl/StatusCallback.java
+
+subversion/bindings/javahl/classes/org/tigris/subversion/javahl/StatusKind.class: subversion/bindings/javahl/src/org/tigris/subversion/javahl/StatusKind.java
+
+subversion/bindings/javahl/classes/org/tigris/subversion/javahl/SubversionException.class: subversion/bindings/javahl/src/org/tigris/subversion/javahl/SubversionException.java
+
+subversion/bindings/javahl/classes/org/tigris/subversion/javahl/Version.class: subversion/bindings/javahl/src/org/tigris/subversion/javahl/Version.java
+
+subversion/bindings/javahl/classes/org/tigris/subversion/javahl/WC.class: subversion/bindings/javahl/tests/org/tigris/subversion/javahl/WC.java
+
+subversion/bindings/javahl/include/AuthnCallback.h: subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/AuthnCallback.class
+
+subversion/bindings/javahl/include/BlameCallback.h: subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/BlameCallback.class
+
+subversion/bindings/javahl/include/ChangePath.h: subversion/bindings/javahl/classes/org/apache/subversion/javahl/types/ChangePath.class
+
+subversion/bindings/javahl/include/ChangelistCallback.h: subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/ChangelistCallback.class
+
+subversion/bindings/javahl/include/Checksum.h: subversion/bindings/javahl/classes/org/apache/subversion/javahl/types/Checksum.class
+
+subversion/bindings/javahl/include/ClientException.h: subversion/bindings/javahl/classes/org/apache/subversion/javahl/ClientException.class
+
+subversion/bindings/javahl/include/ClientNotifyCallback.h: subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/ClientNotifyCallback.class
+
+subversion/bindings/javahl/include/ClientNotifyInformation.h: subversion/bindings/javahl/classes/org/apache/subversion/javahl/ClientNotifyInformation.class
+
+subversion/bindings/javahl/include/CommitCallback.h: subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/CommitCallback.class
+
+subversion/bindings/javahl/include/CommitEditor.h: subversion/bindings/javahl/classes/org/apache/subversion/javahl/remote/CommitEditor.class
+
+subversion/bindings/javahl/include/CommitInfo.h: subversion/bindings/javahl/classes/org/apache/subversion/javahl/CommitInfo.class
+
+subversion/bindings/javahl/include/CommitItem.h: subversion/bindings/javahl/classes/org/apache/subversion/javahl/CommitItem.class
+
+subversion/bindings/javahl/include/CommitItemStateFlags.h: subversion/bindings/javahl/classes/org/apache/subversion/javahl/CommitItemStateFlags.class
+
+subversion/bindings/javahl/include/CommitMessageCallback.h: subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/CommitMessageCallback.class
+
+subversion/bindings/javahl/include/ConfigEvent.h: subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/ConfigEvent.class
+
+subversion/bindings/javahl/include/ConfigImpl.h: subversion/bindings/javahl/classes/org/apache/subversion/javahl/util/ConfigImpl.class
+
+subversion/bindings/javahl/include/ConfigLib.h: subversion/bindings/javahl/classes/org/apache/subversion/javahl/util/ConfigLib.class
+
+subversion/bindings/javahl/include/ConflictDescriptor.h: subversion/bindings/javahl/classes/org/apache/subversion/javahl/ConflictDescriptor.class
+
+subversion/bindings/javahl/include/ConflictResolverCallback.h: subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/ConflictResolverCallback.class
+
+subversion/bindings/javahl/include/ConflictResult.h: subversion/bindings/javahl/classes/org/apache/subversion/javahl/ConflictResult.class
+
+subversion/bindings/javahl/include/ConflictVersion.h: subversion/bindings/javahl/classes/org/apache/subversion/javahl/types/ConflictVersion.class
+
+subversion/bindings/javahl/include/CopySource.h: subversion/bindings/javahl/classes/org/apache/subversion/javahl/types/CopySource.class
+
+subversion/bindings/javahl/include/Depth.h: subversion/bindings/javahl/classes/org/apache/subversion/javahl/types/Depth.class
+
+subversion/bindings/javahl/include/DiffLib.h: subversion/bindings/javahl/classes/org/apache/subversion/javahl/util/DiffLib.class
+
+subversion/bindings/javahl/include/DiffOptions.h: subversion/bindings/javahl/classes/org/apache/subversion/javahl/types/DiffOptions.class
+
+subversion/bindings/javahl/include/DiffSummary.h: subversion/bindings/javahl/classes/org/apache/subversion/javahl/DiffSummary.class
+
+subversion/bindings/javahl/include/DiffSummaryCallback.h: subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/DiffSummaryCallback.class
+
+subversion/bindings/javahl/include/DirEntry.h: subversion/bindings/javahl/classes/org/apache/subversion/javahl/types/DirEntry.class
+
+subversion/bindings/javahl/include/ExternalItem.h: subversion/bindings/javahl/classes/org/apache/subversion/javahl/types/ExternalItem.class
+
+subversion/bindings/javahl/include/ISVNClient.h: subversion/bindings/javahl/classes/org/apache/subversion/javahl/ISVNClient.class
+
+subversion/bindings/javahl/include/ISVNConfig.h: subversion/bindings/javahl/classes/org/apache/subversion/javahl/ISVNConfig.class
+
+subversion/bindings/javahl/include/ISVNEditor.h: subversion/bindings/javahl/classes/org/apache/subversion/javahl/ISVNEditor.class
+
+subversion/bindings/javahl/include/ISVNRemote.h: subversion/bindings/javahl/classes/org/apache/subversion/javahl/ISVNRemote.class
+
+subversion/bindings/javahl/include/ISVNReporter.h: subversion/bindings/javahl/classes/org/apache/subversion/javahl/ISVNReporter.class
+
+subversion/bindings/javahl/include/ISVNRepos.h: subversion/bindings/javahl/classes/org/apache/subversion/javahl/ISVNRepos.class
+
+subversion/bindings/javahl/include/ImportFilterCallback.h: subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/ImportFilterCallback.class
+
+subversion/bindings/javahl/include/Info.h: subversion/bindings/javahl/classes/org/apache/subversion/javahl/types/Info.class
+
+subversion/bindings/javahl/include/InfoCallback.h: subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/InfoCallback.class
+
+subversion/bindings/javahl/include/InheritedProplistCallback.h: subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/InheritedProplistCallback.class
+
+subversion/bindings/javahl/include/JNIError.h: subversion/bindings/javahl/classes/org/apache/subversion/javahl/JNIError.class
+
+subversion/bindings/javahl/include/JNIObject.h: subversion/bindings/javahl/classes/org/apache/subversion/javahl/JNIObject.class
+
+subversion/bindings/javahl/include/ListCallback.h: subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/ListCallback.class
+
+subversion/bindings/javahl/include/ListItemCallback.h: subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/ListItemCallback.class
+
+subversion/bindings/javahl/include/Lock.h: subversion/bindings/javahl/classes/org/apache/subversion/javahl/types/Lock.class
+
+subversion/bindings/javahl/include/LogDate.h: subversion/bindings/javahl/classes/org/apache/subversion/javahl/types/LogDate.class
+
+subversion/bindings/javahl/include/LogMessageCallback.h: subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/LogMessageCallback.class
+
+subversion/bindings/javahl/include/Mergeinfo.h: subversion/bindings/javahl/classes/org/apache/subversion/javahl/types/Mergeinfo.class
+
+subversion/bindings/javahl/include/NativeException.h: subversion/bindings/javahl/classes/org/apache/subversion/javahl/NativeException.class
+
+subversion/bindings/javahl/include/NativeInputStream.h: subversion/bindings/javahl/classes/org/apache/subversion/javahl/types/NativeInputStream.class
+
+subversion/bindings/javahl/include/NativeOutputStream.h: subversion/bindings/javahl/classes/org/apache/subversion/javahl/types/NativeOutputStream.class
+
+subversion/bindings/javahl/include/NativeResources.h: subversion/bindings/javahl/classes/org/apache/subversion/javahl/NativeResources.class
+
+subversion/bindings/javahl/include/NodeKind.h: subversion/bindings/javahl/classes/org/apache/subversion/javahl/types/NodeKind.class
+
+subversion/bindings/javahl/include/OperationContext.h: subversion/bindings/javahl/classes/org/apache/subversion/javahl/OperationContext.class
+
+subversion/bindings/javahl/include/PatchCallback.h: subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/PatchCallback.class
+
+subversion/bindings/javahl/include/ProgressCallback.h: subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/ProgressCallback.class
+
+subversion/bindings/javahl/include/ProgressEvent.h: subversion/bindings/javahl/classes/org/apache/subversion/javahl/ProgressEvent.class
+
+subversion/bindings/javahl/include/PropLib.h: subversion/bindings/javahl/classes/org/apache/subversion/javahl/util/PropLib.class
+
+subversion/bindings/javahl/include/Property.h: subversion/bindings/javahl/classes/org/apache/subversion/javahl/types/Property.class
+
+subversion/bindings/javahl/include/ProplistCallback.h: subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/ProplistCallback.class
+
+subversion/bindings/javahl/include/RemoteFactory.h: subversion/bindings/javahl/classes/org/apache/subversion/javahl/remote/RemoteFactory.class
+
+subversion/bindings/javahl/include/RemoteFileRevisionsCallback.h: subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/RemoteFileRevisionsCallback.class
+
+subversion/bindings/javahl/include/RemoteLocationSegmentsCallback.h: subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/RemoteLocationSegmentsCallback.class
+
+subversion/bindings/javahl/include/RemoteSession.h: subversion/bindings/javahl/classes/org/apache/subversion/javahl/remote/RemoteSession.class
+
+subversion/bindings/javahl/include/RemoteStatus.h: subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/RemoteStatus.class
+
+subversion/bindings/javahl/include/ReposFreezeAction.h: subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/ReposFreezeAction.class
+
+subversion/bindings/javahl/include/ReposNotifyCallback.h: subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/ReposNotifyCallback.class
+
+subversion/bindings/javahl/include/ReposNotifyInformation.h: subversion/bindings/javahl/classes/org/apache/subversion/javahl/ReposNotifyInformation.class
+
+subversion/bindings/javahl/include/ReposVerifyCallback.h: subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/ReposVerifyCallback.class
+
+subversion/bindings/javahl/include/RequestChannel.h: subversion/bindings/javahl/classes/org/apache/subversion/javahl/util/RequestChannel.class
+
+subversion/bindings/javahl/include/ResponseChannel.h: subversion/bindings/javahl/classes/org/apache/subversion/javahl/util/ResponseChannel.class
+
+subversion/bindings/javahl/include/RetryOpenSession.h: subversion/bindings/javahl/classes/org/apache/subversion/javahl/remote/RetryOpenSession.class
+
+subversion/bindings/javahl/include/Revision.h: subversion/bindings/javahl/classes/org/apache/subversion/javahl/types/Revision.class
+
+subversion/bindings/javahl/include/RevisionRange.h: subversion/bindings/javahl/classes/org/apache/subversion/javahl/types/RevisionRange.class
+
+subversion/bindings/javahl/include/RevisionRangeList.h: subversion/bindings/javahl/classes/org/apache/subversion/javahl/types/RevisionRangeList.class
+
+subversion/bindings/javahl/include/RuntimeVersion.h: subversion/bindings/javahl/classes/org/apache/subversion/javahl/types/RuntimeVersion.class
+
+subversion/bindings/javahl/include/SVNClient.h: subversion/bindings/javahl/classes/org/apache/subversion/javahl/SVNClient.class
+
+subversion/bindings/javahl/include/SVNRepos.h: subversion/bindings/javahl/classes/org/apache/subversion/javahl/SVNRepos.class
+
+subversion/bindings/javahl/include/SVNUtil.h: subversion/bindings/javahl/classes/org/apache/subversion/javahl/SVNUtil.class
+
+subversion/bindings/javahl/include/StateReporter.h: subversion/bindings/javahl/classes/org/apache/subversion/javahl/remote/StateReporter.class
+
+subversion/bindings/javahl/include/Status.h: subversion/bindings/javahl/classes/org/apache/subversion/javahl/types/Status.class
+
+subversion/bindings/javahl/include/StatusCallback.h: subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/StatusCallback.class
+
+subversion/bindings/javahl/include/StatusEditor.h: subversion/bindings/javahl/classes/org/apache/subversion/javahl/remote/StatusEditor.class
+
+subversion/bindings/javahl/include/SubstLib.h: subversion/bindings/javahl/classes/org/apache/subversion/javahl/util/SubstLib.class
+
+subversion/bindings/javahl/include/SubversionException.h: subversion/bindings/javahl/classes/org/apache/subversion/javahl/SubversionException.class
+
+subversion/bindings/javahl/include/Tristate.h: subversion/bindings/javahl/classes/org/apache/subversion/javahl/types/Tristate.class
+
+subversion/bindings/javahl/include/TunnelAgent.h: subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/TunnelAgent.class
+
+subversion/bindings/javahl/include/TunnelChannel.h: subversion/bindings/javahl/classes/org/apache/subversion/javahl/util/TunnelChannel.class
+
+subversion/bindings/javahl/include/UserPasswordCallback.h: subversion/bindings/javahl/classes/org/apache/subversion/javahl/callback/UserPasswordCallback.class
+
+subversion/bindings/javahl/include/Version.h: subversion/bindings/javahl/classes/org/apache/subversion/javahl/types/Version.class
+
+subversion/bindings/javahl/include/VersionExtended.h: subversion/bindings/javahl/classes/org/apache/subversion/javahl/types/VersionExtended.class
+
+subversion/bindings/javahl/native/Array.lo: subversion/bindings/javahl/native/Array.cpp subversion/bindings/javahl/native/Array.h subversion/bindings/javahl/native/JNIStringHolder.h subversion/bindings/javahl/native/JNIUtil.h subversion/bindings/javahl/native/Pool.h subversion/include/private/svn_debug.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_pools.h subversion/include/svn_types.h
+ $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/Array.cpp
+
+subversion/bindings/javahl/native/AuthnCallback.lo: subversion/bindings/javahl/native/AuthnCallback.cpp subversion/bindings/javahl/native/AuthnCallback.hpp subversion/bindings/javahl/native/JNIStackElement.h subversion/bindings/javahl/native/JNIUtil.h subversion/bindings/javahl/native/Pool.h subversion/bindings/javahl/native/jniwrapper/jni_array.hpp subversion/bindings/javahl/native/jniwrapper/jni_env.hpp subversion/bindings/javahl/native/jniwrapper/jni_exception.hpp subversion/bindings/javahl/native/jniwrapper/jni_globalref.hpp subversion/bindings/javahl/native/jniwrapper/jni_iterator.hpp subversion/bindings/javahl/native/jniwrapper/jni_list.hpp subversion/bindings/javahl/native/jniwrapper/jni_object.hpp subversion/bindings/javahl/native/jniwrapper/jni_stack.hpp subversion/bindings/javahl/native/jniwrapper/jni_string.hpp subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_base64.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_x509.h subversion/svn_private_config.h
+ $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/AuthnCallback.cpp
+
+subversion/bindings/javahl/native/BlameCallback.lo: subversion/bindings/javahl/native/BlameCallback.cpp subversion/bindings/javahl/native/BlameCallback.h subversion/bindings/javahl/native/CreateJ.h subversion/bindings/javahl/native/JNIUtil.h subversion/bindings/javahl/native/Pool.h subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_wc.h
+ $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/BlameCallback.cpp
+
+subversion/bindings/javahl/native/ChangelistCallback.lo: subversion/bindings/javahl/native/ChangelistCallback.cpp subversion/bindings/javahl/native/ChangelistCallback.h subversion/bindings/javahl/native/ClientContext.h subversion/bindings/javahl/native/JNIStringHolder.h subversion/bindings/javahl/native/JNIUtil.h subversion/bindings/javahl/native/OperationContext.h subversion/bindings/javahl/native/Path.h subversion/bindings/javahl/native/Pool.h subversion/bindings/javahl/native/SVNBase.h subversion/bindings/javahl/native/SVNClient.h subversion/include/private/svn_atomic.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_wc.h
+ $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/ChangelistCallback.cpp
+
+subversion/bindings/javahl/native/ClientContext.lo: subversion/bindings/javahl/native/ClientContext.cpp subversion/bindings/javahl/native/ClientContext.h subversion/bindings/javahl/native/CommitMessage.h subversion/bindings/javahl/native/CreateJ.h subversion/bindings/javahl/native/EnumMapper.h subversion/bindings/javahl/native/JNICriticalSection.h subversion/bindings/javahl/native/JNIStringHolder.h subversion/bindings/javahl/native/JNIUtil.h subversion/bindings/javahl/native/OperationContext.h subversion/bindings/javahl/native/Pool.h subversion/bindings/javahl/native/Prompter.h subversion/bindings/javahl/native/jniwrapper/jni_env.hpp subversion/bindings/javahl/native/jniwrapper/jni_globalref.hpp subversion/include/private/svn_atomic.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/svn_private_config.h
+ $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/ClientContext.cpp
+
+subversion/bindings/javahl/native/CommitCallback.lo: subversion/bindings/javahl/native/CommitCallback.cpp subversion/bindings/javahl/native/CommitCallback.h subversion/bindings/javahl/native/CreateJ.h subversion/bindings/javahl/native/EnumMapper.h subversion/bindings/javahl/native/JNIUtil.h subversion/bindings/javahl/native/Pool.h subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_compat.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_repos.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_wc.h
+ $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/CommitCallback.cpp
+
+subversion/bindings/javahl/native/CommitEditor.lo: subversion/bindings/javahl/native/CommitEditor.cpp subversion/bindings/javahl/native/CommitCallback.h subversion/bindings/javahl/native/CommitEditor.h subversion/bindings/javahl/native/EditorCallbacks.hpp subversion/bindings/javahl/native/EnumMapper.h subversion/bindings/javahl/native/InputStream.h subversion/bindings/javahl/native/Iterator.h subversion/bindings/javahl/native/JNIByteArray.h subversion/bindings/javahl/native/JNIStackElement.h subversion/bindings/javahl/native/JNIStringHolder.h subversion/bindings/javahl/native/JNIUtil.h subversion/bindings/javahl/native/LockTokenTable.h subversion/bindings/javahl/native/OperationContext.h subversion/bindings/javahl/native/Path.h subversion/bindings/javahl/native/Pool.h subversion/bindings/javahl/native/Prompter.h subversion/bindings/javahl/native/PropertyTable.h subversion/bindings/javahl/native/RemoteSession.h subversion/bindings/javahl/native/RemoteSessionContext.h subversion/bindings/javahl/native/SVNBase.h subversion/bindings/javahl/native/jniwrapper/jni_env.hpp subversion/bindings/javahl/native/jniwrapper/jni_exception.hpp subversion/bindings/javahl/native/jniwrapper/jni_globalref.hpp subversion/bindings/javahl/native/jniwrapper/jni_object.hpp subversion/bindings/javahl/native/jniwrapper/jni_stack.hpp subversion/bindings/javahl/native/jniwrapper/jni_string.hpp subversion/include/private/svn_atomic.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_editor.h subversion/include/private/svn_ra_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/svn_private_config.h
+ $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/CommitEditor.cpp
+
+subversion/bindings/javahl/native/CommitMessage.lo: subversion/bindings/javahl/native/CommitMessage.cpp subversion/bindings/javahl/native/CommitMessage.h subversion/bindings/javahl/native/CreateJ.h subversion/bindings/javahl/native/EnumMapper.h subversion/bindings/javahl/native/JNIStringHolder.h subversion/bindings/javahl/native/JNIUtil.h subversion/bindings/javahl/native/Pool.h subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_wc.h
+ $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/CommitMessage.cpp
+
+subversion/bindings/javahl/native/CopySources.lo: subversion/bindings/javahl/native/CopySources.cpp subversion/bindings/javahl/native/Array.h subversion/bindings/javahl/native/CopySources.h subversion/bindings/javahl/native/JNIStringHolder.h subversion/bindings/javahl/native/JNIUtil.h subversion/bindings/javahl/native/Pool.h subversion/bindings/javahl/native/Revision.h subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_wc.h
+ $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/CopySources.cpp
+
+subversion/bindings/javahl/native/CreateJ.lo: subversion/bindings/javahl/native/CreateJ.cpp subversion/bindings/javahl/include/org_apache_subversion_javahl_CommitItemStateFlags.h subversion/bindings/javahl/include/org_apache_subversion_javahl_types_Revision.h subversion/bindings/javahl/native/CreateJ.h subversion/bindings/javahl/native/EnumMapper.h subversion/bindings/javahl/native/JNIStringHolder.h subversion/bindings/javahl/native/JNIUtil.h subversion/bindings/javahl/native/Pool.h subversion/bindings/javahl/native/RevisionRange.h subversion/bindings/javahl/native/RevisionRangeList.h subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_wc.h
+ $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/CreateJ.cpp
+
+subversion/bindings/javahl/native/Credential.lo: subversion/bindings/javahl/native/Credential.cpp subversion/bindings/javahl/native/AuthnCallback.hpp subversion/bindings/javahl/native/Credential.hpp subversion/bindings/javahl/native/JNIUtil.h subversion/bindings/javahl/native/Pool.h subversion/bindings/javahl/native/jniwrapper/jni_env.hpp subversion/bindings/javahl/native/jniwrapper/jni_globalref.hpp subversion/bindings/javahl/native/jniwrapper/jni_object.hpp subversion/bindings/javahl/native/jniwrapper/jni_string.hpp subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h
+ $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/Credential.cpp
+
+subversion/bindings/javahl/native/DiffOptions.lo: subversion/bindings/javahl/native/DiffOptions.cpp subversion/bindings/javahl/native/DiffOptions.h subversion/bindings/javahl/native/JNIUtil.h subversion/bindings/javahl/native/Pool.h subversion/include/private/svn_debug.h subversion/include/svn_checksum.h subversion/include/svn_diff.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h
+ $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/DiffOptions.cpp
+
+subversion/bindings/javahl/native/DiffSummaryReceiver.lo: subversion/bindings/javahl/native/DiffSummaryReceiver.cpp subversion/bindings/javahl/native/DiffSummaryReceiver.h subversion/bindings/javahl/native/EnumMapper.h subversion/bindings/javahl/native/JNIUtil.h subversion/bindings/javahl/native/Pool.h subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_wc.h
+ $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/DiffSummaryReceiver.cpp
+
+subversion/bindings/javahl/native/EditorCallbacks.lo: subversion/bindings/javahl/native/EditorCallbacks.cpp subversion/bindings/javahl/native/EditorCallbacks.hpp subversion/bindings/javahl/native/JNIStackElement.h subversion/bindings/javahl/native/JNIUtil.h subversion/bindings/javahl/native/Pool.h subversion/bindings/javahl/native/Utility.hpp subversion/bindings/javahl/native/jniwrapper/jni_array.hpp subversion/bindings/javahl/native/jniwrapper/jni_env.hpp subversion/bindings/javahl/native/jniwrapper/jni_exception.hpp subversion/bindings/javahl/native/jniwrapper/jni_globalref.hpp subversion/bindings/javahl/native/jniwrapper/jni_io_stream.hpp subversion/bindings/javahl/native/jniwrapper/jni_object.hpp subversion/bindings/javahl/native/jniwrapper/jni_stack.hpp subversion/bindings/javahl/native/jniwrapper/jni_string.hpp subversion/include/private/svn_debug.h subversion/include/svn_checksum.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h
+ $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/EditorCallbacks.cpp
+
+subversion/bindings/javahl/native/EditorProxy.lo: subversion/bindings/javahl/native/EditorProxy.cpp subversion/bindings/javahl/native/CreateJ.h subversion/bindings/javahl/native/EditorProxy.h subversion/bindings/javahl/native/EnumMapper.h subversion/bindings/javahl/native/JNIStackElement.h subversion/bindings/javahl/native/JNIUtil.h subversion/bindings/javahl/native/NativeStream.hpp subversion/bindings/javahl/native/Pool.h subversion/bindings/javahl/native/SVNBase.h subversion/bindings/javahl/native/jniwrapper/jni_array.hpp subversion/bindings/javahl/native/jniwrapper/jni_env.hpp subversion/bindings/javahl/native/jniwrapper/jni_exception.hpp subversion/bindings/javahl/native/jniwrapper/jni_globalref.hpp subversion/bindings/javahl/native/jniwrapper/jni_object.hpp subversion/bindings/javahl/native/jniwrapper/jni_stack.hpp subversion/include/private/svn_debug.h subversion/include/private/svn_delta_private.h subversion/include/private/svn_editor.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/svn_private_config.h
+ $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/EditorProxy.cpp
+
+subversion/bindings/javahl/native/EnumMapper.lo: subversion/bindings/javahl/native/EnumMapper.cpp subversion/bindings/javahl/include/org_apache_subversion_javahl_CommitItemStateFlags.h subversion/bindings/javahl/native/EnumMapper.h subversion/bindings/javahl/native/JNIStringHolder.h subversion/bindings/javahl/native/JNIUtil.h subversion/bindings/javahl/native/Pool.h subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_wc.h
+ $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/EnumMapper.cpp
+
+subversion/bindings/javahl/native/ExternalItem.lo: subversion/bindings/javahl/native/ExternalItem.cpp subversion/bindings/javahl/native/ExternalItem.hpp subversion/bindings/javahl/native/JNIStackElement.h subversion/bindings/javahl/native/JNIUtil.h subversion/bindings/javahl/native/Pool.h subversion/bindings/javahl/native/Revision.h subversion/bindings/javahl/native/jniwrapper/jni_env.hpp subversion/bindings/javahl/native/jniwrapper/jni_exception.hpp subversion/bindings/javahl/native/jniwrapper/jni_globalref.hpp subversion/bindings/javahl/native/jniwrapper/jni_object.hpp subversion/bindings/javahl/native/jniwrapper/jni_stack.hpp subversion/bindings/javahl/native/jniwrapper/jni_string.hpp subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_wc.h
+ $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/ExternalItem.cpp
+
+subversion/bindings/javahl/native/File.lo: subversion/bindings/javahl/native/File.cpp subversion/bindings/javahl/native/File.h subversion/bindings/javahl/native/JNIByteArray.h subversion/bindings/javahl/native/JNIStringHolder.h subversion/bindings/javahl/native/JNIUtil.h subversion/bindings/javahl/native/Pool.h subversion/include/private/svn_debug.h subversion/include/svn_checksum.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h
+ $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/File.cpp
+
+subversion/bindings/javahl/native/ImportFilterCallback.lo: subversion/bindings/javahl/native/ImportFilterCallback.cpp subversion/bindings/javahl/native/CreateJ.h subversion/bindings/javahl/native/EnumMapper.h subversion/bindings/javahl/native/ImportFilterCallback.h subversion/bindings/javahl/native/JNIUtil.h subversion/bindings/javahl/native/Pool.h subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_wc.h
+ $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/ImportFilterCallback.cpp
+
+subversion/bindings/javahl/native/InfoCallback.lo: subversion/bindings/javahl/native/InfoCallback.cpp subversion/bindings/javahl/native/CreateJ.h subversion/bindings/javahl/native/EnumMapper.h subversion/bindings/javahl/native/InfoCallback.h subversion/bindings/javahl/native/JNIUtil.h subversion/bindings/javahl/native/Pool.h subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_wc.h
+ $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/InfoCallback.cpp
+
+subversion/bindings/javahl/native/InputStream.lo: subversion/bindings/javahl/native/InputStream.cpp subversion/bindings/javahl/native/InputStream.h subversion/bindings/javahl/native/JNIByteArray.h subversion/bindings/javahl/native/JNIUtil.h subversion/bindings/javahl/native/Pool.h subversion/include/private/svn_debug.h subversion/include/svn_checksum.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h
+ $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/InputStream.cpp
+
+subversion/bindings/javahl/native/Iterator.lo: subversion/bindings/javahl/native/Iterator.cpp subversion/bindings/javahl/native/Iterator.h subversion/bindings/javahl/native/JNIUtil.h subversion/bindings/javahl/native/Pool.h subversion/include/private/svn_debug.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_pools.h subversion/include/svn_types.h
+ $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/Iterator.cpp
+
+subversion/bindings/javahl/native/JNIByteArray.lo: subversion/bindings/javahl/native/JNIByteArray.cpp subversion/bindings/javahl/native/JNIByteArray.h subversion/bindings/javahl/native/JNIUtil.h subversion/bindings/javahl/native/Pool.h subversion/include/private/svn_debug.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_pools.h subversion/include/svn_types.h
+ $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/JNIByteArray.cpp
+
+subversion/bindings/javahl/native/JNICriticalSection.lo: subversion/bindings/javahl/native/JNICriticalSection.cpp subversion/bindings/javahl/native/JNICriticalSection.h subversion/bindings/javahl/native/JNIMutex.h subversion/bindings/javahl/native/JNIUtil.h subversion/bindings/javahl/native/Pool.h subversion/include/private/svn_debug.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_pools.h subversion/include/svn_types.h
+ $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/JNICriticalSection.cpp
+
+subversion/bindings/javahl/native/JNIMutex.lo: subversion/bindings/javahl/native/JNIMutex.cpp subversion/bindings/javahl/native/JNIMutex.h subversion/bindings/javahl/native/JNIUtil.h subversion/bindings/javahl/native/Pool.h subversion/include/private/svn_debug.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_pools.h subversion/include/svn_types.h
+ $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/JNIMutex.cpp
+
+subversion/bindings/javahl/native/JNIStackElement.lo: subversion/bindings/javahl/native/JNIStackElement.cpp subversion/bindings/javahl/native/JNIStackElement.h subversion/bindings/javahl/native/JNIStringHolder.h subversion/bindings/javahl/native/JNIUtil.h subversion/bindings/javahl/native/Pool.h subversion/include/private/svn_debug.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_pools.h subversion/include/svn_types.h
+ $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/JNIStackElement.cpp
+
+subversion/bindings/javahl/native/JNIStringHolder.lo: subversion/bindings/javahl/native/JNIStringHolder.cpp subversion/bindings/javahl/native/JNIStringHolder.h subversion/bindings/javahl/native/JNIUtil.h subversion/bindings/javahl/native/Pool.h subversion/include/private/svn_debug.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_pools.h subversion/include/svn_types.h
+ $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/JNIStringHolder.cpp
+
+subversion/bindings/javahl/native/JNIUtil.lo: subversion/bindings/javahl/native/JNIUtil.cpp subversion/bindings/javahl/native/Array.h subversion/bindings/javahl/native/JNICriticalSection.h subversion/bindings/javahl/native/JNIMutex.h subversion/bindings/javahl/native/JNIStringHolder.h subversion/bindings/javahl/native/JNIUtil.h subversion/bindings/javahl/native/Pool.h subversion/bindings/javahl/native/SVNBase.h subversion/bindings/javahl/native/jniwrapper/jni_env.hpp subversion/include/private/svn_atomic.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_string_private.h subversion/include/private/svn_utf_private.h subversion/include/svn_auth.h subversion/include/svn_cache_config.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_dso.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_utf.h subversion/include/svn_wc.h subversion/svn_private_config.h
+ $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/JNIUtil.cpp
+
+subversion/bindings/javahl/native/ListCallback.lo: subversion/bindings/javahl/native/ListCallback.cpp subversion/bindings/javahl/native/CreateJ.h subversion/bindings/javahl/native/EnumMapper.h subversion/bindings/javahl/native/JNIUtil.h subversion/bindings/javahl/native/ListCallback.h subversion/bindings/javahl/native/Pool.h subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_wc.h
+ $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/ListCallback.cpp
+
+subversion/bindings/javahl/native/LockTokenTable.lo: subversion/bindings/javahl/native/LockTokenTable.cpp subversion/bindings/javahl/native/Array.h subversion/bindings/javahl/native/JNIStringHolder.h subversion/bindings/javahl/native/JNIUtil.h subversion/bindings/javahl/native/LockTokenTable.h subversion/bindings/javahl/native/Pool.h subversion/include/private/svn_debug.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_pools.h subversion/include/svn_types.h
+ $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/LockTokenTable.cpp
+
+subversion/bindings/javahl/native/LogMessageCallback.lo: subversion/bindings/javahl/native/LogMessageCallback.cpp subversion/bindings/javahl/native/CreateJ.h subversion/bindings/javahl/native/EnumMapper.h subversion/bindings/javahl/native/JNIUtil.h subversion/bindings/javahl/native/LogMessageCallback.h subversion/bindings/javahl/native/Pool.h subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_compat.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_repos.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_wc.h
+ $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/LogMessageCallback.cpp
+
+subversion/bindings/javahl/native/MessageReceiver.lo: subversion/bindings/javahl/native/MessageReceiver.cpp subversion/bindings/javahl/native/JNIUtil.h subversion/bindings/javahl/native/MessageReceiver.h subversion/bindings/javahl/native/Pool.h subversion/include/private/svn_debug.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_pools.h subversion/include/svn_types.h
+ $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/MessageReceiver.cpp
+
+subversion/bindings/javahl/native/NativeStream.lo: subversion/bindings/javahl/native/NativeStream.cpp subversion/bindings/javahl/include/org_apache_subversion_javahl_types_NativeInputStream.h subversion/bindings/javahl/include/org_apache_subversion_javahl_types_NativeOutputStream.h subversion/bindings/javahl/native/JNIStackElement.h subversion/bindings/javahl/native/JNIUtil.h subversion/bindings/javahl/native/NativeStream.hpp subversion/bindings/javahl/native/Pool.h subversion/bindings/javahl/native/SVNBase.h subversion/bindings/javahl/native/jniwrapper/jni_array.hpp subversion/bindings/javahl/native/jniwrapper/jni_env.hpp subversion/bindings/javahl/native/jniwrapper/jni_exception.hpp subversion/bindings/javahl/native/jniwrapper/jni_globalref.hpp subversion/bindings/javahl/native/jniwrapper/jni_object.hpp subversion/bindings/javahl/native/jniwrapper/jni_stack.hpp subversion/include/private/svn_debug.h subversion/include/svn_checksum.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/svn_private_config.h
+ $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/NativeStream.cpp
+
+subversion/bindings/javahl/native/OperationContext.lo: subversion/bindings/javahl/native/OperationContext.cpp subversion/bindings/javahl/native/CommitMessage.h subversion/bindings/javahl/native/CreateJ.h subversion/bindings/javahl/native/EnumMapper.h subversion/bindings/javahl/native/GlobalConfig.h subversion/bindings/javahl/native/JNICriticalSection.h subversion/bindings/javahl/native/JNIStringHolder.h subversion/bindings/javahl/native/JNIUtil.h subversion/bindings/javahl/native/OperationContext.h subversion/bindings/javahl/native/Pool.h subversion/bindings/javahl/native/Prompter.h subversion/bindings/javahl/native/jniwrapper/jni_env.hpp subversion/bindings/javahl/native/jniwrapper/jni_globalref.hpp subversion/include/private/svn_atomic.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/svn_private_config.h
+ $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/OperationContext.cpp
+
+subversion/bindings/javahl/native/OutputStream.lo: subversion/bindings/javahl/native/OutputStream.cpp subversion/bindings/javahl/native/JNIByteArray.h subversion/bindings/javahl/native/JNIUtil.h subversion/bindings/javahl/native/OutputStream.h subversion/bindings/javahl/native/Pool.h subversion/include/private/svn_debug.h subversion/include/svn_checksum.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h
+ $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/OutputStream.cpp
+
+subversion/bindings/javahl/native/PatchCallback.lo: subversion/bindings/javahl/native/PatchCallback.cpp subversion/bindings/javahl/native/CreateJ.h subversion/bindings/javahl/native/EnumMapper.h subversion/bindings/javahl/native/JNIUtil.h subversion/bindings/javahl/native/PatchCallback.h subversion/bindings/javahl/native/Pool.h subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_wc.h
+ $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/PatchCallback.cpp
+
+subversion/bindings/javahl/native/Path.lo: subversion/bindings/javahl/native/Path.cpp subversion/bindings/javahl/native/JNIStringHolder.h subversion/bindings/javahl/native/JNIUtil.h subversion/bindings/javahl/native/Path.h subversion/bindings/javahl/native/Pool.h subversion/include/private/svn_debug.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/svn_private_config.h
+ $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/Path.cpp
+
+subversion/bindings/javahl/native/Pool.lo: subversion/bindings/javahl/native/Pool.cpp subversion/bindings/javahl/native/JNICriticalSection.h subversion/bindings/javahl/native/JNIMutex.h subversion/bindings/javahl/native/JNIUtil.h subversion/bindings/javahl/native/Pool.h subversion/include/private/svn_debug.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_pools.h subversion/include/svn_types.h
+ $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/Pool.cpp
+
+subversion/bindings/javahl/native/Prompter.lo: subversion/bindings/javahl/native/Prompter.cpp subversion/bindings/javahl/include/org_apache_subversion_javahl_callback_UserPasswordCallback.h subversion/bindings/javahl/native/AuthnCallback.hpp subversion/bindings/javahl/native/JNIStackElement.h subversion/bindings/javahl/native/JNIStringHolder.h subversion/bindings/javahl/native/JNIUtil.h subversion/bindings/javahl/native/Pool.h subversion/bindings/javahl/native/Prompter.h subversion/bindings/javahl/native/jniwrapper/jni_env.hpp subversion/bindings/javahl/native/jniwrapper/jni_exception.hpp subversion/bindings/javahl/native/jniwrapper/jni_globalref.hpp subversion/bindings/javahl/native/jniwrapper/jni_object.hpp subversion/bindings/javahl/native/jniwrapper/jni_stack.hpp subversion/bindings/javahl/native/jniwrapper/jni_string.hpp subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/svn_private_config.h
+ $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/Prompter.cpp
+
+subversion/bindings/javahl/native/PropertyTable.lo: subversion/bindings/javahl/native/PropertyTable.cpp subversion/bindings/javahl/native/Array.h subversion/bindings/javahl/native/JNIByteArray.h subversion/bindings/javahl/native/JNIStringHolder.h subversion/bindings/javahl/native/JNIUtil.h subversion/bindings/javahl/native/Path.h subversion/bindings/javahl/native/Pool.h subversion/bindings/javahl/native/PropertyTable.h subversion/include/private/svn_debug.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_string.h subversion/include/svn_types.h
+ $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/PropertyTable.cpp
+
+subversion/bindings/javahl/native/ProplistCallback.lo: subversion/bindings/javahl/native/ProplistCallback.cpp subversion/bindings/javahl/native/CreateJ.h subversion/bindings/javahl/native/JNIUtil.h subversion/bindings/javahl/native/Pool.h subversion/bindings/javahl/native/ProplistCallback.h subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_wc.h
+ $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/ProplistCallback.cpp
+
+subversion/bindings/javahl/native/RemoteSession.lo: subversion/bindings/javahl/native/RemoteSession.cpp subversion/bindings/javahl/native/CreateJ.h subversion/bindings/javahl/native/EditorProxy.h subversion/bindings/javahl/native/EnumMapper.h subversion/bindings/javahl/native/Iterator.h subversion/bindings/javahl/native/JNIByteArray.h subversion/bindings/javahl/native/JNIStringHolder.h subversion/bindings/javahl/native/JNIUtil.h subversion/bindings/javahl/native/LogMessageCallback.h subversion/bindings/javahl/native/OperationContext.h subversion/bindings/javahl/native/OutputStream.h subversion/bindings/javahl/native/Path.h subversion/bindings/javahl/native/Pool.h subversion/bindings/javahl/native/Prompter.h subversion/bindings/javahl/native/RemoteSession.h subversion/bindings/javahl/native/RemoteSessionContext.h subversion/bindings/javahl/native/Revision.h subversion/bindings/javahl/native/SVNBase.h subversion/bindings/javahl/native/StateReporter.h subversion/bindings/javahl/native/jniwrapper/jni_env.hpp subversion/bindings/javahl/native/jniwrapper/jni_globalref.hpp subversion/include/private/svn_atomic.h subversion/include/private/svn_debug.h subversion/include/private/svn_delta_private.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_editor.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/svn_private_config.h
+ $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/RemoteSession.cpp
+
+subversion/bindings/javahl/native/RemoteSessionContext.lo: subversion/bindings/javahl/native/RemoteSessionContext.cpp subversion/bindings/javahl/native/JNIStringHolder.h subversion/bindings/javahl/native/JNIUtil.h subversion/bindings/javahl/native/OperationContext.h subversion/bindings/javahl/native/Pool.h subversion/bindings/javahl/native/Prompter.h subversion/bindings/javahl/native/RemoteSessionContext.h subversion/bindings/javahl/native/jniwrapper/jni_env.hpp subversion/bindings/javahl/native/jniwrapper/jni_globalref.hpp subversion/include/private/svn_atomic.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_wc.h
+ $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/RemoteSessionContext.cpp
+
+subversion/bindings/javahl/native/ReposFreezeAction.lo: subversion/bindings/javahl/native/ReposFreezeAction.cpp subversion/bindings/javahl/native/JNIUtil.h subversion/bindings/javahl/native/Pool.h subversion/bindings/javahl/native/ReposFreezeAction.h subversion/include/private/svn_debug.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_pools.h subversion/include/svn_types.h
+ $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/ReposFreezeAction.cpp
+
+subversion/bindings/javahl/native/ReposNotifyCallback.lo: subversion/bindings/javahl/native/ReposNotifyCallback.cpp subversion/bindings/javahl/native/CreateJ.h subversion/bindings/javahl/native/EnumMapper.h subversion/bindings/javahl/native/JNIUtil.h subversion/bindings/javahl/native/Pool.h subversion/bindings/javahl/native/ReposNotifyCallback.h subversion/bindings/javahl/native/RevisionRange.h subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_wc.h
+ $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/ReposNotifyCallback.cpp
+
+subversion/bindings/javahl/native/ReposVerifyCallback.lo: subversion/bindings/javahl/native/ReposVerifyCallback.cpp subversion/bindings/javahl/native/JNIUtil.h subversion/bindings/javahl/native/Pool.h subversion/bindings/javahl/native/ReposVerifyCallback.h subversion/include/private/svn_debug.h subversion/include/svn_checksum.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h
+ $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/ReposVerifyCallback.cpp
+
+subversion/bindings/javahl/native/Revision.lo: subversion/bindings/javahl/native/Revision.cpp subversion/bindings/javahl/native/EnumMapper.h subversion/bindings/javahl/native/JNIUtil.h subversion/bindings/javahl/native/Pool.h subversion/bindings/javahl/native/Revision.h subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_wc.h
+ $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/Revision.cpp
+
+subversion/bindings/javahl/native/RevisionRange.lo: subversion/bindings/javahl/native/RevisionRange.cpp subversion/bindings/javahl/native/JNIUtil.h subversion/bindings/javahl/native/Pool.h subversion/bindings/javahl/native/Revision.h subversion/bindings/javahl/native/RevisionRange.h subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_wc.h
+ $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/RevisionRange.cpp
+
+subversion/bindings/javahl/native/RevisionRangeList.lo: subversion/bindings/javahl/native/RevisionRangeList.cpp subversion/bindings/javahl/native/Iterator.h subversion/bindings/javahl/native/JNIUtil.h subversion/bindings/javahl/native/Pool.h subversion/bindings/javahl/native/RevisionRange.h subversion/bindings/javahl/native/RevisionRangeList.h subversion/include/private/svn_debug.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h
+ $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/RevisionRangeList.cpp
+
+subversion/bindings/javahl/native/SVNBase.lo: subversion/bindings/javahl/native/SVNBase.cpp subversion/bindings/javahl/native/JNIUtil.h subversion/bindings/javahl/native/Pool.h subversion/bindings/javahl/native/SVNBase.h subversion/include/private/svn_debug.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_pools.h subversion/include/svn_types.h
+ $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/SVNBase.cpp
+
+subversion/bindings/javahl/native/SVNClient.lo: subversion/bindings/javahl/native/SVNClient.cpp subversion/bindings/javahl/native/Array.h subversion/bindings/javahl/native/BlameCallback.h subversion/bindings/javahl/native/ChangelistCallback.h subversion/bindings/javahl/native/ClientContext.h subversion/bindings/javahl/native/CommitCallback.h subversion/bindings/javahl/native/CommitMessage.h subversion/bindings/javahl/native/CopySources.h subversion/bindings/javahl/native/CreateJ.h subversion/bindings/javahl/native/DiffOptions.h subversion/bindings/javahl/native/DiffSummaryReceiver.h subversion/bindings/javahl/native/EnumMapper.h subversion/bindings/javahl/native/ExternalItem.hpp subversion/bindings/javahl/native/ImportFilterCallback.h subversion/bindings/javahl/native/InfoCallback.h subversion/bindings/javahl/native/JNIByteArray.h subversion/bindings/javahl/native/JNIStackElement.h subversion/bindings/javahl/native/JNIStringHolder.h subversion/bindings/javahl/native/JNIUtil.h subversion/bindings/javahl/native/ListCallback.h subversion/bindings/javahl/native/LogMessageCallback.h subversion/bindings/javahl/native/OperationContext.h subversion/bindings/javahl/native/OutputStream.h subversion/bindings/javahl/native/PatchCallback.h subversion/bindings/javahl/native/Path.h subversion/bindings/javahl/native/Pool.h subversion/bindings/javahl/native/Prompter.h subversion/bindings/javahl/native/PropertyTable.h subversion/bindings/javahl/native/ProplistCallback.h subversion/bindings/javahl/native/RemoteSession.h subversion/bindings/javahl/native/RemoteSessionContext.h subversion/bindings/javahl/native/Revision.h subversion/bindings/javahl/native/RevisionRange.h subversion/bindings/javahl/native/SVNBase.h subversion/bindings/javahl/native/SVNClient.h subversion/bindings/javahl/native/StatusCallback.h subversion/bindings/javahl/native/StringArray.h subversion/bindings/javahl/native/Targets.h subversion/bindings/javahl/native/VersionExtended.h subversion/bindings/javahl/native/jniwrapper/jni_env.hpp subversion/bindings/javahl/native/jniwrapper/jni_exception.hpp subversion/bindings/javahl/native/jniwrapper/jni_globalref.hpp subversion/bindings/javahl/native/jniwrapper/jni_iterator.hpp subversion/bindings/javahl/native/jniwrapper/jni_list.hpp subversion/bindings/javahl/native/jniwrapper/jni_object.hpp subversion/bindings/javahl/native/jniwrapper/jni_stack.hpp subversion/bindings/javahl/native/jniwrapper/jni_string.hpp subversion/bindings/javahl/native/jniwrapper/jni_string_map.hpp subversion/include/private/svn_atomic.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_subr_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_dso.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_repos.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_utf.h subversion/include/svn_version.h subversion/include/svn_wc.h subversion/svn_private_config.h
+ $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/SVNClient.cpp
+
+subversion/bindings/javahl/native/SVNRepos.lo: subversion/bindings/javahl/native/SVNRepos.cpp subversion/bindings/javahl/native/Array.h subversion/bindings/javahl/native/CreateJ.h subversion/bindings/javahl/native/File.h subversion/bindings/javahl/native/InputStream.h subversion/bindings/javahl/native/JNIStringHolder.h subversion/bindings/javahl/native/JNIUtil.h subversion/bindings/javahl/native/MessageReceiver.h subversion/bindings/javahl/native/OutputStream.h subversion/bindings/javahl/native/Pool.h subversion/bindings/javahl/native/ReposFreezeAction.h subversion/bindings/javahl/native/ReposNotifyCallback.h subversion/bindings/javahl/native/ReposVerifyCallback.h subversion/bindings/javahl/native/Revision.h subversion/bindings/javahl/native/SVNBase.h subversion/bindings/javahl/native/SVNRepos.h subversion/bindings/javahl/native/StringArray.h subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_utf.h subversion/include/svn_wc.h subversion/svn_private_config.h
+ $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/SVNRepos.cpp
+
+subversion/bindings/javahl/native/StateReporter.lo: subversion/bindings/javahl/native/StateReporter.cpp subversion/bindings/javahl/native/EditorProxy.h subversion/bindings/javahl/native/EnumMapper.h subversion/bindings/javahl/native/JNIStringHolder.h subversion/bindings/javahl/native/JNIUtil.h subversion/bindings/javahl/native/Path.h subversion/bindings/javahl/native/Pool.h subversion/bindings/javahl/native/SVNBase.h subversion/bindings/javahl/native/StateReporter.h subversion/include/private/svn_debug.h subversion/include/private/svn_delta_private.h subversion/include/private/svn_editor.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/svn_private_config.h
+ $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/StateReporter.cpp
+
+subversion/bindings/javahl/native/StatusCallback.lo: subversion/bindings/javahl/native/StatusCallback.cpp subversion/bindings/javahl/native/CreateJ.h subversion/bindings/javahl/native/EnumMapper.h subversion/bindings/javahl/native/JNIUtil.h subversion/bindings/javahl/native/Pool.h subversion/bindings/javahl/native/StatusCallback.h subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_wc.h
+ $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/StatusCallback.cpp
+
+subversion/bindings/javahl/native/StringArray.lo: subversion/bindings/javahl/native/StringArray.cpp subversion/bindings/javahl/native/Array.h subversion/bindings/javahl/native/JNIStringHolder.h subversion/bindings/javahl/native/JNIUtil.h subversion/bindings/javahl/native/Pool.h subversion/bindings/javahl/native/StringArray.h subversion/include/private/svn_debug.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h
+ $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/StringArray.cpp
+
+subversion/bindings/javahl/native/SubversionException.lo: subversion/bindings/javahl/native/SubversionException.cpp subversion/bindings/javahl/native/JNIUtil.h subversion/bindings/javahl/native/Pool.h subversion/bindings/javahl/native/SubversionException.hpp subversion/bindings/javahl/native/jniwrapper/jni_env.hpp subversion/bindings/javahl/native/jniwrapper/jni_exception.hpp subversion/bindings/javahl/native/jniwrapper/jni_globalref.hpp subversion/bindings/javahl/native/jniwrapper/jni_object.hpp subversion/include/private/svn_debug.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_pools.h subversion/include/svn_types.h
+ $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/SubversionException.cpp
+
+subversion/bindings/javahl/native/Targets.lo: subversion/bindings/javahl/native/Targets.cpp subversion/bindings/javahl/native/Array.h subversion/bindings/javahl/native/JNIStringHolder.h subversion/bindings/javahl/native/JNIUtil.h subversion/bindings/javahl/native/Path.h subversion/bindings/javahl/native/Pool.h subversion/bindings/javahl/native/StringArray.h subversion/bindings/javahl/native/Targets.h subversion/include/private/svn_debug.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h
+ $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/Targets.cpp
+
+subversion/bindings/javahl/native/Utility.lo: subversion/bindings/javahl/native/Utility.cpp subversion/bindings/javahl/native/Pool.h subversion/bindings/javahl/native/Utility.hpp subversion/bindings/javahl/native/jniwrapper/jni_array.hpp subversion/bindings/javahl/native/jniwrapper/jni_env.hpp subversion/bindings/javahl/native/jniwrapper/jni_globalref.hpp subversion/bindings/javahl/native/jniwrapper/jni_iterator.hpp subversion/bindings/javahl/native/jniwrapper/jni_object.hpp subversion/bindings/javahl/native/jniwrapper/jni_string.hpp subversion/bindings/javahl/native/jniwrapper/jni_string_map.hpp subversion/include/private/svn_debug.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h
+ $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/Utility.cpp
+
+subversion/bindings/javahl/native/VersionExtended.lo: subversion/bindings/javahl/native/VersionExtended.cpp subversion/bindings/javahl/native/JNIUtil.h subversion/bindings/javahl/native/Pool.h subversion/bindings/javahl/native/SVNBase.h subversion/bindings/javahl/native/VersionExtended.h subversion/include/private/svn_debug.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_pools.h subversion/include/svn_types.h subversion/include/svn_version.h
+ $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/VersionExtended.cpp
+
+subversion/bindings/javahl/native/deprecated.lo: subversion/bindings/javahl/native/deprecated.cpp subversion/bindings/javahl/native/ClientContext.h subversion/bindings/javahl/native/JNIStringHolder.h subversion/bindings/javahl/native/JNIUtil.h subversion/bindings/javahl/native/OperationContext.h subversion/bindings/javahl/native/Path.h subversion/bindings/javahl/native/Pool.h subversion/bindings/javahl/native/Revision.h subversion/bindings/javahl/native/SVNBase.h subversion/bindings/javahl/native/SVNClient.h subversion/include/private/svn_atomic.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_wc.h
+ $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/deprecated.cpp
+
+subversion/bindings/javahl/native/jniwrapper/jni_base.lo: subversion/bindings/javahl/native/jniwrapper/jni_base.cpp subversion/bindings/javahl/native/JNIStackElement.h subversion/bindings/javahl/native/JNIUtil.h subversion/bindings/javahl/native/Pool.h subversion/bindings/javahl/native/jniwrapper/jni_array.hpp subversion/bindings/javahl/native/jniwrapper/jni_env.hpp subversion/bindings/javahl/native/jniwrapper/jni_exception.hpp subversion/bindings/javahl/native/jniwrapper/jni_globalref.hpp subversion/bindings/javahl/native/jniwrapper/jni_object.hpp subversion/bindings/javahl/native/jniwrapper/jni_stack.hpp subversion/bindings/javahl/native/jniwrapper/jni_string.hpp subversion/include/private/svn_debug.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/svn_private_config.h
+ $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/jniwrapper/jni_base.cpp
+
+subversion/bindings/javahl/native/jniwrapper/jni_channel.lo: subversion/bindings/javahl/native/jniwrapper/jni_channel.cpp subversion/bindings/javahl/native/Pool.h subversion/bindings/javahl/native/jniwrapper/jni_array.hpp subversion/bindings/javahl/native/jniwrapper/jni_channel.hpp subversion/bindings/javahl/native/jniwrapper/jni_env.hpp subversion/bindings/javahl/native/jniwrapper/jni_globalref.hpp subversion/bindings/javahl/native/jniwrapper/jni_object.hpp subversion/include/private/svn_debug.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/svn_private_config.h
+ $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/jniwrapper/jni_channel.cpp
+
+subversion/bindings/javahl/native/jniwrapper/jni_class_cache.lo: subversion/bindings/javahl/native/jniwrapper/jni_class_cache.cpp subversion/bindings/javahl/native/AuthnCallback.hpp subversion/bindings/javahl/native/Credential.hpp subversion/bindings/javahl/native/EditorCallbacks.hpp subversion/bindings/javahl/native/ExternalItem.hpp subversion/bindings/javahl/native/Pool.h subversion/bindings/javahl/native/SubversionException.hpp subversion/bindings/javahl/native/jniwrapper/jni_array.hpp subversion/bindings/javahl/native/jniwrapper/jni_channel.hpp subversion/bindings/javahl/native/jniwrapper/jni_env.hpp subversion/bindings/javahl/native/jniwrapper/jni_exception.hpp subversion/bindings/javahl/native/jniwrapper/jni_globalref.hpp subversion/bindings/javahl/native/jniwrapper/jni_io_stream.hpp subversion/bindings/javahl/native/jniwrapper/jni_iterator.hpp subversion/bindings/javahl/native/jniwrapper/jni_list.hpp subversion/bindings/javahl/native/jniwrapper/jni_object.hpp subversion/bindings/javahl/native/jniwrapper/jni_string.hpp subversion/bindings/javahl/native/jniwrapper/jni_string_map.hpp subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_wc.h
+ $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/jniwrapper/jni_class_cache.cpp
+
+subversion/bindings/javahl/native/jniwrapper/jni_io_stream.lo: subversion/bindings/javahl/native/jniwrapper/jni_io_stream.cpp subversion/bindings/javahl/native/JNIStackElement.h subversion/bindings/javahl/native/JNIUtil.h subversion/bindings/javahl/native/Pool.h subversion/bindings/javahl/native/jniwrapper/jni_array.hpp subversion/bindings/javahl/native/jniwrapper/jni_env.hpp subversion/bindings/javahl/native/jniwrapper/jni_exception.hpp subversion/bindings/javahl/native/jniwrapper/jni_globalref.hpp subversion/bindings/javahl/native/jniwrapper/jni_io_stream.hpp subversion/bindings/javahl/native/jniwrapper/jni_object.hpp subversion/bindings/javahl/native/jniwrapper/jni_stack.hpp subversion/include/private/svn_debug.h subversion/include/svn_checksum.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/svn_private_config.h
+ $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/jniwrapper/jni_io_stream.cpp
+
+subversion/bindings/javahl/native/jniwrapper/jni_iterator.lo: subversion/bindings/javahl/native/jniwrapper/jni_iterator.cpp subversion/bindings/javahl/native/jniwrapper/jni_env.hpp subversion/bindings/javahl/native/jniwrapper/jni_globalref.hpp subversion/bindings/javahl/native/jniwrapper/jni_iterator.hpp subversion/bindings/javahl/native/jniwrapper/jni_object.hpp subversion/svn_private_config.h
+ $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/jniwrapper/jni_iterator.cpp
+
+subversion/bindings/javahl/native/jniwrapper/jni_list.lo: subversion/bindings/javahl/native/jniwrapper/jni_list.cpp subversion/bindings/javahl/native/jniwrapper/jni_env.hpp subversion/bindings/javahl/native/jniwrapper/jni_globalref.hpp subversion/bindings/javahl/native/jniwrapper/jni_iterator.hpp subversion/bindings/javahl/native/jniwrapper/jni_list.hpp subversion/bindings/javahl/native/jniwrapper/jni_object.hpp subversion/svn_private_config.h
+ $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/jniwrapper/jni_list.cpp
+
+subversion/bindings/javahl/native/jniwrapper/jni_string_map.lo: subversion/bindings/javahl/native/jniwrapper/jni_string_map.cpp subversion/bindings/javahl/native/jniwrapper/jni_env.hpp subversion/bindings/javahl/native/jniwrapper/jni_globalref.hpp subversion/bindings/javahl/native/jniwrapper/jni_iterator.hpp subversion/bindings/javahl/native/jniwrapper/jni_object.hpp subversion/bindings/javahl/native/jniwrapper/jni_string.hpp subversion/bindings/javahl/native/jniwrapper/jni_string_map.hpp subversion/svn_private_config.h
+ $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/jniwrapper/jni_string_map.cpp
+
+subversion/bindings/javahl/native/org_apache_subversion_javahl_NativeResources.lo: subversion/bindings/javahl/native/org_apache_subversion_javahl_NativeResources.cpp subversion/bindings/javahl/include/org_apache_subversion_javahl_NativeResources.h
+ $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/org_apache_subversion_javahl_NativeResources.cpp
+
+subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNClient.lo: subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNClient.cpp subversion/bindings/javahl/include/org_apache_subversion_javahl_SVNClient.h subversion/bindings/javahl/native/Array.h subversion/bindings/javahl/native/BlameCallback.h subversion/bindings/javahl/native/ChangelistCallback.h subversion/bindings/javahl/native/ClientContext.h subversion/bindings/javahl/native/CommitCallback.h subversion/bindings/javahl/native/CommitMessage.h subversion/bindings/javahl/native/CopySources.h subversion/bindings/javahl/native/CreateJ.h subversion/bindings/javahl/native/DiffOptions.h subversion/bindings/javahl/native/DiffSummaryReceiver.h subversion/bindings/javahl/native/EnumMapper.h subversion/bindings/javahl/native/ImportFilterCallback.h subversion/bindings/javahl/native/InfoCallback.h subversion/bindings/javahl/native/JNIByteArray.h subversion/bindings/javahl/native/JNIStackElement.h subversion/bindings/javahl/native/JNIStringHolder.h subversion/bindings/javahl/native/JNIUtil.h subversion/bindings/javahl/native/ListCallback.h subversion/bindings/javahl/native/LogMessageCallback.h subversion/bindings/javahl/native/OperationContext.h subversion/bindings/javahl/native/OutputStream.h subversion/bindings/javahl/native/PatchCallback.h subversion/bindings/javahl/native/Path.h subversion/bindings/javahl/native/Pool.h subversion/bindings/javahl/native/Prompter.h subversion/bindings/javahl/native/PropertyTable.h subversion/bindings/javahl/native/ProplistCallback.h subversion/bindings/javahl/native/Revision.h subversion/bindings/javahl/native/RevisionRange.h subversion/bindings/javahl/native/SVNBase.h subversion/bindings/javahl/native/SVNClient.h subversion/bindings/javahl/native/StatusCallback.h subversion/bindings/javahl/native/StringArray.h subversion/bindings/javahl/native/Targets.h subversion/bindings/javahl/native/VersionExtended.h subversion/bindings/javahl/native/jniwrapper/jni_env.hpp subversion/bindings/javahl/native/jniwrapper/jni_globalref.hpp subversion/bindings/javahl/native/version.h subversion/include/private/svn_atomic.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_version.h subversion/include/svn_wc.h subversion/svn_private_config.h
+ $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNClient.cpp
+
+subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNRepos.lo: subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNRepos.cpp subversion/bindings/javahl/include/org_apache_subversion_javahl_SVNRepos.h subversion/bindings/javahl/native/Array.h subversion/bindings/javahl/native/EnumMapper.h subversion/bindings/javahl/native/File.h subversion/bindings/javahl/native/InputStream.h subversion/bindings/javahl/native/JNIByteArray.h subversion/bindings/javahl/native/JNIStackElement.h subversion/bindings/javahl/native/JNIStringHolder.h subversion/bindings/javahl/native/JNIUtil.h subversion/bindings/javahl/native/MessageReceiver.h subversion/bindings/javahl/native/OutputStream.h subversion/bindings/javahl/native/Pool.h subversion/bindings/javahl/native/ReposFreezeAction.h subversion/bindings/javahl/native/ReposNotifyCallback.h subversion/bindings/javahl/native/ReposVerifyCallback.h subversion/bindings/javahl/native/Revision.h subversion/bindings/javahl/native/SVNBase.h subversion/bindings/javahl/native/SVNRepos.h subversion/bindings/javahl/native/StringArray.h subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/svn_private_config.h
+ $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNRepos.cpp
+
+subversion/bindings/javahl/native/org_apache_subversion_javahl_remote_CommitEditor.lo: subversion/bindings/javahl/native/org_apache_subversion_javahl_remote_CommitEditor.cpp subversion/bindings/javahl/include/org_apache_subversion_javahl_remote_CommitEditor.h subversion/bindings/javahl/native/CommitCallback.h subversion/bindings/javahl/native/CommitEditor.h subversion/bindings/javahl/native/JNIStackElement.h subversion/bindings/javahl/native/JNIUtil.h subversion/bindings/javahl/native/Pool.h subversion/bindings/javahl/native/SVNBase.h subversion/bindings/javahl/native/jniwrapper/jni_env.hpp subversion/bindings/javahl/native/jniwrapper/jni_globalref.hpp subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/svn_private_config.h
+ $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/org_apache_subversion_javahl_remote_CommitEditor.cpp
+
+subversion/bindings/javahl/native/org_apache_subversion_javahl_remote_RemoteFactory.lo: subversion/bindings/javahl/native/org_apache_subversion_javahl_remote_RemoteFactory.cpp subversion/bindings/javahl/include/org_apache_subversion_javahl_remote_RemoteFactory.h subversion/bindings/javahl/native/JNIStackElement.h subversion/bindings/javahl/native/JNIStringHolder.h subversion/bindings/javahl/native/JNIUtil.h subversion/bindings/javahl/native/OperationContext.h subversion/bindings/javahl/native/Pool.h subversion/bindings/javahl/native/Prompter.h subversion/bindings/javahl/native/RemoteSession.h subversion/bindings/javahl/native/RemoteSessionContext.h subversion/bindings/javahl/native/SVNBase.h subversion/bindings/javahl/native/jniwrapper/jni_env.hpp subversion/bindings/javahl/native/jniwrapper/jni_globalref.hpp subversion/include/private/svn_atomic.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/svn_private_config.h
+ $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/org_apache_subversion_javahl_remote_RemoteFactory.cpp
+
+subversion/bindings/javahl/native/org_apache_subversion_javahl_remote_RemoteSession.lo: subversion/bindings/javahl/native/org_apache_subversion_javahl_remote_RemoteSession.cpp subversion/bindings/javahl/include/org_apache_subversion_javahl_remote_RemoteSession.h subversion/bindings/javahl/native/EnumMapper.h subversion/bindings/javahl/native/JNIStackElement.h subversion/bindings/javahl/native/JNIStringHolder.h subversion/bindings/javahl/native/JNIUtil.h subversion/bindings/javahl/native/OperationContext.h subversion/bindings/javahl/native/Pool.h subversion/bindings/javahl/native/Prompter.h subversion/bindings/javahl/native/RemoteSession.h subversion/bindings/javahl/native/RemoteSessionContext.h subversion/bindings/javahl/native/Revision.h subversion/bindings/javahl/native/SVNBase.h subversion/bindings/javahl/native/jniwrapper/jni_env.hpp subversion/bindings/javahl/native/jniwrapper/jni_globalref.hpp subversion/include/private/svn_atomic.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/svn_private_config.h
+ $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/org_apache_subversion_javahl_remote_RemoteSession.cpp
+
+subversion/bindings/javahl/native/org_apache_subversion_javahl_remote_StateReporter.lo: subversion/bindings/javahl/native/org_apache_subversion_javahl_remote_StateReporter.cpp subversion/bindings/javahl/include/org_apache_subversion_javahl_remote_StateReporter.h subversion/bindings/javahl/native/EditorProxy.h subversion/bindings/javahl/native/JNIStackElement.h subversion/bindings/javahl/native/JNIUtil.h subversion/bindings/javahl/native/Pool.h subversion/bindings/javahl/native/SVNBase.h subversion/bindings/javahl/native/StateReporter.h subversion/include/private/svn_debug.h subversion/include/private/svn_delta_private.h subversion/include/private/svn_editor.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/svn_private_config.h
+ $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/org_apache_subversion_javahl_remote_StateReporter.cpp
+
+subversion/bindings/javahl/native/org_apache_subversion_javahl_types_RevisionRangeList.lo: subversion/bindings/javahl/native/org_apache_subversion_javahl_types_RevisionRangeList.cpp subversion/bindings/javahl/include/org_apache_subversion_javahl_types_RevisionRangeList.h subversion/bindings/javahl/native/JNIStackElement.h subversion/bindings/javahl/native/JNIUtil.h subversion/bindings/javahl/native/Pool.h subversion/bindings/javahl/native/RevisionRangeList.h subversion/include/private/svn_debug.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/svn_private_config.h
+ $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/org_apache_subversion_javahl_types_RevisionRangeList.cpp
+
+subversion/bindings/javahl/native/org_apache_subversion_javahl_types_RuntimeVersion.lo: subversion/bindings/javahl/native/org_apache_subversion_javahl_types_RuntimeVersion.cpp subversion/bindings/javahl/include/org_apache_subversion_javahl_types_RuntimeVersion.h subversion/bindings/javahl/native/JNIStackElement.h subversion/bindings/javahl/native/JNIUtil.h subversion/bindings/javahl/native/Pool.h subversion/bindings/javahl/native/jniwrapper/jni_env.hpp subversion/bindings/javahl/native/jniwrapper/jni_exception.hpp subversion/bindings/javahl/native/jniwrapper/jni_globalref.hpp subversion/bindings/javahl/native/jniwrapper/jni_object.hpp subversion/bindings/javahl/native/jniwrapper/jni_stack.hpp subversion/bindings/javahl/native/jniwrapper/jni_string.hpp subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_version.h subversion/include/svn_wc.h
+ $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/org_apache_subversion_javahl_types_RuntimeVersion.cpp
+
+subversion/bindings/javahl/native/org_apache_subversion_javahl_types_Version.lo: subversion/bindings/javahl/native/org_apache_subversion_javahl_types_Version.cpp subversion/bindings/javahl/include/org_apache_subversion_javahl_types_Version.h subversion/bindings/javahl/native/JNIStackElement.h subversion/bindings/javahl/native/JNIUtil.h subversion/bindings/javahl/native/Pool.h subversion/include/private/svn_debug.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_pools.h subversion/include/svn_types.h subversion/include/svn_version.h
+ $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/org_apache_subversion_javahl_types_Version.cpp
+
+subversion/bindings/javahl/native/org_apache_subversion_javahl_types_VersionExtended.lo: subversion/bindings/javahl/native/org_apache_subversion_javahl_types_VersionExtended.cpp subversion/bindings/javahl/include/org_apache_subversion_javahl_types_VersionExtended.h subversion/bindings/javahl/include/org_apache_subversion_javahl_types_VersionExtended_LinkedLib.h subversion/bindings/javahl/include/org_apache_subversion_javahl_types_VersionExtended_LinkedLibIterator.h subversion/bindings/javahl/include/org_apache_subversion_javahl_types_VersionExtended_LoadedLib.h subversion/bindings/javahl/include/org_apache_subversion_javahl_types_VersionExtended_LoadedLibIterator.h subversion/bindings/javahl/native/JNIStackElement.h subversion/bindings/javahl/native/JNIUtil.h subversion/bindings/javahl/native/Pool.h subversion/bindings/javahl/native/SVNBase.h subversion/bindings/javahl/native/VersionExtended.h subversion/include/private/svn_debug.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_pools.h subversion/include/svn_types.h subversion/include/svn_version.h subversion/svn_private_config.h
+ $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/org_apache_subversion_javahl_types_VersionExtended.cpp
+
+subversion/bindings/javahl/native/org_apache_subversion_javahl_util_ConfigImpl_Category.lo: subversion/bindings/javahl/native/org_apache_subversion_javahl_util_ConfigImpl_Category.cpp subversion/bindings/javahl/include/org_apache_subversion_javahl_util_ConfigImpl_Category.h subversion/bindings/javahl/native/CreateJ.h subversion/bindings/javahl/native/EnumMapper.h subversion/bindings/javahl/native/JNIStackElement.h subversion/bindings/javahl/native/JNIStringHolder.h subversion/bindings/javahl/native/JNIUtil.h subversion/bindings/javahl/native/OperationContext.h subversion/bindings/javahl/native/Pool.h subversion/include/private/svn_atomic.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/svn_private_config.h
+ $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/org_apache_subversion_javahl_util_ConfigImpl_Category.cpp
+
+subversion/bindings/javahl/native/org_apache_subversion_javahl_util_ConfigLib.lo: subversion/bindings/javahl/native/org_apache_subversion_javahl_util_ConfigLib.cpp subversion/bindings/javahl/include/org_apache_subversion_javahl_util_ConfigLib.h subversion/bindings/javahl/native/AuthnCallback.hpp subversion/bindings/javahl/native/Credential.hpp subversion/bindings/javahl/native/GlobalConfig.h subversion/bindings/javahl/native/JNICriticalSection.h subversion/bindings/javahl/native/JNIStackElement.h subversion/bindings/javahl/native/JNIUtil.h subversion/bindings/javahl/native/Pool.h subversion/bindings/javahl/native/SubversionException.hpp subversion/bindings/javahl/native/jniwrapper/jni_env.hpp subversion/bindings/javahl/native/jniwrapper/jni_exception.hpp subversion/bindings/javahl/native/jniwrapper/jni_globalref.hpp subversion/bindings/javahl/native/jniwrapper/jni_iterator.hpp subversion/bindings/javahl/native/jniwrapper/jni_list.hpp subversion/bindings/javahl/native/jniwrapper/jni_object.hpp subversion/bindings/javahl/native/jniwrapper/jni_stack.hpp subversion/bindings/javahl/native/jniwrapper/jni_string.hpp subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_base64.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_x509.h subversion/svn_private_config.h
+ $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/org_apache_subversion_javahl_util_ConfigLib.cpp
+
+subversion/bindings/javahl/native/org_apache_subversion_javahl_util_DiffLib.lo: subversion/bindings/javahl/native/org_apache_subversion_javahl_util_DiffLib.cpp subversion/bindings/javahl/include/org_apache_subversion_javahl_util_DiffLib.h subversion/bindings/javahl/native/JNIStackElement.h subversion/bindings/javahl/native/JNIStringHolder.h subversion/bindings/javahl/native/JNIUtil.h subversion/bindings/javahl/native/OutputStream.h subversion/bindings/javahl/native/Path.h subversion/bindings/javahl/native/Pool.h subversion/include/private/svn_debug.h subversion/include/svn_checksum.h subversion/include/svn_diff.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h
+ $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/org_apache_subversion_javahl_util_DiffLib.cpp
+
+subversion/bindings/javahl/native/org_apache_subversion_javahl_util_PropLib.lo: subversion/bindings/javahl/native/org_apache_subversion_javahl_util_PropLib.cpp subversion/bindings/javahl/include/org_apache_subversion_javahl_util_PropLib.h subversion/bindings/javahl/native/EnumMapper.h subversion/bindings/javahl/native/ExternalItem.hpp subversion/bindings/javahl/native/JNIStackElement.h subversion/bindings/javahl/native/JNIUtil.h subversion/bindings/javahl/native/Pool.h subversion/bindings/javahl/native/SubversionException.hpp subversion/bindings/javahl/native/jniwrapper/jni_array.hpp subversion/bindings/javahl/native/jniwrapper/jni_env.hpp subversion/bindings/javahl/native/jniwrapper/jni_exception.hpp subversion/bindings/javahl/native/jniwrapper/jni_globalref.hpp subversion/bindings/javahl/native/jniwrapper/jni_io_stream.hpp subversion/bindings/javahl/native/jniwrapper/jni_iterator.hpp subversion/bindings/javahl/native/jniwrapper/jni_list.hpp subversion/bindings/javahl/native/jniwrapper/jni_object.hpp subversion/bindings/javahl/native/jniwrapper/jni_stack.hpp subversion/bindings/javahl/native/jniwrapper/jni_string.hpp subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/svn_private_config.h
+ $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/org_apache_subversion_javahl_util_PropLib.cpp
+
+subversion/bindings/javahl/native/org_apache_subversion_javahl_util_SubstLib.lo: subversion/bindings/javahl/native/org_apache_subversion_javahl_util_SubstLib.cpp subversion/bindings/javahl/include/org_apache_subversion_javahl_util_SubstLib.h subversion/bindings/javahl/native/JNIStackElement.h subversion/bindings/javahl/native/JNIUtil.h subversion/bindings/javahl/native/NativeStream.hpp subversion/bindings/javahl/native/Pool.h subversion/bindings/javahl/native/SVNBase.h subversion/bindings/javahl/native/Utility.hpp subversion/bindings/javahl/native/jniwrapper/jni_array.hpp subversion/bindings/javahl/native/jniwrapper/jni_env.hpp subversion/bindings/javahl/native/jniwrapper/jni_exception.hpp subversion/bindings/javahl/native/jniwrapper/jni_globalref.hpp subversion/bindings/javahl/native/jniwrapper/jni_io_stream.hpp subversion/bindings/javahl/native/jniwrapper/jni_iterator.hpp subversion/bindings/javahl/native/jniwrapper/jni_object.hpp subversion/bindings/javahl/native/jniwrapper/jni_stack.hpp subversion/bindings/javahl/native/jniwrapper/jni_string.hpp subversion/bindings/javahl/native/jniwrapper/jni_string_map.hpp subversion/include/private/svn_debug.h subversion/include/svn_checksum.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_subst.h subversion/include/svn_types.h subversion/svn_private_config.h
+ $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/org_apache_subversion_javahl_util_SubstLib.cpp
+
+subversion/bindings/javahl/native/org_apache_subversion_javahl_util_TunnelChannel.lo: subversion/bindings/javahl/native/org_apache_subversion_javahl_util_TunnelChannel.cpp subversion/bindings/javahl/include/org_apache_subversion_javahl_util_RequestChannel.h subversion/bindings/javahl/include/org_apache_subversion_javahl_util_ResponseChannel.h subversion/bindings/javahl/include/org_apache_subversion_javahl_util_TunnelChannel.h subversion/bindings/javahl/native/JNIStackElement.h subversion/bindings/javahl/native/JNIUtil.h subversion/bindings/javahl/native/Pool.h subversion/bindings/javahl/native/jniwrapper/jni_channel.hpp subversion/bindings/javahl/native/jniwrapper/jni_env.hpp subversion/bindings/javahl/native/jniwrapper/jni_exception.hpp subversion/bindings/javahl/native/jniwrapper/jni_globalref.hpp subversion/bindings/javahl/native/jniwrapper/jni_object.hpp subversion/bindings/javahl/native/jniwrapper/jni_stack.hpp subversion/include/private/svn_debug.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_pools.h subversion/include/svn_types.h subversion/svn_private_config.h
+ $(COMPILE_JAVAHL_CXX) $(canonicalized_srcdir)subversion/bindings/javahl/native/org_apache_subversion_javahl_util_TunnelChannel.cpp
+
+subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.lo: subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.c subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.h subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl__pre_perl.h subversion/bindings/swig/proxy/swig_perl_external_runtime.swg subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/svn_private_config.h
+ $(COMPILE_SWIG_PL) $(canonicalized_srcdir)subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.c
+
+subversion/bindings/swig/perl/native/core.lo: subversion/bindings/swig/perl/native/core.c subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.h subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.h subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb.h subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb__pre_ruby.h subversion/include/svn_client.h subversion/include/svn_delta.h subversion/include/svn_fs.h subversion/include/svn_ra.h subversion/include/svn_repos.h subversion/include/svn_wc.h subversion/svn_private_config.h
+ $(COMPILE_PL_WRAPPER) $(canonicalized_srcdir)subversion/bindings/swig/perl/native/core.c
+
+subversion/bindings/swig/perl/native/svn_client.lo: subversion/bindings/swig/perl/native/svn_client.c subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.h subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.h subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb.h subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb__pre_ruby.h subversion/include/svn_fs.h subversion/include/svn_repos.h subversion/svn_private_config.h
+ $(COMPILE_PL_WRAPPER) $(canonicalized_srcdir)subversion/bindings/swig/perl/native/svn_client.c
+
+subversion/bindings/swig/perl/native/svn_delta.lo: subversion/bindings/swig/perl/native/svn_delta.c subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.h subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.h subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb.h subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb__pre_ruby.h subversion/include/svn_client.h subversion/include/svn_fs.h subversion/include/svn_ra.h subversion/include/svn_repos.h subversion/include/svn_wc.h subversion/svn_private_config.h
+ $(COMPILE_PL_WRAPPER) $(canonicalized_srcdir)subversion/bindings/swig/perl/native/svn_delta.c
+
+subversion/bindings/swig/perl/native/svn_diff.lo: subversion/bindings/swig/perl/native/svn_diff.c subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.h subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.h subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb.h subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb__pre_ruby.h subversion/include/svn_client.h subversion/include/svn_delta.h subversion/include/svn_fs.h subversion/include/svn_ra.h subversion/include/svn_repos.h subversion/include/svn_wc.h subversion/svn_private_config.h
+ $(COMPILE_PL_WRAPPER) $(canonicalized_srcdir)subversion/bindings/swig/perl/native/svn_diff.c
+
+subversion/bindings/swig/perl/native/svn_fs.lo: subversion/bindings/swig/perl/native/svn_fs.c subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.h subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.h subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb.h subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb__pre_ruby.h subversion/include/svn_client.h subversion/include/svn_ra.h subversion/include/svn_repos.h subversion/include/svn_wc.h subversion/svn_private_config.h
+ $(COMPILE_PL_WRAPPER) $(canonicalized_srcdir)subversion/bindings/swig/perl/native/svn_fs.c
+
+subversion/bindings/swig/perl/native/svn_ra.lo: subversion/bindings/swig/perl/native/svn_ra.c subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.h subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.h subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb.h subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb__pre_ruby.h subversion/include/svn_client.h subversion/include/svn_fs.h subversion/include/svn_repos.h subversion/include/svn_wc.h subversion/svn_private_config.h
+ $(COMPILE_PL_WRAPPER) $(canonicalized_srcdir)subversion/bindings/swig/perl/native/svn_ra.c
+
+subversion/bindings/swig/perl/native/svn_repos.lo: subversion/bindings/swig/perl/native/svn_repos.c subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.h subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.h subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb.h subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb__pre_ruby.h subversion/include/svn_client.h subversion/include/svn_ra.h subversion/include/svn_wc.h subversion/svn_private_config.h
+ $(COMPILE_PL_WRAPPER) $(canonicalized_srcdir)subversion/bindings/swig/perl/native/svn_repos.c
+
+subversion/bindings/swig/perl/native/svn_wc.lo: subversion/bindings/swig/perl/native/svn_wc.c subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.h subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.h subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb.h subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb__pre_ruby.h subversion/include/svn_client.h subversion/include/svn_fs.h subversion/include/svn_repos.h subversion/svn_private_config.h
+ $(COMPILE_PL_WRAPPER) $(canonicalized_srcdir)subversion/bindings/swig/perl/native/svn_wc.c
+
+subversion/bindings/swig/python/core.lo: subversion/bindings/swig/python/core.c subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.h subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.h subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb.h subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb__pre_ruby.h subversion/include/svn_client.h subversion/include/svn_delta.h subversion/include/svn_fs.h subversion/include/svn_ra.h subversion/include/svn_repos.h subversion/include/svn_wc.h subversion/svn_private_config.h
+ $(COMPILE_PY_WRAPPER) $(canonicalized_srcdir)subversion/bindings/swig/python/core.c
+
+subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.lo: subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c subversion/bindings/swig/proxy/swig_python_external_runtime.swg subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.h subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/svn_private_config.h
+ $(COMPILE_SWIG_PY) $(canonicalized_srcdir)subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c
+
+subversion/bindings/swig/python/svn_client.lo: subversion/bindings/swig/python/svn_client.c subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.h subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.h subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb.h subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb__pre_ruby.h subversion/include/svn_fs.h subversion/include/svn_repos.h subversion/svn_private_config.h
+ $(COMPILE_PY_WRAPPER) $(canonicalized_srcdir)subversion/bindings/swig/python/svn_client.c
+
+subversion/bindings/swig/python/svn_delta.lo: subversion/bindings/swig/python/svn_delta.c subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.h subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.h subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb.h subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb__pre_ruby.h subversion/include/svn_client.h subversion/include/svn_fs.h subversion/include/svn_ra.h subversion/include/svn_repos.h subversion/include/svn_wc.h subversion/svn_private_config.h
+ $(COMPILE_PY_WRAPPER) $(canonicalized_srcdir)subversion/bindings/swig/python/svn_delta.c
+
+subversion/bindings/swig/python/svn_diff.lo: subversion/bindings/swig/python/svn_diff.c subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.h subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.h subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb.h subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb__pre_ruby.h subversion/include/svn_client.h subversion/include/svn_delta.h subversion/include/svn_fs.h subversion/include/svn_ra.h subversion/include/svn_repos.h subversion/include/svn_wc.h subversion/svn_private_config.h
+ $(COMPILE_PY_WRAPPER) $(canonicalized_srcdir)subversion/bindings/swig/python/svn_diff.c
+
+subversion/bindings/swig/python/svn_fs.lo: subversion/bindings/swig/python/svn_fs.c subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.h subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.h subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb.h subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb__pre_ruby.h subversion/include/svn_client.h subversion/include/svn_ra.h subversion/include/svn_repos.h subversion/include/svn_wc.h subversion/svn_private_config.h
+ $(COMPILE_PY_WRAPPER) $(canonicalized_srcdir)subversion/bindings/swig/python/svn_fs.c
+
+subversion/bindings/swig/python/svn_ra.lo: subversion/bindings/swig/python/svn_ra.c subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.h subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.h subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb.h subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb__pre_ruby.h subversion/include/svn_client.h subversion/include/svn_fs.h subversion/include/svn_repos.h subversion/include/svn_wc.h subversion/svn_private_config.h
+ $(COMPILE_PY_WRAPPER) $(canonicalized_srcdir)subversion/bindings/swig/python/svn_ra.c
+
+subversion/bindings/swig/python/svn_repos.lo: subversion/bindings/swig/python/svn_repos.c subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.h subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.h subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb.h subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb__pre_ruby.h subversion/include/svn_client.h subversion/include/svn_ra.h subversion/include/svn_wc.h subversion/svn_private_config.h
+ $(COMPILE_PY_WRAPPER) $(canonicalized_srcdir)subversion/bindings/swig/python/svn_repos.c
+
+subversion/bindings/swig/python/svn_wc.lo: subversion/bindings/swig/python/svn_wc.c subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.h subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.h subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb.h subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb__pre_ruby.h subversion/include/svn_client.h subversion/include/svn_fs.h subversion/include/svn_repos.h subversion/svn_private_config.h
+ $(COMPILE_PY_WRAPPER) $(canonicalized_srcdir)subversion/bindings/swig/python/svn_wc.c
+
+subversion/bindings/swig/ruby/core.lo: subversion/bindings/swig/ruby/core.c subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.h subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.h subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb.h subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb__pre_ruby.h subversion/include/svn_client.h subversion/include/svn_delta.h subversion/include/svn_fs.h subversion/include/svn_ra.h subversion/include/svn_repos.h subversion/include/svn_wc.h subversion/svn_private_config.h
+ $(COMPILE_RB_WRAPPER) $(canonicalized_srcdir)subversion/bindings/swig/ruby/core.c
+
+subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb.lo: subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb.c subversion/bindings/swig/proxy/swig_ruby_external_runtime.swg subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb.h subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb__pre_ruby.h subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_nls.h subversion/include/svn_opt.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_utf.h subversion/include/svn_wc.h subversion/svn_private_config.h
+ $(COMPILE_SWIG_RB) $(canonicalized_srcdir)subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb.c
+
+subversion/bindings/swig/ruby/svn_client.lo: subversion/bindings/swig/ruby/svn_client.c subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.h subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.h subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb.h subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb__pre_ruby.h subversion/include/svn_fs.h subversion/include/svn_repos.h subversion/svn_private_config.h
+ $(COMPILE_RB_WRAPPER) $(canonicalized_srcdir)subversion/bindings/swig/ruby/svn_client.c
+
+subversion/bindings/swig/ruby/svn_delta.lo: subversion/bindings/swig/ruby/svn_delta.c subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.h subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.h subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb.h subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb__pre_ruby.h subversion/include/svn_client.h subversion/include/svn_fs.h subversion/include/svn_ra.h subversion/include/svn_repos.h subversion/include/svn_wc.h subversion/svn_private_config.h
+ $(COMPILE_RB_WRAPPER) $(canonicalized_srcdir)subversion/bindings/swig/ruby/svn_delta.c
+
+subversion/bindings/swig/ruby/svn_diff.lo: subversion/bindings/swig/ruby/svn_diff.c subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.h subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.h subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb.h subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb__pre_ruby.h subversion/include/svn_client.h subversion/include/svn_delta.h subversion/include/svn_fs.h subversion/include/svn_ra.h subversion/include/svn_repos.h subversion/include/svn_wc.h subversion/svn_private_config.h
+ $(COMPILE_RB_WRAPPER) $(canonicalized_srcdir)subversion/bindings/swig/ruby/svn_diff.c
+
+subversion/bindings/swig/ruby/svn_fs.lo: subversion/bindings/swig/ruby/svn_fs.c subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.h subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.h subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb.h subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb__pre_ruby.h subversion/include/svn_client.h subversion/include/svn_ra.h subversion/include/svn_repos.h subversion/include/svn_wc.h subversion/svn_private_config.h
+ $(COMPILE_RB_WRAPPER) $(canonicalized_srcdir)subversion/bindings/swig/ruby/svn_fs.c
+
+subversion/bindings/swig/ruby/svn_ra.lo: subversion/bindings/swig/ruby/svn_ra.c subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.h subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.h subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb.h subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb__pre_ruby.h subversion/include/svn_client.h subversion/include/svn_fs.h subversion/include/svn_repos.h subversion/include/svn_wc.h subversion/svn_private_config.h
+ $(COMPILE_RB_WRAPPER) $(canonicalized_srcdir)subversion/bindings/swig/ruby/svn_ra.c
+
+subversion/bindings/swig/ruby/svn_repos.lo: subversion/bindings/swig/ruby/svn_repos.c subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.h subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.h subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb.h subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb__pre_ruby.h subversion/include/svn_client.h subversion/include/svn_ra.h subversion/include/svn_wc.h subversion/svn_private_config.h
+ $(COMPILE_RB_WRAPPER) $(canonicalized_srcdir)subversion/bindings/swig/ruby/svn_repos.c
+
+subversion/bindings/swig/ruby/svn_wc.lo: subversion/bindings/swig/ruby/svn_wc.c subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.h subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.h subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb.h subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb__pre_ruby.h subversion/include/svn_client.h subversion/include/svn_fs.h subversion/include/svn_repos.h subversion/svn_private_config.h
+ $(COMPILE_RB_WRAPPER) $(canonicalized_srcdir)subversion/bindings/swig/ruby/svn_wc.c
+
+subversion/libsvn_auth_gnome_keyring/gnome_keyring.lo: subversion/libsvn_auth_gnome_keyring/gnome_keyring.c subversion/include/private/svn_auth_private.h subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_version.h subversion/svn_private_config.h
+ $(COMPILE_SHARED_ONLY_LIB) $(canonicalized_srcdir)subversion/libsvn_auth_gnome_keyring/gnome_keyring.c
+
+subversion/libsvn_auth_gnome_keyring/version.lo: subversion/libsvn_auth_gnome_keyring/version.c subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_version.h
+ $(COMPILE_SHARED_ONLY_LIB) $(canonicalized_srcdir)subversion/libsvn_auth_gnome_keyring/version.c
+
+subversion/libsvn_auth_kwallet/kwallet.lo: subversion/libsvn_auth_kwallet/kwallet.cpp subversion/include/private/svn_auth_private.h subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_version.h subversion/svn_private_config.h
+ $(COMPILE_SHARED_ONLY_CXX_LIB) $(canonicalized_srcdir)subversion/libsvn_auth_kwallet/kwallet.cpp
+
+subversion/libsvn_auth_kwallet/version.lo: subversion/libsvn_auth_kwallet/version.c subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_version.h
+ $(COMPILE_SHARED_ONLY_CXX_LIB) $(canonicalized_srcdir)subversion/libsvn_auth_kwallet/version.c
+
+subversion/libsvn_client/add.lo: subversion/libsvn_client/add.c subversion/include/private/svn_client_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_editor.h subversion/include/private/svn_magic.h subversion/include/private/svn_ra_private.h subversion/include/private/svn_sorts_private.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_ctype.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/libsvn_client/client.h subversion/svn_private_config.h
+
+subversion/libsvn_client/blame.lo: subversion/libsvn_client/blame.c subversion/include/private/svn_client_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_editor.h subversion/include/private/svn_magic.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_subst.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/libsvn_client/client.h subversion/svn_private_config.h
+
+subversion/libsvn_client/cat.lo: subversion/libsvn_client/cat.c subversion/include/private/svn_client_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_editor.h subversion/include/private/svn_magic.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_subst.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/libsvn_client/client.h subversion/svn_private_config.h
+
+subversion/libsvn_client/changelist.lo: subversion/libsvn_client/changelist.c subversion/include/private/svn_client_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_editor.h subversion/include/private/svn_magic.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/libsvn_client/client.h subversion/svn_private_config.h
+
+subversion/libsvn_client/checkout.lo: subversion/libsvn_client/checkout.c subversion/include/private/svn_client_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_editor.h subversion/include/private/svn_magic.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/libsvn_client/client.h subversion/svn_private_config.h
+
+subversion/libsvn_client/cleanup.lo: subversion/libsvn_client/cleanup.c subversion/include/private/svn_client_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_editor.h subversion/include/private/svn_magic.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/libsvn_client/client.h subversion/svn_private_config.h
+
+subversion/libsvn_client/cmdline.lo: subversion/libsvn_client/cmdline.c subversion/include/private/svn_client_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_editor.h subversion/include/private/svn_magic.h subversion/include/private/svn_opt_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_utf.h subversion/include/svn_wc.h subversion/libsvn_client/client.h subversion/svn_private_config.h
+
+subversion/libsvn_client/commit.lo: subversion/libsvn_client/commit.c subversion/include/private/svn_client_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_editor.h subversion/include/private/svn_magic.h subversion/include/private/svn_ra_private.h subversion/include/private/svn_sorts_private.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/libsvn_client/client.h subversion/svn_private_config.h
+
+subversion/libsvn_client/commit_util.lo: subversion/libsvn_client/commit_util.c subversion/include/private/svn_client_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_editor.h subversion/include/private/svn_magic.h subversion/include/private/svn_sorts_private.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_iter.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/libsvn_client/client.h subversion/svn_private_config.h
+
+subversion/libsvn_client/compat_providers.lo: subversion/libsvn_client/compat_providers.c subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_wc.h
+
+subversion/libsvn_client/conflicts.lo: subversion/libsvn_client/conflicts.c subversion/include/private/svn_client_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_editor.h subversion/include/private/svn_magic.h subversion/include/private/svn_ra_private.h subversion/include/private/svn_sorts_private.h subversion/include/private/svn_token.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_subst.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/libsvn_client/client.h subversion/svn_private_config.h
+
+subversion/libsvn_client/copy.lo: subversion/libsvn_client/copy.c subversion/include/private/svn_client_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_editor.h subversion/include/private/svn_magic.h subversion/include/private/svn_mergeinfo_private.h subversion/include/private/svn_ra_private.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/libsvn_client/client.h subversion/libsvn_client/mergeinfo.h subversion/svn_private_config.h
+
+subversion/libsvn_client/copy_foreign.lo: subversion/libsvn_client/copy_foreign.c subversion/include/private/svn_client_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_editor.h subversion/include/private/svn_magic.h subversion/include/private/svn_subr_private.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/libsvn_client/client.h subversion/svn_private_config.h
+
+subversion/libsvn_client/ctx.lo: subversion/libsvn_client/ctx.c subversion/include/private/svn_client_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_editor.h subversion/include/private/svn_magic.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/libsvn_client/client.h
+
+subversion/libsvn_client/delete.lo: subversion/libsvn_client/delete.c subversion/include/private/svn_client_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_editor.h subversion/include/private/svn_magic.h subversion/include/private/svn_ra_private.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/libsvn_client/client.h subversion/svn_private_config.h
+
+subversion/libsvn_client/deprecated.lo: subversion/libsvn_client/deprecated.c subversion/include/private/svn_client_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_editor.h subversion/include/private/svn_magic.h subversion/include/private/svn_opt_private.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_compat.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_utf.h subversion/include/svn_wc.h subversion/libsvn_client/client.h subversion/libsvn_client/mergeinfo.h subversion/svn_private_config.h
+
+subversion/libsvn_client/diff.lo: subversion/libsvn_client/diff.c subversion/include/private/svn_client_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_diff_private.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_editor.h subversion/include/private/svn_io_private.h subversion/include/private/svn_magic.h subversion/include/private/svn_ra_private.h subversion/include/private/svn_subr_private.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_subst.h subversion/include/svn_types.h subversion/include/svn_utf.h subversion/include/svn_wc.h subversion/libsvn_client/client.h subversion/svn_private_config.h
+
+subversion/libsvn_client/diff_local.lo: subversion/libsvn_client/diff_local.c subversion/include/private/svn_client_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_editor.h subversion/include/private/svn_magic.h subversion/include/private/svn_sorts_private.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_subst.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/libsvn_client/client.h subversion/svn_private_config.h
+
+subversion/libsvn_client/diff_summarize.lo: subversion/libsvn_client/diff_summarize.c subversion/include/private/svn_client_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_editor.h subversion/include/private/svn_magic.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/libsvn_client/client.h
+
+subversion/libsvn_client/export.lo: subversion/libsvn_client/export.c subversion/include/private/svn_client_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_delta_private.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_editor.h subversion/include/private/svn_magic.h subversion/include/private/svn_subr_private.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_subst.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/libsvn_client/client.h subversion/svn_private_config.h
+
+subversion/libsvn_client/externals.lo: subversion/libsvn_client/externals.c subversion/include/private/svn_client_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_editor.h subversion/include/private/svn_magic.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/libsvn_client/client.h subversion/svn_private_config.h
+
+subversion/libsvn_client/import.lo: subversion/libsvn_client/import.c subversion/include/private/svn_client_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_editor.h subversion/include/private/svn_magic.h subversion/include/private/svn_ra_private.h subversion/include/private/svn_sorts_private.h subversion/include/private/svn_subr_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_subst.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/libsvn_client/client.h subversion/svn_private_config.h
+
+subversion/libsvn_client/info.lo: subversion/libsvn_client/info.c subversion/include/private/svn_client_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_editor.h subversion/include/private/svn_fspath.h subversion/include/private/svn_magic.h subversion/include/private/svn_sorts_private.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/libsvn_client/client.h subversion/svn_private_config.h
+
+subversion/libsvn_client/iprops.lo: subversion/libsvn_client/iprops.c subversion/include/private/svn_client_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_editor.h subversion/include/private/svn_magic.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/libsvn_client/client.h subversion/svn_private_config.h
+
+subversion/libsvn_client/list.lo: subversion/libsvn_client/list.c subversion/include/private/svn_client_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_editor.h subversion/include/private/svn_fspath.h subversion/include/private/svn_magic.h subversion/include/private/svn_ra_private.h subversion/include/private/svn_sorts_private.h subversion/include/private/svn_string_private.h subversion/include/private/svn_utf_private.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/libsvn_client/client.h subversion/svn_private_config.h
+
+subversion/libsvn_client/locking_commands.lo: subversion/libsvn_client/locking_commands.c subversion/include/private/svn_client_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_editor.h subversion/include/private/svn_magic.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/include/svn_xml.h subversion/libsvn_client/client.h subversion/svn_private_config.h
+
+subversion/libsvn_client/log.lo: subversion/libsvn_client/log.c subversion/include/private/svn_client_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_editor.h subversion/include/private/svn_magic.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_compat.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/libsvn_client/client.h subversion/svn_private_config.h
+
+subversion/libsvn_client/merge.lo: subversion/libsvn_client/merge.c subversion/include/private/svn_client_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_editor.h subversion/include/private/svn_fspath.h subversion/include/private/svn_magic.h subversion/include/private/svn_mergeinfo_private.h subversion/include/private/svn_sorts_private.h subversion/include/private/svn_subr_private.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_subst.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_utf.h subversion/include/svn_wc.h subversion/libsvn_client/client.h subversion/libsvn_client/mergeinfo.h subversion/svn_private_config.h
+
+subversion/libsvn_client/merge_elements.lo: subversion/libsvn_client/merge_elements.c subversion/include/private/svn_client_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_editor.h subversion/include/private/svn_element.h subversion/include/private/svn_magic.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/libsvn_client/client.h subversion/svn_private_config.h
+
+subversion/libsvn_client/mergeinfo.lo: subversion/libsvn_client/mergeinfo.c subversion/include/private/svn_client_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_editor.h subversion/include/private/svn_fspath.h subversion/include/private/svn_magic.h subversion/include/private/svn_mergeinfo_private.h subversion/include/private/svn_opt_private.h subversion/include/private/svn_ra_private.h subversion/include/private/svn_sorts_private.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/libsvn_client/client.h subversion/libsvn_client/mergeinfo.h subversion/svn_private_config.h
+
+subversion/libsvn_client/mtcc.lo: subversion/libsvn_client/mtcc.c subversion/include/private/svn_client_mtcc.h subversion/include/private/svn_client_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_editor.h subversion/include/private/svn_magic.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_subst.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/libsvn_client/client.h subversion/svn_private_config.h
+
+subversion/libsvn_client/patch.lo: subversion/libsvn_client/patch.c subversion/include/private/svn_client_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_diff_private.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_editor.h subversion/include/private/svn_eol_private.h subversion/include/private/svn_magic.h subversion/include/private/svn_sorts_private.h subversion/include/private/svn_string_private.h subversion/include/private/svn_subr_private.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_subst.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/libsvn_client/client.h subversion/svn_private_config.h
+
+subversion/libsvn_client/prop_commands.lo: subversion/libsvn_client/prop_commands.c subversion/include/private/svn_client_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_editor.h subversion/include/private/svn_magic.h subversion/include/private/svn_ra_private.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/libsvn_client/client.h subversion/svn_private_config.h
+
+subversion/libsvn_client/ra.lo: subversion/libsvn_client/ra.c subversion/include/private/svn_client_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_editor.h subversion/include/private/svn_magic.h subversion/include/private/svn_sorts_private.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/libsvn_client/client.h subversion/libsvn_client/mergeinfo.h subversion/svn_private_config.h
+
+subversion/libsvn_client/relocate.lo: subversion/libsvn_client/relocate.c subversion/include/private/svn_client_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_editor.h subversion/include/private/svn_magic.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/libsvn_client/client.h subversion/svn_private_config.h
+
+subversion/libsvn_client/repos_diff.lo: subversion/libsvn_client/repos_diff.c subversion/include/private/svn_client_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_editor.h subversion/include/private/svn_magic.h subversion/include/private/svn_subr_private.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/libsvn_client/client.h subversion/svn_private_config.h
+
+subversion/libsvn_client/resolved.lo: subversion/libsvn_client/resolved.c subversion/include/private/svn_client_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_editor.h subversion/include/private/svn_magic.h subversion/include/private/svn_sorts_private.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/libsvn_client/client.h subversion/svn_private_config.h
+
+subversion/libsvn_client/revert.lo: subversion/libsvn_client/revert.c subversion/include/private/svn_client_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_editor.h subversion/include/private/svn_magic.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/libsvn_client/client.h subversion/svn_private_config.h
+
+subversion/libsvn_client/revisions.lo: subversion/libsvn_client/revisions.c subversion/include/private/svn_client_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_editor.h subversion/include/private/svn_magic.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/libsvn_client/client.h subversion/svn_private_config.h
+
+subversion/libsvn_client/shelve.lo: subversion/libsvn_client/shelve.c subversion/include/private/svn_client_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_editor.h subversion/include/private/svn_magic.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_ctype.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_utf.h subversion/include/svn_wc.h subversion/libsvn_client/client.h subversion/svn_private_config.h
+
+subversion/libsvn_client/status.lo: subversion/libsvn_client/status.c subversion/include/private/svn_client_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_editor.h subversion/include/private/svn_magic.h subversion/include/private/svn_sorts_private.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/libsvn_client/client.h subversion/svn_private_config.h
+
+subversion/libsvn_client/switch.lo: subversion/libsvn_client/switch.c subversion/include/private/svn_client_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_editor.h subversion/include/private/svn_magic.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/libsvn_client/client.h subversion/svn_private_config.h
+
+subversion/libsvn_client/update.lo: subversion/libsvn_client/update.c subversion/include/private/svn_client_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_editor.h subversion/include/private/svn_magic.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/libsvn_client/client.h subversion/svn_private_config.h
+
+subversion/libsvn_client/upgrade.lo: subversion/libsvn_client/upgrade.c subversion/include/private/svn_client_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_editor.h subversion/include/private/svn_magic.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/libsvn_client/client.h subversion/svn_private_config.h
+
+subversion/libsvn_client/url.lo: subversion/libsvn_client/url.c subversion/include/private/svn_client_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_editor.h subversion/include/private/svn_magic.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/libsvn_client/client.h subversion/svn_private_config.h
+
+subversion/libsvn_client/util.lo: subversion/libsvn_client/util.c subversion/include/private/svn_client_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_editor.h subversion/include/private/svn_fspath.h subversion/include/private/svn_magic.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/libsvn_client/client.h subversion/svn_private_config.h
+
+subversion/libsvn_client/version.lo: subversion/libsvn_client/version.c subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_version.h subversion/include/svn_wc.h
+
+subversion/libsvn_delta/branch.lo: subversion/libsvn_delta/branch.c subversion/include/private/svn_branch.h subversion/include/private/svn_branch_impl.h subversion/include/private/svn_debug.h subversion/include/private/svn_element.h subversion/include/private/svn_sorts_private.h subversion/include/svn_checksum.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_iter.h subversion/include/svn_pools.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/svn_private_config.h
+
+subversion/libsvn_delta/branch_compat.lo: subversion/libsvn_delta/branch_compat.c subversion/include/private/svn_branch.h subversion/include/private/svn_branch_compat.h subversion/include/private/svn_branch_impl.h subversion/include/private/svn_branch_nested.h subversion/include/private/svn_branch_repos.h subversion/include/private/svn_debug.h subversion/include/private/svn_delta_private.h subversion/include/private/svn_editor.h subversion/include/private/svn_element.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_iter.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/svn_private_config.h
+
+subversion/libsvn_delta/branch_migrate.lo: subversion/libsvn_delta/branch_migrate.c subversion/include/private/svn_branch.h subversion/include/private/svn_branch_compat.h subversion/include/private/svn_debug.h subversion/include/private/svn_element.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/svn_private_config.h
+
+subversion/libsvn_delta/branch_nested.lo: subversion/libsvn_delta/branch_nested.c subversion/include/private/svn_branch.h subversion/include/private/svn_branch_impl.h subversion/include/private/svn_branch_nested.h subversion/include/private/svn_branch_repos.h subversion/include/private/svn_debug.h subversion/include/private/svn_element.h subversion/include/svn_checksum.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_iter.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/svn_private_config.h
+
+subversion/libsvn_delta/branch_repos.lo: subversion/libsvn_delta/branch_repos.c subversion/include/private/svn_branch.h subversion/include/private/svn_branch_repos.h subversion/include/private/svn_debug.h subversion/include/private/svn_element.h subversion/include/svn_checksum.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_iter.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/svn_private_config.h
+
+subversion/libsvn_delta/cancel.lo: subversion/libsvn_delta/cancel.c subversion/include/private/svn_debug.h subversion/include/svn_checksum.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_string.h subversion/include/svn_types.h
+
+subversion/libsvn_delta/compat.lo: subversion/libsvn_delta/compat.c subversion/include/private/svn_debug.h subversion/include/private/svn_delta_private.h subversion/include/private/svn_editor.h subversion/include/private/svn_sorts_private.h subversion/include/svn_checksum.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/svn_private_config.h
+
+subversion/libsvn_delta/compose_delta.lo: subversion/libsvn_delta/compose_delta.c subversion/include/private/svn_debug.h subversion/include/svn_checksum.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/libsvn_delta/delta.h
+
+subversion/libsvn_delta/debug_editor.lo: subversion/libsvn_delta/debug_editor.c subversion/include/private/svn_debug.h subversion/include/private/svn_delta_private.h subversion/include/private/svn_editor.h subversion/include/svn_checksum.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_string.h subversion/include/svn_types.h
+
+subversion/libsvn_delta/default_editor.lo: subversion/libsvn_delta/default_editor.c subversion/include/private/svn_debug.h subversion/include/svn_checksum.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_string.h subversion/include/svn_types.h
+
+subversion/libsvn_delta/deprecated.lo: subversion/libsvn_delta/deprecated.c subversion/include/private/svn_debug.h subversion/include/svn_checksum.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h
+
+subversion/libsvn_delta/depth_filter_editor.lo: subversion/libsvn_delta/depth_filter_editor.c subversion/include/private/svn_debug.h subversion/include/svn_checksum.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_string.h subversion/include/svn_types.h
+
+subversion/libsvn_delta/editor.lo: subversion/libsvn_delta/editor.c subversion/include/private/svn_debug.h subversion/include/private/svn_editor.h subversion/include/svn_checksum.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h
+
+subversion/libsvn_delta/element.lo: subversion/libsvn_delta/element.c subversion/include/private/svn_debug.h subversion/include/private/svn_element.h subversion/include/private/svn_sorts_private.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_iter.h subversion/include/svn_props.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/svn_private_config.h
+
+subversion/libsvn_delta/path_driver.lo: subversion/libsvn_delta/path_driver.c subversion/include/private/svn_debug.h subversion/include/private/svn_fspath.h subversion/include/private/svn_sorts_private.h subversion/include/svn_checksum.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h
+
+subversion/libsvn_delta/svndiff.lo: subversion/libsvn_delta/svndiff.c subversion/include/private/svn_debug.h subversion/include/private/svn_delta_private.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_editor.h subversion/include/private/svn_error_private.h subversion/include/private/svn_string_private.h subversion/include/private/svn_subr_private.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/libsvn_delta/delta.h subversion/svn_private_config.h
+
+subversion/libsvn_delta/text_delta.lo: subversion/libsvn_delta/text_delta.c subversion/include/private/svn_debug.h subversion/include/svn_checksum.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/libsvn_delta/delta.h
+
+subversion/libsvn_delta/version.lo: subversion/libsvn_delta/version.c subversion/include/private/svn_debug.h subversion/include/svn_checksum.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_version.h
+
+subversion/libsvn_delta/xdelta.lo: subversion/libsvn_delta/xdelta.c subversion/include/private/svn_debug.h subversion/include/private/svn_string_private.h subversion/include/svn_checksum.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/libsvn_delta/delta.h
+
+subversion/libsvn_diff/binary_diff.lo: subversion/libsvn_diff/binary_diff.c subversion/include/private/svn_debug.h subversion/include/svn_checksum.h subversion/include/svn_diff.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/libsvn_diff/diff.h subversion/svn_private_config.h
+
+subversion/libsvn_diff/deprecated.lo: subversion/libsvn_diff/deprecated.c subversion/include/private/svn_debug.h subversion/include/svn_checksum.h subversion/include/svn_diff.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_utf.h subversion/svn_private_config.h
+
+subversion/libsvn_diff/diff.lo: subversion/libsvn_diff/diff.c subversion/include/private/svn_debug.h subversion/include/svn_checksum.h subversion/include/svn_diff.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/libsvn_diff/diff.h
+
+subversion/libsvn_diff/diff3.lo: subversion/libsvn_diff/diff3.c subversion/include/private/svn_debug.h subversion/include/svn_checksum.h subversion/include/svn_diff.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/libsvn_diff/diff.h
+
+subversion/libsvn_diff/diff4.lo: subversion/libsvn_diff/diff4.c subversion/include/private/svn_debug.h subversion/include/svn_checksum.h subversion/include/svn_diff.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/libsvn_diff/diff.h
+
+subversion/libsvn_diff/diff_file.lo: subversion/libsvn_diff/diff_file.c subversion/include/private/svn_adler32.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_diff_private.h subversion/include/private/svn_eol_private.h subversion/include/private/svn_string_private.h subversion/include/private/svn_utf_private.h subversion/include/svn_checksum.h subversion/include/svn_ctype.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_subst.h subversion/include/svn_types.h subversion/include/svn_utf.h subversion/libsvn_diff/diff.h subversion/svn_private_config.h
+
+subversion/libsvn_diff/diff_memory.lo: subversion/libsvn_diff/diff_memory.c subversion/include/private/svn_adler32.h subversion/include/private/svn_debug.h subversion/include/private/svn_diff_private.h subversion/include/svn_checksum.h subversion/include/svn_diff.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_utf.h subversion/libsvn_diff/diff.h subversion/svn_private_config.h
+
+subversion/libsvn_diff/diff_tree.lo: subversion/libsvn_diff/diff_tree.c subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/svn_checksum.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/svn_private_config.h
+
+subversion/libsvn_diff/lcs.lo: subversion/libsvn_diff/lcs.c subversion/include/private/svn_debug.h subversion/include/svn_checksum.h subversion/include/svn_diff.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/libsvn_diff/diff.h
+
+subversion/libsvn_diff/parse-diff.lo: subversion/libsvn_diff/parse-diff.c subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_diff_private.h subversion/include/private/svn_eol_private.h subversion/include/private/svn_sorts_private.h subversion/include/svn_checksum.h subversion/include/svn_ctype.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_utf.h subversion/libsvn_diff/diff.h subversion/svn_private_config.h
+
+subversion/libsvn_diff/token.lo: subversion/libsvn_diff/token.c subversion/include/private/svn_debug.h subversion/include/svn_checksum.h subversion/include/svn_diff.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/libsvn_diff/diff.h
+
+subversion/libsvn_diff/util.lo: subversion/libsvn_diff/util.c subversion/include/private/svn_debug.h subversion/include/private/svn_diff_private.h subversion/include/private/svn_sorts_private.h subversion/include/svn_checksum.h subversion/include/svn_ctype.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_utf.h subversion/include/svn_version.h subversion/libsvn_diff/diff.h subversion/svn_private_config.h
+
+subversion/libsvn_fs/access.lo: subversion/libsvn_fs/access.c subversion/include/private/svn_debug.h subversion/include/private/svn_editor.h subversion/include/private/svn_fs_private.h subversion/include/private/svn_mutex.h subversion/include/svn_checksum.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/libsvn_fs/fs-loader.h subversion/libsvn_fs_base/fs_init.h subversion/libsvn_fs_fs/fs_init.h subversion/libsvn_fs_x/fs_init.h
+
+subversion/libsvn_fs/deprecated.lo: subversion/libsvn_fs/deprecated.c subversion/include/private/svn_debug.h subversion/include/private/svn_subr_private.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_string.h subversion/include/svn_types.h
+
+subversion/libsvn_fs/editor.lo: subversion/libsvn_fs/editor.c subversion/include/private/svn_debug.h subversion/include/private/svn_editor.h subversion/include/private/svn_fs_private.h subversion/include/private/svn_fspath.h subversion/include/private/svn_mutex.h subversion/include/svn_checksum.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/libsvn_fs/fs-loader.h subversion/libsvn_fs_base/fs_init.h subversion/libsvn_fs_fs/fs_init.h subversion/libsvn_fs_x/fs_init.h subversion/svn_private_config.h
+
+subversion/libsvn_fs/fs-loader.lo: subversion/libsvn_fs/fs-loader.c subversion/include/private/svn_atomic.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_editor.h subversion/include/private/svn_fs_private.h subversion/include/private/svn_fs_util.h subversion/include/private/svn_fspath.h subversion/include/private/svn_mutex.h subversion/include/private/svn_string_private.h subversion/include/private/svn_subr_private.h subversion/include/private/svn_utf_private.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_ctype.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_dso.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_version.h subversion/include/svn_xml.h subversion/libsvn_fs/fs-loader.h subversion/libsvn_fs_base/fs_init.h subversion/libsvn_fs_fs/fs_init.h subversion/libsvn_fs_x/fs_init.h subversion/svn_private_config.h
+
+subversion/libsvn_fs_base/bdb/bdb-err.lo: subversion/libsvn_fs_base/bdb/bdb-err.c subversion/include/private/svn_debug.h subversion/include/private/svn_mutex.h subversion/include/svn_checksum.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_props.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/libsvn_fs/fs-loader.h subversion/libsvn_fs_base/bdb/bdb-err.h subversion/libsvn_fs_base/bdb/bdb_compat.h subversion/libsvn_fs_base/bdb/env.h subversion/libsvn_fs_base/err.h subversion/libsvn_fs_base/fs.h subversion/libsvn_fs_base/fs_init.h subversion/libsvn_fs_fs/fs_init.h subversion/libsvn_fs_x/fs_init.h subversion/svn_private_config.h
+
+subversion/libsvn_fs_base/bdb/bdb_compat.lo: subversion/libsvn_fs_base/bdb/bdb_compat.c subversion/libsvn_fs_base/bdb/bdb_compat.h subversion/svn_private_config.h
+
+subversion/libsvn_fs_base/bdb/changes-table.lo: subversion/libsvn_fs_base/bdb/changes-table.c subversion/include/private/svn_debug.h subversion/include/private/svn_fs_util.h subversion/include/private/svn_fspath.h subversion/include/private/svn_mutex.h subversion/include/private/svn_skel.h subversion/include/svn_checksum.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_version.h subversion/libsvn_fs/fs-loader.h subversion/libsvn_fs_base/bdb/bdb-err.h subversion/libsvn_fs_base/bdb/bdb_compat.h subversion/libsvn_fs_base/bdb/changes-table.h subversion/libsvn_fs_base/bdb/dbt.h subversion/libsvn_fs_base/bdb/env.h subversion/libsvn_fs_base/err.h subversion/libsvn_fs_base/fs.h subversion/libsvn_fs_base/fs_init.h subversion/libsvn_fs_base/id.h subversion/libsvn_fs_base/trail.h subversion/libsvn_fs_base/util/fs_skels.h subversion/libsvn_fs_fs/fs_init.h subversion/libsvn_fs_x/fs_init.h subversion/svn_private_config.h
+
+subversion/libsvn_fs_base/bdb/checksum-reps-table.lo: subversion/libsvn_fs_base/bdb/checksum-reps-table.c subversion/include/private/svn_debug.h subversion/include/private/svn_mutex.h subversion/include/private/svn_skel.h subversion/include/svn_checksum.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_props.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/libsvn_fs/fs-loader.h subversion/libsvn_fs_base/bdb/bdb-err.h subversion/libsvn_fs_base/bdb/bdb_compat.h subversion/libsvn_fs_base/bdb/checksum-reps-table.h subversion/libsvn_fs_base/bdb/dbt.h subversion/libsvn_fs_base/bdb/env.h subversion/libsvn_fs_base/err.h subversion/libsvn_fs_base/fs.h subversion/libsvn_fs_base/fs_init.h subversion/libsvn_fs_base/key-gen.h subversion/libsvn_fs_base/trail.h subversion/libsvn_fs_fs/fs_init.h subversion/libsvn_fs_x/fs_init.h subversion/svn_private_config.h
+
+subversion/libsvn_fs_base/bdb/copies-table.lo: subversion/libsvn_fs_base/bdb/copies-table.c subversion/include/private/svn_debug.h subversion/include/private/svn_mutex.h subversion/include/private/svn_skel.h subversion/include/svn_checksum.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_props.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/libsvn_fs/fs-loader.h subversion/libsvn_fs_base/bdb/bdb-err.h subversion/libsvn_fs_base/bdb/bdb_compat.h subversion/libsvn_fs_base/bdb/copies-table.h subversion/libsvn_fs_base/bdb/dbt.h subversion/libsvn_fs_base/bdb/env.h subversion/libsvn_fs_base/bdb/rev-table.h subversion/libsvn_fs_base/err.h subversion/libsvn_fs_base/fs.h subversion/libsvn_fs_base/fs_init.h subversion/libsvn_fs_base/key-gen.h subversion/libsvn_fs_base/trail.h subversion/libsvn_fs_base/util/fs_skels.h subversion/libsvn_fs_fs/fs_init.h subversion/libsvn_fs_x/fs_init.h subversion/svn_private_config.h
+
+subversion/libsvn_fs_base/bdb/dbt.lo: subversion/libsvn_fs_base/bdb/dbt.c subversion/include/private/svn_debug.h subversion/include/private/svn_skel.h subversion/include/svn_checksum.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/libsvn_fs_base/bdb/dbt.h subversion/libsvn_fs_base/id.h subversion/svn_private_config.h
+
+subversion/libsvn_fs_base/bdb/env.lo: subversion/libsvn_fs_base/bdb/env.c subversion/include/private/svn_atomic.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_mutex.h subversion/include/svn_checksum.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_utf.h subversion/libsvn_fs_base/bdb/bdb-err.h subversion/libsvn_fs_base/bdb/bdb_compat.h subversion/libsvn_fs_base/bdb/env.h subversion/svn_private_config.h
+
+subversion/libsvn_fs_base/bdb/lock-tokens-table.lo: subversion/libsvn_fs_base/bdb/lock-tokens-table.c subversion/include/private/svn_debug.h subversion/include/private/svn_fs_util.h subversion/include/private/svn_mutex.h subversion/include/private/svn_skel.h subversion/include/svn_checksum.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_version.h subversion/libsvn_fs/fs-loader.h subversion/libsvn_fs_base/bdb/bdb-err.h subversion/libsvn_fs_base/bdb/bdb_compat.h subversion/libsvn_fs_base/bdb/dbt.h subversion/libsvn_fs_base/bdb/env.h subversion/libsvn_fs_base/bdb/lock-tokens-table.h subversion/libsvn_fs_base/bdb/locks-table.h subversion/libsvn_fs_base/err.h subversion/libsvn_fs_base/fs.h subversion/libsvn_fs_base/fs_init.h subversion/libsvn_fs_base/trail.h subversion/libsvn_fs_base/util/fs_skels.h subversion/libsvn_fs_fs/fs_init.h subversion/libsvn_fs_x/fs_init.h subversion/svn_private_config.h
+
+subversion/libsvn_fs_base/bdb/locks-table.lo: subversion/libsvn_fs_base/bdb/locks-table.c subversion/include/private/svn_debug.h subversion/include/private/svn_fs_util.h subversion/include/private/svn_fspath.h subversion/include/private/svn_mutex.h subversion/include/private/svn_skel.h subversion/include/svn_checksum.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_version.h subversion/libsvn_fs/fs-loader.h subversion/libsvn_fs_base/bdb/bdb-err.h subversion/libsvn_fs_base/bdb/bdb_compat.h subversion/libsvn_fs_base/bdb/dbt.h subversion/libsvn_fs_base/bdb/env.h subversion/libsvn_fs_base/bdb/lock-tokens-table.h subversion/libsvn_fs_base/bdb/locks-table.h subversion/libsvn_fs_base/err.h subversion/libsvn_fs_base/fs.h subversion/libsvn_fs_base/fs_init.h subversion/libsvn_fs_base/trail.h subversion/libsvn_fs_base/util/fs_skels.h subversion/libsvn_fs_fs/fs_init.h subversion/libsvn_fs_x/fs_init.h subversion/svn_private_config.h
+
+subversion/libsvn_fs_base/bdb/miscellaneous-table.lo: subversion/libsvn_fs_base/bdb/miscellaneous-table.c subversion/include/private/svn_debug.h subversion/include/private/svn_fs_util.h subversion/include/private/svn_mutex.h subversion/include/private/svn_skel.h subversion/include/svn_checksum.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_version.h subversion/libsvn_fs/fs-loader.h subversion/libsvn_fs_base/bdb/bdb-err.h subversion/libsvn_fs_base/bdb/bdb_compat.h subversion/libsvn_fs_base/bdb/dbt.h subversion/libsvn_fs_base/bdb/env.h subversion/libsvn_fs_base/bdb/miscellaneous-table.h subversion/libsvn_fs_base/err.h subversion/libsvn_fs_base/fs.h subversion/libsvn_fs_base/fs_init.h subversion/libsvn_fs_base/trail.h subversion/libsvn_fs_fs/fs_init.h subversion/libsvn_fs_x/fs_init.h subversion/svn_private_config.h
+
+subversion/libsvn_fs_base/bdb/node-origins-table.lo: subversion/libsvn_fs_base/bdb/node-origins-table.c subversion/include/private/svn_debug.h subversion/include/private/svn_mutex.h subversion/include/private/svn_skel.h subversion/include/svn_checksum.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_props.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/libsvn_fs/fs-loader.h subversion/libsvn_fs_base/bdb/bdb-err.h subversion/libsvn_fs_base/bdb/bdb_compat.h subversion/libsvn_fs_base/bdb/dbt.h subversion/libsvn_fs_base/bdb/env.h subversion/libsvn_fs_base/bdb/node-origins-table.h subversion/libsvn_fs_base/err.h subversion/libsvn_fs_base/fs.h subversion/libsvn_fs_base/fs_init.h subversion/libsvn_fs_base/id.h subversion/libsvn_fs_base/trail.h subversion/libsvn_fs_fs/fs_init.h subversion/libsvn_fs_x/fs_init.h subversion/svn_private_config.h
+
+subversion/libsvn_fs_base/bdb/nodes-table.lo: subversion/libsvn_fs_base/bdb/nodes-table.c subversion/include/private/svn_debug.h subversion/include/private/svn_mutex.h subversion/include/private/svn_skel.h subversion/include/svn_checksum.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_props.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/libsvn_fs/fs-loader.h subversion/libsvn_fs_base/bdb/bdb-err.h subversion/libsvn_fs_base/bdb/bdb_compat.h subversion/libsvn_fs_base/bdb/dbt.h subversion/libsvn_fs_base/bdb/env.h subversion/libsvn_fs_base/bdb/nodes-table.h subversion/libsvn_fs_base/err.h subversion/libsvn_fs_base/fs.h subversion/libsvn_fs_base/fs_init.h subversion/libsvn_fs_base/id.h subversion/libsvn_fs_base/key-gen.h subversion/libsvn_fs_base/trail.h subversion/libsvn_fs_base/util/fs_skels.h subversion/libsvn_fs_fs/fs_init.h subversion/libsvn_fs_x/fs_init.h subversion/svn_private_config.h
+
+subversion/libsvn_fs_base/bdb/reps-table.lo: subversion/libsvn_fs_base/bdb/reps-table.c subversion/include/private/svn_debug.h subversion/include/private/svn_mutex.h subversion/include/private/svn_skel.h subversion/include/svn_checksum.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_props.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/libsvn_fs/fs-loader.h subversion/libsvn_fs_base/bdb/bdb-err.h subversion/libsvn_fs_base/bdb/bdb_compat.h subversion/libsvn_fs_base/bdb/dbt.h subversion/libsvn_fs_base/bdb/env.h subversion/libsvn_fs_base/bdb/reps-table.h subversion/libsvn_fs_base/bdb/strings-table.h subversion/libsvn_fs_base/err.h subversion/libsvn_fs_base/fs.h subversion/libsvn_fs_base/fs_init.h subversion/libsvn_fs_base/key-gen.h subversion/libsvn_fs_base/trail.h subversion/libsvn_fs_base/util/fs_skels.h subversion/libsvn_fs_fs/fs_init.h subversion/libsvn_fs_x/fs_init.h subversion/svn_private_config.h
+
+subversion/libsvn_fs_base/bdb/rev-table.lo: subversion/libsvn_fs_base/bdb/rev-table.c subversion/include/private/svn_debug.h subversion/include/private/svn_fs_util.h subversion/include/private/svn_mutex.h subversion/include/private/svn_skel.h subversion/include/svn_checksum.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_props.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_version.h subversion/libsvn_fs/fs-loader.h subversion/libsvn_fs_base/bdb/bdb-err.h subversion/libsvn_fs_base/bdb/bdb_compat.h subversion/libsvn_fs_base/bdb/dbt.h subversion/libsvn_fs_base/bdb/env.h subversion/libsvn_fs_base/bdb/rev-table.h subversion/libsvn_fs_base/err.h subversion/libsvn_fs_base/fs.h subversion/libsvn_fs_base/fs_init.h subversion/libsvn_fs_base/trail.h subversion/libsvn_fs_base/util/fs_skels.h subversion/libsvn_fs_fs/fs_init.h subversion/libsvn_fs_x/fs_init.h subversion/svn_private_config.h
+
+subversion/libsvn_fs_base/bdb/strings-table.lo: subversion/libsvn_fs_base/bdb/strings-table.c subversion/include/private/svn_debug.h subversion/include/private/svn_mutex.h subversion/include/private/svn_skel.h subversion/include/svn_checksum.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/libsvn_fs/fs-loader.h subversion/libsvn_fs_base/bdb/bdb-err.h subversion/libsvn_fs_base/bdb/bdb_compat.h subversion/libsvn_fs_base/bdb/dbt.h subversion/libsvn_fs_base/bdb/env.h subversion/libsvn_fs_base/bdb/strings-table.h subversion/libsvn_fs_base/err.h subversion/libsvn_fs_base/fs.h subversion/libsvn_fs_base/fs_init.h subversion/libsvn_fs_base/key-gen.h subversion/libsvn_fs_base/trail.h subversion/libsvn_fs_fs/fs_init.h subversion/libsvn_fs_x/fs_init.h subversion/svn_private_config.h
+
+subversion/libsvn_fs_base/bdb/txn-table.lo: subversion/libsvn_fs_base/bdb/txn-table.c subversion/include/private/svn_debug.h subversion/include/private/svn_mutex.h subversion/include/private/svn_skel.h subversion/include/svn_checksum.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/libsvn_fs/fs-loader.h subversion/libsvn_fs_base/bdb/bdb-err.h subversion/libsvn_fs_base/bdb/bdb_compat.h subversion/libsvn_fs_base/bdb/dbt.h subversion/libsvn_fs_base/bdb/env.h subversion/libsvn_fs_base/bdb/txn-table.h subversion/libsvn_fs_base/err.h subversion/libsvn_fs_base/fs.h subversion/libsvn_fs_base/fs_init.h subversion/libsvn_fs_base/key-gen.h subversion/libsvn_fs_base/trail.h subversion/libsvn_fs_base/util/fs_skels.h subversion/libsvn_fs_fs/fs_init.h subversion/libsvn_fs_x/fs_init.h subversion/svn_private_config.h
+
+subversion/libsvn_fs_base/bdb/uuids-table.lo: subversion/libsvn_fs_base/bdb/uuids-table.c subversion/include/private/svn_debug.h subversion/include/private/svn_mutex.h subversion/include/private/svn_skel.h subversion/include/svn_checksum.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_props.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/libsvn_fs/fs-loader.h subversion/libsvn_fs_base/bdb/bdb-err.h subversion/libsvn_fs_base/bdb/bdb_compat.h subversion/libsvn_fs_base/bdb/dbt.h subversion/libsvn_fs_base/bdb/env.h subversion/libsvn_fs_base/bdb/uuids-table.h subversion/libsvn_fs_base/err.h subversion/libsvn_fs_base/fs.h subversion/libsvn_fs_base/fs_init.h subversion/libsvn_fs_base/trail.h subversion/libsvn_fs_fs/fs_init.h subversion/libsvn_fs_x/fs_init.h subversion/svn_private_config.h
+
+subversion/libsvn_fs_base/dag.lo: subversion/libsvn_fs_base/dag.c subversion/include/private/svn_debug.h subversion/include/private/svn_fs_util.h subversion/include/private/svn_fspath.h subversion/include/private/svn_mutex.h subversion/include/private/svn_skel.h subversion/include/svn_checksum.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_version.h subversion/libsvn_fs/fs-loader.h subversion/libsvn_fs_base/bdb/bdb_compat.h subversion/libsvn_fs_base/bdb/changes-table.h subversion/libsvn_fs_base/bdb/checksum-reps-table.h subversion/libsvn_fs_base/bdb/copies-table.h subversion/libsvn_fs_base/bdb/env.h subversion/libsvn_fs_base/bdb/node-origins-table.h subversion/libsvn_fs_base/bdb/nodes-table.h subversion/libsvn_fs_base/bdb/reps-table.h subversion/libsvn_fs_base/bdb/rev-table.h subversion/libsvn_fs_base/bdb/strings-table.h subversion/libsvn_fs_base/bdb/txn-table.h subversion/libsvn_fs_base/dag.h subversion/libsvn_fs_base/err.h subversion/libsvn_fs_base/fs.h subversion/libsvn_fs_base/fs_init.h subversion/libsvn_fs_base/id.h subversion/libsvn_fs_base/key-gen.h subversion/libsvn_fs_base/node-rev.h subversion/libsvn_fs_base/reps-strings.h subversion/libsvn_fs_base/revs-txns.h subversion/libsvn_fs_base/trail.h subversion/libsvn_fs_base/util/fs_skels.h subversion/libsvn_fs_fs/fs_init.h subversion/libsvn_fs_x/fs_init.h subversion/svn_private_config.h
+
+subversion/libsvn_fs_base/err.lo: subversion/libsvn_fs_base/err.c subversion/include/private/svn_debug.h subversion/include/private/svn_mutex.h subversion/include/svn_checksum.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_props.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/libsvn_fs/fs-loader.h subversion/libsvn_fs_base/err.h subversion/libsvn_fs_base/fs_init.h subversion/libsvn_fs_base/id.h subversion/libsvn_fs_fs/fs_init.h subversion/libsvn_fs_x/fs_init.h subversion/svn_private_config.h
+
+subversion/libsvn_fs_base/fs.lo: subversion/libsvn_fs_base/fs.c subversion/include/private/svn_debug.h subversion/include/private/svn_fs_util.h subversion/include/private/svn_mutex.h subversion/include/svn_checksum.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_utf.h subversion/include/svn_version.h subversion/libsvn_fs/fs-loader.h subversion/libsvn_fs_base/bdb/bdb-err.h subversion/libsvn_fs_base/bdb/bdb_compat.h subversion/libsvn_fs_base/bdb/changes-table.h subversion/libsvn_fs_base/bdb/checksum-reps-table.h subversion/libsvn_fs_base/bdb/copies-table.h subversion/libsvn_fs_base/bdb/env.h subversion/libsvn_fs_base/bdb/lock-tokens-table.h subversion/libsvn_fs_base/bdb/locks-table.h subversion/libsvn_fs_base/bdb/miscellaneous-table.h subversion/libsvn_fs_base/bdb/node-origins-table.h subversion/libsvn_fs_base/bdb/nodes-table.h subversion/libsvn_fs_base/bdb/reps-table.h subversion/libsvn_fs_base/bdb/rev-table.h subversion/libsvn_fs_base/bdb/strings-table.h subversion/libsvn_fs_base/bdb/txn-table.h subversion/libsvn_fs_base/bdb/uuids-table.h subversion/libsvn_fs_base/dag.h subversion/libsvn_fs_base/err.h subversion/libsvn_fs_base/fs.h subversion/libsvn_fs_base/fs_init.h subversion/libsvn_fs_base/id.h subversion/libsvn_fs_base/lock.h subversion/libsvn_fs_base/revs-txns.h subversion/libsvn_fs_base/trail.h subversion/libsvn_fs_base/tree.h subversion/libsvn_fs_base/uuid.h subversion/libsvn_fs_fs/fs_init.h subversion/libsvn_fs_x/fs_init.h subversion/svn_private_config.h
+
+subversion/libsvn_fs_base/id.lo: subversion/libsvn_fs_base/id.c subversion/include/private/svn_debug.h subversion/include/private/svn_mutex.h subversion/include/svn_checksum.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_props.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/libsvn_fs/fs-loader.h subversion/libsvn_fs_base/fs_init.h subversion/libsvn_fs_base/id.h subversion/libsvn_fs_fs/fs_init.h subversion/libsvn_fs_x/fs_init.h
+
+subversion/libsvn_fs_base/key-gen.lo: subversion/libsvn_fs_base/key-gen.c subversion/include/private/svn_debug.h subversion/include/private/svn_skel.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/libsvn_fs_base/key-gen.h
+
+subversion/libsvn_fs_base/lock.lo: subversion/libsvn_fs_base/lock.c subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_fs_util.h subversion/include/private/svn_mutex.h subversion/include/private/svn_skel.h subversion/include/private/svn_subr_private.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_version.h subversion/libsvn_fs/fs-loader.h subversion/libsvn_fs_base/bdb/bdb_compat.h subversion/libsvn_fs_base/bdb/env.h subversion/libsvn_fs_base/bdb/lock-tokens-table.h subversion/libsvn_fs_base/bdb/locks-table.h subversion/libsvn_fs_base/err.h subversion/libsvn_fs_base/fs.h subversion/libsvn_fs_base/fs_init.h subversion/libsvn_fs_base/lock.h subversion/libsvn_fs_base/revs-txns.h subversion/libsvn_fs_base/trail.h subversion/libsvn_fs_base/tree.h subversion/libsvn_fs_base/util/fs_skels.h subversion/libsvn_fs_fs/fs_init.h subversion/libsvn_fs_x/fs_init.h subversion/svn_private_config.h
+
+subversion/libsvn_fs_base/node-rev.lo: subversion/libsvn_fs_base/node-rev.c subversion/include/private/svn_debug.h subversion/include/private/svn_mutex.h subversion/include/svn_checksum.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_props.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/libsvn_fs/fs-loader.h subversion/libsvn_fs_base/bdb/bdb_compat.h subversion/libsvn_fs_base/bdb/env.h subversion/libsvn_fs_base/bdb/node-origins-table.h subversion/libsvn_fs_base/bdb/nodes-table.h subversion/libsvn_fs_base/err.h subversion/libsvn_fs_base/fs.h subversion/libsvn_fs_base/fs_init.h subversion/libsvn_fs_base/id.h subversion/libsvn_fs_base/node-rev.h subversion/libsvn_fs_base/reps-strings.h subversion/libsvn_fs_base/trail.h subversion/libsvn_fs_fs/fs_init.h subversion/libsvn_fs_x/fs_init.h subversion/svn_private_config.h
+
+subversion/libsvn_fs_base/reps-strings.lo: subversion/libsvn_fs_base/reps-strings.c subversion/include/private/svn_debug.h subversion/include/private/svn_mutex.h subversion/include/svn_checksum.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/libsvn_fs/fs-loader.h subversion/libsvn_fs_base/bdb/bdb_compat.h subversion/libsvn_fs_base/bdb/env.h subversion/libsvn_fs_base/bdb/reps-table.h subversion/libsvn_fs_base/bdb/strings-table.h subversion/libsvn_fs_base/err.h subversion/libsvn_fs_base/fs.h subversion/libsvn_fs_base/fs_init.h subversion/libsvn_fs_base/reps-strings.h subversion/libsvn_fs_base/trail.h subversion/libsvn_fs_fs/fs_init.h subversion/libsvn_fs_x/fs_init.h subversion/svn_private_config.h
+
+subversion/libsvn_fs_base/revs-txns.lo: subversion/libsvn_fs_base/revs-txns.c subversion/include/private/svn_debug.h subversion/include/private/svn_fs_util.h subversion/include/private/svn_mutex.h subversion/include/private/svn_skel.h subversion/include/svn_checksum.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_version.h subversion/libsvn_fs/fs-loader.h subversion/libsvn_fs_base/bdb/bdb_compat.h subversion/libsvn_fs_base/bdb/changes-table.h subversion/libsvn_fs_base/bdb/copies-table.h subversion/libsvn_fs_base/bdb/env.h subversion/libsvn_fs_base/bdb/rev-table.h subversion/libsvn_fs_base/bdb/txn-table.h subversion/libsvn_fs_base/dag.h subversion/libsvn_fs_base/err.h subversion/libsvn_fs_base/fs.h subversion/libsvn_fs_base/fs_init.h subversion/libsvn_fs_base/id.h subversion/libsvn_fs_base/key-gen.h subversion/libsvn_fs_base/revs-txns.h subversion/libsvn_fs_base/trail.h subversion/libsvn_fs_base/tree.h subversion/libsvn_fs_fs/fs_init.h subversion/libsvn_fs_x/fs_init.h subversion/svn_private_config.h
+
+subversion/libsvn_fs_base/trail.lo: subversion/libsvn_fs_base/trail.c subversion/include/private/svn_debug.h subversion/include/private/svn_mutex.h subversion/include/svn_checksum.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/libsvn_fs/fs-loader.h subversion/libsvn_fs_base/bdb/bdb-err.h subversion/libsvn_fs_base/bdb/bdb_compat.h subversion/libsvn_fs_base/bdb/env.h subversion/libsvn_fs_base/err.h subversion/libsvn_fs_base/fs.h subversion/libsvn_fs_base/fs_init.h subversion/libsvn_fs_base/trail.h subversion/libsvn_fs_fs/fs_init.h subversion/libsvn_fs_x/fs_init.h subversion/svn_private_config.h
+
+subversion/libsvn_fs_base/tree.lo: subversion/libsvn_fs_base/tree.c subversion/include/private/svn_debug.h subversion/include/private/svn_fs_util.h subversion/include/private/svn_fspath.h subversion/include/private/svn_mergeinfo_private.h subversion/include/private/svn_mutex.h subversion/include/private/svn_skel.h subversion/include/private/svn_sorts_private.h subversion/include/svn_checksum.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_version.h subversion/libsvn_fs/fs-loader.h subversion/libsvn_fs_base/bdb/bdb_compat.h subversion/libsvn_fs_base/bdb/changes-table.h subversion/libsvn_fs_base/bdb/copies-table.h subversion/libsvn_fs_base/bdb/env.h subversion/libsvn_fs_base/bdb/miscellaneous-table.h subversion/libsvn_fs_base/bdb/node-origins-table.h subversion/libsvn_fs_base/bdb/nodes-table.h subversion/libsvn_fs_base/bdb/rev-table.h subversion/libsvn_fs_base/bdb/txn-table.h subversion/libsvn_fs_base/dag.h subversion/libsvn_fs_base/err.h subversion/libsvn_fs_base/fs.h subversion/libsvn_fs_base/fs_init.h subversion/libsvn_fs_base/id.h subversion/libsvn_fs_base/key-gen.h subversion/libsvn_fs_base/lock.h subversion/libsvn_fs_base/node-rev.h subversion/libsvn_fs_base/revs-txns.h subversion/libsvn_fs_base/trail.h subversion/libsvn_fs_base/tree.h subversion/libsvn_fs_fs/fs_init.h subversion/libsvn_fs_x/fs_init.h subversion/svn_private_config.h
+
+subversion/libsvn_fs_base/util/fs_skels.lo: subversion/libsvn_fs_base/util/fs_skels.c subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_skel.h subversion/include/private/svn_subr_private.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/libsvn_fs_base/bdb/bdb_compat.h subversion/libsvn_fs_base/bdb/env.h subversion/libsvn_fs_base/fs.h subversion/libsvn_fs_base/id.h subversion/libsvn_fs_base/util/fs_skels.h subversion/svn_private_config.h
+
+subversion/libsvn_fs_base/uuid.lo: subversion/libsvn_fs_base/uuid.c subversion/include/private/svn_debug.h subversion/include/private/svn_fs_util.h subversion/include/private/svn_mutex.h subversion/include/svn_checksum.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_version.h subversion/libsvn_fs/fs-loader.h subversion/libsvn_fs_base/bdb/bdb_compat.h subversion/libsvn_fs_base/bdb/env.h subversion/libsvn_fs_base/bdb/uuids-table.h subversion/libsvn_fs_base/err.h subversion/libsvn_fs_base/fs.h subversion/libsvn_fs_base/fs_init.h subversion/libsvn_fs_base/trail.h subversion/libsvn_fs_base/uuid.h subversion/libsvn_fs_fs/fs_init.h subversion/libsvn_fs_x/fs_init.h subversion/svn_private_config.h
+
+subversion/libsvn_fs_fs/cached_data.lo: subversion/libsvn_fs_fs/cached_data.c subversion/include/private/svn_atomic.h subversion/include/private/svn_cache.h subversion/include/private/svn_debug.h subversion/include/private/svn_delta_private.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_editor.h subversion/include/private/svn_fs_fs_private.h subversion/include/private/svn_fs_private.h subversion/include/private/svn_io_private.h subversion/include/private/svn_mutex.h subversion/include/private/svn_sorts_private.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_subr_private.h subversion/include/private/svn_temp_serializer.h subversion/include/private/svn_token.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_ctype.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_iter.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/libsvn_delta/delta.h subversion/libsvn_fs/fs-loader.h subversion/libsvn_fs_base/fs_init.h subversion/libsvn_fs_fs/cached_data.h subversion/libsvn_fs_fs/fs.h subversion/libsvn_fs_fs/fs_fs.h subversion/libsvn_fs_fs/fs_init.h subversion/libsvn_fs_fs/id.h subversion/libsvn_fs_fs/index.h subversion/libsvn_fs_fs/low_level.h subversion/libsvn_fs_fs/pack.h subversion/libsvn_fs_fs/rev_file.h subversion/libsvn_fs_fs/temp_serializer.h subversion/libsvn_fs_fs/util.h subversion/libsvn_fs_x/fs_init.h subversion/svn_private_config.h
+
+subversion/libsvn_fs_fs/caching.lo: subversion/libsvn_fs_fs/caching.c subversion/include/private/svn_atomic.h subversion/include/private/svn_cache.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_editor.h subversion/include/private/svn_fs_fs_private.h subversion/include/private/svn_fs_private.h subversion/include/private/svn_mutex.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_subr_private.h subversion/include/private/svn_token.h subversion/include/svn_cache_config.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_iter.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/libsvn_fs/fs-loader.h subversion/libsvn_fs_base/fs_init.h subversion/libsvn_fs_fs/dag.h subversion/libsvn_fs_fs/fs.h subversion/libsvn_fs_fs/fs_fs.h subversion/libsvn_fs_fs/fs_init.h subversion/libsvn_fs_fs/id.h subversion/libsvn_fs_fs/index.h subversion/libsvn_fs_fs/rev_file.h subversion/libsvn_fs_fs/temp_serializer.h subversion/libsvn_fs_fs/tree.h subversion/libsvn_fs_x/fs_init.h subversion/svn_private_config.h
+
+subversion/libsvn_fs_fs/dag.lo: subversion/libsvn_fs_fs/dag.c subversion/include/private/svn_atomic.h subversion/include/private/svn_cache.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_editor.h subversion/include/private/svn_fs_fs_private.h subversion/include/private/svn_fs_private.h subversion/include/private/svn_fspath.h subversion/include/private/svn_mutex.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_temp_serializer.h subversion/include/private/svn_token.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_iter.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/libsvn_fs/fs-loader.h subversion/libsvn_fs_base/fs_init.h subversion/libsvn_fs_fs/cached_data.h subversion/libsvn_fs_fs/dag.h subversion/libsvn_fs_fs/fs.h subversion/libsvn_fs_fs/fs_fs.h subversion/libsvn_fs_fs/fs_init.h subversion/libsvn_fs_fs/id.h subversion/libsvn_fs_fs/rev_file.h subversion/libsvn_fs_fs/temp_serializer.h subversion/libsvn_fs_fs/transaction.h subversion/libsvn_fs_x/fs_init.h subversion/svn_private_config.h
+
+subversion/libsvn_fs_fs/dump-index.lo: subversion/libsvn_fs_fs/dump-index.c subversion/include/private/svn_atomic.h subversion/include/private/svn_cache.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_editor.h subversion/include/private/svn_fs_fs_private.h subversion/include/private/svn_fs_private.h subversion/include/private/svn_mutex.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_token.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_iter.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/libsvn_fs/fs-loader.h subversion/libsvn_fs_base/fs_init.h subversion/libsvn_fs_fs/fs.h subversion/libsvn_fs_fs/fs_init.h subversion/libsvn_fs_fs/id.h subversion/libsvn_fs_fs/index.h subversion/libsvn_fs_fs/rev_file.h subversion/libsvn_fs_fs/util.h subversion/libsvn_fs_x/fs_init.h
+
+subversion/libsvn_fs_fs/fs.lo: subversion/libsvn_fs_fs/fs.c subversion/include/private/svn_atomic.h subversion/include/private/svn_cache.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_editor.h subversion/include/private/svn_fs_fs_private.h subversion/include/private/svn_fs_private.h subversion/include/private/svn_fs_util.h subversion/include/private/svn_mutex.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_token.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_iter.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_version.h subversion/libsvn_fs/fs-loader.h subversion/libsvn_fs_base/fs_init.h subversion/libsvn_fs_fs/fs.h subversion/libsvn_fs_fs/fs_fs.h subversion/libsvn_fs_fs/fs_init.h subversion/libsvn_fs_fs/hotcopy.h subversion/libsvn_fs_fs/id.h subversion/libsvn_fs_fs/lock.h subversion/libsvn_fs_fs/pack.h subversion/libsvn_fs_fs/recovery.h subversion/libsvn_fs_fs/rep-cache.h subversion/libsvn_fs_fs/rev_file.h subversion/libsvn_fs_fs/revprops.h subversion/libsvn_fs_fs/transaction.h subversion/libsvn_fs_fs/tree.h subversion/libsvn_fs_fs/util.h subversion/libsvn_fs_fs/verify.h subversion/libsvn_fs_x/fs_init.h subversion/svn_private_config.h
+
+subversion/libsvn_fs_fs/fs_fs.lo: subversion/libsvn_fs_fs/fs_fs.c subversion/include/private/svn_atomic.h subversion/include/private/svn_cache.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_editor.h subversion/include/private/svn_fs_fs_private.h subversion/include/private/svn_fs_private.h subversion/include/private/svn_fs_util.h subversion/include/private/svn_io_private.h subversion/include/private/svn_mutex.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_string_private.h subversion/include/private/svn_subr_private.h subversion/include/private/svn_token.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_iter.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_version.h subversion/libsvn_fs/fs-loader.h subversion/libsvn_fs_base/fs_init.h subversion/libsvn_fs_fs/cached_data.h subversion/libsvn_fs_fs/fs.h subversion/libsvn_fs_fs/fs_fs.h subversion/libsvn_fs_fs/fs_init.h subversion/libsvn_fs_fs/id.h subversion/libsvn_fs_fs/index.h subversion/libsvn_fs_fs/rep-cache.h subversion/libsvn_fs_fs/rev_file.h subversion/libsvn_fs_fs/revprops.h subversion/libsvn_fs_fs/transaction.h subversion/libsvn_fs_fs/tree.h subversion/libsvn_fs_fs/util.h subversion/libsvn_fs_x/fs_init.h subversion/svn_private_config.h
+
+subversion/libsvn_fs_fs/hotcopy.lo: subversion/libsvn_fs_fs/hotcopy.c subversion/include/private/svn_atomic.h subversion/include/private/svn_cache.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_editor.h subversion/include/private/svn_fs_fs_private.h subversion/include/private/svn_fs_private.h subversion/include/private/svn_mutex.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_token.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_iter.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/libsvn_fs/fs-loader.h subversion/libsvn_fs_base/fs_init.h subversion/libsvn_fs_fs/fs.h subversion/libsvn_fs_fs/fs_fs.h subversion/libsvn_fs_fs/fs_init.h subversion/libsvn_fs_fs/hotcopy.h subversion/libsvn_fs_fs/id.h subversion/libsvn_fs_fs/recovery.h subversion/libsvn_fs_fs/rep-cache.h subversion/libsvn_fs_fs/rev_file.h subversion/libsvn_fs_fs/revprops.h subversion/libsvn_fs_fs/util.h subversion/libsvn_fs_x/fs_init.h subversion/svn_private_config.h
+
+subversion/libsvn_fs_fs/id.lo: subversion/libsvn_fs_fs/id.c subversion/include/private/svn_atomic.h subversion/include/private/svn_cache.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_editor.h subversion/include/private/svn_fs_fs_private.h subversion/include/private/svn_fs_private.h subversion/include/private/svn_mutex.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_string_private.h subversion/include/private/svn_temp_serializer.h subversion/include/private/svn_token.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_iter.h subversion/include/svn_mergeinfo.h subversion/include/svn_props.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/libsvn_fs/fs-loader.h subversion/libsvn_fs_base/fs_init.h subversion/libsvn_fs_fs/fs.h subversion/libsvn_fs_fs/fs_init.h subversion/libsvn_fs_fs/id.h subversion/libsvn_fs_fs/index.h subversion/libsvn_fs_fs/rev_file.h subversion/libsvn_fs_x/fs_init.h
+
+subversion/libsvn_fs_fs/index.lo: subversion/libsvn_fs_fs/index.c subversion/include/private/svn_atomic.h subversion/include/private/svn_cache.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_editor.h subversion/include/private/svn_fs_fs_private.h subversion/include/private/svn_fs_private.h subversion/include/private/svn_mutex.h subversion/include/private/svn_sorts_private.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_subr_private.h subversion/include/private/svn_temp_serializer.h subversion/include/private/svn_token.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_iter.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/libsvn_fs/fs-loader.h subversion/libsvn_fs_base/fs_init.h subversion/libsvn_fs_fs/fs.h subversion/libsvn_fs_fs/fs_fs.h subversion/libsvn_fs_fs/fs_init.h subversion/libsvn_fs_fs/id.h subversion/libsvn_fs_fs/index.h subversion/libsvn_fs_fs/pack.h subversion/libsvn_fs_fs/rev_file.h subversion/libsvn_fs_fs/temp_serializer.h subversion/libsvn_fs_fs/util.h subversion/libsvn_fs_x/fs_init.h subversion/svn_private_config.h
+
+subversion/libsvn_fs_fs/load-index.lo: subversion/libsvn_fs_fs/load-index.c subversion/include/private/svn_atomic.h subversion/include/private/svn_cache.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_editor.h subversion/include/private/svn_fs_fs_private.h subversion/include/private/svn_fs_private.h subversion/include/private/svn_mutex.h subversion/include/private/svn_sorts_private.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_token.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_iter.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/libsvn_fs_fs/fs.h subversion/libsvn_fs_fs/id.h subversion/libsvn_fs_fs/index.h subversion/libsvn_fs_fs/rev_file.h subversion/libsvn_fs_fs/transaction.h subversion/libsvn_fs_fs/util.h
+
+subversion/libsvn_fs_fs/lock.lo: subversion/libsvn_fs_fs/lock.c subversion/include/private/svn_atomic.h subversion/include/private/svn_cache.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_editor.h subversion/include/private/svn_fs_fs_private.h subversion/include/private/svn_fs_private.h subversion/include/private/svn_fs_util.h subversion/include/private/svn_fspath.h subversion/include/private/svn_mutex.h subversion/include/private/svn_sorts_private.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_token.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_iter.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_utf.h subversion/include/svn_version.h subversion/libsvn_fs/fs-loader.h subversion/libsvn_fs_base/fs_init.h subversion/libsvn_fs_fs/fs.h subversion/libsvn_fs_fs/fs_fs.h subversion/libsvn_fs_fs/fs_init.h subversion/libsvn_fs_fs/id.h subversion/libsvn_fs_fs/lock.h subversion/libsvn_fs_fs/rev_file.h subversion/libsvn_fs_fs/tree.h subversion/libsvn_fs_fs/util.h subversion/libsvn_fs_x/fs_init.h subversion/svn_private_config.h
+
+subversion/libsvn_fs_fs/low_level.lo: subversion/libsvn_fs_fs/low_level.c subversion/include/private/svn_atomic.h subversion/include/private/svn_cache.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_editor.h subversion/include/private/svn_fs_fs_private.h subversion/include/private/svn_fs_private.h subversion/include/private/svn_fspath.h subversion/include/private/svn_mutex.h subversion/include/private/svn_sorts_private.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_string_private.h subversion/include/private/svn_subr_private.h subversion/include/private/svn_token.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_iter.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/libsvn_fs/fs-loader.h subversion/libsvn_fs_base/fs_init.h subversion/libsvn_fs_fs/fs.h subversion/libsvn_fs_fs/fs_fs.h subversion/libsvn_fs_fs/fs_init.h subversion/libsvn_fs_fs/id.h subversion/libsvn_fs_fs/low_level.h subversion/libsvn_fs_fs/rev_file.h subversion/libsvn_fs_x/fs_init.h subversion/svn_private_config.h
+
+subversion/libsvn_fs_fs/pack.lo: subversion/libsvn_fs_fs/pack.c subversion/include/private/svn_atomic.h subversion/include/private/svn_cache.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_editor.h subversion/include/private/svn_fs_fs_private.h subversion/include/private/svn_fs_private.h subversion/include/private/svn_io_private.h subversion/include/private/svn_mutex.h subversion/include/private/svn_sorts_private.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_string_private.h subversion/include/private/svn_subr_private.h subversion/include/private/svn_temp_serializer.h subversion/include/private/svn_token.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_iter.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/libsvn_fs/fs-loader.h subversion/libsvn_fs_base/fs_init.h subversion/libsvn_fs_fs/fs.h subversion/libsvn_fs_fs/fs_fs.h subversion/libsvn_fs_fs/fs_init.h subversion/libsvn_fs_fs/id.h subversion/libsvn_fs_fs/index.h subversion/libsvn_fs_fs/low_level.h subversion/libsvn_fs_fs/pack.h subversion/libsvn_fs_fs/rev_file.h subversion/libsvn_fs_fs/revprops.h subversion/libsvn_fs_fs/temp_serializer.h subversion/libsvn_fs_fs/transaction.h subversion/libsvn_fs_fs/util.h subversion/libsvn_fs_x/fs_init.h subversion/svn_private_config.h
+
+subversion/libsvn_fs_fs/recovery.lo: subversion/libsvn_fs_fs/recovery.c subversion/include/private/svn_atomic.h subversion/include/private/svn_cache.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_editor.h subversion/include/private/svn_fs_fs_private.h subversion/include/private/svn_fs_private.h subversion/include/private/svn_mutex.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_string_private.h subversion/include/private/svn_token.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_iter.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/libsvn_fs/fs-loader.h subversion/libsvn_fs_base/fs_init.h subversion/libsvn_fs_fs/cached_data.h subversion/libsvn_fs_fs/fs.h subversion/libsvn_fs_fs/fs_fs.h subversion/libsvn_fs_fs/fs_init.h subversion/libsvn_fs_fs/id.h subversion/libsvn_fs_fs/index.h subversion/libsvn_fs_fs/low_level.h subversion/libsvn_fs_fs/recovery.h subversion/libsvn_fs_fs/rep-cache.h subversion/libsvn_fs_fs/rev_file.h subversion/libsvn_fs_fs/revprops.h subversion/libsvn_fs_fs/util.h subversion/libsvn_fs_x/fs_init.h subversion/svn_private_config.h
+
+subversion/libsvn_fs_fs/rep-cache.lo: subversion/libsvn_fs_fs/rep-cache.c subversion/include/private/svn_atomic.h subversion/include/private/svn_cache.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_editor.h subversion/include/private/svn_fs_fs_private.h subversion/include/private/svn_fs_private.h subversion/include/private/svn_mutex.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_token.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_iter.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/libsvn_fs/fs-loader.h subversion/libsvn_fs_base/fs_init.h subversion/libsvn_fs_fs/cached_data.h subversion/libsvn_fs_fs/fs.h subversion/libsvn_fs_fs/fs_fs.h subversion/libsvn_fs_fs/fs_init.h subversion/libsvn_fs_fs/id.h subversion/libsvn_fs_fs/rep-cache-db.h subversion/libsvn_fs_fs/rep-cache.h subversion/libsvn_fs_fs/rev_file.h subversion/libsvn_fs_x/fs_init.h subversion/svn_private_config.h
+
+subversion/libsvn_fs_fs/rev_file.lo: subversion/libsvn_fs_fs/rev_file.c subversion/include/private/svn_atomic.h subversion/include/private/svn_cache.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_editor.h subversion/include/private/svn_fs_fs_private.h subversion/include/private/svn_fs_private.h subversion/include/private/svn_io_private.h subversion/include/private/svn_mutex.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_token.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_iter.h subversion/include/svn_mergeinfo.h subversion/include/svn_props.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/libsvn_fs/fs-loader.h subversion/libsvn_fs_base/fs_init.h subversion/libsvn_fs_fs/fs.h subversion/libsvn_fs_fs/fs_fs.h subversion/libsvn_fs_fs/fs_init.h subversion/libsvn_fs_fs/id.h subversion/libsvn_fs_fs/index.h subversion/libsvn_fs_fs/low_level.h subversion/libsvn_fs_fs/rev_file.h subversion/libsvn_fs_fs/util.h subversion/libsvn_fs_x/fs_init.h subversion/svn_private_config.h
+
+subversion/libsvn_fs_fs/revprops.lo: subversion/libsvn_fs_fs/revprops.c subversion/include/private/svn_atomic.h subversion/include/private/svn_cache.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_editor.h subversion/include/private/svn_fs_fs_private.h subversion/include/private/svn_fs_private.h subversion/include/private/svn_mutex.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_string_private.h subversion/include/private/svn_subr_private.h subversion/include/private/svn_token.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_iter.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/libsvn_fs/fs-loader.h subversion/libsvn_fs_base/fs_init.h subversion/libsvn_fs_fs/fs.h subversion/libsvn_fs_fs/fs_fs.h subversion/libsvn_fs_fs/fs_init.h subversion/libsvn_fs_fs/id.h subversion/libsvn_fs_fs/rev_file.h subversion/libsvn_fs_fs/revprops.h subversion/libsvn_fs_fs/temp_serializer.h subversion/libsvn_fs_fs/util.h subversion/libsvn_fs_x/fs_init.h subversion/svn_private_config.h
+
+subversion/libsvn_fs_fs/stats.lo: subversion/libsvn_fs_fs/stats.c subversion/include/private/svn_atomic.h subversion/include/private/svn_cache.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_editor.h subversion/include/private/svn_fs_fs_private.h subversion/include/private/svn_fs_private.h subversion/include/private/svn_mutex.h subversion/include/private/svn_sorts_private.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_string_private.h subversion/include/private/svn_token.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_iter.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/libsvn_fs/fs-loader.h subversion/libsvn_fs_base/fs_init.h subversion/libsvn_fs_fs/cached_data.h subversion/libsvn_fs_fs/fs.h subversion/libsvn_fs_fs/fs_fs.h subversion/libsvn_fs_fs/fs_init.h subversion/libsvn_fs_fs/id.h subversion/libsvn_fs_fs/index.h subversion/libsvn_fs_fs/low_level.h subversion/libsvn_fs_fs/pack.h subversion/libsvn_fs_fs/rev_file.h subversion/libsvn_fs_fs/util.h subversion/libsvn_fs_x/fs_init.h subversion/svn_private_config.h
+
+subversion/libsvn_fs_fs/temp_serializer.lo: subversion/libsvn_fs_fs/temp_serializer.c subversion/include/private/svn_atomic.h subversion/include/private/svn_cache.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_editor.h subversion/include/private/svn_fs_fs_private.h subversion/include/private/svn_fs_private.h subversion/include/private/svn_fs_util.h subversion/include/private/svn_mutex.h subversion/include/private/svn_sorts_private.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_subr_private.h subversion/include/private/svn_temp_serializer.h subversion/include/private/svn_token.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_iter.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_version.h subversion/libsvn_fs_fs/cached_data.h subversion/libsvn_fs_fs/fs.h subversion/libsvn_fs_fs/fs_fs.h subversion/libsvn_fs_fs/id.h subversion/libsvn_fs_fs/low_level.h subversion/libsvn_fs_fs/rev_file.h subversion/libsvn_fs_fs/temp_serializer.h
+
+subversion/libsvn_fs_fs/transaction.lo: subversion/libsvn_fs_fs/transaction.c subversion/include/private/svn_atomic.h subversion/include/private/svn_cache.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_editor.h subversion/include/private/svn_fs_fs_private.h subversion/include/private/svn_fs_private.h subversion/include/private/svn_fs_util.h subversion/include/private/svn_fspath.h subversion/include/private/svn_mutex.h subversion/include/private/svn_sorts_private.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_string_private.h subversion/include/private/svn_subr_private.h subversion/include/private/svn_token.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_iter.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_version.h subversion/libsvn_fs/fs-loader.h subversion/libsvn_fs_base/fs_init.h subversion/libsvn_fs_fs/cached_data.h subversion/libsvn_fs_fs/fs.h subversion/libsvn_fs_fs/fs_fs.h subversion/libsvn_fs_fs/fs_init.h subversion/libsvn_fs_fs/id.h subversion/libsvn_fs_fs/index.h subversion/libsvn_fs_fs/lock.h subversion/libsvn_fs_fs/low_level.h subversion/libsvn_fs_fs/rep-cache.h subversion/libsvn_fs_fs/rev_file.h subversion/libsvn_fs_fs/temp_serializer.h subversion/libsvn_fs_fs/transaction.h subversion/libsvn_fs_fs/tree.h subversion/libsvn_fs_fs/util.h subversion/libsvn_fs_x/fs_init.h subversion/svn_private_config.h
+
+subversion/libsvn_fs_fs/tree.lo: subversion/libsvn_fs_fs/tree.c subversion/include/private/svn_atomic.h subversion/include/private/svn_cache.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_editor.h subversion/include/private/svn_fs_fs_private.h subversion/include/private/svn_fs_private.h subversion/include/private/svn_fs_util.h subversion/include/private/svn_fspath.h subversion/include/private/svn_mergeinfo_private.h subversion/include/private/svn_mutex.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_subr_private.h subversion/include/private/svn_token.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_iter.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_version.h subversion/libsvn_fs/fs-loader.h subversion/libsvn_fs_base/fs_init.h subversion/libsvn_fs_fs/cached_data.h subversion/libsvn_fs_fs/dag.h subversion/libsvn_fs_fs/fs.h subversion/libsvn_fs_fs/fs_fs.h subversion/libsvn_fs_fs/fs_init.h subversion/libsvn_fs_fs/id.h subversion/libsvn_fs_fs/lock.h subversion/libsvn_fs_fs/pack.h subversion/libsvn_fs_fs/rev_file.h subversion/libsvn_fs_fs/temp_serializer.h subversion/libsvn_fs_fs/transaction.h subversion/libsvn_fs_fs/tree.h subversion/libsvn_fs_fs/util.h subversion/libsvn_fs_x/fs_init.h subversion/svn_private_config.h
+
+subversion/libsvn_fs_fs/util.lo: subversion/libsvn_fs_fs/util.c subversion/include/private/svn_atomic.h subversion/include/private/svn_cache.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_editor.h subversion/include/private/svn_fs_fs_private.h subversion/include/private/svn_fs_private.h subversion/include/private/svn_mutex.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_string_private.h subversion/include/private/svn_token.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_ctype.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_iter.h subversion/include/svn_mergeinfo.h subversion/include/svn_props.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/libsvn_fs/fs-loader.h subversion/libsvn_fs_base/fs_init.h subversion/libsvn_fs_fs/fs.h subversion/libsvn_fs_fs/fs_fs.h subversion/libsvn_fs_fs/fs_init.h subversion/libsvn_fs_fs/id.h subversion/libsvn_fs_fs/pack.h subversion/libsvn_fs_fs/rev_file.h subversion/libsvn_fs_fs/util.h subversion/libsvn_fs_x/fs_init.h subversion/svn_private_config.h
+
+subversion/libsvn_fs_fs/verify.lo: subversion/libsvn_fs_fs/verify.c subversion/include/private/svn_atomic.h subversion/include/private/svn_cache.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_editor.h subversion/include/private/svn_fs_fs_private.h subversion/include/private/svn_fs_private.h subversion/include/private/svn_mutex.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_subr_private.h subversion/include/private/svn_token.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_iter.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/libsvn_fs/fs-loader.h subversion/libsvn_fs_base/fs_init.h subversion/libsvn_fs_fs/cached_data.h subversion/libsvn_fs_fs/fs.h subversion/libsvn_fs_fs/fs_fs.h subversion/libsvn_fs_fs/fs_init.h subversion/libsvn_fs_fs/id.h subversion/libsvn_fs_fs/index.h subversion/libsvn_fs_fs/rep-cache.h subversion/libsvn_fs_fs/rev_file.h subversion/libsvn_fs_fs/revprops.h subversion/libsvn_fs_fs/util.h subversion/libsvn_fs_fs/verify.h subversion/libsvn_fs_x/fs_init.h subversion/svn_private_config.h
+
+subversion/libsvn_fs_util/fs-util.lo: subversion/libsvn_fs_util/fs-util.c subversion/include/private/svn_debug.h subversion/include/private/svn_fs_util.h subversion/include/private/svn_fspath.h subversion/include/private/svn_mutex.h subversion/include/private/svn_subr_private.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_props.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_version.h subversion/libsvn_fs/fs-loader.h subversion/libsvn_fs_base/fs_init.h subversion/libsvn_fs_fs/fs_init.h subversion/libsvn_fs_x/fs_init.h subversion/svn_private_config.h
+
+subversion/libsvn_fs_x/batch_fsync.lo: subversion/libsvn_fs_x/batch_fsync.c subversion/include/private/svn_atomic.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_mutex.h subversion/include/private/svn_subr_private.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/libsvn_fs_x/batch_fsync.h subversion/svn_private_config.h
+
+subversion/libsvn_fs_x/cached_data.lo: subversion/libsvn_fs_x/cached_data.c subversion/include/private/svn_atomic.h subversion/include/private/svn_cache.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_editor.h subversion/include/private/svn_fs_private.h subversion/include/private/svn_io_private.h subversion/include/private/svn_mutex.h subversion/include/private/svn_sorts_private.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_string_private.h subversion/include/private/svn_subr_private.h subversion/include/private/svn_temp_serializer.h subversion/include/private/svn_token.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_ctype.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_iter.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/libsvn_delta/delta.h subversion/libsvn_fs/fs-loader.h subversion/libsvn_fs_base/fs_init.h subversion/libsvn_fs_fs/fs_init.h subversion/libsvn_fs_x/batch_fsync.h subversion/libsvn_fs_x/cached_data.h subversion/libsvn_fs_x/changes.h subversion/libsvn_fs_x/fs.h subversion/libsvn_fs_x/fs_init.h subversion/libsvn_fs_x/fs_x.h subversion/libsvn_fs_x/id.h subversion/libsvn_fs_x/index.h subversion/libsvn_fs_x/low_level.h subversion/libsvn_fs_x/noderevs.h subversion/libsvn_fs_x/pack.h subversion/libsvn_fs_x/reps.h subversion/libsvn_fs_x/rev_file.h subversion/libsvn_fs_x/temp_serializer.h subversion/libsvn_fs_x/util.h subversion/svn_private_config.h
+
+subversion/libsvn_fs_x/caching.lo: subversion/libsvn_fs_x/caching.c subversion/include/private/svn_atomic.h subversion/include/private/svn_cache.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_editor.h subversion/include/private/svn_fs_private.h subversion/include/private/svn_mutex.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_subr_private.h subversion/include/private/svn_temp_serializer.h subversion/include/private/svn_token.h subversion/include/svn_cache_config.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_iter.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/libsvn_fs/fs-loader.h subversion/libsvn_fs_base/fs_init.h subversion/libsvn_fs_fs/fs_init.h subversion/libsvn_fs_x/changes.h subversion/libsvn_fs_x/dag.h subversion/libsvn_fs_x/dag_cache.h subversion/libsvn_fs_x/fs.h subversion/libsvn_fs_x/fs_init.h subversion/libsvn_fs_x/fs_x.h subversion/libsvn_fs_x/id.h subversion/libsvn_fs_x/index.h subversion/libsvn_fs_x/noderevs.h subversion/libsvn_fs_x/reps.h subversion/libsvn_fs_x/rev_file.h subversion/libsvn_fs_x/temp_serializer.h subversion/svn_private_config.h
+
+subversion/libsvn_fs_x/changes.lo: subversion/libsvn_fs_x/changes.c subversion/include/private/svn_atomic.h subversion/include/private/svn_cache.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_editor.h subversion/include/private/svn_fs_private.h subversion/include/private/svn_mutex.h subversion/include/private/svn_packed_data.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_temp_serializer.h subversion/include/private/svn_token.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_iter.h subversion/include/svn_mergeinfo.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/libsvn_fs_x/changes.h subversion/libsvn_fs_x/fs.h subversion/libsvn_fs_x/id.h subversion/libsvn_fs_x/rev_file.h subversion/libsvn_fs_x/string_table.h subversion/libsvn_fs_x/temp_serializer.h subversion/svn_private_config.h
+
+subversion/libsvn_fs_x/dag.lo: subversion/libsvn_fs_x/dag.c subversion/include/private/svn_atomic.h subversion/include/private/svn_cache.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_editor.h subversion/include/private/svn_fs_private.h subversion/include/private/svn_fspath.h subversion/include/private/svn_mutex.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_temp_serializer.h subversion/include/private/svn_token.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_iter.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/libsvn_fs/fs-loader.h subversion/libsvn_fs_base/fs_init.h subversion/libsvn_fs_fs/fs_init.h subversion/libsvn_fs_x/cached_data.h subversion/libsvn_fs_x/dag.h subversion/libsvn_fs_x/dag_cache.h subversion/libsvn_fs_x/fs.h subversion/libsvn_fs_x/fs_id.h subversion/libsvn_fs_x/fs_init.h subversion/libsvn_fs_x/fs_x.h subversion/libsvn_fs_x/id.h subversion/libsvn_fs_x/index.h subversion/libsvn_fs_x/rev_file.h subversion/libsvn_fs_x/temp_serializer.h subversion/libsvn_fs_x/transaction.h subversion/svn_private_config.h
+
+subversion/libsvn_fs_x/dag_cache.lo: subversion/libsvn_fs_x/dag_cache.c subversion/include/private/svn_atomic.h subversion/include/private/svn_cache.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_editor.h subversion/include/private/svn_fs_private.h subversion/include/private/svn_fs_util.h subversion/include/private/svn_fspath.h subversion/include/private/svn_mergeinfo_private.h subversion/include/private/svn_mutex.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_subr_private.h subversion/include/private/svn_temp_serializer.h subversion/include/private/svn_token.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_iter.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_version.h subversion/libsvn_fs/fs-loader.h subversion/libsvn_fs_base/fs_init.h subversion/libsvn_fs_fs/fs_init.h subversion/libsvn_fs_x/batch_fsync.h subversion/libsvn_fs_x/cached_data.h subversion/libsvn_fs_x/dag.h subversion/libsvn_fs_x/dag_cache.h subversion/libsvn_fs_x/fs.h subversion/libsvn_fs_x/fs_id.h subversion/libsvn_fs_x/fs_init.h subversion/libsvn_fs_x/fs_x.h subversion/libsvn_fs_x/id.h subversion/libsvn_fs_x/index.h subversion/libsvn_fs_x/lock.h subversion/libsvn_fs_x/pack.h subversion/libsvn_fs_x/rev_file.h subversion/libsvn_fs_x/temp_serializer.h subversion/libsvn_fs_x/transaction.h subversion/libsvn_fs_x/tree.h subversion/libsvn_fs_x/util.h subversion/svn_private_config.h
+
+subversion/libsvn_fs_x/fs.lo: subversion/libsvn_fs_x/fs.c subversion/include/private/svn_atomic.h subversion/include/private/svn_cache.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_editor.h subversion/include/private/svn_fs_private.h subversion/include/private/svn_fs_util.h subversion/include/private/svn_mutex.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_token.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_iter.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_version.h subversion/libsvn_fs/fs-loader.h subversion/libsvn_fs_base/fs_init.h subversion/libsvn_fs_fs/fs_init.h subversion/libsvn_fs_x/batch_fsync.h subversion/libsvn_fs_x/dag.h subversion/libsvn_fs_x/fs.h subversion/libsvn_fs_x/fs_init.h subversion/libsvn_fs_x/fs_x.h subversion/libsvn_fs_x/hotcopy.h subversion/libsvn_fs_x/id.h subversion/libsvn_fs_x/lock.h subversion/libsvn_fs_x/pack.h subversion/libsvn_fs_x/recovery.h subversion/libsvn_fs_x/rep-cache.h subversion/libsvn_fs_x/rev_file.h subversion/libsvn_fs_x/revprops.h subversion/libsvn_fs_x/transaction.h subversion/libsvn_fs_x/tree.h subversion/libsvn_fs_x/util.h subversion/libsvn_fs_x/verify.h subversion/svn_private_config.h
+
+subversion/libsvn_fs_x/fs_id.lo: subversion/libsvn_fs_x/fs_id.c subversion/include/private/svn_atomic.h subversion/include/private/svn_cache.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_editor.h subversion/include/private/svn_fs_private.h subversion/include/private/svn_mutex.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_string_private.h subversion/include/private/svn_token.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_iter.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/libsvn_fs/fs-loader.h subversion/libsvn_fs_base/fs_init.h subversion/libsvn_fs_fs/fs_init.h subversion/libsvn_fs_x/cached_data.h subversion/libsvn_fs_x/fs.h subversion/libsvn_fs_x/fs_id.h subversion/libsvn_fs_x/fs_init.h subversion/libsvn_fs_x/id.h subversion/libsvn_fs_x/index.h subversion/libsvn_fs_x/rev_file.h
+
+subversion/libsvn_fs_x/fs_x.lo: subversion/libsvn_fs_x/fs_x.c subversion/include/private/svn_atomic.h subversion/include/private/svn_cache.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_editor.h subversion/include/private/svn_fs_private.h subversion/include/private/svn_fs_util.h subversion/include/private/svn_mutex.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_string_private.h subversion/include/private/svn_subr_private.h subversion/include/private/svn_token.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_iter.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_version.h subversion/libsvn_fs/fs-loader.h subversion/libsvn_fs_base/fs_init.h subversion/libsvn_fs_fs/fs_init.h subversion/libsvn_fs_x/batch_fsync.h subversion/libsvn_fs_x/cached_data.h subversion/libsvn_fs_x/dag.h subversion/libsvn_fs_x/fs.h subversion/libsvn_fs_x/fs_init.h subversion/libsvn_fs_x/fs_x.h subversion/libsvn_fs_x/id.h subversion/libsvn_fs_x/index.h subversion/libsvn_fs_x/low_level.h subversion/libsvn_fs_x/rep-cache.h subversion/libsvn_fs_x/rev_file.h subversion/libsvn_fs_x/revprops.h subversion/libsvn_fs_x/transaction.h subversion/libsvn_fs_x/tree.h subversion/libsvn_fs_x/util.h subversion/svn_private_config.h
+
+subversion/libsvn_fs_x/hotcopy.lo: subversion/libsvn_fs_x/hotcopy.c subversion/include/private/svn_atomic.h subversion/include/private/svn_cache.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_editor.h subversion/include/private/svn_fs_private.h subversion/include/private/svn_mutex.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_token.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_iter.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/libsvn_fs/fs-loader.h subversion/libsvn_fs_base/fs_init.h subversion/libsvn_fs_fs/fs_init.h subversion/libsvn_fs_x/batch_fsync.h subversion/libsvn_fs_x/fs.h subversion/libsvn_fs_x/fs_init.h subversion/libsvn_fs_x/fs_x.h subversion/libsvn_fs_x/hotcopy.h subversion/libsvn_fs_x/id.h subversion/libsvn_fs_x/recovery.h subversion/libsvn_fs_x/rep-cache.h subversion/libsvn_fs_x/rev_file.h subversion/libsvn_fs_x/revprops.h subversion/libsvn_fs_x/transaction.h subversion/libsvn_fs_x/util.h subversion/svn_private_config.h
+
+subversion/libsvn_fs_x/id.lo: subversion/libsvn_fs_x/id.c subversion/include/private/svn_atomic.h subversion/include/private/svn_cache.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_editor.h subversion/include/private/svn_fs_private.h subversion/include/private/svn_mutex.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_string_private.h subversion/include/private/svn_token.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_iter.h subversion/include/svn_mergeinfo.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/libsvn_fs_x/batch_fsync.h subversion/libsvn_fs_x/fs.h subversion/libsvn_fs_x/id.h subversion/libsvn_fs_x/index.h subversion/libsvn_fs_x/rev_file.h subversion/libsvn_fs_x/util.h
+
+subversion/libsvn_fs_x/index.lo: subversion/libsvn_fs_x/index.c subversion/include/private/svn_atomic.h subversion/include/private/svn_cache.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_editor.h subversion/include/private/svn_fs_private.h subversion/include/private/svn_mutex.h subversion/include/private/svn_sorts_private.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_subr_private.h subversion/include/private/svn_temp_serializer.h subversion/include/private/svn_token.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_iter.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/libsvn_fs/fs-loader.h subversion/libsvn_fs_base/fs_init.h subversion/libsvn_fs_fs/fs_init.h subversion/libsvn_fs_x/batch_fsync.h subversion/libsvn_fs_x/fs.h subversion/libsvn_fs_x/fs_init.h subversion/libsvn_fs_x/fs_x.h subversion/libsvn_fs_x/id.h subversion/libsvn_fs_x/index.h subversion/libsvn_fs_x/pack.h subversion/libsvn_fs_x/rev_file.h subversion/libsvn_fs_x/temp_serializer.h subversion/libsvn_fs_x/util.h subversion/svn_private_config.h
+
+subversion/libsvn_fs_x/lock.lo: subversion/libsvn_fs_x/lock.c subversion/include/private/svn_atomic.h subversion/include/private/svn_cache.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_editor.h subversion/include/private/svn_fs_private.h subversion/include/private/svn_fs_util.h subversion/include/private/svn_fspath.h subversion/include/private/svn_mutex.h subversion/include/private/svn_sorts_private.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_token.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_iter.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_utf.h subversion/include/svn_version.h subversion/libsvn_fs/fs-loader.h subversion/libsvn_fs_base/fs_init.h subversion/libsvn_fs_fs/fs_init.h subversion/libsvn_fs_x/batch_fsync.h subversion/libsvn_fs_x/dag.h subversion/libsvn_fs_x/fs.h subversion/libsvn_fs_x/fs_init.h subversion/libsvn_fs_x/fs_x.h subversion/libsvn_fs_x/id.h subversion/libsvn_fs_x/lock.h subversion/libsvn_fs_x/rev_file.h subversion/libsvn_fs_x/transaction.h subversion/libsvn_fs_x/tree.h subversion/libsvn_fs_x/util.h subversion/svn_private_config.h
+
+subversion/libsvn_fs_x/low_level.lo: subversion/libsvn_fs_x/low_level.c subversion/include/private/svn_atomic.h subversion/include/private/svn_cache.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_editor.h subversion/include/private/svn_fs_private.h subversion/include/private/svn_fspath.h subversion/include/private/svn_mutex.h subversion/include/private/svn_sorts_private.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_string_private.h subversion/include/private/svn_subr_private.h subversion/include/private/svn_token.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_iter.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/libsvn_fs/fs-loader.h subversion/libsvn_fs_base/fs_init.h subversion/libsvn_fs_fs/fs_init.h subversion/libsvn_fs_x/batch_fsync.h subversion/libsvn_fs_x/cached_data.h subversion/libsvn_fs_x/fs.h subversion/libsvn_fs_x/fs_init.h subversion/libsvn_fs_x/fs_x.h subversion/libsvn_fs_x/id.h subversion/libsvn_fs_x/index.h subversion/libsvn_fs_x/low_level.h subversion/libsvn_fs_x/pack.h subversion/libsvn_fs_x/rev_file.h subversion/libsvn_fs_x/util.h subversion/svn_private_config.h
+
+subversion/libsvn_fs_x/noderevs.lo: subversion/libsvn_fs_x/noderevs.c subversion/include/private/svn_atomic.h subversion/include/private/svn_cache.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_editor.h subversion/include/private/svn_fs_private.h subversion/include/private/svn_mutex.h subversion/include/private/svn_packed_data.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_subr_private.h subversion/include/private/svn_temp_serializer.h subversion/include/private/svn_token.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_iter.h subversion/include/svn_mergeinfo.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/libsvn_fs_x/fs.h subversion/libsvn_fs_x/id.h subversion/libsvn_fs_x/noderevs.h subversion/libsvn_fs_x/rev_file.h subversion/libsvn_fs_x/string_table.h subversion/libsvn_fs_x/temp_serializer.h subversion/svn_private_config.h
+
+subversion/libsvn_fs_x/pack.lo: subversion/libsvn_fs_x/pack.c subversion/include/private/svn_atomic.h subversion/include/private/svn_cache.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_editor.h subversion/include/private/svn_fs_private.h subversion/include/private/svn_mutex.h subversion/include/private/svn_sorts_private.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_string_private.h subversion/include/private/svn_subr_private.h subversion/include/private/svn_temp_serializer.h subversion/include/private/svn_token.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_iter.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/libsvn_fs/fs-loader.h subversion/libsvn_fs_base/fs_init.h subversion/libsvn_fs_fs/fs_init.h subversion/libsvn_fs_x/batch_fsync.h subversion/libsvn_fs_x/cached_data.h subversion/libsvn_fs_x/changes.h subversion/libsvn_fs_x/fs.h subversion/libsvn_fs_x/fs_init.h subversion/libsvn_fs_x/fs_x.h subversion/libsvn_fs_x/id.h subversion/libsvn_fs_x/index.h subversion/libsvn_fs_x/low_level.h subversion/libsvn_fs_x/noderevs.h subversion/libsvn_fs_x/pack.h subversion/libsvn_fs_x/reps.h subversion/libsvn_fs_x/rev_file.h subversion/libsvn_fs_x/revprops.h subversion/libsvn_fs_x/temp_serializer.h subversion/libsvn_fs_x/transaction.h subversion/libsvn_fs_x/util.h subversion/svn_private_config.h
+
+subversion/libsvn_fs_x/recovery.lo: subversion/libsvn_fs_x/recovery.c subversion/include/private/svn_atomic.h subversion/include/private/svn_cache.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_editor.h subversion/include/private/svn_fs_private.h subversion/include/private/svn_mutex.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_string_private.h subversion/include/private/svn_token.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_iter.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/libsvn_fs/fs-loader.h subversion/libsvn_fs_base/fs_init.h subversion/libsvn_fs_fs/fs_init.h subversion/libsvn_fs_x/batch_fsync.h subversion/libsvn_fs_x/cached_data.h subversion/libsvn_fs_x/fs.h subversion/libsvn_fs_x/fs_init.h subversion/libsvn_fs_x/fs_x.h subversion/libsvn_fs_x/id.h subversion/libsvn_fs_x/index.h subversion/libsvn_fs_x/low_level.h subversion/libsvn_fs_x/recovery.h subversion/libsvn_fs_x/rep-cache.h subversion/libsvn_fs_x/rev_file.h subversion/libsvn_fs_x/revprops.h subversion/libsvn_fs_x/transaction.h subversion/libsvn_fs_x/util.h subversion/svn_private_config.h
+
+subversion/libsvn_fs_x/rep-cache.lo: subversion/libsvn_fs_x/rep-cache.c subversion/include/private/svn_atomic.h subversion/include/private/svn_cache.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_editor.h subversion/include/private/svn_fs_private.h subversion/include/private/svn_mutex.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_token.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_iter.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/libsvn_fs/fs-loader.h subversion/libsvn_fs_base/fs_init.h subversion/libsvn_fs_fs/fs_init.h subversion/libsvn_fs_x/batch_fsync.h subversion/libsvn_fs_x/fs.h subversion/libsvn_fs_x/fs_init.h subversion/libsvn_fs_x/fs_x.h subversion/libsvn_fs_x/id.h subversion/libsvn_fs_x/rep-cache-db.h subversion/libsvn_fs_x/rep-cache.h subversion/libsvn_fs_x/rev_file.h subversion/libsvn_fs_x/util.h subversion/svn_private_config.h
+
+subversion/libsvn_fs_x/reps.lo: subversion/libsvn_fs_x/reps.c subversion/include/private/svn_atomic.h subversion/include/private/svn_cache.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_editor.h subversion/include/private/svn_fs_private.h subversion/include/private/svn_mutex.h subversion/include/private/svn_packed_data.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_string_private.h subversion/include/private/svn_temp_serializer.h subversion/include/private/svn_token.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_iter.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/libsvn_fs_x/cached_data.h subversion/libsvn_fs_x/fs.h subversion/libsvn_fs_x/id.h subversion/libsvn_fs_x/index.h subversion/libsvn_fs_x/reps.h subversion/libsvn_fs_x/rev_file.h subversion/svn_private_config.h
+
+subversion/libsvn_fs_x/rev_file.lo: subversion/libsvn_fs_x/rev_file.c subversion/include/private/svn_atomic.h subversion/include/private/svn_cache.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_editor.h subversion/include/private/svn_fs_private.h subversion/include/private/svn_io_private.h subversion/include/private/svn_mutex.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_token.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_iter.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/libsvn_fs/fs-loader.h subversion/libsvn_fs_base/fs_init.h subversion/libsvn_fs_fs/fs_init.h subversion/libsvn_fs_x/batch_fsync.h subversion/libsvn_fs_x/fs.h subversion/libsvn_fs_x/fs_init.h subversion/libsvn_fs_x/fs_x.h subversion/libsvn_fs_x/id.h subversion/libsvn_fs_x/index.h subversion/libsvn_fs_x/low_level.h subversion/libsvn_fs_x/rev_file.h subversion/libsvn_fs_x/util.h subversion/svn_private_config.h
+
+subversion/libsvn_fs_x/revprops.lo: subversion/libsvn_fs_x/revprops.c subversion/include/private/svn_atomic.h subversion/include/private/svn_cache.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_editor.h subversion/include/private/svn_fs_private.h subversion/include/private/svn_mutex.h subversion/include/private/svn_packed_data.h subversion/include/private/svn_sorts_private.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_string_private.h subversion/include/private/svn_subr_private.h subversion/include/private/svn_token.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_iter.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/libsvn_fs/fs-loader.h subversion/libsvn_fs_base/fs_init.h subversion/libsvn_fs_fs/fs_init.h subversion/libsvn_fs_x/batch_fsync.h subversion/libsvn_fs_x/fs.h subversion/libsvn_fs_x/fs_init.h subversion/libsvn_fs_x/fs_x.h subversion/libsvn_fs_x/id.h subversion/libsvn_fs_x/low_level.h subversion/libsvn_fs_x/rev_file.h subversion/libsvn_fs_x/revprops.h subversion/libsvn_fs_x/transaction.h subversion/libsvn_fs_x/util.h subversion/svn_private_config.h
+
+subversion/libsvn_fs_x/string_table.lo: subversion/libsvn_fs_x/string_table.c subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_packed_data.h subversion/include/private/svn_string_private.h subversion/include/private/svn_subr_private.h subversion/include/private/svn_temp_serializer.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/libsvn_fs_x/string_table.h
+
+subversion/libsvn_fs_x/temp_serializer.lo: subversion/libsvn_fs_x/temp_serializer.c subversion/include/private/svn_atomic.h subversion/include/private/svn_cache.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_editor.h subversion/include/private/svn_fs_private.h subversion/include/private/svn_fs_util.h subversion/include/private/svn_mutex.h subversion/include/private/svn_sorts_private.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_subr_private.h subversion/include/private/svn_temp_serializer.h subversion/include/private/svn_token.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_iter.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_version.h subversion/libsvn_fs_x/cached_data.h subversion/libsvn_fs_x/fs.h subversion/libsvn_fs_x/fs_x.h subversion/libsvn_fs_x/id.h subversion/libsvn_fs_x/index.h subversion/libsvn_fs_x/low_level.h subversion/libsvn_fs_x/rev_file.h subversion/libsvn_fs_x/temp_serializer.h
+
+subversion/libsvn_fs_x/transaction.lo: subversion/libsvn_fs_x/transaction.c subversion/include/private/svn_atomic.h subversion/include/private/svn_cache.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_editor.h subversion/include/private/svn_fs_private.h subversion/include/private/svn_fs_util.h subversion/include/private/svn_fspath.h subversion/include/private/svn_io_private.h subversion/include/private/svn_mutex.h subversion/include/private/svn_sorts_private.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_string_private.h subversion/include/private/svn_subr_private.h subversion/include/private/svn_temp_serializer.h subversion/include/private/svn_token.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_iter.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_version.h subversion/libsvn_fs/fs-loader.h subversion/libsvn_fs_base/fs_init.h subversion/libsvn_fs_fs/fs_init.h subversion/libsvn_fs_x/batch_fsync.h subversion/libsvn_fs_x/cached_data.h subversion/libsvn_fs_x/dag.h subversion/libsvn_fs_x/fs.h subversion/libsvn_fs_x/fs_init.h subversion/libsvn_fs_x/fs_x.h subversion/libsvn_fs_x/id.h subversion/libsvn_fs_x/index.h subversion/libsvn_fs_x/lock.h subversion/libsvn_fs_x/low_level.h subversion/libsvn_fs_x/rep-cache.h subversion/libsvn_fs_x/rev_file.h subversion/libsvn_fs_x/revprops.h subversion/libsvn_fs_x/temp_serializer.h subversion/libsvn_fs_x/transaction.h subversion/libsvn_fs_x/tree.h subversion/libsvn_fs_x/util.h subversion/svn_private_config.h
+
+subversion/libsvn_fs_x/tree.lo: subversion/libsvn_fs_x/tree.c subversion/include/private/svn_atomic.h subversion/include/private/svn_cache.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_editor.h subversion/include/private/svn_fs_private.h subversion/include/private/svn_fs_util.h subversion/include/private/svn_fspath.h subversion/include/private/svn_mergeinfo_private.h subversion/include/private/svn_mutex.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_subr_private.h subversion/include/private/svn_temp_serializer.h subversion/include/private/svn_token.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_iter.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_version.h subversion/libsvn_fs/fs-loader.h subversion/libsvn_fs_base/fs_init.h subversion/libsvn_fs_fs/fs_init.h subversion/libsvn_fs_x/batch_fsync.h subversion/libsvn_fs_x/cached_data.h subversion/libsvn_fs_x/dag.h subversion/libsvn_fs_x/dag_cache.h subversion/libsvn_fs_x/fs.h subversion/libsvn_fs_x/fs_id.h subversion/libsvn_fs_x/fs_init.h subversion/libsvn_fs_x/fs_x.h subversion/libsvn_fs_x/id.h subversion/libsvn_fs_x/index.h subversion/libsvn_fs_x/lock.h subversion/libsvn_fs_x/pack.h subversion/libsvn_fs_x/rev_file.h subversion/libsvn_fs_x/temp_serializer.h subversion/libsvn_fs_x/transaction.h subversion/libsvn_fs_x/tree.h subversion/libsvn_fs_x/util.h subversion/svn_private_config.h
+
+subversion/libsvn_fs_x/util.lo: subversion/libsvn_fs_x/util.c subversion/include/private/svn_atomic.h subversion/include/private/svn_cache.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_editor.h subversion/include/private/svn_fs_private.h subversion/include/private/svn_mutex.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_string_private.h subversion/include/private/svn_token.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_ctype.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_iter.h subversion/include/svn_mergeinfo.h subversion/include/svn_props.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/libsvn_fs/fs-loader.h subversion/libsvn_fs_base/fs_init.h subversion/libsvn_fs_fs/fs_init.h subversion/libsvn_fs_x/batch_fsync.h subversion/libsvn_fs_x/fs.h subversion/libsvn_fs_x/fs_init.h subversion/libsvn_fs_x/fs_x.h subversion/libsvn_fs_x/id.h subversion/libsvn_fs_x/rev_file.h subversion/libsvn_fs_x/util.h subversion/svn_private_config.h
+
+subversion/libsvn_fs_x/verify.lo: subversion/libsvn_fs_x/verify.c subversion/include/private/svn_atomic.h subversion/include/private/svn_cache.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_editor.h subversion/include/private/svn_fs_private.h subversion/include/private/svn_mutex.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_subr_private.h subversion/include/private/svn_token.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_iter.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/libsvn_fs/fs-loader.h subversion/libsvn_fs_base/fs_init.h subversion/libsvn_fs_fs/fs_init.h subversion/libsvn_fs_x/batch_fsync.h subversion/libsvn_fs_x/cached_data.h subversion/libsvn_fs_x/fs.h subversion/libsvn_fs_x/fs_init.h subversion/libsvn_fs_x/fs_x.h subversion/libsvn_fs_x/id.h subversion/libsvn_fs_x/index.h subversion/libsvn_fs_x/rep-cache.h subversion/libsvn_fs_x/rev_file.h subversion/libsvn_fs_x/revprops.h subversion/libsvn_fs_x/util.h subversion/libsvn_fs_x/verify.h subversion/svn_private_config.h
+
+subversion/libsvn_ra/compat.lo: subversion/libsvn_ra/compat.c subversion/include/private/svn_debug.h subversion/include/private/svn_editor.h subversion/include/private/svn_fspath.h subversion/include/private/svn_ra_private.h subversion/include/private/svn_sorts_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_compat.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/libsvn_ra/ra_loader.h subversion/svn_private_config.h
+
+subversion/libsvn_ra/debug_reporter.lo: subversion/libsvn_ra/debug_reporter.c subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/libsvn_ra/debug_reporter.h
+
+subversion/libsvn_ra/deprecated.lo: subversion/libsvn_ra/deprecated.c subversion/include/private/svn_debug.h subversion/include/private/svn_editor.h subversion/include/private/svn_ra_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_compat.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/libsvn_ra/deprecated.h subversion/libsvn_ra/ra_loader.h subversion/svn_private_config.h
+
+subversion/libsvn_ra/editor.lo: subversion/libsvn_ra/editor.c subversion/include/private/svn_debug.h subversion/include/private/svn_delta_private.h subversion/include/private/svn_editor.h subversion/include/private/svn_ra_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/libsvn_ra/ra_loader.h subversion/svn_private_config.h
+
+subversion/libsvn_ra/ra_loader.lo: subversion/libsvn_ra/ra_loader.c subversion/include/private/svn_auth_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_editor.h subversion/include/private/svn_ra_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_dso.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_version.h subversion/include/svn_xml.h subversion/libsvn_ra/deprecated.h subversion/libsvn_ra/ra_loader.h subversion/svn_private_config.h
+
+subversion/libsvn_ra/util.lo: subversion/libsvn_ra/util.c subversion/include/private/svn_debug.h subversion/include/private/svn_editor.h subversion/include/private/svn_ra_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/svn_private_config.h
+
+subversion/libsvn_ra_local/ra_plugin.lo: subversion/libsvn_ra_local/ra_plugin.c subversion/include/private/svn_atomic.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_editor.h subversion/include/private/svn_fspath.h subversion/include/private/svn_mergeinfo_private.h subversion/include/private/svn_mutex.h subversion/include/private/svn_object_pool.h subversion/include/private/svn_ra_private.h subversion/include/private/svn_repos_private.h subversion/include/private/svn_string_private.h subversion/include/private/svn_subr_private.h subversion/include/svn_auth.h subversion/include/svn_cache_config.h subversion/include/svn_checksum.h subversion/include/svn_compat.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_version.h subversion/libsvn_ra/ra_loader.h subversion/libsvn_ra/wrapper_template.h subversion/libsvn_ra_local/ra_local.h subversion/svn_private_config.h
+
+subversion/libsvn_ra_local/split_url.lo: subversion/libsvn_ra_local/split_url.c subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_ra.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/libsvn_ra_local/ra_local.h subversion/svn_private_config.h
+
+subversion/libsvn_ra_serf/blame.lo: subversion/libsvn_ra_serf/blame.c subversion/include/private/svn_dav_protocol.h subversion/include/private/svn_debug.h subversion/include/private/svn_editor.h subversion/include/private/svn_ra_private.h subversion/include/private/svn_string_private.h subversion/include/private/svn_subr_private.h subversion/include/svn_auth.h subversion/include/svn_base64.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_dav.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_version.h subversion/include/svn_xml.h subversion/libsvn_ra/ra_loader.h subversion/libsvn_ra_serf/blncache.h subversion/libsvn_ra_serf/ra_serf.h subversion/svn_private_config.h
+
+subversion/libsvn_ra_serf/blncache.lo: subversion/libsvn_ra_serf/blncache.c subversion/include/private/svn_debug.h subversion/include/svn_checksum.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/libsvn_ra_serf/blncache.h
+
+subversion/libsvn_ra_serf/commit.lo: subversion/libsvn_ra_serf/commit.c subversion/include/private/svn_dav_protocol.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_editor.h subversion/include/private/svn_fspath.h subversion/include/private/svn_ra_private.h subversion/include/private/svn_skel.h subversion/include/private/svn_subr_private.h subversion/include/svn_auth.h subversion/include/svn_base64.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_dav.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_version.h subversion/include/svn_xml.h subversion/libsvn_ra/ra_loader.h subversion/libsvn_ra_serf/blncache.h subversion/libsvn_ra_serf/ra_serf.h subversion/svn_private_config.h
+
+subversion/libsvn_ra_serf/eagain_bucket.lo: subversion/libsvn_ra_serf/eagain_bucket.c subversion/include/private/svn_dav_protocol.h subversion/include/private/svn_debug.h subversion/include/private/svn_editor.h subversion/include/private/svn_subr_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_dav.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_version.h subversion/libsvn_ra_serf/blncache.h subversion/libsvn_ra_serf/ra_serf.h subversion/svn_private_config.h
+
+subversion/libsvn_ra_serf/get_deleted_rev.lo: subversion/libsvn_ra_serf/get_deleted_rev.c subversion/include/private/svn_dav_protocol.h subversion/include/private/svn_debug.h subversion/include/private/svn_editor.h subversion/include/private/svn_ra_private.h subversion/include/private/svn_subr_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_dav.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_version.h subversion/include/svn_xml.h subversion/libsvn_ra/ra_loader.h subversion/libsvn_ra_serf/blncache.h subversion/libsvn_ra_serf/ra_serf.h subversion/svn_private_config.h
+
+subversion/libsvn_ra_serf/get_file.lo: subversion/libsvn_ra_serf/get_file.c subversion/include/private/svn_dav_protocol.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_editor.h subversion/include/private/svn_ra_private.h subversion/include/private/svn_string_private.h subversion/include/private/svn_subr_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_dav.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_version.h subversion/libsvn_ra/ra_loader.h subversion/libsvn_ra_serf/blncache.h subversion/libsvn_ra_serf/ra_serf.h subversion/svn_private_config.h
+
+subversion/libsvn_ra_serf/get_lock.lo: subversion/libsvn_ra_serf/get_lock.c subversion/include/private/svn_dav_protocol.h subversion/include/private/svn_debug.h subversion/include/private/svn_editor.h subversion/include/private/svn_ra_private.h subversion/include/private/svn_subr_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_dav.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_version.h subversion/libsvn_ra/ra_loader.h subversion/libsvn_ra_serf/blncache.h subversion/libsvn_ra_serf/ra_serf.h subversion/svn_private_config.h
+
+subversion/libsvn_ra_serf/getdate.lo: subversion/libsvn_ra_serf/getdate.c subversion/include/private/svn_dav_protocol.h subversion/include/private/svn_debug.h subversion/include/private/svn_editor.h subversion/include/private/svn_ra_private.h subversion/include/private/svn_subr_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_dav.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_version.h subversion/include/svn_xml.h subversion/libsvn_ra/ra_loader.h subversion/libsvn_ra_serf/blncache.h subversion/libsvn_ra_serf/ra_serf.h subversion/svn_private_config.h
+
+subversion/libsvn_ra_serf/getlocations.lo: subversion/libsvn_ra_serf/getlocations.c subversion/include/private/svn_dav_protocol.h subversion/include/private/svn_debug.h subversion/include/private/svn_editor.h subversion/include/private/svn_ra_private.h subversion/include/private/svn_subr_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_dav.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_version.h subversion/include/svn_xml.h subversion/libsvn_ra/ra_loader.h subversion/libsvn_ra_serf/blncache.h subversion/libsvn_ra_serf/ra_serf.h subversion/svn_private_config.h
+
+subversion/libsvn_ra_serf/getlocationsegments.lo: subversion/libsvn_ra_serf/getlocationsegments.c subversion/include/private/svn_dav_protocol.h subversion/include/private/svn_debug.h subversion/include/private/svn_editor.h subversion/include/private/svn_ra_private.h subversion/include/private/svn_subr_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_dav.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_version.h subversion/include/svn_xml.h subversion/libsvn_ra/ra_loader.h subversion/libsvn_ra_serf/blncache.h subversion/libsvn_ra_serf/ra_serf.h subversion/svn_private_config.h
+
+subversion/libsvn_ra_serf/getlocks.lo: subversion/libsvn_ra_serf/getlocks.c subversion/include/private/svn_dav_protocol.h subversion/include/private/svn_debug.h subversion/include/private/svn_editor.h subversion/include/private/svn_fspath.h subversion/include/private/svn_ra_private.h subversion/include/private/svn_subr_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_dav.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_version.h subversion/include/svn_xml.h subversion/libsvn_ra/ra_loader.h subversion/libsvn_ra_serf/blncache.h subversion/libsvn_ra_serf/ra_serf.h subversion/svn_private_config.h
+
+subversion/libsvn_ra_serf/inherited_props.lo: subversion/libsvn_ra_serf/inherited_props.c subversion/include/private/svn_dav_protocol.h subversion/include/private/svn_debug.h subversion/include/private/svn_editor.h subversion/include/private/svn_ra_private.h subversion/include/private/svn_sorts_private.h subversion/include/private/svn_subr_private.h subversion/include/svn_auth.h subversion/include/svn_base64.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_dav.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_version.h subversion/include/svn_xml.h subversion/libsvn_ra/ra_loader.h subversion/libsvn_ra_serf/blncache.h subversion/libsvn_ra_serf/ra_serf.h subversion/svn_private_config.h
+
+subversion/libsvn_ra_serf/list.lo: subversion/libsvn_ra_serf/list.c subversion/include/private/svn_dav_protocol.h subversion/include/private/svn_debug.h subversion/include/private/svn_editor.h subversion/include/private/svn_ra_private.h subversion/include/private/svn_string_private.h subversion/include/private/svn_subr_private.h subversion/include/svn_auth.h subversion/include/svn_base64.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_dav.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_version.h subversion/include/svn_xml.h subversion/libsvn_ra/ra_loader.h subversion/libsvn_ra_serf/blncache.h subversion/libsvn_ra_serf/ra_serf.h subversion/svn_private_config.h
+
+subversion/libsvn_ra_serf/lock.lo: subversion/libsvn_ra_serf/lock.c subversion/include/private/svn_dav_protocol.h subversion/include/private/svn_debug.h subversion/include/private/svn_editor.h subversion/include/private/svn_ra_private.h subversion/include/private/svn_sorts_private.h subversion/include/private/svn_subr_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_dav.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_version.h subversion/libsvn_ra/ra_loader.h subversion/libsvn_ra_serf/blncache.h subversion/libsvn_ra_serf/ra_serf.h subversion/svn_private_config.h
+
+subversion/libsvn_ra_serf/log.lo: subversion/libsvn_ra_serf/log.c subversion/include/private/svn_dav_protocol.h subversion/include/private/svn_debug.h subversion/include/private/svn_editor.h subversion/include/private/svn_ra_private.h subversion/include/private/svn_string_private.h subversion/include/private/svn_subr_private.h subversion/include/svn_auth.h subversion/include/svn_base64.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_dav.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_version.h subversion/include/svn_xml.h subversion/libsvn_ra/ra_loader.h subversion/libsvn_ra_serf/blncache.h subversion/libsvn_ra_serf/ra_serf.h subversion/svn_private_config.h
+
+subversion/libsvn_ra_serf/merge.lo: subversion/libsvn_ra_serf/merge.c subversion/include/private/svn_dav_protocol.h subversion/include/private/svn_debug.h subversion/include/private/svn_editor.h subversion/include/private/svn_fspath.h subversion/include/private/svn_ra_private.h subversion/include/private/svn_subr_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_dav.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_version.h subversion/include/svn_xml.h subversion/libsvn_ra/ra_loader.h subversion/libsvn_ra_serf/blncache.h subversion/libsvn_ra_serf/ra_serf.h subversion/svn_private_config.h
+
+subversion/libsvn_ra_serf/mergeinfo.lo: subversion/libsvn_ra_serf/mergeinfo.c subversion/include/private/svn_dav_protocol.h subversion/include/private/svn_debug.h subversion/include/private/svn_editor.h subversion/include/private/svn_ra_private.h subversion/include/private/svn_subr_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_dav.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_version.h subversion/include/svn_xml.h subversion/libsvn_ra/ra_loader.h subversion/libsvn_ra_serf/blncache.h subversion/libsvn_ra_serf/ra_serf.h subversion/svn_private_config.h
+
+subversion/libsvn_ra_serf/multistatus.lo: subversion/libsvn_ra_serf/multistatus.c subversion/include/private/svn_dav_protocol.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_editor.h subversion/include/private/svn_fspath.h subversion/include/private/svn_subr_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_dav.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_version.h subversion/include/svn_xml.h subversion/libsvn_ra_serf/blncache.h subversion/libsvn_ra_serf/ra_serf.h subversion/svn_private_config.h
+
+subversion/libsvn_ra_serf/options.lo: subversion/libsvn_ra_serf/options.c subversion/include/private/svn_dav_protocol.h subversion/include/private/svn_debug.h subversion/include/private/svn_editor.h subversion/include/private/svn_fspath.h subversion/include/private/svn_ra_private.h subversion/include/private/svn_subr_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_ctype.h subversion/include/svn_dav.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_version.h subversion/include/svn_xml.h subversion/libsvn_ra/ra_loader.h subversion/libsvn_ra_serf/blncache.h subversion/libsvn_ra_serf/ra_serf.h subversion/svn_private_config.h
+
+subversion/libsvn_ra_serf/property.lo: subversion/libsvn_ra_serf/property.c subversion/include/private/svn_dav_protocol.h subversion/include/private/svn_debug.h subversion/include/private/svn_editor.h subversion/include/private/svn_fspath.h subversion/include/private/svn_string_private.h subversion/include/private/svn_subr_private.h subversion/include/svn_auth.h subversion/include/svn_base64.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_dav.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_version.h subversion/include/svn_xml.h subversion/libsvn_ra_serf/blncache.h subversion/libsvn_ra_serf/ra_serf.h subversion/svn_private_config.h
+
+subversion/libsvn_ra_serf/replay.lo: subversion/libsvn_ra_serf/replay.c subversion/include/private/svn_dav_protocol.h subversion/include/private/svn_debug.h subversion/include/private/svn_editor.h subversion/include/private/svn_ra_private.h subversion/include/private/svn_string_private.h subversion/include/private/svn_subr_private.h subversion/include/svn_auth.h subversion/include/svn_base64.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_dav.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_version.h subversion/include/svn_xml.h subversion/libsvn_ra/ra_loader.h subversion/libsvn_ra_serf/blncache.h subversion/libsvn_ra_serf/ra_serf.h subversion/svn_private_config.h
+
+subversion/libsvn_ra_serf/request_body.lo: subversion/libsvn_ra_serf/request_body.c subversion/include/private/svn_dav_protocol.h subversion/include/private/svn_debug.h subversion/include/private/svn_editor.h subversion/include/private/svn_subr_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_dav.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_version.h subversion/libsvn_ra_serf/blncache.h subversion/libsvn_ra_serf/ra_serf.h
+
+subversion/libsvn_ra_serf/sb_bucket.lo: subversion/libsvn_ra_serf/sb_bucket.c subversion/include/private/svn_dav_protocol.h subversion/include/private/svn_debug.h subversion/include/private/svn_editor.h subversion/include/private/svn_subr_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_dav.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_version.h subversion/libsvn_ra_serf/blncache.h subversion/libsvn_ra_serf/ra_serf.h subversion/svn_private_config.h
+
+subversion/libsvn_ra_serf/serf.lo: subversion/libsvn_ra_serf/serf.c subversion/include/private/svn_dav_protocol.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_editor.h subversion/include/private/svn_fspath.h subversion/include/private/svn_ra_private.h subversion/include/private/svn_subr_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_compat.h subversion/include/svn_config.h subversion/include/svn_dav.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_version.h subversion/include/svn_xml.h subversion/libsvn_ra/ra_loader.h subversion/libsvn_ra/wrapper_template.h subversion/libsvn_ra_serf/blncache.h subversion/libsvn_ra_serf/ra_serf.h subversion/svn_private_config.h
+
+subversion/libsvn_ra_serf/stat.lo: subversion/libsvn_ra_serf/stat.c subversion/include/private/svn_dav_protocol.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_editor.h subversion/include/private/svn_fspath.h subversion/include/private/svn_ra_private.h subversion/include/private/svn_subr_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_dav.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_version.h subversion/include/svn_xml.h subversion/libsvn_ra/ra_loader.h subversion/libsvn_ra_serf/blncache.h subversion/libsvn_ra_serf/ra_serf.h subversion/svn_private_config.h
+
+subversion/libsvn_ra_serf/stream_bucket.lo: subversion/libsvn_ra_serf/stream_bucket.c subversion/include/private/svn_dav_protocol.h subversion/include/private/svn_debug.h subversion/include/private/svn_editor.h subversion/include/private/svn_subr_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_dav.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_version.h subversion/libsvn_ra_serf/blncache.h subversion/libsvn_ra_serf/ra_serf.h
+
+subversion/libsvn_ra_serf/update.lo: subversion/libsvn_ra_serf/update.c subversion/include/private/svn_dav_protocol.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_editor.h subversion/include/private/svn_fspath.h subversion/include/private/svn_ra_private.h subversion/include/private/svn_string_private.h subversion/include/private/svn_subr_private.h subversion/include/svn_auth.h subversion/include/svn_base64.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_dav.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_version.h subversion/include/svn_xml.h subversion/libsvn_ra/ra_loader.h subversion/libsvn_ra_serf/blncache.h subversion/libsvn_ra_serf/ra_serf.h subversion/svn_private_config.h
+
+subversion/libsvn_ra_serf/util.lo: subversion/libsvn_ra_serf/util.c subversion/include/private/svn_auth_private.h subversion/include/private/svn_cert.h subversion/include/private/svn_dav_protocol.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_editor.h subversion/include/private/svn_fspath.h subversion/include/private/svn_ra_private.h subversion/include/private/svn_subr_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_dav.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_version.h subversion/libsvn_ra/ra_loader.h subversion/libsvn_ra_serf/blncache.h subversion/libsvn_ra_serf/ra_serf.h subversion/svn_private_config.h
+
+subversion/libsvn_ra_serf/util_error.lo: subversion/libsvn_ra_serf/util_error.c subversion/include/private/svn_dav_protocol.h subversion/include/private/svn_debug.h subversion/include/private/svn_editor.h subversion/include/private/svn_error_private.h subversion/include/private/svn_subr_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_dav.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_utf.h subversion/include/svn_version.h subversion/libsvn_ra_serf/blncache.h subversion/libsvn_ra_serf/ra_serf.h
+
+subversion/libsvn_ra_serf/xml.lo: subversion/libsvn_ra_serf/xml.c subversion/include/private/svn_dav_protocol.h subversion/include/private/svn_debug.h subversion/include/private/svn_editor.h subversion/include/private/svn_ra_private.h subversion/include/private/svn_string_private.h subversion/include/private/svn_subr_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_dav.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_version.h subversion/include/svn_xml.h subversion/libsvn_ra/ra_loader.h subversion/libsvn_ra_serf/blncache.h subversion/libsvn_ra_serf/ra_serf.h subversion/svn_private_config.h
+
+subversion/libsvn_ra_svn/client.lo: subversion/libsvn_ra_svn/client.c subversion/include/private/svn_debug.h subversion/include/private/svn_editor.h subversion/include/private/svn_fspath.h subversion/include/private/svn_ra_private.h subversion/include/private/svn_ra_svn_private.h subversion/include/private/svn_string_private.h subversion/include/private/svn_subr_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_compat.h subversion/include/svn_config.h subversion/include/svn_ctype.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_ra_svn.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_version.h subversion/libsvn_ra/ra_loader.h subversion/libsvn_ra/wrapper_template.h subversion/libsvn_ra_svn/ra_svn.h subversion/svn_private_config.h
+
+subversion/libsvn_ra_svn/cram.lo: subversion/libsvn_ra_svn/cram.c subversion/include/private/svn_debug.h subversion/include/private/svn_editor.h subversion/include/private/svn_ra_svn_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_ra.h subversion/include/svn_ra_svn.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/libsvn_ra_svn/ra_svn.h subversion/svn_private_config.h
+
+subversion/libsvn_ra_svn/cyrus_auth.lo: subversion/libsvn_ra_svn/cyrus_auth.c subversion/include/private/ra_svn_sasl.h subversion/include/private/ra_svn_wrapped_sasl.h subversion/include/private/svn_atomic.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_editor.h subversion/include/private/svn_mutex.h subversion/include/private/svn_ra_svn_private.h subversion/include/svn_auth.h subversion/include/svn_base64.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_ra_svn.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/libsvn_ra_svn/ra_svn.h subversion/svn_private_config.h
+
+subversion/libsvn_ra_svn/deprecated.lo: subversion/libsvn_ra_svn/deprecated.c subversion/include/private/svn_debug.h subversion/include/private/svn_editor.h subversion/include/private/svn_ra_svn_private.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_ra_svn.h subversion/include/svn_string.h subversion/include/svn_types.h
+
+subversion/libsvn_ra_svn/editorp.lo: subversion/libsvn_ra_svn/editorp.c subversion/include/private/svn_atomic.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_editor.h subversion/include/private/svn_fspath.h subversion/include/private/svn_ra_svn_private.h subversion/include/private/svn_string_private.h subversion/include/private/svn_subr_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_ra_svn.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/libsvn_ra_svn/ra_svn.h subversion/svn_private_config.h
+
+subversion/libsvn_ra_svn/internal_auth.lo: subversion/libsvn_ra_svn/internal_auth.c subversion/include/private/svn_debug.h subversion/include/private/svn_editor.h subversion/include/private/svn_ra_svn_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_ra.h subversion/include/svn_ra_svn.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/libsvn_ra_svn/ra_svn.h subversion/svn_private_config.h
+
+subversion/libsvn_ra_svn/marshal.lo: subversion/libsvn_ra_svn/marshal.c subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_editor.h subversion/include/private/svn_error_private.h subversion/include/private/svn_ra_svn_private.h subversion/include/private/svn_string_private.h subversion/include/private/svn_subr_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_ctype.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_ra_svn.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/libsvn_ra_svn/ra_svn.h subversion/svn_private_config.h
+
+subversion/libsvn_ra_svn/streams.lo: subversion/libsvn_ra_svn/streams.c subversion/include/private/svn_debug.h subversion/include/private/svn_editor.h subversion/include/private/svn_io_private.h subversion/include/private/svn_ra_svn_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_ra_svn.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/libsvn_ra_svn/ra_svn.h subversion/svn_private_config.h
+
+subversion/libsvn_ra_svn/version.lo: subversion/libsvn_ra_svn/version.c subversion/include/private/svn_debug.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_ra_svn.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_version.h
+
+subversion/libsvn_ra_svn/wrapped_sasl.lo: subversion/libsvn_ra_svn/wrapped_sasl.c subversion/include/private/ra_svn_wrapped_sasl.h subversion/svn_private_config.h
+
+subversion/libsvn_repos/authz.lo: subversion/libsvn_repos/authz.c subversion/include/private/svn_atomic.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_editor.h subversion/include/private/svn_fspath.h subversion/include/private/svn_mutex.h subversion/include/private/svn_object_pool.h subversion/include/private/svn_repos_private.h subversion/include/private/svn_sorts_private.h subversion/include/private/svn_string_private.h subversion/include/private/svn_subr_private.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_ctype.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_repos.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/libsvn_repos/authz.h subversion/libsvn_repos/config_file.h subversion/libsvn_repos/repos.h
+
+subversion/libsvn_repos/authz_info.lo: subversion/libsvn_repos/authz_info.c subversion/include/private/svn_debug.h subversion/include/private/svn_string_private.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/libsvn_repos/authz.h subversion/svn_private_config.h
+
+subversion/libsvn_repos/authz_parse.lo: subversion/libsvn_repos/authz_parse.c subversion/include/private/svn_config_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_fspath.h subversion/include/private/svn_sorts_private.h subversion/include/private/svn_string_private.h subversion/include/private/svn_subr_private.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_ctype.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_iter.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_repos.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/libsvn_repos/authz.h subversion/svn_private_config.h
+
+subversion/libsvn_repos/commit.lo: subversion/libsvn_repos/commit.c subversion/include/private/svn_debug.h subversion/include/private/svn_editor.h subversion/include/private/svn_fs_private.h subversion/include/private/svn_fspath.h subversion/include/private/svn_mutex.h subversion/include/private/svn_object_pool.h subversion/include/private/svn_repos_private.h subversion/include/private/svn_string_private.h subversion/include/svn_checksum.h subversion/include/svn_compat.h subversion/include/svn_config.h subversion/include/svn_ctype.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/libsvn_repos/repos.h subversion/svn_private_config.h
+
+subversion/libsvn_repos/compat.lo: subversion/libsvn_repos/compat.c subversion/include/private/svn_debug.h subversion/include/private/svn_editor.h subversion/include/private/svn_mutex.h subversion/include/private/svn_object_pool.h subversion/include/private/svn_repos_private.h subversion/include/private/svn_string_private.h subversion/include/private/svn_subr_private.h subversion/include/svn_checksum.h subversion/include/svn_compat.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/libsvn_repos/repos.h subversion/svn_private_config.h
+
+subversion/libsvn_repos/config_file.lo: subversion/libsvn_repos/config_file.c subversion/include/private/svn_config_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_editor.h subversion/include/private/svn_mutex.h subversion/include/private/svn_object_pool.h subversion/include/private/svn_repos_private.h subversion/include/private/svn_string_private.h subversion/include/private/svn_subr_private.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/libsvn_repos/config_file.h subversion/svn_private_config.h
+
+subversion/libsvn_repos/config_pool.lo: subversion/libsvn_repos/config_pool.c subversion/include/private/svn_debug.h subversion/include/private/svn_editor.h subversion/include/private/svn_mutex.h subversion/include/private/svn_object_pool.h subversion/include/private/svn_repos_private.h subversion/include/private/svn_string_private.h subversion/include/private/svn_subr_private.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/libsvn_repos/config_file.h subversion/svn_private_config.h
+
+subversion/libsvn_repos/delta.lo: subversion/libsvn_repos/delta.c subversion/include/private/svn_debug.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/libsvn_repos/repos.h subversion/svn_private_config.h
+
+subversion/libsvn_repos/deprecated.lo: subversion/libsvn_repos/deprecated.c subversion/include/private/svn_debug.h subversion/include/private/svn_editor.h subversion/include/private/svn_mutex.h subversion/include/private/svn_object_pool.h subversion/include/private/svn_repos_private.h subversion/include/private/svn_string_private.h subversion/include/private/svn_subr_private.h subversion/include/svn_checksum.h subversion/include/svn_compat.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/libsvn_repos/repos.h subversion/svn_private_config.h
+
+subversion/libsvn_repos/dump.lo: subversion/libsvn_repos/dump.c subversion/include/private/svn_cache.h subversion/include/private/svn_debug.h subversion/include/private/svn_editor.h subversion/include/private/svn_fs_private.h subversion/include/private/svn_mergeinfo_private.h subversion/include/private/svn_mutex.h subversion/include/private/svn_object_pool.h subversion/include/private/svn_repos_private.h subversion/include/private/svn_sorts_private.h subversion/include/private/svn_string_private.h subversion/include/private/svn_utf_private.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_iter.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_repos.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/svn_private_config.h
+
+subversion/libsvn_repos/fs-wrap.lo: subversion/libsvn_repos/fs-wrap.c subversion/include/private/svn_debug.h subversion/include/private/svn_editor.h subversion/include/private/svn_fspath.h subversion/include/private/svn_mutex.h subversion/include/private/svn_object_pool.h subversion/include/private/svn_repos_private.h subversion/include/private/svn_sorts_private.h subversion/include/private/svn_string_private.h subversion/include/private/svn_utf_private.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_repos.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_subst.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/libsvn_repos/repos.h subversion/svn_private_config.h
+
+subversion/libsvn_repos/hooks.lo: subversion/libsvn_repos/hooks.c subversion/include/private/svn_debug.h subversion/include/private/svn_editor.h subversion/include/private/svn_fs_private.h subversion/include/private/svn_mutex.h subversion/include/private/svn_object_pool.h subversion/include/private/svn_repos_private.h subversion/include/private/svn_string_private.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_utf.h subversion/libsvn_repos/repos.h subversion/svn_private_config.h
+
+subversion/libsvn_repos/list.lo: subversion/libsvn_repos/list.c subversion/include/private/svn_debug.h subversion/include/private/svn_editor.h subversion/include/private/svn_mutex.h subversion/include/private/svn_object_pool.h subversion/include/private/svn_repos_private.h subversion/include/private/svn_sorts_private.h subversion/include/private/svn_string_private.h subversion/include/private/svn_utf_private.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_repos.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/libsvn_repos/repos.h subversion/svn_private_config.h
+
+subversion/libsvn_repos/load-fs-vtable.lo: subversion/libsvn_repos/load-fs-vtable.c subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_editor.h subversion/include/private/svn_fspath.h subversion/include/private/svn_mergeinfo_private.h subversion/include/private/svn_mutex.h subversion/include/private/svn_object_pool.h subversion/include/private/svn_repos_private.h subversion/include/private/svn_string_private.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_subst.h subversion/include/svn_types.h subversion/libsvn_repos/repos.h subversion/svn_private_config.h
+
+subversion/libsvn_repos/load.lo: subversion/libsvn_repos/load.c subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_ctype.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/libsvn_repos/repos.h subversion/svn_private_config.h
+
+subversion/libsvn_repos/log.lo: subversion/libsvn_repos/log.c subversion/include/private/svn_debug.h subversion/include/private/svn_editor.h subversion/include/private/svn_fs_private.h subversion/include/private/svn_fspath.h subversion/include/private/svn_mergeinfo_private.h subversion/include/private/svn_sorts_private.h subversion/include/private/svn_string_private.h subversion/include/private/svn_subr_private.h subversion/include/svn_checksum.h subversion/include/svn_compat.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_repos.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/libsvn_repos/repos.h subversion/svn_private_config.h
+
+subversion/libsvn_repos/node_tree.lo: subversion/libsvn_repos/node_tree.c subversion/include/private/svn_debug.h subversion/include/private/svn_fspath.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/libsvn_repos/repos.h subversion/svn_private_config.h
+
+subversion/libsvn_repos/notify.lo: subversion/libsvn_repos/notify.c subversion/include/private/svn_debug.h subversion/include/private/svn_string_private.h subversion/include/private/svn_utf_private.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/libsvn_repos/repos.h subversion/svn_private_config.h
+
+subversion/libsvn_repos/replay.lo: subversion/libsvn_repos/replay.c subversion/include/private/svn_debug.h subversion/include/private/svn_delta_private.h subversion/include/private/svn_editor.h subversion/include/private/svn_fspath.h subversion/include/private/svn_mutex.h subversion/include/private/svn_object_pool.h subversion/include/private/svn_repos_private.h subversion/include/private/svn_sorts_private.h subversion/include/private/svn_string_private.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_repos.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/svn_private_config.h
+
+subversion/libsvn_repos/reporter.lo: subversion/libsvn_repos/reporter.c subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_fspath.h subversion/include/private/svn_string_private.h subversion/include/private/svn_subr_private.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/libsvn_repos/repos.h subversion/svn_private_config.h
+
+subversion/libsvn_repos/repos.lo: subversion/libsvn_repos/repos.c subversion/include/private/svn_debug.h subversion/include/private/svn_editor.h subversion/include/private/svn_mutex.h subversion/include/private/svn_object_pool.h subversion/include/private/svn_repos_private.h subversion/include/private/svn_string_private.h subversion/include/private/svn_subr_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_utf.h subversion/include/svn_version.h subversion/libsvn_repos/repos.h subversion/svn_private_config.h
+
+subversion/libsvn_repos/rev_hunt.lo: subversion/libsvn_repos/rev_hunt.c subversion/include/private/svn_debug.h subversion/include/private/svn_editor.h subversion/include/private/svn_fs_private.h subversion/include/private/svn_fspath.h subversion/include/private/svn_sorts_private.h subversion/include/svn_checksum.h subversion/include/svn_compat.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_repos.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/libsvn_repos/repos.h subversion/svn_private_config.h
+
+subversion/libsvn_subr/adler32.lo: subversion/libsvn_subr/adler32.c subversion/include/private/svn_adler32.h
+
+subversion/libsvn_subr/atomic.lo: subversion/libsvn_subr/atomic.c subversion/include/private/svn_atomic.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_mutex.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_pools.h subversion/include/svn_types.h
+
+subversion/libsvn_subr/auth.lo: subversion/libsvn_subr/auth.c subversion/include/private/svn_auth_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_dso.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_version.h subversion/libsvn_subr/auth.h subversion/svn_private_config.h
+
+subversion/libsvn_subr/base64.lo: subversion/libsvn_subr/base64.c subversion/include/private/svn_debug.h subversion/include/private/svn_string_private.h subversion/include/private/svn_subr_private.h subversion/include/svn_base64.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h
+
+subversion/libsvn_subr/bit_array.lo: subversion/libsvn_subr/bit_array.c subversion/include/private/svn_debug.h subversion/include/private/svn_subr_private.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h
+
+subversion/libsvn_subr/cache-inprocess.lo: subversion/libsvn_subr/cache-inprocess.c subversion/include/private/svn_cache.h subversion/include/private/svn_debug.h subversion/include/private/svn_mutex.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_iter.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/libsvn_subr/cache.h subversion/svn_private_config.h
+
+subversion/libsvn_subr/cache-membuffer.lo: subversion/libsvn_subr/cache-membuffer.c subversion/include/private/svn_atomic.h subversion/include/private/svn_cache.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_mutex.h subversion/include/private/svn_string_private.h subversion/include/private/svn_subr_private.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_iter.h subversion/include/svn_pools.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/libsvn_subr/cache.h subversion/libsvn_subr/fnv1a.h subversion/svn_private_config.h
+
+subversion/libsvn_subr/cache-memcache.lo: subversion/libsvn_subr/cache-memcache.c subversion/include/private/svn_cache.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/svn_base64.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_iter.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/libsvn_subr/cache.h subversion/svn_private_config.h
+
+subversion/libsvn_subr/cache-null.lo: subversion/libsvn_subr/cache-null.c subversion/include/private/svn_cache.h subversion/include/private/svn_debug.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_iter.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/libsvn_subr/cache.h subversion/svn_private_config.h
+
+subversion/libsvn_subr/cache.lo: subversion/libsvn_subr/cache.c subversion/include/private/svn_cache.h subversion/include/private/svn_debug.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_iter.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/libsvn_subr/cache.h
+
+subversion/libsvn_subr/cache_config.lo: subversion/libsvn_subr/cache_config.c subversion/include/private/svn_atomic.h subversion/include/private/svn_cache.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/svn_cache_config.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_iter.h subversion/include/svn_pools.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h
+
+subversion/libsvn_subr/checksum.lo: subversion/libsvn_subr/checksum.c subversion/include/private/svn_debug.h subversion/include/private/svn_subr_private.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_ctype.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/libsvn_subr/checksum.h subversion/libsvn_subr/fnv1a.h subversion/svn_private_config.h
+
+subversion/libsvn_subr/cmdline.lo: subversion/libsvn_subr/cmdline.c subversion/include/private/svn_cmdline_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_sorts_private.h subversion/include/private/svn_string_private.h subversion/include/private/svn_utf_private.h subversion/include/svn_auth.h subversion/include/svn_base64.h subversion/include/svn_checksum.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_ctype.h subversion/include/svn_dirent_uri.h subversion/include/svn_dso.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_nls.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_subst.h subversion/include/svn_types.h subversion/include/svn_utf.h subversion/include/svn_xml.h subversion/libsvn_subr/win32_crashrpt.h subversion/svn_private_config.h
+
+subversion/libsvn_subr/compat.lo: subversion/libsvn_subr/compat.c subversion/include/private/svn_debug.h subversion/include/svn_checksum.h subversion/include/svn_compat.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_props.h subversion/include/svn_string.h subversion/include/svn_types.h
+
+subversion/libsvn_subr/compress_lz4.lo: subversion/libsvn_subr/compress_lz4.c subversion/include/private/svn_debug.h subversion/include/private/svn_subr_private.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/libsvn_subr/lz4/lz4internal.h subversion/svn_private_config.h
+
+subversion/libsvn_subr/compress_zlib.lo: subversion/libsvn_subr/compress_zlib.c subversion/include/private/svn_debug.h subversion/include/private/svn_error_private.h subversion/include/private/svn_subr_private.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/svn_private_config.h
+
+subversion/libsvn_subr/config.lo: subversion/libsvn_subr/config.c subversion/include/private/svn_config_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_subr_private.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/libsvn_subr/config_impl.h subversion/svn_private_config.h
+
+subversion/libsvn_subr/config_auth.lo: subversion/libsvn_subr/config_auth.c subversion/include/private/svn_auth_private.h subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/libsvn_subr/auth.h subversion/libsvn_subr/config_impl.h subversion/svn_private_config.h
+
+subversion/libsvn_subr/config_file.lo: subversion/libsvn_subr/config_file.c subversion/include/private/svn_config_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_subr_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_ctype.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_subst.h subversion/include/svn_types.h subversion/include/svn_user.h subversion/include/svn_utf.h subversion/libsvn_subr/config_impl.h subversion/svn_private_config.h
+
+subversion/libsvn_subr/config_win.lo: subversion/libsvn_subr/config_win.c subversion/include/private/svn_debug.h subversion/include/private/svn_string_private.h subversion/include/private/svn_utf_private.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_utf.h subversion/libsvn_subr/config_impl.h subversion/svn_private_config.h
+
+subversion/libsvn_subr/crypto.lo: subversion/libsvn_subr/crypto.c subversion/include/private/svn_atomic.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/svn_checksum.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/libsvn_subr/crypto.h subversion/svn_private_config.h
+
+subversion/libsvn_subr/ctype.lo: subversion/libsvn_subr/ctype.c subversion/include/svn_ctype.h
+
+subversion/libsvn_subr/date.lo: subversion/libsvn_subr/date.c subversion/include/private/svn_debug.h subversion/include/private/svn_token.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/svn_private_config.h
+
+subversion/libsvn_subr/debug.lo: subversion/libsvn_subr/debug.c subversion/include/private/svn_debug.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_string.h subversion/include/svn_types.h
+
+subversion/libsvn_subr/deprecated.lo: subversion/libsvn_subr/deprecated.c subversion/include/private/svn_debug.h subversion/include/private/svn_mergeinfo_private.h subversion/include/private/svn_opt_private.h subversion/include/svn_auth.h subversion/include/svn_base64.h subversion/include/svn_checksum.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_dirent_uri.h subversion/include/svn_dso.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_subst.h subversion/include/svn_types.h subversion/include/svn_utf.h subversion/include/svn_version.h subversion/include/svn_xml.h subversion/libsvn_subr/auth.h subversion/libsvn_subr/opt.h subversion/svn_private_config.h
+
+subversion/libsvn_subr/dirent_uri.lo: subversion/libsvn_subr/dirent_uri.c subversion/include/private/svn_cert.h subversion/include/private/svn_debug.h subversion/include/private/svn_fspath.h subversion/include/svn_ctype.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_path.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/libsvn_subr/dirent_uri.h subversion/svn_private_config.h
+
+subversion/libsvn_subr/dso.lo: subversion/libsvn_subr/dso.c subversion/include/private/svn_atomic.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_mutex.h subversion/include/private/svn_subr_private.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_dso.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/svn_private_config.h
+
+subversion/libsvn_subr/encode.lo: subversion/libsvn_subr/encode.c subversion/include/private/svn_debug.h subversion/include/private/svn_subr_private.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/svn_private_config.h
+
+subversion/libsvn_subr/eol.lo: subversion/libsvn_subr/eol.c subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_eol_private.h subversion/include/svn_checksum.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_string.h subversion/include/svn_types.h
+
+subversion/libsvn_subr/error.lo: subversion/libsvn_subr/error.c subversion/include/private/svn_atomic.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_error_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_utf.h subversion/libsvn_subr/pools.h subversion/svn_private_config.h
+
+subversion/libsvn_subr/fnv1a.lo: subversion/libsvn_subr/fnv1a.c subversion/include/private/svn_debug.h subversion/include/private/svn_subr_private.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/libsvn_subr/fnv1a.h
+
+subversion/libsvn_subr/gpg_agent.lo: subversion/libsvn_subr/gpg_agent.c subversion/include/private/svn_auth_private.h subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_user.h subversion/libsvn_subr/auth.h subversion/svn_private_config.h
+
+subversion/libsvn_subr/hash.lo: subversion/libsvn_subr/hash.c subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_sorts_private.h subversion/include/private/svn_subr_private.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_pools.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/svn_private_config.h
+
+subversion/libsvn_subr/io.lo: subversion/libsvn_subr/io.c subversion/include/private/svn_atomic.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_io_private.h subversion/include/private/svn_string_private.h subversion/include/private/svn_utf_private.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_ctype.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_utf.h subversion/svn_private_config.h
+
+subversion/libsvn_subr/iter.lo: subversion/libsvn_subr/iter.c subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_iter.h subversion/include/svn_pools.h subversion/include/svn_types.h
+
+subversion/libsvn_subr/lock.lo: subversion/libsvn_subr/lock.c subversion/include/private/svn_debug.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_types.h
+
+subversion/libsvn_subr/log.lo: subversion/libsvn_subr/log.c subversion/include/private/svn_debug.h subversion/include/private/svn_log.h subversion/include/svn_checksum.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h
+
+subversion/libsvn_subr/lz4/lz4.lo: subversion/libsvn_subr/lz4/lz4.c subversion/libsvn_subr/lz4/lz4internal.h subversion/svn_private_config.h
+
+subversion/libsvn_subr/macos_keychain.lo: subversion/libsvn_subr/macos_keychain.c subversion/include/private/svn_auth_private.h subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_user.h subversion/include/svn_utf.h subversion/libsvn_subr/auth.h subversion/svn_private_config.h
+
+subversion/libsvn_subr/magic.lo: subversion/libsvn_subr/magic.c subversion/include/private/svn_debug.h subversion/include/private/svn_magic.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/svn_private_config.h
+
+subversion/libsvn_subr/md5.lo: subversion/libsvn_subr/md5.c subversion/include/private/svn_debug.h subversion/include/svn_checksum.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_md5.h subversion/include/svn_types.h subversion/libsvn_subr/checksum.h
+
+subversion/libsvn_subr/mergeinfo.lo: subversion/libsvn_subr/mergeinfo.c subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_fspath.h subversion/include/private/svn_mergeinfo_private.h subversion/include/private/svn_sorts_private.h subversion/include/private/svn_string_private.h subversion/include/private/svn_subr_private.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_ctype.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/svn_private_config.h
+
+subversion/libsvn_subr/mutex.lo: subversion/libsvn_subr/mutex.c subversion/include/private/svn_atomic.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_mutex.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_types.h subversion/svn_private_config.h
+
+subversion/libsvn_subr/nls.lo: subversion/libsvn_subr/nls.c subversion/include/private/svn_debug.h subversion/include/private/svn_string_private.h subversion/include/private/svn_utf_private.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_nls.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/svn_private_config.h
+
+subversion/libsvn_subr/object_pool.lo: subversion/libsvn_subr/object_pool.c subversion/include/private/svn_atomic.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_mutex.h subversion/include/private/svn_object_pool.h subversion/include/private/svn_string_private.h subversion/include/private/svn_subr_private.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h
+
+subversion/libsvn_subr/opt.lo: subversion/libsvn_subr/opt.c subversion/include/private/svn_debug.h subversion/include/private/svn_opt_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_ctype.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_props.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_utf.h subversion/include/svn_version.h subversion/libsvn_subr/opt.h subversion/svn_private_config.h
+
+subversion/libsvn_subr/packed_data.lo: subversion/libsvn_subr/packed_data.c subversion/include/private/svn_debug.h subversion/include/private/svn_delta_private.h subversion/include/private/svn_editor.h subversion/include/private/svn_packed_data.h subversion/include/private/svn_string_private.h subversion/include/private/svn_subr_private.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/svn_private_config.h
+
+subversion/libsvn_subr/path.lo: subversion/libsvn_subr/path.c subversion/include/private/svn_debug.h subversion/include/svn_checksum.h subversion/include/svn_ctype.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_path.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_utf.h subversion/libsvn_subr/dirent_uri.h subversion/svn_private_config.h
+
+subversion/libsvn_subr/pool.lo: subversion/libsvn_subr/pool.c subversion/include/private/svn_debug.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_pools.h subversion/include/svn_types.h subversion/libsvn_subr/pools.h
+
+subversion/libsvn_subr/prefix_string.lo: subversion/libsvn_subr/prefix_string.c subversion/include/private/svn_debug.h subversion/include/private/svn_string_private.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_string.h subversion/include/svn_types.h
+
+subversion/libsvn_subr/prompt.lo: subversion/libsvn_subr/prompt.c subversion/include/private/svn_cmdline_private.h subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_ctype.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_path.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/svn_private_config.h
+
+subversion/libsvn_subr/properties.lo: subversion/libsvn_subr/properties.c subversion/include/private/svn_debug.h subversion/include/private/svn_subr_private.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_ctype.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_props.h subversion/include/svn_string.h subversion/include/svn_types.h
+
+subversion/libsvn_subr/quoprint.lo: subversion/libsvn_subr/quoprint.c subversion/include/private/svn_debug.h subversion/include/svn_checksum.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_pools.h subversion/include/svn_quoprint.h subversion/include/svn_string.h subversion/include/svn_types.h
+
+subversion/libsvn_subr/root_pools.lo: subversion/libsvn_subr/root_pools.c subversion/include/private/svn_debug.h subversion/include/private/svn_mutex.h subversion/include/private/svn_subr_private.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h
+
+subversion/libsvn_subr/simple_providers.lo: subversion/libsvn_subr/simple_providers.c subversion/include/private/svn_auth_private.h subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_user.h subversion/include/svn_utf.h subversion/libsvn_subr/auth.h subversion/svn_private_config.h
+
+subversion/libsvn_subr/skel.lo: subversion/libsvn_subr/skel.c subversion/include/private/svn_debug.h subversion/include/private/svn_skel.h subversion/include/private/svn_string_private.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_string.h subversion/include/svn_types.h
+
+subversion/libsvn_subr/sorts.lo: subversion/libsvn_subr/sorts.c subversion/include/private/svn_debug.h subversion/include/private/svn_sorts_private.h subversion/include/svn_checksum.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_path.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h
+
+subversion/libsvn_subr/spillbuf.lo: subversion/libsvn_subr/spillbuf.c subversion/include/private/svn_debug.h subversion/include/private/svn_subr_private.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h
+
+subversion/libsvn_subr/sqlite.lo: subversion/libsvn_subr/sqlite.c subversion/include/private/svn_atomic.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_io_private.h subversion/include/private/svn_skel.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_string_private.h subversion/include/private/svn_token.h subversion/include/private/svn_utf_private.h subversion/include/svn_checksum.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/libsvn_subr/internal_statements.h subversion/svn_private_config.h
+
+subversion/libsvn_subr/sqlite3wrapper.lo: subversion/libsvn_subr/sqlite3wrapper.c subversion/svn_private_config.h
+
+subversion/libsvn_subr/ssl_client_cert_providers.lo: subversion/libsvn_subr/ssl_client_cert_providers.c subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_string.h subversion/include/svn_types.h
+
+subversion/libsvn_subr/ssl_client_cert_pw_providers.lo: subversion/libsvn_subr/ssl_client_cert_pw_providers.c subversion/include/private/svn_auth_private.h subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/svn_private_config.h
+
+subversion/libsvn_subr/ssl_server_trust_providers.lo: subversion/libsvn_subr/ssl_server_trust_providers.c subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_string.h subversion/include/svn_types.h
+
+subversion/libsvn_subr/stream.lo: subversion/libsvn_subr/stream.c subversion/include/private/svn_atomic.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_eol_private.h subversion/include/private/svn_error_private.h subversion/include/private/svn_io_private.h subversion/include/private/svn_string_private.h subversion/include/private/svn_subr_private.h subversion/include/private/svn_utf_private.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_utf.h subversion/svn_private_config.h
+
+subversion/libsvn_subr/string.lo: subversion/libsvn_subr/string.c subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_string_private.h subversion/include/svn_ctype.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/svn_private_config.h
+
+subversion/libsvn_subr/subst.lo: subversion/libsvn_subr/subst.c subversion/include/private/svn_debug.h subversion/include/private/svn_eol_private.h subversion/include/private/svn_io_private.h subversion/include/private/svn_string_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_subst.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_utf.h subversion/svn_private_config.h
+
+subversion/libsvn_subr/sysinfo.lo: subversion/libsvn_subr/sysinfo.c subversion/include/private/svn_debug.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_string_private.h subversion/include/private/svn_subr_private.h subversion/include/private/svn_token.h subversion/include/private/svn_utf_private.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_ctype.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_utf.h subversion/include/svn_version.h subversion/libsvn_subr/sysinfo.h subversion/svn_private_config.h
+
+subversion/libsvn_subr/target.lo: subversion/libsvn_subr/target.c subversion/include/private/svn_debug.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h
+
+subversion/libsvn_subr/temp_serializer.lo: subversion/libsvn_subr/temp_serializer.c subversion/include/private/svn_debug.h subversion/include/private/svn_temp_serializer.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_string.h subversion/include/svn_types.h
+
+subversion/libsvn_subr/time.lo: subversion/libsvn_subr/time.c subversion/include/private/svn_debug.h subversion/include/private/svn_string_private.h subversion/include/svn_checksum.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_utf.h subversion/svn_private_config.h
+
+subversion/libsvn_subr/token.lo: subversion/libsvn_subr/token.c subversion/include/private/svn_debug.h subversion/include/private/svn_token.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_types.h subversion/svn_private_config.h
+
+subversion/libsvn_subr/types.lo: subversion/libsvn_subr/types.c subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_string_private.h subversion/include/svn_checksum.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_props.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/svn_private_config.h
+
+subversion/libsvn_subr/user.lo: subversion/libsvn_subr/user.c subversion/include/private/svn_debug.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_user.h subversion/include/svn_utf.h
+
+subversion/libsvn_subr/username_providers.lo: subversion/libsvn_subr/username_providers.c subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_user.h subversion/include/svn_utf.h
+
+subversion/libsvn_subr/utf.lo: subversion/libsvn_subr/utf.c subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_mutex.h subversion/include/private/svn_string_private.h subversion/include/private/svn_utf_private.h subversion/include/svn_checksum.h subversion/include/svn_ctype.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_utf.h subversion/libsvn_subr/win32_xlate.h subversion/svn_private_config.h
+
+subversion/libsvn_subr/utf8proc.lo: subversion/libsvn_subr/utf8proc.c subversion/include/private/svn_debug.h subversion/include/private/svn_string_private.h subversion/include/private/svn_utf_private.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/libsvn_subr/utf8proc/utf8proc.c subversion/libsvn_subr/utf8proc/utf8proc_data.c subversion/libsvn_subr/utf8proc/utf8proc_internal.h subversion/svn_private_config.h
+
+subversion/libsvn_subr/utf_validate.lo: subversion/libsvn_subr/utf_validate.c subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_eol_private.h subversion/include/private/svn_string_private.h subversion/include/private/svn_utf_private.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_string.h subversion/include/svn_types.h
+
+subversion/libsvn_subr/utf_width.lo: subversion/libsvn_subr/utf_width.c subversion/include/private/svn_debug.h subversion/include/private/svn_string_private.h subversion/include/private/svn_utf_private.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_utf.h subversion/svn_private_config.h
+
+subversion/libsvn_subr/validate.lo: subversion/libsvn_subr/validate.c subversion/include/private/svn_debug.h subversion/include/svn_ctype.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_types.h subversion/svn_private_config.h
+
+subversion/libsvn_subr/version.lo: subversion/libsvn_subr/version.c subversion/include/private/svn_debug.h subversion/include/private/svn_subr_private.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_version.h subversion/libsvn_subr/sysinfo.h subversion/svn_private_config.h
+
+subversion/libsvn_subr/win32_crashrpt.lo: subversion/libsvn_subr/win32_crashrpt.c subversion/include/private/svn_debug.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_types.h subversion/include/svn_version.h subversion/libsvn_subr/sysinfo.h subversion/libsvn_subr/win32_crashrpt.h subversion/libsvn_subr/win32_crashrpt_dll.h
+
+subversion/libsvn_subr/win32_crypto.lo: subversion/libsvn_subr/win32_crypto.c subversion/include/private/svn_auth_private.h subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_base64.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_user.h subversion/include/svn_utf.h subversion/libsvn_subr/auth.h subversion/svn_private_config.h
+
+subversion/libsvn_subr/win32_xlate.lo: subversion/libsvn_subr/win32_xlate.c subversion/include/private/svn_atomic.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_subr_private.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_utf.h subversion/libsvn_subr/win32_xlate.h subversion/svn_private_config.h
+
+subversion/libsvn_subr/x509info.lo: subversion/libsvn_subr/x509info.c subversion/include/private/svn_debug.h subversion/include/svn_checksum.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_x509.h subversion/libsvn_subr/x509.h
+
+subversion/libsvn_subr/x509parse.lo: subversion/libsvn_subr/x509parse.c subversion/include/private/svn_debug.h subversion/include/private/svn_string_private.h subversion/include/private/svn_utf_private.h subversion/include/svn_checksum.h subversion/include/svn_ctype.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_utf.h subversion/include/svn_x509.h subversion/libsvn_subr/x509.h
+
+subversion/libsvn_subr/xml.lo: subversion/libsvn_subr/xml.c subversion/include/private/svn_debug.h subversion/include/private/svn_string_private.h subversion/include/private/svn_subr_private.h subversion/include/private/svn_utf_private.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_ctype.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_xml.h subversion/svn_private_config.h
+
+subversion/libsvn_wc/adm_crawler.lo: subversion/libsvn_wc/adm_crawler.c subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_skel.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_token.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_subst.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/libsvn_wc/adm_files.h subversion/libsvn_wc/conflicts.h subversion/libsvn_wc/props.h subversion/libsvn_wc/translate.h subversion/libsvn_wc/wc.h subversion/libsvn_wc/wc_db.h subversion/libsvn_wc/workqueue.h subversion/svn_private_config.h
+
+subversion/libsvn_wc/adm_files.lo: subversion/libsvn_wc/adm_files.c subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_skel.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_token.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/libsvn_wc/adm_files.h subversion/libsvn_wc/entries.h subversion/libsvn_wc/lock.h subversion/libsvn_wc/props.h subversion/libsvn_wc/wc.h subversion/libsvn_wc/wc_db.h subversion/svn_private_config.h
+
+subversion/libsvn_wc/adm_ops.lo: subversion/libsvn_wc/adm_ops.c subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_skel.h subversion/include/private/svn_sorts_private.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_subr_private.h subversion/include/private/svn_token.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/libsvn_wc/adm_files.h subversion/libsvn_wc/conflicts.h subversion/libsvn_wc/props.h subversion/libsvn_wc/wc.h subversion/libsvn_wc/wc_db.h subversion/libsvn_wc/workqueue.h subversion/svn_private_config.h
+
+subversion/libsvn_wc/ambient_depth_filter_editor.lo: subversion/libsvn_wc/ambient_depth_filter_editor.c subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_skel.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_token.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/libsvn_wc/wc.h subversion/libsvn_wc/wc_db.h subversion/svn_private_config.h
+
+subversion/libsvn_wc/cleanup.lo: subversion/libsvn_wc/cleanup.c subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_skel.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_token.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/libsvn_wc/adm_files.h subversion/libsvn_wc/lock.h subversion/libsvn_wc/props.h subversion/libsvn_wc/wc.h subversion/libsvn_wc/wc_db.h subversion/libsvn_wc/workqueue.h subversion/svn_private_config.h
+
+subversion/libsvn_wc/conflicts.lo: subversion/libsvn_wc/conflicts.c subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_skel.h subversion/include/private/svn_sorts_private.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_string_private.h subversion/include/private/svn_token.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/libsvn_wc/conflicts.h subversion/libsvn_wc/props.h subversion/libsvn_wc/wc.h subversion/libsvn_wc/wc_db.h subversion/libsvn_wc/workqueue.h subversion/svn_private_config.h
+
+subversion/libsvn_wc/context.lo: subversion/libsvn_wc/context.c subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_skel.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_token.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/libsvn_wc/wc.h subversion/libsvn_wc/wc_db.h subversion/svn_private_config.h
+
+subversion/libsvn_wc/copy.lo: subversion/libsvn_wc/copy.c subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_skel.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_token.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/libsvn_wc/conflicts.h subversion/libsvn_wc/props.h subversion/libsvn_wc/wc.h subversion/libsvn_wc/wc_db.h subversion/libsvn_wc/workqueue.h subversion/svn_private_config.h
+
+subversion/libsvn_wc/crop.lo: subversion/libsvn_wc/crop.c subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_skel.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_token.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/libsvn_wc/wc.h subversion/libsvn_wc/wc_db.h subversion/libsvn_wc/workqueue.h subversion/svn_private_config.h
+
+subversion/libsvn_wc/delete.lo: subversion/libsvn_wc/delete.c subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_skel.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_token.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/libsvn_wc/adm_files.h subversion/libsvn_wc/conflicts.h subversion/libsvn_wc/props.h subversion/libsvn_wc/wc.h subversion/libsvn_wc/wc_db.h subversion/libsvn_wc/workqueue.h subversion/svn_private_config.h
+
+subversion/libsvn_wc/deprecated.lo: subversion/libsvn_wc/deprecated.c subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_io_private.h subversion/include/private/svn_skel.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_subr_private.h subversion/include/private/svn_token.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_subst.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/libsvn_wc/entries.h subversion/libsvn_wc/lock.h subversion/libsvn_wc/props.h subversion/libsvn_wc/translate.h subversion/libsvn_wc/wc.h subversion/libsvn_wc/wc_db.h subversion/libsvn_wc/workqueue.h subversion/svn_private_config.h
+
+subversion/libsvn_wc/diff_editor.lo: subversion/libsvn_wc/diff_editor.c subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_editor.h subversion/include/private/svn_skel.h subversion/include/private/svn_sorts_private.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_subr_private.h subversion/include/private/svn_token.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_subst.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/libsvn_wc/adm_files.h subversion/libsvn_wc/diff.h subversion/libsvn_wc/props.h subversion/libsvn_wc/translate.h subversion/libsvn_wc/wc.h subversion/libsvn_wc/wc_db.h subversion/svn_private_config.h
+
+subversion/libsvn_wc/diff_local.lo: subversion/libsvn_wc/diff_local.c subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_skel.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_token.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/libsvn_wc/diff.h subversion/libsvn_wc/props.h subversion/libsvn_wc/wc.h subversion/libsvn_wc/wc_db.h subversion/svn_private_config.h
+
+subversion/libsvn_wc/entries.lo: subversion/libsvn_wc/entries.c subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_skel.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_token.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_ctype.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/libsvn_wc/adm_files.h subversion/libsvn_wc/conflicts.h subversion/libsvn_wc/entries.h subversion/libsvn_wc/lock.h subversion/libsvn_wc/props.h subversion/libsvn_wc/token-map.h subversion/libsvn_wc/tree_conflicts.h subversion/libsvn_wc/wc-queries.h subversion/libsvn_wc/wc.h subversion/libsvn_wc/wc_db.h subversion/libsvn_wc/wc_db_private.h subversion/svn_private_config.h
+
+subversion/libsvn_wc/externals.lo: subversion/libsvn_wc/externals.c subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_skel.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_subr_private.h subversion/include/private/svn_token.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_subst.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/libsvn_wc/adm_files.h subversion/libsvn_wc/conflicts.h subversion/libsvn_wc/props.h subversion/libsvn_wc/translate.h subversion/libsvn_wc/wc.h subversion/libsvn_wc/wc_db.h subversion/libsvn_wc/workqueue.h subversion/svn_private_config.h
+
+subversion/libsvn_wc/info.lo: subversion/libsvn_wc/info.c subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_skel.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_token.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/libsvn_wc/wc.h subversion/libsvn_wc/wc_db.h subversion/svn_private_config.h
+
+subversion/libsvn_wc/lock.lo: subversion/libsvn_wc/lock.c subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_skel.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_token.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/libsvn_wc/adm_files.h subversion/libsvn_wc/lock.h subversion/libsvn_wc/props.h subversion/libsvn_wc/wc.h subversion/libsvn_wc/wc_db.h subversion/svn_private_config.h
+
+subversion/libsvn_wc/merge.lo: subversion/libsvn_wc/merge.c subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_skel.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_token.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_subst.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/libsvn_wc/conflicts.h subversion/libsvn_wc/props.h subversion/libsvn_wc/translate.h subversion/libsvn_wc/wc.h subversion/libsvn_wc/wc_db.h subversion/libsvn_wc/workqueue.h subversion/svn_private_config.h
+
+subversion/libsvn_wc/node.lo: subversion/libsvn_wc/node.c subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_skel.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_token.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/libsvn_wc/entries.h subversion/libsvn_wc/props.h subversion/libsvn_wc/wc.h subversion/libsvn_wc/wc_db.h subversion/svn_private_config.h
+
+subversion/libsvn_wc/old-and-busted.lo: subversion/libsvn_wc/old-and-busted.c subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_skel.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_token.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_ctype.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/include/svn_xml.h subversion/libsvn_wc/adm_files.h subversion/libsvn_wc/entries.h subversion/libsvn_wc/lock.h subversion/libsvn_wc/props.h subversion/libsvn_wc/wc.h subversion/libsvn_wc/wc_db.h subversion/svn_private_config.h
+
+subversion/libsvn_wc/props.lo: subversion/libsvn_wc/props.c subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_mergeinfo_private.h subversion/include/private/svn_skel.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_string_private.h subversion/include/private/svn_subr_private.h subversion/include/private/svn_token.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_subst.h subversion/include/svn_types.h subversion/include/svn_utf.h subversion/include/svn_wc.h subversion/libsvn_wc/conflicts.h subversion/libsvn_wc/props.h subversion/libsvn_wc/translate.h subversion/libsvn_wc/wc.h subversion/libsvn_wc/wc_db.h subversion/libsvn_wc/workqueue.h subversion/svn_private_config.h
+
+subversion/libsvn_wc/questions.lo: subversion/libsvn_wc/questions.c subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_skel.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_token.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_subst.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/libsvn_wc/conflicts.h subversion/libsvn_wc/translate.h subversion/libsvn_wc/wc.h subversion/libsvn_wc/wc_db.h subversion/svn_private_config.h
+
+subversion/libsvn_wc/relocate.lo: subversion/libsvn_wc/relocate.c subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_skel.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_token.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/libsvn_wc/props.h subversion/libsvn_wc/wc.h subversion/libsvn_wc/wc_db.h subversion/svn_private_config.h
+
+subversion/libsvn_wc/revert.lo: subversion/libsvn_wc/revert.c subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_io_private.h subversion/include/private/svn_skel.h subversion/include/private/svn_sorts_private.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_token.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/libsvn_wc/adm_files.h subversion/libsvn_wc/props.h subversion/libsvn_wc/wc.h subversion/libsvn_wc/wc_db.h subversion/libsvn_wc/workqueue.h subversion/svn_private_config.h
+
+subversion/libsvn_wc/revision_status.lo: subversion/libsvn_wc/revision_status.c subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_skel.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_token.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/libsvn_wc/props.h subversion/libsvn_wc/wc.h subversion/libsvn_wc/wc_db.h subversion/svn_private_config.h
+
+subversion/libsvn_wc/status.lo: subversion/libsvn_wc/status.c subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_editor.h subversion/include/private/svn_fspath.h subversion/include/private/svn_skel.h subversion/include/private/svn_sorts_private.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_token.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/libsvn_wc/props.h subversion/libsvn_wc/wc.h subversion/libsvn_wc/wc_db.h subversion/svn_private_config.h
+
+subversion/libsvn_wc/translate.lo: subversion/libsvn_wc/translate.c subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_skel.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_token.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_subst.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/libsvn_wc/adm_files.h subversion/libsvn_wc/props.h subversion/libsvn_wc/translate.h subversion/libsvn_wc/wc.h subversion/libsvn_wc/wc_db.h subversion/svn_private_config.h
+
+subversion/libsvn_wc/tree_conflicts.lo: subversion/libsvn_wc/tree_conflicts.c subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_skel.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_token.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/libsvn_wc/conflicts.h subversion/libsvn_wc/tree_conflicts.h subversion/libsvn_wc/wc.h subversion/libsvn_wc/wc_db.h subversion/svn_private_config.h
+
+subversion/libsvn_wc/update_editor.lo: subversion/libsvn_wc/update_editor.c subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_editor.h subversion/include/private/svn_skel.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_subr_private.h subversion/include/private/svn_token.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_subst.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/libsvn_wc/adm_files.h subversion/libsvn_wc/conflicts.h subversion/libsvn_wc/props.h subversion/libsvn_wc/translate.h subversion/libsvn_wc/wc.h subversion/libsvn_wc/wc_db.h subversion/libsvn_wc/workqueue.h subversion/svn_private_config.h
+
+subversion/libsvn_wc/upgrade.lo: subversion/libsvn_wc/upgrade.c subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_skel.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_token.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/libsvn_wc/adm_files.h subversion/libsvn_wc/conflicts.h subversion/libsvn_wc/entries.h subversion/libsvn_wc/props.h subversion/libsvn_wc/token-map.h subversion/libsvn_wc/tree_conflicts.h subversion/libsvn_wc/wc-queries.h subversion/libsvn_wc/wc.h subversion/libsvn_wc/wc_db.h subversion/libsvn_wc/workqueue.h subversion/svn_private_config.h
+
+subversion/libsvn_wc/util.lo: subversion/libsvn_wc/util.c subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_skel.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_token.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_version.h subversion/include/svn_wc.h subversion/libsvn_wc/entries.h subversion/libsvn_wc/wc.h subversion/libsvn_wc/wc_db.h subversion/svn_private_config.h
+
+subversion/libsvn_wc/wc_db.lo: subversion/libsvn_wc/wc_db.c subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_skel.h subversion/include/private/svn_sorts_private.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_token.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/libsvn_wc/adm_files.h subversion/libsvn_wc/conflicts.h subversion/libsvn_wc/entries.h subversion/libsvn_wc/lock.h subversion/libsvn_wc/props.h subversion/libsvn_wc/token-map.h subversion/libsvn_wc/wc-queries.h subversion/libsvn_wc/wc.h subversion/libsvn_wc/wc_db.h subversion/libsvn_wc/wc_db_private.h subversion/libsvn_wc/workqueue.h subversion/svn_private_config.h
+
+subversion/libsvn_wc/wc_db_pristine.lo: subversion/libsvn_wc/wc_db_pristine.c subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_io_private.h subversion/include/private/svn_skel.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_token.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/libsvn_wc/wc-queries.h subversion/libsvn_wc/wc.h subversion/libsvn_wc/wc_db.h subversion/libsvn_wc/wc_db_private.h subversion/svn_private_config.h
+
+subversion/libsvn_wc/wc_db_update_move.lo: subversion/libsvn_wc/wc_db_update_move.c subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_skel.h subversion/include/private/svn_sorts_private.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_token.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/libsvn_wc/conflicts.h subversion/libsvn_wc/props.h subversion/libsvn_wc/token-map.h subversion/libsvn_wc/wc-queries.h subversion/libsvn_wc/wc.h subversion/libsvn_wc/wc_db.h subversion/libsvn_wc/wc_db_private.h subversion/libsvn_wc/workqueue.h subversion/svn_private_config.h
+
+subversion/libsvn_wc/wc_db_util.lo: subversion/libsvn_wc/wc_db_util.c subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_skel.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_token.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/libsvn_wc/adm_files.h subversion/libsvn_wc/props.h subversion/libsvn_wc/wc-queries.h subversion/libsvn_wc/wc.h subversion/libsvn_wc/wc_db.h subversion/libsvn_wc/wc_db_private.h subversion/svn_private_config.h
+
+subversion/libsvn_wc/wc_db_wcroot.lo: subversion/libsvn_wc/wc_db_wcroot.c subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_skel.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_token.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_version.h subversion/include/svn_wc.h subversion/libsvn_wc/adm_files.h subversion/libsvn_wc/props.h subversion/libsvn_wc/wc-queries.h subversion/libsvn_wc/wc.h subversion/libsvn_wc/wc_db.h subversion/libsvn_wc/wc_db_private.h subversion/svn_private_config.h
+
+subversion/libsvn_wc/wcroot_anchor.lo: subversion/libsvn_wc/wcroot_anchor.c subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_skel.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_token.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/libsvn_wc/wc.h subversion/libsvn_wc/wc_db.h subversion/svn_private_config.h
+
+subversion/libsvn_wc/workqueue.lo: subversion/libsvn_wc/workqueue.c subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_io_private.h subversion/include/private/svn_skel.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_token.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_subst.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/libsvn_wc/adm_files.h subversion/libsvn_wc/conflicts.h subversion/libsvn_wc/props.h subversion/libsvn_wc/translate.h subversion/libsvn_wc/wc.h subversion/libsvn_wc/wc_db.h subversion/libsvn_wc/workqueue.h subversion/svn_private_config.h
+
+subversion/mod_authz_svn/mod_authz_svn.lo: subversion/mod_authz_svn/mod_authz_svn.c subversion/include/mod_authz_svn.h subversion/include/mod_dav_svn.h subversion/include/private/svn_debug.h subversion/include/private/svn_fspath.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/svn_private_config.h
+ if $(INSTALL_APACHE_MODS) ; then $(COMPILE_APACHE_MOD) $(canonicalized_srcdir)subversion/mod_authz_svn/mod_authz_svn.c ; else echo "fake" > subversion/mod_authz_svn/mod_authz_svn.lo ; fi
+
+subversion/mod_dav_svn/activity.lo: subversion/mod_dav_svn/activity.c subversion/include/mod_authz_svn.h subversion/include/private/svn_dav_protocol.h subversion/include/private/svn_debug.h subversion/include/private/svn_editor.h subversion/include/private/svn_fs_private.h subversion/include/private/svn_skel.h subversion/include/svn_checksum.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_xml.h subversion/mod_dav_svn/dav_svn.h
+ if $(INSTALL_APACHE_MODS) ; then $(COMPILE_APACHE_MOD) $(canonicalized_srcdir)subversion/mod_dav_svn/activity.c ; else echo "fake" > subversion/mod_dav_svn/activity.lo ; fi
+
+subversion/mod_dav_svn/authz.lo: subversion/mod_dav_svn/authz.c subversion/include/mod_authz_svn.h subversion/include/private/svn_dav_protocol.h subversion/include/private/svn_debug.h subversion/include/private/svn_fspath.h subversion/include/private/svn_skel.h subversion/include/svn_checksum.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_xml.h subversion/mod_dav_svn/dav_svn.h
+ if $(INSTALL_APACHE_MODS) ; then $(COMPILE_APACHE_MOD) $(canonicalized_srcdir)subversion/mod_dav_svn/authz.c ; else echo "fake" > subversion/mod_dav_svn/authz.lo ; fi
+
+subversion/mod_dav_svn/deadprops.lo: subversion/mod_dav_svn/deadprops.c subversion/include/mod_authz_svn.h subversion/include/private/svn_dav_protocol.h subversion/include/private/svn_debug.h subversion/include/private/svn_log.h subversion/include/private/svn_skel.h subversion/include/svn_base64.h subversion/include/svn_checksum.h subversion/include/svn_dav.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_xml.h subversion/mod_dav_svn/dav_svn.h
+ if $(INSTALL_APACHE_MODS) ; then $(COMPILE_APACHE_MOD) $(canonicalized_srcdir)subversion/mod_dav_svn/deadprops.c ; else echo "fake" > subversion/mod_dav_svn/deadprops.lo ; fi
+
+subversion/mod_dav_svn/liveprops.lo: subversion/mod_dav_svn/liveprops.c subversion/include/mod_authz_svn.h subversion/include/private/svn_dav_protocol.h subversion/include/private/svn_debug.h subversion/include/private/svn_skel.h subversion/include/svn_checksum.h subversion/include/svn_ctype.h subversion/include/svn_dav.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_xml.h subversion/mod_dav_svn/dav_svn.h
+ if $(INSTALL_APACHE_MODS) ; then $(COMPILE_APACHE_MOD) $(canonicalized_srcdir)subversion/mod_dav_svn/liveprops.c ; else echo "fake" > subversion/mod_dav_svn/liveprops.lo ; fi
+
+subversion/mod_dav_svn/lock.lo: subversion/mod_dav_svn/lock.c subversion/include/mod_authz_svn.h subversion/include/private/svn_dav_protocol.h subversion/include/private/svn_debug.h subversion/include/private/svn_log.h subversion/include/private/svn_skel.h subversion/include/svn_checksum.h subversion/include/svn_dav.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_xml.h subversion/mod_dav_svn/dav_svn.h
+ if $(INSTALL_APACHE_MODS) ; then $(COMPILE_APACHE_MOD) $(canonicalized_srcdir)subversion/mod_dav_svn/lock.c ; else echo "fake" > subversion/mod_dav_svn/lock.lo ; fi
+
+subversion/mod_dav_svn/merge.lo: subversion/mod_dav_svn/merge.c subversion/include/mod_authz_svn.h subversion/include/private/svn_dav_protocol.h subversion/include/private/svn_debug.h subversion/include/private/svn_fspath.h subversion/include/private/svn_skel.h subversion/include/svn_checksum.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_xml.h subversion/mod_dav_svn/dav_svn.h
+ if $(INSTALL_APACHE_MODS) ; then $(COMPILE_APACHE_MOD) $(canonicalized_srcdir)subversion/mod_dav_svn/merge.c ; else echo "fake" > subversion/mod_dav_svn/merge.lo ; fi
+
+subversion/mod_dav_svn/mirror.lo: subversion/mod_dav_svn/mirror.c subversion/include/mod_authz_svn.h subversion/include/private/svn_dav_protocol.h subversion/include/private/svn_debug.h subversion/include/private/svn_fspath.h subversion/include/private/svn_skel.h subversion/include/svn_checksum.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_xml.h subversion/mod_dav_svn/dav_svn.h
+ if $(INSTALL_APACHE_MODS) ; then $(COMPILE_APACHE_MOD) $(canonicalized_srcdir)subversion/mod_dav_svn/mirror.c ; else echo "fake" > subversion/mod_dav_svn/mirror.lo ; fi
+
+subversion/mod_dav_svn/mod_dav_svn.lo: subversion/mod_dav_svn/mod_dav_svn.c subversion/include/mod_authz_svn.h subversion/include/mod_dav_svn.h subversion/include/private/svn_dav_protocol.h subversion/include/private/svn_debug.h subversion/include/private/svn_fspath.h subversion/include/private/svn_skel.h subversion/include/private/svn_subr_private.h subversion/include/svn_cache_config.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_ctype.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_dso.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_utf.h subversion/include/svn_version.h subversion/include/svn_xml.h subversion/mod_dav_svn/dav_svn.h
+ if $(INSTALL_APACHE_MODS) ; then $(COMPILE_APACHE_MOD) $(canonicalized_srcdir)subversion/mod_dav_svn/mod_dav_svn.c ; else echo "fake" > subversion/mod_dav_svn/mod_dav_svn.lo ; fi
+
+subversion/mod_dav_svn/posts/create_txn.lo: subversion/mod_dav_svn/posts/create_txn.c subversion/include/mod_authz_svn.h subversion/include/private/svn_dav_protocol.h subversion/include/private/svn_debug.h subversion/include/private/svn_skel.h subversion/include/svn_checksum.h subversion/include/svn_dav.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_xml.h subversion/mod_dav_svn/dav_svn.h
+ if $(INSTALL_APACHE_MODS) ; then $(COMPILE_APACHE_MOD) $(canonicalized_srcdir)subversion/mod_dav_svn/posts/create_txn.c ; else echo "fake" > subversion/mod_dav_svn/posts/create_txn.lo ; fi
+
+subversion/mod_dav_svn/reports/dated-rev.lo: subversion/mod_dav_svn/reports/dated-rev.c subversion/include/mod_authz_svn.h subversion/include/private/svn_dav_protocol.h subversion/include/private/svn_debug.h subversion/include/private/svn_skel.h subversion/include/svn_base64.h subversion/include/svn_checksum.h subversion/include/svn_dav.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_xml.h subversion/mod_dav_svn/dav_svn.h
+ if $(INSTALL_APACHE_MODS) ; then $(COMPILE_APACHE_MOD) $(canonicalized_srcdir)subversion/mod_dav_svn/reports/dated-rev.c ; else echo "fake" > subversion/mod_dav_svn/reports/dated-rev.lo ; fi
+
+subversion/mod_dav_svn/reports/deleted-rev.lo: subversion/mod_dav_svn/reports/deleted-rev.c subversion/include/mod_authz_svn.h subversion/include/private/svn_dav_protocol.h subversion/include/private/svn_debug.h subversion/include/private/svn_fspath.h subversion/include/private/svn_skel.h subversion/include/svn_checksum.h subversion/include/svn_dav.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_xml.h subversion/mod_dav_svn/dav_svn.h
+ if $(INSTALL_APACHE_MODS) ; then $(COMPILE_APACHE_MOD) $(canonicalized_srcdir)subversion/mod_dav_svn/reports/deleted-rev.c ; else echo "fake" > subversion/mod_dav_svn/reports/deleted-rev.lo ; fi
+
+subversion/mod_dav_svn/reports/file-revs.lo: subversion/mod_dav_svn/reports/file-revs.c subversion/include/mod_authz_svn.h subversion/include/private/svn_dav_protocol.h subversion/include/private/svn_debug.h subversion/include/private/svn_fspath.h subversion/include/private/svn_log.h subversion/include/private/svn_skel.h subversion/include/svn_base64.h subversion/include/svn_checksum.h subversion/include/svn_dav.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_xml.h subversion/mod_dav_svn/dav_svn.h
+ if $(INSTALL_APACHE_MODS) ; then $(COMPILE_APACHE_MOD) $(canonicalized_srcdir)subversion/mod_dav_svn/reports/file-revs.c ; else echo "fake" > subversion/mod_dav_svn/reports/file-revs.lo ; fi
+
+subversion/mod_dav_svn/reports/get-location-segments.lo: subversion/mod_dav_svn/reports/get-location-segments.c subversion/include/mod_authz_svn.h subversion/include/private/svn_dav_protocol.h subversion/include/private/svn_debug.h subversion/include/private/svn_fspath.h subversion/include/private/svn_skel.h subversion/include/svn_base64.h subversion/include/svn_checksum.h subversion/include/svn_dav.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_xml.h subversion/mod_dav_svn/dav_svn.h
+ if $(INSTALL_APACHE_MODS) ; then $(COMPILE_APACHE_MOD) $(canonicalized_srcdir)subversion/mod_dav_svn/reports/get-location-segments.c ; else echo "fake" > subversion/mod_dav_svn/reports/get-location-segments.lo ; fi
+
+subversion/mod_dav_svn/reports/get-locations.lo: subversion/mod_dav_svn/reports/get-locations.c subversion/include/mod_authz_svn.h subversion/include/private/svn_dav_protocol.h subversion/include/private/svn_debug.h subversion/include/private/svn_fspath.h subversion/include/private/svn_skel.h subversion/include/svn_base64.h subversion/include/svn_checksum.h subversion/include/svn_dav.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_xml.h subversion/mod_dav_svn/dav_svn.h
+ if $(INSTALL_APACHE_MODS) ; then $(COMPILE_APACHE_MOD) $(canonicalized_srcdir)subversion/mod_dav_svn/reports/get-locations.c ; else echo "fake" > subversion/mod_dav_svn/reports/get-locations.lo ; fi
+
+subversion/mod_dav_svn/reports/get-locks.lo: subversion/mod_dav_svn/reports/get-locks.c subversion/include/mod_authz_svn.h subversion/include/private/svn_dav_protocol.h subversion/include/private/svn_debug.h subversion/include/private/svn_skel.h subversion/include/svn_base64.h subversion/include/svn_checksum.h subversion/include/svn_dav.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_xml.h subversion/mod_dav_svn/dav_svn.h
+ if $(INSTALL_APACHE_MODS) ; then $(COMPILE_APACHE_MOD) $(canonicalized_srcdir)subversion/mod_dav_svn/reports/get-locks.c ; else echo "fake" > subversion/mod_dav_svn/reports/get-locks.lo ; fi
+
+subversion/mod_dav_svn/reports/inherited-props.lo: subversion/mod_dav_svn/reports/inherited-props.c subversion/include/mod_authz_svn.h subversion/include/private/svn_dav_protocol.h subversion/include/private/svn_debug.h subversion/include/private/svn_fspath.h subversion/include/private/svn_log.h subversion/include/private/svn_mergeinfo_private.h subversion/include/private/svn_skel.h subversion/include/svn_base64.h subversion/include/svn_checksum.h subversion/include/svn_dav.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_xml.h subversion/mod_dav_svn/dav_svn.h
+ if $(INSTALL_APACHE_MODS) ; then $(COMPILE_APACHE_MOD) $(canonicalized_srcdir)subversion/mod_dav_svn/reports/inherited-props.c ; else echo "fake" > subversion/mod_dav_svn/reports/inherited-props.lo ; fi
+
+subversion/mod_dav_svn/reports/list.lo: subversion/mod_dav_svn/reports/list.c subversion/include/mod_authz_svn.h subversion/include/private/svn_dav_protocol.h subversion/include/private/svn_debug.h subversion/include/private/svn_fspath.h subversion/include/private/svn_log.h subversion/include/private/svn_skel.h subversion/include/svn_base64.h subversion/include/svn_checksum.h subversion/include/svn_ctype.h subversion/include/svn_dav.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_xml.h subversion/mod_dav_svn/dav_svn.h
+ if $(INSTALL_APACHE_MODS) ; then $(COMPILE_APACHE_MOD) $(canonicalized_srcdir)subversion/mod_dav_svn/reports/list.c ; else echo "fake" > subversion/mod_dav_svn/reports/list.lo ; fi
+
+subversion/mod_dav_svn/reports/log.lo: subversion/mod_dav_svn/reports/log.c subversion/include/mod_authz_svn.h subversion/include/private/svn_dav_protocol.h subversion/include/private/svn_debug.h subversion/include/private/svn_fspath.h subversion/include/private/svn_log.h subversion/include/private/svn_skel.h subversion/include/svn_base64.h subversion/include/svn_checksum.h subversion/include/svn_dav.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_xml.h subversion/mod_dav_svn/dav_svn.h
+ if $(INSTALL_APACHE_MODS) ; then $(COMPILE_APACHE_MOD) $(canonicalized_srcdir)subversion/mod_dav_svn/reports/log.c ; else echo "fake" > subversion/mod_dav_svn/reports/log.lo ; fi
+
+subversion/mod_dav_svn/reports/mergeinfo.lo: subversion/mod_dav_svn/reports/mergeinfo.c subversion/include/mod_authz_svn.h subversion/include/private/svn_dav_protocol.h subversion/include/private/svn_debug.h subversion/include/private/svn_fspath.h subversion/include/private/svn_log.h subversion/include/private/svn_mergeinfo_private.h subversion/include/private/svn_skel.h subversion/include/svn_checksum.h subversion/include/svn_dav.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_xml.h subversion/mod_dav_svn/dav_svn.h
+ if $(INSTALL_APACHE_MODS) ; then $(COMPILE_APACHE_MOD) $(canonicalized_srcdir)subversion/mod_dav_svn/reports/mergeinfo.c ; else echo "fake" > subversion/mod_dav_svn/reports/mergeinfo.lo ; fi
+
+subversion/mod_dav_svn/reports/replay.lo: subversion/mod_dav_svn/reports/replay.c subversion/include/mod_authz_svn.h subversion/include/private/svn_dav_protocol.h subversion/include/private/svn_debug.h subversion/include/private/svn_log.h subversion/include/private/svn_skel.h subversion/include/svn_base64.h subversion/include/svn_checksum.h subversion/include/svn_dav.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_xml.h subversion/mod_dav_svn/dav_svn.h
+ if $(INSTALL_APACHE_MODS) ; then $(COMPILE_APACHE_MOD) $(canonicalized_srcdir)subversion/mod_dav_svn/reports/replay.c ; else echo "fake" > subversion/mod_dav_svn/reports/replay.lo ; fi
+
+subversion/mod_dav_svn/reports/update.lo: subversion/mod_dav_svn/reports/update.c subversion/include/mod_authz_svn.h subversion/include/private/svn_dav_protocol.h subversion/include/private/svn_debug.h subversion/include/private/svn_fspath.h subversion/include/private/svn_log.h subversion/include/private/svn_skel.h subversion/include/svn_base64.h subversion/include/svn_checksum.h subversion/include/svn_dav.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_xml.h subversion/mod_dav_svn/dav_svn.h
+ if $(INSTALL_APACHE_MODS) ; then $(COMPILE_APACHE_MOD) $(canonicalized_srcdir)subversion/mod_dav_svn/reports/update.c ; else echo "fake" > subversion/mod_dav_svn/reports/update.lo ; fi
+
+subversion/mod_dav_svn/repos.lo: subversion/mod_dav_svn/repos.c subversion/include/mod_authz_svn.h subversion/include/mod_dav_svn.h subversion/include/private/svn_dav_protocol.h subversion/include/private/svn_debug.h subversion/include/private/svn_editor.h subversion/include/private/svn_fspath.h subversion/include/private/svn_log.h subversion/include/private/svn_mutex.h subversion/include/private/svn_object_pool.h subversion/include/private/svn_repos_private.h subversion/include/private/svn_skel.h subversion/include/private/svn_sorts_private.h subversion/include/private/svn_string_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_ctype.h subversion/include/svn_dav.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_repos.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_subst.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_version.h subversion/include/svn_xml.h subversion/mod_dav_svn/dav_svn.h
+ if $(INSTALL_APACHE_MODS) ; then $(COMPILE_APACHE_MOD) $(canonicalized_srcdir)subversion/mod_dav_svn/repos.c ; else echo "fake" > subversion/mod_dav_svn/repos.lo ; fi
+
+subversion/mod_dav_svn/status.lo: subversion/mod_dav_svn/status.c subversion/include/mod_authz_svn.h subversion/include/private/svn_cache.h subversion/include/private/svn_dav_protocol.h subversion/include/private/svn_debug.h subversion/include/private/svn_editor.h subversion/include/private/svn_fs_private.h subversion/include/private/svn_skel.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_iter.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_xml.h subversion/mod_dav_svn/dav_svn.h subversion/svn_private_config.h
+ if $(INSTALL_APACHE_MODS) ; then $(COMPILE_APACHE_MOD) $(canonicalized_srcdir)subversion/mod_dav_svn/status.c ; else echo "fake" > subversion/mod_dav_svn/status.lo ; fi
+
+subversion/mod_dav_svn/util.lo: subversion/mod_dav_svn/util.c subversion/include/mod_authz_svn.h subversion/include/private/svn_dav_protocol.h subversion/include/private/svn_debug.h subversion/include/private/svn_fspath.h subversion/include/private/svn_skel.h subversion/include/private/svn_string_private.h subversion/include/svn_base64.h subversion/include/svn_checksum.h subversion/include/svn_ctype.h subversion/include/svn_dav.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_xml.h subversion/mod_dav_svn/dav_svn.h
+ if $(INSTALL_APACHE_MODS) ; then $(COMPILE_APACHE_MOD) $(canonicalized_srcdir)subversion/mod_dav_svn/util.c ; else echo "fake" > subversion/mod_dav_svn/util.lo ; fi
+
+subversion/mod_dav_svn/version.lo: subversion/mod_dav_svn/version.c subversion/include/mod_authz_svn.h subversion/include/private/svn_dav_protocol.h subversion/include/private/svn_debug.h subversion/include/private/svn_editor.h subversion/include/private/svn_fspath.h subversion/include/private/svn_log.h subversion/include/private/svn_mutex.h subversion/include/private/svn_object_pool.h subversion/include/private/svn_repos_private.h subversion/include/private/svn_skel.h subversion/include/private/svn_string_private.h subversion/include/private/svn_subr_private.h subversion/include/svn_base64.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_dav.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_version.h subversion/include/svn_xml.h subversion/mod_dav_svn/dav_svn.h
+ if $(INSTALL_APACHE_MODS) ; then $(COMPILE_APACHE_MOD) $(canonicalized_srcdir)subversion/mod_dav_svn/version.c ; else echo "fake" > subversion/mod_dav_svn/version.lo ; fi
+
+subversion/po/de.mo: subversion/po/de.po
+
+subversion/po/es.mo: subversion/po/es.po
+
+subversion/po/fr.mo: subversion/po/fr.po
+
+subversion/po/it.mo: subversion/po/it.po
+
+subversion/po/ja.mo: subversion/po/ja.po
+
+subversion/po/ko.mo: subversion/po/ko.po
+
+subversion/po/nb.mo: subversion/po/nb.po
+
+subversion/po/pl.mo: subversion/po/pl.po
+
+subversion/po/pt_BR.mo: subversion/po/pt_BR.po
+
+subversion/po/sv.mo: subversion/po/sv.po
+
+subversion/po/zh_CN.mo: subversion/po/zh_CN.po
+
+subversion/po/zh_TW.mo: subversion/po/zh_TW.po
+
+subversion/svn/add-cmd.lo: subversion/svn/add-cmd.c subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/svn/cl.h subversion/svn_private_config.h
+
+subversion/svn/auth-cmd.lo: subversion/svn/auth-cmd.c subversion/include/private/svn_cmdline_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_sorts_private.h subversion/include/private/svn_token.h subversion/include/svn_auth.h subversion/include/svn_base64.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_utf.h subversion/include/svn_wc.h subversion/include/svn_x509.h subversion/svn/cl.h subversion/svn_private_config.h
+
+subversion/svn/blame-cmd.lo: subversion/svn/blame-cmd.c subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/include/svn_xml.h subversion/svn/cl.h subversion/svn_private_config.h
+
+subversion/svn/cat-cmd.lo: subversion/svn/cat-cmd.c subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/svn/cl.h subversion/svn_private_config.h
+
+subversion/svn/changelist-cmd.lo: subversion/svn/changelist-cmd.c subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_utf.h subversion/include/svn_wc.h subversion/svn/cl.h subversion/svn_private_config.h
+
+subversion/svn/checkout-cmd.lo: subversion/svn/checkout-cmd.c subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/svn/cl.h subversion/svn_private_config.h
+
+subversion/svn/cl-conflicts.lo: subversion/svn/cl-conflicts.c subversion/include/private/svn_debug.h subversion/include/private/svn_token.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/include/svn_xml.h subversion/svn/cl-conflicts.h subversion/svn/cl.h subversion/svn_private_config.h
+
+subversion/svn/cleanup-cmd.lo: subversion/svn/cleanup-cmd.c subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/svn/cl.h subversion/svn_private_config.h
+
+subversion/svn/commit-cmd.lo: subversion/svn/commit-cmd.c subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/svn/cl.h subversion/svn_private_config.h
+
+subversion/svn/conflict-callbacks.lo: subversion/svn/conflict-callbacks.c subversion/include/private/svn_cmdline_private.h subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_utf.h subversion/include/svn_wc.h subversion/svn/cl-conflicts.h subversion/svn/cl.h subversion/svn_private_config.h
+
+subversion/svn/copy-cmd.lo: subversion/svn/copy-cmd.c subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/svn/cl.h subversion/svn_private_config.h
+
+subversion/svn/delete-cmd.lo: subversion/svn/delete-cmd.c subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/svn/cl.h subversion/svn_private_config.h
+
+subversion/svn/deprecated.lo: subversion/svn/deprecated.c subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/svn/cl.h
+
+subversion/svn/diff-cmd.lo: subversion/svn/diff-cmd.c subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/include/svn_xml.h subversion/svn/cl.h subversion/svn_private_config.h
+
+subversion/svn/export-cmd.lo: subversion/svn/export-cmd.c subversion/include/private/svn_debug.h subversion/include/private/svn_opt_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/svn/cl.h subversion/svn_private_config.h
+
+subversion/svn/file-merge.lo: subversion/svn/file-merge.c subversion/include/private/svn_cmdline_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_string_private.h subversion/include/private/svn_utf_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_utf.h subversion/include/svn_wc.h subversion/include/svn_xml.h subversion/svn/cl.h subversion/svn_private_config.h
+
+subversion/svn/help-cmd.lo: subversion/svn/help-cmd.c subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/svn/cl.h subversion/svn_private_config.h
+
+subversion/svn/import-cmd.lo: subversion/svn/import-cmd.c subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/svn/cl.h subversion/svn_private_config.h
+
+subversion/svn/info-cmd.lo: subversion/svn/info-cmd.c subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/include/svn_xml.h subversion/svn/cl-conflicts.h subversion/svn/cl.h subversion/svn_private_config.h
+
+subversion/svn/list-cmd.lo: subversion/svn/list-cmd.c subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_utf.h subversion/include/svn_wc.h subversion/include/svn_xml.h subversion/svn/cl.h subversion/svn_private_config.h
+
+subversion/svn/lock-cmd.lo: subversion/svn/lock-cmd.c subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_subst.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/svn/cl.h subversion/svn_private_config.h
+
+subversion/svn/log-cmd.lo: subversion/svn/log-cmd.c subversion/include/private/svn_cmdline_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_sorts_private.h subversion/include/private/svn_string_private.h subversion/include/private/svn_utf_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_cmdline.h subversion/include/svn_compat.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/include/svn_xml.h subversion/svn/cl-log.h subversion/svn/cl.h subversion/svn_private_config.h
+
+subversion/svn/merge-cmd.lo: subversion/svn/merge-cmd.c subversion/include/private/svn_client_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/svn/cl.h subversion/svn_private_config.h
+
+subversion/svn/mergeinfo-cmd.lo: subversion/svn/mergeinfo-cmd.c subversion/include/private/svn_debug.h subversion/include/private/svn_string_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_cmdline.h subversion/include/svn_compat.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/svn/cl-log.h subversion/svn/cl.h subversion/svn_private_config.h
+
+subversion/svn/mkdir-cmd.lo: subversion/svn/mkdir-cmd.c subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/svn/cl.h subversion/svn_private_config.h
+
+subversion/svn/move-cmd.lo: subversion/svn/move-cmd.c subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/svn/cl.h subversion/svn_private_config.h
+
+subversion/svn/notify.lo: subversion/svn/notify.c subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_sorts_private.h subversion/include/private/svn_subr_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/svn/cl.h subversion/svn_private_config.h
+
+subversion/svn/patch-cmd.lo: subversion/svn/patch-cmd.c subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/svn/cl.h subversion/svn_private_config.h
+
+subversion/svn/propdel-cmd.lo: subversion/svn/propdel-cmd.c subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_utf.h subversion/include/svn_wc.h subversion/svn/cl.h subversion/svn_private_config.h
+
+subversion/svn/propedit-cmd.lo: subversion/svn/propedit-cmd.c subversion/include/private/svn_cmdline_private.h subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_utf.h subversion/include/svn_wc.h subversion/svn/cl.h subversion/svn_private_config.h
+
+subversion/svn/propget-cmd.lo: subversion/svn/propget-cmd.c subversion/include/private/svn_cmdline_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_opt_private.h subversion/include/private/svn_sorts_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_subst.h subversion/include/svn_types.h subversion/include/svn_utf.h subversion/include/svn_wc.h subversion/include/svn_xml.h subversion/svn/cl.h subversion/svn_private_config.h
+
+subversion/svn/proplist-cmd.lo: subversion/svn/proplist-cmd.c subversion/include/private/svn_cmdline_private.h subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/include/svn_xml.h subversion/svn/cl.h subversion/svn_private_config.h
+
+subversion/svn/props.lo: subversion/svn/props.c subversion/include/private/svn_cmdline_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_string_private.h subversion/include/svn_auth.h subversion/include/svn_base64.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_subst.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/include/svn_xml.h subversion/svn/cl.h subversion/svn_private_config.h
+
+subversion/svn/propset-cmd.lo: subversion/svn/propset-cmd.c subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_subst.h subversion/include/svn_types.h subversion/include/svn_utf.h subversion/include/svn_wc.h subversion/svn/cl.h subversion/svn_private_config.h
+
+subversion/svn/relocate-cmd.lo: subversion/svn/relocate-cmd.c subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/svn/cl.h subversion/svn_private_config.h
+
+subversion/svn/resolve-cmd.lo: subversion/svn/resolve-cmd.c subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/svn/cl.h subversion/svn_private_config.h
+
+subversion/svn/resolved-cmd.lo: subversion/svn/resolved-cmd.c subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/svn/cl.h subversion/svn_private_config.h
+
+subversion/svn/revert-cmd.lo: subversion/svn/revert-cmd.c subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/svn/cl.h subversion/svn_private_config.h
+
+subversion/svn/shelve-cmd.lo: subversion/svn/shelve-cmd.c subversion/include/private/svn_debug.h subversion/include/private/svn_sorts_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_ra.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_utf.h subversion/include/svn_wc.h subversion/svn/cl.h subversion/svn_private_config.h
+
+subversion/svn/similarity.lo: subversion/svn/similarity.c subversion/include/private/svn_debug.h subversion/include/private/svn_string_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/svn/cl.h subversion/svn_private_config.h
+
+subversion/svn/status-cmd.lo: subversion/svn/status-cmd.c subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/include/svn_xml.h subversion/svn/cl.h subversion/svn_private_config.h
+
+subversion/svn/status.lo: subversion/svn/status.c subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/include/svn_xml.h subversion/svn/cl-conflicts.h subversion/svn/cl.h subversion/svn_private_config.h
+
+subversion/svn/svn.lo: subversion/svn/svn.c subversion/include/private/svn_cmdline_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_opt_private.h subversion/include/private/svn_string_private.h subversion/include/private/svn_subr_private.h subversion/include/private/svn_utf_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_utf.h subversion/include/svn_version.h subversion/include/svn_wc.h subversion/svn/cl.h subversion/svn_private_config.h
+
+subversion/svn/switch-cmd.lo: subversion/svn/switch-cmd.c subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/svn/cl.h subversion/svn_private_config.h
+
+subversion/svn/unlock-cmd.lo: subversion/svn/unlock-cmd.c subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/svn/cl.h subversion/svn_private_config.h
+
+subversion/svn/update-cmd.lo: subversion/svn/update-cmd.c subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/svn/cl.h subversion/svn_private_config.h
+
+subversion/svn/upgrade-cmd.lo: subversion/svn/upgrade-cmd.c subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/svn/cl.h subversion/svn_private_config.h
+
+subversion/svn/util.lo: subversion/svn/util.c subversion/include/private/svn_client_private.h subversion/include/private/svn_cmdline_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_opt_private.h subversion/include/private/svn_string_private.h subversion/include/private/svn_token.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_ctype.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_subst.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_utf.h subversion/include/svn_wc.h subversion/include/svn_xml.h subversion/svn/cl.h subversion/svn_private_config.h
+
+subversion/svnadmin/svnadmin.lo: subversion/svnadmin/svnadmin.c subversion/include/private/svn_cmdline_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_fspath.h subversion/include/private/svn_opt_private.h subversion/include/private/svn_sorts_private.h subversion/include/private/svn_subr_private.h subversion/include/svn_auth.h subversion/include/svn_cache_config.h subversion/include/svn_checksum.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_repos.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_subst.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_user.h subversion/include/svn_utf.h subversion/include/svn_version.h subversion/include/svn_xml.h subversion/svn_private_config.h
+
+subversion/svnbench/help-cmd.lo: subversion/svnbench/help-cmd.c subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_version.h subversion/include/svn_wc.h subversion/svn_private_config.h subversion/svnbench/cl.h
+
+subversion/svnbench/notify.lo: subversion/svnbench/notify.c subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/svn_private_config.h subversion/svnbench/cl.h
+
+subversion/svnbench/null-blame-cmd.lo: subversion/svnbench/null-blame-cmd.c subversion/include/private/svn_client_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_string_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/svn_private_config.h subversion/svnbench/cl.h
+
+subversion/svnbench/null-export-cmd.lo: subversion/svnbench/null-export-cmd.c subversion/include/private/svn_client_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_string_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/svn_private_config.h subversion/svnbench/cl.h
+
+subversion/svnbench/null-info-cmd.lo: subversion/svnbench/null-info-cmd.c subversion/include/private/svn_client_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/include/svn_xml.h subversion/svn_private_config.h subversion/svnbench/cl.h
+
+subversion/svnbench/null-list-cmd.lo: subversion/svnbench/null-list-cmd.c subversion/include/private/svn_debug.h subversion/include/private/svn_string_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_utf.h subversion/include/svn_wc.h subversion/include/svn_xml.h subversion/svn_private_config.h subversion/svnbench/cl.h
+
+subversion/svnbench/null-log-cmd.lo: subversion/svnbench/null-log-cmd.c subversion/include/private/svn_debug.h subversion/include/private/svn_string_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_cmdline.h subversion/include/svn_compat.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/svn_private_config.h subversion/svnbench/cl.h
+
+subversion/svnbench/svnbench.lo: subversion/svnbench/svnbench.c subversion/include/private/svn_cmdline_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_opt_private.h subversion/include/private/svn_string_private.h subversion/include/private/svn_utf_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_utf.h subversion/include/svn_version.h subversion/include/svn_wc.h subversion/svn_private_config.h subversion/svnbench/cl.h
+
+subversion/svnbench/util.lo: subversion/svnbench/util.c subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/svn_private_config.h subversion/svnbench/cl.h
+
+subversion/svndumpfilter/svndumpfilter.lo: subversion/svndumpfilter/svndumpfilter.c subversion/include/private/svn_cmdline_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_editor.h subversion/include/private/svn_mergeinfo_private.h subversion/include/private/svn_mutex.h subversion/include/private/svn_object_pool.h subversion/include/private/svn_repos_private.h subversion/include/private/svn_sorts_private.h subversion/include/private/svn_string_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_repos.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_utf.h subversion/include/svn_version.h subversion/svn_private_config.h
+
+subversion/svnfsfs/dump-index-cmd.lo: subversion/svnfsfs/dump-index-cmd.c subversion/include/private/svn_debug.h subversion/include/private/svn_fs_fs_private.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_iter.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/svnfsfs/svnfsfs.h
+
+subversion/svnfsfs/load-index-cmd.lo: subversion/svnfsfs/load-index-cmd.c subversion/include/private/svn_debug.h subversion/include/private/svn_fs_fs_private.h subversion/include/private/svn_sorts_private.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_ctype.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_iter.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_pools.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/svn_private_config.h subversion/svnfsfs/svnfsfs.h
+
+subversion/svnfsfs/stats-cmd.lo: subversion/svnfsfs/stats-cmd.c subversion/include/private/svn_debug.h subversion/include/private/svn_fs_fs_private.h subversion/include/private/svn_sorts_private.h subversion/include/private/svn_string_private.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_iter.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_pools.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/svn_private_config.h subversion/svnfsfs/svnfsfs.h
+
+subversion/svnfsfs/svnfsfs.lo: subversion/svnfsfs/svnfsfs.c subversion/include/private/svn_cmdline_private.h subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_cache_config.h subversion/include/svn_checksum.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_utf.h subversion/include/svn_version.h subversion/svn_private_config.h subversion/svnfsfs/svnfsfs.h
+
+subversion/svnlook/svnlook.lo: subversion/svnlook/svnlook.c subversion/include/private/svn_cmdline_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_diff_private.h subversion/include/private/svn_fspath.h subversion/include/private/svn_io_private.h subversion/include/private/svn_sorts_private.h subversion/include/svn_auth.h subversion/include/svn_cache_config.h subversion/include/svn_checksum.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_repos.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_subst.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_utf.h subversion/include/svn_version.h subversion/include/svn_xml.h subversion/svn_private_config.h
+
+subversion/svnmucc/svnmucc.lo: subversion/svnmucc/svnmucc.c subversion/include/private/svn_client_mtcc.h subversion/include/private/svn_cmdline_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_subr_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_subst.h subversion/include/svn_types.h subversion/include/svn_utf.h subversion/include/svn_version.h subversion/include/svn_wc.h subversion/svn_private_config.h
+
+subversion/svnrdump/dump_editor.lo: subversion/svnrdump/dump_editor.c subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_editor.h subversion/include/private/svn_mutex.h subversion/include/private/svn_object_pool.h subversion/include/private/svn_repos_private.h subversion/include/private/svn_string_private.h subversion/include/private/svn_subr_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_subst.h subversion/include/svn_types.h subversion/svnrdump/svnrdump.h
+
+subversion/svnrdump/load_editor.lo: subversion/svnrdump/load_editor.c subversion/include/private/svn_debug.h subversion/include/private/svn_editor.h subversion/include/private/svn_fspath.h subversion/include/private/svn_mergeinfo_private.h subversion/include/private/svn_mutex.h subversion/include/private/svn_object_pool.h subversion/include/private/svn_ra_private.h subversion/include/private/svn_repos_private.h subversion/include/private/svn_string_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_subst.h subversion/include/svn_types.h subversion/svn_private_config.h subversion/svnrdump/svnrdump.h
+
+subversion/svnrdump/svnrdump.lo: subversion/svnrdump/svnrdump.c subversion/include/private/svn_cmdline_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_editor.h subversion/include/private/svn_mutex.h subversion/include/private/svn_object_pool.h subversion/include/private/svn_ra_private.h subversion/include/private/svn_repos_private.h subversion/include/private/svn_string_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_utf.h subversion/include/svn_wc.h subversion/svn_private_config.h subversion/svnrdump/svnrdump.h
+
+subversion/svnrdump/util.lo: subversion/svnrdump/util.c subversion/include/private/svn_debug.h subversion/include/private/svn_editor.h subversion/include/private/svn_mutex.h subversion/include/private/svn_object_pool.h subversion/include/private/svn_repos_private.h subversion/include/private/svn_string_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/svnrdump/svnrdump.h
+
+subversion/svnserve/cyrus_auth.lo: subversion/svnserve/cyrus_auth.c subversion/include/private/ra_svn_sasl.h subversion/include/private/ra_svn_wrapped_sasl.h subversion/include/private/svn_atomic.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_editor.h subversion/include/private/svn_mutex.h subversion/include/private/svn_object_pool.h subversion/include/private/svn_ra_svn_private.h subversion/include/private/svn_repos_private.h subversion/include/private/svn_string_private.h subversion/include/private/svn_subr_private.h subversion/include/svn_base64.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_ra_svn.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/svn_private_config.h subversion/svnserve/server.h
+
+subversion/svnserve/log-escape.lo: subversion/svnserve/log-escape.c subversion/include/private/svn_atomic.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_editor.h subversion/include/private/svn_mutex.h subversion/include/private/svn_object_pool.h subversion/include/private/svn_repos_private.h subversion/include/private/svn_string_private.h subversion/include/private/svn_subr_private.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_ctype.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_ra_svn.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/svnserve/server.h
+
+subversion/svnserve/logger.lo: subversion/svnserve/logger.c subversion/include/private/svn_atomic.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_editor.h subversion/include/private/svn_mutex.h subversion/include/private/svn_object_pool.h subversion/include/private/svn_repos_private.h subversion/include/private/svn_string_private.h subversion/include/private/svn_subr_private.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_ra_svn.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/svn_private_config.h subversion/svnserve/logger.h subversion/svnserve/server.h
+
+subversion/svnserve/serve.lo: subversion/svnserve/serve.c subversion/include/private/svn_atomic.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_editor.h subversion/include/private/svn_fspath.h subversion/include/private/svn_log.h subversion/include/private/svn_mergeinfo_private.h subversion/include/private/svn_mutex.h subversion/include/private/svn_object_pool.h subversion/include/private/svn_ra_svn_private.h subversion/include/private/svn_repos_private.h subversion/include/private/svn_string_private.h subversion/include/private/svn_subr_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_compat.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_ra_svn.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_user.h subversion/svn_private_config.h subversion/svnserve/logger.h subversion/svnserve/server.h
+
+subversion/svnserve/svnserve.lo: subversion/svnserve/svnserve.c subversion/include/private/svn_atomic.h subversion/include/private/svn_cmdline_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_editor.h subversion/include/private/svn_mutex.h subversion/include/private/svn_object_pool.h subversion/include/private/svn_repos_private.h subversion/include/private/svn_string_private.h subversion/include/private/svn_subr_private.h subversion/include/svn_auth.h subversion/include/svn_cache_config.h subversion/include/svn_checksum.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra_svn.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_utf.h subversion/include/svn_version.h subversion/svn_private_config.h subversion/svnserve/logger.h subversion/svnserve/server.h subversion/svnserve/winservice.h
+
+subversion/svnserve/winservice.lo: subversion/svnserve/winservice.c subversion/include/private/svn_debug.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_types.h subversion/svn_private_config.h subversion/svnserve/winservice.h
+
+subversion/svnsync/svnsync.lo: subversion/svnsync/svnsync.c subversion/include/private/svn_cmdline_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_editor.h subversion/include/private/svn_opt_private.h subversion/include/private/svn_ra_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_subst.h subversion/include/svn_types.h subversion/include/svn_utf.h subversion/include/svn_version.h subversion/svn_private_config.h subversion/svnsync/sync.h
+
+subversion/svnsync/sync.lo: subversion/svnsync/sync.c subversion/include/private/svn_debug.h subversion/include/private/svn_string_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_subst.h subversion/include/svn_types.h subversion/include/svn_utf.h subversion/svn_private_config.h subversion/svnsync/sync.h
+
+subversion/svnversion/svnversion.lo: subversion/svnversion/svnversion.c subversion/include/private/svn_cmdline_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_opt_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_utf.h subversion/include/svn_version.h subversion/include/svn_wc.h subversion/svn_private_config.h
+
+subversion/tests/afl/afl-x509.lo: subversion/tests/afl/afl-x509.c subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_x509.h
+
+subversion/tests/cmdline/atomic-ra-revprop-change.lo: subversion/tests/cmdline/atomic-ra-revprop-change.c subversion/include/private/svn_debug.h subversion/include/private/svn_skel.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/svn_private_config.h
+
+subversion/tests/cmdline/entries-dump.lo: subversion/tests/cmdline/entries-dump.c subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_skel.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_token.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/libsvn_wc/lock.h subversion/libsvn_wc/wc.h subversion/libsvn_wc/wc_db.h subversion/svn_private_config.h
+
+subversion/tests/cmdline/lock-helper.lo: subversion/tests/cmdline/lock-helper.c subversion/include/private/svn_debug.h subversion/include/svn_checksum.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h
+
+subversion/tests/libsvn_wc/utils.lo: subversion/tests/libsvn_wc/utils.c subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_skel.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_token.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/libsvn_wc/token-map.h subversion/libsvn_wc/wc-queries.h subversion/libsvn_wc/wc.h subversion/libsvn_wc/wc_db.h subversion/libsvn_wc/wc_db_private.h subversion/svn_private_config.h subversion/tests/libsvn_wc/utils.h subversion/tests/svn_test.h subversion/tests/svn_test_fs.h
+
+subversion/tests/libsvn_client/client-test.lo: subversion/tests/libsvn_client/client-test.c subversion/include/private/svn_client_mtcc.h subversion/include/private/svn_client_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_editor.h subversion/include/private/svn_magic.h subversion/include/private/svn_sorts_private.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_repos.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_subst.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/libsvn_client/client.h subversion/libsvn_client/mergeinfo.h subversion/tests/svn_test.h subversion/tests/svn_test_fs.h
+
+subversion/tests/libsvn_client/conflicts-test.lo: subversion/tests/libsvn_client/conflicts-test.c subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/tests/libsvn_wc/utils.h subversion/tests/svn_test.h subversion/tests/svn_test_fs.h
+
+subversion/tests/libsvn_client/mtcc-test.lo: subversion/tests/libsvn_client/mtcc-test.c subversion/include/private/svn_client_mtcc.h subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/tests/svn_test.h subversion/tests/svn_test_fs.h
+
+subversion/tests/libsvn_delta/random-test.lo: subversion/tests/libsvn_delta/random-test.c subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_ctype.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/libsvn_delta/compose_delta.c subversion/libsvn_delta/delta.h subversion/tests/libsvn_delta/delta-window-test.h subversion/tests/libsvn_delta/range-index-test.h subversion/tests/svn_test.h
+
+subversion/tests/libsvn_delta/svndiff-stream-test.lo: subversion/tests/libsvn_delta/svndiff-stream-test.c subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_path.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/tests/svn_test.h
+
+subversion/tests/libsvn_delta/svndiff-test.lo: subversion/tests/libsvn_delta/svndiff-test.c subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_base64.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_quoprint.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/tests/svn_test.h
+
+subversion/tests/libsvn_delta/vdelta-test.lo: subversion/tests/libsvn_delta/vdelta-test.c subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_ctype.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/libsvn_delta/delta.h subversion/tests/libsvn_delta/delta-window-test.h subversion/tests/svn_test.h
+
+subversion/tests/libsvn_delta/window-test.lo: subversion/tests/libsvn_delta/window-test.c subversion/include/private/svn_debug.h subversion/include/private/svn_subr_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_path.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/tests/svn_test.h
+
+subversion/tests/libsvn_diff/diff-diff3-test.lo: subversion/tests/libsvn_diff/diff-diff3-test.c subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_utf.h subversion/tests/svn_test.h
+
+subversion/tests/libsvn_diff/parse-diff-test.lo: subversion/tests/libsvn_diff/parse-diff-test.c subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_utf.h subversion/tests/svn_test.h
+
+subversion/tests/libsvn_fs/fs-sequential-test.lo: subversion/tests/libsvn_fs/fs-sequential-test.c subversion/include/private/svn_debug.h subversion/include/private/svn_editor.h subversion/include/private/svn_fs_private.h subversion/include/private/svn_fs_util.h subversion/include/private/svn_fspath.h subversion/include/private/svn_mutex.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_version.h subversion/libsvn_delta/delta.h subversion/libsvn_fs/fs-loader.h subversion/libsvn_fs_base/fs_init.h subversion/libsvn_fs_fs/fs_init.h subversion/libsvn_fs_x/fs_init.h subversion/svn_private_config.h subversion/tests/svn_test.h subversion/tests/svn_test_fs.h
+
+subversion/tests/libsvn_fs/fs-test.lo: subversion/tests/libsvn_fs/fs-test.c subversion/include/private/svn_cache.h subversion/include/private/svn_debug.h subversion/include/private/svn_editor.h subversion/include/private/svn_fs_private.h subversion/include/private/svn_fs_util.h subversion/include/private/svn_fspath.h subversion/include/private/svn_mutex.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_token.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_iter.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_version.h subversion/libsvn_delta/delta.h subversion/libsvn_fs/fs-loader.h subversion/libsvn_fs_base/fs_init.h subversion/libsvn_fs_fs/fs_init.h subversion/libsvn_fs_x/fs_init.h subversion/svn_private_config.h subversion/tests/svn_test.h subversion/tests/svn_test_fs.h
+
+subversion/tests/libsvn_fs/locks-test.lo: subversion/tests/libsvn_fs/locks-test.c subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/tests/svn_test.h subversion/tests/svn_test_fs.h
+
+subversion/tests/libsvn_fs_base/changes-test.lo: subversion/tests/libsvn_fs_base/changes-test.c subversion/include/private/svn_debug.h subversion/include/private/svn_skel.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/libsvn_fs_base/bdb/bdb_compat.h subversion/libsvn_fs_base/bdb/changes-table.h subversion/libsvn_fs_base/bdb/env.h subversion/libsvn_fs_base/fs.h subversion/libsvn_fs_base/trail.h subversion/libsvn_fs_base/util/fs_skels.h subversion/svn_private_config.h subversion/tests/svn_test.h subversion/tests/svn_test_fs.h
+
+subversion/tests/libsvn_fs_base/fs-base-test.lo: subversion/tests/libsvn_fs_base/fs-base-test.c subversion/include/private/svn_debug.h subversion/include/private/svn_fs_util.h subversion/include/private/svn_skel.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_version.h subversion/libsvn_delta/delta.h subversion/libsvn_fs_base/bdb/bdb_compat.h subversion/libsvn_fs_base/bdb/env.h subversion/libsvn_fs_base/bdb/nodes-table.h subversion/libsvn_fs_base/bdb/txn-table.h subversion/libsvn_fs_base/fs.h subversion/libsvn_fs_base/id.h subversion/libsvn_fs_base/key-gen.h subversion/libsvn_fs_base/trail.h subversion/svn_private_config.h subversion/tests/svn_test.h subversion/tests/svn_test_fs.h
+
+subversion/tests/libsvn_fs_base/strings-reps-test.lo: subversion/tests/libsvn_fs_base/strings-reps-test.c subversion/include/private/svn_debug.h subversion/include/private/svn_mutex.h subversion/include/private/svn_skel.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_props.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/libsvn_fs/fs-loader.h subversion/libsvn_fs_base/bdb/bdb_compat.h subversion/libsvn_fs_base/bdb/env.h subversion/libsvn_fs_base/bdb/reps-table.h subversion/libsvn_fs_base/bdb/strings-table.h subversion/libsvn_fs_base/fs.h subversion/libsvn_fs_base/fs_init.h subversion/libsvn_fs_base/trail.h subversion/libsvn_fs_base/util/fs_skels.h subversion/libsvn_fs_fs/fs_init.h subversion/libsvn_fs_x/fs_init.h subversion/svn_private_config.h subversion/tests/svn_test.h subversion/tests/svn_test_fs.h
+
+subversion/tests/libsvn_fs_fs/fs-fs-fuzzy-test.lo: subversion/tests/libsvn_fs_fs/fs-fs-fuzzy-test.c subversion/include/private/svn_atomic.h subversion/include/private/svn_cache.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_editor.h subversion/include/private/svn_fs_fs_private.h subversion/include/private/svn_fs_private.h subversion/include/private/svn_mutex.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_string_private.h subversion/include/private/svn_token.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_iter.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/libsvn_fs_fs/fs.h subversion/libsvn_fs_fs/fs_fs.h subversion/libsvn_fs_fs/id.h subversion/libsvn_fs_fs/rev_file.h subversion/tests/svn_test.h subversion/tests/svn_test_fs.h
+
+subversion/tests/libsvn_fs_fs/fs-fs-pack-test.lo: subversion/tests/libsvn_fs_fs/fs-fs-pack-test.c subversion/include/private/svn_atomic.h subversion/include/private/svn_cache.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_editor.h subversion/include/private/svn_fs_fs_private.h subversion/include/private/svn_fs_private.h subversion/include/private/svn_mutex.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_string_private.h subversion/include/private/svn_token.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_iter.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/libsvn_fs/fs-loader.h subversion/libsvn_fs_base/fs_init.h subversion/libsvn_fs_fs/fs.h subversion/libsvn_fs_fs/fs_fs.h subversion/libsvn_fs_fs/fs_init.h subversion/libsvn_fs_fs/id.h subversion/libsvn_fs_fs/low_level.h subversion/libsvn_fs_fs/pack.h subversion/libsvn_fs_fs/rev_file.h subversion/libsvn_fs_fs/util.h subversion/libsvn_fs_x/fs_init.h subversion/tests/svn_test.h subversion/tests/svn_test_fs.h
+
+subversion/tests/libsvn_fs_fs/fs-fs-private-test.lo: subversion/tests/libsvn_fs_fs/fs-fs-private-test.c subversion/include/private/svn_atomic.h subversion/include/private/svn_cache.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_editor.h subversion/include/private/svn_fs_fs_private.h subversion/include/private/svn_fs_private.h subversion/include/private/svn_mutex.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_string_private.h subversion/include/private/svn_subr_private.h subversion/include/private/svn_token.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_iter.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/libsvn_fs_fs/fs.h subversion/libsvn_fs_fs/id.h subversion/libsvn_fs_fs/index.h subversion/libsvn_fs_fs/rev_file.h subversion/tests/svn_test.h subversion/tests/svn_test_fs.h
+
+subversion/tests/libsvn_fs_x/fs-x-pack-test.lo: subversion/tests/libsvn_fs_x/fs-x-pack-test.c subversion/include/private/svn_atomic.h subversion/include/private/svn_cache.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_editor.h subversion/include/private/svn_fs_private.h subversion/include/private/svn_mutex.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_string_private.h subversion/include/private/svn_token.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_iter.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/libsvn_fs_x/batch_fsync.h subversion/libsvn_fs_x/fs.h subversion/libsvn_fs_x/id.h subversion/libsvn_fs_x/reps.h subversion/libsvn_fs_x/rev_file.h subversion/tests/svn_test.h subversion/tests/svn_test_fs.h
+
+subversion/tests/libsvn_fs_x/string-table-test.lo: subversion/tests/libsvn_fs_x/string-table-test.c subversion/include/private/svn_debug.h subversion/include/private/svn_temp_serializer.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/libsvn_fs_x/string_table.h subversion/tests/svn_test.h
+
+subversion/tests/libsvn_ra/ra-test.lo: subversion/tests/libsvn_ra/ra-test.c subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/libsvn_ra_local/ra_local.h subversion/tests/svn_test.h subversion/tests/svn_test_fs.h
+
+subversion/tests/libsvn_ra_local/ra-local-test.lo: subversion/tests/libsvn_ra_local/ra-local-test.c subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_ra.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/libsvn_ra_local/ra_local.h subversion/tests/svn_test.h subversion/tests/svn_test_fs.h
+
+subversion/tests/libsvn_repos/authz-test.lo: subversion/tests/libsvn_repos/authz-test.c subversion/include/private/svn_debug.h subversion/include/private/svn_string_private.h subversion/include/private/svn_subr_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_iter.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/libsvn_repos/authz.h subversion/tests/svn_test.h
+
+subversion/tests/libsvn_repos/dir-delta-editor.lo: subversion/tests/libsvn_repos/dir-delta-editor.c subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/tests/libsvn_repos/dir-delta-editor.h subversion/tests/svn_test.h
+
+subversion/tests/libsvn_repos/dump-load-test.lo: subversion/tests/libsvn_repos/dump-load-test.c subversion/include/private/svn_debug.h subversion/include/private/svn_editor.h subversion/include/private/svn_mutex.h subversion/include/private/svn_object_pool.h subversion/include/private/svn_repos_private.h subversion/include/private/svn_string_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/tests/svn_test.h subversion/tests/svn_test_fs.h
+
+subversion/tests/libsvn_repos/repos-test.lo: subversion/tests/libsvn_repos/repos-test.c subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_editor.h subversion/include/private/svn_mutex.h subversion/include/private/svn_object_pool.h subversion/include/private/svn_repos_private.h subversion/include/private/svn_string_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_repos.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_version.h subversion/libsvn_subr/config_impl.h subversion/tests/libsvn_repos/dir-delta-editor.h subversion/tests/svn_test.h subversion/tests/svn_test_fs.h
+
+subversion/tests/libsvn_subr/auth-test.lo: subversion/tests/libsvn_subr/auth-test.c subversion/include/private/svn_auth_private.h subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_path.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/svn_private_config.h subversion/tests/svn_test.h
+
+subversion/tests/libsvn_subr/bit-array-test.lo: subversion/tests/libsvn_subr/bit-array-test.c subversion/include/private/svn_debug.h subversion/include/private/svn_subr_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_path.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/tests/svn_test.h
+
+subversion/tests/libsvn_subr/cache-test.lo: subversion/tests/libsvn_subr/cache-test.c subversion/include/private/svn_cache.h subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_iter.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/svn_private_config.h subversion/tests/svn_test.h
+
+subversion/tests/libsvn_subr/checksum-test.lo: subversion/tests/libsvn_subr/checksum-test.c subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_path.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/tests/svn_test.h
+
+subversion/tests/libsvn_subr/compat-test.lo: subversion/tests/libsvn_subr/compat-test.c subversion/include/private/svn_debug.h subversion/include/private/svn_subr_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_version.h subversion/svn_private_config.h subversion/tests/svn_test.h
+
+subversion/tests/libsvn_subr/compress-test.lo: subversion/tests/libsvn_subr/compress-test.c subversion/include/private/svn_debug.h subversion/include/private/svn_subr_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/tests/svn_test.h
+
+subversion/tests/libsvn_subr/config-test.lo: subversion/tests/libsvn_subr/config-test.c subversion/include/private/svn_config_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_subr_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_path.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/tests/svn_test.h
+
+subversion/tests/libsvn_subr/crypto-test.lo: subversion/tests/libsvn_subr/crypto-test.c subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/libsvn_subr/crypto.h subversion/tests/svn_test.h
+
+subversion/tests/libsvn_subr/dirent_uri-test.lo: subversion/tests/libsvn_subr/dirent_uri-test.c subversion/include/private/svn_cert.h subversion/include/private/svn_debug.h subversion/include/private/svn_fspath.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/tests/svn_test.h
+
+subversion/tests/libsvn_subr/error-code-test.lo: subversion/tests/libsvn_subr/error-code-test.c subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_path.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/tests/svn_test.h
+
+subversion/tests/libsvn_subr/error-test.lo: subversion/tests/libsvn_subr/error-test.c subversion/include/private/svn_debug.h subversion/include/private/svn_error_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_path.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/tests/svn_test.h
+
+subversion/tests/libsvn_subr/hashdump-test.lo: subversion/tests/libsvn_subr/hashdump-test.c subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_path.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/tests/svn_test.h
+
+subversion/tests/libsvn_subr/io-test.lo: subversion/tests/libsvn_subr/io-test.c subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_io_private.h subversion/include/private/svn_skel.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/tests/svn_test.h subversion/tests/svn_test_fs.h
+
+subversion/tests/libsvn_subr/mergeinfo-test.lo: subversion/tests/libsvn_subr/mergeinfo-test.c subversion/include/private/svn_debug.h subversion/include/private/svn_mergeinfo_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/tests/svn_test.h
+
+subversion/tests/libsvn_subr/opt-test.lo: subversion/tests/libsvn_subr/opt-test.c subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/tests/svn_test.h
+
+subversion/tests/libsvn_subr/packed-data-test.lo: subversion/tests/libsvn_subr/packed-data-test.c subversion/include/private/svn_debug.h subversion/include/private/svn_packed_data.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_path.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/tests/svn_test.h
+
+subversion/tests/libsvn_subr/path-test.lo: subversion/tests/libsvn_subr/path-test.c subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/tests/svn_test.h
+
+subversion/tests/libsvn_subr/prefix-string-test.lo: subversion/tests/libsvn_subr/prefix-string-test.c subversion/include/private/svn_debug.h subversion/include/private/svn_string_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_path.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/tests/svn_test.h
+
+subversion/tests/libsvn_subr/priority-queue-test.lo: subversion/tests/libsvn_subr/priority-queue-test.c subversion/include/private/svn_debug.h subversion/include/private/svn_sorts_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_path.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/tests/svn_test.h
+
+subversion/tests/libsvn_subr/revision-test.lo: subversion/tests/libsvn_subr/revision-test.c subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_path.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/tests/svn_test.h
+
+subversion/tests/libsvn_subr/root-pools-test.lo: subversion/tests/libsvn_subr/root-pools-test.c subversion/include/private/svn_atomic.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_subr_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_path.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/tests/svn_test.h
+
+subversion/tests/libsvn_subr/skel-test.lo: subversion/tests/libsvn_subr/skel-test.c subversion/include/private/svn_debug.h subversion/include/private/svn_skel.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/tests/svn_test.h subversion/tests/svn_test_fs.h
+
+subversion/tests/libsvn_subr/spillbuf-test.lo: subversion/tests/libsvn_subr/spillbuf-test.c subversion/include/private/svn_debug.h subversion/include/private/svn_subr_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_path.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/tests/svn_test.h
+
+subversion/tests/libsvn_subr/sqlite-test.lo: subversion/tests/libsvn_subr/sqlite-test.c subversion/include/private/svn_debug.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_token.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_path.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/tests/svn_test.h
+
+subversion/tests/libsvn_subr/stream-test.lo: subversion/tests/libsvn_subr/stream-test.c subversion/include/private/svn_debug.h subversion/include/private/svn_io_private.h subversion/include/svn_auth.h subversion/include/svn_base64.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_subst.h subversion/include/svn_types.h subversion/tests/svn_test.h
+
+subversion/tests/libsvn_subr/string-test.lo: subversion/tests/libsvn_subr/string-test.c subversion/include/private/svn_debug.h subversion/include/private/svn_string_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_path.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/tests/svn_test.h
+
+subversion/tests/libsvn_subr/subst_translate-test.lo: subversion/tests/libsvn_subr/subst_translate-test.c subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_path.h subversion/include/svn_string.h subversion/include/svn_subst.h subversion/include/svn_types.h subversion/tests/svn_test.h
+
+subversion/tests/libsvn_subr/time-test.lo: subversion/tests/libsvn_subr/time-test.c subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_path.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/tests/svn_test.h
+
+subversion/tests/libsvn_subr/translate-test.lo: subversion/tests/libsvn_subr/translate-test.c subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_subst.h subversion/include/svn_types.h subversion/tests/svn_test.h
+
+subversion/tests/libsvn_subr/utf-test.lo: subversion/tests/libsvn_subr/utf-test.c subversion/include/private/svn_debug.h subversion/include/private/svn_string_private.h subversion/include/private/svn_utf_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_utf.h subversion/tests/svn_test.h
+
+subversion/tests/libsvn_subr/x509-test.lo: subversion/tests/libsvn_subr/x509-test.c subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_base64.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_x509.h subversion/tests/svn_test.h
+
+subversion/tests/libsvn_subr/xml-test.lo: subversion/tests/libsvn_subr/xml-test.c subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_xml.h subversion/tests/svn_test.h
+
+subversion/libsvn_subr/sqlite3wrapper.lo: subversion/libsvn_subr/sqlite3wrapper.c subversion/svn_private_config.h
+
+subversion/tests/libsvn_wc/conflict-data-test.lo: subversion/tests/libsvn_wc/conflict-data-test.c subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_skel.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_token.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/libsvn_wc/conflicts.h subversion/libsvn_wc/tree_conflicts.h subversion/libsvn_wc/wc.h subversion/libsvn_wc/wc_db.h subversion/svn_private_config.h subversion/tests/libsvn_wc/utils.h subversion/tests/svn_test.h
+
+subversion/tests/libsvn_wc/db-test.lo: subversion/tests/libsvn_wc/db-test.c subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_skel.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_token.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/libsvn_wc/wc_db.h subversion/svn_private_config.h subversion/tests/libsvn_wc/utils.h subversion/tests/svn_test.h
+
+subversion/tests/libsvn_wc/entries-compat.lo: subversion/tests/libsvn_wc/entries-compat.c subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_skel.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_token.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/libsvn_wc/wc.h subversion/libsvn_wc/wc_db.h subversion/svn_private_config.h subversion/tests/libsvn_wc/utils.h subversion/tests/svn_test.h
+
+subversion/tests/libsvn_wc/op-depth-test.lo: subversion/tests/libsvn_wc/op-depth-test.c subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_skel.h subversion/include/private/svn_sorts_private.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_token.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_repos.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/libsvn_wc/conflicts.h subversion/libsvn_wc/wc.h subversion/libsvn_wc/wc_db.h subversion/libsvn_wc/wc_db_private.h subversion/libsvn_wc/workqueue.h subversion/svn_private_config.h subversion/tests/libsvn_wc/utils.h subversion/tests/libsvn_wc/wc-test-queries.h subversion/tests/svn_test.h
+
+subversion/tests/libsvn_wc/pristine-store-test.lo: subversion/tests/libsvn_wc/pristine-store-test.c subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_skel.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_token.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/libsvn_wc/wc-queries.h subversion/libsvn_wc/wc.h subversion/libsvn_wc/wc_db.h subversion/libsvn_wc/workqueue.h subversion/svn_private_config.h subversion/tests/libsvn_wc/utils.h subversion/tests/svn_test.h
+
+subversion/tests/libsvn_wc/utils.lo: subversion/tests/libsvn_wc/utils.c subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_skel.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_token.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/libsvn_wc/token-map.h subversion/libsvn_wc/wc-queries.h subversion/libsvn_wc/wc.h subversion/libsvn_wc/wc_db.h subversion/libsvn_wc/wc_db_private.h subversion/svn_private_config.h subversion/tests/libsvn_wc/utils.h subversion/tests/svn_test.h subversion/tests/svn_test_fs.h
+
+subversion/tests/libsvn_wc/utils.lo: subversion/tests/libsvn_wc/utils.c subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_skel.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_token.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/libsvn_wc/token-map.h subversion/libsvn_wc/wc-queries.h subversion/libsvn_wc/wc.h subversion/libsvn_wc/wc_db.h subversion/libsvn_wc/wc_db_private.h subversion/svn_private_config.h subversion/tests/libsvn_wc/utils.h subversion/tests/svn_test.h subversion/tests/svn_test_fs.h
+
+subversion/tests/libsvn_wc/utils.lo: subversion/tests/libsvn_wc/utils.c subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_skel.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_token.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/libsvn_wc/token-map.h subversion/libsvn_wc/wc-queries.h subversion/libsvn_wc/wc.h subversion/libsvn_wc/wc_db.h subversion/libsvn_wc/wc_db_private.h subversion/svn_private_config.h subversion/tests/libsvn_wc/utils.h subversion/tests/svn_test.h subversion/tests/svn_test_fs.h
+
+subversion/tests/libsvn_wc/utils.lo: subversion/tests/libsvn_wc/utils.c subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_skel.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_token.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/libsvn_wc/token-map.h subversion/libsvn_wc/wc-queries.h subversion/libsvn_wc/wc.h subversion/libsvn_wc/wc_db.h subversion/libsvn_wc/wc_db_private.h subversion/svn_private_config.h subversion/tests/libsvn_wc/utils.h subversion/tests/svn_test.h subversion/tests/svn_test_fs.h
+
+subversion/tests/libsvn_wc/utils.lo: subversion/tests/libsvn_wc/utils.c subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_skel.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_token.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/libsvn_wc/token-map.h subversion/libsvn_wc/wc-queries.h subversion/libsvn_wc/wc.h subversion/libsvn_wc/wc_db.h subversion/libsvn_wc/wc_db_private.h subversion/svn_private_config.h subversion/tests/libsvn_wc/utils.h subversion/tests/svn_test.h subversion/tests/svn_test_fs.h
+
+subversion/tests/libsvn_wc/utils.lo: subversion/tests/libsvn_wc/utils.c subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_skel.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_token.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/libsvn_wc/token-map.h subversion/libsvn_wc/wc-queries.h subversion/libsvn_wc/wc.h subversion/libsvn_wc/wc_db.h subversion/libsvn_wc/wc_db_private.h subversion/svn_private_config.h subversion/tests/libsvn_wc/utils.h subversion/tests/svn_test.h subversion/tests/svn_test_fs.h
+
+subversion/tests/libsvn_wc/wc-incomplete-tester.lo: subversion/tests/libsvn_wc/wc-incomplete-tester.c subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_skel.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_token.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/libsvn_wc/wc.h subversion/libsvn_wc/wc_db.h subversion/svn_private_config.h
+
+subversion/tests/libsvn_wc/wc-lock-tester.lo: subversion/tests/libsvn_wc/wc-lock-tester.c subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_skel.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_token.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/libsvn_wc/wc.h subversion/libsvn_wc/wc_db.h subversion/libsvn_wc/workqueue.h subversion/svn_private_config.h
+
+subversion/tests/libsvn_wc/wc-queries-test.lo: subversion/tests/libsvn_wc/wc-queries-test.c subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_ctype.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/libsvn_wc/wc-queries.h subversion/svn_private_config.h subversion/tests/svn_test.h
+
+subversion/tests/libsvn_wc/wc-test.lo: subversion/tests/libsvn_wc/wc-test.c subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_skel.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_token.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/libsvn_wc/wc.h subversion/libsvn_wc/wc_db.h subversion/libsvn_wc/wc_db_private.h subversion/svn_private_config.h subversion/tests/libsvn_wc/utils.h subversion/tests/svn_test.h
+
+subversion/tests/svn_test_fs.lo: subversion/tests/svn_test_fs.c subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_utf.h subversion/tests/svn_test.h subversion/tests/svn_test_fs.h
+
+subversion/tests/svn_test_main.lo: subversion/tests/svn_test_main.c subversion/include/private/svn_atomic.h subversion/include/private/svn_cmdline_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_dep_compat.h subversion/include/private/svn_mutex.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_token.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_ctype.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_utf.h subversion/include/svn_version.h subversion/svn_private_config.h subversion/tests/svn_test.h
+
+tools/client-side/svn-mergeinfo-normalizer/analyze-cmd.lo: tools/client-side/svn-mergeinfo-normalizer/analyze-cmd.c subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_wc.h tools/client-side/svn-mergeinfo-normalizer/mergeinfo-normalizer.h
+
+tools/client-side/svn-mergeinfo-normalizer/help-cmd.lo: tools/client-side/svn-mergeinfo-normalizer/help-cmd.c subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/svn_private_config.h tools/client-side/svn-mergeinfo-normalizer/mergeinfo-normalizer.h
+
+tools/client-side/svn-mergeinfo-normalizer/log.lo: tools/client-side/svn-mergeinfo-normalizer/log.c subversion/include/private/svn_debug.h subversion/include/private/svn_fspath.h subversion/include/private/svn_sorts_private.h subversion/include/private/svn_subr_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/svn_private_config.h tools/client-side/svn-mergeinfo-normalizer/mergeinfo-normalizer.h
+
+tools/client-side/svn-mergeinfo-normalizer/logic.lo: tools/client-side/svn-mergeinfo-normalizer/logic.c subversion/include/private/svn_debug.h subversion/include/private/svn_fspath.h subversion/include/private/svn_sorts_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/svn_private_config.h tools/client-side/svn-mergeinfo-normalizer/mergeinfo-normalizer.h
+
+tools/client-side/svn-mergeinfo-normalizer/missing-branches.lo: tools/client-side/svn-mergeinfo-normalizer/missing-branches.c subversion/include/private/svn_debug.h subversion/include/private/svn_sorts_private.h subversion/include/private/svn_subr_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_wc.h tools/client-side/svn-mergeinfo-normalizer/mergeinfo-normalizer.h
+
+tools/client-side/svn-mergeinfo-normalizer/normalize-cmd.lo: tools/client-side/svn-mergeinfo-normalizer/normalize-cmd.c subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_wc.h tools/client-side/svn-mergeinfo-normalizer/mergeinfo-normalizer.h
+
+tools/client-side/svn-mergeinfo-normalizer/remove-branches-cmd.lo: tools/client-side/svn-mergeinfo-normalizer/remove-branches-cmd.c subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/svn_private_config.h tools/client-side/svn-mergeinfo-normalizer/mergeinfo-normalizer.h
+
+tools/client-side/svn-mergeinfo-normalizer/svn-mergeinfo-normalizer.lo: tools/client-side/svn-mergeinfo-normalizer/svn-mergeinfo-normalizer.c subversion/include/private/svn_cmdline_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_opt_private.h subversion/include/private/svn_subr_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_utf.h subversion/include/svn_version.h subversion/include/svn_wc.h subversion/svn_private_config.h tools/client-side/svn-mergeinfo-normalizer/mergeinfo-normalizer.h
+
+tools/client-side/svn-mergeinfo-normalizer/wc_mergeinfo.lo: tools/client-side/svn-mergeinfo-normalizer/wc_mergeinfo.c subversion/include/private/svn_debug.h subversion/include/private/svn_fspath.h subversion/include/private/svn_opt_private.h subversion/include/private/svn_sorts_private.h subversion/include/private/svn_subr_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/svn_private_config.h tools/client-side/svn-mergeinfo-normalizer/mergeinfo-normalizer.h
+
+tools/client-side/svnconflict/svnconflict.lo: tools/client-side/svnconflict/svnconflict.c subversion/include/private/svn_cmdline_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_opt_private.h subversion/include/private/svn_subr_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_utf.h subversion/include/svn_version.h subversion/include/svn_wc.h subversion/svn_private_config.h
+
+tools/dev/fsfs-access-map.lo: tools/dev/fsfs-access-map.c subversion/include/private/svn_debug.h subversion/include/private/svn_string_private.h subversion/include/svn_checksum.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h
+
+tools/dev/svnmover/merge3.lo: tools/dev/svnmover/merge3.c subversion/include/private/svn_branch.h subversion/include/private/svn_branch_compat.h subversion/include/private/svn_branch_nested.h subversion/include/private/svn_branch_repos.h subversion/include/private/svn_client_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_element.h subversion/include/private/svn_sorts_private.h subversion/include/private/svn_subr_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_iter.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/svn_private_config.h tools/dev/svnmover/svnmover.h
+
+tools/dev/svnmover/ra.lo: tools/dev/svnmover/ra.c subversion/include/private/svn_branch.h subversion/include/private/svn_branch_compat.h subversion/include/private/svn_branch_repos.h subversion/include/private/svn_debug.h subversion/include/private/svn_delta_private.h subversion/include/private/svn_editor.h subversion/include/private/svn_element.h subversion/include/private/svn_ra_private.h subversion/include/private/svn_string_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_iter.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/svn_private_config.h tools/dev/svnmover/svnmover.h
+
+tools/dev/svnmover/scanlog.lo: tools/dev/svnmover/scanlog.c subversion/include/private/svn_branch.h subversion/include/private/svn_branch_compat.h subversion/include/private/svn_client_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_editor.h subversion/include/private/svn_element.h subversion/include/private/svn_ra_private.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_wc.h subversion/svn_private_config.h tools/dev/svnmover/svnmover.h
+
+tools/dev/svnmover/svnmover.lo: tools/dev/svnmover/svnmover.c subversion/include/private/svn_branch.h subversion/include/private/svn_branch_compat.h subversion/include/private/svn_branch_nested.h subversion/include/private/svn_branch_repos.h subversion/include/private/svn_client_private.h subversion/include/private/svn_cmdline_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_delta_private.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_editor.h subversion/include/private/svn_element.h subversion/include/private/svn_ra_private.h subversion/include/private/svn_sorts_private.h subversion/include/private/svn_string_private.h subversion/include/private/svn_subr_private.h subversion/include/private/svn_token.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_hash.h subversion/include/svn_io.h subversion/include/svn_iter.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_props.h subversion/include/svn_ra.h subversion/include/svn_sorts.h subversion/include/svn_string.h subversion/include/svn_subst.h subversion/include/svn_types.h subversion/include/svn_utf.h subversion/include/svn_version.h subversion/include/svn_wc.h subversion/svn_private_config.h tools/dev/svnmover/linenoise/linenoise.h tools/dev/svnmover/svnmover.h
+
+tools/dev/svnmover/util.lo: tools/dev/svnmover/util.c subversion/include/private/svn_branch.h subversion/include/private/svn_branch_compat.h subversion/include/private/svn_debug.h subversion/include/private/svn_element.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_client.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_diff.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_wc.h tools/dev/svnmover/linenoise/linenoise.c tools/dev/svnmover/linenoise/linenoise.h tools/dev/svnmover/svnmover.h
+
+tools/dev/svnraisetreeconflict/svnraisetreeconflict.lo: tools/dev/svnraisetreeconflict/svnraisetreeconflict.c subversion/include/private/svn_cmdline_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_utf.h subversion/include/svn_version.h subversion/include/svn_wc.h subversion/svn_private_config.h
+
+tools/dev/wc-ng/svn-wc-db-tester.lo: tools/dev/wc-ng/svn-wc-db-tester.c subversion/include/private/svn_cmdline_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_diff_tree.h subversion/include/private/svn_skel.h subversion/include/private/svn_sqlite.h subversion/include/private/svn_token.h subversion/include/private/svn_wc_private.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_ra.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_utf.h subversion/include/svn_version.h subversion/include/svn_wc.h subversion/libsvn_wc/wc.h subversion/libsvn_wc/wc_db.h subversion/svn_private_config.h
+
+tools/dev/x509-parser.lo: tools/dev/x509-parser.c subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_base64.h subversion/include/svn_checksum.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_time.h subversion/include/svn_types.h subversion/include/svn_x509.h subversion/svn_private_config.h
+
+tools/diff/diff.lo: tools/diff/diff.c subversion/include/private/svn_debug.h subversion/include/svn_checksum.h subversion/include/svn_diff.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_utf.h
+
+tools/diff/diff3.lo: tools/diff/diff3.c subversion/include/private/svn_debug.h subversion/include/private/svn_token.h subversion/include/svn_checksum.h subversion/include/svn_diff.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h
+
+tools/diff/diff4.lo: tools/diff/diff4.c subversion/include/private/svn_debug.h subversion/include/svn_checksum.h subversion/include/svn_diff.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_pools.h subversion/include/svn_string.h subversion/include/svn_types.h
+
+tools/server-side/mod_dontdothat/mod_dontdothat.lo: tools/server-side/mod_dontdothat/mod_dontdothat.c subversion/include/mod_dav_svn.h subversion/include/private/svn_debug.h subversion/include/private/svn_fspath.h subversion/include/svn_checksum.h subversion/include/svn_config.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_io.h subversion/include/svn_path.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_xml.h
+ if $(INSTALL_APACHE_MODS) ; then $(COMPILE_APACHE_MOD) $(canonicalized_srcdir)tools/server-side/mod_dontdothat/mod_dontdothat.c ; else echo "fake" > tools/server-side/mod_dontdothat/mod_dontdothat.lo ; fi
+
+tools/server-side/svn-populate-node-origins-index.lo: tools/server-side/svn-populate-node-origins-index.c subversion/include/private/svn_debug.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_utf.h
+
+tools/server-side/svnauthz.lo: tools/server-side/svnauthz.c subversion/include/private/svn_cmdline_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_fspath.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_utf.h
+
+tools/server-side/svnauthz.lo: tools/server-side/svnauthz.c subversion/include/private/svn_cmdline_private.h subversion/include/private/svn_debug.h subversion/include/private/svn_fspath.h subversion/include/svn_auth.h subversion/include/svn_checksum.h subversion/include/svn_cmdline.h subversion/include/svn_config.h subversion/include/svn_delta.h subversion/include/svn_dirent_uri.h subversion/include/svn_error.h subversion/include/svn_error_codes.h subversion/include/svn_fs.h subversion/include/svn_io.h subversion/include/svn_mergeinfo.h subversion/include/svn_opt.h subversion/include/svn_path.h subversion/include/svn_pools.h subversion/include/svn_repos.h subversion/include/svn_string.h subversion/include/svn_types.h subversion/include/svn_utf.h
+
diff --git a/devel/subversion-lts/files/extra-patch-build.conf b/devel/subversion-lts/files/extra-patch-build.conf
new file mode 100644
index 000000000000..5ca23bbdc3ce
--- /dev/null
+++ b/devel/subversion-lts/files/extra-patch-build.conf
@@ -0,0 +1,11 @@
+--- build.conf.orig 2018-04-19 20:21:34.859567000 +0300
++++ build.conf 2018-04-19 20:21:55.939112000 +0300
+@@ -430,7 +430,7 @@
+ path = tools/server-side/mod_dontdothat
+ nonlibs = mod_dav_svn apr aprutil
+ libs = libsvn_subr libhttpd
+-install = tools
++install = apache-mod
+
+ # The Subversion FSFS repository manipulation tool
+ [svnfsfs]
diff --git a/devel/subversion-lts/files/extra-patch-fbsd-template b/devel/subversion-lts/files/extra-patch-fbsd-template
new file mode 100644
index 000000000000..ee4bf924c32e
--- /dev/null
+++ b/devel/subversion-lts/files/extra-patch-fbsd-template
@@ -0,0 +1,164 @@
+--- subversion/svn/util.c.orig 2015-02-28 13:37:27.000000000 +0300
++++ subversion/svn/util.c 2016-03-19 16:53:13.016472654 +0300
+@@ -66,6 +66,9 @@
+ #include "private/svn_client_private.h"
+ #include "private/svn_cmdline_private.h"
+ #include "private/svn_string_private.h"
++#ifdef HAS_ORGANIZATION_NAME
++#include "freebsd-organization.h"
++#endif
+
+
+
+@@ -331,6 +334,71 @@
+ }
+
+
++/*
++ * Since we're adding freebsd-specific tokens to the log message,
++ * clean out any leftovers to avoid accidently sending them to other
++ * projects that won't be expecting them.
++ */
++
++static const char *prefixes[] = {
++ "PR:",
++ "Submitted by:",
++ "Reported by:",
++ "Reviewed by:",
++ "Approved by:",
++ "Obtained from:",
++ "MFC after:",
++ "MFH:",
++ "Relnotes:",
++ "Security:",
++ "Sponsored by:",
++ "Differential Revision:",
++};
++
++void
++cleanmsg(apr_size_t *l, char *s)
++{
++ int i;
++ char *pos;
++ char *kw;
++ char *p;
++ int empty;
++
++ for (i = 0; i < sizeof(prefixes) / sizeof(prefixes[0]); i++) {
++ pos = s;
++ while ((kw = strstr(pos, prefixes[i])) != NULL) {
++ /* Check to see if keyword is at start of line (or buffer) */
++ if (!(kw == s || kw[-1] == '\r' || kw[-1] == '\n')) {
++ pos = kw + 1;
++ continue;
++ }
++ p = kw + strlen(prefixes[i]);
++ empty = 1;
++ while (1) {
++ if (*p == ' ' || *p == '\t') {
++ p++;
++ continue;
++ }
++ if (*p == '\0' || *p == '\r' || *p == '\n')
++ break;
++ empty = 0;
++ break;
++ }
++ if (empty && (*p == '\r' || *p == '\n')) {
++ memmove(kw, p + 1, strlen(p + 1) + 1);
++ if (l)
++ *l -= (p + 1 - kw);
++ } else if (empty) {
++ *kw = '\0';
++ if (l)
++ *l -= (p - kw);
++ } else {
++ pos = p;
++ }
++ }
++ }
++}
++
+ #define EDITOR_EOF_PREFIX _("--This line, and those below, will be ignored--")
+
+ svn_error_t *
+@@ -343,11 +411,56 @@
+ svn_stringbuf_t *default_msg = NULL;
+ struct log_msg_baton *lmb = baton;
+ svn_stringbuf_t *message = NULL;
++ svn_config_t *cfg;
++ const char *mfc_after, *sponsored_by;
++
++ cfg = lmb->config ? svn_hash_gets(lmb->config, SVN_CONFIG_CATEGORY_CONFIG) : NULL;
+
+ /* Set default message. */
+ default_msg = svn_stringbuf_create(APR_EOL_STR, pool);
++ svn_stringbuf_appendcstr(default_msg, APR_EOL_STR);
++ svn_stringbuf_appendcstr(default_msg, "PR:\t\t" APR_EOL_STR);
++ svn_stringbuf_appendcstr(default_msg, "Submitted by:\t" APR_EOL_STR);
++ svn_stringbuf_appendcstr(default_msg, "Reported by:\t" APR_EOL_STR);
++ svn_stringbuf_appendcstr(default_msg, "Reviewed by:\t" APR_EOL_STR);
++ svn_stringbuf_appendcstr(default_msg, "Approved by:\t" APR_EOL_STR);
++ svn_stringbuf_appendcstr(default_msg, "Obtained from:\t" APR_EOL_STR);
++ svn_stringbuf_appendcstr(default_msg, "MFC after:\t");
++ svn_config_get(cfg, &mfc_after, SVN_CONFIG_SECTION_MISCELLANY, "freebsd-mfc-after", NULL);
++ if (mfc_after != NULL)
++ svn_stringbuf_appendcstr(default_msg, mfc_after);
++ svn_stringbuf_appendcstr(default_msg, APR_EOL_STR);
++ svn_stringbuf_appendcstr(default_msg, "MFH:\t\t" APR_EOL_STR);
++ svn_stringbuf_appendcstr(default_msg, "Relnotes:\t" APR_EOL_STR);
++ svn_stringbuf_appendcstr(default_msg, "Security:\t" APR_EOL_STR);
++ svn_stringbuf_appendcstr(default_msg, "Sponsored by:\t");
++ svn_config_get(cfg, &sponsored_by, SVN_CONFIG_SECTION_MISCELLANY, "freebsd-sponsored-by",
++#ifdef HAS_ORGANIZATION_NAME
++ ORGANIZATION_NAME);
++#else
++ NULL);
++#endif
++ if (sponsored_by != NULL)
++ svn_stringbuf_appendcstr(default_msg, sponsored_by);
++ svn_stringbuf_appendcstr(default_msg, APR_EOL_STR);
++ svn_stringbuf_appendcstr(default_msg, "Differential Revision:\t" APR_EOL_STR);
+ svn_stringbuf_appendcstr(default_msg, EDITOR_EOF_PREFIX);
+- svn_stringbuf_appendcstr(default_msg, APR_EOL_STR APR_EOL_STR);
++ svn_stringbuf_appendcstr(default_msg, APR_EOL_STR);
++ svn_stringbuf_appendcstr(default_msg, "> Description of fields to fill in above: 76 columns --|" APR_EOL_STR);
++ svn_stringbuf_appendcstr(default_msg, "> PR: If and which Problem Report is related." APR_EOL_STR);
++ svn_stringbuf_appendcstr(default_msg, "> Submitted by: If someone else sent in the change." APR_EOL_STR);
++ svn_stringbuf_appendcstr(default_msg, "> Reported by: If someone else reported the issue." APR_EOL_STR);
++ svn_stringbuf_appendcstr(default_msg, "> Reviewed by: If someone else reviewed your modification." APR_EOL_STR);
++ svn_stringbuf_appendcstr(default_msg, "> Approved by: If you needed approval for this commit." APR_EOL_STR);
++ svn_stringbuf_appendcstr(default_msg, "> Obtained from: If the change is from a third party." APR_EOL_STR);
++ svn_stringbuf_appendcstr(default_msg, "> MFC after: N [day[s]|week[s]|month[s]]. Request a reminder email." APR_EOL_STR);
++ svn_stringbuf_appendcstr(default_msg, "> MFH: Ports tree branch name. Request approval for merge." APR_EOL_STR);
++ svn_stringbuf_appendcstr(default_msg, "> Relnotes: Set to 'yes' for mention in release notes." APR_EOL_STR);
++ svn_stringbuf_appendcstr(default_msg, "> Security: Vulnerability reference (one per line) or description." APR_EOL_STR);
++ svn_stringbuf_appendcstr(default_msg, "> Sponsored by: If the change was sponsored by an organization (each collaborator)." APR_EOL_STR);
++ svn_stringbuf_appendcstr(default_msg, "> Differential Revision: https://reviews.freebsd.org/D### (*full* phabric URL needed)." APR_EOL_STR);
++ svn_stringbuf_appendcstr(default_msg, "> Empty fields above will be automatically removed." APR_EOL_STR);
++ svn_stringbuf_appendcstr(default_msg, APR_EOL_STR);
+
+ *tmp_file = NULL;
+ if (lmb->message)
+@@ -362,6 +475,7 @@
+ /* Strip off the EOF marker text and the junk that follows it. */
+ truncate_buffer_at_prefix(&(log_msg_str->len), (char *)log_msg_str->data,
+ EDITOR_EOF_PREFIX);
++ cleanmsg(NULL, (char*)log_msg_str->data);
+
+ *log_msg = log_msg_str->data;
+ return SVN_NO_ERROR;
+@@ -472,6 +586,13 @@
+ if (message)
+ truncate_buffer_at_prefix(&message->len, message->data,
+ EDITOR_EOF_PREFIX);
++ /*
++ * Since we're adding freebsd-specific tokens to the log message,
++ * clean out any leftovers to avoid accidently sending them to other
++ * projects that won't be expecting them.
++ */
++ if (message)
++ cleanmsg(&message->len, message->data);
+
+ if (message)
+ {
diff --git a/devel/subversion-lts/files/extra-patch-svnserve-wrapper b/devel/subversion-lts/files/extra-patch-svnserve-wrapper
new file mode 100644
index 000000000000..b06f5714ba3e
--- /dev/null
+++ b/devel/subversion-lts/files/extra-patch-svnserve-wrapper
@@ -0,0 +1,11 @@
+--- build-outputs.mk.orig 2015-10-15 01:24:35.493881000 +0300
++++ build-outputs.mk 2015-10-15 01:24:47.968766000 +0300
+@@ -1115,7 +1115,7 @@
+
+ cd subversion/svnrdump ; $(INSTALL_BIN) svnrdump$(EXEEXT) $(DESTDIR)$(bindir)/svnrdump$(EXEEXT)
+
+- cd subversion/svnserve ; $(INSTALL_BIN) svnserve$(EXEEXT) $(DESTDIR)$(bindir)/svnserve$(EXEEXT)
++ cd subversion/svnserve ; $(INSTALL_BIN) svnserve$(EXEEXT) $(DESTDIR)$(bindir)/svnserve.bin$(EXEEXT)
+
+ cd subversion/svnsync ; $(INSTALL_BIN) svnsync$(EXEEXT) $(DESTDIR)$(bindir)/svnsync$(EXEEXT)
+
diff --git a/devel/subversion-lts/files/patch-Makefile.in b/devel/subversion-lts/files/patch-Makefile.in
new file mode 100644
index 000000000000..e3db9ed8bb1e
--- /dev/null
+++ b/devel/subversion-lts/files/patch-Makefile.in
@@ -0,0 +1,11 @@
+--- Makefile.in.orig 2015-09-18 15:56:29.000000000 +0300
++++ Makefile.in 2015-10-15 01:29:59.889146000 +0300
+@@ -86,7 +86,7 @@
+ swig_pydir_extra = @libdir@/svn-python/svn
+ swig_pldir = @libdir@/svn-perl
+ swig_rbdir = $(SWIG_RB_SITE_ARCH_DIR)/svn/ext
+-toolsdir = @bindir@/svn-tools
++toolsdir = @bindir@
+
+ # where to install pkg-config files
+ pkgconfig_dir = $(datadir)/pkgconfig
diff --git a/devel/subversion-lts/files/patch-build-outputs.mk b/devel/subversion-lts/files/patch-build-outputs.mk
new file mode 100644
index 000000000000..d0b980e9ce5f
--- /dev/null
+++ b/devel/subversion-lts/files/patch-build-outputs.mk
@@ -0,0 +1,17 @@
+--- build-outputs.mk.orig 2015-10-15 01:24:35.493881000 +0300
++++ build-outputs.mk 2015-10-15 01:25:35.653321000 +0300
+@@ -1316,11 +1316,11 @@
+
+ install-tools: tools/diff/diff$(EXEEXT) tools/diff/diff3$(EXEEXT) tools/diff/diff4$(EXEEXT) tools/dev/fsfs-access-map$(EXEEXT) tools/server-side/mod_dontdothat/mod_dontdothat.la tools/server-side/svn-populate-node-origins-index$(EXEEXT) tools/server-side/svnauthz$(EXEEXT) tools/server-side/svnauthz-validate$(EXEEXT) tools/dev/svnraisetreeconflict/svnraisetreeconflict$(EXEEXT) tools/dev/x509-parser$(EXEEXT)
+ $(MKDIR) $(DESTDIR)$(toolsdir)
+- cd tools/diff ; $(INSTALL_TOOLS) diff$(EXEEXT) $(DESTDIR)$(toolsdir)/diff$(EXEEXT)
++ cd tools/diff ; $(INSTALL_TOOLS) diff$(EXEEXT) $(DESTDIR)$(toolsdir)/svndiff$(EXEEXT)
+
+- cd tools/diff ; $(INSTALL_TOOLS) diff3$(EXEEXT) $(DESTDIR)$(toolsdir)/diff3$(EXEEXT)
++ cd tools/diff ; $(INSTALL_TOOLS) diff3$(EXEEXT) $(DESTDIR)$(toolsdir)/svndiff3$(EXEEXT)
+
+- cd tools/diff ; $(INSTALL_TOOLS) diff4$(EXEEXT) $(DESTDIR)$(toolsdir)/diff4$(EXEEXT)
++ cd tools/diff ; $(INSTALL_TOOLS) diff4$(EXEEXT) $(DESTDIR)$(toolsdir)/svndiff4$(EXEEXT)
+
+ cd tools/dev ; $(INSTALL_TOOLS) fsfs-access-map$(EXEEXT) $(DESTDIR)$(toolsdir)/fsfs-access-map$(EXEEXT)
+
diff --git a/devel/subversion-lts/files/pkg-message.in b/devel/subversion-lts/files/pkg-message.in
new file mode 100644
index 000000000000..fb11b255c24b
--- /dev/null
+++ b/devel/subversion-lts/files/pkg-message.in
@@ -0,0 +1,8 @@
+[
+{ type: install
+ message: <<EOM
+The subversion dav modules are no longer activated in httpd.conf!
+There is now a dedicated modules file in %%APACHEETCDIR%%/modules.d
+EOM
+}
+]
diff --git a/devel/subversion-lts/files/svnserve.in b/devel/subversion-lts/files/svnserve.in
new file mode 100644
index 000000000000..29b1df8c838c
--- /dev/null
+++ b/devel/subversion-lts/files/svnserve.in
@@ -0,0 +1,40 @@
+#!/bin/sh
+#
+# svnserve.sh for rc.d usage (c) 2005 Thomas E. Spanjaard.
+# $Id$
+
+# PROVIDE: svnserve
+# REQUIRE: DAEMON
+# BEFORE: LOGIN
+# KEYWORD: shutdown
+#
+# Add the following line to /etc/rc.conf to enable SVNServe:
+#
+# svnserve_enable="YES"
+# # optional
+# svnserve_flags="-d --listen-port=3690 --listen-host 0.0.0.0"
+# svnserve_data="/usr/local/repositories"
+# svnserve_user="svn"
+# svnserve_group="svn"
+#
+# Note:
+# svnserve bind per default at the ipv6 address!
+# If you want svnserve binding at ipv4 address, you have
+# to use option 'svnserve_flags' with --listen-host parameter
+
+. /etc/rc.subr
+
+# Set some defaults
+svnserve_enable=${svnserve_enable:-"NO"}
+svnserve_flags=${svnserve_flags:-"-d --listen-port=3690 --listen-host 0.0.0.0"}
+svnserve_data=${svnserve_data:-"/home/svn/repos"}
+svnserve_user=${svnserve_user:-"svn"}
+svnserve_group=${svnserve_group:-"svn"}
+
+name=svnserve
+rcvar=svnserve_enable
+load_rc_config $name
+command=%%PREFIX%%/bin/svnserve%%SVNSERVE_BIN_EXT%%
+command_args="-r ${svnserve_data}"
+
+run_rc_command "$1"
diff --git a/devel/subversion-lts/files/svnserve.wrapper b/devel/subversion-lts/files/svnserve.wrapper
new file mode 100644
index 000000000000..92fffc384652
--- /dev/null
+++ b/devel/subversion-lts/files/svnserve.wrapper
@@ -0,0 +1,9 @@
+#!/bin/sh
+#
+# $FreeBSD$
+
+SVNSERVE=$(dirname $(realpath $0))/svnserve.bin
+
+umask 002
+$SVNSERVE "$@"
+
diff --git a/devel/subversion-lts/pkg-descr b/devel/subversion-lts/pkg-descr
new file mode 100644
index 000000000000..44798a3fa2b2
--- /dev/null
+++ b/devel/subversion-lts/pkg-descr
@@ -0,0 +1,6 @@
+Subversion is a version control system designed to be as similar to cvs(1)
+as possible, while fixing many outstanding problems with cvs(1).
+
+This port contains LTS release.
+
+WWW: http://subversion.apache.org/
diff --git a/devel/subversion-lts/pkg-plist b/devel/subversion-lts/pkg-plist
new file mode 100644
index 000000000000..673a16679f70
--- /dev/null
+++ b/devel/subversion-lts/pkg-plist
@@ -0,0 +1,472 @@
+%%TOOLS%%bin/fsfs-access-map
+%%TOOLS%%bin/fsfs-stats
+bin/svn
+%%TOOLS%%bin/svn-mergeinfo-normalizer
+%%TOOLS%%bin/svn-populate-node-origins-index
+bin/svnadmin
+%%TOOLS%%bin/svnauthz
+%%TOOLS%%bin/svnauthz-validate
+%%TOOLS%%bin/svnbench
+%%TOOLS%%bin/svnconflict
+%%TOOLS%%bin/svndiff
+%%TOOLS%%bin/svndiff3
+%%TOOLS%%bin/svndiff4
+bin/svndumpfilter
+bin/svnfsfs
+bin/svnlook
+%%TOOLS%%bin/svnmover
+bin/svnmucc
+%%TOOLS%%bin/svnraisetreeconflict
+bin/svnrdump
+%%NO_SVNSERVE_WRAPPER%%bin/svnserve
+%%SVNSERVE_WRAPPER%%bin/svnserve.bin
+%%SVNSERVE_WRAPPER%%@sample bin/svnserve.sample
+bin/svnsync
+bin/svnversion
+%%TOOLS%%bin/x509-parser
+include/subversion-1/mod_authz_svn.h
+include/subversion-1/mod_dav_svn.h
+include/subversion-1/svn-revision.txt
+include/subversion-1/svn_auth.h
+include/subversion-1/svn_base64.h
+include/subversion-1/svn_cache_config.h
+include/subversion-1/svn_checksum.h
+include/subversion-1/svn_client.h
+include/subversion-1/svn_cmdline.h
+include/subversion-1/svn_compat.h
+include/subversion-1/svn_config.h
+include/subversion-1/svn_ctype.h
+include/subversion-1/svn_dav.h
+include/subversion-1/svn_delta.h
+include/subversion-1/svn_diff.h
+include/subversion-1/svn_dirent_uri.h
+include/subversion-1/svn_dso.h
+include/subversion-1/svn_error.h
+include/subversion-1/svn_error_codes.h
+include/subversion-1/svn_fs.h
+include/subversion-1/svn_hash.h
+include/subversion-1/svn_io.h
+include/subversion-1/svn_iter.h
+include/subversion-1/svn_md5.h
+include/subversion-1/svn_mergeinfo.h
+include/subversion-1/svn_nls.h
+include/subversion-1/svn_opt.h
+include/subversion-1/svn_path.h
+include/subversion-1/svn_pools.h
+include/subversion-1/svn_props.h
+include/subversion-1/svn_quoprint.h
+include/subversion-1/svn_ra.h
+include/subversion-1/svn_ra_svn.h
+include/subversion-1/svn_repos.h
+include/subversion-1/svn_sorts.h
+include/subversion-1/svn_string.h
+include/subversion-1/svn_subst.h
+include/subversion-1/svn_time.h
+include/subversion-1/svn_types.h
+include/subversion-1/svn_user.h
+include/subversion-1/svn_utf.h
+include/subversion-1/svn_version.h
+include/subversion-1/svn_wc.h
+include/subversion-1/svn_x509.h
+include/subversion-1/svn_xml.h
+lib/libsvn_client-1.a
+%%NO_STATIC%%lib/libsvn_client-1.so
+%%NO_STATIC%%lib/libsvn_client-1.so.0
+%%NO_STATIC%%lib/libsvn_client-1.so.0.0.0
+lib/libsvn_delta-1.a
+%%NO_STATIC%%lib/libsvn_delta-1.so
+%%NO_STATIC%%lib/libsvn_delta-1.so.0
+%%NO_STATIC%%lib/libsvn_delta-1.so.0.0.0
+lib/libsvn_diff-1.a
+%%NO_STATIC%%lib/libsvn_diff-1.so
+%%NO_STATIC%%lib/libsvn_diff-1.so.0
+%%NO_STATIC%%lib/libsvn_diff-1.so.0.0.0
+lib/libsvn_fs-1.a
+%%NO_STATIC%%lib/libsvn_fs-1.so
+%%NO_STATIC%%lib/libsvn_fs-1.so.0
+%%NO_STATIC%%lib/libsvn_fs-1.so.0.0.0
+%%BDB%%lib/libsvn_fs_base-1.a
+%%NO_STATIC%%%%BDB%%lib/libsvn_fs_base-1.so
+%%NO_STATIC%%%%BDB%%lib/libsvn_fs_base-1.so.0
+%%NO_STATIC%%%%BDB%%lib/libsvn_fs_base-1.so.0.0.0
+lib/libsvn_fs_fs-1.a
+%%NO_STATIC%%lib/libsvn_fs_fs-1.so
+%%NO_STATIC%%lib/libsvn_fs_fs-1.so.0
+%%NO_STATIC%%lib/libsvn_fs_fs-1.so.0.0.0
+lib/libsvn_fs_util-1.a
+%%NO_STATIC%%lib/libsvn_fs_util-1.so
+%%NO_STATIC%%lib/libsvn_fs_util-1.so.0
+%%NO_STATIC%%lib/libsvn_fs_util-1.so.0.0.0
+lib/libsvn_fs_x-1.a
+%%NO_STATIC%%lib/libsvn_fs_x-1.so
+%%NO_STATIC%%lib/libsvn_fs_x-1.so.0
+%%NO_STATIC%%lib/libsvn_fs_x-1.so.0.0.0
+lib/libsvn_ra-1.a
+%%NO_STATIC%%lib/libsvn_ra-1.so
+%%NO_STATIC%%lib/libsvn_ra-1.so.0
+%%NO_STATIC%%lib/libsvn_ra-1.so.0.0.0
+lib/libsvn_ra_local-1.a
+%%NO_STATIC%%lib/libsvn_ra_local-1.so
+%%NO_STATIC%%lib/libsvn_ra_local-1.so.0
+%%NO_STATIC%%lib/libsvn_ra_local-1.so.0.0.0
+%%SERF%%lib/libsvn_ra_serf-1.a
+%%NO_STATIC%%%%SERF%%lib/libsvn_ra_serf-1.so
+%%NO_STATIC%%%%SERF%%lib/libsvn_ra_serf-1.so.0
+%%NO_STATIC%%%%SERF%%lib/libsvn_ra_serf-1.so.0.0.0
+lib/libsvn_ra_svn-1.a
+%%NO_STATIC%%lib/libsvn_ra_svn-1.so
+%%NO_STATIC%%lib/libsvn_ra_svn-1.so.0
+%%NO_STATIC%%lib/libsvn_ra_svn-1.so.0.0.0
+lib/libsvn_repos-1.a
+%%NO_STATIC%%lib/libsvn_repos-1.so
+%%NO_STATIC%%lib/libsvn_repos-1.so.0
+%%NO_STATIC%%lib/libsvn_repos-1.so.0.0.0
+lib/libsvn_subr-1.a
+%%NO_STATIC%%lib/libsvn_subr-1.so
+%%NO_STATIC%%lib/libsvn_subr-1.so.0
+%%NO_STATIC%%lib/libsvn_subr-1.so.0.0.0
+lib/libsvn_wc-1.a
+%%NO_STATIC%%lib/libsvn_wc-1.so
+%%NO_STATIC%%lib/libsvn_wc-1.so.0
+%%NO_STATIC%%lib/libsvn_wc-1.so.0.0.0
+libdata/pkgconfig/libsvn_client.pc
+libdata/pkgconfig/libsvn_delta.pc
+libdata/pkgconfig/libsvn_diff.pc
+libdata/pkgconfig/libsvn_fs.pc
+%%BDB%%libdata/pkgconfig/libsvn_fs_base.pc
+libdata/pkgconfig/libsvn_fs_fs.pc
+libdata/pkgconfig/libsvn_fs_util.pc
+libdata/pkgconfig/libsvn_fs_x.pc
+libdata/pkgconfig/libsvn_ra.pc
+libdata/pkgconfig/libsvn_ra_local.pc
+%%SERF%%libdata/pkgconfig/libsvn_ra_serf.pc
+libdata/pkgconfig/libsvn_ra_svn.pc
+libdata/pkgconfig/libsvn_repos.pc
+libdata/pkgconfig/libsvn_subr.pc
+libdata/pkgconfig/libsvn_wc.pc
+man/man1/svn.1.gz
+man/man1/svnadmin.1.gz
+man/man1/svndumpfilter.1.gz
+man/man1/svnlook.1.gz
+man/man1/svnmucc.1.gz
+man/man1/svnrdump.1.gz
+man/man1/svnsync.1.gz
+man/man1/svnversion.1.gz
+man/man5/svnserve.conf.5.gz
+man/man8/svnserve.8.gz
+%%NLS%%share/locale/de/LC_MESSAGES/subversion.mo
+%%NLS%%share/locale/es/LC_MESSAGES/subversion.mo
+%%NLS%%share/locale/fr/LC_MESSAGES/subversion.mo
+%%NLS%%share/locale/it/LC_MESSAGES/subversion.mo
+%%NLS%%share/locale/ja/LC_MESSAGES/subversion.mo
+%%NLS%%share/locale/ko/LC_MESSAGES/subversion.mo
+%%NLS%%share/locale/nb/LC_MESSAGES/subversion.mo
+%%NLS%%share/locale/pl/LC_MESSAGES/subversion.mo
+%%NLS%%share/locale/pt_BR/LC_MESSAGES/subversion.mo
+%%NLS%%share/locale/sv/LC_MESSAGES/subversion.mo
+%%NLS%%share/locale/zh_CN/LC_MESSAGES/subversion.mo
+%%NLS%%share/locale/zh_TW/LC_MESSAGES/subversion.mo
+%%DATADIR%%/backup/hot-backup.py
+%%DATADIR%%/bdb/erase-all-text-data.py
+%%DATADIR%%/bdb/skel.py
+%%DATADIR%%/bdb/svn-bdb-view.py
+%%DATADIR%%/bdb/svnfs.py
+%%DATADIR%%/bdb/whatis-rep.py
+%%DATADIR%%/buildbot/master/README
+%%DATADIR%%/buildbot/slaves/README
+%%DATADIR%%/buildbot/slaves/bb-openbsd/svnbuild.sh
+%%DATADIR%%/buildbot/slaves/bb-openbsd/svncheck-bindings.sh
+%%DATADIR%%/buildbot/slaves/bb-openbsd/svncheck.sh
+%%DATADIR%%/buildbot/slaves/bb-openbsd/svnclean.sh
+%%DATADIR%%/buildbot/slaves/i686-debian-sarge1/mount-ramdrive.c
+%%DATADIR%%/buildbot/slaves/i686-debian-sarge1/svnbuild.sh
+%%DATADIR%%/buildbot/slaves/i686-debian-sarge1/svncheck.sh
+%%DATADIR%%/buildbot/slaves/i686-debian-sarge1/svnclean.sh
+%%DATADIR%%/buildbot/slaves/i686-debian-sarge1/svnlog.sh
+%%DATADIR%%/buildbot/slaves/i686-debian-sarge1/unmount-ramdrive.c
+%%DATADIR%%/buildbot/slaves/svn-sparc-solaris/mount-tmpfs.c
+%%DATADIR%%/buildbot/slaves/svn-sparc-solaris/rebuild-svn-bits.sh
+%%DATADIR%%/buildbot/slaves/svn-sparc-solaris/serf.patch
+%%DATADIR%%/buildbot/slaves/svn-sparc-solaris/svnbuild.sh
+%%DATADIR%%/buildbot/slaves/svn-sparc-solaris/svncheck.sh
+%%DATADIR%%/buildbot/slaves/svn-sparc-solaris/svncleanup.sh
+%%DATADIR%%/buildbot/slaves/svn-sparc-solaris/svnenv.sh
+%%DATADIR%%/buildbot/slaves/svn-sparc-solaris/twisted.patch
+%%DATADIR%%/buildbot/slaves/svn-x64-centos/list-svn-deps.sh
+%%DATADIR%%/buildbot/slaves/svn-x64-centos/svnbuild.sh
+%%DATADIR%%/buildbot/slaves/svn-x64-centos/svncheck-bindings.sh
+%%DATADIR%%/buildbot/slaves/svn-x64-centos/svncheck.sh
+%%DATADIR%%/buildbot/slaves/svn-x64-centos/svnclean.sh
+%%DATADIR%%/buildbot/slaves/svn-x64-centos/svnlog.sh
+%%SERF%%%%DATADIR%%/buildbot/slaves/svn-x64-macosx-gnu-shared-daily-ra_serf/svnbuild.sh
+%%SERF%%%%DATADIR%%/buildbot/slaves/svn-x64-macosx-gnu-shared-daily-ra_serf/svncheck.sh
+%%SERF%%%%DATADIR%%/buildbot/slaves/svn-x64-macosx-gnu-shared-daily-ra_serf/svnclean.sh
+%%SERF%%%%DATADIR%%/buildbot/slaves/svn-x64-macosx-gnu-shared-daily-ra_serf/svnlog.sh
+%%DATADIR%%/buildbot/slaves/svn-x64-macosx-gnu-shared/svnbuild.sh
+%%DATADIR%%/buildbot/slaves/svn-x64-macosx-gnu-shared/svncheck.sh
+%%DATADIR%%/buildbot/slaves/svn-x64-macosx-gnu-shared/svnclean.sh
+%%DATADIR%%/buildbot/slaves/svn-x64-macosx-gnu-shared/svnlog.sh
+%%DATADIR%%/buildbot/slaves/svn-x64-macosx/mkramdisk.sh
+%%DATADIR%%/buildbot/slaves/svn-x64-macosx/rmramdisk.sh
+%%DATADIR%%/buildbot/slaves/svn-x64-macosx/setenv.sh
+%%DATADIR%%/buildbot/slaves/svn-x64-macosx/svnbuild-bindings.sh
+%%DATADIR%%/buildbot/slaves/svn-x64-macosx/svnbuild.sh
+%%DATADIR%%/buildbot/slaves/svn-x64-macosx/svncheck-bindings.sh
+%%DATADIR%%/buildbot/slaves/svn-x64-macosx/svncheck.sh
+%%DATADIR%%/buildbot/slaves/svn-x64-macosx/svnclean.sh
+%%DATADIR%%/buildbot/slaves/ubuntu-x64/svnbuild.sh
+%%DATADIR%%/buildbot/slaves/ubuntu-x64/svncheck-bindings.sh
+%%DATADIR%%/buildbot/slaves/ubuntu-x64/svncheck.sh
+%%DATADIR%%/buildbot/slaves/ubuntu-x64/svnclean.sh
+%%DATADIR%%/buildbot/slaves/ubuntu-x64/svnlog.sh
+%%DATADIR%%/buildbot/slaves/win32-SharpSvn/svn-config.cmd.template
+%%DATADIR%%/buildbot/slaves/win32-SharpSvn/svntest-bindings.cmd
+%%DATADIR%%/buildbot/slaves/win32-SharpSvn/svntest-build-bindings.cmd
+%%DATADIR%%/buildbot/slaves/win32-SharpSvn/svntest-build.cmd
+%%DATADIR%%/buildbot/slaves/win32-SharpSvn/svntest-cleanup.cmd
+%%DATADIR%%/buildbot/slaves/win32-SharpSvn/svntest-javahl.cmd
+%%DATADIR%%/buildbot/slaves/win32-SharpSvn/svntest-template.cmd
+%%DATADIR%%/buildbot/slaves/win32-SharpSvn/svntest-test.cmd
+%%DATADIR%%/buildbot/slaves/win32-xp-VS2005/config.bat
+%%DATADIR%%/buildbot/slaves/win32-xp-VS2005/do_all.bat
+%%DATADIR%%/buildbot/slaves/win32-xp-VS2005/svnbuild.bat
+%%DATADIR%%/buildbot/slaves/win32-xp-VS2005/svncheck.bat
+%%DATADIR%%/buildbot/slaves/win32-xp-VS2005/svnclean.bat
+%%DATADIR%%/buildbot/slaves/win32-xp-VS2005/svnlog.bat
+%%DATADIR%%/buildbot/slaves/xp-vc60-ia32/config.bat.tmpl
+%%DATADIR%%/buildbot/slaves/xp-vc60-ia32/svnbuild.bat
+%%DATADIR%%/buildbot/slaves/xp-vc60-ia32/svncheck.bat
+%%DATADIR%%/buildbot/slaves/xp-vc60-ia32/svnclean.bat
+%%DATADIR%%/buildbot/slaves/xp-vc60-ia32/svnlog.bat
+%%DATADIR%%/client-side/bash_completion
+%%DATADIR%%/client-side/bash_completion_test
+%%DATADIR%%/client-side/change-svn-wc-format.py
+%%DATADIR%%/client-side/mergeinfo-sanitizer.py
+%%DATADIR%%/client-side/server-version.py
+%%DATADIR%%/client-side/svn-graph.pl
+%%DATADIR%%/client-side/svn-mergeinfo-normalizer/analyze-cmd.c
+%%DATADIR%%/client-side/svn-mergeinfo-normalizer/help-cmd.c
+%%DATADIR%%/client-side/svn-mergeinfo-normalizer/log.c
+%%DATADIR%%/client-side/svn-mergeinfo-normalizer/logic.c
+%%DATADIR%%/client-side/svn-mergeinfo-normalizer/mergeinfo-normalizer.h
+%%DATADIR%%/client-side/svn-mergeinfo-normalizer/missing-branches.c
+%%DATADIR%%/client-side/svn-mergeinfo-normalizer/normalize-cmd.c
+%%DATADIR%%/client-side/svn-mergeinfo-normalizer/remove-branches-cmd.c
+%%DATADIR%%/client-side/svn-mergeinfo-normalizer/svn-mergeinfo-normalizer.c
+%%DATADIR%%/client-side/svn-mergeinfo-normalizer/wc_mergeinfo.c
+%%DATADIR%%/client-side/svn-ssl-fingerprints.sh
+%%DATADIR%%/client-side/svn-vendor.py
+%%DATADIR%%/client-side/svn-viewspec.py
+%%DATADIR%%/client-side/svnconflict/README
+%%DATADIR%%/client-side/svnconflict/svnconflict.c
+%%DATADIR%%/client-side/wcfind
+%%DATADIR%%/dev/analyze-svnlogs.py
+%%DATADIR%%/dev/aprerr.txt
+%%DATADIR%%/dev/benchmarks/RepoPerf/ClearMemory.cpp
+%%DATADIR%%/dev/benchmarks/RepoPerf/TimeWin.cpp
+%%DATADIR%%/dev/benchmarks/RepoPerf/copy_repo.py
+%%DATADIR%%/dev/benchmarks/RepoPerf/win_repo_bench.py
+%%DATADIR%%/dev/benchmarks/large_dirs/create_bigdir.sh
+%%DATADIR%%/dev/benchmarks/suite1/benchmark.py
+%%DATADIR%%/dev/benchmarks/suite1/cronjob
+%%DATADIR%%/dev/benchmarks/suite1/crontab.entry
+%%DATADIR%%/dev/benchmarks/suite1/generate_charts
+%%DATADIR%%/dev/benchmarks/suite1/run
+%%DATADIR%%/dev/benchmarks/suite1/run.bat
+%%DATADIR%%/dev/build-svn-deps-win.pl
+%%DATADIR%%/dev/check-license.py
+%%DATADIR%%/dev/contribulyze.py
+%%DATADIR%%/dev/datecheck.py
+%%DATADIR%%/dev/find-bad-style.py
+%%DATADIR%%/dev/find-control-statements.py
+%%DATADIR%%/dev/find-unmoved-deprecated.sh
+%%DATADIR%%/dev/fsfs-access-map.c
+%%DATADIR%%/dev/gdb-py/README
+%%DATADIR%%/dev/gdb-py/svndbg/__init__.py
+%%DATADIR%%/dev/gdb-py/svndbg/printers.py
+%%DATADIR%%/dev/gen-javahl-errors.py
+%%DATADIR%%/dev/gen-py-errors.py
+%%DATADIR%%/dev/gen_junit_report.py
+%%DATADIR%%/dev/gnuify-changelog.pl
+%%DATADIR%%/dev/graph-dav-servers.py
+%%DATADIR%%/dev/histogram.py
+%%DATADIR%%/dev/iz/defect.dem
+%%DATADIR%%/dev/iz/ff2csv.command
+%%DATADIR%%/dev/iz/ff2csv.py
+%%DATADIR%%/dev/iz/find-fix.py
+%%DATADIR%%/dev/iz/run-queries.sh
+%%DATADIR%%/dev/lock-check.py
+%%DATADIR%%/dev/log_revnum_change_asf.py
+%%DATADIR%%/dev/merge-graph.py
+%%DATADIR%%/dev/mergegraph/__init__.py
+%%DATADIR%%/dev/mergegraph/mergegraph.py
+%%DATADIR%%/dev/mergegraph/save_as_sh.py
+%%DATADIR%%/dev/min-includes.sh
+%%DATADIR%%/dev/mklog.py
+%%DATADIR%%/dev/mlpatch.py
+%%DATADIR%%/dev/normalize-dump.py
+%%DATADIR%%/dev/po-merge.py
+%%DATADIR%%/dev/prebuild-cleanup.sh
+%%DATADIR%%/dev/random-commits.py
+%%DATADIR%%/dev/remove-trailing-whitespace.sh
+%%DATADIR%%/dev/sbox-ospath.py
+%%DATADIR%%/dev/scramble-tree.py
+%%DATADIR%%/dev/stress.pl
+%%DATADIR%%/dev/svn-dev.el
+%%DATADIR%%/dev/svn-dev.vim
+%%DATADIR%%/dev/svn-entries.el
+%%DATADIR%%/dev/svn-merge-revs.py
+%%DATADIR%%/dev/svnmover/linenoise/LICENSE
+%%DATADIR%%/dev/svnmover/linenoise/README.markdown
+%%DATADIR%%/dev/svnmover/linenoise/linenoise.c
+%%DATADIR%%/dev/svnmover/linenoise/linenoise.h
+%%DATADIR%%/dev/svnmover/merge3.c
+%%DATADIR%%/dev/svnmover/ra.c
+%%DATADIR%%/dev/svnmover/scanlog.c
+%%DATADIR%%/dev/svnmover/svnmover.c
+%%DATADIR%%/dev/svnmover/svnmover.h
+%%DATADIR%%/dev/svnmover/util.c
+%%DATADIR%%/dev/svnqlite3-dump
+%%DATADIR%%/dev/svnraisetreeconflict/svnraisetreeconflict.c
+%%DATADIR%%/dev/trails.py
+%%DATADIR%%/dev/unix-build/Makefile.svn
+%%DATADIR%%/dev/unix-build/README
+%%DATADIR%%/dev/verify-history.py
+%%DATADIR%%/dev/warn-ignored-err.sh
+%%DATADIR%%/dev/wc-format.py
+%%DATADIR%%/dev/wc-ng/bump-to-19.py
+%%DATADIR%%/dev/wc-ng/count-progress.py
+%%DATADIR%%/dev/wc-ng/gather-data.sh
+%%DATADIR%%/dev/wc-ng/graph-data.py
+%%DATADIR%%/dev/wc-ng/populate-pristine.py
+%%DATADIR%%/dev/wc-ng/svn-wc-db-tester.c
+%%DATADIR%%/dev/which-error.py
+%%DATADIR%%/dev/windows-build/Makefile
+%%DATADIR%%/dev/windows-build/README
+%%DATADIR%%/dev/windows-build/document-version.pl
+%%DATADIR%%/dev/x509-parser.c
+%%DATADIR%%/diff/diff.c
+%%DATADIR%%/diff/diff3.c
+%%DATADIR%%/diff/diff4.c
+%%DATADIR%%/dist/README.advisory
+%%DATADIR%%/dist/README.backport
+%%DATADIR%%/dist/advisory.py
+%%DATADIR%%/dist/backport.pl
+%%DATADIR%%/dist/backport/__init__.py
+%%DATADIR%%/dist/backport/merger.py
+%%DATADIR%%/dist/backport/status.py
+%%DATADIR%%/dist/backport_tests.py
+%%DATADIR%%/dist/backport_tests_data/backport_accept.dump
+%%DATADIR%%/dist/backport_tests_data/backport_branch_with_original_revision.dump
+%%DATADIR%%/dist/backport_tests_data/backport_branches.dump
+%%DATADIR%%/dist/backport_tests_data/backport_indented_entry.dump
+%%DATADIR%%/dist/backport_tests_data/backport_multirevisions.dump
+%%DATADIR%%/dist/backport_tests_data/backport_two_approveds.dump
+%%DATADIR%%/dist/backport_tests_data/backport_unicode_entry.dump
+%%DATADIR%%/dist/backport_tests_pl.py
+%%DATADIR%%/dist/backport_tests_py.py
+%%DATADIR%%/dist/checksums.py
+%%DATADIR%%/dist/detect-conflicting-backports.py
+%%DATADIR%%/dist/dist.sh
+%%DATADIR%%/dist/extract-for-examination.sh
+%%DATADIR%%/dist/merge-approved-backports.py
+%%DATADIR%%/dist/nightly.sh
+%%DATADIR%%/dist/nominate.pl
+%%DATADIR%%/dist/rat-excludes
+%%DATADIR%%/dist/release.py
+%%DATADIR%%/dist/security/__init__.py
+%%DATADIR%%/dist/security/_gnupg.py
+%%DATADIR%%/dist/security/adviser.py
+%%DATADIR%%/dist/security/mailer.py
+%%DATADIR%%/dist/security/mailinglist.py
+%%DATADIR%%/dist/security/parser.py
+%%DATADIR%%/dist/templates/download.ezt
+%%DATADIR%%/dist/templates/rc-news.ezt
+%%DATADIR%%/dist/templates/rc-release-ann.ezt
+%%DATADIR%%/dist/templates/stable-news.ezt
+%%DATADIR%%/dist/templates/stable-release-ann.ezt
+%%DATADIR%%/dist/test.sh
+%%DATADIR%%/examples/ExampleAuthn.java
+%%DATADIR%%/examples/ExampleAuthnOld.java
+%%DATADIR%%/examples/ExampleAuthnVeryOld.java
+%%DATADIR%%/examples/SvnCLBrowse
+%%DATADIR%%/examples/blame.py
+%%DATADIR%%/examples/check-modified.py
+%%DATADIR%%/examples/dumpprops.py
+%%DATADIR%%/examples/get-location-segments.py
+%%DATADIR%%/examples/getfile.py
+%%DATADIR%%/examples/getlocks_test.c
+%%DATADIR%%/examples/geturl.py
+%%DATADIR%%/examples/headrev.c
+%%DATADIR%%/examples/info.rb
+%%DATADIR%%/examples/minimal_client.c
+%%DATADIR%%/examples/putfile.py
+%%DATADIR%%/examples/revplist.py
+%%DATADIR%%/examples/svnlog2html.rb
+%%DATADIR%%/examples/svnlook.py
+%%DATADIR%%/examples/svnlook.rb
+%%DATADIR%%/examples/svnput.c
+%%DATADIR%%/examples/svnserve-sgid.c
+%%DATADIR%%/examples/svnshell.py
+%%DATADIR%%/examples/svnshell.rb
+%%DATADIR%%/examples/testwrite.c
+%%DATADIR%%/examples/walk-config-auth.py
+%%DATADIR%%/hook-scripts/CVE-2017-9800-pre-commit.py
+%%DATADIR%%/hook-scripts/commit-access-control.cfg.example
+%%DATADIR%%/hook-scripts/commit-access-control.pl
+%%DATADIR%%/hook-scripts/commit-email.rb
+%%DATADIR%%/hook-scripts/control-chars.py
+%%DATADIR%%/hook-scripts/log-police.py
+%%DATADIR%%/hook-scripts/mailer/mailer.conf.example
+%%DATADIR%%/hook-scripts/mailer/mailer.py
+%%DATADIR%%/hook-scripts/mailer/tests/mailer-init.sh
+%%DATADIR%%/hook-scripts/mailer/tests/mailer-t1.output
+%%DATADIR%%/hook-scripts/mailer/tests/mailer-t1.sh
+%%DATADIR%%/hook-scripts/mailer/tests/mailer-tweak.py
+%%DATADIR%%/hook-scripts/mailer/tests/mailer.conf
+%%DATADIR%%/hook-scripts/persist-ephemeral-txnprops.py
+%%DATADIR%%/hook-scripts/reject-detected-sha1-collisions.sh
+%%DATADIR%%/hook-scripts/reject-known-sha1-collisions.sh
+%%DATADIR%%/hook-scripts/svn2feed.py
+%%DATADIR%%/hook-scripts/svnperms.conf.example
+%%DATADIR%%/hook-scripts/svnperms.py
+%%DATADIR%%/hook-scripts/validate-extensions.py
+%%DATADIR%%/hook-scripts/validate-files.conf.example
+%%DATADIR%%/hook-scripts/validate-files.py
+%%DATADIR%%/hook-scripts/verify-po.py
+%%DATADIR%%/po/l10n-report.py
+%%DATADIR%%/po/po-update.sh
+%%DATADIR%%/server-side/fsfs-reshard.py
+%%DATADIR%%/server-side/mod_dontdothat/README
+%%DATADIR%%/server-side/mod_dontdothat/mod_dontdothat.c
+%%DATADIR%%/server-side/svn-backup-dumps.py
+%%DATADIR%%/server-side/svn-populate-node-origins-index.c
+%%DATADIR%%/server-side/svn_server_log_parse.py
+%%DATADIR%%/server-side/svnauthz.c
+%%DATADIR%%/server-side/svnpredumpfilter.py
+%%DATADIR%%/server-side/svnpubsub/README.txt
+%%DATADIR%%/server-side/svnpubsub/commit-hook.py
+%%DATADIR%%/server-side/svnpubsub/daemonize.py
+%%DATADIR%%/server-side/svnpubsub/irkerbridge.py
+%%DATADIR%%/server-side/svnpubsub/rc.d/svnpubsub
+%%DATADIR%%/server-side/svnpubsub/rc.d/svnpubsub.debian
+%%DATADIR%%/server-side/svnpubsub/rc.d/svnpubsub.freebsd
+%%DATADIR%%/server-side/svnpubsub/rc.d/svnpubsub.solaris
+%%DATADIR%%/server-side/svnpubsub/rc.d/svnwcsub
+%%DATADIR%%/server-side/svnpubsub/rc.d/svnwcsub.debian
+%%DATADIR%%/server-side/svnpubsub/rc.d/svnwcsub.freebsd
+%%DATADIR%%/server-side/svnpubsub/rc.d/svnwcsub.solaris
+%%DATADIR%%/server-side/svnpubsub/revprop-change-hook.py
+%%DATADIR%%/server-side/svnpubsub/svnpubsub.tac
+%%DATADIR%%/server-side/svnpubsub/svnpubsub/__init__.py
+%%DATADIR%%/server-side/svnpubsub/svnpubsub/client.py
+%%DATADIR%%/server-side/svnpubsub/svnpubsub/server.py
+%%DATADIR%%/server-side/svnpubsub/svnpubsub/util.py
+%%DATADIR%%/server-side/svnpubsub/svntweet.py
+%%DATADIR%%/server-side/svnpubsub/svnwcsub.conf.example
+%%DATADIR%%/server-side/svnpubsub/svnwcsub.py
+%%DATADIR%%/server-side/svnpubsub/testserver.py
+%%DATADIR%%/server-side/svnpubsub/watcher.py
+%%DATADIR%%/server-side/test_svn_server_log_parse.py
+%%DATADIR%%/xslt/svnindex.css
+%%DATADIR%%/xslt/svnindex.xsl
diff --git a/devel/viewvc/Makefile b/devel/viewvc/Makefile
new file mode 100644
index 000000000000..8387a30a432f
--- /dev/null
+++ b/devel/viewvc/Makefile
@@ -0,0 +1,70 @@
+# Created by: will
+# $FreeBSD$
+
+PORTNAME= viewvc
+DISTVERSION= 1.2.1
+PORTREVISION= 1
+CATEGORIES= devel python
+
+MAINTAINER= ohauer@FreeBSD.org
+COMMENT= Web-based Version Control Repository Browsing
+
+CONFLICTS_INSTALL= py[23][6-8]-viewvc-1.3*
+
+LICENSE= BSD2CLAUSE
+
+USES= cpe python:2.7
+USE_GITHUB= yes
+USE_RC_SUBR= viewvc
+
+NO_BUILD= yes
+NO_OPTIONS_SORT= yes
+OPTIONS_DEFINE= WEBSRV APMOD SVN
+OPTIONS_DEFAULT= WEBSRV APACHE SVN
+
+OPTIONS_SINGLE= WEBSRV APMOD
+OPTIONS_SINGLE_WEBSRV= APACHE LIGHTTPD
+OPTIONS_SINGLE_APMOD= MODWSGI
+
+WEBSRV_DESC= Enable web server support
+APMOD_DESC= depend on Apache module
+
+MODWSGI_DESC= Add mod_wsgi to the list of package dependencies
+
+APACHE_USE= APACHE_RUN=24+
+LIGHTTPD_RUN_DEPENDS= lighttpd:www/lighttpd
+MODWSGI_RUN_DEPENDS= ${APACHE_PKGNAMEPREFIX}${PYTHON_PKGNAMEPREFIX}mod_wsgi>=4.4.13:www/mod_wsgi4@${PY_FLAVOR}
+
+SVN_RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}subversion-lts>=0:devel/py-subversion@${PY_FLAVOR}
+
+RUN_DEPENDS+= ${PY_PYGMENTS}
+
+.include <bsd.port.options.mk>
+
+SUB_FILES= pkg-message
+SUB_LIST= PYTHON_CMD=${PYTHON_CMD} \
+ ECHO=${ECHO} EGREP=${EGREP} TOUCH=${TOUCH} \
+ CHOWN=${CHOWN} RM=${RM:Q}
+
+pre-everything::
+.if ${PORT_OPTIONS:MAPMOD} && !${PORT_OPTIONS:MAPACHE}
+IGNORE= apache module needs Apache server, please re-run 'make config' then choose WEBSRV and APACHE
+.endif
+
+post-patch:
+.for i in cvsgraph.conf mimetypes.conf viewvc.conf
+ ${MV} ${WRKSRC}/conf/${i}.dist ${WRKSRC}/conf/${i}.sample
+ ${REINPLACE_CMD} -e '/"${i}"/d' ${WRKSRC}/viewvc-install
+.endfor
+ ${REINPLACE_CMD} -e 's/conf.dist/conf.sample/g' \
+ ${WRKSRC}/viewvc-install
+# to much files, use own shebangfix
+ ${FIND} ${WRKSRC} -type f | ${GREP} -v -e 'png' -e 'images' \
+ | ${XARGS} ${SED} -i '' \
+ -e '1s|^\#![[:space:]]*/usr/bin/env python|\#!${PYTHON_CMD}|' \
+ -e '1s|^\#![[:space:]]*/usr/bin/python|\#!${PYTHON_CMD}|'
+
+do-install:
+ @(cd ${WRKSRC} && ${PYTHON_CMD} viewvc-install --prefix=${PREFIX}/${PORTNAME} --destdir="${STAGEDIR}" --clean-mode=false)
+
+.include <bsd.port.mk>
diff --git a/devel/viewvc/distinfo b/devel/viewvc/distinfo
new file mode 100644
index 000000000000..f58c474a8fdd
--- /dev/null
+++ b/devel/viewvc/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1587311591
+SHA256 (viewvc-viewvc-1.2.1_GH0.tar.gz) = 5fe1e16f986b51a2800d908683673b880684e90ae1611d98744187f0649634f5
+SIZE (viewvc-viewvc-1.2.1_GH0.tar.gz) = 361031
diff --git a/devel/viewvc/files/pkg-message.in b/devel/viewvc/files/pkg-message.in
new file mode 100644
index 000000000000..e12163bc856d
--- /dev/null
+++ b/devel/viewvc/files/pkg-message.in
@@ -0,0 +1,74 @@
+[
+{ type: install
+ message: <<EOM
+ To use ViewVC, modify the configuration file located at
+ %%PREFIX%%/viewvc/viewvc.conf.
+
+ If no webserver was selected during installation, then
+ a rc script for running ViewVC standalone is installed.
+ To enable the standalone ViewVC server in rc.conf use
+ parameter viewvc_enable="YES".
+
+ You can also adjust the user which runs the ViewVC standalone
+ server with the parameter "viewvc_user".
+
+ If you want to run the ViewVC standalone server with another
+ IP/PORT, use the parameter "viewvc_flags".
+
+ To see all available parameters, use the command
+ %%PREFIX%%/viewvc/bin/standalone.py --help
+
+
+ To use ViewVC with Apache or lighttpd as a CGI script,
+ see the following config examples.
+
+ Example config lines for Apache 2.4
+ ===================================
+ <IfModule wsgi_module>
+ WSGIRestrictSignal Off
+ </IfModule>
+
+ <IfModule !wsgi_module>
+ ScriptAlias "/viewvc" "%%PREFIX%%/viewvc/bin/cgi/viewvc.cgi"
+ </IfModule>
+
+ <IfModule wsgi_module>
+ WSGIScriptAlias "/viewvc" "%%PREFIX%%/viewvc/bin/wsgi/viewvc.wsgi"
+ </IfModule>
+
+ <Location /viewvc>
+ Options NONE +ExecCGI
+ </Location>
+
+ Example config lines for lighttpd
+ =================================
+ server.modules = (
+ "mod_alias",
+ "mod_access"
+ )
+
+ alias.url += ( "/viewvc" => "%%PREFIX%%/viewvc/bin/cgi" )
+
+ $HTTP["url"] =~ "^/viewvc/" {
+ index-file.names = ( "viewvc.cgi" )
+ cgi.assign = (
+ ".cgi" => "%%PYTHON_CMD%%",
+ )
+ }
+EOM
+}
+{
+ type: upgrade
+ maximum_version: "1.2.1"
+ message: <<EOM
+ Please review your vievc.conf, see viewvc.sample.conf
+ ======================================================
+ - the template path has changed
+ - the vhost notation has changed
+
+ Additional upgrade informations:
+ https://github.com/viewvc/viewvc/blob/master/docs/upgrading-howto.html
+
+EOM
+}
+]
diff --git a/devel/viewvc/files/viewvc.in b/devel/viewvc/files/viewvc.in
new file mode 100644
index 000000000000..064ff67ab917
--- /dev/null
+++ b/devel/viewvc/files/viewvc.in
@@ -0,0 +1,70 @@
+#!/bin/sh
+
+# $FreeBSD$
+#
+# PROVIDE: viewvc
+# REQUIRE: LOGIN
+# KEYWORD: shutdown
+#
+# Add the following line(s) to /etc/rc.conf to enable ViewVC:
+#
+# viewvc_enable="YES"
+# # optional
+# viewvc_flags="-h localhost -p PORT"
+# viewvc_user="www"
+#
+# To get available parameters and the default values, use the
+# command %%PREFIX%%/viewvc/bin/standalone.py --help
+# for more info.
+#
+# Note:
+# If you choose a listen port less then 1024 then you have
+# to use a privileged user.
+# If the user www cannot access your cvs/svn repository,
+# adjust the parameter viewvc_user and it should work.
+#
+# INFO:
+# ViewVC default tcp port: 49152
+# see http://viewvc.tigris.org/issues/show_bug.cgi?id=234
+
+. /etc/rc.subr
+
+name=viewvc
+rcvar=viewvc_enable
+load_rc_config $name
+
+# Set defaults
+viewvc_enable=${viewvc_enable:-"NO"}
+viewvc_flags=${viewvc_flags:-"-p 49152"}
+viewvc_user=${viewvc_user:-"www"}
+
+pidfile=/var/run/viewvc.pid
+command=%%PYTHON_CMD%%
+standalone=%%PREFIX%%/viewvc/bin/standalone.py
+
+start_precmd=viewvc_precmd
+start_cmd=viewvc_start
+stop_postcmd=viewvc_cleanup
+
+viewvc_precmd()
+{
+ # with param -d we get another pid so prevent this
+ %%ECHO%% "${viewvc_flags}" | %%EGREP%% -q "(^\-d| \-d)" 2>&1 > /dev/null
+ if [ $? -eq 0 ]; then
+ %%ECHO%% "Please remove parameter -d from viewvc_flags"
+ %%ECHO%%
+ return 1
+ fi
+}
+
+viewvc_start() {
+ echo "Starting viewvc."
+ %%TOUCH%% ${pidfile} && %%CHOWN%% ${viewvc_user} ${pidfile}
+ /usr/sbin/daemon -cf -p ${pidfile} -u ${viewvc_user} ${standalone} ${viewvc_flags}
+}
+
+viewvc_cleanup() {
+ [ -f ${pidfile} ] && %%RM%% ${pidfile}
+}
+
+run_rc_command "$1"
diff --git a/devel/viewvc/pkg-descr b/devel/viewvc/pkg-descr
new file mode 100644
index 000000000000..69e1fb0eee77
--- /dev/null
+++ b/devel/viewvc/pkg-descr
@@ -0,0 +1,8 @@
+ViewVC is a browser interface for CVS and Subversion version control
+repositories. It generates templatized HTML to present navigable directory,
+revision, and change log listings. It can display specific versions of files as
+well as diffs between those versions. Basically, ViewVC provides the bulk of the
+report-like functionality you expect out of your version control tool, but much
+more prettily than the average textual command-line program output.
+
+WWW: http://www.viewvc.org/
diff --git a/devel/viewvc/pkg-plist b/devel/viewvc/pkg-plist
new file mode 100644
index 000000000000..8250de615db1
--- /dev/null
+++ b/devel/viewvc/pkg-plist
@@ -0,0 +1,178 @@
+viewvc/bin/cgi/viewvc.cgi
+viewvc/bin/cvsdbadmin
+viewvc/bin/loginfo-handler
+viewvc/bin/make-database
+viewvc/bin/mod_python/.htaccess
+viewvc/bin/mod_python/handler.py
+viewvc/bin/mod_python/viewvc.py
+viewvc/bin/standalone.py
+viewvc/bin/svndbadmin
+viewvc/bin/wsgi/viewvc.fcgi
+viewvc/bin/wsgi/viewvc.wsgi
+@sample viewvc/cvsgraph.conf.sample
+viewvc/lib/accept.py
+viewvc/lib/accept.pyc
+viewvc/lib/blame.py
+viewvc/lib/blame.pyc
+viewvc/lib/common.py
+viewvc/lib/common.pyc
+viewvc/lib/compat_difflib.py
+viewvc/lib/compat_difflib.pyc
+viewvc/lib/compat_ndiff.py
+viewvc/lib/compat_ndiff.pyc
+viewvc/lib/config.py
+viewvc/lib/config.pyc
+viewvc/lib/cvsdb.py
+viewvc/lib/cvsdb.pyc
+viewvc/lib/dbi.py
+viewvc/lib/dbi.pyc
+viewvc/lib/debug.py
+viewvc/lib/debug.pyc
+viewvc/lib/ezt.py
+viewvc/lib/ezt.pyc
+viewvc/lib/idiff.py
+viewvc/lib/idiff.pyc
+viewvc/lib/popen.py
+viewvc/lib/popen.pyc
+viewvc/lib/sapi.py
+viewvc/lib/sapi.pyc
+viewvc/lib/vcauth/__init__.py
+viewvc/lib/vcauth/__init__.pyc
+viewvc/lib/vcauth/forbidden/__init__.py
+viewvc/lib/vcauth/forbidden/__init__.pyc
+viewvc/lib/vcauth/forbiddenre/__init__.py
+viewvc/lib/vcauth/forbiddenre/__init__.pyc
+viewvc/lib/vcauth/svnauthz/__init__.py
+viewvc/lib/vcauth/svnauthz/__init__.pyc
+viewvc/lib/vclib/__init__.py
+viewvc/lib/vclib/__init__.pyc
+viewvc/lib/vclib/ccvs/__init__.py
+viewvc/lib/vclib/ccvs/__init__.pyc
+viewvc/lib/vclib/ccvs/bincvs.py
+viewvc/lib/vclib/ccvs/bincvs.pyc
+viewvc/lib/vclib/ccvs/blame.py
+viewvc/lib/vclib/ccvs/blame.pyc
+viewvc/lib/vclib/ccvs/ccvs.py
+viewvc/lib/vclib/ccvs/ccvs.pyc
+viewvc/lib/vclib/ccvs/rcsparse/__init__.py
+viewvc/lib/vclib/ccvs/rcsparse/__init__.pyc
+viewvc/lib/vclib/ccvs/rcsparse/common.py
+viewvc/lib/vclib/ccvs/rcsparse/common.pyc
+viewvc/lib/vclib/ccvs/rcsparse/debug.py
+viewvc/lib/vclib/ccvs/rcsparse/debug.pyc
+viewvc/lib/vclib/ccvs/rcsparse/default.py
+viewvc/lib/vclib/ccvs/rcsparse/default.pyc
+viewvc/lib/vclib/ccvs/rcsparse/parse_rcs_file.py
+viewvc/lib/vclib/ccvs/rcsparse/parse_rcs_file.pyc
+viewvc/lib/vclib/ccvs/rcsparse/run-tests.py
+viewvc/lib/vclib/ccvs/rcsparse/run-tests.pyc
+viewvc/lib/vclib/ccvs/rcsparse/test-data/default,v
+viewvc/lib/vclib/ccvs/rcsparse/test-data/default.out
+viewvc/lib/vclib/ccvs/rcsparse/test-data/empty-file,v
+viewvc/lib/vclib/ccvs/rcsparse/test-data/empty-file.out
+viewvc/lib/vclib/ccvs/rcsparse/texttools.py
+viewvc/lib/vclib/ccvs/rcsparse/texttools.pyc
+viewvc/lib/vclib/svn/__init__.py
+viewvc/lib/vclib/svn/__init__.pyc
+viewvc/lib/vclib/svn/svn_ra.py
+viewvc/lib/vclib/svn/svn_ra.pyc
+viewvc/lib/vclib/svn/svn_repos.py
+viewvc/lib/vclib/svn/svn_repos.pyc
+viewvc/lib/viewvc.py
+viewvc/lib/viewvc.pyc
+viewvc/lib/win32popen.py
+viewvc/lib/win32popen.pyc
+@sample viewvc/mimetypes.conf.sample
+viewvc/templates/classic/diff.ezt
+viewvc/templates/classic/dir_new.ezt
+viewvc/templates/classic/directory.ezt
+viewvc/templates/classic/docroot/help.css
+viewvc/templates/classic/docroot/help_dirview.html
+viewvc/templates/classic/docroot/help_log.html
+viewvc/templates/classic/docroot/help_rootview.html
+viewvc/templates/classic/docroot/images/annotate.png
+viewvc/templates/classic/docroot/images/back.png
+viewvc/templates/classic/docroot/images/back_small.png
+viewvc/templates/classic/docroot/images/binary.png
+viewvc/templates/classic/docroot/images/broken.png
+viewvc/templates/classic/docroot/images/chalk.jpg
+viewvc/templates/classic/docroot/images/cvsgraph_16x16.png
+viewvc/templates/classic/docroot/images/cvsgraph_32x32.png
+viewvc/templates/classic/docroot/images/diff.png
+viewvc/templates/classic/docroot/images/dir.png
+viewvc/templates/classic/docroot/images/down.png
+viewvc/templates/classic/docroot/images/download.png
+viewvc/templates/classic/docroot/images/favicon.ico
+viewvc/templates/classic/docroot/images/feed-icon-16x16.jpg
+viewvc/templates/classic/docroot/images/forward.png
+viewvc/templates/classic/docroot/images/image.png
+viewvc/templates/classic/docroot/images/list.png
+viewvc/templates/classic/docroot/images/lock.png
+viewvc/templates/classic/docroot/images/log.png
+viewvc/templates/classic/docroot/images/text.png
+viewvc/templates/classic/docroot/images/up.png
+viewvc/templates/classic/docroot/images/view.png
+viewvc/templates/classic/docroot/images/viewvc-logo.png
+viewvc/templates/classic/docroot/styles.css
+viewvc/templates/classic/error.ezt
+viewvc/templates/classic/file.ezt
+viewvc/templates/classic/graph.ezt
+viewvc/templates/classic/include/diff_display.ezt
+viewvc/templates/classic/include/diff_form.ezt
+viewvc/templates/classic/include/dir_footer.ezt
+viewvc/templates/classic/include/dir_header.ezt
+viewvc/templates/classic/include/file_header.ezt
+viewvc/templates/classic/include/footer.ezt
+viewvc/templates/classic/include/header.ezt
+viewvc/templates/classic/include/log_footer.ezt
+viewvc/templates/classic/include/log_header.ezt
+viewvc/templates/classic/include/paging.ezt
+viewvc/templates/classic/include/pathrev_form.ezt
+viewvc/templates/classic/include/props.ezt
+viewvc/templates/classic/include/sort.ezt
+viewvc/templates/classic/log.ezt
+viewvc/templates/classic/log_table.ezt
+viewvc/templates/classic/query_form.ezt
+viewvc/templates/classic/query_results.ezt
+viewvc/templates/classic/revision.ezt
+viewvc/templates/classic/roots.ezt
+viewvc/templates/classic/rss.ezt
+viewvc/templates/default/diff.ezt
+viewvc/templates/default/directory.ezt
+viewvc/templates/default/docroot/help.css
+viewvc/templates/default/docroot/help_dirview.html
+viewvc/templates/default/docroot/help_log.html
+viewvc/templates/default/docroot/help_rootview.html
+viewvc/templates/default/docroot/images/back.png
+viewvc/templates/default/docroot/images/back_small.png
+viewvc/templates/default/docroot/images/binary.png
+viewvc/templates/default/docroot/images/broken.png
+viewvc/templates/default/docroot/images/cvs-logo.png
+viewvc/templates/default/docroot/images/dir.png
+viewvc/templates/default/docroot/images/down.png
+viewvc/templates/default/docroot/images/feed-icon-16x16.jpg
+viewvc/templates/default/docroot/images/forward.png
+viewvc/templates/default/docroot/images/image.png
+viewvc/templates/default/docroot/images/lock-icon.gif
+viewvc/templates/default/docroot/images/svn-logo.png
+viewvc/templates/default/docroot/images/text.png
+viewvc/templates/default/docroot/images/up.png
+viewvc/templates/default/docroot/images/viewvc-logo.png
+viewvc/templates/default/docroot/scripts.js
+viewvc/templates/default/docroot/styles.css
+viewvc/templates/default/error.ezt
+viewvc/templates/default/file.ezt
+viewvc/templates/default/graph.ezt
+viewvc/templates/default/include/diff_display.ezt
+viewvc/templates/default/include/diff_form.ezt
+viewvc/templates/default/include/footer.ezt
+viewvc/templates/default/include/header.ezt
+viewvc/templates/default/include/pathrev_form.ezt
+viewvc/templates/default/include/props.ezt
+viewvc/templates/default/log.ezt
+viewvc/templates/default/query_form.ezt
+viewvc/templates/default/query_results.ezt
+viewvc/templates/default/revision.ezt
+viewvc/templates/default/roots.ezt
+viewvc/templates/default/rss.ezt
+@sample viewvc/viewvc.conf.sample